[Pkg-cli-apps-commits] [SCM] monodevelop-vala branch, master, updated. debian/1.9.2-1-11-g1b6a07e
Mirco Bauer
meebey at meebey.net
Sat Mar 28 02:42:21 UTC 2009
The following commit has been merged in the master branch:
commit c86f25345ac3e56a20ba3e921758b8f0845dc210
Author: Mirco Bauer <meebey at meebey.net>
Date: Sat Mar 28 03:38:33 2009 +0100
Imported Upstream version 1.9.3
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..bb8ffdd
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,2 @@
+Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+Jerome Haltom <wasabi at larvalstage.net>
diff --git a/AssemblyInfo.cs b/AssemblyInfo.cs
new file mode 100644
index 0000000..6d66f79
--- /dev/null
+++ b/AssemblyInfo.cs
@@ -0,0 +1,9 @@
+// Autogenerated from ValaBinding.addin.xml
+
+using System.Reflection;
+
+[assembly: AssemblyProduct ("MonoDevelop")]
+[assembly: AssemblyTitle ("Vala Language Binding")]
+[assembly: AssemblyDescription ("Vala Language binding")]
+[assembly: AssemblyVersion ("1.9.3")]
+[assembly: AssemblyCopyright ("MIT/X11")]
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..7b89c47
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,19 @@
+Copyright (c) 2008 Levi Bard
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..5264f25
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,299 @@
+2009-03-05 Lluis Sanchez Gual <lluis at novell.com>
+
+ * configure.in:
+ * AssemblyInfo.cs:
+ * ValaBinding.addin.xml: Bump MD version.
+
+2009-03-04 Lluis Sanchez Gual <lluis at novell.com>
+
+ * Project/ValaProject.cs: Changed the way execution handlers
+ work. We are not using platform ids anymore. Instead, we use
+ command strings when looking for execution handlers.
+ IExecutionHandlerFactory has been removed and now everything
+ is handled by IExecutionHandler, which has a new CanExecute
+ method. This model is more simple and more generic.
+
+2009-02-26 Michael Hutchinson <mhutchinson at novell.com>
+
+ * ValaLanguageBinding.cs: Ordinal compare.
+
+ * Project/ValaProjectBinding.cs: Only create projects for vala
+ files. Fixes nasty crash on xml files.
+
+2009-02-26 Michael Hutchinson <mhutchinson at novell.com>
+
+ * ValaBinding.csproj: Remove bad property value.
+
+2009-02-26 Lluis Sanchez Gual <lluis at novell.com>
+
+ * ValaBinding.sln: Flush.
+
+2009-02-26 Lluis Sanchez Gual <lluis at novell.com>
+
+ * ValaBinding.csproj: Flush.
+
+2009-02-25 Michael Hutchinson <mhutchinson at novell.com>
+
+ * ValaBinding.sln: Set policies. Remove unused name attribute.
+
+2009-02-20 Lluis Sanchez Gual <lluis at novell.com>
+
+ * ValaBinding.csproj: Updated references.
+
+2009/02/06 Lluis Sanchez Gual <lluis at novell.com>
+
+ * ValaBinding.mds:
+ * ValaBinding.sln:
+ * ValaBinding.mdp:
+ * ValaBinding.csproj: Migrated to MSBuild file format.
+
+2009/02/03 Lluis Sanchez Gual <lluis at novell.com>
+
+ * configure.in:
+ * AssemblyInfo.cs:
+ * ValaBinding.addin.xml: Bump MD version.
+
+2009/02/03 Lluis Sanchez Gual <lluis at novell.com>
+
+ * ValaBinding.mds:
+ * gtk-gui/generated.cs:
+ * gtk-gui/MonoDevelop.ValaBinding.AddPathDialog.cs:
+ * gtk-gui/MonoDevelop.ValaBinding.PackageDetails.cs:
+ * gtk-gui/MonoDevelop.ValaBinding.AddLibraryDialog.cs:
+ * gtk-gui/MonoDevelop.ValaBinding.EditPackagesDialog.cs:
+ * gtk-gui/MonoDevelop.ValaBinding.OutputOptionsPanel.cs:
+ * gtk-gui/MonoDevelop.ValaBinding.CodeGenerationPanel.cs:
+ * gtk-gui/MonoDevelop.ValaBinding.GeneralOptionsPanel.cs: Flush.
+
+2009-01-26 Michael Hutchinson <mhutchinson at novell.com>
+
+ * ValaBinding.mdp: Flush project format changes.
+
+2009-01-12 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * Gui/EditPackagesDialog.cs: Move package list population into idle handler.
+
+2009-01-12 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * Project/ProjectPackage.cs:
+ * Project/ProjectPackageCollection.cs: Use relative path
+ for project package references.
+
+2009-01-05 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * ValaBinding.sln:
+ * ValaBinding.csproj: Add MSBuild project files.
+
+2009-01-05 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * gtk-gui/gui.stetic: Tooltip cleanup.
+
+2009-01-05 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * Gui/CodeGenerationPanel.cs:
+ * Compiler/ValaCompiler.cs:
+ * Project/ValaCompilationParameters.cs: Add support for valac --thread flag.
+
+2008-12-09 Lluis Sanchez Gual <lluis at novell.com>
+
+ * ValaBinding.mdp: Don't require a specific version of Mono.Addins.
+
+2008-12-05 Lluis Sanchez Gual <lluis at novell.com>
+
+ * Gui/ValaTextEditorExtension.cs: Track api changes.
+
+2008-12-02 Michael Hutchinson <mhutchinson at novell.com>
+
+ * Makefile.am:
+ * AssemblyInfo.cs:
+ * ValaBinding.mdp: Add AssemblyInfo.cs files that are autogenerated from
+ the addin manifests.
+
+2008-11-21 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * Compiler/ValaCompiler.cs: Display errors originating from gcc.
+
+2008-11-18 Lluis Sanchez Gual <lluis at novell.com>
+
+ * Project/ValaProject.cs: Allow executing Vala projects.
+
+2008-11-18 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * Compiler/ValaCompiler.cs: valac no longer supports -D.
+
+2008-11-05 Lluis Sanchez Gual <lluis at novell.com>
+
+ * configure.in:
+ * ValaBinding.addin.xml: Bump MD version.
+
+2008-10-16 Michael Hutchinson <mhutchinson at novell.com>
+
+ * configure.in: Fix tarball name.
+
+2008-10-09 Michael Hutchinson <mhutchinson at novell.com>
+
+ * Gui/DataProvider.cs:
+ * Gui/ValaTextEditorExtension.cs: Track APIs.
+
+2008-10-09 Michael Hutchinson <mhutchinson at novell.com>
+
+ * Gui/DataProvider.cs: Track CompletionData API.
+
+2008-10-07 Michael Hutchinson <mhutchinson at novell.com>
+
+ * Gui/DataProvider.cs: Track API.
+
+2008-10-01 Michael Hutchinson <mhutchinson at novell.com>
+
+ * Project/ValaProject.cs: Track API.
+
+2008-09-29 Michael Hutchinson <mhutchinson at novell.com>
+
+ * Gui/DataProvider.cs: Track API.
+
+2008-09-23 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * Gui/DataProvider.cs: Track changes in completion API.
+
+2008-09-17 Lluis Sanchez Gual <lluis at novell.com>
+
+ * ValaBinding.mdp: Updated projects.
+
+2008-09-17 Lluis Sanchez Gual <lluis at novell.com>
+
+ * ValaLanguageBinding.cs: Fix build.
+
+2008-09-11 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * Project/ValaProject.cs: More compiler flags tweaking
+ for project packages.
+
+2008-09-04 Lluis Sanchez Gual <lluis at novell.com>
+
+ * ProjectPad/ProjectPackagesFolderNodeBuilder.cs,
+ ProjectPad/ProjectPackageNodeBuilder.cs,
+ ProjectPad/ProjectReferencesExtension.cs,
+ ProjectPad/ProjectNodeExtension.cs,
+ Navigation/StructureNodeBuilder.cs,
+ Navigation/TypedefNodeBuilder.cs, Navigation/MacroNodeBuilder.cs,
+ Navigation/ProjectNodeBuilderExtension.cs,
+ Navigation/ClassNodeBuilder.cs, Navigation/MemberNodeBuilder.cs,
+ Navigation/EnumeratorNodeBuilder.cs,
+ Navigation/LanguageItemCommandHandler.cs,
+ Navigation/GlobalsNodeBuilder.cs,
+ Navigation/VariableNodeBuilder.cs,
+ Navigation/FunctionNodeBuilder.cs,
+ Navigation/EnumerationNodeBuilder.cs,
+ Navigation/UnionNodeBuilder.cs, Navigation/NamespaceNodeBuilder.cs,
+ Navigation/MacroDefinitionsNodeBuilder.cs: Moved the extensible
+ tree view to its own directory.
+
+2008-09-03 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * Project/ValaProject.cs: Add output directory to library path
+ for project packages.
+
+2008-09-03 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * Compiler/ValaCompiler.cs: Only generate .deps file
+ for shared library targets.
+
+2008-08-28 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * Compiler/ValaCompiler.cs: Generate .deps file on library compilation.
+
+2008-08-21 Lluis Sanchez Gual <lluis at novell.com>
+
+ * ProjectPad/ProjectResourcesExtension.cs, ValaBinding.addin.xml,
+ ValaBinding.mdp, gtk-gui/objects.xml, Makefile.am: Resources folder
+ has been removed.
+
+2008-08-18 Lluis Sanchez Gual <lluis at novell.com>
+
+ * ValaBinding.mdp: Fix reference to Mono.TextEditor. The incorrect
+ add-in version number causes problems in the makefile
+ synchronization.
+
+2008-08-12 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * Compiler/ValaCompiler.cs: Fix error parsing for recent valac.
+
+2008-08-12 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * Compiler/ValaCompiler.cs, Project/ProjectPackage.cs,
+ Project/ValaProject.cs, Gui/EditPackagesDialog.cs:
+ Improve dependency and project package handling.
+ * templates/ValaTestFixture.xpt.xml, ValaBinding.addin.xml,
+ Makefile.am: Add text fixture project template.
+ * templates/ConsoleValaProject.xpt.xml: Cleanup.
+
+2008-08-11 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * Project/ValaProject.cs, Compiler/ValaCompiler.cs,
+ Project/ProjectPackageCollection.cs, templates/ConsoleValaProject.xpt.xml,
+ templates/EmptyValaProject.xpt.xml,
+ templates/SharedLibraryValaProject.xpt.xml: Add glib-2.0 package
+ to new projects by default. Track changes in valac.
+
+2008-07-21 Lluis Sanchez Gual <lluis at novell.com>
+
+ * Project/ProjectPackage.cs, Project/ValaCompilationParameters.cs,
+ Project/ValaProject.cs, Project/ValaProjectConfiguration.cs: Moved
+ serialization engine to MonoDevelop.Core. Use new syntax for
+ specifying attribute scope.
+
+2008-06-26 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * Project/ValaProject.cs: Actually turn on debug mode.
+
+2008-06-18 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * Project/ProjectPackage.cs: Search more thoroughly for corresponding
+ .pc files.
+
+2008-06-18 Jerome Haltom <wasabi at larvalstage.net>
+
+ * Gui/EditPackagesDialog.cs: Attempt to detect vapidir.
+
+2008-06-12 Lluis Sanchez Gual <lluis at novell.com>
+
+ * ValaBinding.mdp, Makefile.am: More makefile fixes.
+
+2008-06-12 Lluis Sanchez Gual <lluis at novell.com>
+
+ * configure.in, Makefile.am: Fix makefile so that it does not directly
+ depend on MD core and it can always be built standalone.
+ * ValaBinding.mdp: Enable makefile synchronization.
+
+2008-06-12 Lluis Sanchez Gual <lluis at novell.com>
+
+ * ValaBinding.mdp: Fix gtk-sharp dependency versions.
+
+2008-06-09 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * Project/ValaProject.cs, Navigation/ProjectNodeBuilderExtension.cs:
+ Add tags from packages to class pad and code completion.
+
+2008-06-09 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * Parser/*: Update parse data on file removal.
+
+2008-06-09 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * Project/ValaProject.cs: Fix define syntax in generated .pc files.
+
+2008-06-09 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * *: Add package support.
+
+2008-06-04 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * *: Add classpad support
+
+2008-06-04 Lluis Sanchez Gual <lluis at novell.com>
+
+ * Project/ValaProject.cs: Track api changes.
+
+2008-03-11 Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+
+ * *: Ported from CBinding
diff --git a/Compiler/ICompiler.cs b/Compiler/ICompiler.cs
new file mode 100644
index 0000000..bd36bf6
--- /dev/null
+++ b/Compiler/ICompiler.cs
@@ -0,0 +1,63 @@
+//
+// ICompiler.cs: interface that must be implemented by any class that wants
+// to provide a compiler for the ValaBinding addin.
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using Mono.Addins;
+
+using MonoDevelop.Core;
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.ValaBinding
+{
+ [TypeExtensionPoint ("/ValaBinding/Compilers")]
+ public interface ICompiler
+ {
+ string Name {
+ get;
+ }
+
+ string CompilerCommand {
+ get;
+ }
+
+ string GetCompilerFlags (ValaProjectConfiguration configuration);
+
+ string GetDefineFlags (ValaProjectConfiguration configuration);
+
+ BuildResult Compile (
+ ProjectFileCollection projectFiles,
+ ProjectPackageCollection packages,
+ ValaProjectConfiguration configuration,
+ IProgressMonitor monitor);
+
+ void Clean (ProjectFileCollection projectFiles, ValaProjectConfiguration configuration, IProgressMonitor monitor);
+ }
+}
diff --git a/Compiler/ValaCompiler.cs b/Compiler/ValaCompiler.cs
new file mode 100644
index 0000000..0da875d
--- /dev/null
+++ b/Compiler/ValaCompiler.cs
@@ -0,0 +1,641 @@
+//
+// ValaCompiler.cs: abstract class that provides some basic implementation for ICompiler
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.IO;
+using System.Text;
+using System.CodeDom.Compiler;
+using System.Text.RegularExpressions;
+using System.Collections.Generic;
+using System.Diagnostics;
+
+using Mono.Addins;
+
+using MonoDevelop.Core;
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Core.Execution;
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Projects;
+using MonoDevelop.Core.ProgressMonitoring;
+using MonoDevelop.Core.Gui.Components;
+
+namespace MonoDevelop.ValaBinding
+{
+ [Extension ("/ValaBinding/Compilers")]
+ public class ValaCompiler : ICompiler
+ {
+ protected string compilerCommand;
+
+ bool compilerFound;
+ bool appsChecked;
+
+ public ValaCompiler ()
+ {
+ compilerCommand = "valac";
+ }
+
+ public string Name {
+ get{ return "valac"; }
+ }
+
+ public string CompilerCommand {
+ get { return compilerCommand; }
+ }
+
+ /// <summary>
+ /// Generates compiler args for depended packages
+ /// </summary>
+ /// <param name="packages">
+ /// The collection of packages for this project
+ /// <see cref="ProjectPackageCollection"/>
+ /// </param>
+ /// <returns>
+ /// The string needed by the compiler to reference the necessary packages
+ /// <see cref="System.String"/>
+ /// </returns>
+ protected string GeneratePkgCompilerArgs (ProjectPackageCollection packages)
+ {
+ if (packages == null || packages.Count < 1)
+ return string.Empty;
+
+ StringBuilder libs = new StringBuilder ();
+
+ foreach (ProjectPackage p in packages) {
+ if (p.IsProject) {
+ libs.AppendFormat (" \"{0}\" ", p.File);
+ } else {
+ libs.AppendFormat (" --pkg \"{0}\" ", p.Name);
+ }
+ }
+
+ return libs.ToString ();
+ }
+
+ /// <summary>
+ /// Compile the project
+ /// </summary>
+ /// <param name="projectFiles">
+ /// Collection of project files
+ /// <see cref="ProjectFileCollection"/>
+ /// </param>
+ /// <param name="packages">
+ /// Collection of depended packages
+ /// <see cref="ProjectPackageCollection"/>
+ /// </param>
+ /// <param name="configuration">
+ /// Project configuration
+ /// <see cref="ValaProjectConfiguration"/>
+ /// </param>
+ /// <param name="monitor">
+ /// Progress monitor to be used
+ /// <see cref="IProgressMonitor"/>
+ /// </param>
+ /// <returns>
+ /// Result of the compilation
+ /// <see cref="ICompilerResult"/>
+ /// </returns>
+ public BuildResult Compile (
+ ProjectFileCollection projectFiles,
+ ProjectPackageCollection packages,
+ ValaProjectConfiguration configuration,
+ IProgressMonitor monitor)
+ {
+
+ if (!appsChecked) {
+ appsChecked = true;
+ compilerFound = CheckApp (compilerCommand);
+ }/// Check for compiler
+
+
+ if (!compilerFound) {
+ BuildResult cres = new BuildResult ();
+ cres.AddError ("Compiler not found: " + compilerCommand);
+ return cres;
+ }/// No compiler!
+
+ CompilerResults cr = new CompilerResults (new TempFileCollection ());
+ bool success = true;
+
+ /// Build compiler params string
+ string compilerArgs = GetCompilerFlags (configuration) + " " + GeneratePkgCompilerArgs (packages);
+
+ /// Build executable name
+ string outputName = Path.Combine (configuration.OutputDirectory,
+ configuration.CompiledOutputName);
+
+ monitor.BeginTask (GettextCatalog.GetString ("Compiling source"), 1);
+
+ success = DoCompilation (projectFiles, compilerArgs, outputName, monitor, cr);
+
+ GenerateDepfile (configuration, packages);
+
+ if (success)
+ monitor.Step (1);
+ monitor.EndTask ();
+
+ return new BuildResult (cr, "");
+ }
+
+ /// <summary>
+ /// Generates compiler args for the current settings
+ /// </summary>
+ /// <param name="configuration">
+ /// Project configuration
+ /// <see cref="ValaProjectConfiguration"/>
+ /// </param>
+ /// <returns>
+ /// A compiler-interpretable string
+ /// <see cref="System.String"/>
+ /// </returns>
+ public string GetCompilerFlags (ValaProjectConfiguration configuration)
+ {
+ List<string> args = new List<string> ();
+
+
+ ValaCompilationParameters cp =
+ (ValaCompilationParameters)configuration.CompilationParameters;
+
+ args.Add (string.Format ("-d '{0}'", configuration.OutputDirectory));
+
+ if (configuration.DebugMode)
+ args.Add ("-g");
+
+ switch (configuration.CompileTarget) {
+ case ValaBinding.CompileTarget.Bin:
+ if (cp.EnableMultithreading) {
+ args.Add ("--thread");
+ }
+ break;
+ case ValaBinding.CompileTarget.SharedLibrary:
+ args.Add (string.Format ("--Xcc=\"-shared\" --Xcc=\"-fPIC\" --Xcc=\"-I'{0}'\" --library \"{1}\"", configuration.OutputDirectory, configuration.Output));
+ break;
+ }
+
+// Valac will get these sooner or later
+// switch (cp.WarningLevel)
+// {
+// case WarningLevel.None:
+// args.Append ("-w ");
+// break;
+// case WarningLevel.Normal:
+// // nothing
+// break;
+// case WarningLevel.All:
+// args.Append ("-Wall ");
+// break;
+// }
+//
+// if (cp.WarningsAsErrors)
+// args.Append ("-Werror ");
+//
+ if (0 < cp.OptimizationLevel) {
+ args.Add ("--Xcc=\"-O" + cp.OptimizationLevel + "\"");
+ }
+
+ if (cp.ExtraCompilerArguments != null && cp.ExtraCompilerArguments.Length > 0) {
+ args.Add (ExpandBacktickedParameters (cp.ExtraCompilerArguments.Replace (Environment.NewLine, " ")));
+ }
+
+ if (cp.DefineSymbols != null && cp.DefineSymbols.Length > 0) {
+ args.Add (ProcessDefineSymbols (cp.DefineSymbols));
+ }
+
+ if (configuration.Includes != null)
+ foreach (string inc in configuration.Includes)
+ args.Add ("--vapidir \"" + inc + "\"");
+
+ if (configuration.Libs != null)
+ foreach (string lib in configuration.Libs)
+ args.Add ("--pkg \"" + lib + "\"");
+
+ return string.Join (" ", args.ToArray ());
+ }
+
+ /// <summary>
+ /// Generates compilers flags for selected defines
+ /// </summary>
+ /// <param name="configuration">
+ /// Project configuration
+ /// <see cref="ValaProjectConfiguration"/>
+ /// </param>
+ /// <returns>
+ /// A compiler-interpretable string
+ /// <see cref="System.String"/>
+ /// </returns>
+ public string GetDefineFlags (ValaProjectConfiguration configuration)
+ {
+ string defines = ((ValaCompilationParameters)configuration.CompilationParameters).DefineSymbols;
+ return ProcessDefineSymbols (defines);
+ }
+
+ /// <summary>
+ /// Determines whether a file needs to be compiled
+ /// </summary>
+ /// <param name="file">
+ /// The file in question
+ /// <see cref="ProjectFile"/>
+ /// </param>
+ /// <returns>
+ /// true if the file needs to be compiled
+ /// <see cref="System.Boolean"/>
+ /// </returns>
+ private bool NeedsCompiling (ProjectFile file)
+ {
+ return true;
+ }
+
+ /// <summary>
+ /// Executes a build command
+ /// </summary>
+ /// <param name="command">
+ /// The executable to be launched
+ /// <see cref="System.String"/>
+ /// </param>
+ /// <param name="args">
+ /// The arguments to command
+ /// <see cref="System.String"/>
+ /// </param>
+ /// <param name="baseDirectory">
+ /// The directory in which the command will be executed
+ /// <see cref="System.String"/>
+ /// </param>
+ /// <param name="monitor">
+ /// The progress monitor to be used
+ /// <see cref="IProgressMonitor"/>
+ /// </param>
+ /// <param name="errorOutput">
+ /// Error output will be stored here
+ /// <see cref="System.String"/>
+ /// </param>
+ /// <returns>
+ /// The exit code of the command
+ /// <see cref="System.Int32"/>
+ /// </returns>
+ int ExecuteCommand (string command, string args, string baseDirectory, IProgressMonitor monitor, out string errorOutput)
+ {
+ errorOutput = string.Empty;
+ int exitCode = -1;
+
+ StringWriter swError = new StringWriter ();
+ LogTextWriter chainedError = new LogTextWriter ();
+ chainedError.ChainWriter (monitor.Log);
+ chainedError.ChainWriter (swError);
+
+ monitor.Log.WriteLine ("{0} {1}", command, args);
+
+ AggregatedOperationMonitor operationMonitor = new AggregatedOperationMonitor (monitor);
+
+ try {
+ ProcessWrapper p = Runtime.ProcessService.StartProcess (command, args, baseDirectory, monitor.Log, chainedError, null);
+ operationMonitor.AddOperation (p); //handles cancellation
+
+ p.WaitForOutput ();
+ errorOutput = swError.ToString ();
+ exitCode = p.ExitCode;
+ p.Dispose ();
+
+ if (monitor.IsCancelRequested) {
+ monitor.Log.WriteLine (GettextCatalog.GetString ("Build cancelled"));
+ monitor.ReportError (GettextCatalog.GetString ("Build cancelled"), null);
+ if (exitCode == 0)
+ exitCode = -1;
+ }
+ } finally {
+ chainedError.Close ();
+ swError.Close ();
+ operationMonitor.Dispose ();
+ }
+
+ return exitCode;
+ }
+
+ /// <summary>
+ /// Transforms a whitespace-delimited string of
+ /// symbols into a set of compiler flags
+ /// </summary>
+ /// <param name="symbols">
+ /// A whitespace-delimited string of symbols,
+ /// e.g., "DEBUG MONODEVELOP"
+ /// <see cref="System.String"/>
+ /// </param>
+ /// <returns>
+ /// A <see cref="System.String"/>
+ /// </returns>
+ private string ProcessDefineSymbols (string symbols)
+ {
+ return string.Empty; // No -D in valac for now :-(
+// return ((null == symbols) || (0 == symbols.Length))?
+// string.Empty:
+// "-D " + Regex.Replace (symbols, " +", " -D ");
+ }
+
+ /// <summary>
+ /// Compiles the project
+ /// </summary>
+ private bool DoCompilation (ProjectFileCollection projectFiles, string args,
+ string outputName,
+ IProgressMonitor monitor,
+ CompilerResults cr)
+ {
+ StringBuilder filelist = new StringBuilder ();
+ foreach (ProjectFile f in projectFiles) {
+ if (f.Subtype != Subtype.Directory && f.BuildAction == BuildAction.Compile) {
+ filelist.AppendFormat ("\"{0}\" ", f.FilePath);
+ }
+ }/// Build file list
+
+ string compiler_args = string.Format ("{0} {1} -o \"{2}\"",
+ args, filelist.ToString (), Path.GetFileName (outputName));
+
+ string errorOutput = string.Empty;
+ int exitCode = ExecuteCommand (compilerCommand, compiler_args, Path.GetDirectoryName (outputName), monitor, out errorOutput);
+
+ ParseCompilerOutput (errorOutput, cr, projectFiles);
+ return exitCode == 0;
+ }
+
+ /// <summary>
+ /// Cleans up intermediate files
+ /// </summary>
+ /// <param name="projectFiles">
+ /// The project's files
+ /// <see cref="ProjectFileCollection"/>
+ /// </param>
+ /// <param name="configuration">
+ /// Project configuration
+ /// <see cref="ValaProjectConfiguration"/>
+ /// </param>
+ /// <param name="monitor">
+ /// The progress monitor to be used
+ /// <see cref="IProgressMonitor"/>
+ /// </param>
+ public void Clean (ProjectFileCollection projectFiles, ValaProjectConfiguration configuration, IProgressMonitor monitor)
+ {
+ /// Clean up intermediate files
+ /// These should only be generated for libraries, but we'll check for them in all cases
+ foreach (ProjectFile file in projectFiles) {
+ if (file.BuildAction == BuildAction.Compile) {
+ string cFile = Path.Combine (configuration.OutputDirectory, Path.GetFileNameWithoutExtension (file.Name) + ".c");
+ if (File.Exists (cFile)){ File.Delete (cFile); }
+
+ string hFile = Path.Combine (configuration.OutputDirectory, Path.GetFileNameWithoutExtension (file.Name) + ".h");
+ if (File.Exists (hFile)){ File.Delete (hFile); }
+ }
+ }
+
+ string vapiFile = Path.Combine (configuration.OutputDirectory, configuration.Output + ".vapi");
+ if (File.Exists (vapiFile)){ File.Delete (vapiFile); }
+ }
+
+ /// <summary>
+ /// Determines whether the target needs to be updated
+ /// </summary>
+ /// <param name="projectFiles">
+ /// The project's files
+ /// <see cref="ProjectFileCollection"/>
+ /// </param>
+ /// <param name="target">
+ /// The target
+ /// <see cref="System.String"/>
+ /// </param>
+ /// <returns>
+ /// true if target needs to be updated
+ /// <see cref="System.Boolean"/>
+ /// </returns>
+ private bool NeedsUpdate (ProjectFileCollection projectFiles,
+ string target)
+ {
+ return true;
+ }
+
+ /// <summary>
+ /// Parses a compiler output string into CompilerResults
+ /// </summary>
+ /// <param name="errorString">
+ /// The string output by the compiler
+ /// <see cref="System.String"/>
+ /// </param>
+ /// <param name="cr">
+ /// The CompilerResults into which to parse errorString
+ /// <see cref="CompilerResults"/>
+ /// </param>
+ protected void ParseCompilerOutput (string errorString, CompilerResults cr, ProjectFileCollection projectFiles)
+ {
+ TextReader reader = new StringReader (errorString);
+ string next;
+
+ while ((next = reader.ReadLine ()) != null) {
+ CompilerError error = CreateErrorFromErrorString (next, projectFiles);
+ // System.Console.WriteLine ("Creating error from string \"{0}\"", next);
+ if (error != null) {
+ cr.Errors.Insert (0, error);
+ // System.Console.WriteLine ("Adding error");
+ }
+ }
+
+ reader.Close ();
+ }
+
+ /// Error regex for valac
+ /// Sample output: "/home/user/project/src/blah.vala:23.5-23.5: error: syntax error, unexpected }, expecting ;"
+ private static Regex errorRegex = new Regex (
+ @"^\s*(?<file>.*):(?<line>\d*)\.(?<column>\d*)-\d*\.\d*: (?<level>[^:]*): (?<message>.*)",
+ RegexOptions.Compiled | RegexOptions.ExplicitCapture);
+
+ private static Regex gccRegex = new Regex (
+ @"^\s*(?<file>.*):(?<line>\d*):((?<column>\d*):)?\s*(?<level>.*)\s*:\s(?<message>.*)",
+ RegexOptions.Compiled | RegexOptions.ExplicitCapture);
+
+ /// Error regex for gnu linker - this could still be pertinent for vala
+ private static Regex linkerRegex = new Regex (
+ @"^\s*(?<file>[^:]*):(?<line>\d*):\s*(?<message>[^:]*)",
+ RegexOptions.Compiled | RegexOptions.ExplicitCapture);
+
+ /// <summary>
+ /// Creates a compiler error from an output string
+ /// </summary>
+ /// <param name="errorString">
+ /// The error string to be parsed
+ /// <see cref="System.String"/>
+ /// </param>
+ /// <returns>
+ /// A newly created CompilerError
+ /// <see cref="CompilerError"/>
+ /// </returns>
+ private CompilerError CreateErrorFromErrorString (string errorString, ProjectFileCollection projectFiles)
+ {
+ Match errorMatch = null;
+ foreach (Regex regex in new Regex[]{errorRegex, gccRegex})
+ if ((errorMatch = regex.Match (errorString)).Success)
+ break;
+
+ if (!errorMatch.Success)
+ return null;
+
+ CompilerError error = new CompilerError ();
+
+ foreach (ProjectFile pf in projectFiles) {
+ if (Path.GetFileName (pf.Name) == errorMatch.Groups["file"].Value) {
+ error.FileName = pf.FilePath;
+ break;
+ }
+ }// check for fully pathed file
+ if (string.Empty == error.FileName) {
+ error.FileName = errorMatch.Groups["file"].Value;
+ }// fallback to exact match
+ error.Line = int.Parse (errorMatch.Groups["line"].Value);
+ if (errorMatch.Groups["column"].Success)
+ error.Column = int.Parse (errorMatch.Groups["column"].Value);
+ error.IsWarning = errorMatch.Groups["level"].Value.Equals ("warning");
+ error.ErrorText = errorMatch.Groups["message"].Value;
+
+ return error;
+ }
+
+ /// <summary>
+ /// Parses linker output into compiler results
+ /// </summary>
+ /// <param name="errorString">
+ /// The linker output to be parsed
+ /// <see cref="System.String"/>
+ /// </param>
+ /// <param name="cr">
+ /// Results will be stored here
+ /// <see cref="CompilerResults"/>
+ /// </param>
+ protected void ParseLinkerOutput (string errorString, CompilerResults cr)
+ {
+ TextReader reader = new StringReader (errorString);
+ string next;
+
+ while ((next = reader.ReadLine ()) != null) {
+ CompilerError error = CreateLinkerErrorFromErrorString (next);
+ if (error != null)
+ cr.Errors.Add (error);
+ }
+
+ reader.Close ();
+ }
+
+ /// <summary>
+ /// Creates a linker error from an output string
+ /// </summary>
+ /// <param name="errorString">
+ /// The error string to be parsed
+ /// <see cref="System.String"/>
+ /// </param>
+ /// <returns>
+ /// A newly created LinkerError
+ /// <see cref="LinkerError"/>
+ /// </returns>
+ private CompilerError CreateLinkerErrorFromErrorString (string errorString)
+ {
+ CompilerError error = new CompilerError ();
+
+ Match linkerMatch = linkerRegex.Match (errorString);
+
+ if (linkerMatch.Success)
+ {
+ error.FileName = linkerMatch.Groups["file"].Value;
+ error.Line = int.Parse (linkerMatch.Groups["line"].Value);
+ error.ErrorText = linkerMatch.Groups["message"].Value;
+
+ return error;
+ }
+
+ return null;
+ }
+
+ /// <summary>
+ /// Expands backticked portions of the parameter-list using "sh" and "echo"
+ /// </summary>
+ /// <param name="tmp">
+ /// The string to expand
+ /// <see cref="System.String"/>
+ /// </param>
+ /// <returns>
+ /// The result of the expansion
+ /// <see cref="System.String"/>
+ /// </returns>
+ // TODO: Portability, although otoh, probably someone who doesn't have sh
+ // isn't going to put backticks in the compiler flags
+ public string ExpandBacktickedParameters (string tmp)
+ {
+ string parameters = "-c \"echo -n " + tmp + "\"";
+ Process p = new Process ();
+
+ p.StartInfo.FileName = "sh";
+ p.StartInfo.Arguments = parameters;
+ p.StartInfo.UseShellExecute = false;
+ p.StartInfo.RedirectStandardOutput = true;
+ p.Start ();
+ p.WaitForExit ();
+
+ return p.StandardOutput.ReadToEnd ();
+ }
+
+ /// <summary>
+ /// Check to see if we have a given app
+ /// </summary>
+ /// <param name="app">
+ /// The app to check
+ /// <see cref="System.String"/>
+ /// </param>
+ /// <returns>
+ /// true if the app is found
+ /// <see cref="System.Boolean"/>
+ /// </returns>
+ bool CheckApp (string app)
+ {
+ try {
+ ProcessWrapper p = Runtime.ProcessService.StartProcess (app, "--version", null, null);
+ p.WaitForOutput ();
+ return true;
+ } catch {
+ return false;
+ }
+ }
+
+ public void GenerateDepfile (ValaProjectConfiguration configuration, ProjectPackageCollection packages)
+ {
+ try {
+ if (configuration.CompileTarget != CompileTarget.SharedLibrary){ return; }
+
+ using (StreamWriter writer = new StreamWriter (Path.Combine (configuration.OutputDirectory, Path.ChangeExtension (configuration.Output, ".deps")))) {
+ foreach (ProjectPackage package in packages) {
+ writer.WriteLine (package.Name);
+ }
+ }
+ } catch { /* Don't care */ }
+ }
+ }
+}
diff --git a/Gui/AddLibraryDialog.cs b/Gui/AddLibraryDialog.cs
new file mode 100644
index 0000000..ed2fa57
--- /dev/null
+++ b/Gui/AddLibraryDialog.cs
@@ -0,0 +1,79 @@
+//
+// AddLibraryDialog.cs: A simple open file dialog to add libraries to the project (using vapi files)
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.IO;
+
+using Mono.Addins;
+
+namespace MonoDevelop.ValaBinding
+{
+ public partial class AddLibraryDialog : Gtk.Dialog
+ {
+ private string lib = string.Empty;
+
+ public AddLibraryDialog()
+ {
+ this.Build();
+
+ Gtk.FileFilter libs = new Gtk.FileFilter ();
+ Gtk.FileFilter all = new Gtk.FileFilter ();
+
+ libs.AddPattern ("*.vapi");
+ libs.Name = "Libraries";
+
+ all.AddPattern ("*.*");
+ all.Name = "All Files";
+
+ file_chooser_widget.AddFilter (libs);
+ file_chooser_widget.AddFilter (all);
+ file_chooser_widget.SetCurrentFolder ("/usr/share/vala/vapi");
+ }
+
+ private void OnOkButtonClick (object sender, EventArgs e)
+ {
+ lib = System.IO.Path.GetFileNameWithoutExtension (
+ file_chooser_widget.Filename);
+
+ Destroy ();
+ }
+
+ private void OnCancelButtonClick (object sender, EventArgs e)
+ {
+ Destroy ();
+ }
+
+ public string Library {
+ get { return lib; }
+ }
+ }
+}
diff --git a/Gui/AddPathDialog.cs b/Gui/AddPathDialog.cs
new file mode 100644
index 0000000..1d4f994
--- /dev/null
+++ b/Gui/AddPathDialog.cs
@@ -0,0 +1,74 @@
+//
+// AddPathDialog.cs: A simple open file dialog to add paths to the project
+// for includes and libraries (mime type: x-directory/normal)
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+
+using System;
+using System.IO;
+
+using Mono.Addins;
+
+namespace MonoDevelop.ValaBinding
+{
+ public partial class AddPathDialog : Gtk.Dialog
+ {
+ string path;
+
+ public AddPathDialog (string currentDir)
+ {
+ this.Build ();
+
+ Gtk.FileFilter filter = new Gtk.FileFilter ();
+
+ filter.AddMimeType ("x-directory/normal");
+ filter.Name = "Folders";
+
+ file_chooser_widget.SetCurrentFolder (currentDir);
+ file_chooser_widget.AddFilter (filter);
+ }
+
+ private void OnOkButtonClick (object sender, EventArgs e)
+ {
+ path = file_chooser_widget.Filename;
+ Destroy ();
+ }
+
+ private void OnCancelButtonClick (object sender, EventArgs e)
+ {
+ Destroy ();
+ }
+
+ public string SelectedPath {
+ get { return path; }
+ }
+ }
+}
diff --git a/Gui/CodeGenerationPanel.cs b/Gui/CodeGenerationPanel.cs
new file mode 100644
index 0000000..f1145b3
--- /dev/null
+++ b/Gui/CodeGenerationPanel.cs
@@ -0,0 +1,292 @@
+//
+// CodeGenerationPanel.cs: Code generation panel to configure project
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.IO;
+using System.Collections;
+
+using Mono.Addins;
+
+using MonoDevelop.Core;
+using MonoDevelop.Projects.Gui.Dialogs;
+
+namespace MonoDevelop.ValaBinding
+{
+ public partial class CodeGenerationPanel : Gtk.Bin
+ {
+ private ValaProjectConfiguration configuration;
+ private ValaCompilationParameters compilationParameters;
+ private Gtk.ListStore libStore = new Gtk.ListStore (typeof(string));
+ private Gtk.ListStore includePathStore = new Gtk.ListStore (typeof(string));
+
+ public CodeGenerationPanel ()
+ {
+ this.Build ();
+
+ Gtk.CellRendererText textRenderer = new Gtk.CellRendererText ();
+
+ libTreeView.Model = libStore;
+ libTreeView.HeadersVisible = false;
+ libTreeView.AppendColumn ("Library", textRenderer, "text", 0);
+
+ includePathTreeView.Model = includePathStore;
+ includePathTreeView.HeadersVisible = false;
+ includePathTreeView.AppendColumn ("Include", textRenderer, "text", 0);
+ }
+
+ public void Load (ValaProjectConfiguration config)
+ {
+ configuration = config;
+ compilationParameters = (ValaCompilationParameters)configuration.CompilationParameters;
+
+ switch (compilationParameters.WarningLevel)
+ {
+ case WarningLevel.None:
+ noWarningRadio.Active = true;
+ break;
+ case WarningLevel.Normal:
+ normalWarningRadio.Active = true;
+ break;
+ case WarningLevel.All:
+ allWarningRadio.Active = true;
+ break;
+ }
+
+ warningsAsErrorsCheckBox.Active = compilationParameters.WarningsAsErrors;
+ threadingCheckbox.Sensitive = (config.CompileTarget == CompileTarget.Bin);
+ threadingCheckbox.Active = (threadingCheckbox.Sensitive && compilationParameters.EnableMultithreading);
+
+ optimizationSpinButton.Value = compilationParameters.OptimizationLevel;
+
+ switch (configuration.CompileTarget)
+ {
+ case ValaBinding.CompileTarget.Bin:
+ targetComboBox.Active = 0;
+ break;
+ case ValaBinding.CompileTarget.StaticLibrary:
+ targetComboBox.Active = 1;
+ break;
+ case ValaBinding.CompileTarget.SharedLibrary:
+ targetComboBox.Active = 2;
+ break;
+ }
+
+ extraCompilerTextView.Buffer.Text = compilationParameters.ExtraCompilerArguments;
+
+ defineSymbolsTextEntry.Text = compilationParameters.DefineSymbols;
+
+ foreach (string lib in configuration.Libs)
+ libStore.AppendValues (lib);
+
+ foreach (string includePath in configuration.Includes)
+ includePathStore.AppendValues (includePath);
+ }
+
+ private void OnIncludePathAdded (object sender, EventArgs e)
+ {
+ if (includePathEntry.Text.Length > 0) {
+ includePathStore.AppendValues (includePathEntry.Text);
+ includePathEntry.Text = string.Empty;
+ }
+ }
+
+ private void OnIncludePathRemoved (object sender, EventArgs e)
+ {
+ Gtk.TreeIter iter;
+ includePathTreeView.Selection.GetSelected (out iter);
+ includePathStore.Remove (ref iter);
+ }
+
+ private void OnLibAdded (object sender, EventArgs e)
+ {
+ if (libAddEntry.Text.Length > 0) {
+ libStore.AppendValues (libAddEntry.Text);
+ libAddEntry.Text = string.Empty;
+ }
+ }
+
+ private void OnLibRemoved (object sender, EventArgs e)
+ {
+ Gtk.TreeIter iter;
+ libTreeView.Selection.GetSelected (out iter);
+ libStore.Remove (ref iter);
+ }
+
+ private void OnBrowseButtonClick (object sender, EventArgs e)
+ {
+ AddLibraryDialog dialog = new AddLibraryDialog ();
+ dialog.Run ();
+ libAddEntry.Text = dialog.Library;
+ }
+
+ private void OnIncludePathBrowseButtonClick (object sender, EventArgs e)
+ {
+ AddPathDialog dialog = new AddPathDialog (configuration.SourceDirectory);
+ dialog.Run ();
+ includePathEntry.Text = dialog.SelectedPath;
+ }
+
+ public bool Store ()
+ {
+ if (compilationParameters == null || configuration == null)
+ return false;
+
+ string line;
+ Gtk.TreeIter iter;
+
+ if (noWarningRadio.Active)
+ compilationParameters.WarningLevel = WarningLevel.None;
+ else if (normalWarningRadio.Active)
+ compilationParameters.WarningLevel = WarningLevel.Normal;
+ else
+ compilationParameters.WarningLevel = WarningLevel.All;
+
+ compilationParameters.WarningsAsErrors = warningsAsErrorsCheckBox.Active;
+
+ compilationParameters.OptimizationLevel = (int)optimizationSpinButton.Value;
+
+ switch (targetComboBox.Active)
+ {
+ case 0:
+ configuration.CompileTarget = ValaBinding.CompileTarget.Bin;
+ compilationParameters.EnableMultithreading = threadingCheckbox.Active;
+ break;
+ case 1:
+ configuration.CompileTarget = ValaBinding.CompileTarget.StaticLibrary;
+ break;
+ case 2:
+ configuration.CompileTarget = ValaBinding.CompileTarget.SharedLibrary;
+ break;
+ }
+
+ compilationParameters.ExtraCompilerArguments = extraCompilerTextView.Buffer.Text;
+
+ compilationParameters.DefineSymbols = defineSymbolsTextEntry.Text;
+
+ libStore.GetIterFirst (out iter);
+ configuration.Libs.Clear ();
+ while (libStore.IterIsValid (iter)) {
+ line = (string)libStore.GetValue (iter, 0);
+ configuration.Libs.Add (line);
+ libStore.IterNext (ref iter);
+ }
+
+ includePathStore.GetIterFirst (out iter);
+ configuration.Includes.Clear ();
+ while (includePathStore.IterIsValid (iter)) {
+ line = (string)includePathStore.GetValue (iter, 0);
+ configuration.Includes.Add (line);
+ includePathStore.IterNext (ref iter);
+ }
+
+ return true;
+ }
+
+ protected virtual void OnLibAddEntryChanged (object sender, EventArgs e)
+ {
+ if (string.IsNullOrEmpty (libAddEntry.Text))
+ addLibButton.Sensitive = false;
+ else
+ addLibButton.Sensitive = true;
+ }
+
+ protected virtual void OnLibTreeViewCursorChanged (object sender, System.EventArgs e)
+ {
+ removeLibButton.Sensitive = true;
+ }
+
+ protected virtual void OnRemoveLibButtonClicked (object sender, System.EventArgs e)
+ {
+ removeLibButton.Sensitive = false;
+ }
+
+ protected virtual void OnIncludePathEntryChanged (object sender, System.EventArgs e)
+ {
+ if (string.IsNullOrEmpty (includePathEntry.Text))
+ includePathAddButton.Sensitive = false;
+ else
+ includePathAddButton.Sensitive = true;
+ }
+
+ protected virtual void OnIncludePathTreeViewCursorChanged (object sender, System.EventArgs e)
+ {
+ includePathRemoveButton.Sensitive = true;
+ }
+
+ protected virtual void OnIncludePathRemoveButtonClicked (object sender, System.EventArgs e)
+ {
+ includePathRemoveButton.Sensitive = false;
+ }
+
+ protected virtual void OnLibAddEntryActivated (object sender, System.EventArgs e)
+ {
+ OnLibAdded (this, new EventArgs ());
+ }
+
+ protected virtual void OnIncludePathEntryActivated (object sender, System.EventArgs e)
+ {
+ OnIncludePathAdded (this, new EventArgs ());
+ }
+
+ /// <summary>
+ /// Set sensitivity and activity of multithreading checkbox on target change
+ /// </summary>
+ protected virtual void OnTargetComboBoxChanged (object sender, System.EventArgs e)
+ {
+ threadingCheckbox.Sensitive = (0 == targetComboBox.Active);
+ threadingCheckbox.Active = (threadingCheckbox.Active && threadingCheckbox.Sensitive);
+ }
+ }
+
+ public class CodeGenerationPanelBinding : MultiConfigItemOptionsPanel
+ {
+ private CodeGenerationPanel panel;
+
+ public override Gtk.Widget CreatePanelWidget ()
+ {
+ return panel = new CodeGenerationPanel ();
+ }
+
+ public override void LoadConfigData ()
+ {
+ panel.Load((ValaProjectConfiguration) CurrentConfiguration);
+// panel = new CodeGenerationPanel ((Properties)CustomizationObject);
+// Add (panel);
+ }
+
+
+ public override void ApplyChanges ()
+ {
+ panel.Store ();
+ }
+ }
+}
diff --git a/Gui/DataProvider.cs b/Gui/DataProvider.cs
new file mode 100644
index 0000000..65e8c03
--- /dev/null
+++ b/Gui/DataProvider.cs
@@ -0,0 +1,204 @@
+//
+// DataProvider.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Projects.Gui.Completion;
+
+using MonoDevelop.ValaBinding.Parser;
+
+namespace MonoDevelop.ValaBinding
+{
+ public class ParameterDataProvider : IParameterDataProvider
+ {
+ private TextEditor editor;
+ private List<Function> functions = new List<Function> ();
+
+ public ParameterDataProvider (Document document, ProjectInformation info, string functionName)
+ {
+ this.editor = document.TextEditor;
+
+ foreach (Function f in info.Functions) {
+ if (f.Name == functionName) {
+ functions.Add (f);
+ }
+ }
+
+ string currentFile = document.FileName;
+
+ if (info.IncludedFiles.ContainsKey (currentFile)) {
+ foreach (FileInformation fi in info.IncludedFiles[currentFile]) {
+ foreach (Function f in fi.Functions) {
+ if (f.Name == functionName) {
+ functions.Add (f);
+ }
+ }
+ }
+ }
+ }
+
+ // Returns the number of methods
+ public int OverloadCount {
+ get { return functions.Count; }
+ }
+
+ // Returns the index of the parameter where the cursor is currently positioned.
+ // -1 means the cursor is outside the method parameter list
+ // 0 means no parameter entered
+ // > 0 is the index of the parameter (1-based)
+ public int GetCurrentParameterIndex (ICodeCompletionContext ctx)
+ {
+ int cursor = editor.CursorPosition;
+ int i = ctx.TriggerOffset;
+
+ if (editor.GetCharAt (i) == ')')
+ return -1;
+
+ if (i > cursor)
+ return -1;
+ else if (i == cursor)
+ return 0;
+
+ int parameterIndex = 1;
+
+ while (i++ < cursor) {
+ char ch = editor.GetCharAt (i);
+ if (ch == ',')
+ parameterIndex++;
+ else if (ch == ')')
+ return -1;
+ }
+
+ return parameterIndex;
+ }
+
+ // Returns the markup to use to represent the specified method overload
+ // in the parameter information window.
+ public string GetMethodMarkup (int overload, string[] parameterMarkup)
+ {
+ Function function = functions[overload];
+ string paramTxt = string.Join (", ", parameterMarkup);
+
+ int len = function.FullName.LastIndexOf (".");
+ string prename = null;
+
+ if (len > 0)
+ prename = function.FullName.Substring (0, len + 2);
+
+ string cons = string.Empty;
+
+ if (function.IsConst)
+ cons = " const";
+
+ return prename + "<b>" + function.Name + "</b>" + " (" + paramTxt + ")" + cons;
+ }
+
+ // Returns the text to use to represent the specified parameter
+ public string GetParameterMarkup (int overload, int paramIndex)
+ {
+ Function function = functions[overload];
+
+ return function.Parameters[paramIndex];
+ }
+
+ // Returns the number of parameters of the specified method
+ public int GetParameterCount (int overload)
+ {
+ return functions[overload].Parameters.Length;
+ }
+ }
+
+ public class CompletionData : ICompletionData
+ {
+ private string image;
+ private string text;
+ private string description;
+ private string completion_string;
+
+ public CompletionData (LanguageItem item)
+ {
+ if (item is Class)
+ image = Stock.Class;
+ else if (item is Structure)
+ image = Stock.Struct;
+ else if (item is Union)
+ image = "md-union";
+ else if (item is Enumeration)
+ image = Stock.Enum;
+ else if (item is Enumerator)
+ image = Stock.Literal;
+ else if (item is Function)
+ image = Stock.Method;
+ else if (item is Namespace)
+ image = Stock.NameSpace;
+ else if (item is Typedef)
+ image = Stock.Interface;
+ else if (item is Member)
+ image = Stock.Field;
+ else if (item is Variable)
+ image = Stock.Field;
+ else if (item is Macro)
+ image = Stock.Literal;
+ else
+ image = Stock.Literal;
+
+ this.text = item.Name;
+ this.completion_string = item.Name;
+ this.description = string.Empty;
+ }
+
+ public string Icon {
+ get { return image; }
+ }
+
+ public string DisplayText {
+ get { return text; }
+ }
+
+ public string Description {
+ get { return description; }
+ }
+
+ public string CompletionText {
+ get { return completion_string; }
+ }
+
+ public DisplayFlags DisplayFlags {
+ get { return DisplayFlags.None; }
+ }
+ }
+
+}
diff --git a/Gui/EditPackagesDialog.cs b/Gui/EditPackagesDialog.cs
new file mode 100644
index 0000000..bf9dfbb
--- /dev/null
+++ b/Gui/EditPackagesDialog.cs
@@ -0,0 +1,499 @@
+//
+// EditPackagesDialog.cs: Allows you to add and remove pkg-config packages to the project
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+using System.Collections.Generic;
+
+using Mono.Addins;
+
+using MonoDevelop.Projects;
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Core.Gui;
+
+namespace MonoDevelop.ValaBinding
+{
+ public partial class EditPackagesDialog : Gtk.Dialog
+ {
+ private Gtk.ListStore normalPackageListStore = new Gtk.ListStore (typeof(bool), typeof(string), typeof(string));
+ private Gtk.ListStore projectPackageListStore = new Gtk.ListStore (typeof(bool), typeof(string), typeof(string));
+ private Gtk.ListStore selectedPackageListStore = new Gtk.ListStore (typeof(string), typeof(string));
+ private ValaProject project;
+ private ProjectPackageCollection selectedPackages = new ProjectPackageCollection ();
+ private List<ProjectPackage> packagesOfProjects;
+ private List<ProjectPackage> packages = new List<ProjectPackage> ();
+
+ // Column IDs
+ const int NormalPackageToggleID = 0;
+ const int NormalPackageNameID = 1;
+ const int NormalPackageVersionID = 2;
+
+ const int ProjectPackageToggleID = 0;
+ const int ProjectPackageNameID = 1;
+ const int ProjectPackageVersionID = 2;
+
+ const int SelectedPackageNameID = 0;
+ const int SelectedPackageVersionID = 1;
+
+ public EditPackagesDialog(ValaProject project)
+ {
+ this.Build();
+
+ this.project = project;
+
+ selectedPackages.Project = project;
+ selectedPackages.AddRange (project.Packages);
+
+ Gtk.CellRendererText textRenderer = new Gtk.CellRendererText ();
+
+ Gtk.CellRendererPixbuf pixbufRenderer = new Gtk.CellRendererPixbuf ();
+ pixbufRenderer.StockId = "md-package";
+
+ normalPackageListStore.DefaultSortFunc = NormalPackageCompareNodes;
+ projectPackageListStore.DefaultSortFunc = ProjectPackageCompareNodes;
+ selectedPackageListStore.DefaultSortFunc = SelectedPackageCompareNodes;
+
+ normalPackageListStore.SetSortColumnId (NormalPackageNameID, Gtk.SortType.Ascending);
+ projectPackageListStore.SetSortColumnId (ProjectPackageNameID, Gtk.SortType.Ascending);
+ selectedPackageListStore.SetSortColumnId (SelectedPackageNameID, Gtk.SortType.Ascending);
+
+ normalPackageTreeView.SearchColumn = NormalPackageNameID;
+ projectPackageTreeView.SearchColumn = ProjectPackageNameID;
+ selectedPackageTreeView.SearchColumn = SelectedPackageNameID;
+
+ // <!-- Normal packages -->
+
+ Gtk.CellRendererToggle normalPackageToggleRenderer = new Gtk.CellRendererToggle ();
+ normalPackageToggleRenderer.Activatable = true;
+ normalPackageToggleRenderer.Toggled += OnNormalPackageToggled;
+ normalPackageToggleRenderer.Xalign = 0;
+
+ Gtk.TreeViewColumn normalPackageColumn = new Gtk.TreeViewColumn ();
+ normalPackageColumn.Title = "Package";
+ normalPackageColumn.PackStart (pixbufRenderer, false);
+ normalPackageColumn.PackStart (textRenderer, true);
+ normalPackageColumn.AddAttribute (textRenderer, "text", NormalPackageNameID);
+
+ normalPackageTreeView.Model = normalPackageListStore;
+ normalPackageTreeView.HeadersVisible = true;
+ normalPackageTreeView.AppendColumn ("", normalPackageToggleRenderer, "active", NormalPackageToggleID);
+ normalPackageTreeView.AppendColumn (normalPackageColumn);
+ normalPackageTreeView.AppendColumn ("Version", textRenderer, "text", NormalPackageVersionID);
+
+ // <!-- Project packages -->
+
+ Gtk.CellRendererToggle projectPackageToggleRenderer = new Gtk.CellRendererToggle ();
+ projectPackageToggleRenderer.Activatable = true;
+ projectPackageToggleRenderer.Toggled += OnProjectPackageToggled;
+ projectPackageToggleRenderer.Xalign = 0;
+
+ Gtk.TreeViewColumn projectPackageColumn = new Gtk.TreeViewColumn ();
+ projectPackageColumn.Title = "Package";
+ projectPackageColumn.PackStart (pixbufRenderer, false);
+ projectPackageColumn.PackStart (textRenderer, true);
+ projectPackageColumn.AddAttribute (textRenderer, "text", ProjectPackageNameID);
+
+ projectPackageTreeView.Model = projectPackageListStore;
+ projectPackageTreeView.HeadersVisible = true;
+ projectPackageTreeView.AppendColumn ("", projectPackageToggleRenderer, "active", ProjectPackageToggleID);
+ projectPackageTreeView.AppendColumn (projectPackageColumn);
+ projectPackageTreeView.AppendColumn ("Version", textRenderer, "text", ProjectPackageVersionID);
+
+
+ // <!-- Selected packages -->
+
+ Gtk.TreeViewColumn selectedPackageColumn = new Gtk.TreeViewColumn ();
+ selectedPackageColumn.Title = "Package";
+ selectedPackageColumn.PackStart (pixbufRenderer, false);
+ selectedPackageColumn.PackStart (textRenderer, true);
+ selectedPackageColumn.AddAttribute (textRenderer, "text", SelectedPackageNameID);
+
+ selectedPackageTreeView.Model = selectedPackageListStore;
+ selectedPackageTreeView.HeadersVisible = true;
+ selectedPackageTreeView.AppendColumn (selectedPackageColumn);
+ selectedPackageTreeView.AppendColumn ("Version", textRenderer, "text", SelectedPackageVersionID);
+
+ // Fill up the project tree view
+ packagesOfProjects = GetPackagesOfProjects (project);
+
+ foreach (ProjectPackage p in packagesOfProjects) {
+ if (p.Name == project.Name) continue;
+
+ packages.Add (p);
+ string version = p.Version;
+ bool inProject = selectedPackages.Contains (p);
+
+ if (!IsPackageInStore (projectPackageListStore, p.Name, version, ProjectPackageNameID, ProjectPackageVersionID)) {
+ projectPackageListStore.AppendValues (inProject, p.Name, version);
+
+ if (inProject)
+ selectedPackageListStore.AppendValues (p.Name, version);
+ }
+ }
+
+ // Fill up the normal tree view
+ foreach (string dir in ScanDirs ()) {
+ if (Directory.Exists (dir)) {
+ DirectoryInfo di = new DirectoryInfo (dir);
+ FileInfo[] availablePackages = di.GetFiles ("*.vapi");
+
+ foreach (FileInfo f in availablePackages) {
+ if (!IsValidPackage (f.FullName)) {
+ continue;
+ }
+
+ string packagename = f.FullName;
+
+ GLib.Idle.Add (delegate {
+ ProjectPackage package = new ProjectPackage (packagename);
+
+ packages.Add (package);
+
+ string name = package.Name;
+ string version = package.Version;
+ bool inProject = selectedPackages.Contains (package);
+
+ if (!IsPackageInStore (normalPackageListStore, name, version, NormalPackageNameID, NormalPackageVersionID)) {
+ normalPackageListStore.AppendValues (inProject, name, version);
+
+ if (inProject)
+ selectedPackageListStore.AppendValues (name, version);
+ }
+ return false;
+ });
+ }
+ }
+ }
+ }
+
+ private List<ProjectPackage> GetPackagesOfProjects (Project project)
+ {
+ List<ProjectPackage> packages = new List<ProjectPackage>();
+ ProjectPackage package;
+
+ foreach (Project c in IdeApp.Workspace.GetAllProjects()) {
+ if (c is ValaProject) {
+ ValaProject proj = c as ValaProject;
+ ValaProjectConfiguration conf = proj.GetConfiguration (IdeApp.Workspace.ActiveConfiguration) as ValaProjectConfiguration;
+ if (conf.CompileTarget != CompileTarget.Bin) {
+ proj.WriteMDPkgPackage (conf.Id);
+ package = new ProjectPackage (proj);
+ packages.Add (package);
+ }
+ }
+ }
+
+ return packages;
+ }
+
+ private bool IsPackageInStore (Gtk.ListStore store, string pname, string pversion, int pname_col, int pversion_col)
+ {
+ Gtk.TreeIter search_iter;
+ bool has_elem = store.GetIterFirst (out search_iter);
+
+ if (has_elem) {
+ while (true) {
+ string name = (string)store.GetValue (search_iter, pname_col);
+ string version = (string)store.GetValue (search_iter, pversion_col);
+
+ if (name == pname && version == pversion)
+ return true;
+
+ if (!store.IterNext (ref search_iter))
+ break;
+ }
+ }
+
+ return false;
+ }
+
+ private string[] ScanDirs ()
+ {
+ return new string[]{ ValaProject.vapidir };
+ }
+
+ private void OnOkButtonClick (object sender, EventArgs e)
+ {
+ // Use this instead of clear, since clear seems to not update the packages tree
+ while (project.Packages.Count > 0) {
+ project.Packages.RemoveAt (0);
+ }
+
+ project.Packages.AddRange (selectedPackages);
+
+ Destroy ();
+ }
+
+ private void OnCancelButtonClick (object sender, EventArgs e)
+ {
+ Destroy ();
+ }
+
+ private void OnRemoveButtonClick (object sender, EventArgs e)
+ {
+ Gtk.TreeIter iter;
+
+ selectedPackageTreeView.Selection.GetSelected (out iter);
+
+ if (!selectedPackageListStore.IterIsValid (iter)) return;
+
+ string package = (string)selectedPackageListStore.GetValue (iter, SelectedPackageNameID);
+ bool isProject = false;
+
+ foreach (ProjectPackage p in selectedPackages) {
+ if (p.Name == package) {
+ isProject = p.IsProject;
+ selectedPackages.Remove (p);
+ break;
+ }
+ }
+
+ selectedPackageListStore.Remove (ref iter);
+
+ if (!isProject) {
+ Gtk.TreeIter search_iter;
+ bool has_elem = normalPackageListStore.GetIterFirst (out search_iter);
+
+ if (has_elem) {
+ while (true) {
+ string current = (string)normalPackageListStore.GetValue (search_iter, NormalPackageNameID);
+
+ if (current.Equals (package)) {
+ normalPackageListStore.SetValue (search_iter, NormalPackageToggleID, false);
+ break;
+ }
+
+ if (!normalPackageListStore.IterNext (ref search_iter))
+ break;
+ }
+ }
+ } else {
+ Gtk.TreeIter search_iter;
+ bool has_elem = projectPackageListStore.GetIterFirst (out search_iter);
+
+ if (has_elem) {
+ while (true) {
+ string current = (string)projectPackageListStore.GetValue (search_iter, ProjectPackageNameID);
+
+ if (current.Equals (package)) {
+ projectPackageListStore.SetValue (search_iter, ProjectPackageToggleID, false);
+ break;
+ }
+
+ if (!projectPackageListStore.IterNext (ref search_iter))
+ break;
+ }
+ }
+ }
+ }
+
+ private void OnNormalPackageToggled (object sender, Gtk.ToggledArgs args)
+ {
+ Gtk.TreeIter iter;
+ bool old = true;
+ string name;
+ string version;
+
+ if (normalPackageListStore.GetIter (out iter, new Gtk.TreePath (args.Path))) {
+ old = (bool)normalPackageListStore.GetValue (iter, NormalPackageToggleID);
+ normalPackageListStore.SetValue (iter, NormalPackageToggleID, !old);
+ }
+
+ name = (string)normalPackageListStore.GetValue (iter, NormalPackageNameID);
+ version = (string)normalPackageListStore.GetValue(iter, NormalPackageVersionID);
+
+ if (old == false) {
+ selectedPackageListStore.AppendValues (name, version);
+
+ foreach (ProjectPackage package in packages) {
+ if (package.Name == name /* && package.Version == version */) {
+ selectedPackages.Add (package);
+ break;
+ }
+ }
+
+ } else {
+ Gtk.TreeIter search_iter;
+ bool has_elem = selectedPackageListStore.GetIterFirst (out search_iter);
+
+ if (has_elem) {
+ while (true) {
+ string current = (string)selectedPackageListStore.GetValue (search_iter, SelectedPackageNameID);
+
+ if (current.Equals (name)) {
+ selectedPackageListStore.Remove (ref search_iter);
+ foreach (ProjectPackage p in selectedPackages) {
+ if (p.Name == name) {
+ selectedPackages.Remove (p);
+ break;
+ }
+ }
+
+ break;
+ }
+
+ if (!selectedPackageListStore.IterNext (ref search_iter))
+ break;
+ }
+ }
+ }
+ }
+
+ private void OnProjectPackageToggled (object sender, Gtk.ToggledArgs args)
+ {
+ Gtk.TreeIter iter;
+ bool old = true;
+ string name;
+ string version;
+
+ if (projectPackageListStore.GetIter (out iter, new Gtk.TreePath (args.Path))) {
+ old = (bool)projectPackageListStore.GetValue (iter, ProjectPackageToggleID);
+ projectPackageListStore.SetValue (iter, ProjectPackageToggleID, !old);
+ }
+
+ name = (string)projectPackageListStore.GetValue (iter, ProjectPackageNameID);
+ version = (string)projectPackageListStore.GetValue(iter, ProjectPackageVersionID);
+
+ if (old == false) {
+ selectedPackageListStore.AppendValues (name, version);
+
+ foreach (ProjectPackage p in packagesOfProjects) {
+ if (p.Name == name) {
+ selectedPackages.Add (p);
+ break;
+ }
+ }
+ } else {
+ Gtk.TreeIter search_iter;
+ bool has_elem = selectedPackageListStore.GetIterFirst (out search_iter);
+
+ if (has_elem)
+ {
+ while (true) {
+ string current = (string)selectedPackageListStore.GetValue (search_iter, SelectedPackageNameID);
+
+ if (current.Equals (name)) {
+ selectedPackageListStore.Remove (ref search_iter);
+ foreach (ProjectPackage p in selectedPackages) {
+ if (p.Name == name) {
+ selectedPackages.Remove (p);
+ break;
+ }
+ }
+
+ break;
+ }
+
+ if (!selectedPackageListStore.IterNext (ref search_iter))
+ break;
+ }
+ }
+ }
+ }
+
+ private bool IsValidPackage (string package)
+ {
+ return true;
+ }
+
+ int NormalPackageCompareNodes (Gtk.TreeModel model, Gtk.TreeIter a, Gtk.TreeIter b)
+ {
+ string name1 = (string)model.GetValue (a, NormalPackageNameID);
+ string name2 = (string)model.GetValue (b, NormalPackageNameID);
+ return string.Compare (name1, name2, true);
+ }
+
+ int ProjectPackageCompareNodes (Gtk.TreeModel model, Gtk.TreeIter a, Gtk.TreeIter b)
+ {
+ string name1 = (string)model.GetValue (a, ProjectPackageNameID);
+ string name2 = (string)model.GetValue (b, ProjectPackageNameID);
+ return string.Compare (name1, name2, true);
+ }
+
+ int SelectedPackageCompareNodes (Gtk.TreeModel model, Gtk.TreeIter a, Gtk.TreeIter b)
+ {
+ string name1 = (string)model.GetValue (a, SelectedPackageNameID);
+ string name2 = (string)model.GetValue (b, SelectedPackageNameID);
+ return string.Compare (name1, name2, true);
+ }
+
+ protected virtual void OnSelectedPackagesTreeViewCursorChanged (object sender, System.EventArgs e)
+ {
+ removeButton.Sensitive = true;
+ }
+
+ protected virtual void OnRemoveButtonClicked (object sender, System.EventArgs e)
+ {
+ removeButton.Sensitive = false;
+ }
+
+ protected virtual void OnDetailsButtonClicked (object sender, System.EventArgs e)
+ {
+ Gtk.TreeIter iter;
+ Gtk.Widget active_tab = notebook1.Children [notebook1.Page];
+ string tab_label = notebook1.GetTabLabelText (active_tab);
+ string name = string.Empty;
+ // string version = string.Empty;
+ ProjectPackage package = null;
+
+ if (tab_label == "System Packages") {
+ normalPackageTreeView.Selection.GetSelected (out iter);
+ name = (string)normalPackageListStore.GetValue (iter, NormalPackageNameID);
+ // version = (string)normalPackageListStore.GetValue (iter, NormalPackageVersionID);
+ } else if (tab_label == "Project Packages") {
+ projectPackageTreeView.Selection.GetSelected (out iter);
+ name = (string)projectPackageListStore.GetValue (iter, ProjectPackageNameID);
+ // version = (string)projectPackageListStore.GetValue (iter, ProjectPackageVersionID);
+ } else {
+ return;
+ }
+
+ foreach (ProjectPackage p in packages) {
+ if (p.Name == name /* && p.Version == version */) {
+ package = p;
+ break;
+ }
+ }
+
+ if (package == null)
+ return;
+
+ PackageDetails details = new PackageDetails (package);
+ details.Modal = true;
+ details.Show ();
+ }
+
+ protected virtual void OnNonSelectedPackageCursorChanged (object o, EventArgs e)
+ {
+ detailsButton.Sensitive = true;
+ }
+ }
+}
diff --git a/Gui/GeneralOptionsPanel.cs b/Gui/GeneralOptionsPanel.cs
new file mode 100644
index 0000000..67ccbeb
--- /dev/null
+++ b/Gui/GeneralOptionsPanel.cs
@@ -0,0 +1,128 @@
+//
+// GeneralOptionsPanel.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.Collections.Generic;
+
+using Mono.Addins;
+
+using MonoDevelop.Core;
+using MonoDevelop.Core.Gui.Dialogs;
+
+namespace MonoDevelop.ValaBinding
+{
+ public partial class GeneralOptionsPanel : Gtk.Bin
+ {
+ ICompiler default_vala_compiler;
+ List<ICompiler> vala_compilers = new List<ICompiler> ();
+
+ public GeneralOptionsPanel ()
+ {
+ this.Build ();
+
+ object[] compilers = AddinManager.GetExtensionObjects ("/ValaBinding/Compilers");
+
+ foreach (ICompiler compiler in compilers) {
+ vala_compilers.Add (compiler);
+ }
+
+ foreach (ICompiler compiler in vala_compilers)
+ valaCombo.AppendText (compiler.Name);
+
+ string vala_compiler = PropertyService.Get<string> ("ValaBinding.DefaultValaCompiler", new ValaCompiler ().Name);
+
+ foreach (ICompiler compiler in vala_compilers) {
+ if (compiler.Name == vala_compiler) {
+ default_vala_compiler = compiler;
+ }
+ }
+
+ if (default_vala_compiler == null)
+ default_vala_compiler = new ValaCompiler ();
+
+ int active;
+ Gtk.TreeIter iter;
+ Gtk.ListStore store;
+
+ active = 0;
+ store = (Gtk.ListStore)valaCombo.Model;
+ store.GetIterFirst (out iter);
+
+ while (store.IterIsValid (iter)) {
+ if ((string)store.GetValue (iter, 0) == default_vala_compiler.Name) {
+ break;
+ }
+ store.IterNext (ref iter);
+ active++;
+ }
+
+ valaCombo.Active = active;
+ }
+
+ public bool Store ()
+ {
+ PropertyService.Set ("ValaBinding.DefaultValaCompiler", default_vala_compiler.Name);
+ PropertyService.SaveProperties ();
+ return true;
+ }
+
+ protected virtual void OnValaComboChanged (object sender, System.EventArgs e)
+ {
+ string activeCompiler = valaCombo.ActiveText;
+
+ foreach (ICompiler compiler in vala_compilers) {
+ if (compiler.Name == activeCompiler) {
+ default_vala_compiler = compiler;
+ }
+ }
+
+ if (default_vala_compiler == null)
+ default_vala_compiler = new ValaCompiler ();
+ }
+ }
+
+ public class GeneralOptionsPanelBinding : OptionsPanel
+ {
+ private GeneralOptionsPanel panel;
+
+ public override Gtk.Widget CreatePanelWidget ()
+ {
+ panel = new GeneralOptionsPanel ();
+ return panel;
+ }
+
+ public override void ApplyChanges ()
+ {
+ panel.Store ();
+ }
+ }
+}
diff --git a/Gui/OutputOptionsPanel.cs b/Gui/OutputOptionsPanel.cs
new file mode 100644
index 0000000..96307c7
--- /dev/null
+++ b/Gui/OutputOptionsPanel.cs
@@ -0,0 +1,120 @@
+//
+// OutputOptionsPanel.cs: configure output options
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+
+using System;
+
+using Mono.Addins;
+
+using MonoDevelop.Core;
+using MonoDevelop.Projects.Gui.Dialogs;
+
+namespace MonoDevelop.ValaBinding
+{
+ public partial class OutputOptionsPanel : Gtk.Bin
+ {
+ private ValaProjectConfiguration configuration;
+
+ public OutputOptionsPanel ()
+ {
+ this.Build ();
+
+ table1.RowSpacing = 3;
+ }
+
+ public void Load (ValaProjectConfiguration config)
+ {
+ configuration = config;
+
+ outputNameTextEntry.Text = configuration.Output;
+ outputPathTextEntry.Text = configuration.OutputDirectory;
+ parametersTextEntry.Text = configuration.CommandLineParameters;
+
+ externalConsoleCheckbox.Active = configuration.ExternalConsole;
+ pauseCheckbox.Active = configuration.PauseConsoleOutput;
+ }
+
+ private void OnBrowseButtonClick (object sender, EventArgs e)
+ {
+ AddPathDialog dialog = new AddPathDialog (configuration.OutputDirectory);
+ dialog.Run ();
+ outputPathTextEntry.Text = dialog.SelectedPath;
+ }
+
+ public bool Store ()
+ {
+ if (configuration == null)
+ return false;
+
+ if (outputNameTextEntry != null && outputNameTextEntry.Text.Length > 0)
+ configuration.Output = outputNameTextEntry.Text.Trim ();
+
+ if (outputPathTextEntry.Text != null && outputPathTextEntry.Text.Length > 0)
+ configuration.OutputDirectory = outputPathTextEntry.Text.Trim ();
+
+ if (parametersTextEntry.Text != null && parametersTextEntry.Text.Length > 0)
+ configuration.CommandLineParameters = parametersTextEntry.Text.Trim ();
+
+ configuration.ExternalConsole = externalConsoleCheckbox.Active;
+ configuration.PauseConsoleOutput = pauseCheckbox.Active;
+
+ return true;
+ }
+
+ protected virtual void OnExternalConsoleCheckboxClicked (object sender, System.EventArgs e)
+ {
+ pauseCheckbox.Sensitive = externalConsoleCheckbox.Active;
+ }
+ }
+
+ public class OutputOptionsPanelBinding : MultiConfigItemOptionsPanel
+ {
+ private OutputOptionsPanel panel;
+
+ public override Gtk.Widget CreatePanelWidget ()
+ {
+ return panel = new OutputOptionsPanel ();
+ }
+
+ public override void LoadConfigData ()
+ {
+ panel.Load((ValaProjectConfiguration) CurrentConfiguration);
+// panel = new OutputOptionsPanel ((Properties)CustomizationObject);
+// Add (panel);
+ }
+
+ public override void ApplyChanges ()
+ {
+ panel.Store ();
+ }
+ }
+}
diff --git a/Gui/PackageDetails.cs b/Gui/PackageDetails.cs
new file mode 100644
index 0000000..26e881d
--- /dev/null
+++ b/Gui/PackageDetails.cs
@@ -0,0 +1,90 @@
+//
+// PackageDetails.cs
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace MonoDevelop.ValaBinding
+{
+ public partial class PackageDetails : Gtk.Dialog
+ {
+ Gtk.ListStore requiresStore = new Gtk.ListStore (typeof(string));
+// Gtk.ListStore libPathsStore = new Gtk.ListStore (typeof(string));
+// Gtk.ListStore libsStore = new Gtk.ListStore (typeof(string));
+// Gtk.ListStore cflagsStore = new Gtk.ListStore (typeof(string));
+
+ public PackageDetails (ProjectPackage package)
+ {
+ this.Build();
+
+ package = new ProjectPackage(package.File);
+
+ Gtk.CellRendererText textRenderer = new Gtk.CellRendererText ();
+
+ requiresTreeView.Model = requiresStore;
+ requiresTreeView.AppendColumn ("Requires", textRenderer, "text", 0);
+ requiresTreeView.HeadersVisible = false;
+
+// libPathsTreeView.Model = libPathsStore;
+// libPathsTreeView.AppendColumn ("LibPaths", textRenderer, "text", 0);
+// libPathsTreeView.HeadersVisible = false;
+//
+// libsTreeView.Model = libsStore;
+// libsTreeView.AppendColumn ("Libs", textRenderer, "text", 0);
+// libsTreeView.HeadersVisible = false;
+//
+// cflagsTreeView.Model = cflagsStore;
+// cflagsTreeView.AppendColumn ("CFlags", textRenderer, "text", 0);
+// cflagsTreeView.HeadersVisible = false;
+//
+ nameLabel.Text = package.Name;
+
+ descriptionLabel.Text = package.Description;
+ versionLabel.Text = package.Version;
+
+ foreach (string req in package.Requires)
+ requiresStore.AppendValues (req);
+
+// foreach (string libpath in package.LibPaths)
+// libPathsStore.AppendValues (libpath);
+//
+// foreach (string lib in package.Libs)
+// libsStore.AppendValues (lib);
+//
+// foreach (string cflag in package.CFlags)
+// cflagsStore.AppendValues (cflag);
+ }
+
+ protected virtual void OnButtonOkClicked (object sender, System.EventArgs e)
+ {
+ Destroy ();
+ }
+ }
+}
diff --git a/Gui/ValaTextEditorExtension.cs b/Gui/ValaTextEditorExtension.cs
new file mode 100644
index 0000000..68b5304
--- /dev/null
+++ b/Gui/ValaTextEditorExtension.cs
@@ -0,0 +1,358 @@
+//
+// ValaTextEditorExtension.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.IO;
+using System.Text;
+using System.Collections.Generic;
+
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Ide.Gui.Content;
+using MonoDevelop.Projects.Gui.Completion;
+
+using MonoDevelop.ValaBinding.Parser;
+
+namespace MonoDevelop.ValaBinding
+{
+ public class ValaTextEditorExtension : CompletionTextEditorExtension
+ {
+ // Allowed chars to be next to an identifier
+ private static char[] allowedChars = new char[] {
+ '.', ':', ' ', '\t', '=', '*', '+', '-', '/', '%', ',', '&',
+ '|', '^', '{', '}', '[', ']', '(', ')', '\n', '!', '?', '<', '>'
+ };
+
+ // Allowed Chars to be next to an identifier excluding ':' (to get the full name in '::' completion).
+ private static char[] allowedCharsMinusColon = new char[] {
+ '.', ' ', '\t', '=', '*', '+', '-', '/', '%', ',', '&', '|',
+ '^', '{', '}', '[', ']', '(', ')', '\n', '!', '?', '<', '>'
+ };
+
+ public override bool ExtendsEditor (Document doc, IEditableTextBuffer editor)
+ {
+ return (Path.GetExtension (doc.Name).ToUpper () == ".VALA" ||
+ Path.GetExtension (doc.Name).ToUpper () == ".VAPI" );
+ }
+
+ public override bool KeyPress (Gdk.Key key, char keyChar, Gdk.ModifierType modifier)
+ {
+ int line, column;
+ Editor.GetLineColumnFromPosition (Editor.CursorPosition, out line, out column);
+ string lineText = Editor.GetLineText (line);
+
+ // smart formatting strategy
+ if (TextEditorProperties.IndentStyle == IndentStyle.Smart) {
+ if (key == Gdk.Key.Return) {
+ if (lineText.TrimEnd ().EndsWith ("{")) {
+ Editor.InsertText (Editor.CursorPosition,
+ "\n" + TextEditorProperties.IndentString + GetIndent (Editor, line));
+ return false;
+ }
+ } else if (key == Gdk.Key.braceright && AllWhiteSpace (lineText)
+ && lineText.StartsWith (TextEditorProperties.IndentString)) {
+ if (lineText.Length > 0)
+ lineText = lineText.Substring (TextEditorProperties.IndentString.Length);
+ Editor.ReplaceLine (line, lineText + "}");
+ return false;
+ }
+ }
+
+ return base.KeyPress (key, keyChar, modifier);
+ }
+
+ public override ICompletionDataList HandleCodeCompletion (
+ ICodeCompletionContext completionContext, char completionChar)
+ {
+ string lineText = Editor.GetLineText (completionContext.TriggerLine + 1);
+
+ if (lineText.EndsWith (".")) {
+ // remove the trailing '.'
+ lineText = lineText.Substring (0, lineText.Length - 1);
+
+ int nameStart = lineText.LastIndexOfAny (allowedChars);
+
+ nameStart++;
+
+ string itemName = lineText.Substring (nameStart).Trim ();
+
+ if (string.IsNullOrEmpty (itemName))
+ return null;
+
+ return GetMembersOfItem (itemName);
+ }
+
+ return null;
+ }
+
+ public override ICompletionDataList CodeCompletionCommand (
+ ICodeCompletionContext completionContext)
+ {
+ int pos = completionContext.TriggerOffset;
+ int line, column;
+ Editor.GetLineColumnFromPosition (Editor.CursorPosition, out line, out column);
+ string lineText = Editor.GetLineText (line);
+
+ if (!lineText.Contains ("."))
+ return GlobalComplete ();
+
+ return HandleCodeCompletion (completionContext, Editor.GetText (pos - 1, pos)[0]);
+ }
+
+ private CompletionDataList GetMembersOfItem (string itemFullName)
+ {
+ ValaProject project = Document.Project as ValaProject;
+
+ if (project == null)
+ return null;
+
+ ProjectInformation info = ProjectInformationManager.Instance.Get (project);
+ CompletionDataList list = new CompletionDataList ();
+
+ LanguageItem container = null;
+ string containerType = null;
+
+ string currentFileName = Document.FileName;
+ bool in_project = false;
+
+ // Try containers
+ foreach (LanguageItem li in info.Containers ()) {
+ if ((itemFullName == li.FullName) || (itemFullName == li.Name)){
+ container = li;
+ in_project = true;
+ break;
+ }
+ }
+
+ // Try included containers
+ if (!in_project && info.IncludedFiles.ContainsKey (currentFileName)) {
+ foreach (FileInformation fi in info.IncludedFiles[currentFileName]) {
+ foreach (LanguageItem li in fi.Containers ()) {
+ if ((itemFullName == li.FullName) || (itemFullName == li.Name)) {
+ container = li;
+ break;
+ }
+ }
+ }
+ }
+
+ // Try instances
+ // Find the typename of the instance
+ foreach (Member li in info.Members ) {
+ if (itemFullName == li.Name) {
+ containerType = li.InstanceType;
+ in_project = true;
+ break;
+ }
+ }
+
+ // Search included files
+ if (!in_project && info.IncludedFiles.ContainsKey (currentFileName)) {
+ foreach (FileInformation fi in info.IncludedFiles[currentFileName]) {
+ foreach (Member li in fi.Members) {
+ if (itemFullName == li.Name) {
+ containerType = li.InstanceType;
+ break;
+ }
+ }
+ }
+ }
+
+ if (null == container) {
+ // Search locals
+ foreach (Local li in info.Locals ) {
+ if (itemFullName == li.Name && currentFileName == li.File) {
+ containerType = li.InstanceType;
+ in_project = true;
+ break;
+ }
+ }
+ }
+
+
+ if ((container == null) && (containerType == null))
+ return null;
+
+ if(null != container) {
+ if (in_project) {
+ foreach (LanguageItem li in info.AllItems ()) {
+ if (li.Parent != null && li.Parent.Equals (container)) {
+ list.Add (new CompletionData (li));
+ }
+ }
+ } else {
+ foreach (FileInformation fi in info.IncludedFiles[currentFileName]) {
+ foreach (LanguageItem li in fi.AllItems ()) {
+ if (li.Parent != null && li.Parent.Equals (container))
+ list.Add (new CompletionData (li));
+ }
+ }
+ }
+ } else {
+ if (in_project) {
+ AddMembersWithParent (list, info.InstanceMembers (), containerType);
+ } else {
+ foreach (FileInformation fi in info.IncludedFiles[currentFileName]) {
+ AddMembersWithParent (list, fi.InstanceMembers (), containerType);
+ }
+ }
+ }
+
+ return list;
+ }
+
+ /// <summary>
+ /// Adds completion data for children to a list
+ /// </summary>
+ /// <param name="list">
+ /// The list to which completion data will be added
+ /// <see cref="CompletionDataList"/>
+ /// </param>
+ /// <param name="items">
+ /// A list of items to search
+ /// <see cref="IEnumerable"/>
+ /// </param>
+ /// <param name="parentName">
+ /// The name of the parent that will be matched
+ /// <see cref="System.String"/>
+ /// </param>
+ public static void AddMembersWithParent(CompletionDataList list, IEnumerable<LanguageItem> items, string parentName) {
+ foreach (LanguageItem li in items) {
+ if (li.Parent != null && li.Parent.Name.EndsWith (parentName))
+ list.Add (new CompletionData (li));
+ }
+ }
+
+
+ private ICompletionDataList GlobalComplete ()
+ {
+ ValaProject project = Document.Project as ValaProject;
+
+ if (project == null)
+ return null;
+
+ ProjectInformation info = ProjectInformationManager.Instance.Get (project);
+
+ CompletionDataList list = new CompletionDataList ();
+
+ foreach (LanguageItem li in info.Containers ())
+ if (li.Parent == null)
+ list.Add (new CompletionData (li));
+
+ foreach (Function f in info.Functions)
+ if (f.Parent == null)
+ list.Add (new CompletionData (f));
+
+ foreach (Enumerator e in info.Enumerators)
+ list.Add (new CompletionData (e));
+
+ foreach (Macro m in info.Macros)
+ list.Add (new CompletionData (m));
+
+ string currentFileName = Document.FileName;
+
+ if (info.IncludedFiles.ContainsKey (currentFileName)) {
+ foreach (FileInformation fi in info.IncludedFiles[currentFileName]) {
+ foreach (LanguageItem li in fi.Containers ())
+ if (li.Parent == null)
+ list.Add (new CompletionData (li));
+
+ foreach (Function f in fi.Functions)
+ if (f.Parent == null)
+ list.Add (new CompletionData (f));
+
+ foreach (Enumerator e in fi.Enumerators)
+ list.Add (new CompletionData (e));
+
+ foreach (Macro m in fi.Macros)
+ list.Add (new CompletionData (m));
+ }
+ }
+
+ return list;
+ }
+
+ public override IParameterDataProvider HandleParameterCompletion (
+ ICodeCompletionContext completionContext, char completionChar)
+ {
+ //System.Console.WriteLine("ValaTextEditorExtension.HandleParameterCompletion({0})", completionChar);
+ if (completionChar != '(')
+ return null;
+
+ ValaProject project = Document.Project as ValaProject;
+
+ if (project == null)
+ return null;
+
+ ProjectInformation info = ProjectInformationManager.Instance.Get (project);
+
+ int line, column;
+ Editor.GetLineColumnFromPosition (Editor.CursorPosition, out line, out column);
+ int position = Editor.GetPositionFromLineColumn (line, 1);
+ string lineText = Editor.GetText (position, Editor.CursorPosition - 1).TrimEnd ();
+
+ int nameStart = lineText.LastIndexOfAny (allowedChars);
+
+ nameStart++;
+
+ string functionName = lineText.Substring (nameStart).Trim ();
+
+ if (string.IsNullOrEmpty (functionName))
+ return null;
+
+ return new ParameterDataProvider (Document, info, functionName);
+ }
+
+ private bool AllWhiteSpace (string lineText)
+ {
+ foreach (char c in lineText)
+ if (!char.IsWhiteSpace (c))
+ return false;
+
+ return true;
+ }
+
+ // Snatched from DefaultFormattingStrategy
+ private string GetIndent (TextEditor d, int lineNumber)
+ {
+ string lineText = d.GetLineText (lineNumber);
+ StringBuilder whitespaces = new StringBuilder ();
+
+ foreach (char ch in lineText) {
+ if (!char.IsWhiteSpace (ch))
+ break;
+ whitespaces.Append (ch);
+ }
+
+ return whitespaces.ToString ();
+ }
+ }
+}
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..d3c5b40
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,237 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006, 2007 Free Software Foundation, Inc.
+
+This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package. The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system.
+
+ Running `configure' might take a while. While running, it prints
+ some messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+ 6. Often, you can also type `make uninstall' to remove the installed
+ files again.
+
+Compilers and Options
+=====================
+
+Some systems require unusual options for compilation or linking that the
+`configure' script does not know about. Run `./configure --help' for
+details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you can use GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory. After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+Installation Names
+==================
+
+By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc. You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+There may be some features `configure' cannot figure out automatically,
+but needs to determine by the type of machine the package will run on.
+Usually, assuming the package is built to be run on the _same_
+architectures, `configure' can figure that out, but if it prints a
+message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+If you want to set default values for `configure' scripts to share, you
+can create a site shell script called `config.site' that gives default
+values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug. Until the bug is fixed you can use this workaround:
+
+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+`configure' recognizes the following options to control how it operates.
+
+`--help'
+`-h'
+ Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..4b77793
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,124 @@
+ADDIN_BUILD = $(top_builddir)/build
+ASSEMBLY = $(ADDIN_BUILD)/MonoDevelop.ValaBinding.dll
+
+REFS = \
+ $(GLIB_SHARP_LIBS) \
+ $(GTK_SHARP_LIBS) \
+ $(MONO_ADDINS_LIBS) \
+ $(MONODEVELOP_CORE_ADDINS_LIBS) \
+ $(MONODEVELOP_LIBS) \
+ -r:Mono.Posix \
+ -r:System \
+ -r:System.Xml
+
+
+FILES = \
+ AssemblyInfo.cs \
+ Compiler/ICompiler.cs \
+ Compiler/ValaCompiler.cs \
+ gtk-gui/generated.cs \
+ gtk-gui/MonoDevelop.ValaBinding.AddLibraryDialog.cs \
+ gtk-gui/MonoDevelop.ValaBinding.AddPathDialog.cs \
+ gtk-gui/MonoDevelop.ValaBinding.CodeGenerationPanel.cs \
+ gtk-gui/MonoDevelop.ValaBinding.EditPackagesDialog.cs \
+ gtk-gui/MonoDevelop.ValaBinding.GeneralOptionsPanel.cs \
+ gtk-gui/MonoDevelop.ValaBinding.OutputOptionsPanel.cs \
+ gtk-gui/MonoDevelop.ValaBinding.PackageDetails.cs \
+ Gui/AddLibraryDialog.cs \
+ Gui/AddPathDialog.cs \
+ Gui/CodeGenerationPanel.cs \
+ Gui/DataProvider.cs \
+ Gui/EditPackagesDialog.cs \
+ Gui/GeneralOptionsPanel.cs \
+ Gui/OutputOptionsPanel.cs \
+ Gui/PackageDetails.cs \
+ Gui/ValaTextEditorExtension.cs \
+ Navigation/ClassNodeBuilder.cs \
+ Navigation/ClassPadEventArgs.cs \
+ Navigation/EnumerationNodeBuilder.cs \
+ Navigation/EnumeratorNodeBuilder.cs \
+ Navigation/FunctionNodeBuilder.cs \
+ Navigation/GlobalsNodeBuilder.cs \
+ Navigation/LanguageItemCommandHandler.cs \
+ Navigation/LanguageItemEventArgs.cs \
+ Navigation/MacroDefinitionsNodeBuilder.cs \
+ Navigation/MacroNodeBuilder.cs \
+ Navigation/MemberNodeBuilder.cs \
+ Navigation/NamespaceNodeBuilder.cs \
+ Navigation/ProjectNodeBuilderExtension.cs \
+ Navigation/StructureNodeBuilder.cs \
+ Navigation/TypedefNodeBuilder.cs \
+ Navigation/UnionNodeBuilder.cs \
+ Navigation/VariableNodeBuilder.cs \
+ Parser/Class.cs \
+ Parser/Enumeration.cs \
+ Parser/Enumerator.cs \
+ Parser/Function.cs \
+ Parser/LanguageItem.cs \
+ Parser/Local.cs \
+ Parser/Macro.cs \
+ Parser/Member.cs \
+ Parser/Namespace.cs \
+ Parser/ProjectInformation.cs \
+ Parser/ProjectInformationManager.cs \
+ Parser/Structure.cs \
+ Parser/Tag.cs \
+ Parser/TagDatabaseManager.cs \
+ Parser/Typedef.cs \
+ Parser/Union.cs \
+ Parser/Variable.cs \
+ Project/ProjectPackage.cs \
+ Project/ProjectPackageCollection.cs \
+ Project/ProjectPackageEventArgs.cs \
+ Project/ValaCompilationParameters.cs \
+ Project/ValaProject.cs \
+ Project/ValaProjectBinding.cs \
+ Project/ValaProjectConfiguration.cs \
+ Project/ValaProjectServiceExtension.cs \
+ ProjectPad/ProjectNodeExtension.cs \
+ ProjectPad/ProjectPackageNodeBuilder.cs \
+ ProjectPad/ProjectPackagesFolderNodeBuilder.cs \
+ ProjectPad/ProjectReferencesExtension.cs \
+ ValaLanguageBinding.cs
+
+RES = \
+ gtk-gui/gui.stetic \
+ gtk-gui/objects.xml \
+ icons/Icons.16x16.PrivateUnion \
+ icons/Icons.16x16.ProjectReference \
+ icons/Icons.16x16.ProtectedUnion \
+ icons/Icons.16x16.Union \
+ icons/text-x-vala.16x16.png \
+ icons/text-x-vala.24x24.png \
+ icons/text-x-vala.32x32.png \
+ icons/text-x-vala.48x48.png \
+ icons/vala-icon-32.png \
+ templates/ConsoleValaProject.xpt.xml \
+ templates/EmptyValaProject.xpt.xml \
+ templates/EmptyValaSourceFile.xft.xml \
+ templates/SharedLibraryValaProject.xpt.xml \
+ templates/ValaTestFixture.xpt.xml \
+ ValaBinding.addin.xml
+
+all: $(ASSEMBLY)
+
+LOCAL_PKGCONFIG=PKG_CONFIG_PATH=../../local-config:$$PKG_CONFIG_PATH
+
+$(ASSEMBLY): $(build_sources) $(build_resources)
+ mkdir -p $(ADDIN_BUILD)
+ $(LOCAL_PKGCONFIG) $(CSC) $(CSC_FLAGS) -debug -out:$@ -target:library $(REFS) \
+ $(build_resources:%=/resource:%) $(build_sources)
+
+valabindinglibdir = $(prefix)/lib/monodevelop/AddIns/BackendBindings
+valabindinglib_DATA = $(ASSEMBLY)
+
+CLEANFILES = $(ASSEMBLY) $(ASSEMBLY).mdb
+
+EXTRA_DIST = $(FILES) $(RES)
+
+# include $(top_srcdir)/Makefile.include
+
+build_sources = $(addprefix $(srcdir)/, $(FILES)) $(GENERATED_FILES)
+build_resources = $(addprefix $(srcdir)/, $(RES))
+build_test_sources = $(addprefix $(srcdir)/, $(TESTFILES)) $(GENERATED_FILES)
+
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 0000000..bf038c8
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,589 @@
+# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+subdir = .
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(top_srcdir)/configure AUTHORS COPYING \
+ ChangeLog INSTALL NEWS install-sh missing
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(valabindinglibdir)"
+valabindinglibDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(valabindinglib_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ { test ! -d $(distdir) \
+ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -fr $(distdir); }; }
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+ASSEMBLY_VERSION = @ASSEMBLY_VERSION@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CSC = @CSC@
+CSC_FLAGS = @CSC_FLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+GCONF_SHARP_CFLAGS = @GCONF_SHARP_CFLAGS@
+GCONF_SHARP_LIBS = @GCONF_SHARP_LIBS@
+GLADE_SHARP_CFLAGS = @GLADE_SHARP_CFLAGS@
+GLADE_SHARP_LIBS = @GLADE_SHARP_LIBS@
+GLIB_SHARP_CFLAGS = @GLIB_SHARP_CFLAGS@
+GLIB_SHARP_LIBS = @GLIB_SHARP_LIBS@
+GNOME_SHARP_CFLAGS = @GNOME_SHARP_CFLAGS@
+GNOME_SHARP_LIBS = @GNOME_SHARP_LIBS@
+GNOME_VFS_SHARP_CFLAGS = @GNOME_VFS_SHARP_CFLAGS@
+GNOME_VFS_SHARP_LIBS = @GNOME_VFS_SHARP_LIBS@
+GTK_SHARP_CFLAGS = @GTK_SHARP_CFLAGS@
+GTK_SHARP_LIBS = @GTK_SHARP_LIBS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD_LIBRARY_PATH = @LD_LIBRARY_PATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_PREFIX = @LIB_PREFIX@
+LIB_SUFFIX = @LIB_SUFFIX@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MCS = @MCS@
+MKDIR_P = @MKDIR_P@
+MONO = @MONO@
+MONODEVELOP_CFLAGS = @MONODEVELOP_CFLAGS@
+MONODEVELOP_CORE_ADDINS_CFLAGS = @MONODEVELOP_CORE_ADDINS_CFLAGS@
+MONODEVELOP_CORE_ADDINS_LIBS = @MONODEVELOP_CORE_ADDINS_LIBS@
+MONODEVELOP_LIBS = @MONODEVELOP_LIBS@
+MONO_ADDINS_CFLAGS = @MONO_ADDINS_CFLAGS@
+MONO_ADDINS_GUI_CFLAGS = @MONO_ADDINS_GUI_CFLAGS@
+MONO_ADDINS_GUI_LIBS = @MONO_ADDINS_GUI_LIBS@
+MONO_ADDINS_LIBS = @MONO_ADDINS_LIBS@
+MONO_ADDINS_SETUP_CFLAGS = @MONO_ADDINS_SETUP_CFLAGS@
+MONO_ADDINS_SETUP_LIBS = @MONO_ADDINS_SETUP_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH = @PATH@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+RUNTIME = @RUNTIME@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+UNMANAGED_DEPENDENCIES_MONO_CFLAGS = @UNMANAGED_DEPENDENCIES_MONO_CFLAGS@
+UNMANAGED_DEPENDENCIES_MONO_LIBS = @UNMANAGED_DEPENDENCIES_MONO_LIBS@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gtksharp_prefix = @gtksharp_prefix@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+ADDIN_BUILD = $(top_builddir)/build
+ASSEMBLY = $(ADDIN_BUILD)/MonoDevelop.ValaBinding.dll
+REFS = \
+ $(GLIB_SHARP_LIBS) \
+ $(GTK_SHARP_LIBS) \
+ $(MONO_ADDINS_LIBS) \
+ $(MONODEVELOP_CORE_ADDINS_LIBS) \
+ $(MONODEVELOP_LIBS) \
+ -r:Mono.Posix \
+ -r:System \
+ -r:System.Xml
+
+FILES = \
+ AssemblyInfo.cs \
+ Compiler/ICompiler.cs \
+ Compiler/ValaCompiler.cs \
+ gtk-gui/generated.cs \
+ gtk-gui/MonoDevelop.ValaBinding.AddLibraryDialog.cs \
+ gtk-gui/MonoDevelop.ValaBinding.AddPathDialog.cs \
+ gtk-gui/MonoDevelop.ValaBinding.CodeGenerationPanel.cs \
+ gtk-gui/MonoDevelop.ValaBinding.EditPackagesDialog.cs \
+ gtk-gui/MonoDevelop.ValaBinding.GeneralOptionsPanel.cs \
+ gtk-gui/MonoDevelop.ValaBinding.OutputOptionsPanel.cs \
+ gtk-gui/MonoDevelop.ValaBinding.PackageDetails.cs \
+ Gui/AddLibraryDialog.cs \
+ Gui/AddPathDialog.cs \
+ Gui/CodeGenerationPanel.cs \
+ Gui/DataProvider.cs \
+ Gui/EditPackagesDialog.cs \
+ Gui/GeneralOptionsPanel.cs \
+ Gui/OutputOptionsPanel.cs \
+ Gui/PackageDetails.cs \
+ Gui/ValaTextEditorExtension.cs \
+ Navigation/ClassNodeBuilder.cs \
+ Navigation/ClassPadEventArgs.cs \
+ Navigation/EnumerationNodeBuilder.cs \
+ Navigation/EnumeratorNodeBuilder.cs \
+ Navigation/FunctionNodeBuilder.cs \
+ Navigation/GlobalsNodeBuilder.cs \
+ Navigation/LanguageItemCommandHandler.cs \
+ Navigation/LanguageItemEventArgs.cs \
+ Navigation/MacroDefinitionsNodeBuilder.cs \
+ Navigation/MacroNodeBuilder.cs \
+ Navigation/MemberNodeBuilder.cs \
+ Navigation/NamespaceNodeBuilder.cs \
+ Navigation/ProjectNodeBuilderExtension.cs \
+ Navigation/StructureNodeBuilder.cs \
+ Navigation/TypedefNodeBuilder.cs \
+ Navigation/UnionNodeBuilder.cs \
+ Navigation/VariableNodeBuilder.cs \
+ Parser/Class.cs \
+ Parser/Enumeration.cs \
+ Parser/Enumerator.cs \
+ Parser/Function.cs \
+ Parser/LanguageItem.cs \
+ Parser/Local.cs \
+ Parser/Macro.cs \
+ Parser/Member.cs \
+ Parser/Namespace.cs \
+ Parser/ProjectInformation.cs \
+ Parser/ProjectInformationManager.cs \
+ Parser/Structure.cs \
+ Parser/Tag.cs \
+ Parser/TagDatabaseManager.cs \
+ Parser/Typedef.cs \
+ Parser/Union.cs \
+ Parser/Variable.cs \
+ Project/ProjectPackage.cs \
+ Project/ProjectPackageCollection.cs \
+ Project/ProjectPackageEventArgs.cs \
+ Project/ValaCompilationParameters.cs \
+ Project/ValaProject.cs \
+ Project/ValaProjectBinding.cs \
+ Project/ValaProjectConfiguration.cs \
+ Project/ValaProjectServiceExtension.cs \
+ ProjectPad/ProjectNodeExtension.cs \
+ ProjectPad/ProjectPackageNodeBuilder.cs \
+ ProjectPad/ProjectPackagesFolderNodeBuilder.cs \
+ ProjectPad/ProjectReferencesExtension.cs \
+ ValaLanguageBinding.cs
+
+RES = \
+ gtk-gui/gui.stetic \
+ gtk-gui/objects.xml \
+ icons/Icons.16x16.PrivateUnion \
+ icons/Icons.16x16.ProjectReference \
+ icons/Icons.16x16.ProtectedUnion \
+ icons/Icons.16x16.Union \
+ icons/text-x-vala.16x16.png \
+ icons/text-x-vala.24x24.png \
+ icons/text-x-vala.32x32.png \
+ icons/text-x-vala.48x48.png \
+ icons/vala-icon-32.png \
+ templates/ConsoleValaProject.xpt.xml \
+ templates/EmptyValaProject.xpt.xml \
+ templates/EmptyValaSourceFile.xft.xml \
+ templates/SharedLibraryValaProject.xpt.xml \
+ templates/ValaTestFixture.xpt.xml \
+ ValaBinding.addin.xml
+
+LOCAL_PKGCONFIG = PKG_CONFIG_PATH=../../local-config:$$PKG_CONFIG_PATH
+valabindinglibdir = $(prefix)/lib/monodevelop/AddIns/BackendBindings
+valabindinglib_DATA = $(ASSEMBLY)
+CLEANFILES = $(ASSEMBLY) $(ASSEMBLY).mdb
+EXTRA_DIST = $(FILES) $(RES)
+
+# include $(top_srcdir)/Makefile.include
+build_sources = $(addprefix $(srcdir)/, $(FILES)) $(GENERATED_FILES)
+build_resources = $(addprefix $(srcdir)/, $(RES))
+build_test_sources = $(addprefix $(srcdir)/, $(TESTFILES)) $(GENERATED_FILES)
+all: all-am
+
+.SUFFIXES:
+am--refresh:
+ @:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
+ cd $(srcdir) && $(AUTOMAKE) --gnu \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+install-valabindinglibDATA: $(valabindinglib_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(valabindinglibdir)" || $(MKDIR_P) "$(DESTDIR)$(valabindinglibdir)"
+ @list='$(valabindinglib_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(valabindinglibDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(valabindinglibdir)/$$f'"; \
+ $(valabindinglibDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(valabindinglibdir)/$$f"; \
+ done
+
+uninstall-valabindinglibDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(valabindinglib_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(valabindinglibdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(valabindinglibdir)/$$f"; \
+ done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ test -d $(distdir) || mkdir $(distdir)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r $(distdir)
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+dist-lzma: distdir
+ tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+ $(am__remove_distdir)
+
+dist-tarZ: distdir
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__remove_distdir)
+
+dist-shar: distdir
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__remove_distdir)
+
+dist dist-all: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.lzma*) \
+ unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir); chmod a+w $(distdir)
+ mkdir $(distdir)/_build
+ mkdir $(distdir)/_inst
+ chmod a-w $(distdir)
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && cd $(distdir)/_build \
+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+ $(am__remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+ @cd $(distuninstallcheck_dir) \
+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(valabindinglibdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-valabindinglibDATA
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-valabindinglibDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am am--refresh check check-am clean clean-generic dist \
+ dist-all dist-bzip2 dist-gzip dist-lzma dist-shar dist-tarZ \
+ dist-zip distcheck distclean distclean-generic distcleancheck \
+ distdir distuninstallcheck dvi dvi-am html html-am info \
+ info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip install-valabindinglibDATA \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am uninstall uninstall-am \
+ uninstall-valabindinglibDATA
+
+
+all: $(ASSEMBLY)
+
+$(ASSEMBLY): $(build_sources) $(build_resources)
+ mkdir -p $(ADDIN_BUILD)
+ $(LOCAL_PKGCONFIG) $(CSC) $(CSC_FLAGS) -debug -out:$@ -target:library $(REFS) \
+ $(build_resources:%=/resource:%) $(build_sources)
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..e69de29
diff --git a/Navigation/ClassNodeBuilder.cs b/Navigation/ClassNodeBuilder.cs
new file mode 100644
index 0000000..55c6f95
--- /dev/null
+++ b/Navigation/ClassNodeBuilder.cs
@@ -0,0 +1,142 @@
+//
+// ClassNodeBuilder.cs
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Mono.Addins;
+
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Ide.Gui.Pads;
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Projects;
+using MonoDevelop.Ide.Gui.Components;
+
+using MonoDevelop.ValaBinding.Parser;
+
+namespace MonoDevelop.ValaBinding.Navigation
+{
+ public class ClassNodeBuilder : TypeNodeBuilder
+ {
+ public override Type NodeDataType {
+ get { return typeof(Class); }
+ }
+
+ public override Type CommandHandlerType {
+ get { return typeof(LanguageItemCommandHandler); }
+ }
+
+ public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
+ {
+ return ((Class)dataObject).Name;
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder,
+ object dataObject,
+ ref string label,
+ ref Gdk.Pixbuf icon,
+ ref Gdk.Pixbuf closedIcon)
+ {
+ Class c = (Class)dataObject;
+
+ label = c.Name;
+
+ switch (c.Access)
+ {
+ case AccessModifier.Public:
+ icon = Context.GetIcon (Stock.Class);
+ break;
+ case AccessModifier.Protected:
+ icon = Context.GetIcon (Stock.ProtectedClass);
+ break;
+ case AccessModifier.Private:
+ icon = Context.GetIcon (Stock.PrivateClass);
+ break;
+ }
+ }
+
+ public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject)
+ {
+ ValaProject p = treeBuilder.GetParentDataItem (typeof(ValaProject), false) as ValaProject;
+
+ if (p == null) return;
+
+ ProjectInformation info = ProjectInformationManager.Instance.Get (p);
+
+ bool publicOnly = treeBuilder.Options["PublicApiOnly"];
+ Class thisClass = (Class)dataObject;
+
+ // Classes
+ foreach (Class c in info.Classes)
+ if (c.Parent != null && c.Parent.Equals (thisClass) && (!publicOnly || c.Access == AccessModifier.Public))
+ treeBuilder.AddChild (c);
+
+ // Structures
+ foreach (Structure s in info.Structures)
+ if (s.Parent != null && s.Parent.Equals (thisClass) && (!publicOnly || s.Access == AccessModifier.Public))
+ treeBuilder.AddChild (s);
+
+ // Unions
+ foreach (Union u in info.Unions)
+ if (u.Parent != null && u.Parent.Equals (thisClass) && (!publicOnly || u.Access == AccessModifier.Public))
+ treeBuilder.AddChild (u);
+
+ // Enumerations
+ foreach (Enumeration e in info.Enumerations)
+ if (e.Parent != null && e.Parent.Equals (thisClass) && (!publicOnly || e.Access == AccessModifier.Public))
+ treeBuilder.AddChild (e);
+
+ // Typedefs
+ foreach (Typedef t in info.Typedefs)
+ if (t.Parent != null && t.Parent.Equals (thisClass) && (!publicOnly || t.Access == AccessModifier.Public))
+ treeBuilder.AddChild (t);
+
+ // Functions
+ foreach (Function f in info.Functions)
+ if (f.Parent != null && f.Parent.Equals (thisClass) && (!publicOnly || f.Access == AccessModifier.Public))
+ treeBuilder.AddChild (f);
+
+ // Members
+ foreach (Member m in info.Members)
+ if (m.Parent != null && m.Parent.Equals (thisClass) && (!publicOnly || m.Access == AccessModifier.Public))
+ treeBuilder.AddChild (m);
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ return true;
+ }
+
+ public override int CompareObjects (ITreeNavigator thisNode, ITreeNavigator otherNode)
+ {
+ return -1;
+ }
+ }
+}
diff --git a/Navigation/ClassPadEventArgs.cs b/Navigation/ClassPadEventArgs.cs
new file mode 100644
index 0000000..8e46665
--- /dev/null
+++ b/Navigation/ClassPadEventArgs.cs
@@ -0,0 +1,53 @@
+//
+// ClassPadEventHandler.cs
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.ValaBinding.Navigation
+{
+ public delegate void ClassPadEventHandler (ClassPadEventArgs e);
+
+ public class ClassPadEventArgs : EventArgs
+ {
+ private Project project;
+
+ public ClassPadEventArgs (Project project)
+ {
+ this.project = project;
+ }
+
+ public Project Project {
+ get { return project; }
+ }
+ }
+}
diff --git a/Navigation/EnumerationNodeBuilder.cs b/Navigation/EnumerationNodeBuilder.cs
new file mode 100644
index 0000000..b724c02
--- /dev/null
+++ b/Navigation/EnumerationNodeBuilder.cs
@@ -0,0 +1,115 @@
+//
+// EnumerationNodeBuilder.cs
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Mono.Addins;
+
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Ide.Gui.Pads;
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Projects;
+using MonoDevelop.Ide.Gui.Components;
+
+using MonoDevelop.ValaBinding.Parser;
+
+namespace MonoDevelop.ValaBinding.Navigation
+{
+ public class EnumerationNodeBuilder : TypeNodeBuilder
+ {
+ public override Type NodeDataType {
+ get { return typeof(Enumeration); }
+ }
+
+ public override Type CommandHandlerType {
+ get { return typeof(LanguageItemCommandHandler); }
+ }
+
+ public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
+ {
+ return ((Enumeration)dataObject).Name;
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder,
+ object dataObject,
+ ref string label,
+ ref Gdk.Pixbuf icon,
+ ref Gdk.Pixbuf closedIcon)
+ {
+ Enumeration e = (Enumeration)dataObject;
+
+ label = e.Name;
+
+ switch (e.Access)
+ {
+ case AccessModifier.Public:
+ icon = Context.GetIcon (Stock.Enum);
+ break;
+ case AccessModifier.Protected:
+ icon = Context.GetIcon (Stock.ProtectedEnum);
+ break;
+ case AccessModifier.Private:
+ icon = Context.GetIcon (Stock.PrivateEnum);
+ break;
+ }
+ }
+
+ public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject)
+ {
+ ValaProject p = treeBuilder.GetParentDataItem (typeof(ValaProject), false) as ValaProject;
+
+ if (p == null) return;
+
+ ProjectInformation info = ProjectInformationManager.Instance.Get (p);
+
+ Enumeration thisEnumeration = (Enumeration)dataObject;
+
+ // Enumerators
+ foreach (Enumerator e in info.Enumerators)
+ if (e.Parent != null && e.Parent.Equals (thisEnumeration))
+ treeBuilder.AddChild (e);
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ return true;
+ }
+
+ public override int CompareObjects (ITreeNavigator thisNode, ITreeNavigator otherNode)
+ {
+ if (otherNode.DataItem is Structure)
+ return 1;
+ else
+ return -1;
+ }
+ }
+}
+
diff --git a/Navigation/EnumeratorNodeBuilder.cs b/Navigation/EnumeratorNodeBuilder.cs
new file mode 100644
index 0000000..3fee07e
--- /dev/null
+++ b/Navigation/EnumeratorNodeBuilder.cs
@@ -0,0 +1,83 @@
+//
+// EnumeratorNodeBuilder.cs
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Mono.Addins;
+
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Ide.Gui.Pads;
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Projects;
+using MonoDevelop.Ide.Gui.Components;
+
+using MonoDevelop.ValaBinding.Parser;
+
+namespace MonoDevelop.ValaBinding.Navigation
+{
+ public class EnumeratorNodeBuilder : TypeNodeBuilder
+ {
+ public override Type NodeDataType {
+ get { return typeof(Enumerator); }
+ }
+
+ public override Type CommandHandlerType {
+ get { return typeof(LanguageItemCommandHandler); }
+ }
+
+ public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
+ {
+ return ((Enumerator)dataObject).Name;
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder,
+ object dataObject,
+ ref string label,
+ ref Gdk.Pixbuf icon,
+ ref Gdk.Pixbuf closedIcon)
+ {
+ Enumerator e = (Enumerator)dataObject;
+
+ label = e.Name;
+ icon = Context.GetIcon (Stock.Literal);
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ return false;
+ }
+
+ public override int CompareObjects (ITreeNavigator thisNode, ITreeNavigator otherNode)
+ {
+ return DefaultSort;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Navigation/FunctionNodeBuilder.cs b/Navigation/FunctionNodeBuilder.cs
new file mode 100644
index 0000000..3681c05
--- /dev/null
+++ b/Navigation/FunctionNodeBuilder.cs
@@ -0,0 +1,99 @@
+//
+// FunctionNodeBuilder.cs
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+
+using Mono.Addins;
+
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Ide.Gui.Pads;
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Projects;
+using MonoDevelop.Ide.Gui.Components;
+
+using MonoDevelop.ValaBinding.Parser;
+
+namespace MonoDevelop.ValaBinding.Navigation
+{
+ public class FunctionNodeBuilder : TypeNodeBuilder
+ {
+ public override Type NodeDataType {
+ get { return typeof(Function); }
+ }
+
+ public override Type CommandHandlerType {
+ get { return typeof(LanguageItemCommandHandler); }
+ }
+
+ public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
+ {
+ return ((Function)dataObject).Name;
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder,
+ object dataObject,
+ ref string label,
+ ref Gdk.Pixbuf icon,
+ ref Gdk.Pixbuf closedIcon)
+ {
+ Function f = (Function)dataObject;
+
+ label = f.Name;
+
+ switch (f.Access)
+ {
+ case AccessModifier.Public:
+ icon = Context.GetIcon (Stock.Method);
+ break;
+ case AccessModifier.Protected:
+ icon = Context.GetIcon (Stock.ProtectedMethod);
+ break;
+ case AccessModifier.Private:
+ icon = Context.GetIcon (Stock.PrivateMethod);
+ break;
+ }
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ return false;
+ }
+
+ public override int CompareObjects (ITreeNavigator thisNode, ITreeNavigator otherNode)
+ {
+ if (otherNode.DataItem is Typedef)
+ return 1;
+ else
+ return -1;
+ }
+ }
+}
diff --git a/Navigation/GlobalsNodeBuilder.cs b/Navigation/GlobalsNodeBuilder.cs
new file mode 100644
index 0000000..d1737f1
--- /dev/null
+++ b/Navigation/GlobalsNodeBuilder.cs
@@ -0,0 +1,138 @@
+//
+// GlobalsNodeBuilder.cs
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Mono.Addins;
+
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Ide.Gui.Pads;
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Projects;
+using MonoDevelop.Ide.Gui.Components;
+
+using MonoDevelop.ValaBinding.Parser;
+
+namespace MonoDevelop.ValaBinding.Navigation
+{
+ public class Globals
+ {
+ private Project project;
+
+ public Globals (Project project)
+ {
+ this.project = project;
+ }
+
+ public Project Project {
+ get { return project; }
+ }
+ }
+
+ public class GlobalsNodeBuilder : TypeNodeBuilder
+ {
+ public override Type NodeDataType {
+ get { return typeof(Globals); }
+ }
+
+ public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
+ {
+ return "Globals";
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder,
+ object dataObject,
+ ref string label,
+ ref Gdk.Pixbuf icon,
+ ref Gdk.Pixbuf closedIcon)
+ {
+ label = "Globals";
+ icon = Context.GetIcon (Stock.OpenFolder);
+ closedIcon = Context.GetIcon (Stock.ClosedFolder);
+ }
+
+ public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject)
+ {
+ ValaProject p = treeBuilder.GetParentDataItem (typeof(ValaProject), false) as ValaProject;
+
+ if (p == null) return;
+
+ ProjectInformation info = ProjectInformationManager.Instance.Get (p);
+
+ // Classes
+ foreach (Class c in info.Classes)
+ if (c.Parent == null)
+ treeBuilder.AddChild (c);
+
+ // Structures
+ foreach (Structure s in info.Structures)
+ if (s.Parent == null)
+ treeBuilder.AddChild (s);
+
+ // Unions
+ foreach (Union u in info.Unions)
+ if (u.Parent == null)
+ treeBuilder.AddChild (u);
+
+ // Enumerations
+ foreach (Enumeration e in info.Enumerations)
+ if (e.Parent == null)
+ treeBuilder.AddChild (e);
+
+ // Typedefs
+ foreach (Typedef t in info.Typedefs)
+ if (t.Parent == null)
+ treeBuilder.AddChild (t);
+
+ // Functions
+ foreach (Function f in info.Functions)
+ if (f.Parent == null)
+ treeBuilder.AddChild (f);
+
+ // Variables
+ foreach (Variable v in info.Variables)
+ treeBuilder.AddChild (v);
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ return true;
+ }
+
+ public override int CompareObjects (ITreeNavigator thisNode, ITreeNavigator otherNode)
+ {
+ if (otherNode.DataItem is Structure)
+ return 1;
+ else
+ return -1;
+ }
+ }
+}
diff --git a/Navigation/LanguageItemCommandHandler.cs b/Navigation/LanguageItemCommandHandler.cs
new file mode 100644
index 0000000..dd517e4
--- /dev/null
+++ b/Navigation/LanguageItemCommandHandler.cs
@@ -0,0 +1,72 @@
+//
+// FunctionNodeBuilder.cs
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+
+using Mono.Addins;
+
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Ide.Gui.Pads;
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Projects;
+using MonoDevelop.Ide.Gui.Components;
+
+using MonoDevelop.ValaBinding.Parser;
+
+namespace MonoDevelop.ValaBinding.Navigation
+{
+ public class LanguageItemCommandHandler : NodeCommandHandler
+ {
+ public override void ActivateItem ()
+ {
+ LanguageItem item = (LanguageItem)CurrentNode.DataItem;
+
+ Document doc = IdeApp.Workbench.OpenDocument (item.File);
+
+ int lineNum = 0;
+ string line;
+ bool isMacro = item is Macro;
+ StringReader reader = new StringReader (doc.TextEditor.Text);
+
+ while ((line = reader.ReadLine ()) != null) {
+ lineNum++;
+
+ if (line.Equals (item.Pattern) || (isMacro && line.StartsWith (item.Pattern))) {
+ doc.TextEditor.JumpTo (lineNum, line.Length + 1);
+ break;
+ }
+ }
+
+ reader.Close ();
+ }
+ }
+}
diff --git a/Navigation/LanguageItemEventArgs.cs b/Navigation/LanguageItemEventArgs.cs
new file mode 100644
index 0000000..8066bd8
--- /dev/null
+++ b/Navigation/LanguageItemEventArgs.cs
@@ -0,0 +1,53 @@
+//
+// LanguageItemEventArgs.cs
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using MonoDevelop.ValaBinding.Parser;
+
+namespace MonoDevelop.ValaBinding.Navigation
+{
+ public delegate void LanguageItemEventHandler (object sender, LanguageItemEventArgs e);
+
+ public class LanguageItemEventArgs : EventArgs
+ {
+ LanguageItem item;
+
+ public LanguageItemEventArgs (LanguageItem item)
+ {
+ this.item = item;
+ }
+
+ public LanguageItem Item {
+ get { return item; }
+ }
+ }
+}
diff --git a/Navigation/MacroDefinitionsNodeBuilder.cs b/Navigation/MacroDefinitionsNodeBuilder.cs
new file mode 100644
index 0000000..d48f07a
--- /dev/null
+++ b/Navigation/MacroDefinitionsNodeBuilder.cs
@@ -0,0 +1,107 @@
+//
+// MacroDefinitionsNodeBuilder.cs
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Mono.Addins;
+
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Ide.Gui.Pads;
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Projects;
+using MonoDevelop.Ide.Gui.Components;
+
+using MonoDevelop.ValaBinding.Parser;
+
+namespace MonoDevelop.ValaBinding.Navigation
+{
+ public class MacroDefinitions
+ {
+ private Project project;
+
+ public MacroDefinitions (Project project)
+ {
+ this.project = project;
+ }
+
+ public Project Project {
+ get { return project; }
+ }
+ }
+
+ public class MacroDefinitionsNodeBuilder : TypeNodeBuilder
+ {
+ public override Type NodeDataType {
+ get { return typeof(MacroDefinitions); }
+ }
+
+ public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
+ {
+ return "Macro Definitions";
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder,
+ object dataObject,
+ ref string label,
+ ref Gdk.Pixbuf icon,
+ ref Gdk.Pixbuf closedIcon)
+ {
+ label = "Macro Definitions";
+ icon = Context.GetIcon (Stock.OpenFolder);
+ closedIcon = Context.GetIcon (Stock.ClosedFolder);
+ }
+
+ public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject)
+ {
+ ValaProject p = treeBuilder.GetParentDataItem (typeof(ValaProject), false) as ValaProject;
+
+ if (p == null) return;
+
+ ProjectInformation info = ProjectInformationManager.Instance.Get (p);
+
+ foreach (Macro m in info.Macros)
+ treeBuilder.AddChild (m);
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ return true;
+ }
+
+ public override int CompareObjects (ITreeNavigator thisNode, ITreeNavigator otherNode)
+ {
+ if (otherNode.DataItem is Globals)
+ return 1;
+ else
+ return -1;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Navigation/MacroNodeBuilder.cs b/Navigation/MacroNodeBuilder.cs
new file mode 100644
index 0000000..f165742
--- /dev/null
+++ b/Navigation/MacroNodeBuilder.cs
@@ -0,0 +1,79 @@
+//
+// MacroNodeBuilder.cs
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+
+using Mono.Addins;
+
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Ide.Gui.Pads;
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Projects;
+using MonoDevelop.Ide.Gui.Components;
+
+using MonoDevelop.ValaBinding.Parser;
+
+namespace MonoDevelop.ValaBinding.Navigation
+{
+ public class MacroNodeBuilder : TypeNodeBuilder
+ {
+ public override Type NodeDataType {
+ get { return typeof(Macro); }
+ }
+
+ public override Type CommandHandlerType {
+ get { return typeof(LanguageItemCommandHandler); }
+ }
+
+ public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
+ {
+ return ((Macro)dataObject).Name;
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder,
+ object dataObject,
+ ref string label,
+ ref Gdk.Pixbuf icon,
+ ref Gdk.Pixbuf closedIcon)
+ {
+ Macro m = (Macro)dataObject;
+
+ label = m.Name;
+ icon = Context.GetIcon (Stock.Literal);
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ return false;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Navigation/MemberNodeBuilder.cs b/Navigation/MemberNodeBuilder.cs
new file mode 100644
index 0000000..7df2bf2
--- /dev/null
+++ b/Navigation/MemberNodeBuilder.cs
@@ -0,0 +1,96 @@
+//
+// FunctionNodeBuilder.cs
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+
+using Mono.Addins;
+
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Ide.Gui.Pads;
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Projects;
+using MonoDevelop.Ide.Gui.Components;
+
+using MonoDevelop.ValaBinding.Parser;
+
+namespace MonoDevelop.ValaBinding.Navigation
+{
+ public class MemberNodeBuilder : TypeNodeBuilder
+ {
+ public override Type NodeDataType {
+ get { return typeof(Member); }
+ }
+
+ public override Type CommandHandlerType {
+ get { return typeof(LanguageItemCommandHandler); }
+ }
+
+ public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
+ {
+ return ((Member)dataObject).Name;
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder,
+ object dataObject,
+ ref string label,
+ ref Gdk.Pixbuf icon,
+ ref Gdk.Pixbuf closedIcon)
+ {
+ Member m = (Member)dataObject;
+
+ label = m.Name;
+
+ switch (m.Access)
+ {
+ case AccessModifier.Public:
+ icon = Context.GetIcon (Stock.Field);
+ break;
+ case AccessModifier.Protected:
+ icon = Context.GetIcon (Stock.ProtectedField);
+ break;
+ case AccessModifier.Private:
+ icon = Context.GetIcon (Stock.PrivateField);
+ break;
+ }
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ return false;
+ }
+
+ public override int CompareObjects (ITreeNavigator thisNode, ITreeNavigator otherNode)
+ {
+ return 1;
+ }
+ }
+}
diff --git a/Navigation/NamespaceNodeBuilder.cs b/Navigation/NamespaceNodeBuilder.cs
new file mode 100644
index 0000000..9417816
--- /dev/null
+++ b/Navigation/NamespaceNodeBuilder.cs
@@ -0,0 +1,135 @@
+//
+// NamespaceNodeBuilder.cs
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Mono.Addins;
+
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Ide.Gui.Pads;
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Projects;
+using MonoDevelop.Ide.Gui.Components;
+
+using MonoDevelop.ValaBinding.Parser;
+
+namespace MonoDevelop.ValaBinding.Navigation
+{
+ public class NamespaceNodeBuilder : TypeNodeBuilder
+ {
+ public override Type NodeDataType {
+ get { return typeof(Namespace); }
+ }
+
+ public override Type CommandHandlerType {
+ get { return typeof (LanguageItemCommandHandler); }
+ }
+
+ public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
+ {
+ if (thisNode.Options["NestedNamespaces"])
+ return ((Namespace)dataObject).Name;
+ else
+ return ((Namespace)dataObject).FullName;
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder,
+ object dataObject,
+ ref string label,
+ ref Gdk.Pixbuf icon,
+ ref Gdk.Pixbuf closedIcon)
+ {
+ if (treeBuilder.Options["NestedNamespaces"])
+ label = ((Namespace)dataObject).Name;
+ else
+ label = ((Namespace)dataObject).FullName;
+
+ icon = Context.GetIcon (Stock.NameSpace);
+ }
+
+ public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject)
+ {
+ ValaProject p = treeBuilder.GetParentDataItem (typeof(ValaProject), false) as ValaProject;
+
+ if (p == null) return;
+
+ ProjectInformation info = ProjectInformationManager.Instance.Get (p);
+
+ Namespace thisNamespace = ((Namespace)dataObject);
+
+ // Namespaces
+ if (treeBuilder.Options["NestedNamespaces"])
+ foreach (Namespace n in info.Namespaces)
+ if (n.Parent != null && n.Parent.Equals (thisNamespace))
+ treeBuilder.AddChild (n);
+
+ // Classes
+ foreach (Class c in info.Classes)
+ if (c.Parent != null && c.Parent.Equals (thisNamespace))
+ treeBuilder.AddChild (c);
+
+ // Structures
+ foreach (Structure s in info.Structures)
+ if (s.Parent != null && s.Parent.Equals (thisNamespace))
+ treeBuilder.AddChild (s);
+
+ // Unions
+ foreach (Union u in info.Unions)
+ if (u.Parent != null && u.Parent.Equals (thisNamespace))
+ treeBuilder.AddChild (u);
+
+ // Enumerations
+ foreach (Enumeration e in info.Enumerations)
+ if (e.Parent != null && e.Parent.Equals (thisNamespace))
+ treeBuilder.AddChild (e);
+
+ // Typedefs
+ foreach (Typedef t in info.Typedefs)
+ if (t.Parent != null && t.Parent.Equals (thisNamespace))
+ treeBuilder.AddChild (t);
+
+ // Functions
+ foreach (Function f in info.Functions)
+ if (f.Parent != null && f.Parent.Equals (thisNamespace))
+ treeBuilder.AddChild (f);
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ return true;
+ }
+
+ public override int CompareObjects (ITreeNavigator thisNode, ITreeNavigator otherNode)
+ {
+ return -1;
+ }
+ }
+}
diff --git a/Navigation/ProjectNodeBuilderExtension.cs b/Navigation/ProjectNodeBuilderExtension.cs
new file mode 100644
index 0000000..82486a5
--- /dev/null
+++ b/Navigation/ProjectNodeBuilderExtension.cs
@@ -0,0 +1,190 @@
+//
+// ProjectNodeBuilderExtension.cs
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+using System.Threading;
+
+using Mono.Addins;
+
+using MonoDevelop.Projects;
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Ide.Gui.Pads;
+using MonoDevelop.Core.Execution;
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Core;
+using MonoDevelop.Components.Commands;
+using MonoDevelop.Ide.Gui.Components;
+
+using MonoDevelop.ValaBinding;
+using MonoDevelop.ValaBinding.Parser;
+
+namespace MonoDevelop.ValaBinding.Navigation
+{
+ public class ProjectNodeBuilderExtension : NodeBuilderExtension
+ {
+ public ClassPadEventHandler finishedBuildingTreeHandler;
+
+ public override bool CanBuildNode (Type dataType)
+ {
+ return typeof(ValaProject).IsAssignableFrom (dataType);
+ }
+
+ public override Type CommandHandlerType {
+ get { return typeof(ProjectNodeBuilderExtensionHandler); }
+ }
+
+ protected override void Initialize ()
+ {
+ finishedBuildingTreeHandler = (ClassPadEventHandler)DispatchService.GuiDispatch (new ClassPadEventHandler (OnFinishedBuildingTree));
+
+ TagDatabaseManager.Instance.FileUpdated += finishedBuildingTreeHandler;
+ }
+
+ public override void Dispose ()
+ {
+ TagDatabaseManager.Instance.FileUpdated -= finishedBuildingTreeHandler;
+ }
+
+ public static void CreatePadTree (object o)
+ {
+ ValaProject p = o as ValaProject;
+ if (o == null) return;
+
+ try {
+ foreach (ProjectFile f in p.Files) {
+ if (f.BuildAction == BuildAction.Compile)
+ TagDatabaseManager.Instance.UpdateFileTags (p, f.Name);
+ }
+ foreach (ProjectPackage package in p.Packages) {
+ TagDatabaseManager.Instance.UpdateFileTags(p, package.File);
+ }
+ } catch (IOException) {
+ return;
+ }
+ }
+
+ private bool check_ctags = false;
+ private bool have_ctags = false;
+
+ private void CheckForCtags ()
+ {
+ check_ctags = true;
+
+ try {
+ ProcessWrapper p = Runtime.ProcessService.StartProcess ("ctags", "--version", null, null);
+ p.WaitForOutput ();
+ have_ctags = true;
+ } catch {
+ have_ctags = false;
+ }
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder,
+ object dataObject,
+ ref string label,
+ ref Gdk.Pixbuf icon,
+ ref Gdk.Pixbuf closedIcon)
+ {
+ if (!check_ctags)
+ CheckForCtags ();
+
+ ValaProject p = dataObject as ValaProject;
+
+ if (p == null)
+ return;
+
+ if (!have_ctags) {
+ label = string.Format ("{0} <span foreground='red' size='small'>(CTags not installed)</span>", p.Name);
+ }
+ }
+
+
+ public override void BuildChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ ValaProject p = dataObject as ValaProject;
+
+ if (p == null) return;
+
+ bool nestedNamespaces = builder.Options["NestedNamespaces"];
+
+ ProjectInformation info = ProjectInformationManager.Instance.Get (p);
+
+ // Namespaces
+ foreach (Namespace n in info.Namespaces) {
+ if (nestedNamespaces) {
+ if (n.Parent == null) {
+ builder.AddChild (n);
+ }
+ } else {
+ builder.AddChild (n);
+ }
+ }
+
+// // Globals
+// builder.AddChild (info.Globals);
+//
+// // Macro Definitions
+// builder.AddChild (info.MacroDefinitions);
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ return true;
+ }
+
+ private void OnFinishedBuildingTree (ClassPadEventArgs e)
+ {
+ ITreeBuilder builder = Context.GetTreeBuilder (e.Project);
+ if (null != builder)
+ builder.UpdateChildren ();
+ }
+ }
+
+ public class ProjectNodeBuilderExtensionHandler : NodeCommandHandler
+ {
+ [CommandHandler (ValaProjectCommands.UpdateClassPad)]
+ public void UpdateClassPad ()
+ {
+ ValaProject p = CurrentNode.DataItem as ValaProject;
+
+ if (p == null) return;
+
+ foreach (ProjectFile f in p.Files) {
+ if (f.BuildAction == BuildAction.Compile)
+ TagDatabaseManager.Instance.UpdateFileTags (p, f.Name);
+ }
+ foreach (ProjectPackage package in p.Packages) {
+ TagDatabaseManager.Instance.UpdateFileTags(p, package.File);
+ }
+ }
+ }
+}
diff --git a/Navigation/StructureNodeBuilder.cs b/Navigation/StructureNodeBuilder.cs
new file mode 100644
index 0000000..d806085
--- /dev/null
+++ b/Navigation/StructureNodeBuilder.cs
@@ -0,0 +1,146 @@
+//
+// StructureNodeBuilder.cs
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+
+using Mono.Addins;
+
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Ide.Gui.Pads;
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Projects;
+using MonoDevelop.Ide.Gui.Components;
+
+using MonoDevelop.ValaBinding.Parser;
+
+namespace MonoDevelop.ValaBinding.Navigation
+{
+ public class StructureNodeBuilder : TypeNodeBuilder
+ {
+ public override Type NodeDataType {
+ get { return typeof(Structure); }
+ }
+
+ public override Type CommandHandlerType {
+ get { return typeof(LanguageItemCommandHandler); }
+ }
+
+ public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
+ {
+ return ((Structure)dataObject).Name;
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder,
+ object dataObject,
+ ref string label,
+ ref Gdk.Pixbuf icon,
+ ref Gdk.Pixbuf closedIcon)
+ {
+ Structure s = (Structure)dataObject;
+
+ label = s.Name;
+
+ switch (s.Access)
+ {
+ case AccessModifier.Public:
+ icon = Context.GetIcon (Stock.Struct);
+ break;
+ case AccessModifier.Protected:
+ icon = Context.GetIcon (Stock.ProtectedStruct);
+ break;
+ case AccessModifier.Private:
+ icon = Context.GetIcon (Stock.PrivateStruct);
+ break;
+ }
+ }
+
+ public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject)
+ {
+ ValaProject p = treeBuilder.GetParentDataItem (typeof(ValaProject), false) as ValaProject;
+
+ if (p == null) return;
+
+ bool publicOnly = treeBuilder.Options["PublicApiOnly"];
+ ProjectInformation info = ProjectInformationManager.Instance.Get (p);
+
+ Structure thisStruct = (Structure)dataObject;
+
+ // Classes
+ foreach (Class c in info.Classes)
+ if (c.Parent != null && c.Parent.Equals (thisStruct) && (!publicOnly || c.Access == AccessModifier.Public))
+ treeBuilder.AddChild (c);
+
+ // Structures
+ foreach (Structure s in info.Structures)
+ if (s.Parent != null && s.Parent.Equals (thisStruct) && (!publicOnly || s.Access == AccessModifier.Public))
+ treeBuilder.AddChild (s);
+
+ // Unions
+ foreach (Union u in info.Unions)
+ if (u.Parent != null && u.Parent.Equals (thisStruct) && (!publicOnly || u.Access == AccessModifier.Public))
+ treeBuilder.AddChild (u);
+
+ // Enumerations
+ foreach (Enumeration e in info.Enumerations)
+ if (e.Parent != null && e.Parent.Equals (thisStruct) && (!publicOnly || e.Access == AccessModifier.Public))
+ treeBuilder.AddChild (e);
+
+ // Typedefs
+ foreach (Typedef t in info.Typedefs)
+ if (t.Parent != null && t.Parent.Equals (thisStruct) && (!publicOnly || t.Access == AccessModifier.Public))
+ treeBuilder.AddChild (t);
+
+ // Functions
+ foreach (Function f in info.Functions)
+ if (f.Parent != null && f.Parent.Equals (thisStruct) && (!publicOnly || f.Access == AccessModifier.Public))
+ treeBuilder.AddChild (f);
+
+ // Members
+ foreach (Member m in info.Members)
+ if (m.Parent != null && m.Parent.Equals (thisStruct) && (!publicOnly || m.Access == AccessModifier.Public))
+ treeBuilder.AddChild (m);
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ return true;
+ }
+
+ public override int CompareObjects (ITreeNavigator thisNode, ITreeNavigator otherNode)
+ {
+ if (otherNode.DataItem is Class)
+ return 1;
+ else
+ return -1;
+ }
+ }
+}
diff --git a/Navigation/TypedefNodeBuilder.cs b/Navigation/TypedefNodeBuilder.cs
new file mode 100644
index 0000000..5fc9ff4
--- /dev/null
+++ b/Navigation/TypedefNodeBuilder.cs
@@ -0,0 +1,87 @@
+//
+// TypedefNodeBuilder.cs
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+
+using Mono.Addins;
+
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Ide.Gui.Pads;
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Projects;
+using MonoDevelop.Ide.Gui.Components;
+
+using MonoDevelop.ValaBinding.Parser;
+
+namespace MonoDevelop.ValaBinding.Navigation
+{
+ public class TypedefNodeBuilder : TypeNodeBuilder
+ {
+ public override Type NodeDataType {
+ get { return typeof(Typedef); }
+ }
+
+ public override Type CommandHandlerType {
+ get { return typeof(LanguageItemCommandHandler); }
+ }
+
+ public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
+ {
+ return ((Typedef)dataObject).Name;
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder,
+ object dataObject,
+ ref string label,
+ ref Gdk.Pixbuf icon,
+ ref Gdk.Pixbuf closedIcon)
+ {
+ Typedef t = (Typedef)dataObject;
+
+ label = t.Name;
+ icon = Context.GetIcon (Stock.Interface);
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ return false;
+ }
+
+ public override int CompareObjects (ITreeNavigator thisNode, ITreeNavigator otherNode)
+ {
+ if (otherNode.DataItem is Enumeration)
+ return 1;
+ else
+ return -1;
+ }
+ }
+}
diff --git a/Navigation/UnionNodeBuilder.cs b/Navigation/UnionNodeBuilder.cs
new file mode 100644
index 0000000..770441f
--- /dev/null
+++ b/Navigation/UnionNodeBuilder.cs
@@ -0,0 +1,146 @@
+//
+// UnionNodeBuilder.cs
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+using System.Reflection;
+
+using Mono.Addins;
+
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Ide.Gui.Pads;
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Projects;
+using MonoDevelop.Ide.Gui.Components;
+
+using MonoDevelop.ValaBinding.Parser;
+
+namespace MonoDevelop.ValaBinding.Navigation
+{
+ public class UnionNodeBuilder : TypeNodeBuilder
+ {
+ public override Type NodeDataType {
+ get { return typeof(Union); }
+ }
+
+ public override Type CommandHandlerType {
+ get { return typeof(LanguageItemCommandHandler); }
+ }
+
+ public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
+ {
+ return ((Union)dataObject).Name;
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder,
+ object dataObject,
+ ref string label,
+ ref Gdk.Pixbuf icon,
+ ref Gdk.Pixbuf closedIcon)
+ {
+ Union u = (Union)dataObject;
+
+ label = u.Name;
+
+ switch (u.Access)
+ {
+ case AccessModifier.Public:
+ icon = Context.GetIcon ("md-union");
+ break;
+ case AccessModifier.Protected:
+ icon = Context.GetIcon ("md-protected-union");
+ break;
+ case AccessModifier.Private:
+ icon = Context.GetIcon ("md-private-union");
+ break;
+ }
+ }
+
+ public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject)
+ {
+ ValaProject p = treeBuilder.GetParentDataItem (typeof(ValaProject), false) as ValaProject;
+
+ if (p == null) return;
+
+ ProjectInformation info = ProjectInformationManager.Instance.Get (p);
+
+ Union thisUnion = (Union)dataObject;
+
+ // Classes
+ foreach (Class c in info.Classes)
+ if (c.Parent != null && c.Parent.Equals (thisUnion))
+ treeBuilder.AddChild (c);
+
+ // Structures
+ foreach (Structure s in info.Structures)
+ if (s.Parent != null && s.Parent.Equals (thisUnion))
+ treeBuilder.AddChild (s);
+
+ // Unions
+ foreach (Union u in info.Unions)
+ if (u.Parent != null && u.Parent.Equals (thisUnion))
+ treeBuilder.AddChild (u);
+
+ // Enumerations
+ foreach (Enumeration e in info.Enumerations)
+ if (e.Parent != null && e.Parent.Equals (thisUnion))
+ treeBuilder.AddChild (e);
+
+ // Typedefs
+ foreach (Typedef t in info.Typedefs)
+ if (t.Parent != null && t.Parent.Equals (thisUnion))
+ treeBuilder.AddChild (t);
+
+ // Functions
+ foreach (Function f in info.Functions)
+ if (f.Parent != null && f.Parent.Equals (thisUnion))
+ treeBuilder.AddChild (f);
+
+ // Members
+ foreach (Member m in info.Members)
+ if (m.Parent != null && m.Parent.Equals (thisUnion))
+ treeBuilder.AddChild (m);
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ return true;
+ }
+
+ public override int CompareObjects (ITreeNavigator thisNode, ITreeNavigator otherNode)
+ {
+ if (otherNode.DataItem is Structure)
+ return 1;
+ else
+ return -1;
+ }
+ }
+}
diff --git a/Navigation/VariableNodeBuilder.cs b/Navigation/VariableNodeBuilder.cs
new file mode 100644
index 0000000..8afb78b
--- /dev/null
+++ b/Navigation/VariableNodeBuilder.cs
@@ -0,0 +1,99 @@
+//
+// VariableNodeBuilder.cs
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+
+using Mono.Addins;
+
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Ide.Gui.Pads;
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Projects;
+using MonoDevelop.Ide.Gui.Components;
+
+using MonoDevelop.ValaBinding.Parser;
+
+namespace MonoDevelop.ValaBinding.Navigation
+{
+ public class VariableNodeBuilder : TypeNodeBuilder
+ {
+ public override Type NodeDataType {
+ get { return typeof(Variable); }
+ }
+
+ public override Type CommandHandlerType {
+ get { return typeof(LanguageItemCommandHandler); }
+ }
+
+ public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
+ {
+ return ((Variable)dataObject).Name;
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder,
+ object dataObject,
+ ref string label,
+ ref Gdk.Pixbuf icon,
+ ref Gdk.Pixbuf closedIcon)
+ {
+ Variable v = (Variable)dataObject;
+
+ label = v.Name;
+
+ switch (v.Access)
+ {
+ case AccessModifier.Public:
+ icon = Context.GetIcon (Stock.Field);
+ break;
+ case AccessModifier.Protected:
+ icon = Context.GetIcon (Stock.ProtectedField);
+ break;
+ case AccessModifier.Private:
+ icon = Context.GetIcon (Stock.PrivateField);
+ break;
+ }
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ return false;
+ }
+
+ public override int CompareObjects (ITreeNavigator thisNode, ITreeNavigator otherNode)
+ {
+ if (otherNode.DataItem is Function)
+ return 1;
+ else
+ return -1;
+ }
+ }
+}
diff --git a/Parser/Class.cs b/Parser/Class.cs
new file mode 100644
index 0000000..c55e763
--- /dev/null
+++ b/Parser/Class.cs
@@ -0,0 +1,49 @@
+//
+// Class.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.ValaBinding.Parser
+{
+ public class Class : LanguageItem
+ {
+ public Class (Tag tag, Project project, string ctags_output) : base (tag, project)
+ {
+ if (GetNamespace (tag, ctags_output)) return;
+ if (GetClass (tag, ctags_output)) return;
+ if (GetStructure (tag, ctags_output)) return;
+ if (GetUnion (tag, ctags_output)) return;
+ }
+ }
+}
diff --git a/Parser/Enumeration.cs b/Parser/Enumeration.cs
new file mode 100644
index 0000000..c916ab4
--- /dev/null
+++ b/Parser/Enumeration.cs
@@ -0,0 +1,49 @@
+//
+// Enumeration.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.ValaBinding.Parser
+{
+ public class Enumeration : LanguageItem
+ {
+ public Enumeration (Tag tag, Project project, string ctags_output) : base (tag, project)
+ {
+ if (GetNamespace (tag, ctags_output)) return;
+ if (GetClass (tag, ctags_output)) return;
+ if (GetStructure (tag, ctags_output)) return;
+ if (GetUnion (tag, ctags_output)) return;
+ }
+ }
+}
diff --git a/Parser/Enumerator.cs b/Parser/Enumerator.cs
new file mode 100644
index 0000000..baeeb42
--- /dev/null
+++ b/Parser/Enumerator.cs
@@ -0,0 +1,46 @@
+//
+// Tag.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.ValaBinding.Parser
+{
+ public class Enumerator : LanguageItem
+ {
+ public Enumerator (Tag tag, Project project, string ctags_output) : base (tag, project)
+ {
+ GetEnumeration (tag, ctags_output);
+ }
+ }
+}
diff --git a/Parser/Function.cs b/Parser/Function.cs
new file mode 100644
index 0000000..6d550de
--- /dev/null
+++ b/Parser/Function.cs
@@ -0,0 +1,133 @@
+//
+// Function.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.ValaBinding.Parser
+{
+ public class Function : LanguageItem
+ {
+ private string[] parameters;
+ private string signature;
+ private bool is_const = false;
+
+ public Function (Tag tag, Project project, string ctags_output) : base (tag, project)
+ {
+ signature = tag.Signature;
+ ParseSignature (tag.Signature);
+
+ if (tag.Kind == TagKind.Prototype) {
+ Access = tag.Access;
+ if (GetNamespace (tag, ctags_output)) return;
+ if (GetClass (tag, ctags_output)) return;
+ if (GetStructure (tag, ctags_output)) return;
+ if (GetUnion (tag, ctags_output)) return;
+ } else {
+ // If it is not a prototype tag, we attempt to get the prototype tag
+ // we need the prototype tag because the implementation tag
+ // marks the belonging namespace as a if it were a class
+ // and it does not have the access field.
+ Tag prototypeTag = TagDatabaseManager.Instance.FindTag (Name, TagKind.Prototype, ctags_output);
+
+ if (prototypeTag == null) {
+ // It does not have a prototype tag which means it is inline
+ // and when it is inline it does have all the info we need
+
+ if (GetNamespace (tag, ctags_output)) return;
+ if (GetClass (tag, ctags_output)) return;
+ if (GetStructure (tag, ctags_output)) return;
+ if (GetUnion (tag, ctags_output)) return;
+
+ return;
+ }
+
+ // we need to re-get the access
+ Access = prototypeTag.Access;
+
+ if (GetNamespace (prototypeTag, ctags_output)) return;
+ if (GetClass (prototypeTag, ctags_output)) return;
+ if (GetStructure (prototypeTag, ctags_output)) return;
+ if (GetUnion (prototypeTag, ctags_output)) return;
+ }
+ }
+
+ private void ParseSignature (string signature)
+ {
+ if (null == signature) return;
+
+ string sig = signature;
+
+ if (signature.EndsWith ("const")) {
+ is_const = true;
+ sig = signature.Substring (0, signature.Length - 6);
+ sig = sig.Substring (1, sig.Length - 2);
+ } else {
+ sig = signature.Substring (1, signature.Length - 2);
+ }
+
+ parameters = sig.Split (',');
+
+ for (int i = 0; i < parameters.Length; i++)
+ parameters[i] = parameters[i].Trim ();
+ }
+
+ public string[] Parameters {
+ get { return parameters; }
+ }
+
+ public string Signature {
+ get { return signature; }
+ }
+
+ public bool IsConst {
+ get { return is_const; }
+ }
+
+ public override bool Equals (object o)
+ {
+ Function other = o as Function;
+
+ return (other != null &&
+ FullName == other.FullName &&
+ LanguageItem.Equals(Parent, other.Parent) &&
+ Project.Equals(other.Project) &&
+ Signature == other.Signature);
+ }
+
+ public override int GetHashCode ()
+ {
+ return base.GetHashCode () + parameters.GetHashCode ();
+ }
+ }
+}
diff --git a/Parser/LanguageItem.cs b/Parser/LanguageItem.cs
new file mode 100644
index 0000000..caa2e49
--- /dev/null
+++ b/Parser/LanguageItem.cs
@@ -0,0 +1,255 @@
+//
+// LanguageItem.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.IO;
+
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Projects;
+using MonoDevelop.Ide.Gui;
+
+namespace MonoDevelop.ValaBinding.Parser
+{
+ public class LanguageItem
+ {
+ private Project project;
+ private string name;
+ private string file;
+ private string pattern;
+ private AccessModifier access;
+ private LanguageItem parent;
+
+ public LanguageItem (Tag tag, Project project)
+ {
+ this.project = project;
+ this.name = tag.Name;
+ this.file = tag.File;
+ this.pattern = tag.Pattern;
+ this.access = tag.Access;
+ }
+
+ /// <summary>
+ /// Attempts to get the namespace encompassing the function
+ /// <remarks>
+ /// If it's a method then, even if the class it belongs to
+ /// has a namespace, the method will not have a namespace, since
+ /// it should be placed under the class node and not the namespace node
+ /// </remarks>
+ /// <returns>true on success and false if it does not have one.</returns>
+ /// </summary>
+ protected bool GetNamespace (Tag tag, string ctags_output)
+ {
+ string n;
+
+ if ((n = tag.Namespace) != null) {
+ int index = n.LastIndexOf (':');
+
+ if (index > 0)
+ n = n.Substring (index + 1);
+
+ try {
+ Tag namespaceTag = TagDatabaseManager.Instance.FindTag (
+ n, TagKind.Namespace, ctags_output);
+
+ if (namespaceTag != null)
+ parent = new Namespace (namespaceTag, project, ctags_output);
+
+ } catch (IOException ex) {
+ MessageService.ShowException (ex);
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
+ protected bool GetClass (Tag tag, string ctags_output)
+ {
+ string c;
+
+ if ((c = tag.Class) != null) {
+ int index = c.LastIndexOf (':');
+
+ if (index > 0)
+ c = c.Substring (index + 1);
+
+ try {
+ Tag classTag = TagDatabaseManager.Instance.FindTag (
+ c, TagKind.Class, ctags_output);
+
+ if (classTag != null)
+ parent = new Class (classTag, project, ctags_output);
+
+ } catch (IOException ex) {
+ MessageService.ShowException (ex);
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
+ protected bool GetStructure (Tag tag, string ctags_output)
+ {
+ string s;
+
+ if ((s = tag.Structure) != null) {
+ int index = s.LastIndexOf (':');
+
+ if (index > 0)
+ s = s.Substring (index + 1);
+
+ try {
+ Tag classTag = TagDatabaseManager.Instance.FindTag (
+ s, TagKind.Structure, ctags_output);
+
+ if (classTag != null)
+ parent = new Structure (classTag, project, ctags_output);
+
+ } catch (IOException ex) {
+ MessageService.ShowException (ex);
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
+ protected bool GetEnumeration (Tag tag, string ctags_output)
+ {
+ string e;
+
+ if ((e = tag.Enum) != null) {
+ int index = e.LastIndexOf (':');
+
+ if (index > 0)
+ e = e.Substring (index + 1);
+
+ try {
+ Tag enumTag = TagDatabaseManager.Instance.FindTag (
+ e, TagKind.Enumeration, ctags_output);
+
+ if (enumTag != null)
+ parent = new Enumeration (enumTag, project, ctags_output);
+
+ } catch (IOException ex) {
+ MessageService.ShowException (ex);
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
+ protected bool GetUnion (Tag tag, string ctags_output)
+ {
+ string u;
+
+ if ((u = tag.Union) != null) {
+ int index = u.LastIndexOf (':');
+
+ if (index > 0)
+ u = u.Substring (index + 1);
+
+ try {
+ Tag unionTag = TagDatabaseManager.Instance.FindTag (
+ u, TagKind.Union, ctags_output);
+
+ if (unionTag != null)
+ parent = new Union (unionTag, project, ctags_output);
+
+ } catch (IOException ex) {
+ MessageService.ShowException (ex);
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
+ public Project Project {
+ get { return project; }
+ }
+
+ public LanguageItem Parent {
+ get { return parent; }
+ set { parent = value; }
+ }
+
+ public string Name {
+ get { return name; }
+ }
+
+ public string FullName {
+ get {
+ if (Parent != null)
+ return Parent.FullName + "." + Name;
+ return Name;
+ }
+ }
+
+ public string File {
+ get { return file; }
+ }
+
+ public string Pattern {
+ get { return pattern; }
+ }
+
+ public AccessModifier Access {
+ get { return access; }
+ set { access = value; }
+ }
+
+ public override bool Equals (object o)
+ {
+ LanguageItem other = o as LanguageItem;
+
+ if (other != null &&
+ other.FullName.Equals (FullName) &&
+ other.Project.Equals (project))
+ return true;
+
+ return false;
+ }
+
+ public override int GetHashCode ()
+ {
+ return (name + file + pattern + project.Name).GetHashCode ();
+ }
+ }
+}
diff --git a/Parser/Local.cs b/Parser/Local.cs
new file mode 100644
index 0000000..3b3aa6b
--- /dev/null
+++ b/Parser/Local.cs
@@ -0,0 +1,48 @@
+//
+// Local.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.ValaBinding.Parser
+{
+ /// <summary>
+ /// Class for local variables
+ /// </summary>
+ public class Local : Member
+ {
+ public Local (Tag tag, Project project, string ctags_output) : base (tag, project, ctags_output)
+ {
+ }
+ }
+}
diff --git a/Parser/Macro.cs b/Parser/Macro.cs
new file mode 100644
index 0000000..750f78a
--- /dev/null
+++ b/Parser/Macro.cs
@@ -0,0 +1,45 @@
+//
+// Macro.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.ValaBinding.Parser
+{
+ public class Macro : LanguageItem
+ {
+ public Macro (Tag tag, Project project) : base (tag, project)
+ {
+ }
+ }
+}
diff --git a/Parser/Member.cs b/Parser/Member.cs
new file mode 100644
index 0000000..6f8ee13
--- /dev/null
+++ b/Parser/Member.cs
@@ -0,0 +1,96 @@
+//
+// Member.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.Text.RegularExpressions;
+
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.ValaBinding.Parser
+{
+ public class Member : LanguageItem
+ {
+ public string InstanceType {
+ get{ return instanceType; }
+ }
+ protected string instanceType;
+
+ public bool IsPointer {
+ get{ return isPointer; }
+ }
+ protected bool isPointer;
+
+
+ public Member (Tag tag, Project project, string ctags_output) : base (tag, project)
+ {
+ GetInstanceType(tag);
+
+ if (GetClass (tag, ctags_output)) return;
+ if (GetStructure (tag, ctags_output)) return;
+ if (GetUnion (tag, ctags_output)) return;
+ }
+
+ /// <summary>
+ /// Regex for deriving the type of a variable,
+ /// and whether it's a pointer,
+ /// from an expression, e.g.
+ /// static Foo.bar<string> *blah = NULL;
+ /// </summary>
+ public static Regex InstanceTypeExpression = new Regex (
+ @"^\s*((public|private|protected|construct|static|friend|const|mutable|extern|struct|union|\w*\.|<[\w><:]*>)\s*)*(?<type>\w[\w\d]*)\s*(<.*>)?\s*(?<pointer>[*])?",
+ RegexOptions.Compiled);
+
+ /// <summary>
+ /// Populates an instance's instanceType and isPointer fields
+ /// by matching its pattern against InstanceTypeExpression
+ /// </summary>
+ /// <param name="tag">
+ /// The partially-populated tag of an instance
+ /// <see cref="Tag"/>
+ /// </param>
+ /// <returns>
+ /// Whether the regex was successfully matched
+ /// <see cref="System.Boolean"/>
+ /// </returns>
+ protected bool GetInstanceType (Tag tag) {
+ Match m = InstanceTypeExpression.Match (tag.Pattern);
+
+ if (null == m)
+ return false;
+
+ instanceType = m.Groups["type"].Value;
+ isPointer = m.Groups["pointer"].Success;
+
+ return true;
+ }
+ }
+}
diff --git a/Parser/Namespace.cs b/Parser/Namespace.cs
new file mode 100644
index 0000000..da9c2cb
--- /dev/null
+++ b/Parser/Namespace.cs
@@ -0,0 +1,46 @@
+//
+// Namespace.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.ValaBinding.Parser
+{
+ public class Namespace : LanguageItem
+ {
+ public Namespace (Tag tag, Project project, string ctags_output) : base (tag, project)
+ {
+ GetNamespace (tag, ctags_output);
+ }
+ }
+}
diff --git a/Parser/ProjectInformation.cs b/Parser/ProjectInformation.cs
new file mode 100644
index 0000000..461551d
--- /dev/null
+++ b/Parser/ProjectInformation.cs
@@ -0,0 +1,254 @@
+//
+// ProjectInformation.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.Collections.Generic;
+
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.ValaBinding.Parser
+{
+ public class FileInformation
+ {
+ protected Project project;
+
+ protected List<Namespace> namespaces = new List<Namespace> ();
+ protected List<Function> functions = new List<Function> ();
+ protected List<Class> classes = new List<Class> ();
+ protected List<Structure> structures = new List<Structure> ();
+ protected List<Member> members = new List<Member> ();
+ protected List<Variable> variables = new List<Variable> ();
+ protected List<Macro> macros = new List<Macro> ();
+ protected List<Enumeration> enumerations = new List<Enumeration> ();
+ protected List<Enumerator> enumerators = new List<Enumerator> ();
+ protected List<Union> unions = new List<Union> ();
+ protected List<Typedef> typedefs = new List<Typedef> ();
+ protected List<Local> locals = new List<Local> ();
+
+ private string file_name;
+ private bool is_filled = false;
+
+ public FileInformation (Project project)
+ {
+ this.project = project;
+ this.file_name = null;
+ }
+
+ public FileInformation (Project project, string filename)
+ {
+ this.project = project;
+ this.file_name = filename;
+ }
+
+ public void Clear ()
+ {
+ namespaces.Clear ();
+ functions.Clear ();
+ classes.Clear ();
+ structures.Clear ();
+ members.Clear ();
+ variables.Clear ();
+ macros.Clear ();
+ enumerations.Clear ();
+ enumerators.Clear ();
+ unions.Clear ();
+ typedefs.Clear ();
+ locals.Clear ();
+ }
+
+ public void RemoveFileInfo(string filename)
+ {
+ namespaces.RemoveAll(delegate(Namespace item){ return item.File == filename; });
+ functions.RemoveAll(delegate(Function item){ return item.File == filename; });
+ classes.RemoveAll(delegate(Class item){ return item.File == filename; });
+ structures.RemoveAll(delegate(Structure item){ return item.File == filename; });
+ members.RemoveAll(delegate(Member item){ return item.File == filename; });
+ variables.RemoveAll(delegate(Variable item){ return item.File == filename; });
+ macros.RemoveAll(delegate(Macro item){ return item.File == filename; });
+ enumerations.RemoveAll(delegate(Enumeration item){ return item.File == filename; });
+ enumerators.RemoveAll(delegate(Enumerator item){ return item.File == filename; });
+ unions.RemoveAll(delegate(Union item){ return item.File == filename; });
+ typedefs.RemoveAll(delegate(Typedef item){ return item.File == filename; });
+ locals.RemoveAll(delegate(Local item){ return item.File == filename; });
+ }
+
+ public IEnumerable<LanguageItem> Containers ()
+ {
+ foreach (Namespace n in namespaces)
+ yield return n;
+
+ foreach (Class c in classes)
+ yield return c;
+
+ foreach (Structure s in structures)
+ yield return s;
+
+ foreach (Enumeration e in enumerations)
+ yield return e;
+
+ foreach (Union u in unions)
+ yield return u;
+ }
+
+ // All items except macros
+ public IEnumerable<LanguageItem> AllItems ()
+ {
+ foreach (Namespace n in namespaces)
+ yield return n;
+
+ foreach (Class c in classes)
+ yield return c;
+
+ foreach (Structure s in structures)
+ yield return s;
+
+ foreach (Enumeration e in enumerations)
+ yield return e;
+
+ foreach (Union u in unions)
+ yield return u;
+
+ foreach (Function f in functions)
+ yield return f;
+
+ foreach (Member m in members)
+ yield return m;
+
+ foreach (Variable v in variables)
+ yield return v;
+
+ foreach (Enumerator e in enumerators)
+ yield return e;
+
+ foreach (Typedef t in typedefs)
+ yield return t;
+ }
+
+ // Functions, fields
+ public IEnumerable<LanguageItem> InstanceMembers ()
+ {
+ foreach (Function f in functions)
+ yield return f;
+
+ foreach (Member m in members)
+ yield return m;
+ }
+
+ public Project Project {
+ get { return project; }
+ }
+
+ public List<Namespace> Namespaces {
+ get { return namespaces; }
+ }
+
+ public List<Function> Functions {
+ get { return functions; }
+ }
+
+ public List<Class> Classes {
+ get { return classes; }
+ }
+
+ public List<Structure> Structures {
+ get { return structures; }
+ }
+
+ public List<Member> Members {
+ get { return members; }
+ }
+
+ public List<Variable> Variables {
+ get { return variables; }
+ }
+
+ public List<Macro> Macros {
+ get { return macros; }
+ }
+
+ public List<Enumeration> Enumerations {
+ get { return enumerations; }
+ }
+
+ public List<Enumerator> Enumerators {
+ get { return enumerators; }
+ }
+
+ public List<Union> Unions {
+ get { return unions; }
+ }
+
+ public List<Typedef> Typedefs {
+ get { return typedefs; }
+ }
+
+ public List<Local> Locals {
+ get { return locals; }
+ }
+
+ public string FileName {
+ get { return file_name; }
+ set { file_name = value; }
+ }
+
+ public bool IsFilled {
+ get { return is_filled; }
+ set { is_filled = value; }
+ }
+ }
+
+ public class ProjectInformation : FileInformation
+ {
+// private Globals globals;
+// private MacroDefinitions macroDefs;
+
+ private Dictionary<string, List<FileInformation>> includedFiles = new Dictionary<string, List<FileInformation>> ();
+
+ public ProjectInformation (Project project) : base (project)
+ {
+// globals = new Globals (project);
+// macroDefs = new MacroDefinitions (project);
+ }
+
+// public Globals Globals {
+// get { return globals; }
+// }
+//
+// public MacroDefinitions MacroDefinitions {
+// get { return macroDefs; }
+// }
+
+ public Dictionary<string, List<FileInformation>> IncludedFiles {
+ get { return includedFiles; }
+ }
+ }
+}
diff --git a/Parser/ProjectInformationManager.cs b/Parser/ProjectInformationManager.cs
new file mode 100644
index 0000000..a14cfa4
--- /dev/null
+++ b/Parser/ProjectInformationManager.cs
@@ -0,0 +1,75 @@
+//
+// ProjectInformationManager.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.Collections.Generic;
+
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.ValaBinding.Parser
+{
+ /// <summary>
+ /// Singleton class to manage the navigation information of each project
+ /// </summary>
+ public class ProjectInformationManager
+ {
+ private static ProjectInformationManager instance;
+ private List<ProjectInformation> projects = new List<ProjectInformation> ();
+
+ private ProjectInformationManager ()
+ {
+ }
+
+ public ProjectInformation Get (Project project)
+ {
+ foreach (ProjectInformation p in projects) {
+ if (project.Equals (p.Project)) {
+ return p;
+ }
+ }
+
+ ProjectInformation newinfo = new ProjectInformation (project);
+ projects.Add (newinfo);
+
+ return newinfo;
+ }
+
+ public static ProjectInformationManager Instance {
+ get {
+ if (instance == null)
+ instance = new ProjectInformationManager ();
+
+ return instance;
+ }
+ }
+ }
+}
diff --git a/Parser/Structure.cs b/Parser/Structure.cs
new file mode 100644
index 0000000..e2b0e8d
--- /dev/null
+++ b/Parser/Structure.cs
@@ -0,0 +1,49 @@
+//
+// Structure.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.ValaBinding.Parser
+{
+ public class Structure : LanguageItem
+ {
+ public Structure (Tag tag, Project project, string ctags_output) : base (tag, project)
+ {
+ if (GetNamespace (tag, ctags_output)) return;
+ if (GetClass (tag, ctags_output)) return;
+ if (GetStructure (tag, ctags_output)) return;
+ if (GetUnion (tag, ctags_output)) return;
+ }
+ }
+}
diff --git a/Parser/Tag.cs b/Parser/Tag.cs
new file mode 100644
index 0000000..e83b549
--- /dev/null
+++ b/Parser/Tag.cs
@@ -0,0 +1,145 @@
+//
+// Tag.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.IO;
+
+namespace MonoDevelop.ValaBinding.Parser
+{
+ public enum TagKind {
+ Class = 'c',
+ Macro = 'd',
+ Enumerator = 'e',
+ Function = 'm',
+ Enumeration = 'g',
+ Local = 'l',
+ Member = 'f',
+ Namespace = 'n',
+ Prototype = 'm',
+ Structure = 's',
+ Typedef = 't',
+ Union = 'u',
+ Variable = 'v',
+ ExternalVariable = 'x',
+ Unknown = ' '
+ }
+
+ public enum AccessModifier {
+ Private,
+ Protected,
+ Public
+ }
+
+ public class Tag
+ {
+ private string name;
+ private string file;
+ private string pattern;
+ private TagKind kind;
+ private AccessModifier access;
+ private string field_class;
+ private string field_namespace;
+ private string field_struct;
+ private string field_union;
+ private string field_enum;
+ private string field_signature;
+
+ public Tag (string name,
+ string file,
+ string pattern,
+ TagKind kind,
+ AccessModifier access,
+ string field_class,
+ string field_namespace,
+ string field_struct,
+ string field_union,
+ string field_enum,
+ string field_signature)
+ {
+ this.name = name;
+ this.file = file;
+ this.pattern = pattern;
+ this.kind = kind;
+ this.access = access;
+ this.field_class = field_class;
+ this.field_namespace = field_namespace;
+ this.field_struct = field_struct;
+ this.field_union = field_union;
+ this.field_enum = field_enum;
+ this.field_signature = field_signature;
+ }
+
+ public string Name {
+ get { return name; }
+ }
+
+ public string File {
+ get { return file; }
+ }
+
+ public string Pattern {
+ get { return pattern; }
+ }
+
+ public TagKind Kind {
+ get { return kind; }
+ }
+
+ public AccessModifier Access {
+ get { return access; }
+ }
+
+ public string Class {
+ get { return field_class; }
+ }
+
+ public string Namespace {
+ get { return field_namespace; }
+ }
+
+ public string Structure {
+ get { return field_struct; }
+ }
+
+ public string Union {
+ get { return field_union; }
+ }
+
+ public string Enum {
+ get { return field_enum; }
+ }
+
+ public string Signature {
+ get { return field_signature; }
+ }
+ }
+}
diff --git a/Parser/TagDatabaseManager.cs b/Parser/TagDatabaseManager.cs
new file mode 100644
index 0000000..3a8a4cd
--- /dev/null
+++ b/Parser/TagDatabaseManager.cs
@@ -0,0 +1,726 @@
+//
+// TagDatabaseManager.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.IO;
+using System.Text;
+using System.Collections.Generic;
+using System.Threading;
+
+using MonoDevelop.Projects;
+using MonoDevelop.Core;
+using MonoDevelop.Core.Execution;
+using MonoDevelop.Ide.Gui;
+
+using MonoDevelop.ValaBinding.Navigation;
+
+namespace MonoDevelop.ValaBinding.Parser
+{
+ /// <summary>
+ /// Singleton class to manage tag databases
+ /// </summary>
+ class TagDatabaseManager
+ {
+ private static TagDatabaseManager instance;
+ private Queue<ProjectFilePair> parsingJobs = new Queue<ProjectFilePair> ();
+ private Thread parsingThread;
+
+ public event ClassPadEventHandler FileUpdated;
+
+ bool ctagsInstalled = false;
+ bool checkedCtagsInstalled = false;
+
+ private TagDatabaseManager()
+ {
+ }
+
+ public static TagDatabaseManager Instance
+ {
+ get {
+ if (instance == null)
+ instance = new TagDatabaseManager ();
+
+ return instance;
+ }
+ }
+
+ bool DepsInstalled {
+ get {
+ if (!checkedCtagsInstalled) {
+ checkedCtagsInstalled = true;
+ if (IdeApp.Services.PlatformService.Name.Equals ("OSX")) {
+ return false;
+ }
+ try {
+ Runtime.ProcessService.StartProcess ("ctags", "--version", null, null).WaitForOutput ();
+ } catch {
+ LoggingService.LogWarning ("Cannot update Vala tags database because exuberant ctags is not installed.");
+ return false;
+ }
+ lock (parsingJobs) {
+ ctagsInstalled = true;
+ }
+ }
+ return ctagsInstalled;
+ }
+ set {
+ //don't assume that the caller is correct :-)
+ if (value)
+ checkedCtagsInstalled = false; //will re-determine ctagsInstalled on next getting
+ else
+ ctagsInstalled = false;
+ }
+ }
+
+// private string[] Headers (Project project, string filename, bool with_system)
+// {
+// string option = (with_system ? "-M" : "-MM");
+// ProcessWrapper p;
+// try {
+// p = Runtime.ProcessService.StartProcess ("gcc", option + " -MG " + filename, null, null);
+// p.WaitForExit ();
+// } catch (Exception ex) {
+// LoggingService.LogError (ex.ToString ());
+// return new string [0];
+// }
+//
+// StringBuilder output = new StringBuilder ();
+// string line;
+//
+// while ((line = p.StandardOutput.ReadLine ()) != null)
+// output.Append (line);
+//
+// p.Close ();
+//
+// string[] lines = output.ToString ().Split ('\\');
+// List<string> headers = new List<string> ();
+//
+// for (int i = 0; i < lines.Length; i++) {
+// string[] files = lines[i].Split (' ');
+// // first line contains the rule (eg. file.o: dep1.c dep2.h ...) and we must skip it
+// // and we skip the *.cpp or *.c etc. too
+// for (int j = 0; j < files.Length; j++) {
+// if (j == 0 || j == 1) continue;
+//
+// string depfile = files[j].Trim ();
+//
+// if (!string.IsNullOrEmpty (depfile))
+// headers.Add (findFileInIncludes (project, depfile));
+// }
+// }
+//
+// return headers.ToArray ();
+// }
+
+ /// <summary>
+ /// Finds a file in a project's vapi include path(s)
+ /// </summary>
+ /// <param name="project">
+ /// The project whose include path is to be searched
+ /// <see cref="Project"/>
+ /// </param>
+ /// <param name="filename">
+ /// A portion of a full file path
+ /// <see cref="System.String"/>
+ /// </param>
+ /// <returns>
+ /// The full found path, or filename if not found
+ /// <see cref="System.String"/>
+ /// </returns>
+ private static string findFileInIncludes (Project project, string filename) {
+ ValaProjectConfiguration conf = project.DefaultConfiguration as ValaProjectConfiguration;
+ string fullpath = string.Empty;
+
+ if (!Path.IsPathRooted (filename)) {
+ foreach (string p in conf.Includes) {
+ fullpath = findFileInPath (filename, p);
+ if (string.Empty != fullpath) return fullpath;
+ }
+ }
+
+ return filename;
+ }
+
+ /// <summary>
+ /// Finds a file in a subdirectory of a given path
+ /// </summary>
+ /// <param name="relativeFilename">
+ /// A portion of a full file path
+ /// <see cref="System.String"/>
+ /// </param>
+ /// <param name="path">
+ /// The path beneath which to look for relativeFilename
+ /// <see cref="System.String"/>
+ /// </param>
+ /// <returns>
+ /// The full path, or string.Empty if not found
+ /// <see cref="System.String"/>
+ /// </returns>
+ private static string findFileInPath (string relativeFilename, string path) {
+ string tmp = Path.Combine (path, relativeFilename);
+
+ if (Path.IsPathRooted (relativeFilename))
+ return relativeFilename;
+ else if (File.Exists (tmp))
+ return tmp;
+
+ if (Directory.Exists (path)) {
+ foreach (string subdir in Directory.GetDirectories (path)) {
+ tmp = findFileInPath (relativeFilename, subdir);
+ if (string.Empty != tmp) return tmp;
+ }
+ }
+
+ return string.Empty;
+ }
+
+ private void UpdateSystemTags (Project project, string filename, string[] includedFiles)
+ {
+ ProjectInformation info = ProjectInformationManager.Instance.Get (project);
+ List<FileInformation> files;
+
+ if (!info.IncludedFiles.ContainsKey (filename)) {
+ files = new List<FileInformation> ();
+ info.IncludedFiles.Add (filename, files);
+ } else {
+ files = info.IncludedFiles[filename];
+ }
+
+ foreach (string includedFile in includedFiles) {
+ bool contains = false;
+
+ foreach (FileInformation fi in files) {
+ if (fi.FileName == includedFile) {
+ contains = true;
+ }
+ }
+
+ if (!contains) {
+ FileInformation newFileInfo = new FileInformation (project, includedFile);
+ files.Add (newFileInfo);
+ FillFileInformation (newFileInfo);
+ }
+
+ contains = false;
+ }
+ }
+
+ private void FillFileInformation (FileInformation fileInfo)
+ {
+ if (!DepsInstalled)
+ return;
+
+ string confdir = PropertyService.ConfigPath;
+ string tagFileName = Path.GetFileName (fileInfo.FileName) + ".tag";
+ string tagdir = Path.Combine (confdir, "system-tags");
+ string tagFullFileName = Path.Combine (tagdir, tagFileName);
+ string ctags_options = "'--C#-kinds=+l' --fields=+a-f+S '--language-force=C#' --excmd=pattern -f '" + tagFullFileName + "' " + fileInfo.FileName;
+
+ if (!Directory.Exists (tagdir))
+ Directory.CreateDirectory (tagdir);
+
+ if (!File.Exists (tagFullFileName) || File.GetLastWriteTimeUtc (tagFullFileName) < File.GetLastWriteTimeUtc (fileInfo.FileName)) {
+ ProcessWrapper p = null;
+ System.IO.StringWriter output = null;
+ try {
+ output = new System.IO.StringWriter ();
+
+ p = Runtime.ProcessService.StartProcess ("ctags", ctags_options, null, output, output, null);
+ p.WaitForOutput (10000);
+ if (p.ExitCode != 0 || !File.Exists (tagFullFileName)) {
+ LoggingService.LogError ("Ctags did not successfully populate the tags database '{0}' from '{1}' within ten seconds.\nOutput: {2}", tagFullFileName, output.ToString ());
+ return;
+ }
+ } catch (Exception ex) {
+ throw new IOException ("Could not create tags database (You must have exuberant ctags installed).", ex);
+ } finally {
+ if (output != null)
+ output.Dispose ();
+ if (p != null)
+ p.Dispose ();
+ }
+ }
+
+ string ctags_output;
+ string tagEntry;
+
+ using (StreamReader reader = new StreamReader (tagFullFileName)) {
+ ctags_output = reader.ReadToEnd ();
+ }
+
+ using (StringReader reader = new StringReader (ctags_output)) {
+ while ((tagEntry = reader.ReadLine ()) != null) {
+ if (tagEntry.StartsWith ("!_")) continue;
+
+ Tag tag = ParseTag (tagEntry);
+
+ if (tag != null)
+ AddInfo (fileInfo, tag, ctags_output);
+ }
+ }
+
+ fileInfo.IsFilled = true;
+ }
+
+ private void ParsingThread ()
+ {
+ try {
+ while (parsingJobs.Count > 0) {
+ ProjectFilePair p;
+
+ lock (parsingJobs) {
+ p = parsingJobs.Dequeue ();
+ }
+
+ DoUpdateFileTags (p.Project, p.File);
+ }
+ } catch (Exception ex) {
+ LoggingService.LogError ("Unhandled error updating parser database. Disabling Vala parsing.", ex);
+ DepsInstalled = false;
+ return;
+ }
+ }
+
+ public void UpdateFileTags (Project project, string filename)
+ {
+ if (!DepsInstalled)
+ return;
+
+ ProjectFilePair p = new ProjectFilePair (project, filename);
+
+ lock (parsingJobs) {
+ if (!parsingJobs.Contains (p))
+ parsingJobs.Enqueue (p);
+ }
+
+ if (parsingThread == null || !parsingThread.IsAlive) {
+ parsingThread = new Thread (ParsingThread);
+ parsingThread.IsBackground = true;
+ parsingThread.Start();
+ }
+ }
+
+ private void DoUpdateFileTags (Project project, string filename)
+ {
+ if (!DepsInstalled)
+ return;
+
+ //string[] headers = Headers (project, filename, false);
+ string ctags_options = "'--C#-kinds=+l' --fields=+a-f+S '--language-force=C#' --excmd=pattern -f - " + filename; // + " " + string.Join (" ", headers);
+
+ //string[] system_headers = diff (Headers (project, filename, true), headers);
+
+ ProcessWrapper p = null;
+ System.IO.StringWriter output = null, error = null;
+ string ctags_output = string.Empty;
+ try {
+ output = new System.IO.StringWriter ();
+ error = new System.IO.StringWriter ();
+ p = Runtime.ProcessService.StartProcess ("ctags", ctags_options, null, output, error, null);
+ p.WaitForOutput (10000);
+ if (p.ExitCode != 0) {
+ LoggingService.LogError ("Ctags did not successfully populate the tags database from '{0}' within ten seconds.\nError output: {1}", filename, error.ToString ());
+ return;
+ }
+ ctags_output = output.ToString ();
+ // System.Console.WriteLine(ctags_output);
+ } catch (Exception ex) {
+ throw new IOException ("Could not create tags database (You must have exuberant ctags installed).", ex);
+ } finally {
+ if (output != null)
+ output.Dispose ();
+ if (error != null)
+ error.Dispose ();
+ if (p != null)
+ p.Dispose ();
+ }
+
+ ProjectInformation info = ProjectInformationManager.Instance.Get (project);
+ string tagEntry;
+
+ using (StringReader reader = new StringReader (ctags_output)) {
+ while ((tagEntry = reader.ReadLine ()) != null) {
+ if (tagEntry.StartsWith ("!_")) continue;
+
+ Tag tag = ParseTag (tagEntry);
+
+ if (tag != null)
+ AddInfo (info, tag, ctags_output);
+ }
+ }
+
+// if (FileUpdated != null)
+// FileUpdated (new ClassPadEventArgs (project));
+
+ if (PropertyService.Get<bool> ("ValaBinding.ParseSystemTags", true))
+ UpdateSystemTags (project, filename, new string[0]);
+
+ if (cache.Count > cache_size)
+ cache.Clear ();
+ }
+
+ private void AddInfo (FileInformation info, Tag tag, string ctags_output)
+ {
+ switch (tag.Kind)
+ {
+ case TagKind.Class:
+ Class c = new Class (tag, info.Project, ctags_output);
+ if (!info.Classes.Contains (c))
+ info.Classes.Add (c);
+ break;
+ case TagKind.Enumeration:
+ Enumeration e = new Enumeration (tag, info.Project, ctags_output);
+ if (!info.Enumerations.Contains (e))
+ info.Enumerations.Add (e);
+ break;
+ case TagKind.Enumerator:
+ Enumerator en= new Enumerator (tag, info.Project, ctags_output);
+ if (!info.Enumerators.Contains (en))
+ info.Enumerators.Add (en);
+ break;
+ case TagKind.ExternalVariable:
+ break;
+ case TagKind.Function:
+ Function f = new Function (tag, info.Project, ctags_output);
+ if (!info.Functions.Contains (f))
+ info.Functions.Add (f);
+ break;
+ case TagKind.Local:
+ Local lo = new Local(tag, info.Project, ctags_output);
+ if (!info.Locals.Contains (lo))
+ info.Locals.Add (lo);
+ break;
+ case TagKind.Macro:
+ Macro m = new Macro (tag, info.Project);
+ if (!info.Macros.Contains (m))
+ info.Macros.Add (m);
+ break;
+ case TagKind.Member:
+ Member me = new Member (tag, info.Project, ctags_output);
+ if (!info.Members.Contains (me))
+ info.Members.Add (me);
+ break;
+ case TagKind.Namespace:
+ Namespace n = new Namespace (tag, info.Project, ctags_output);
+ if (!info.Namespaces.Contains (n))
+ info.Namespaces.Add (n);
+ break;
+// case TagKind.Prototype:
+// Function fu = new Function (tag, info.Project, ctags_output);
+// if (!info.Functions.Contains (fu))
+// info.Functions.Add (fu);
+// break;
+ case TagKind.Structure:
+ Structure s = new Structure (tag, info.Project, ctags_output);
+ if (!info.Structures.Contains (s))
+ info.Structures.Add (s);
+ break;
+ case TagKind.Typedef:
+ Typedef t = new Typedef (tag, info.Project, ctags_output);
+ if (!info.Typedefs.Contains (t))
+ info.Typedefs.Add (t);
+ break;
+ case TagKind.Union:
+ Union u = new Union (tag, info.Project, ctags_output);
+ if (!info.Unions.Contains (u))
+ info.Unions.Add (u);
+ break;
+ case TagKind.Variable:
+ Variable v = new Variable (tag, info.Project);
+ if (!info.Variables.Contains (v))
+ info.Variables.Add (v);
+ break;
+ default:
+ break;
+ }
+ }
+
+ private Tag ParseTag (string tagEntry)
+ {
+ int i1, i2;
+ string file;
+ string pattern;
+ string name;
+ string tagField;
+ TagKind kind;
+ AccessModifier access = AccessModifier.Public;
+ string _class = null;
+ string _namespace = null;
+ string _struct = null;
+ string _union = null;
+ string _enum = null;
+ string signature = null;
+ char delimiter;
+
+ name = tagEntry.Substring (0, tagEntry.IndexOf ('\t'));
+
+ i1 = tagEntry.IndexOf ('\t') + 1;
+ i2 = tagEntry.IndexOf ('\t', i1);
+
+ file = tagEntry.Substring (i1, i2 - i1);
+
+ delimiter = tagEntry[i2 + 1];
+
+ i1 = i2 + 2;
+ i2 = tagEntry.IndexOf (delimiter, i1) - 1;
+
+ // apparentlty sometimes ctags will create faulty tags, make sure this is not one of them
+ if (i2 < 0 || i1 < 0)
+ return null;
+
+ pattern = tagEntry.Substring (i1 + 1, i2 - i1 - 1);
+
+ tagField = tagEntry.Substring (i2 + 5);
+
+ // parse tag field
+ kind = (TagKind)tagField[0];
+
+ string[] fields = tagField.Split ('\t');
+ int index;
+
+ foreach (string field in fields) {
+ index = field.IndexOf (':');
+
+ // TODO: Support friend modifier
+ if (index > 0) {
+ string key = field.Substring (0, index);
+ string val = field.Substring (index + 1);
+
+ switch (key) {
+ case "access":
+ try {
+ access = (AccessModifier)System.Enum.Parse (typeof(AccessModifier), val, true);
+ } catch (ArgumentException) {
+ }
+ break;
+ case "class":
+ int dotindex = val.LastIndexOf(".");
+
+ if(0 < dotindex) {
+// _namespace = val.Substring(0, dotindex);
+ _class = val.Substring(dotindex + 1);
+ } else {
+ _class = val;
+ }
+ break;
+ case "namespace":
+ _namespace = val;
+ break;
+ case "struct":
+ _struct = val;
+ break;
+ case "union":
+ _union = val;
+ break;
+ case "enum":
+ _enum = val;
+ break;
+ case "signature":
+ signature = val;
+ break;
+ }
+ }
+ }
+
+ return new Tag (name, file, pattern, kind, access, _class, _namespace, _struct, _union, _enum, signature);
+ }
+
+ Tag BinarySearch (string[] ctags_lines, TagKind kind, string name)
+ {
+ int low;
+ int high = ctags_lines.Length - 2; // last element is an empty string (because of the Split)
+ int mid;
+ int start_index = 0;
+
+ // Skip initial comment lines
+ while (ctags_lines[start_index].StartsWith ("!_"))
+ start_index++;
+
+ low = start_index;
+
+ while (low <= high) {
+ mid = (low + high) / 2;
+ string entry = ctags_lines[mid];
+ string tag_name = entry.Substring (0, entry.IndexOf ('\t'));
+ int res = string.CompareOrdinal (tag_name, name);
+
+ if (res < 0) {
+ low = mid + 1;
+ } else if (res > 0) {
+ high = mid - 1;
+ } else {
+ // The tag we are at has the same name than the one we are looking for
+ // but not necessarily the same type, the actual tag we are looking
+ // for might be higher up or down, so we try both, starting with going down.
+ int save = mid;
+ bool going_down = true;
+ bool eof = false;
+
+ while (true) {
+ Tag tag = ParseTag (entry);
+
+ if (tag == null)
+ return null;
+
+ if (tag.Kind == kind && tag_name == name)
+ return tag;
+
+ if (going_down) {
+ mid++;
+
+ if (mid >= ctags_lines.Length - 1)
+ eof = true;
+
+ if (!eof) {
+ entry = ctags_lines[mid];
+ tag_name = entry.Substring (0, entry.IndexOf ('\t'));
+
+ if (tag_name != name) {
+ going_down = false;
+ mid = save - 1;
+ }
+ } else {
+ going_down = false;
+ mid = save - 1;
+ }
+ } else { // going up
+ mid--;
+
+ if (mid < start_index)
+ return null;
+
+ entry = ctags_lines[mid];
+ tag_name = entry.Substring (0, entry.IndexOf ('\t'));
+
+ if (tag_name != name)
+ return null;
+ }
+ }
+ }
+ }
+
+ return null;
+ }
+
+ private struct SemiTag
+ {
+ readonly internal string name;
+ readonly internal TagKind kind;
+
+ internal SemiTag (string name, TagKind kind)
+ {
+ this.name = name;
+ this.kind = kind;
+ }
+
+ public override int GetHashCode ()
+ {
+ return (name + kind.ToString ()).GetHashCode ();
+ }
+ }
+
+ private const int cache_size = 10000;
+ private Dictionary<SemiTag, Tag> cache = new Dictionary<SemiTag, Tag> ();
+
+ public Tag FindTag (string name, TagKind kind, string ctags_output)
+ {
+ SemiTag semiTag = new SemiTag (name, kind);
+
+ if (cache.ContainsKey (semiTag))
+ return cache[semiTag];
+ else {
+ string[] ctags_lines = ctags_output.Split ('\n');
+ Tag tag = BinarySearch (ctags_lines, kind, name);
+ cache.Add (semiTag, tag);
+
+ return tag;
+ }
+ }
+
+ public void RemoveFileInfo(Project project, string filename)
+ {
+ ProjectInformation info = ProjectInformationManager.Instance.Get (project);
+ info.RemoveFileInfo(filename);
+ }
+
+ private static string[] diff (string[] a1, string[] a2)
+ {
+ List<string> res = new List<string> ();
+ List<string> right = new List<string> (a2);
+
+ foreach (string s in a1) {
+ if (!right.Contains (s))
+ res.Add (s);
+ }
+
+ return res.ToArray ();
+ }
+
+ private class ProjectFilePair
+ {
+ string file;
+ Project project;
+
+ public ProjectFilePair (Project project, string file)
+ {
+ this.project = project;
+ this.file = file;
+ }
+
+ public string File {
+ get { return file; }
+ }
+
+ public Project Project {
+ get { return project; }
+ }
+
+ public override bool Equals (object other)
+ {
+ ProjectFilePair o = other as ProjectFilePair;
+
+ if (o == null)
+ return false;
+
+ if (file == o.File && project == o.Project)
+ return true;
+ else
+ return false;
+ }
+
+ public override int GetHashCode ()
+ {
+ return (project.ToString() + file).GetHashCode ();
+ }
+ }
+ }
+}
diff --git a/Parser/Typedef.cs b/Parser/Typedef.cs
new file mode 100644
index 0000000..d08d5a5
--- /dev/null
+++ b/Parser/Typedef.cs
@@ -0,0 +1,49 @@
+//
+// Typedef.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.ValaBinding.Parser
+{
+ public class Typedef : LanguageItem
+ {
+ public Typedef (Tag tag, Project project, string ctags_output) : base (tag, project)
+ {
+ if (GetNamespace (tag, ctags_output)) return;
+ if (GetClass (tag, ctags_output)) return;
+ if (GetStructure (tag, ctags_output)) return;
+ if (GetUnion (tag, ctags_output)) return;
+ }
+ }
+}
diff --git a/Parser/Union.cs b/Parser/Union.cs
new file mode 100644
index 0000000..168fee4
--- /dev/null
+++ b/Parser/Union.cs
@@ -0,0 +1,49 @@
+//
+// Union.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.ValaBinding.Parser
+{
+ public class Union : LanguageItem
+ {
+ public Union (Tag tag, Project project, string ctags_output) : base (tag, project)
+ {
+ if (GetNamespace (tag, ctags_output)) return;
+ if (GetClass (tag, ctags_output)) return;
+ if (GetStructure (tag, ctags_output)) return;
+ if (GetUnion (tag, ctags_output)) return;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Parser/Variable.cs b/Parser/Variable.cs
new file mode 100644
index 0000000..c5c19ea
--- /dev/null
+++ b/Parser/Variable.cs
@@ -0,0 +1,45 @@
+//
+// Variable.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.ValaBinding.Parser
+{
+ public class Variable : LanguageItem
+ {
+ public Variable (Tag tag, Project project) : base (tag, project)
+ {
+ }
+ }
+}
diff --git a/Project/ProjectPackage.cs b/Project/ProjectPackage.cs
new file mode 100644
index 0000000..2bc4de1
--- /dev/null
+++ b/Project/ProjectPackage.cs
@@ -0,0 +1,294 @@
+//
+// ProjectPackage.cs: A pkg-config package
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.IO;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Collections.Generic;
+
+using Mono.Addins;
+
+using MonoDevelop.Core.Serialization;
+
+namespace MonoDevelop.ValaBinding
+{
+ public class ProjectPackage
+ {
+ [ItemProperty ("file")]
+ private string file;
+
+ [ItemProperty ("name")]
+ private string name;
+
+ [ItemProperty ("IsProject")]
+ private bool is_project;
+
+ public string Description {
+ get{ return description; }
+ set{ description = value; }
+ }
+ private string description;
+
+ public string Version {
+ get{ return version; }
+ set{ version = value; }
+ }
+ private string version;
+
+ public List<string> Requires {
+ get { return requires; }
+ }
+ private List<string> requires;
+
+ private static string[] packagePaths;
+
+ static ProjectPackage () {
+ packagePaths = ScanPackageDirs ();
+ }
+
+ protected ProjectPackage() {
+ requires = new List<string>();
+ description = string.Empty;
+ version = string.Empty;
+ }
+
+ public ProjectPackage (string file): this()
+ {
+ this.file = file;
+ this.name = Path.GetFileNameWithoutExtension(file);
+ this.is_project = false;
+ ParsePackage();
+ ParseRequires();
+ }
+
+ public ProjectPackage (ValaProject project): this()
+ {
+ name = project.Name;
+ ValaProjectConfiguration vpc = (ValaProjectConfiguration)(project.DefaultConfiguration);
+ file = Path.Combine (vpc.OutputDirectory, name + ".vapi");
+ is_project = true;
+ }
+
+ public string File {
+ get { return file; }
+ set { file = value; }
+ }
+
+ public string Name {
+ get { return name; }
+ set { name = value; }
+ }
+
+ public bool IsProject {
+ get { return is_project; }
+ set { is_project = value; }
+ }
+
+ public override bool Equals (object o)
+ {
+ ProjectPackage other = o as ProjectPackage;
+
+ if (other == null) return false;
+
+ return other.File.Equals (file);
+ }
+
+ public override int GetHashCode ()
+ {
+ return (file + name).GetHashCode ();
+ }
+
+ /// <summary>
+ /// Insert '\n's to make sure string isn't too long.
+ /// </summary>
+ /// <param name="desc">
+ /// The unprocessed description.
+ /// A <see cref="System.String"/>
+ /// </param>
+ /// <returns>
+ /// The processed description.
+ /// A <see cref="System.String"/>
+ /// </returns>
+ public static string ProcessDescription (string desc)
+ {
+ return Regex.Replace(desc, @"(.{1,80} )", "$&" + Environment.NewLine, RegexOptions.Compiled);
+ }
+
+ /// <summary>
+ /// Search for a .pc file for this package, and parse its relevant attributes
+ /// </summary>
+ protected void ParsePackage ()
+ {
+ string line, pcfile;
+
+ try {
+ foreach(string path in packagePaths) {
+ pcfile = Path.Combine (path, Path.ChangeExtension (Path.GetFileName (file), ".pc"));
+ if (!System.IO.File.Exists (pcfile)){ continue; }
+ using (StreamReader reader = new StreamReader (pcfile)) {
+ if (null == reader){ continue; }
+
+ while ((line = reader.ReadLine ()) != null) {
+ if (Regex.IsMatch(line, @"^\s*#", RegexOptions.Compiled))
+ continue;
+
+ // if (line.IndexOf ('=') >= 0)
+ // ParseVar (line);
+
+ if (line.IndexOf (':') >= 0)
+ ParseProperty (line);
+ }
+ return;
+ }
+ }
+ } catch (FileNotFoundException) {
+ // We just won't populate some fields
+ } catch (IOException) {
+ // We just won't populate some fields
+ }
+ }
+
+ protected void ParseProperty (string line)
+ {
+ string[] tokens = line.Split(new char[]{':'}, 2);
+
+ if(2 != tokens.Length){ return; }
+
+ string key = tokens[0];
+ string value = tokens[1].Trim();
+
+ if (value.Length <= 0)
+ return;
+
+ switch (key) {
+ case "Description":;
+ description = ProcessDescription (value);
+ break;
+ case "Version":
+ version = value;
+ break;
+ }
+ }
+
+ protected void ParseRequires ()
+ {
+ string line;
+
+ try {
+ using (StreamReader reader = new StreamReader (Path.ChangeExtension(file, ".deps"))) {
+ if(null == reader){ return; }
+ for(; null != (line = reader.ReadLine()); requires.Add(line));
+ }
+ } catch (FileNotFoundException) {
+ // We just won't populate requires
+ } catch (IOException) {
+ // We just won't populate requires
+ }
+ }
+
+ /// <summary>
+ /// Scans PKG_CONFIG_PATH and a few static directories
+ /// for potential pkg-config repositories
+ /// </summary>
+ /// <returns>
+ /// A <see cref="System.String"/> array: The potential directories
+ /// </returns>
+ private static string[] ScanPackageDirs ()
+ {
+ List<string> dirs = new List<string> ();
+ string pkg_var = Environment.GetEnvironmentVariable ("PKG_CONFIG_PATH");
+ string[] staticPaths = { "/usr/lib/pkgconfig",
+ "/usr/lib64/pkgconfig",
+ "/usr/share/pkgconfig",
+ "/usr/local/lib/pkgconfig",
+ "/usr/local/share/pkgconfig"
+ };
+
+ if (null != pkg_var){ dirs.AddRange(pkg_var.Split(new char[]{System.IO.Path.PathSeparator}, StringSplitOptions.RemoveEmptyEntries)); }
+
+ foreach(string dir in staticPaths) {
+ if(!dirs.Contains(dir)){ dirs.Add(dir); }
+ }
+
+ return dirs.ToArray ();
+ }
+
+ /// <summary>
+ /// Converts an absolute path to a relative one
+ /// </summary>
+ /// <param name="absolutePath">
+ /// A <see cref="System.String"/>: The absolute path
+ /// </param>
+ /// <param name="relativeTo">
+ /// A <see cref="System.String"/>: The path to which the output path shall be relative
+ /// </param>
+ /// <returns>
+ /// A <see cref="System.String"/>: The relative path from relativeTo to absolutePath
+ /// </returns>
+ public static string ToRelativePath (string absolutePath, string relativeTo) {
+ List<string> fileTokens = new List<string> (absolutePath.Split (Path.DirectorySeparatorChar)),
+ anchorTokens = new List<string> (relativeTo.Split (Path.DirectorySeparatorChar));
+ StringBuilder builder = new StringBuilder ();
+ int length = 0;
+
+ if (!Path.IsPathRooted(absolutePath)){ return absolutePath; }
+ if (absolutePath == relativeTo){ return Path.GetFileName (absolutePath); }
+
+ if (absolutePath.StartsWith (relativeTo) && Directory.Exists (relativeTo)) {
+ builder.AppendFormat (".{0}", Path.DirectorySeparatorChar);
+ }// if absolutePath is inside relativeTo
+
+ for (;0 != fileTokens.Count && 0 != anchorTokens.Count;) {
+ if (fileTokens[0] == anchorTokens[0]) {
+ fileTokens.RemoveAt (0);
+ anchorTokens.RemoveAt (0);
+ } else { break; }
+ }// strip identical leading path
+
+ for (int i=0; i < anchorTokens.Count-1; ++i) {
+ builder.AppendFormat ("..{0}", Path.DirectorySeparatorChar);
+ }// navigate out of anchor subdir
+
+ foreach (string token in fileTokens) {
+ builder.AppendFormat ("{0}{1}", token, Path.DirectorySeparatorChar);
+ }// append filepath
+
+ length = builder.Length;
+ if (0 < builder.Length && Path.DirectorySeparatorChar == builder[builder.Length-1]) {
+ --length;
+ }// check for trailing separator
+
+ return builder.ToString (0, length);
+ }// ToRelativePath
+ }
+}
diff --git a/Project/ProjectPackageCollection.cs b/Project/ProjectPackageCollection.cs
new file mode 100644
index 0000000..7365922
--- /dev/null
+++ b/Project/ProjectPackageCollection.cs
@@ -0,0 +1,127 @@
+//
+// ProjectPackageCollection.cs: Collection of pkg-config packages for the project
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.IO;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+
+using Mono.Addins;
+
+namespace MonoDevelop.ValaBinding
+{
+ [Serializable()]
+ public class ProjectPackageCollection : Collection<ProjectPackage>
+ {
+ private ValaProject project;
+
+ internal ValaProject Project {
+ get { return project; }
+ set { project = value; }
+ }
+
+ public ProjectPackageCollection ()
+ {
+ }
+
+ public void AddRange (IEnumerable<ProjectPackage> packages)
+ {
+ foreach (ProjectPackage p in packages) {
+ bool found = false;
+ foreach (ProjectPackage item in Items) {
+ if (item.File == p.File) {
+ found = true;
+ }
+ }
+ if (!found) { Add (p); }
+ }
+ }
+
+ protected override void ClearItems()
+ {
+ if (project != null) {
+ List<ProjectPackage> list = new List<ProjectPackage> (Items);
+ base.ClearItems ();
+ foreach (ProjectPackage p in list) {
+ project.NotifyPackageRemovedFromProject (p);
+ }
+ }
+ }
+
+ protected override void InsertItem (int index, ProjectPackage value)
+ {
+ if(value.IsProject && null != project) {
+ ValaProjectConfiguration vpc = (ValaProjectConfiguration)project.DefaultConfiguration;
+ value.File = ProjectPackage.ToRelativePath(value.File, Path.Combine(vpc.OutputDirectory, vpc.CompiledOutputName));
+ }
+ base.InsertItem (index, value);
+ if (project != null) {
+ project.NotifyPackageAddedToProject (value);
+ }
+ }
+
+ protected override void RemoveItem (int index)
+ {
+ ProjectPackage p = Items [index];
+ base.RemoveItem (index);
+ if (project != null) {
+ project.NotifyPackageRemovedFromProject (p);
+ }
+ }
+
+ protected override void SetItem (int index, ProjectPackage item)
+ {
+ ProjectPackage oldValue = Items [index];
+ if(item.IsProject && null != project) {
+ ValaProjectConfiguration vpc = (ValaProjectConfiguration)project.DefaultConfiguration;
+ item.File = ProjectPackage.ToRelativePath(item.File, Path.Combine(vpc.OutputDirectory, vpc.CompiledOutputName));
+ }
+ base.SetItem (index, item);
+ if (project != null) {
+ project.NotifyPackageRemovedFromProject (oldValue);
+ project.NotifyPackageAddedToProject (item);
+ }
+ }
+
+ public string[] ToStringArray ()
+ {
+ string[] array = new string[Count];
+ int i = 0;
+
+ foreach (ProjectPackage p in Items)
+ array[i++] = p.Name;
+
+ return array;
+ }
+ }
+}
diff --git a/Project/ProjectPackageEventArgs.cs b/Project/ProjectPackageEventArgs.cs
new file mode 100644
index 0000000..8c156b3
--- /dev/null
+++ b/Project/ProjectPackageEventArgs.cs
@@ -0,0 +1,58 @@
+//
+// ProjectPackageEventArgs.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+
+namespace MonoDevelop.ValaBinding
+{
+ public delegate void ProjectPackageEventHandler (object sender, ProjectPackageEventArgs e);
+
+ public class ProjectPackageEventArgs
+ {
+ ValaProject project;
+ ProjectPackage package;
+
+ public ProjectPackageEventArgs(ValaProject project, ProjectPackage package)
+ {
+ this.project = project;
+ this.package = package;
+ }
+
+ public ValaProject Project {
+ get { return project; }
+ }
+
+ public ProjectPackage Package {
+ get { return package; }
+ }
+ }
+}
diff --git a/Project/ValaCompilationParameters.cs b/Project/ValaCompilationParameters.cs
new file mode 100644
index 0000000..4950957
--- /dev/null
+++ b/Project/ValaCompilationParameters.cs
@@ -0,0 +1,111 @@
+//
+// ValaCompilationParameters.cs: Project compilation parameters
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.Xml;
+using System.Diagnostics;
+using System.Collections;
+
+using Mono.Addins;
+
+using MonoDevelop.Projects;
+using MonoDevelop.Core.Serialization;
+
+namespace MonoDevelop.ValaBinding
+{
+ public enum WarningLevel {
+ None,
+ Normal,
+ All
+ }
+
+ public class ValaCompilationParameters : ICloneable
+ {
+ [ItemProperty ("WarningLevel")]
+ private WarningLevel warning_level = WarningLevel.Normal;
+
+ [ItemProperty ("WarningsAsErrors")]
+ private bool warnings_as_errors = false;
+
+ [ItemProperty ("OptimizationLevel")]
+ private int optimization = 0;
+
+ [ItemProperty ("ExtraCompilerArguments")]
+ private string extra_compiler_args = string.Empty;
+
+ [ItemProperty ("DefineSymbols")]
+ private string define_symbols = string.Empty;
+
+ [ItemProperty ("EnableMultithreading")]
+ private bool enable_multithreading = false;
+
+ public object Clone ()
+ {
+ return MemberwiseClone ();
+ }
+
+ public WarningLevel WarningLevel {
+ get { return warning_level; }
+ set { warning_level = value; }
+ }
+
+ public bool WarningsAsErrors {
+ get { return warnings_as_errors; }
+ set { warnings_as_errors = value; }
+ }
+
+ public int OptimizationLevel {
+ get { return optimization; }
+ set {
+ if (value >= 0 && value <= 3)
+ optimization = value;
+ else
+ optimization = 0;
+ }
+ }
+
+ public string ExtraCompilerArguments {
+ get { return extra_compiler_args; }
+ set { extra_compiler_args = value; }
+ }
+
+ public string DefineSymbols {
+ get { return define_symbols; }
+ set { define_symbols = value; }
+ }
+
+ public bool EnableMultithreading {
+ get { return enable_multithreading; }
+ set { enable_multithreading = value; }
+ }
+ }
+}
diff --git a/Project/ValaProject.cs b/Project/ValaProject.cs
new file mode 100644
index 0000000..0ced063
--- /dev/null
+++ b/Project/ValaProject.cs
@@ -0,0 +1,525 @@
+//
+// ValaProject.cs: Vala Project
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.IO;
+using System.Xml;
+using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.CodeDom.Compiler;
+using System.Text.RegularExpressions;
+using System.Diagnostics;
+
+using Mono.Addins;
+
+using MonoDevelop.Core;
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Core.Execution;
+using MonoDevelop.Core.ProgressMonitoring;
+using MonoDevelop.Projects;
+using MonoDevelop.Core.Serialization;
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Deployment;
+using MonoDevelop.Deployment.Linux;
+
+using MonoDevelop.ValaBinding.Parser;
+
+namespace MonoDevelop.ValaBinding
+{
+ public enum ValaProjectCommands {
+ AddPackage,
+ ShowPackageDetails,
+ UpdateClassPad
+ }
+
+ [DataInclude(typeof(ValaProjectConfiguration))]
+ public class ValaProject : Project, IDeployable
+ {
+ [ItemProperty ("compiler", ValueType = typeof(ValaCompiler))]
+ private ICompiler compiler_manager;
+
+ private ProjectPackageCollection packages = new ProjectPackageCollection ();
+ public static string vapidir;
+
+ public event ProjectPackageEventHandler PackageAddedToProject;
+ public event ProjectPackageEventHandler PackageRemovedFromProject;
+
+ private void Init ()
+ {
+ packages.Project = this;
+ this.PackageAddedToProject += AddDependencies; // Special handling for project packages
+ //IdeApp.ProjectOperations.EntryAddedToCombine += OnEntryAddedToCombine;
+ }
+
+ static ValaProject()
+ {
+ try {
+ Process pkgconfig = new Process();
+ pkgconfig.StartInfo.FileName = "pkg-config";
+ pkgconfig.StartInfo.Arguments = "--variable=vapidir vala-1.0";
+ pkgconfig.StartInfo.CreateNoWindow = true;
+ pkgconfig.StartInfo.RedirectStandardOutput = true;
+ pkgconfig.StartInfo.UseShellExecute = false;
+ pkgconfig.Start();
+ vapidir = pkgconfig.StandardOutput.ReadToEnd().Trim();
+ pkgconfig.WaitForExit();
+ pkgconfig.Dispose();
+ } catch(Exception e) {
+ MessageService.ShowError("Unable to detect VAPI path", string.Format("{0}{1}{2}", e.Message, Environment.NewLine, e.StackTrace));
+ }
+
+ if(!Directory.Exists(vapidir)){ vapidir = "/usr/share/vala/vapi"; }
+ }
+
+
+
+ public ValaProject ()
+ {
+ Init ();
+ }
+
+ public ValaProject (ProjectCreateInformation info,
+ XmlElement projectOptions, string language)
+ {
+ Init ();
+ string binPath = ".";
+
+ if (info != null) {
+ Name = info.ProjectName;
+ binPath = info.BinPath;
+ }
+
+ Compiler = null;
+
+ ValaProjectConfiguration configuration =
+ (ValaProjectConfiguration)CreateConfiguration ("Debug");
+
+ configuration.DebugMode = true;
+ ((ValaCompilationParameters)configuration.CompilationParameters).DefineSymbols = "DEBUG MONODEVELOP";
+
+ Configurations.Add (configuration);
+
+ configuration =
+ (ValaProjectConfiguration)CreateConfiguration ("Release");
+
+ configuration.DebugMode = false;
+ ((ValaCompilationParameters)configuration.CompilationParameters).OptimizationLevel = 3;
+ ((ValaCompilationParameters)configuration.CompilationParameters).DefineSymbols = "MONODEVELOP";
+ Configurations.Add (configuration);
+
+ foreach (ValaProjectConfiguration c in Configurations) {
+ c.OutputDirectory = Path.Combine (binPath, c.Name);
+ c.SourceDirectory = info.ProjectBasePath;
+ c.Output = Name;
+ ValaCompilationParameters parameters = c.CompilationParameters as ValaCompilationParameters;
+
+ if (projectOptions != null) {
+ if (projectOptions.Attributes["Target"] != null) {
+ c.CompileTarget = (ValaBinding.CompileTarget)Enum.Parse (
+ typeof(ValaBinding.CompileTarget),
+ projectOptions.Attributes["Target"].InnerText);
+ }
+ if (projectOptions.Attributes["PauseConsoleOutput"] != null) {
+ c.PauseConsoleOutput = bool.Parse (
+ projectOptions.Attributes["PauseConsoleOutput"].InnerText);
+ }
+ if (projectOptions.Attributes["CompilerArgs"].InnerText != null) {
+ if (parameters != null) {
+ parameters.ExtraCompilerArguments = projectOptions.Attributes["CompilerArgs"].InnerText;
+ }
+ }
+ if (projectOptions.Attributes["Packages"].InnerText != null) {
+ List<ProjectPackage> packs = new List<ProjectPackage>();
+ foreach(string pack in projectOptions.Attributes["Packages"].InnerText.Split('|')) {
+ packs.Add(new ProjectPackage(
+ string.Format("{0}{1}{2}.vapi",
+ vapidir,
+ Path.DirectorySeparatorChar,
+ pack)));
+ }
+ packages.AddRange(packs);
+ }
+ }
+ }
+ }
+
+ public override string ProjectType {
+ get { return "Vala"; }
+ }
+
+ public override string[] SupportedLanguages {
+ get { return new string[] { "Vala" }; }
+ }
+
+ public override bool IsCompileable (string fileName)
+ {
+ string ext = Path.GetExtension(fileName);
+ return (ext.Equals(".vala", StringComparison.CurrentCultureIgnoreCase) ||
+ ext.Equals(".vapi", StringComparison.CurrentCultureIgnoreCase));
+ }
+
+ public List<ValaProject> DependedOnProjects ()
+ {
+ List<string> project_names = new List<string> ();
+ List<ValaProject> projects = new List<ValaProject> ();
+
+ foreach (ProjectPackage p in Packages) {
+ if (p.IsProject && p.Name != Name) {
+ project_names.Add (p.Name);
+ }
+ }
+
+ foreach (SolutionItem e in ParentFolder.Items) {
+ if (e is ValaProject && project_names.Contains (e.Name)) {
+ projects.Add ((ValaProject)e);
+ }
+ }
+
+ return projects;
+ }
+
+ /// <summary>
+ /// Ths pkg-config package is for internal MonoDevelop use only, it is not deployed.
+ /// </summary>
+ public void WriteMDPkgPackage (string configuration)
+ {
+ string pkgfile = Path.Combine (BaseDirectory, Name + ".md.pc");
+
+ ValaProjectConfiguration config = (ValaProjectConfiguration)GetConfiguration(configuration);
+
+ using (StreamWriter writer = new StreamWriter (pkgfile)) {
+ writer.WriteLine ("Name: {0}", Name);
+ writer.WriteLine ("Description: {0}", Description);
+ writer.WriteLine ("Version: {0}", Version);
+ writer.WriteLine ("Libs: -L{0} -l{1}", config.OutputDirectory, config.Output);
+// writer.WriteLine ("Cflags: -I{0}", BaseDirectory);
+ }
+
+ // If this project compiles into a shared object we need to
+ // export the output path to the LD_LIBRARY_PATH
+ string literal = "LD_LIBRARY_PATH";
+ string ld_library_path = Environment.GetEnvironmentVariable (literal);
+
+ if (string.IsNullOrEmpty (ld_library_path)) {
+ Environment.SetEnvironmentVariable (literal, config.OutputDirectory);
+ } else if (!ld_library_path.Contains (config.OutputDirectory)) {
+ ld_library_path = string.Format ("{0}:{1}", config.OutputDirectory, ld_library_path);
+ Environment.SetEnvironmentVariable (literal, ld_library_path);
+ }
+ }
+
+ /// <summary>
+ /// This is the pkg-config package that gets deployed.
+ /// <returns>The pkg-config package's filename</returns>
+ /// </summary>
+ private string WriteDeployablePkgPackage (string configuration)
+ {
+ // FIXME: This should probably be grabed from somewhere.
+ string prefix = "/usr/local";
+ string pkgfile = Path.Combine (BaseDirectory, Name + ".pc");
+ ValaProjectConfiguration config = (ValaProjectConfiguration)GetConfiguration(configuration);
+
+ using (StreamWriter writer = new StreamWriter (pkgfile)) {
+ writer.WriteLine ("prefix={0}", prefix);
+ writer.WriteLine ("exec_prefix=${prefix}");
+ writer.WriteLine ("libdir=${exec_prefix}/lib");
+ writer.WriteLine ("includedir=${prefix}/include");
+ writer.WriteLine ();
+ writer.WriteLine ("Name: {0}", Name);
+ writer.WriteLine ("Description: {0}", Description);
+ writer.WriteLine ("Version: {0}", Version);
+ writer.WriteLine ("Requires: {0}", string.Join (" ", Packages.ToStringArray ()));
+ // TODO: How should I get this?
+ writer.WriteLine ("Conflicts: {0}", string.Empty);
+ writer.Write ("Libs: -L${libdir} ");
+ writer.WriteLine ("-l{0}", config.Output);
+ writer.Write ("Cflags: -I${includedir}/");
+ writer.WriteLine ("{0} {1}", Name, Regex.Replace(((ValaCompilationParameters)config.CompilationParameters).DefineSymbols, @"(^|\s+)(\w+)", "-D$2 ", RegexOptions.Compiled));
+ }
+
+ return pkgfile;
+ }
+
+ protected override BuildResult DoBuild (IProgressMonitor monitor, string configuration)
+ {
+ ValaProjectConfiguration pc = (ValaProjectConfiguration)GetConfiguration(configuration);
+ pc.SourceDirectory = BaseDirectory;
+
+ return compiler_manager.Compile (
+ Files, packages,
+ pc,
+ monitor);
+ }
+
+ protected override bool OnGetCanExecute (MonoDevelop.Projects.ExecutionContext context, string solutionConfiguration)
+ {
+ ValaProjectConfiguration conf = (ValaProjectConfiguration)GetConfiguration(solutionConfiguration);
+ return (conf.CompileTarget == ValaBinding.CompileTarget.Bin) &&
+ context.ExecutionHandler.CanExecute (Path.Combine (conf.OutputDirectory, conf.Output));
+ }
+
+ protected override void DoExecute (IProgressMonitor monitor,
+ ExecutionContext context,
+ string configuration)
+ {
+ ValaProjectConfiguration conf = (ValaProjectConfiguration)GetConfiguration(configuration);
+ string command = conf.Output;
+ string args = conf.CommandLineParameters;
+ string dir = Path.GetFullPath (conf.OutputDirectory);
+ string platform = "Native";
+ bool pause = conf.PauseConsoleOutput;
+ IConsole console;
+
+ if (conf.CompileTarget != ValaBinding.CompileTarget.Bin) {
+ MessageService.ShowMessage ("Compile target is not an executable!");
+ return;
+ }
+
+ monitor.Log.WriteLine ("Running project...");
+
+ if (conf.ExternalConsole)
+ console = context.ExternalConsoleFactory.CreateConsole (!pause);
+ else
+ console = context.ConsoleFactory.CreateConsole (!pause);
+
+ AggregatedOperationMonitor operationMonitor = new AggregatedOperationMonitor (monitor);
+
+ try {
+ if (!context.ExecutionHandler.CanExecute (Path.Combine (dir, command))) {
+ monitor.ReportError ("Cannot execute \"" + command + "\". The selected execution mode is not supported for Vala projects.", null);
+ return;
+ }
+
+ IProcessAsyncOperation op = context.ExecutionHandler.Execute (Path.Combine (dir, command), args, dir, null, console);
+
+ operationMonitor.AddOperation (op);
+ op.WaitForCompleted ();
+
+ monitor.Log.WriteLine ("The operation exited with code: {0}", op.ExitCode);
+ } catch (Exception ex) {
+ monitor.ReportError ("Cannot execute \"" + command + "\"", ex);
+ } finally {
+ operationMonitor.Dispose ();
+ console.Dispose ();
+ }
+ }
+
+ protected override string OnGetOutputFileName (string configuration)
+ {
+ ValaProjectConfiguration conf = (ValaProjectConfiguration)GetConfiguration(configuration);
+ return Path.Combine (conf.OutputDirectory, conf.CompiledOutputName);
+ }
+
+ public override SolutionItemConfiguration CreateConfiguration (string name)
+ {
+ ValaProjectConfiguration conf = new ValaProjectConfiguration ();
+
+ conf.Name = name;
+ conf.CompilationParameters = new ValaCompilationParameters ();
+
+ return conf;
+ }
+
+ public ICompiler Compiler {
+ get { return compiler_manager; }
+ set {
+ if (value != null) {
+ compiler_manager = value;
+ } else {
+ object[] compilers = AddinManager.GetExtensionObjects ("/ValaBinding/Compilers");
+ string compiler = PropertyService.Get ("ValaBinding.DefaultValaCompiler", new ValaCompiler().Name);
+
+ foreach (ICompiler c in compilers) {
+ if (compiler == c.Name) {
+ compiler_manager = c;
+ }
+ }
+ }
+ }
+ }
+
+ [Browsable(false)]
+ [ItemProperty ("Packages")]
+ public ProjectPackageCollection Packages {
+ get { return packages; }
+ set {
+ packages = value;
+ packages.Project = this;
+ foreach(ProjectPackage p in packages) {
+ TagDatabaseManager.Instance.UpdateFileTags(this, p.File);
+ }
+ }
+ }
+
+ protected override void OnFileAddedToProject (ProjectFileEventArgs e)
+ {
+ base.OnFileAddedToProject (e);
+
+ if (!IsCompileable (e.ProjectFile.Name) &&
+ e.ProjectFile.BuildAction == BuildAction.Compile) {
+ e.ProjectFile.BuildAction = BuildAction.None;
+ }
+
+ if (e.ProjectFile.BuildAction == BuildAction.Compile)
+ TagDatabaseManager.Instance.UpdateFileTags (this, e.ProjectFile.Name);
+ }
+
+ protected override void OnFileChangedInProject (ProjectFileEventArgs e)
+ {
+ base.OnFileChangedInProject (e);
+
+ TagDatabaseManager.Instance.UpdateFileTags (this, e.ProjectFile.Name);
+ }
+
+ protected override void OnFileRemovedFromProject (ProjectFileEventArgs e)
+ {
+ base.OnFileRemovedFromProject(e);
+
+ TagDatabaseManager.Instance.RemoveFileInfo (this, e.ProjectFile.Name);
+ }
+
+ private static void OnEntryAddedToCombine (object sender, SolutionItemEventArgs e)
+ {
+ ValaProject p = e.SolutionItem as ValaProject;
+
+ if (p == null)
+ return;
+
+ foreach (ProjectFile f in p.Files)
+ TagDatabaseManager.Instance.UpdateFileTags (p, f.Name);
+ foreach (ProjectPackage package in p.Packages)
+ TagDatabaseManager.Instance.UpdateFileTags (p, package.File);
+ }
+
+ internal void NotifyPackageRemovedFromProject (ProjectPackage package)
+ {
+ if (null != PackageRemovedFromProject) {
+ PackageRemovedFromProject (this, new ProjectPackageEventArgs (this, package));
+ }
+ TagDatabaseManager.Instance.RemoveFileInfo(this, package.File);
+ }
+
+ internal void NotifyPackageAddedToProject (ProjectPackage package)
+ {
+ if(null != PackageAddedToProject) {
+ PackageAddedToProject (this, new ProjectPackageEventArgs (this, package));
+ }
+ TagDatabaseManager.Instance.UpdateFileTags(this, package.File);
+ }
+
+ public DeployFileCollection GetDeployFiles (string configuration)
+ {
+ DeployFileCollection deployFiles = new DeployFileCollection ();
+
+ CompileTarget target = ((ValaProjectConfiguration)GetConfiguration(configuration)).CompileTarget;
+
+ // Headers and resources
+ foreach (ProjectFile f in Files) {
+ if (f.BuildAction == BuildAction.Content) {
+ string targetDirectory =
+ (/*IsHeaderFile (f.Name) ? TargetDirectory.Include :*/ TargetDirectory.ProgramFiles);
+
+ deployFiles.Add (new DeployFile (this, f.FilePath, f.RelativePath, targetDirectory));
+ }
+ }
+
+ // Output
+ string output = GetOutputFileName (configuration);
+ if (!string.IsNullOrEmpty (output)) {
+ string targetDirectory = string.Empty;
+
+ switch (target) {
+ case CompileTarget.Bin:
+ targetDirectory = TargetDirectory.ProgramFiles;
+ break;
+ case CompileTarget.SharedLibrary:
+ targetDirectory = TargetDirectory.ProgramFiles;
+ break;
+ case CompileTarget.StaticLibrary:
+ targetDirectory = TargetDirectory.ProgramFiles;
+ break;
+ }
+
+ deployFiles.Add (new DeployFile (this, output, Path.GetFileName (output), targetDirectory));
+ }
+
+ // PkgPackage
+ if (target != CompileTarget.Bin) {
+ string pkgfile = WriteDeployablePkgPackage (configuration);
+ deployFiles.Add (new DeployFile (this, Path.Combine (BaseDirectory, pkgfile), pkgfile, LinuxTargetDirectory.PkgConfig));
+ }
+
+ return deployFiles;
+ }
+
+ /// <summary>
+ /// Add dependencies of project packages to current project,
+ /// and add cflags for project package and LD_LIBRARY_PATH
+ /// </summary>
+ private void AddDependencies (object obj, ProjectPackageEventArgs args) {
+ ProjectPackage package = args.Package;
+ if (!package.IsProject){ return; }
+
+ string depsfile = Path.ChangeExtension (package.File, ".deps");
+ try {
+ string[] lines = File.ReadAllLines (depsfile);
+ List<ProjectPackage> deps = new List<ProjectPackage>();
+ foreach (string line in lines) {
+ deps.Add(new ProjectPackage(Path.Combine(vapidir, line) + ".vapi"));
+ }// add package for each dep
+ packages.AddRange(deps);
+
+ // Currently, we need to add include directory and linker flags - this should be obsoleted
+ string ccargs = string.Format (" --Xcc=\\\\\\\"-I{0}\\\\\\\" --Xcc=\\\\\\\"-L{0}\\\\\\\" --Xcc=\\\\\\\"-l{1}\\\\\\\" ", Path.GetDirectoryName (depsfile), package.Name);
+ string ldpath = string.Empty;
+ string packagePath = Path.GetDirectoryName(package.File);
+
+ foreach (string pc in GetConfigurations ()) {
+ ValaProjectConfiguration valapc = GetConfiguration (pc) as ValaProjectConfiguration;
+ if (null == valapc){ continue; }
+
+ ValaCompilationParameters vcp = (ValaCompilationParameters)valapc.CompilationParameters;
+ if (!vcp.ExtraCompilerArguments.Contains (ccargs)){ vcp.ExtraCompilerArguments += ccargs; }
+
+ if(valapc.EnvironmentVariables.TryGetValue ("LD_LIBRARY_PATH", out ldpath)) {
+ if (!ldpath.Contains (packagePath)){ ldpath += Path.PathSeparator + packagePath; }
+ } else {
+ ldpath = packagePath;
+ }
+
+ valapc.EnvironmentVariables["LD_LIBRARY_PATH"] = ldpath;
+ }// add compilation parameters and LD_LIBRARY_PATH
+ } catch { /* Do anything here? */ }
+ }// AddDependencies
+ }
+}
diff --git a/Project/ValaProjectBinding.cs b/Project/ValaProjectBinding.cs
new file mode 100644
index 0000000..eb596c0
--- /dev/null
+++ b/Project/ValaProjectBinding.cs
@@ -0,0 +1,74 @@
+//
+// ValaProjectBinding.cs: binding for a ValaProject
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Xml;
+using System.IO;
+
+using Mono.Addins;
+
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.ValaBinding
+{
+ public class ValaProjectBinding : IProjectBinding
+ {
+ public string Name {
+ get { return "Vala"; }
+ }
+
+ public Project CreateProject (ProjectCreateInformation info,
+ XmlElement projectOptions)
+ {
+ string language = projectOptions.GetAttribute ("language");
+ return new ValaProject (info, projectOptions, language);
+ }
+
+ public Project CreateSingleFileProject (string sourceFile)
+ {
+ ProjectCreateInformation info = new ProjectCreateInformation ();
+ info.ProjectName = Path.GetFileNameWithoutExtension (sourceFile);
+ info.CombinePath = Path.GetDirectoryName (sourceFile);
+ info.ProjectBasePath = Path.GetDirectoryName (sourceFile);
+
+ string language = "Vala";
+
+ Project project = new ValaProject (info, null, language);
+ project.Files.Add (new ProjectFile (sourceFile));
+ return project;
+ }
+
+ public bool CanCreateSingleFileProject (string sourceFile)
+ {
+ return sourceFile.EndsWith (".vala", StringComparison.OrdinalIgnoreCase);
+ }
+ }
+}
diff --git a/Project/ValaProjectConfiguration.cs b/Project/ValaProjectConfiguration.cs
new file mode 100644
index 0000000..11834f4
--- /dev/null
+++ b/Project/ValaProjectConfiguration.cs
@@ -0,0 +1,166 @@
+//
+// ValaProjectConfiguration.cs: Configuration for Vala projects
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.Collections;
+
+using Mono.Addins;
+
+using MonoDevelop.Projects;
+using MonoDevelop.Core.Serialization;
+
+namespace MonoDevelop.ValaBinding
+{
+ public enum CompileTarget {
+ Bin,
+ StaticLibrary,
+ SharedLibrary
+ };
+
+ public class ValaProjectConfiguration : ProjectConfiguration
+ {
+ [ItemProperty("Output/output")]
+ string output = string.Empty;
+
+ [ItemProperty("Build/target")]
+ ValaBinding.CompileTarget target = ValaBinding.CompileTarget.Bin;
+
+ [ItemProperty ("Includes")]
+ [ProjectPathItemProperty ("Include", Scope = "*", ValueType = typeof(string))]
+ private ArrayList includes = new ArrayList ();
+
+// [ItemProperty ("LibPaths")]
+// [ProjectPathItemProperty ("LibPath", Scope = 1, ValueType = typeof(string))]
+// private ArrayList libpaths = new ArrayList ();
+//
+ [ItemProperty ("Libs")]
+ [ItemProperty ("Lib", Scope = "*", ValueType = typeof(string))]
+ private ArrayList libs = new ArrayList ();
+
+ [ItemProperty ("CodeGeneration",
+ FallbackType = typeof(UnknownCompilationParameters))]
+ ICloneable compilationParameters;
+
+ [ProjectPathItemProperty ("SourceDirectory")]
+ private string source_directory_path;
+
+ public string Output {
+ get { return output; }
+ set { output = value; }
+ }
+
+ public CompileTarget CompileTarget {
+ get { return target; }
+ set { target = value; }
+ }
+
+ public ICloneable CompilationParameters {
+ get { return compilationParameters; }
+ set { compilationParameters = value; }
+ }
+
+ // TODO: This should be revised to use the naming conventions depending on OS
+ public string CompiledOutputName {
+ get {
+ string suffix = string.Empty;
+ string prefix = string.Empty;
+
+ switch (target)
+ {
+ case CompileTarget.Bin:
+ break;
+ case CompileTarget.StaticLibrary:
+ if (!Output.StartsWith ("lib"))
+ prefix = "lib";
+ if (!Output.EndsWith (".a"))
+ suffix = ".a";
+ break;
+ case CompileTarget.SharedLibrary:
+ if (!Output.StartsWith ("lib"))
+ prefix = "lib";
+ if (!Output.EndsWith (".so"))
+ suffix = ".so";
+ break;
+ }
+
+ return string.Format("{0}{1}{2}", prefix, Output, suffix);
+ }
+ }
+
+ public string SourceDirectory {
+ get { return source_directory_path; }
+ set { source_directory_path = value; }
+ }
+
+ public ArrayList Includes {
+ get { return includes; }
+ set { includes = value; }
+ }
+
+ public ArrayList Libs {
+ get { return libs; }
+ set { libs = value; }
+ }
+
+ public override void CopyFrom (ItemConfiguration configuration)
+ {
+ base.CopyFrom (configuration);
+ ValaProjectConfiguration conf = (ValaProjectConfiguration)configuration;
+
+ output = conf.output;
+ target = conf.target;
+ includes = conf.includes;
+ libs = conf.libs;
+ source_directory_path = conf.source_directory_path;
+
+ if (conf.CompilationParameters == null) {
+ compilationParameters = null;
+ } else {
+ compilationParameters = (ICloneable)conf.compilationParameters.Clone ();
+ }
+ }
+ }
+
+ public class UnknownCompilationParameters : ICloneable, IExtendedDataItem
+ {
+ Hashtable table = new Hashtable ();
+
+ public IDictionary ExtendedProperties {
+ get { return table; }
+ }
+
+ public object Clone ()
+ {
+ return MemberwiseClone ();
+ }
+ }
+}
diff --git a/Project/ValaProjectServiceExtension.cs b/Project/ValaProjectServiceExtension.cs
new file mode 100644
index 0000000..4b66fd1
--- /dev/null
+++ b/Project/ValaProjectServiceExtension.cs
@@ -0,0 +1,77 @@
+//
+// ValaProjectServiceExtension.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.IO;
+using System.Text;
+
+using Mono.Addins;
+
+using MonoDevelop.Core;
+using MonoDevelop.Projects;
+using MonoDevelop.Core.Execution;
+
+namespace MonoDevelop.ValaBinding
+{
+ public class ValaProjectServiceExtension : ProjectServiceExtension
+ {
+ protected override BuildResult Build (IProgressMonitor monitor, SolutionEntityItem entry, string configuration)
+ {
+ ValaProject project = entry as ValaProject;
+
+ if (project == null)
+ return base.Build (monitor, entry, configuration);
+
+ foreach (ValaProject p in project.DependedOnProjects ()) {
+ p.Build (monitor, configuration, true);
+ }
+
+ ValaProjectConfiguration conf = (ValaProjectConfiguration)project.GetConfiguration(configuration);
+
+ if (conf.CompileTarget != CompileTarget.Bin)
+ project.WriteMDPkgPackage (configuration);
+
+ return base.Build (monitor, entry, configuration);
+ }
+
+ protected override void Clean (IProgressMonitor monitor, SolutionEntityItem entry, string configuration)
+ {
+ base.Clean (monitor, entry, configuration);
+
+ ValaProject project = entry as ValaProject;
+ if (project == null)
+ return;
+
+ project.Compiler.Clean (project.Files, (ValaProjectConfiguration) project.GetConfiguration(configuration), monitor);
+ }
+ }
+}
diff --git a/ProjectPad/ProjectNodeExtension.cs b/ProjectPad/ProjectNodeExtension.cs
new file mode 100644
index 0000000..6b174df
--- /dev/null
+++ b/ProjectPad/ProjectNodeExtension.cs
@@ -0,0 +1,59 @@
+//
+// ProjectNodeExtension.cs: Adds the packages node to a ValaProject
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+
+using Mono.Addins;
+
+using MonoDevelop.Projects;
+using MonoDevelop.Ide.Gui.Pads;
+using MonoDevelop.Ide.Gui.Components;
+
+namespace MonoDevelop.ValaBinding.ProjectPad
+{
+ public class ProjectNodeExtension : NodeBuilderExtension
+ {
+ public override bool CanBuildNode (Type dataType)
+ {
+ return typeof(ValaProject).IsAssignableFrom (dataType);
+ }
+
+ public override void BuildChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ ValaProject p = dataObject as ValaProject;
+
+ if (p == null) return;
+
+ builder.AddChild (p.Packages);
+ }
+ }
+}
diff --git a/ProjectPad/ProjectPackageNodeBuilder.cs b/ProjectPad/ProjectPackageNodeBuilder.cs
new file mode 100644
index 0000000..1cdb02f
--- /dev/null
+++ b/ProjectPad/ProjectPackageNodeBuilder.cs
@@ -0,0 +1,109 @@
+//
+// ProjectPackageNodeBuilder.cs
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Reflection;
+
+using Mono.Addins;
+
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Ide.Gui.Pads;
+using MonoDevelop.Components.Commands;
+using MonoDevelop.Ide.Commands;
+using MonoDevelop.Ide.Gui.Components;
+
+namespace MonoDevelop.ValaBinding.ProjectPad
+{
+ public class ProjectPackageNodeBuilder : TypeNodeBuilder
+ {
+ public override Type NodeDataType {
+ get { return typeof(ProjectPackage); }
+ }
+
+ public override Type CommandHandlerType {
+ get { return typeof(PackageNodeCommandHandler); }
+ }
+
+ public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
+ {
+ return ((ProjectPackage)dataObject).File;
+ }
+
+ public override string ContextMenuAddinPath {
+ get { return "/MonoDevelop/ValaBinding/Views/ProjectBrowser/ContextMenu/PackageNode"; }
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder,
+ object dataObject,
+ ref string label,
+ ref Gdk.Pixbuf icon,
+ ref Gdk.Pixbuf closedIcon)
+ {
+ label = ((ProjectPackage)dataObject).Name;
+
+ if (((ProjectPackage)dataObject).IsProject)
+ icon = new Gdk.Pixbuf (Assembly.GetExecutingAssembly (), "Icons.16x16.ProjectReference");
+ else
+ icon = Context.GetIcon (Stock.Reference);
+ }
+ }
+
+ public class PackageNodeCommandHandler : NodeCommandHandler
+ {
+ public override void DeleteItem ()
+ {
+ ProjectPackage package = CurrentNode.DataItem as ProjectPackage;
+ ValaProject project = CurrentNode.GetParentDataItem (
+ typeof(ValaProject), false) as ValaProject;
+
+ project.Packages.Remove (package);
+
+ IdeApp.ProjectOperations.Save (project);
+ }
+
+ public override DragOperation CanDragNode ()
+ {
+ return DragOperation.Copy;
+ }
+
+ [CommandHandler (MonoDevelop.ValaBinding.ValaProjectCommands.ShowPackageDetails)]
+ public void ShowPackageDetails ()
+ {
+ ProjectPackage package = (ProjectPackage)CurrentNode.DataItem;
+
+ // package.ParsePackage ();
+
+ PackageDetails details = new PackageDetails (package);
+ details.Show ();
+ }
+ }
+}
diff --git a/ProjectPad/ProjectPackagesFolderNodeBuilder.cs b/ProjectPad/ProjectPackagesFolderNodeBuilder.cs
new file mode 100644
index 0000000..7b7d050
--- /dev/null
+++ b/ProjectPad/ProjectPackagesFolderNodeBuilder.cs
@@ -0,0 +1,204 @@
+//
+// ProjectPackagesFolderNodeBuilder.cs: Node to control the packages in the project
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+
+using Mono.Addins;
+
+using MonoDevelop.Components.Commands;
+using MonoDevelop.Projects;
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Ide.Gui.Pads;
+using MonoDevelop.Ide.Gui.Pads.ProjectPad;
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Ide.Gui.Components;
+
+namespace MonoDevelop.ValaBinding.ProjectPad
+{
+ public class ProjectPackagesFolderNodeBuilder : TypeNodeBuilder
+ {
+ ProjectPackageEventHandler addedHandler;
+ ProjectPackageEventHandler removedHandler;
+
+ public override Type NodeDataType {
+ get { return typeof(ProjectPackageCollection); }
+ }
+
+ public override void OnNodeAdded (object dataObject)
+ {
+ ValaProject project = ((ProjectPackageCollection)dataObject).Project;
+ if (project == null) return;
+ project.PackageAddedToProject += addedHandler;
+ project.PackageRemovedFromProject += removedHandler;
+ }
+
+ public override void OnNodeRemoved (object dataObject)
+ {
+ ValaProject project = ((ProjectPackageCollection)dataObject).Project;
+ if (project == null) return;
+ project.PackageAddedToProject -= addedHandler;
+ project.PackageRemovedFromProject -= removedHandler;
+ }
+
+ public override Type CommandHandlerType {
+ get { return typeof(ProjectPackagesFolderNodeCommandHandler); }
+ }
+
+ protected override void Initialize ()
+ {
+ addedHandler = (ProjectPackageEventHandler)DispatchService.GuiDispatch (new ProjectPackageEventHandler (OnAddPackage));
+ removedHandler = (ProjectPackageEventHandler)DispatchService.GuiDispatch (new ProjectPackageEventHandler (OnRemovePackage));
+ }
+
+ public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
+ {
+ return "Packages";
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, ref string label, ref Gdk.Pixbuf icon, ref Gdk.Pixbuf closedIcon)
+ {
+ label = "Packages";
+ icon = Context.GetIcon (Stock.OpenReferenceFolder);
+ closedIcon = Context.GetIcon (Stock.ClosedReferenceFolder);
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ return ((ProjectPackageCollection)dataObject).Count > 0;
+ }
+
+ public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject)
+ {
+ ProjectPackageCollection packages = (ProjectPackageCollection)dataObject;
+
+ foreach (ProjectPackage p in packages)
+ treeBuilder.AddChild (p);
+ }
+
+ public override string ContextMenuAddinPath {
+ get { return "/MonoDevelop/ValaBinding/Views/ProjectBrowser/ContextMenu/PackagesFolderNode"; }
+ }
+
+ public override int CompareObjects (ITreeNavigator thisNode, ITreeNavigator otherNode)
+ {
+ return -1;
+ }
+
+ private void OnAddPackage (object sender, ProjectPackageEventArgs e)
+ {
+ ITreeBuilder builder = Context.GetTreeBuilder (e.Project.Packages);
+ if (builder != null)
+ builder.UpdateAll ();
+ }
+
+ private void OnRemovePackage (object sender, ProjectPackageEventArgs e)
+ {
+ ITreeBuilder builder = Context.GetTreeBuilder (e.Project.Packages);
+ if (builder != null)
+ builder.UpdateAll ();
+ }
+ }
+
+ public class ProjectPackagesFolderNodeCommandHandler : NodeCommandHandler
+ {
+ [CommandHandler (MonoDevelop.ValaBinding.ValaProjectCommands.AddPackage)]
+ public void AddPackageToProject ()
+ {
+ ValaProject project = (ValaProject)CurrentNode.GetParentDataItem (
+ typeof(ValaProject), false);
+
+ EditPackagesDialog dialog = new EditPackagesDialog (project);
+ dialog.Run ();
+
+ IdeApp.ProjectOperations.Save (project);
+ CurrentNode.Expanded = true;
+ }
+
+ // Currently only accepts packages and projects that compile into a static library
+ public override bool CanDropNode (object dataObject, DragOperation operation)
+ {
+ if (dataObject is ProjectPackage)
+ return true;
+
+ if (dataObject is ValaProject) {
+ ValaProject project = (ValaProject)dataObject;
+
+ if (((ProjectPackageCollection)CurrentNode.DataItem).Project.Equals (project))
+ return false;
+
+ ValaProjectConfiguration config = (ValaProjectConfiguration)project.GetConfiguration (IdeApp.Workspace.ActiveConfiguration);
+
+ if (config.CompileTarget != ValaBinding.CompileTarget.Bin)
+ return true;
+ }
+
+ return false;
+ }
+
+ public override DragOperation CanDragNode ()
+ {
+ return DragOperation.Copy | DragOperation.Move;
+ }
+
+ public override void OnNodeDrop (object dataObject, DragOperation operation)
+ {
+ if (dataObject is ProjectPackage) {
+ ProjectPackage package = (ProjectPackage)dataObject;
+ ITreeNavigator nav = CurrentNode;
+
+ ValaProject dest = nav.GetParentDataItem (typeof(ValaProject), true) as ValaProject;
+ nav.MoveToObject (dataObject);
+ ValaProject source = nav.GetParentDataItem (typeof(ValaProject), true) as ValaProject;
+
+ dest.Packages.Add (package);
+ IdeApp.ProjectOperations.Save (dest);
+
+ if (operation == DragOperation.Move) {
+ source.Packages.Remove (package);
+ IdeApp.ProjectOperations.Save (source);
+ }
+ } else if (dataObject is ValaProject) {
+ ValaProject draggedProject = (ValaProject)dataObject;
+ ValaProject destProject = (CurrentNode.DataItem as ProjectPackageCollection).Project;
+
+ draggedProject.WriteMDPkgPackage (IdeApp.Workspace.ActiveConfiguration);
+
+ ProjectPackage package = new ProjectPackage (draggedProject);
+
+ if (!destProject.Packages.Contains (package)) {
+ destProject.Packages.Add (package);
+ IdeApp.ProjectOperations.Save (destProject);
+ }
+ }
+ }
+ }
+}
diff --git a/ProjectPad/ProjectReferencesExtension.cs b/ProjectPad/ProjectReferencesExtension.cs
new file mode 100644
index 0000000..1c7545a
--- /dev/null
+++ b/ProjectPad/ProjectReferencesExtension.cs
@@ -0,0 +1,57 @@
+//
+// ProjectReferencesExtension.cs: Hides the ProjectReferencesNode if this is a Vala project
+//
+// Authors:
+// Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// Copyright (C) 2007 Marcos David Marin Amador
+//
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Mono.Addins;
+
+using MonoDevelop.Projects;
+using MonoDevelop.Ide.Gui.Pads;
+using MonoDevelop.Ide.Gui.Components;
+
+namespace MonoDevelop.ValaBinding.ProjectPad
+{
+ public class ProjectReferencesExtension : NodeBuilderExtension
+ {
+ public override bool CanBuildNode (Type dataType)
+ {
+ return typeof(ProjectReferenceCollection).IsAssignableFrom (dataType);
+ }
+
+ public override void GetNodeAttributes (ITreeNavigator parentNode, object dataObject, ref NodeAttributes attributes)
+ {
+ Project p = parentNode.DataItem as Project;
+
+ if (p is ValaProject)
+ attributes |= NodeAttributes.Hidden;
+ }
+ }
+}
diff --git a/README b/README
new file mode 100644
index 0000000..4eaa14d
--- /dev/null
+++ b/README
@@ -0,0 +1 @@
+ValaBinding is a Vala language binding for MonoDevelop.
diff --git a/ValaBinding.addin.xml b/ValaBinding.addin.xml
new file mode 100644
index 0000000..16535dc
--- /dev/null
+++ b/ValaBinding.addin.xml
@@ -0,0 +1,165 @@
+<Addin id = "ValaBinding"
+ namespace = "MonoDevelop"
+ name = "Vala Language Binding"
+ author = "Levi Bard"
+ copyright = "MIT/X11"
+ url = "http://www.monodevelop.com"
+ description = "Vala Language binding"
+ category = "Language bindings"
+ version = "1.9.3">
+
+ <Dependencies>
+ <Addin id = "Core" version = "1.9.3"/>
+ <Addin id = "Core.Gui" version = "1.9.3"/>
+ <Addin id = "Projects" version = "1.9.3"/>
+ <Addin id = "Projects.Gui" version = "1.9.3"/>
+ <Addin id = "Ide" version = "1.9.3"/>
+ <Addin id = "Components" version = "1.9.3"/>
+ <Addin id = "Deployment" version = "1.9.3"/>
+ <Addin id = "Deployment.Linux" version = "1.9.3"/>
+ </Dependencies>
+
+ <Extension path = "/MonoDevelop/Core/StockIcons">
+ <StockIcon stockid = "md-union" resource = "Icons.16x16.Union"/>
+ <StockIcon stockid = "md-protected-union" resource = "Icons.16x16.ProtectedUnion"/>
+ <StockIcon stockid = "md-private-union" resource = "Icons.16x16.PrivateUnion"/>
+ <StockIcon stockid = "md-vala-file" resource = "text-x-vala.16x16.png" />
+ </Extension>
+
+ <Extension path = "/MonoDevelop/Ide/FileFilters">
+ <FileFilter
+ id = "Vala"
+ insertbefore = "AllFiles"
+ _label = "Vala Files"
+ extensions = "*.vala,*.vapi" />
+ </Extension>
+
+ <Extension path = "/MonoDevelop/Ide/FileTemplates">
+ <FileTemplate id = "EmptyValaSourceFile" resource = "EmptyValaSourceFile.xft.xml"/>
+ </Extension>
+
+ <Extension path = "/MonoDevelop/Ide/ProjectTemplates">
+ <ProjectTemplate id = "EmptyValaProject" resource = "EmptyValaProject.xpt.xml"/>
+ <ProjectTemplate id = "ConsoleValaProject" resource = "ConsoleValaProject.xpt.xml"/>
+ <ProjectTemplate id = "SharedLibraryValaProject" resource = "SharedLibraryValaProject.xpt.xml"/>
+ <ProjectTemplate id = "ValaTestFixture" resource = "ValaTestFixture.xpt.xml"/>
+ </Extension>
+
+ <Extension path = "/MonoDevelop/Core/MimeTypes">
+ <MimeType id="text/x-vala" icon="md-vala-file">
+ <File pattern="*.vala" />
+ <File pattern="*.vapi" />
+ </MimeType>
+ </Extension>
+
+ <Extension path = "/MonoDevelop/ProjectModel/Gui/Icons">
+ <Icon extensions = ".vala" icon = "res:text-x-vala.16x16.png"/>
+ <Icon extensions = ".vapi" icon = "res:text-x-vala.16x16.png"/>
+ </Extension>
+
+ <Extension path = "/MonoDevelop/ProjectModel/ProjectBindings">
+ <ProjectBinding id = "ValaProject" class = "MonoDevelop.ValaBinding.ValaProjectBinding"/>
+ </Extension>
+
+ <Extension path = "/MonoDevelop/ProjectModel/LanguageBindings">
+ <LanguageBinding
+ id = "Vala"
+ supportedextensions = ".vala,.vapi"
+ class = "MonoDevelop.ValaBinding.ValaLanguageBinding"/>
+ </Extension>
+
+ <Extension path = "/MonoDevelop/Ide/GlobalOptionsDialog/Other">
+ <Section
+ id = "ValaBindingOptions"
+ _label = "Vala"
+ class = "MonoDevelop.ValaBinding.GeneralOptionsPanelBinding"/>
+ </Extension>
+
+ <Extension path = "/MonoDevelop/ProjectModel/Gui/ItemOptionPanels/Build">
+ <Condition id = "ItemType" value = "MonoDevelop.ValaBinding.ValaProject">
+ <Section
+ id = "CodeGenerationPanel"
+ _label = "Code Generation"
+ insertafter = "Compile"
+ class = "MonoDevelop.ValaBinding.CodeGenerationPanelBinding"/>
+ <Section
+ id = "OutputOptionsPanel"
+ _label = "Output"
+ class = "MonoDevelop.ValaBinding.OutputOptionsPanelBinding"/>
+ </Condition>
+ </Extension>
+
+ <ExtensionPoint path = "/MonoDevelop/ValaBinding/Views/ProjectBrowser/ContextMenu/PackagesFolderNode" name = "Packages folder context menu">
+ <Description>Context menu for packages folder in the solution pad.</Description>
+ <ExtensionNodeSet id = "MonoDevelop.Components.Commands.ItemSet"/>
+ </ExtensionPoint>
+
+ <ExtensionPoint path = "/MonoDevelop/ValaBinding/Views/ProjectBrowser/ContextMenu/PackageNode" name = "ProjectPackage context menu">
+ <Description>Context menu for a package in the solution pad.</Description>
+ <ExtensionNodeSet id = "MonoDevelop.Components.Commands.ItemSet"/>
+ </ExtensionPoint>
+
+ <Extension path = "/MonoDevelop/Ide/Pads/ProjectPad">
+ <NodeBuilder id = "MonoDevelop.ValaBinding.ProjectPad.ProjectReferencesExtension" class = "MonoDevelop.ValaBinding.ProjectPad.ProjectReferencesExtension"/>
+ <NodeBuilder id = "MonoDevelop.ValaBinding.ProjectPad.ProjectPackagesFolderNodeBuilder" class = "MonoDevelop.ValaBinding.ProjectPad.ProjectPackagesFolderNodeBuilder"/>
+ <NodeBuilder id = "MonoDevelop.ValaBinding.ProjectPad.ProjectPackageNodeBuilder" class = "MonoDevelop.ValaBinding.ProjectPad.ProjectPackageNodeBuilder"/>
+ <NodeBuilder id = "MonoDevelop.ValaBinding.ProjectPad.ProjectNodeExtension" class = "MonoDevelop.ValaBinding.ProjectPad.ProjectNodeExtension"/>
+ </Extension>
+
+ <Extension path = "/MonoDevelop/Ide/Pads/ClassPad">
+ <NodeBuilder id = "MonoDevelop.ValaBinding.Navigation.ProjectNodeBuilderExtension" class = "MonoDevelop.ValaBinding.Navigation.ProjectNodeBuilderExtension"/>
+ <NodeBuilder id = "MonoDevelop.ValaBinding.Navigation.NamespaceNodeBuilder" class = "MonoDevelop.ValaBinding.Navigation.NamespaceNodeBuilder"/>
+ <NodeBuilder id = "MonoDevelop.ValaBinding.Navigation.FunctionNodeBuilder" class = "MonoDevelop.ValaBinding.Navigation.FunctionNodeBuilder"/>
+ <NodeBuilder id = "MonoDevelop.ValaBinding.Navigation.GlobalsNodeBuilder" class = "MonoDevelop.ValaBinding.Navigation.GlobalsNodeBuilder"/>
+ <NodeBuilder id = "MonoDevelop.ValaBinding.Navigation.ClassNodeBuilder" class = "MonoDevelop.ValaBinding.Navigation.ClassNodeBuilder"/>
+ <NodeBuilder id = "MonoDevelop.ValaBinding.Navigation.StructureNodeBuilder" class = "MonoDevelop.ValaBinding.Navigation.StructureNodeBuilder"/>
+ <NodeBuilder id = "MonoDevelop.ValaBinding.Navigation.MemberNodeBuilder" class = "MonoDevelop.ValaBinding.Navigation.MemberNodeBuilder"/>
+ <NodeBuilder id = "MonoDevelop.ValaBinding.Navigation.VariableNodeBuilder" class = "MonoDevelop.ValaBinding.Navigation.VariableNodeBuilder"/>
+ <NodeBuilder id = "MonoDevelop.ValaBinding.Navigation.MacroDefinitionsNodeBuilder" class = "MonoDevelop.ValaBinding.Navigation.MacroDefinitionsNodeBuilder"/>
+ <NodeBuilder id = "MonoDevelop.ValaBinding.Navigation.MacroNodeBuilder" class = "MonoDevelop.ValaBinding.Navigation.MacroNodeBuilder"/>
+ <NodeBuilder id = "MonoDevelop.ValaBinding.Navigation.EnumerationNodeBuilder" class = "MonoDevelop.ValaBinding.Navigation.EnumerationNodeBuilder"/>
+ <NodeBuilder id = "MonoDevelop.ValaBinding.Navigation.EnumeratorNodeBuilder" class = "MonoDevelop.ValaBinding.Navigation.EnumeratorNodeBuilder"/>
+ <NodeBuilder id = "MonoDevelop.ValaBinding.Navigation.UnionNodeBuilder" class = "MonoDevelop.ValaBinding.Navigation.UnionNodeBuilder"/>
+ <NodeBuilder id = "MonoDevelop.ValaBinding.Navigation.TypedefNodeBuilder" class = "MonoDevelop.ValaBinding.Navigation.TypedefNodeBuilder"/>
+ </Extension>
+
+ <Extension path = "/MonoDevelop/Ide/Commands">
+ <Category _name = "Vala" id = "Vala">
+ <Command id = "MonoDevelop.ValaBinding.ValaProjectCommands.UpdateClassPad" _label = "Update class pad" icon = "res:update" />
+ <Command id = "MonoDevelop.ValaBinding.ValaProjectCommands.AddPackage" _label = "Edit Packages..." />
+ <Command id = "MonoDevelop.ValaBinding.ValaProjectCommands.ShowPackageDetails" _label = "Details..." />
+ </Category>
+ </Extension>
+
+ <Extension path = "/MonoDevelop/ValaBinding/Views/ProjectBrowser/ContextMenu/PackagesFolderNode">
+ <CommandItem id = "MonoDevelop.ValaBinding.ValaProjectCommands.AddPackage"/>
+ <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Paste"/>
+ </Extension>
+
+ <Extension path = "/MonoDevelop/Ide/ContextMenu/ClassPad/Project">
+ <CommandItem id = "MonoDevelop.ValaBinding.ValaProjectCommands.UpdateClassPad"/>
+ </Extension>
+
+ <Extension path = "/MonoDevelop/ValaBinding/Views/ProjectBrowser/ContextMenu/PackageNode">
+ <CommandItem id = "MonoDevelop.ValaBinding.ValaProjectCommands.ShowPackageDetails"/>
+ <SeparatorItem id = "Separator1" />
+ <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Copy"/>
+ <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Delete"/>
+ </Extension>
+
+ <Extension path = "/MonoDevelop/Ide/TextEditorExtensions">
+ <Class class = "MonoDevelop.ValaBinding.ValaTextEditorExtension" />
+ </Extension>
+
+ <Extension path = "/MonoDevelop/ProjectModel/ProjectServiceExtensions">
+ <Class id = "ExtraSteps" class = "MonoDevelop.ValaBinding.ValaProjectServiceExtension"/>
+ </Extension>
+
+ <Extension path = "/MonoDevelop/ProjectModel/SerializableClasses">
+ <DataType class = "MonoDevelop.ValaBinding.ValaCompilationParameters"/>
+ <DataType class = "MonoDevelop.ValaBinding.ValaProjectConfiguration"/>
+ <DataType class = "MonoDevelop.ValaBinding.ValaProject"/>
+ <DataType class = "MonoDevelop.ValaBinding.ValaCompiler"/>
+ <DataType class = "MonoDevelop.ValaBinding.ProjectPackage"/>
+ </Extension>
+</Addin>
diff --git a/ValaLanguageBinding.cs b/ValaLanguageBinding.cs
new file mode 100644
index 0000000..6a411bd
--- /dev/null
+++ b/ValaLanguageBinding.cs
@@ -0,0 +1,75 @@
+//
+// ValaLanguageBinding.cs
+//
+// Authors:
+// Levi Bard <taktaktaktaktaktaktaktaktaktak at gmail.com>
+//
+// Copyright (C) 2008 Levi Bard
+// Based on CBinding by Marcos David Marin Amador <MarcosMarin at gmail.com>
+//
+// This source code is licenced under The MIT License:
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.IO;
+
+using Mono.Addins;
+
+using MonoDevelop.Projects;
+using MonoDevelop.Core;
+using MonoDevelop.Projects.Dom.Parser;
+using MonoDevelop.Projects.CodeGeneration;
+
+namespace MonoDevelop.ValaBinding
+{
+ public class ValaLanguageBinding : ILanguageBinding
+ {
+ public string Language {
+ get { return "Vala"; }
+ }
+
+ public string CommentTag {
+ get { return "//"; }
+ }
+
+ public bool IsSourceCodeFile (string fileName)
+ {
+ string ext = Path.GetExtension(fileName);
+ return (ext.Equals(".vala", StringComparison.OrdinalIgnoreCase) ||
+ ext.Equals(".vapi", StringComparison.OrdinalIgnoreCase));
+ }
+
+ public IParser Parser {
+ get { return null; }
+ }
+
+ public IRefactorer Refactorer {
+ get { return null; }
+ }
+
+ public string GetFileName (string baseName)
+ {
+ return baseName + ".vala";
+ }
+ }
+}
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000..a7b35b2
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,791 @@
+# generated automatically by aclocal 1.10.1 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(AC_AUTOCONF_VERSION, [2.61],,
+[m4_warning([this file was generated for autoconf 2.61.
+You have another version of autoconf. It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+#
+# Copyright © 2004 Scott James Remnant <scott at netsplit.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=m4_default([$1], [0.9.0])
+ AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ PKG_CONFIG=""
+ fi
+
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists. Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+#
+# Similar to PKG_CHECK_MODULES, make sure that the first instance of
+# this or PKG_CHECK_MODULES is called, or make sure to call
+# PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+ m4_ifval([$2], [$2], [:])
+m4_ifvaln([$3], [else
+ $3])dnl
+fi])
+
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$$1"; then
+ pkg_cv_[]$1="$$1"
+ elif test -n "$PKG_CONFIG"; then
+ PKG_CHECK_EXISTS([$3],
+ [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+ [pkg_failed=yes])
+ else
+ pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi[]dnl
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+ _PKG_SHORT_ERRORS_SUPPORTED
+ if test $_pkg_short_errors_supported = yes; then
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1`
+ else
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+ ifelse([$4], , [AC_MSG_ERROR(dnl
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT
+])],
+ [AC_MSG_RESULT([no])
+ $4])
+elif test $pkg_failed = untried; then
+ ifelse([$4], , [AC_MSG_FAILURE(dnl
+[The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])],
+ [$4])
+else
+ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+ AC_MSG_RESULT([yes])
+ ifelse([$3], , :, [$3])
+fi[]dnl
+])# PKG_CHECK_MODULES
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.10'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.10.1], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.10.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 8
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 13
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.60])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES(OBJC)],
+ [define([AC_PROG_OBJC],
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+AC_DEFUN([AM_MAINTAINER_MODE],
+[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+ dnl maintainer-mode is disabled by default
+ AC_ARG_ENABLE(maintainer-mode,
+[ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer],
+ USE_MAINTAINER_MODE=$enableval,
+ USE_MAINTAINER_MODE=no)
+ AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+ AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
+ MAINT=$MAINTAINER_MODE_TRUE
+ AC_SUBST(MAINT)dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+ [[\\/$]]* | ?:[[\\/]]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+ ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ (exit $ac_status); }])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
diff --git a/configure b/configure
new file mode 100755
index 0000000..ba86721
--- /dev/null
+++ b/configure
@@ -0,0 +1,5139 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.61 for monodevelop-vala 1.9.3.
+#
+# Report bugs to <taktaktaktaktaktaktaktaktaktak at gmail.com>.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+as_nl='
+'
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+if test "x$CONFIG_SHELL" = x; then
+ if (eval ":") 2>/dev/null; then
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+
+ if test $as_have_required = yes && (eval ":
+(as_func_return () {
+ (exit \$1)
+}
+as_func_success () {
+ as_func_return 0
+}
+as_func_failure () {
+ as_func_return 1
+}
+as_func_ret_success () {
+ return 0
+}
+as_func_ret_failure () {
+ return 1
+}
+
+exitcode=0
+if as_func_success; then
+ :
+else
+ exitcode=1
+ echo as_func_success failed.
+fi
+
+if as_func_failure; then
+ exitcode=1
+ echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+ :
+else
+ exitcode=1
+ echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+ exitcode=1
+ echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+ :
+else
+ exitcode=1
+ echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0) || { (exit 1); exit 1; }
+
+(
+ as_lineno_1=\$LINENO
+ as_lineno_2=\$LINENO
+ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
+ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
+") 2> /dev/null; then
+ :
+else
+ as_candidate_shells=
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ case $as_dir in
+ /*)
+ for as_base in sh bash ksh sh5; do
+ as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
+ done;;
+ esac
+done
+IFS=$as_save_IFS
+
+
+ for as_shell in $as_candidate_shells $SHELL; do
+ # Try only shells that exist, to save several forks.
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { ("$as_shell") 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+_ASEOF
+}; then
+ CONFIG_SHELL=$as_shell
+ as_have_required=yes
+ if { "$as_shell" 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+(as_func_return () {
+ (exit $1)
+}
+as_func_success () {
+ as_func_return 0
+}
+as_func_failure () {
+ as_func_return 1
+}
+as_func_ret_success () {
+ return 0
+}
+as_func_ret_failure () {
+ return 1
+}
+
+exitcode=0
+if as_func_success; then
+ :
+else
+ exitcode=1
+ echo as_func_success failed.
+fi
+
+if as_func_failure; then
+ exitcode=1
+ echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+ :
+else
+ exitcode=1
+ echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+ exitcode=1
+ echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = "$1" ); then
+ :
+else
+ exitcode=1
+ echo positional parameters were not saved.
+fi
+
+test $exitcode = 0) || { (exit 1); exit 1; }
+
+(
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
+
+_ASEOF
+}; then
+ break
+fi
+
+fi
+
+ done
+
+ if test "x$CONFIG_SHELL" != x; then
+ for as_var in BASH_ENV ENV
+ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ done
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+
+ if test $as_have_required = no; then
+ echo This script requires a shell more modern than all the
+ echo shells that I found on your system. Please install a
+ echo modern shell, or manually run the script under such a
+ echo shell if you do have one.
+ { (exit 1); exit 1; }
+fi
+
+
+fi
+
+fi
+
+
+
+(eval "as_func_return () {
+ (exit \$1)
+}
+as_func_success () {
+ as_func_return 0
+}
+as_func_failure () {
+ as_func_return 1
+}
+as_func_ret_success () {
+ return 0
+}
+as_func_ret_failure () {
+ return 1
+}
+
+exitcode=0
+if as_func_success; then
+ :
+else
+ exitcode=1
+ echo as_func_success failed.
+fi
+
+if as_func_failure; then
+ exitcode=1
+ echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+ :
+else
+ exitcode=1
+ echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+ exitcode=1
+ echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+ :
+else
+ exitcode=1
+ echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0") || {
+ echo No shell found that supports shell functions.
+ echo Please tell autoconf at gnu.org about your system,
+ echo including any error possibly output before this
+ echo message
+}
+
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line after each line using $LINENO; the second 'sed'
+ # does the real work. The second script uses 'N' to pair each
+ # line-number line with the line containing $LINENO, and appends
+ # trailing '-' during substitution so that $LINENO is not a special
+ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # scripts with optimization help from Paolo Bonzini. Blame Lee
+ # E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+ case `echo 'x\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ *) ECHO_C='\c';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir
+fi
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+
+exec 7<&0 </dev/null 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Identity of this package.
+PACKAGE_NAME='monodevelop-vala'
+PACKAGE_TARNAME='monodevelop-vala'
+PACKAGE_VERSION='1.9.3'
+PACKAGE_STRING='monodevelop-vala 1.9.3'
+PACKAGE_BUGREPORT='taktaktaktaktaktaktaktaktaktak at gmail.com'
+
+ac_subst_vars='SHELL
+PATH_SEPARATOR
+PACKAGE_NAME
+PACKAGE_TARNAME
+PACKAGE_VERSION
+PACKAGE_STRING
+PACKAGE_BUGREPORT
+exec_prefix
+prefix
+program_transform_name
+bindir
+sbindir
+libexecdir
+datarootdir
+datadir
+sysconfdir
+sharedstatedir
+localstatedir
+includedir
+oldincludedir
+docdir
+infodir
+htmldir
+dvidir
+pdfdir
+psdir
+libdir
+localedir
+mandir
+DEFS
+ECHO_C
+ECHO_N
+ECHO_T
+LIBS
+build_alias
+host_alias
+target_alias
+INSTALL_PROGRAM
+INSTALL_SCRIPT
+INSTALL_DATA
+am__isrc
+CYGPATH_W
+PACKAGE
+VERSION
+ACLOCAL
+AUTOCONF
+AUTOMAKE
+AUTOHEADER
+MAKEINFO
+install_sh
+STRIP
+INSTALL_STRIP_PROGRAM
+mkdir_p
+AWK
+SET_MAKE
+am__leading_dot
+AMTAR
+am__tar
+am__untar
+MAINTAINER_MODE_TRUE
+MAINTAINER_MODE_FALSE
+MAINT
+MONO
+MCS
+PATH
+LD_LIBRARY_PATH
+PKG_CONFIG
+UNMANAGED_DEPENDENCIES_MONO_CFLAGS
+UNMANAGED_DEPENDENCIES_MONO_LIBS
+RUNTIME
+CSC
+MONO_ADDINS_CFLAGS
+MONO_ADDINS_LIBS
+MONO_ADDINS_SETUP_CFLAGS
+MONO_ADDINS_SETUP_LIBS
+MONO_ADDINS_GUI_CFLAGS
+MONO_ADDINS_GUI_LIBS
+GLIB_SHARP_CFLAGS
+GLIB_SHARP_LIBS
+GTK_SHARP_CFLAGS
+GTK_SHARP_LIBS
+GLADE_SHARP_CFLAGS
+GLADE_SHARP_LIBS
+MONODEVELOP_CFLAGS
+MONODEVELOP_LIBS
+MONODEVELOP_CORE_ADDINS_CFLAGS
+MONODEVELOP_CORE_ADDINS_LIBS
+GNOME_SHARP_CFLAGS
+GNOME_SHARP_LIBS
+HAVE_GNOME_SHARP_TRUE
+HAVE_GNOME_SHARP_FALSE
+GNOME_VFS_SHARP_CFLAGS
+GNOME_VFS_SHARP_LIBS
+HAVE_GNOME_VFS_SHARP_TRUE
+HAVE_GNOME_VFS_SHARP_FALSE
+GCONF_SHARP_CFLAGS
+GCONF_SHARP_LIBS
+HAVE_GCONF_SHARP_TRUE
+HAVE_GCONF_SHARP_FALSE
+gtksharp_prefix
+LIB_SUFFIX
+LIB_PREFIX
+ASSEMBLY_VERSION
+CSC_FLAGS
+LIBOBJS
+LTLIBOBJS'
+ac_subst_files=''
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+PKG_CONFIG
+UNMANAGED_DEPENDENCIES_MONO_CFLAGS
+UNMANAGED_DEPENDENCIES_MONO_LIBS
+MONO_ADDINS_CFLAGS
+MONO_ADDINS_LIBS
+MONO_ADDINS_SETUP_CFLAGS
+MONO_ADDINS_SETUP_LIBS
+MONO_ADDINS_GUI_CFLAGS
+MONO_ADDINS_GUI_LIBS
+GLIB_SHARP_CFLAGS
+GLIB_SHARP_LIBS
+GTK_SHARP_CFLAGS
+GTK_SHARP_LIBS
+GLADE_SHARP_CFLAGS
+GLADE_SHARP_LIBS
+MONODEVELOP_CFLAGS
+MONODEVELOP_LIBS
+MONODEVELOP_CORE_ADDINS_CFLAGS
+MONODEVELOP_CORE_ADDINS_LIBS
+GNOME_SHARP_CFLAGS
+GNOME_SHARP_LIBS
+GNOME_VFS_SHARP_CFLAGS
+GNOME_VFS_SHARP_LIBS
+GCONF_SHARP_CFLAGS
+GCONF_SHARP_LIBS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
+ eval enable_$ac_feature=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
+ eval enable_$ac_feature=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
+ eval with_$ac_package=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
+ eval with_$ac_package=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; }
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ { echo "$as_me: error: missing argument to $ac_option" >&2
+ { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute directory names.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; }
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used." >&2
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ { echo "$as_me: error: Working directory cannot be determined" >&2
+ { (exit 1); exit 1; }; }
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ { echo "$as_me: error: pwd does not report name of working directory" >&2
+ { (exit 1); exit 1; }; }
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$0" ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$0" : 'X\(//\)[^/]' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$0" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+ { (exit 1); exit 1; }; }
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
+ { (exit 1); exit 1; }; }
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures monodevelop-vala 1.9.3 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/monodevelop-vala]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of monodevelop-vala 1.9.3:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer
+
+Some influential environment variables:
+ PKG_CONFIG path to pkg-config utility
+ UNMANAGED_DEPENDENCIES_MONO_CFLAGS
+ C compiler flags for UNMANAGED_DEPENDENCIES_MONO, overriding
+ pkg-config
+ UNMANAGED_DEPENDENCIES_MONO_LIBS
+ linker flags for UNMANAGED_DEPENDENCIES_MONO, overriding
+ pkg-config
+ MONO_ADDINS_CFLAGS
+ C compiler flags for MONO_ADDINS, overriding pkg-config
+ MONO_ADDINS_LIBS
+ linker flags for MONO_ADDINS, overriding pkg-config
+ MONO_ADDINS_SETUP_CFLAGS
+ C compiler flags for MONO_ADDINS_SETUP, overriding pkg-config
+ MONO_ADDINS_SETUP_LIBS
+ linker flags for MONO_ADDINS_SETUP, overriding pkg-config
+ MONO_ADDINS_GUI_CFLAGS
+ C compiler flags for MONO_ADDINS_GUI, overriding pkg-config
+ MONO_ADDINS_GUI_LIBS
+ linker flags for MONO_ADDINS_GUI, overriding pkg-config
+ GLIB_SHARP_CFLAGS
+ C compiler flags for GLIB_SHARP, overriding pkg-config
+ GLIB_SHARP_LIBS
+ linker flags for GLIB_SHARP, overriding pkg-config
+ GTK_SHARP_CFLAGS
+ C compiler flags for GTK_SHARP, overriding pkg-config
+ GTK_SHARP_LIBS
+ linker flags for GTK_SHARP, overriding pkg-config
+ GLADE_SHARP_CFLAGS
+ C compiler flags for GLADE_SHARP, overriding pkg-config
+ GLADE_SHARP_LIBS
+ linker flags for GLADE_SHARP, overriding pkg-config
+ MONODEVELOP_CFLAGS
+ C compiler flags for MONODEVELOP, overriding pkg-config
+ MONODEVELOP_LIBS
+ linker flags for MONODEVELOP, overriding pkg-config
+ MONODEVELOP_CORE_ADDINS_CFLAGS
+ C compiler flags for MONODEVELOP_CORE_ADDINS, overriding
+ pkg-config
+ MONODEVELOP_CORE_ADDINS_LIBS
+ linker flags for MONODEVELOP_CORE_ADDINS, overriding pkg-config
+ GNOME_SHARP_CFLAGS
+ C compiler flags for GNOME_SHARP, overriding pkg-config
+ GNOME_SHARP_LIBS
+ linker flags for GNOME_SHARP, overriding pkg-config
+ GNOME_VFS_SHARP_CFLAGS
+ C compiler flags for GNOME_VFS_SHARP, overriding pkg-config
+ GNOME_VFS_SHARP_LIBS
+ linker flags for GNOME_VFS_SHARP, overriding pkg-config
+ GCONF_SHARP_CFLAGS
+ C compiler flags for GCONF_SHARP, overriding pkg-config
+ GCONF_SHARP_LIBS
+ linker flags for GCONF_SHARP, overriding pkg-config
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <taktaktaktaktaktaktaktaktaktak at gmail.com>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" || continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+monodevelop-vala configure 1.9.3
+generated by GNU Autoconf 2.61
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by monodevelop-vala $as_me 1.9.3, which was
+generated by GNU Autoconf 2.61. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ echo "PATH: $as_dir"
+done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+ 2)
+ ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ ac_configure_args="$ac_configure_args '$ac_arg'"
+ ;;
+ esac
+ done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ *) $as_unset $ac_var ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ echo "$as_me: caught signal $ac_signal"
+ echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -n "$CONFIG_SITE"; then
+ set x "$CONFIG_SITE"
+elif test "x$prefix" != xNONE; then
+ set x "$prefix/share/config.site" "$prefix/etc/config.site"
+else
+ set x "$ac_default_prefix/share/config.site" \
+ "$ac_default_prefix/etc/config.site"
+fi
+shift
+for ac_site_file
+do
+ if test -r "$ac_site_file"; then
+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special
+ # files actually), so we avoid doing that.
+ if test -f "$cache_file"; then
+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
+echo "$as_me: former value: $ac_old_val" >&2;}
+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
+echo "$as_me: current value: $ac_new_val" >&2;}
+ ac_cache_corrupted=:
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+am__api_version='1.10'
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
+echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+ ./ | .// | /cC/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+done
+IFS=$as_save_IFS
+
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" >&5
+echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+{ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+test "$program_prefix" != NONE &&
+ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $. echo might interpret backslashes.
+# By default was `s,x,x', remove it if useless.
+cat <<\_ACEOF >conftest.sed
+s/[\\$]/&&/g;s/;s,x,x,$//
+_ACEOF
+program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+rm -f conftest.sed
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
+echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; }
+if test -z "$MKDIR_P"; then
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+done
+IFS=$as_save_IFS
+
+fi
+
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ test -d ./--version && rmdir ./--version
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5
+echo "${ECHO_T}$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+ [\\/$]* | ?:[\\/]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AWK="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { echo "$as_me:$LINENO: result: $AWK" >&5
+echo "${ECHO_T}$AWK" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }
+set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ SET_MAKE=
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='monodevelop-vala'
+ VERSION='1.9.3'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+
+{ echo "$as_me:$LINENO: checking how to create a ustar tar archive" >&5
+echo $ECHO_N "checking how to create a ustar tar archive... $ECHO_C" >&6; }
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar plaintar pax cpio none'
+_am_tools=${am_cv_prog_tar_ustar-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ { echo "$as_me:$LINENO: $_am_tar --version" >&5
+ ($_am_tar --version) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && break
+ done
+ am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x ustar -w "$$tardir"'
+ am__tar_='pax -L -x ustar -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H ustar -L'
+ am__tar_='find "$tardir" -print | cpio -o -H ustar -L'
+ am__untar='cpio -i -H ustar -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_ustar}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5
+ (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ { echo "$as_me:$LINENO: $am__untar <conftest.tar" >&5
+ ($am__untar <conftest.tar) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+if test "${am_cv_prog_tar_ustar+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ am_cv_prog_tar_ustar=$_am_tool
+fi
+
+{ echo "$as_me:$LINENO: result: $am_cv_prog_tar_ustar" >&5
+echo "${ECHO_T}$am_cv_prog_tar_ustar" >&6; }
+
+
+
+
+
+{ echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; }
+ # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then
+ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+ USE_MAINTAINER_MODE=no
+fi
+
+ { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
+echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; }
+ if test $USE_MAINTAINER_MODE = yes; then
+ MAINTAINER_MODE_TRUE=
+ MAINTAINER_MODE_FALSE='#'
+else
+ MAINTAINER_MODE_TRUE='#'
+ MAINTAINER_MODE_FALSE=
+fi
+
+ MAINT=$MAINTAINER_MODE_TRUE
+
+
+
+ASSEMBLY_VERSION=1.9.3.0
+
+# Extract the first word of "mono", so it can be a program name with args.
+set dummy mono; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_MONO+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $MONO in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MONO="$MONO" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_MONO="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+MONO=$ac_cv_path_MONO
+if test -n "$MONO"; then
+ { echo "$as_me:$LINENO: result: $MONO" >&5
+echo "${ECHO_T}$MONO" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+# Extract the first word of "gmcs", so it can be a program name with args.
+set dummy gmcs; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_MCS+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $MCS in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MCS="$MCS" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_MCS="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+MCS=$ac_cv_path_MCS
+if test -n "$MCS"; then
+ { echo "$as_me:$LINENO: result: $MCS" >&5
+echo "${ECHO_T}$MCS" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+
+if test "x$MONO" = "x" ; then
+ { { echo "$as_me:$LINENO: error: Can't find \"mono\" in your PATH" >&5
+echo "$as_me: error: Can't find \"mono\" in your PATH" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+if test "x$MCS" = "x" ; then
+ { { echo "$as_me:$LINENO: error: Can't find \"gmcs\" in your PATH" >&5
+echo "$as_me: error: Can't find \"gmcs\" in your PATH" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+
+
+# Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+ { echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+if test "x$PKG_CONFIG" = "xno"; then
+ { { echo "$as_me:$LINENO: error: You need to install pkg-config" >&5
+echo "$as_me: error: You need to install pkg-config" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+MONO_REQUIRED_VERSION=1.1.10
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+ { echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+ ac_pt_PKG_CONFIG=$PKG_CONFIG
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $ac_pt_PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+ { echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
+echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+ if test "x$ac_pt_PKG_CONFIG" = x; then
+ PKG_CONFIG=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+ PKG_CONFIG=$ac_pt_PKG_CONFIG
+ fi
+else
+ PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=0.9.0
+ { echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
+echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6; }
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+ PKG_CONFIG=""
+ fi
+
+fi
+
+pkg_failed=no
+{ echo "$as_me:$LINENO: checking for UNMANAGED_DEPENDENCIES_MONO" >&5
+echo $ECHO_N "checking for UNMANAGED_DEPENDENCIES_MONO... $ECHO_C" >&6; }
+
+if test -n "$UNMANAGED_DEPENDENCIES_MONO_CFLAGS"; then
+ pkg_cv_UNMANAGED_DEPENDENCIES_MONO_CFLAGS="$UNMANAGED_DEPENDENCIES_MONO_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"mono >= \$MONO_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "mono >= $MONO_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_UNMANAGED_DEPENDENCIES_MONO_CFLAGS=`$PKG_CONFIG --cflags "mono >= $MONO_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$UNMANAGED_DEPENDENCIES_MONO_LIBS"; then
+ pkg_cv_UNMANAGED_DEPENDENCIES_MONO_LIBS="$UNMANAGED_DEPENDENCIES_MONO_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"mono >= \$MONO_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "mono >= $MONO_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_UNMANAGED_DEPENDENCIES_MONO_LIBS=`$PKG_CONFIG --libs "mono >= $MONO_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ UNMANAGED_DEPENDENCIES_MONO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "mono >= $MONO_REQUIRED_VERSION" 2>&1`
+ else
+ UNMANAGED_DEPENDENCIES_MONO_PKG_ERRORS=`$PKG_CONFIG --print-errors "mono >= $MONO_REQUIRED_VERSION" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$UNMANAGED_DEPENDENCIES_MONO_PKG_ERRORS" >&5
+
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+ has_mono=false
+elif test $pkg_failed = untried; then
+ has_mono=false
+else
+ UNMANAGED_DEPENDENCIES_MONO_CFLAGS=$pkg_cv_UNMANAGED_DEPENDENCIES_MONO_CFLAGS
+ UNMANAGED_DEPENDENCIES_MONO_LIBS=$pkg_cv_UNMANAGED_DEPENDENCIES_MONO_LIBS
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ has_mono=true
+fi
+
+if test "x$has_mono" = "xfalse"; then
+ { { echo "$as_me:$LINENO: error: Please install mono version $MONO_REQUIRED_VERSION or later to install ValaBinding.
+Please see http://www.mono-project.org/ to download latest mono sources or packages" >&5
+echo "$as_me: error: Please install mono version $MONO_REQUIRED_VERSION or later to install ValaBinding.
+Please see http://www.mono-project.org/ to download latest mono sources or packages" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+if test "x$has_mono" = "xtrue"; then
+ if test `uname -s` = "Darwin"; then
+ # Extract the first word of "mono", so it can be a program name with args.
+set dummy mono; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_RUNTIME+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $RUNTIME in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_RUNTIME="$RUNTIME" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_RUNTIME="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_RUNTIME" && ac_cv_path_RUNTIME="no"
+ ;;
+esac
+fi
+RUNTIME=$ac_cv_path_RUNTIME
+if test -n "$RUNTIME"; then
+ { echo "$as_me:$LINENO: result: $RUNTIME" >&5
+echo "${ECHO_T}$RUNTIME" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+ # Extract the first word of "gmcs", so it can be a program name with args.
+set dummy gmcs; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_CSC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $CSC in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CSC="$CSC" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_CSC="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_CSC" && ac_cv_path_CSC="no"
+ ;;
+esac
+fi
+CSC=$ac_cv_path_CSC
+if test -n "$CSC"; then
+ { echo "$as_me:$LINENO: result: $CSC" >&5
+echo "${ECHO_T}$CSC" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+ LIB_PREFIX=
+ LIB_SUFFIX=.dylib
+ else
+ # Extract the first word of "mono", so it can be a program name with args.
+set dummy mono; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_RUNTIME+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $RUNTIME in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_RUNTIME="$RUNTIME" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_RUNTIME="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_RUNTIME" && ac_cv_path_RUNTIME="no"
+ ;;
+esac
+fi
+RUNTIME=$ac_cv_path_RUNTIME
+if test -n "$RUNTIME"; then
+ { echo "$as_me:$LINENO: result: $RUNTIME" >&5
+echo "${ECHO_T}$RUNTIME" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+ # Extract the first word of "gmcs", so it can be a program name with args.
+set dummy gmcs; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_CSC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $CSC in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CSC="$CSC" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_CSC="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_CSC" && ac_cv_path_CSC="no"
+ ;;
+esac
+fi
+CSC=$ac_cv_path_CSC
+if test -n "$CSC"; then
+ { echo "$as_me:$LINENO: result: $CSC" >&5
+echo "${ECHO_T}$CSC" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+ LIB_PREFIX=.so
+ LIB_SUFFIX=
+ fi
+fi
+
+
+MONOADDINS_REQUIRED_VERSION=0.3
+GTKSHARP_REQUIRED_VERSION=2.8.0
+MONODEVELOP_REQUIRED_VERSION=1.9.3
+
+
+pkg_failed=no
+{ echo "$as_me:$LINENO: checking for MONO_ADDINS" >&5
+echo $ECHO_N "checking for MONO_ADDINS... $ECHO_C" >&6; }
+
+if test -n "$MONO_ADDINS_CFLAGS"; then
+ pkg_cv_MONO_ADDINS_CFLAGS="$MONO_ADDINS_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"mono-addins >= \$MONOADDINS_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "mono-addins >= $MONOADDINS_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_MONO_ADDINS_CFLAGS=`$PKG_CONFIG --cflags "mono-addins >= $MONOADDINS_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$MONO_ADDINS_LIBS"; then
+ pkg_cv_MONO_ADDINS_LIBS="$MONO_ADDINS_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"mono-addins >= \$MONOADDINS_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "mono-addins >= $MONOADDINS_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_MONO_ADDINS_LIBS=`$PKG_CONFIG --libs "mono-addins >= $MONOADDINS_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ MONO_ADDINS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "mono-addins >= $MONOADDINS_REQUIRED_VERSION" 2>&1`
+ else
+ MONO_ADDINS_PKG_ERRORS=`$PKG_CONFIG --print-errors "mono-addins >= $MONOADDINS_REQUIRED_VERSION" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$MONO_ADDINS_PKG_ERRORS" >&5
+
+ { { echo "$as_me:$LINENO: error: Package requirements (mono-addins >= $MONOADDINS_REQUIRED_VERSION) were not met:
+
+$MONO_ADDINS_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables MONO_ADDINS_CFLAGS
+and MONO_ADDINS_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&5
+echo "$as_me: error: Package requirements (mono-addins >= $MONOADDINS_REQUIRED_VERSION) were not met:
+
+$MONO_ADDINS_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables MONO_ADDINS_CFLAGS
+and MONO_ADDINS_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&2;}
+ { (exit 1); exit 1; }; }
+elif test $pkg_failed = untried; then
+ { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables MONO_ADDINS_CFLAGS
+and MONO_ADDINS_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." >&5
+echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables MONO_ADDINS_CFLAGS
+and MONO_ADDINS_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ MONO_ADDINS_CFLAGS=$pkg_cv_MONO_ADDINS_CFLAGS
+ MONO_ADDINS_LIBS=$pkg_cv_MONO_ADDINS_LIBS
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ :
+fi
+
+
+pkg_failed=no
+{ echo "$as_me:$LINENO: checking for MONO_ADDINS_SETUP" >&5
+echo $ECHO_N "checking for MONO_ADDINS_SETUP... $ECHO_C" >&6; }
+
+if test -n "$MONO_ADDINS_SETUP_CFLAGS"; then
+ pkg_cv_MONO_ADDINS_SETUP_CFLAGS="$MONO_ADDINS_SETUP_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"mono-addins-setup >= \$MONOADDINS_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "mono-addins-setup >= $MONOADDINS_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_MONO_ADDINS_SETUP_CFLAGS=`$PKG_CONFIG --cflags "mono-addins-setup >= $MONOADDINS_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$MONO_ADDINS_SETUP_LIBS"; then
+ pkg_cv_MONO_ADDINS_SETUP_LIBS="$MONO_ADDINS_SETUP_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"mono-addins-setup >= \$MONOADDINS_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "mono-addins-setup >= $MONOADDINS_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_MONO_ADDINS_SETUP_LIBS=`$PKG_CONFIG --libs "mono-addins-setup >= $MONOADDINS_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ MONO_ADDINS_SETUP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "mono-addins-setup >= $MONOADDINS_REQUIRED_VERSION" 2>&1`
+ else
+ MONO_ADDINS_SETUP_PKG_ERRORS=`$PKG_CONFIG --print-errors "mono-addins-setup >= $MONOADDINS_REQUIRED_VERSION" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$MONO_ADDINS_SETUP_PKG_ERRORS" >&5
+
+ { { echo "$as_me:$LINENO: error: Package requirements (mono-addins-setup >= $MONOADDINS_REQUIRED_VERSION) were not met:
+
+$MONO_ADDINS_SETUP_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables MONO_ADDINS_SETUP_CFLAGS
+and MONO_ADDINS_SETUP_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&5
+echo "$as_me: error: Package requirements (mono-addins-setup >= $MONOADDINS_REQUIRED_VERSION) were not met:
+
+$MONO_ADDINS_SETUP_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables MONO_ADDINS_SETUP_CFLAGS
+and MONO_ADDINS_SETUP_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&2;}
+ { (exit 1); exit 1; }; }
+elif test $pkg_failed = untried; then
+ { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables MONO_ADDINS_SETUP_CFLAGS
+and MONO_ADDINS_SETUP_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." >&5
+echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables MONO_ADDINS_SETUP_CFLAGS
+and MONO_ADDINS_SETUP_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ MONO_ADDINS_SETUP_CFLAGS=$pkg_cv_MONO_ADDINS_SETUP_CFLAGS
+ MONO_ADDINS_SETUP_LIBS=$pkg_cv_MONO_ADDINS_SETUP_LIBS
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ :
+fi
+
+
+pkg_failed=no
+{ echo "$as_me:$LINENO: checking for MONO_ADDINS_GUI" >&5
+echo $ECHO_N "checking for MONO_ADDINS_GUI... $ECHO_C" >&6; }
+
+if test -n "$MONO_ADDINS_GUI_CFLAGS"; then
+ pkg_cv_MONO_ADDINS_GUI_CFLAGS="$MONO_ADDINS_GUI_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"mono-addins-gui >= \$MONOADDINS_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "mono-addins-gui >= $MONOADDINS_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_MONO_ADDINS_GUI_CFLAGS=`$PKG_CONFIG --cflags "mono-addins-gui >= $MONOADDINS_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$MONO_ADDINS_GUI_LIBS"; then
+ pkg_cv_MONO_ADDINS_GUI_LIBS="$MONO_ADDINS_GUI_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"mono-addins-gui >= \$MONOADDINS_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "mono-addins-gui >= $MONOADDINS_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_MONO_ADDINS_GUI_LIBS=`$PKG_CONFIG --libs "mono-addins-gui >= $MONOADDINS_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ MONO_ADDINS_GUI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "mono-addins-gui >= $MONOADDINS_REQUIRED_VERSION" 2>&1`
+ else
+ MONO_ADDINS_GUI_PKG_ERRORS=`$PKG_CONFIG --print-errors "mono-addins-gui >= $MONOADDINS_REQUIRED_VERSION" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$MONO_ADDINS_GUI_PKG_ERRORS" >&5
+
+ { { echo "$as_me:$LINENO: error: Package requirements (mono-addins-gui >= $MONOADDINS_REQUIRED_VERSION) were not met:
+
+$MONO_ADDINS_GUI_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables MONO_ADDINS_GUI_CFLAGS
+and MONO_ADDINS_GUI_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&5
+echo "$as_me: error: Package requirements (mono-addins-gui >= $MONOADDINS_REQUIRED_VERSION) were not met:
+
+$MONO_ADDINS_GUI_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables MONO_ADDINS_GUI_CFLAGS
+and MONO_ADDINS_GUI_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&2;}
+ { (exit 1); exit 1; }; }
+elif test $pkg_failed = untried; then
+ { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables MONO_ADDINS_GUI_CFLAGS
+and MONO_ADDINS_GUI_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." >&5
+echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables MONO_ADDINS_GUI_CFLAGS
+and MONO_ADDINS_GUI_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ MONO_ADDINS_GUI_CFLAGS=$pkg_cv_MONO_ADDINS_GUI_CFLAGS
+ MONO_ADDINS_GUI_LIBS=$pkg_cv_MONO_ADDINS_GUI_LIBS
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ :
+fi
+
+
+pkg_failed=no
+{ echo "$as_me:$LINENO: checking for GLIB_SHARP" >&5
+echo $ECHO_N "checking for GLIB_SHARP... $ECHO_C" >&6; }
+
+if test -n "$GLIB_SHARP_CFLAGS"; then
+ pkg_cv_GLIB_SHARP_CFLAGS="$GLIB_SHARP_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glib-sharp-2.0 >= \$GTKSHARP_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "glib-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_GLIB_SHARP_CFLAGS=`$PKG_CONFIG --cflags "glib-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$GLIB_SHARP_LIBS"; then
+ pkg_cv_GLIB_SHARP_LIBS="$GLIB_SHARP_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glib-sharp-2.0 >= \$GTKSHARP_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "glib-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_GLIB_SHARP_LIBS=`$PKG_CONFIG --libs "glib-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GLIB_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "glib-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>&1`
+ else
+ GLIB_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "glib-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GLIB_SHARP_PKG_ERRORS" >&5
+
+ { { echo "$as_me:$LINENO: error: Package requirements (glib-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION) were not met:
+
+$GLIB_SHARP_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables GLIB_SHARP_CFLAGS
+and GLIB_SHARP_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&5
+echo "$as_me: error: Package requirements (glib-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION) were not met:
+
+$GLIB_SHARP_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables GLIB_SHARP_CFLAGS
+and GLIB_SHARP_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&2;}
+ { (exit 1); exit 1; }; }
+elif test $pkg_failed = untried; then
+ { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables GLIB_SHARP_CFLAGS
+and GLIB_SHARP_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." >&5
+echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables GLIB_SHARP_CFLAGS
+and GLIB_SHARP_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ GLIB_SHARP_CFLAGS=$pkg_cv_GLIB_SHARP_CFLAGS
+ GLIB_SHARP_LIBS=$pkg_cv_GLIB_SHARP_LIBS
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ :
+fi
+
+
+pkg_failed=no
+{ echo "$as_me:$LINENO: checking for GTK_SHARP" >&5
+echo $ECHO_N "checking for GTK_SHARP... $ECHO_C" >&6; }
+
+if test -n "$GTK_SHARP_CFLAGS"; then
+ pkg_cv_GTK_SHARP_CFLAGS="$GTK_SHARP_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtk-sharp-2.0 >= \$GTKSHARP_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "gtk-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_GTK_SHARP_CFLAGS=`$PKG_CONFIG --cflags "gtk-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$GTK_SHARP_LIBS"; then
+ pkg_cv_GTK_SHARP_LIBS="$GTK_SHARP_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtk-sharp-2.0 >= \$GTKSHARP_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "gtk-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_GTK_SHARP_LIBS=`$PKG_CONFIG --libs "gtk-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GTK_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gtk-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>&1`
+ else
+ GTK_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "gtk-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GTK_SHARP_PKG_ERRORS" >&5
+
+ { { echo "$as_me:$LINENO: error: Package requirements (gtk-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION) were not met:
+
+$GTK_SHARP_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables GTK_SHARP_CFLAGS
+and GTK_SHARP_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&5
+echo "$as_me: error: Package requirements (gtk-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION) were not met:
+
+$GTK_SHARP_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables GTK_SHARP_CFLAGS
+and GTK_SHARP_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&2;}
+ { (exit 1); exit 1; }; }
+elif test $pkg_failed = untried; then
+ { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables GTK_SHARP_CFLAGS
+and GTK_SHARP_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." >&5
+echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables GTK_SHARP_CFLAGS
+and GTK_SHARP_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ GTK_SHARP_CFLAGS=$pkg_cv_GTK_SHARP_CFLAGS
+ GTK_SHARP_LIBS=$pkg_cv_GTK_SHARP_LIBS
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ :
+fi
+
+
+pkg_failed=no
+{ echo "$as_me:$LINENO: checking for GLADE_SHARP" >&5
+echo $ECHO_N "checking for GLADE_SHARP... $ECHO_C" >&6; }
+
+if test -n "$GLADE_SHARP_CFLAGS"; then
+ pkg_cv_GLADE_SHARP_CFLAGS="$GLADE_SHARP_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glade-sharp-2.0 >= \$GTKSHARP_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "glade-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_GLADE_SHARP_CFLAGS=`$PKG_CONFIG --cflags "glade-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$GLADE_SHARP_LIBS"; then
+ pkg_cv_GLADE_SHARP_LIBS="$GLADE_SHARP_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glade-sharp-2.0 >= \$GTKSHARP_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "glade-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_GLADE_SHARP_LIBS=`$PKG_CONFIG --libs "glade-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GLADE_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "glade-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>&1`
+ else
+ GLADE_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "glade-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GLADE_SHARP_PKG_ERRORS" >&5
+
+ { { echo "$as_me:$LINENO: error: Package requirements (glade-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION) were not met:
+
+$GLADE_SHARP_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables GLADE_SHARP_CFLAGS
+and GLADE_SHARP_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&5
+echo "$as_me: error: Package requirements (glade-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION) were not met:
+
+$GLADE_SHARP_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables GLADE_SHARP_CFLAGS
+and GLADE_SHARP_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&2;}
+ { (exit 1); exit 1; }; }
+elif test $pkg_failed = untried; then
+ { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables GLADE_SHARP_CFLAGS
+and GLADE_SHARP_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." >&5
+echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables GLADE_SHARP_CFLAGS
+and GLADE_SHARP_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ GLADE_SHARP_CFLAGS=$pkg_cv_GLADE_SHARP_CFLAGS
+ GLADE_SHARP_LIBS=$pkg_cv_GLADE_SHARP_LIBS
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ :
+fi
+
+
+pkg_failed=no
+{ echo "$as_me:$LINENO: checking for MONODEVELOP" >&5
+echo $ECHO_N "checking for MONODEVELOP... $ECHO_C" >&6; }
+
+if test -n "$MONODEVELOP_CFLAGS"; then
+ pkg_cv_MONODEVELOP_CFLAGS="$MONODEVELOP_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"monodevelop >= \$MONODEVELOP_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "monodevelop >= $MONODEVELOP_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_MONODEVELOP_CFLAGS=`$PKG_CONFIG --cflags "monodevelop >= $MONODEVELOP_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$MONODEVELOP_LIBS"; then
+ pkg_cv_MONODEVELOP_LIBS="$MONODEVELOP_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"monodevelop >= \$MONODEVELOP_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "monodevelop >= $MONODEVELOP_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_MONODEVELOP_LIBS=`$PKG_CONFIG --libs "monodevelop >= $MONODEVELOP_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ MONODEVELOP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "monodevelop >= $MONODEVELOP_REQUIRED_VERSION" 2>&1`
+ else
+ MONODEVELOP_PKG_ERRORS=`$PKG_CONFIG --print-errors "monodevelop >= $MONODEVELOP_REQUIRED_VERSION" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$MONODEVELOP_PKG_ERRORS" >&5
+
+ { { echo "$as_me:$LINENO: error: Package requirements (monodevelop >= $MONODEVELOP_REQUIRED_VERSION) were not met:
+
+$MONODEVELOP_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables MONODEVELOP_CFLAGS
+and MONODEVELOP_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&5
+echo "$as_me: error: Package requirements (monodevelop >= $MONODEVELOP_REQUIRED_VERSION) were not met:
+
+$MONODEVELOP_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables MONODEVELOP_CFLAGS
+and MONODEVELOP_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&2;}
+ { (exit 1); exit 1; }; }
+elif test $pkg_failed = untried; then
+ { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables MONODEVELOP_CFLAGS
+and MONODEVELOP_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." >&5
+echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables MONODEVELOP_CFLAGS
+and MONODEVELOP_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ MONODEVELOP_CFLAGS=$pkg_cv_MONODEVELOP_CFLAGS
+ MONODEVELOP_LIBS=$pkg_cv_MONODEVELOP_LIBS
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ :
+fi
+
+
+pkg_failed=no
+{ echo "$as_me:$LINENO: checking for MONODEVELOP_CORE_ADDINS" >&5
+echo $ECHO_N "checking for MONODEVELOP_CORE_ADDINS... $ECHO_C" >&6; }
+
+if test -n "$MONODEVELOP_CORE_ADDINS_CFLAGS"; then
+ pkg_cv_MONODEVELOP_CORE_ADDINS_CFLAGS="$MONODEVELOP_CORE_ADDINS_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"monodevelop-core-addins >= \$MONODEVELOP_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "monodevelop-core-addins >= $MONODEVELOP_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_MONODEVELOP_CORE_ADDINS_CFLAGS=`$PKG_CONFIG --cflags "monodevelop-core-addins >= $MONODEVELOP_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$MONODEVELOP_CORE_ADDINS_LIBS"; then
+ pkg_cv_MONODEVELOP_CORE_ADDINS_LIBS="$MONODEVELOP_CORE_ADDINS_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"monodevelop-core-addins >= \$MONODEVELOP_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "monodevelop-core-addins >= $MONODEVELOP_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_MONODEVELOP_CORE_ADDINS_LIBS=`$PKG_CONFIG --libs "monodevelop-core-addins >= $MONODEVELOP_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ MONODEVELOP_CORE_ADDINS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "monodevelop-core-addins >= $MONODEVELOP_REQUIRED_VERSION" 2>&1`
+ else
+ MONODEVELOP_CORE_ADDINS_PKG_ERRORS=`$PKG_CONFIG --print-errors "monodevelop-core-addins >= $MONODEVELOP_REQUIRED_VERSION" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$MONODEVELOP_CORE_ADDINS_PKG_ERRORS" >&5
+
+ { { echo "$as_me:$LINENO: error: Package requirements (monodevelop-core-addins >= $MONODEVELOP_REQUIRED_VERSION) were not met:
+
+$MONODEVELOP_CORE_ADDINS_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables MONODEVELOP_CORE_ADDINS_CFLAGS
+and MONODEVELOP_CORE_ADDINS_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&5
+echo "$as_me: error: Package requirements (monodevelop-core-addins >= $MONODEVELOP_REQUIRED_VERSION) were not met:
+
+$MONODEVELOP_CORE_ADDINS_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables MONODEVELOP_CORE_ADDINS_CFLAGS
+and MONODEVELOP_CORE_ADDINS_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&2;}
+ { (exit 1); exit 1; }; }
+elif test $pkg_failed = untried; then
+ { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables MONODEVELOP_CORE_ADDINS_CFLAGS
+and MONODEVELOP_CORE_ADDINS_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." >&5
+echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables MONODEVELOP_CORE_ADDINS_CFLAGS
+and MONODEVELOP_CORE_ADDINS_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ MONODEVELOP_CORE_ADDINS_CFLAGS=$pkg_cv_MONODEVELOP_CORE_ADDINS_CFLAGS
+ MONODEVELOP_CORE_ADDINS_LIBS=$pkg_cv_MONODEVELOP_CORE_ADDINS_LIBS
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ :
+fi
+
+
+
+pkg_failed=no
+{ echo "$as_me:$LINENO: checking for GNOME_SHARP" >&5
+echo $ECHO_N "checking for GNOME_SHARP... $ECHO_C" >&6; }
+
+if test -n "$GNOME_SHARP_CFLAGS"; then
+ pkg_cv_GNOME_SHARP_CFLAGS="$GNOME_SHARP_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gnome-sharp-2.0 >= \$GTKSHARP_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "gnome-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_GNOME_SHARP_CFLAGS=`$PKG_CONFIG --cflags "gnome-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$GNOME_SHARP_LIBS"; then
+ pkg_cv_GNOME_SHARP_LIBS="$GNOME_SHARP_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gnome-sharp-2.0 >= \$GTKSHARP_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "gnome-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_GNOME_SHARP_LIBS=`$PKG_CONFIG --libs "gnome-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GNOME_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gnome-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>&1`
+ else
+ GNOME_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "gnome-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GNOME_SHARP_PKG_ERRORS" >&5
+
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+ gnome_sharp=no
+elif test $pkg_failed = untried; then
+ gnome_sharp=no
+else
+ GNOME_SHARP_CFLAGS=$pkg_cv_GNOME_SHARP_CFLAGS
+ GNOME_SHARP_LIBS=$pkg_cv_GNOME_SHARP_LIBS
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ gnome_sharp=yes
+fi
+
+ if test x$gnome_sharp = xyes; then
+ HAVE_GNOME_SHARP_TRUE=
+ HAVE_GNOME_SHARP_FALSE='#'
+else
+ HAVE_GNOME_SHARP_TRUE='#'
+ HAVE_GNOME_SHARP_FALSE=
+fi
+
+
+pkg_failed=no
+{ echo "$as_me:$LINENO: checking for GNOME_VFS_SHARP" >&5
+echo $ECHO_N "checking for GNOME_VFS_SHARP... $ECHO_C" >&6; }
+
+if test -n "$GNOME_VFS_SHARP_CFLAGS"; then
+ pkg_cv_GNOME_VFS_SHARP_CFLAGS="$GNOME_VFS_SHARP_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gnome-vfs-sharp-2.0 >= \$GTKSHARP_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "gnome-vfs-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_GNOME_VFS_SHARP_CFLAGS=`$PKG_CONFIG --cflags "gnome-vfs-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$GNOME_VFS_SHARP_LIBS"; then
+ pkg_cv_GNOME_VFS_SHARP_LIBS="$GNOME_VFS_SHARP_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gnome-vfs-sharp-2.0 >= \$GTKSHARP_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "gnome-vfs-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_GNOME_VFS_SHARP_LIBS=`$PKG_CONFIG --libs "gnome-vfs-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GNOME_VFS_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gnome-vfs-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>&1`
+ else
+ GNOME_VFS_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "gnome-vfs-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GNOME_VFS_SHARP_PKG_ERRORS" >&5
+
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+ gnome_vfs_sharp=no
+elif test $pkg_failed = untried; then
+ gnome_vfs_sharp=no
+else
+ GNOME_VFS_SHARP_CFLAGS=$pkg_cv_GNOME_VFS_SHARP_CFLAGS
+ GNOME_VFS_SHARP_LIBS=$pkg_cv_GNOME_VFS_SHARP_LIBS
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ gnome_vfs_sharp=yes
+fi
+
+ if test x$gnome_vfs_sharp = xyes; then
+ HAVE_GNOME_VFS_SHARP_TRUE=
+ HAVE_GNOME_VFS_SHARP_FALSE='#'
+else
+ HAVE_GNOME_VFS_SHARP_TRUE='#'
+ HAVE_GNOME_VFS_SHARP_FALSE=
+fi
+
+
+pkg_failed=no
+{ echo "$as_me:$LINENO: checking for GCONF_SHARP" >&5
+echo $ECHO_N "checking for GCONF_SHARP... $ECHO_C" >&6; }
+
+if test -n "$GCONF_SHARP_CFLAGS"; then
+ pkg_cv_GCONF_SHARP_CFLAGS="$GCONF_SHARP_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gconf-sharp-2.0 >= \$GTKSHARP_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "gconf-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_GCONF_SHARP_CFLAGS=`$PKG_CONFIG --cflags "gconf-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$GCONF_SHARP_LIBS"; then
+ pkg_cv_GCONF_SHARP_LIBS="$GCONF_SHARP_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gconf-sharp-2.0 >= \$GTKSHARP_REQUIRED_VERSION\"") >&5
+ ($PKG_CONFIG --exists --print-errors "gconf-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_GCONF_SHARP_LIBS=`$PKG_CONFIG --libs "gconf-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GCONF_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gconf-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>&1`
+ else
+ GCONF_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "gconf-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GCONF_SHARP_PKG_ERRORS" >&5
+
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+ gconf_sharp=no
+elif test $pkg_failed = untried; then
+ gconf_sharp=no
+else
+ GCONF_SHARP_CFLAGS=$pkg_cv_GCONF_SHARP_CFLAGS
+ GCONF_SHARP_LIBS=$pkg_cv_GCONF_SHARP_LIBS
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ gconf_sharp=yes
+fi
+
+ if test x$gconf_sharp = xyes; then
+ HAVE_GCONF_SHARP_TRUE=
+ HAVE_GCONF_SHARP_FALSE='#'
+else
+ HAVE_GCONF_SHARP_TRUE='#'
+ HAVE_GCONF_SHARP_FALSE=
+fi
+
+
+gtksharp_prefix="`$PKG_CONFIG --variable=prefix gtk-sharp-2.0`"
+
+
+platform_bindings=""
+
+CSC_FLAGS="-debug -codepage:utf8"
+
+
+
+
+
+
+ac_config_files="$ac_config_files Makefile"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ *) $as_unset $ac_var ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ test "x$cache_file" != "x/dev/null" &&
+ { echo "$as_me:$LINENO: updating cache $cache_file" >&5
+echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section. Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+t clear
+:clear
+s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+ g
+ s/^\n//
+ s/\n/ /g
+ p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${HAVE_GNOME_SHARP_TRUE}" && test -z "${HAVE_GNOME_SHARP_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"HAVE_GNOME_SHARP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"HAVE_GNOME_SHARP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${HAVE_GNOME_VFS_SHARP_TRUE}" && test -z "${HAVE_GNOME_VFS_SHARP_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"HAVE_GNOME_VFS_SHARP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"HAVE_GNOME_VFS_SHARP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${HAVE_GCONF_SHARP_TRUE}" && test -z "${HAVE_GCONF_SHARP_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"HAVE_GCONF_SHARP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"HAVE_GCONF_SHARP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+as_nl='
+'
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line after each line using $LINENO; the second 'sed'
+ # does the real work. The second script uses 'N' to pair each
+ # line-number line with the line containing $LINENO, and appends
+ # trailing '-' during substitution so that $LINENO is not a special
+ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # scripts with optimization help from Paolo Bonzini. Blame Lee
+ # E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+ case `echo 'x\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ *) ECHO_C='\c';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir
+fi
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+
+# Save the log message, to keep $[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by monodevelop-vala $as_me 1.9.3, which was
+generated by GNU Autoconf 2.61. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+# Files that config.status was made for.
+config_files="$ac_config_files"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Report bugs to <bug-autoconf at gnu.org>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+monodevelop-vala config.status 1.9.3
+configured by $0, generated by GNU Autoconf 2.61,
+ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2006 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value. By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ echo "$ac_cs_version"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+ ac_need_defaults=false;;
+ --he | --h | --help | --hel | -h )
+ echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) { echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; } ;;
+
+ *) ac_config_targets="$ac_config_targets $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+ CONFIG_SHELL=$SHELL
+ export CONFIG_SHELL
+ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp=
+ trap 'exit_status=$?
+ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} ||
+{
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+}
+
+#
+# Set up the sed scripts for CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "$CONFIG_FILES"; then
+
+_ACEOF
+
+
+
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ cat >conf$$subs.sed <<_ACEOF
+SHELL!$SHELL$ac_delim
+PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
+PACKAGE_NAME!$PACKAGE_NAME$ac_delim
+PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
+PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
+PACKAGE_STRING!$PACKAGE_STRING$ac_delim
+PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
+exec_prefix!$exec_prefix$ac_delim
+prefix!$prefix$ac_delim
+program_transform_name!$program_transform_name$ac_delim
+bindir!$bindir$ac_delim
+sbindir!$sbindir$ac_delim
+libexecdir!$libexecdir$ac_delim
+datarootdir!$datarootdir$ac_delim
+datadir!$datadir$ac_delim
+sysconfdir!$sysconfdir$ac_delim
+sharedstatedir!$sharedstatedir$ac_delim
+localstatedir!$localstatedir$ac_delim
+includedir!$includedir$ac_delim
+oldincludedir!$oldincludedir$ac_delim
+docdir!$docdir$ac_delim
+infodir!$infodir$ac_delim
+htmldir!$htmldir$ac_delim
+dvidir!$dvidir$ac_delim
+pdfdir!$pdfdir$ac_delim
+psdir!$psdir$ac_delim
+libdir!$libdir$ac_delim
+localedir!$localedir$ac_delim
+mandir!$mandir$ac_delim
+DEFS!$DEFS$ac_delim
+ECHO_C!$ECHO_C$ac_delim
+ECHO_N!$ECHO_N$ac_delim
+ECHO_T!$ECHO_T$ac_delim
+LIBS!$LIBS$ac_delim
+build_alias!$build_alias$ac_delim
+host_alias!$host_alias$ac_delim
+target_alias!$target_alias$ac_delim
+INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
+INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
+INSTALL_DATA!$INSTALL_DATA$ac_delim
+am__isrc!$am__isrc$ac_delim
+CYGPATH_W!$CYGPATH_W$ac_delim
+PACKAGE!$PACKAGE$ac_delim
+VERSION!$VERSION$ac_delim
+ACLOCAL!$ACLOCAL$ac_delim
+AUTOCONF!$AUTOCONF$ac_delim
+AUTOMAKE!$AUTOMAKE$ac_delim
+AUTOHEADER!$AUTOHEADER$ac_delim
+MAKEINFO!$MAKEINFO$ac_delim
+install_sh!$install_sh$ac_delim
+STRIP!$STRIP$ac_delim
+INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim
+mkdir_p!$mkdir_p$ac_delim
+AWK!$AWK$ac_delim
+SET_MAKE!$SET_MAKE$ac_delim
+am__leading_dot!$am__leading_dot$ac_delim
+AMTAR!$AMTAR$ac_delim
+am__tar!$am__tar$ac_delim
+am__untar!$am__untar$ac_delim
+MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim
+MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim
+MAINT!$MAINT$ac_delim
+MONO!$MONO$ac_delim
+MCS!$MCS$ac_delim
+PATH!$PATH$ac_delim
+LD_LIBRARY_PATH!$LD_LIBRARY_PATH$ac_delim
+PKG_CONFIG!$PKG_CONFIG$ac_delim
+UNMANAGED_DEPENDENCIES_MONO_CFLAGS!$UNMANAGED_DEPENDENCIES_MONO_CFLAGS$ac_delim
+UNMANAGED_DEPENDENCIES_MONO_LIBS!$UNMANAGED_DEPENDENCIES_MONO_LIBS$ac_delim
+RUNTIME!$RUNTIME$ac_delim
+CSC!$CSC$ac_delim
+MONO_ADDINS_CFLAGS!$MONO_ADDINS_CFLAGS$ac_delim
+MONO_ADDINS_LIBS!$MONO_ADDINS_LIBS$ac_delim
+MONO_ADDINS_SETUP_CFLAGS!$MONO_ADDINS_SETUP_CFLAGS$ac_delim
+MONO_ADDINS_SETUP_LIBS!$MONO_ADDINS_SETUP_LIBS$ac_delim
+MONO_ADDINS_GUI_CFLAGS!$MONO_ADDINS_GUI_CFLAGS$ac_delim
+MONO_ADDINS_GUI_LIBS!$MONO_ADDINS_GUI_LIBS$ac_delim
+GLIB_SHARP_CFLAGS!$GLIB_SHARP_CFLAGS$ac_delim
+GLIB_SHARP_LIBS!$GLIB_SHARP_LIBS$ac_delim
+GTK_SHARP_CFLAGS!$GTK_SHARP_CFLAGS$ac_delim
+GTK_SHARP_LIBS!$GTK_SHARP_LIBS$ac_delim
+GLADE_SHARP_CFLAGS!$GLADE_SHARP_CFLAGS$ac_delim
+GLADE_SHARP_LIBS!$GLADE_SHARP_LIBS$ac_delim
+MONODEVELOP_CFLAGS!$MONODEVELOP_CFLAGS$ac_delim
+MONODEVELOP_LIBS!$MONODEVELOP_LIBS$ac_delim
+MONODEVELOP_CORE_ADDINS_CFLAGS!$MONODEVELOP_CORE_ADDINS_CFLAGS$ac_delim
+MONODEVELOP_CORE_ADDINS_LIBS!$MONODEVELOP_CORE_ADDINS_LIBS$ac_delim
+GNOME_SHARP_CFLAGS!$GNOME_SHARP_CFLAGS$ac_delim
+GNOME_SHARP_LIBS!$GNOME_SHARP_LIBS$ac_delim
+HAVE_GNOME_SHARP_TRUE!$HAVE_GNOME_SHARP_TRUE$ac_delim
+HAVE_GNOME_SHARP_FALSE!$HAVE_GNOME_SHARP_FALSE$ac_delim
+GNOME_VFS_SHARP_CFLAGS!$GNOME_VFS_SHARP_CFLAGS$ac_delim
+GNOME_VFS_SHARP_LIBS!$GNOME_VFS_SHARP_LIBS$ac_delim
+HAVE_GNOME_VFS_SHARP_TRUE!$HAVE_GNOME_VFS_SHARP_TRUE$ac_delim
+HAVE_GNOME_VFS_SHARP_FALSE!$HAVE_GNOME_VFS_SHARP_FALSE$ac_delim
+GCONF_SHARP_CFLAGS!$GCONF_SHARP_CFLAGS$ac_delim
+GCONF_SHARP_LIBS!$GCONF_SHARP_LIBS$ac_delim
+_ACEOF
+
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
+ break
+ elif $ac_last_try; then
+ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+ { (exit 1); exit 1; }; }
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+
+ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
+if test -n "$ac_eof"; then
+ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
+ ac_eof=`expr $ac_eof + 1`
+fi
+
+cat >>$CONFIG_STATUS <<_ACEOF
+cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+_ACEOF
+sed '
+s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
+s/^/s,@/; s/!/@,|#_!!_#|/
+:n
+t n
+s/'"$ac_delim"'$/,g/; t
+s/$/\\/; p
+N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
+' >>$CONFIG_STATUS <conf$$subs.sed
+rm -f conf$$subs.sed
+cat >>$CONFIG_STATUS <<_ACEOF
+CEOF$ac_eof
+_ACEOF
+
+
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ cat >conf$$subs.sed <<_ACEOF
+HAVE_GCONF_SHARP_TRUE!$HAVE_GCONF_SHARP_TRUE$ac_delim
+HAVE_GCONF_SHARP_FALSE!$HAVE_GCONF_SHARP_FALSE$ac_delim
+gtksharp_prefix!$gtksharp_prefix$ac_delim
+LIB_SUFFIX!$LIB_SUFFIX$ac_delim
+LIB_PREFIX!$LIB_PREFIX$ac_delim
+ASSEMBLY_VERSION!$ASSEMBLY_VERSION$ac_delim
+CSC_FLAGS!$CSC_FLAGS$ac_delim
+LIBOBJS!$LIBOBJS$ac_delim
+LTLIBOBJS!$LTLIBOBJS$ac_delim
+_ACEOF
+
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 9; then
+ break
+ elif $ac_last_try; then
+ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+ { (exit 1); exit 1; }; }
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+
+ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
+if test -n "$ac_eof"; then
+ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
+ ac_eof=`expr $ac_eof + 1`
+fi
+
+cat >>$CONFIG_STATUS <<_ACEOF
+cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
+_ACEOF
+sed '
+s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
+s/^/s,@/; s/!/@,|#_!!_#|/
+:n
+t n
+s/'"$ac_delim"'$/,g/; t
+s/$/\\/; p
+N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
+' >>$CONFIG_STATUS <conf$$subs.sed
+rm -f conf$$subs.sed
+cat >>$CONFIG_STATUS <<_ACEOF
+:end
+s/|#_!!_#|//g
+CEOF$ac_eof
+_ACEOF
+
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/
+s/:*\${srcdir}:*/:/
+s/:*@srcdir@:*/:/
+s/^\([^=]*=[ ]*\):*/\1/
+s/:*$//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+fi # test -n "$CONFIG_FILES"
+
+
+for ac_tag in :F $CONFIG_FILES
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
+echo "$as_me: error: Invalid tag $ac_tag." >&2;}
+ { (exit 1); exit 1; }; };;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+ ac_file_inputs="$ac_file_inputs $ac_f"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input="Generated from "`IFS=:
+ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+ fi
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$tmp/stdin";;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ { as_dir="$ac_dir"
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ { (exit 1); exit 1; }; }; }
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+
+case `sed -n '/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p
+' $ac_file_inputs` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s&@configure_input@&$configure_input&;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+ { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined." >&5
+echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined." >&2;}
+
+ rm -f "$tmp/stdin"
+ case $ac_file in
+ -) cat "$tmp/out"; rm -f "$tmp/out";;
+ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
+ esac
+ ;;
+
+
+
+ esac
+
+done # for ac_tag
+
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || { (exit 1); exit 1; }
+fi
+
diff --git a/configure.in b/configure.in
new file mode 100644
index 0000000..54cc946
--- /dev/null
+++ b/configure.in
@@ -0,0 +1,97 @@
+AC_INIT([monodevelop-vala], 1.9.3, [taktaktaktaktaktaktaktaktaktak at gmail.com])
+AC_PREREQ(2.53)
+AM_INIT_AUTOMAKE(1.9 tar-ustar)
+AM_MAINTAINER_MODE
+
+ASSEMBLY_VERSION=1.9.3.0
+
+AC_PATH_PROG(MONO, mono)
+AC_PATH_PROG(MCS, gmcs)
+
+if test "x$MONO" = "x" ; then
+ AC_MSG_ERROR([Can't find "mono" in your PATH])
+fi
+
+if test "x$MCS" = "x" ; then
+ AC_MSG_ERROR([Can't find "gmcs" in your PATH])
+fi
+AC_SUBST(PATH)
+AC_SUBST(LD_LIBRARY_PATH)
+
+dnl Find pkg-config
+AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+if test "x$PKG_CONFIG" = "xno"; then
+ AC_MSG_ERROR([You need to install pkg-config])
+fi
+
+MONO_REQUIRED_VERSION=1.1.10
+PKG_CHECK_MODULES(UNMANAGED_DEPENDENCIES_MONO,mono >= $MONO_REQUIRED_VERSION, has_mono=true, has_mono=false)
+
+if test "x$has_mono" = "xfalse"; then
+ AC_MSG_ERROR([Please install mono version $MONO_REQUIRED_VERSION or later to install ValaBinding.
+Please see http://www.mono-project.org/ to download latest mono sources or packages])
+fi
+
+if test "x$has_mono" = "xtrue"; then
+ if test `uname -s` = "Darwin"; then
+ AC_PATH_PROG(RUNTIME, mono, no)
+ AC_PATH_PROG(CSC, gmcs, no)
+ LIB_PREFIX=
+ LIB_SUFFIX=.dylib
+ else
+ AC_PATH_PROG(RUNTIME, mono, no)
+ AC_PATH_PROG(CSC, gmcs, no)
+ LIB_PREFIX=.so
+ LIB_SUFFIX=
+ fi
+fi
+
+
+dnl hard dependencies
+MONOADDINS_REQUIRED_VERSION=0.3
+GTKSHARP_REQUIRED_VERSION=2.8.0
+MONODEVELOP_REQUIRED_VERSION=1.9.3
+
+PKG_CHECK_MODULES(MONO_ADDINS, mono-addins >= $MONOADDINS_REQUIRED_VERSION)
+AC_SUBST(MONO_ADDINS_LIBS)
+PKG_CHECK_MODULES(MONO_ADDINS_SETUP, mono-addins-setup >= $MONOADDINS_REQUIRED_VERSION)
+AC_SUBST(MONO_ADDINS_SETUP_LIBS)
+PKG_CHECK_MODULES(MONO_ADDINS_GUI, mono-addins-gui >= $MONOADDINS_REQUIRED_VERSION)
+AC_SUBST(MONO_ADDINS_GUI_LIBS)
+PKG_CHECK_MODULES(GLIB_SHARP, glib-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION)
+AC_SUBST(GLIB_SHARP_LIBS)
+PKG_CHECK_MODULES(GTK_SHARP, gtk-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION)
+AC_SUBST(GTK_SHARP_LIBS)
+PKG_CHECK_MODULES(GLADE_SHARP, glade-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION)
+AC_SUBST(GLADE_SHARP_LIBS)
+PKG_CHECK_MODULES(MONODEVELOP, monodevelop >= $MONODEVELOP_REQUIRED_VERSION)
+AC_SUBST(MONODEVELOP_LIBS)
+PKG_CHECK_MODULES(MONODEVELOP_CORE_ADDINS, monodevelop-core-addins >= $MONODEVELOP_REQUIRED_VERSION)
+AC_SUBST(MONODEVELOP_CORE_ADDINS_LIBS)
+
+dnl soft dependencies
+PKG_CHECK_MODULES(GNOME_SHARP, gnome-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION, [gnome_sharp=yes], [gnome_sharp=no])
+AC_SUBST(GNOME_SHARP_LIBS)
+AM_CONDITIONAL(HAVE_GNOME_SHARP, test x$gnome_sharp = xyes)
+PKG_CHECK_MODULES(GNOME_VFS_SHARP, gnome-vfs-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION, [gnome_vfs_sharp=yes], [gnome_vfs_sharp=no])
+AC_SUBST(GNOME_VFS_SHARP_LIBS)
+AM_CONDITIONAL(HAVE_GNOME_VFS_SHARP, test x$gnome_vfs_sharp = xyes)
+PKG_CHECK_MODULES(GCONF_SHARP, gconf-sharp-2.0 >= $GTKSHARP_REQUIRED_VERSION, [gconf_sharp=yes], [gconf_sharp=no])
+AC_SUBST(GCONF_SHARP_LIBS)
+AM_CONDITIONAL(HAVE_GCONF_SHARP, test x$gconf_sharp = xyes)
+
+gtksharp_prefix="`$PKG_CONFIG --variable=prefix gtk-sharp-2.0`"
+AC_SUBST(gtksharp_prefix)
+
+platform_bindings=""
+
+CSC_FLAGS="-debug -codepage:utf8"
+
+AC_SUBST(LIB_SUFFIX)
+AC_SUBST(LIB_PREFIX)
+AC_SUBST(ASSEMBLY_VERSION)
+AC_SUBST(CSC_FLAGS)
+
+AC_OUTPUT([
+Makefile
+])
diff --git a/gtk-gui/MonoDevelop.ValaBinding.AddLibraryDialog.cs b/gtk-gui/MonoDevelop.ValaBinding.AddLibraryDialog.cs
new file mode 100644
index 0000000..1b7ff84
--- /dev/null
+++ b/gtk-gui/MonoDevelop.ValaBinding.AddLibraryDialog.cs
@@ -0,0 +1,80 @@
+// ------------------------------------------------------------------------------
+// <autogenerated>
+// This code was generated by a tool.
+//
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </autogenerated>
+// ------------------------------------------------------------------------------
+
+namespace MonoDevelop.ValaBinding {
+
+
+ public partial class AddLibraryDialog {
+
+ private Gtk.FileChooserWidget file_chooser_widget;
+
+ private Gtk.Button buttonCancel;
+
+ private Gtk.Button buttonOk;
+
+ protected virtual void Build() {
+ Stetic.Gui.Initialize(this);
+ // Widget MonoDevelop.ValaBinding.AddLibraryDialog
+ this.Name = "MonoDevelop.ValaBinding.AddLibraryDialog";
+ this.Title = Mono.Unix.Catalog.GetString("Add Library");
+ this.Modal = true;
+ // Internal child MonoDevelop.ValaBinding.AddLibraryDialog.VBox
+ Gtk.VBox w1 = this.VBox;
+ w1.Name = "dialog1_VBox";
+ w1.Spacing = 6;
+ w1.BorderWidth = ((uint)(2));
+ // Container child dialog1_VBox.Gtk.Box+BoxChild
+ this.file_chooser_widget = new Gtk.FileChooserWidget(((Gtk.FileChooserAction)(0)));
+ this.file_chooser_widget.Name = "file_chooser_widget";
+ w1.Add(this.file_chooser_widget);
+ Gtk.Box.BoxChild w2 = ((Gtk.Box.BoxChild)(w1[this.file_chooser_widget]));
+ w2.Position = 0;
+ // Internal child MonoDevelop.ValaBinding.AddLibraryDialog.ActionArea
+ Gtk.HButtonBox w3 = this.ActionArea;
+ w3.Name = "dialog1_ActionArea";
+ w3.Spacing = 6;
+ w3.BorderWidth = ((uint)(5));
+ w3.LayoutStyle = ((Gtk.ButtonBoxStyle)(4));
+ // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
+ this.buttonCancel = new Gtk.Button();
+ this.buttonCancel.CanDefault = true;
+ this.buttonCancel.CanFocus = true;
+ this.buttonCancel.Name = "buttonCancel";
+ this.buttonCancel.UseStock = true;
+ this.buttonCancel.UseUnderline = true;
+ this.buttonCancel.Label = "gtk-cancel";
+ this.AddActionWidget(this.buttonCancel, -6);
+ Gtk.ButtonBox.ButtonBoxChild w4 = ((Gtk.ButtonBox.ButtonBoxChild)(w3[this.buttonCancel]));
+ w4.Expand = false;
+ w4.Fill = false;
+ // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
+ this.buttonOk = new Gtk.Button();
+ this.buttonOk.CanDefault = true;
+ this.buttonOk.CanFocus = true;
+ this.buttonOk.Name = "buttonOk";
+ this.buttonOk.UseStock = true;
+ this.buttonOk.UseUnderline = true;
+ this.buttonOk.Label = "gtk-ok";
+ this.AddActionWidget(this.buttonOk, -5);
+ Gtk.ButtonBox.ButtonBoxChild w5 = ((Gtk.ButtonBox.ButtonBoxChild)(w3[this.buttonOk]));
+ w5.Position = 1;
+ w5.Expand = false;
+ w5.Fill = false;
+ if ((this.Child != null)) {
+ this.Child.ShowAll();
+ }
+ this.DefaultWidth = 648;
+ this.DefaultHeight = 439;
+ this.Show();
+ this.buttonCancel.Clicked += new System.EventHandler(this.OnCancelButtonClick);
+ this.buttonOk.Clicked += new System.EventHandler(this.OnOkButtonClick);
+ }
+ }
+}
diff --git a/gtk-gui/MonoDevelop.ValaBinding.AddPathDialog.cs b/gtk-gui/MonoDevelop.ValaBinding.AddPathDialog.cs
new file mode 100644
index 0000000..7a734ea
--- /dev/null
+++ b/gtk-gui/MonoDevelop.ValaBinding.AddPathDialog.cs
@@ -0,0 +1,81 @@
+// ------------------------------------------------------------------------------
+// <autogenerated>
+// This code was generated by a tool.
+//
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </autogenerated>
+// ------------------------------------------------------------------------------
+
+namespace MonoDevelop.ValaBinding {
+
+
+ public partial class AddPathDialog {
+
+ private Gtk.FileChooserWidget file_chooser_widget;
+
+ private Gtk.Button buttonCancel;
+
+ private Gtk.Button buttonOk;
+
+ protected virtual void Build() {
+ Stetic.Gui.Initialize(this);
+ // Widget MonoDevelop.ValaBinding.AddPathDialog
+ this.Name = "MonoDevelop.ValaBinding.AddPathDialog";
+ this.Title = Mono.Unix.Catalog.GetString("Add Path");
+ this.Modal = true;
+ // Internal child MonoDevelop.ValaBinding.AddPathDialog.VBox
+ Gtk.VBox w1 = this.VBox;
+ w1.Name = "dialog1_VBox";
+ w1.Spacing = 6;
+ w1.BorderWidth = ((uint)(2));
+ // Container child dialog1_VBox.Gtk.Box+BoxChild
+ this.file_chooser_widget = new Gtk.FileChooserWidget(((Gtk.FileChooserAction)(0)));
+ this.file_chooser_widget.Name = "file_chooser_widget";
+ this.file_chooser_widget.ShowHidden = true;
+ w1.Add(this.file_chooser_widget);
+ Gtk.Box.BoxChild w2 = ((Gtk.Box.BoxChild)(w1[this.file_chooser_widget]));
+ w2.Position = 0;
+ // Internal child MonoDevelop.ValaBinding.AddPathDialog.ActionArea
+ Gtk.HButtonBox w3 = this.ActionArea;
+ w3.Name = "dialog1_ActionArea";
+ w3.Spacing = 6;
+ w3.BorderWidth = ((uint)(5));
+ w3.LayoutStyle = ((Gtk.ButtonBoxStyle)(4));
+ // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
+ this.buttonCancel = new Gtk.Button();
+ this.buttonCancel.CanDefault = true;
+ this.buttonCancel.CanFocus = true;
+ this.buttonCancel.Name = "buttonCancel";
+ this.buttonCancel.UseStock = true;
+ this.buttonCancel.UseUnderline = true;
+ this.buttonCancel.Label = "gtk-cancel";
+ this.AddActionWidget(this.buttonCancel, -6);
+ Gtk.ButtonBox.ButtonBoxChild w4 = ((Gtk.ButtonBox.ButtonBoxChild)(w3[this.buttonCancel]));
+ w4.Expand = false;
+ w4.Fill = false;
+ // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
+ this.buttonOk = new Gtk.Button();
+ this.buttonOk.CanDefault = true;
+ this.buttonOk.CanFocus = true;
+ this.buttonOk.Name = "buttonOk";
+ this.buttonOk.UseStock = true;
+ this.buttonOk.UseUnderline = true;
+ this.buttonOk.Label = "gtk-ok";
+ this.AddActionWidget(this.buttonOk, -5);
+ Gtk.ButtonBox.ButtonBoxChild w5 = ((Gtk.ButtonBox.ButtonBoxChild)(w3[this.buttonOk]));
+ w5.Position = 1;
+ w5.Expand = false;
+ w5.Fill = false;
+ if ((this.Child != null)) {
+ this.Child.ShowAll();
+ }
+ this.DefaultWidth = 649;
+ this.DefaultHeight = 436;
+ this.Show();
+ this.buttonCancel.Clicked += new System.EventHandler(this.OnCancelButtonClick);
+ this.buttonOk.Clicked += new System.EventHandler(this.OnOkButtonClick);
+ }
+ }
+}
diff --git a/gtk-gui/MonoDevelop.ValaBinding.CodeGenerationPanel.cs b/gtk-gui/MonoDevelop.ValaBinding.CodeGenerationPanel.cs
new file mode 100644
index 0000000..bf3041d
--- /dev/null
+++ b/gtk-gui/MonoDevelop.ValaBinding.CodeGenerationPanel.cs
@@ -0,0 +1,597 @@
+// ------------------------------------------------------------------------------
+// <autogenerated>
+// This code was generated by a tool.
+//
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </autogenerated>
+// ------------------------------------------------------------------------------
+
+namespace MonoDevelop.ValaBinding {
+
+
+ public partial class CodeGenerationPanel {
+
+ private Gtk.Notebook notebook1;
+
+ private Gtk.VBox vbox6;
+
+ private Gtk.Table table1;
+
+ private Gtk.Label label10;
+
+ private Gtk.Label label4;
+
+ private Gtk.Label label5;
+
+ private Gtk.Label label6;
+
+ private Gtk.SpinButton optimizationSpinButton;
+
+ private Gtk.ComboBox targetComboBox;
+
+ private Gtk.CheckButton threadingCheckbox;
+
+ private Gtk.VBox vbox1;
+
+ private Gtk.RadioButton noWarningRadio;
+
+ private Gtk.RadioButton normalWarningRadio;
+
+ private Gtk.RadioButton allWarningRadio;
+
+ private Gtk.CheckButton warningsAsErrorsCheckBox;
+
+ private Gtk.HBox hbox1;
+
+ private Gtk.Label label12;
+
+ private Gtk.Entry defineSymbolsTextEntry;
+
+ private Gtk.Frame frame2;
+
+ private Gtk.Alignment GtkAlignment;
+
+ private Gtk.Table table5;
+
+ private Gtk.Label label7;
+
+ private Gtk.ScrolledWindow scrolledwindow4;
+
+ private Gtk.TextView extraCompilerTextView;
+
+ private Gtk.Label GtkLabel12;
+
+ private Gtk.Label label1;
+
+ private Gtk.Table table2;
+
+ private Gtk.Button addLibButton;
+
+ private Gtk.Label label8;
+
+ private Gtk.Entry libAddEntry;
+
+ private Gtk.ScrolledWindow scrolledwindow1;
+
+ private Gtk.TreeView libTreeView;
+
+ private Gtk.VBox vbox4;
+
+ private Gtk.Button browseButton;
+
+ private Gtk.Button removeLibButton;
+
+ private Gtk.Label label2;
+
+ private Gtk.VBox vbox7;
+
+ private Gtk.Table table3;
+
+ private Gtk.Button includePathAddButton;
+
+ private Gtk.Entry includePathEntry;
+
+ private Gtk.Label label9;
+
+ private Gtk.ScrolledWindow scrolledwindow2;
+
+ private Gtk.TreeView includePathTreeView;
+
+ private Gtk.VBox vbox5;
+
+ private Gtk.Button includePathBrowseButton;
+
+ private Gtk.Button includePathRemoveButton;
+
+ private Gtk.Label label3;
+
+ protected virtual void Build() {
+ Stetic.Gui.Initialize(this);
+ // Widget MonoDevelop.ValaBinding.CodeGenerationPanel
+ Stetic.BinContainer.Attach(this);
+ this.Name = "MonoDevelop.ValaBinding.CodeGenerationPanel";
+ // Container child MonoDevelop.ValaBinding.CodeGenerationPanel.Gtk.Container+ContainerChild
+ this.notebook1 = new Gtk.Notebook();
+ this.notebook1.CanFocus = true;
+ this.notebook1.Name = "notebook1";
+ this.notebook1.CurrentPage = 0;
+ // Container child notebook1.Gtk.Notebook+NotebookChild
+ this.vbox6 = new Gtk.VBox();
+ this.vbox6.Name = "vbox6";
+ this.vbox6.Spacing = 3;
+ // Container child vbox6.Gtk.Box+BoxChild
+ this.table1 = new Gtk.Table(((uint)(4)), ((uint)(2)), false);
+ this.table1.Name = "table1";
+ this.table1.RowSpacing = ((uint)(5));
+ this.table1.ColumnSpacing = ((uint)(5));
+ this.table1.BorderWidth = ((uint)(2));
+ // Container child table1.Gtk.Table+TableChild
+ this.label10 = new Gtk.Label();
+ this.label10.Name = "label10";
+ this.label10.Xpad = 10;
+ this.label10.Xalign = 0F;
+ this.label10.LabelProp = Mono.Unix.Catalog.GetString("Warning Level:");
+ this.table1.Add(this.label10);
+ Gtk.Table.TableChild w1 = ((Gtk.Table.TableChild)(this.table1[this.label10]));
+ w1.XOptions = ((Gtk.AttachOptions)(4));
+ w1.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.label4 = new Gtk.Label();
+ this.label4.Name = "label4";
+ this.label4.Xpad = 10;
+ this.label4.Xalign = 0F;
+ this.label4.LabelProp = Mono.Unix.Catalog.GetString("Multithreading:");
+ this.table1.Add(this.label4);
+ Gtk.Table.TableChild w2 = ((Gtk.Table.TableChild)(this.table1[this.label4]));
+ w2.TopAttach = ((uint)(3));
+ w2.BottomAttach = ((uint)(4));
+ w2.XOptions = ((Gtk.AttachOptions)(4));
+ w2.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.label5 = new Gtk.Label();
+ this.label5.Name = "label5";
+ this.label5.Xpad = 10;
+ this.label5.Xalign = 0F;
+ this.label5.LabelProp = Mono.Unix.Catalog.GetString("Optimization Level:");
+ this.table1.Add(this.label5);
+ Gtk.Table.TableChild w3 = ((Gtk.Table.TableChild)(this.table1[this.label5]));
+ w3.TopAttach = ((uint)(1));
+ w3.BottomAttach = ((uint)(2));
+ w3.XOptions = ((Gtk.AttachOptions)(4));
+ w3.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.label6 = new Gtk.Label();
+ this.label6.Name = "label6";
+ this.label6.Xpad = 10;
+ this.label6.Xalign = 0F;
+ this.label6.LabelProp = Mono.Unix.Catalog.GetString("Target:");
+ this.table1.Add(this.label6);
+ Gtk.Table.TableChild w4 = ((Gtk.Table.TableChild)(this.table1[this.label6]));
+ w4.TopAttach = ((uint)(2));
+ w4.BottomAttach = ((uint)(3));
+ w4.XOptions = ((Gtk.AttachOptions)(4));
+ w4.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.optimizationSpinButton = new Gtk.SpinButton(0, 3, 1);
+ this.optimizationSpinButton.Sensitive = false;
+ this.optimizationSpinButton.CanFocus = true;
+ this.optimizationSpinButton.Name = "optimizationSpinButton";
+ this.optimizationSpinButton.Adjustment.PageIncrement = 10;
+ this.optimizationSpinButton.ClimbRate = 1;
+ this.optimizationSpinButton.Numeric = true;
+ this.table1.Add(this.optimizationSpinButton);
+ Gtk.Table.TableChild w5 = ((Gtk.Table.TableChild)(this.table1[this.optimizationSpinButton]));
+ w5.TopAttach = ((uint)(1));
+ w5.BottomAttach = ((uint)(2));
+ w5.LeftAttach = ((uint)(1));
+ w5.RightAttach = ((uint)(2));
+ w5.XOptions = ((Gtk.AttachOptions)(4));
+ w5.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.targetComboBox = Gtk.ComboBox.NewText();
+ this.targetComboBox.AppendText(Mono.Unix.Catalog.GetString("Executable"));
+ this.targetComboBox.AppendText(Mono.Unix.Catalog.GetString("Static Library"));
+ this.targetComboBox.AppendText(Mono.Unix.Catalog.GetString("Shared Object"));
+ this.targetComboBox.Name = "targetComboBox";
+ this.table1.Add(this.targetComboBox);
+ Gtk.Table.TableChild w6 = ((Gtk.Table.TableChild)(this.table1[this.targetComboBox]));
+ w6.TopAttach = ((uint)(2));
+ w6.BottomAttach = ((uint)(3));
+ w6.LeftAttach = ((uint)(1));
+ w6.RightAttach = ((uint)(2));
+ w6.XOptions = ((Gtk.AttachOptions)(4));
+ w6.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.threadingCheckbox = new Gtk.CheckButton();
+ this.threadingCheckbox.CanFocus = true;
+ this.threadingCheckbox.Name = "threadingCheckbox";
+ this.threadingCheckbox.Label = Mono.Unix.Catalog.GetString("Enable multithreading");
+ this.threadingCheckbox.DrawIndicator = true;
+ this.threadingCheckbox.UseUnderline = true;
+ this.table1.Add(this.threadingCheckbox);
+ Gtk.Table.TableChild w7 = ((Gtk.Table.TableChild)(this.table1[this.threadingCheckbox]));
+ w7.TopAttach = ((uint)(3));
+ w7.BottomAttach = ((uint)(4));
+ w7.LeftAttach = ((uint)(1));
+ w7.RightAttach = ((uint)(2));
+ w7.XOptions = ((Gtk.AttachOptions)(4));
+ w7.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.vbox1 = new Gtk.VBox();
+ this.vbox1.Name = "vbox1";
+ this.vbox1.Spacing = 1;
+ // Container child vbox1.Gtk.Box+BoxChild
+ this.noWarningRadio = new Gtk.RadioButton(Mono.Unix.Catalog.GetString("no warnings"));
+ this.noWarningRadio.CanFocus = true;
+ this.noWarningRadio.Name = "noWarningRadio";
+ this.noWarningRadio.Active = true;
+ this.noWarningRadio.DrawIndicator = true;
+ this.noWarningRadio.UseUnderline = true;
+ this.noWarningRadio.Group = new GLib.SList(System.IntPtr.Zero);
+ this.vbox1.Add(this.noWarningRadio);
+ Gtk.Box.BoxChild w8 = ((Gtk.Box.BoxChild)(this.vbox1[this.noWarningRadio]));
+ w8.Position = 0;
+ w8.Expand = false;
+ w8.Fill = false;
+ // Container child vbox1.Gtk.Box+BoxChild
+ this.normalWarningRadio = new Gtk.RadioButton(Mono.Unix.Catalog.GetString("normal"));
+ this.normalWarningRadio.CanFocus = true;
+ this.normalWarningRadio.Name = "normalWarningRadio";
+ this.normalWarningRadio.DrawIndicator = true;
+ this.normalWarningRadio.UseUnderline = true;
+ this.normalWarningRadio.Group = this.noWarningRadio.Group;
+ this.vbox1.Add(this.normalWarningRadio);
+ Gtk.Box.BoxChild w9 = ((Gtk.Box.BoxChild)(this.vbox1[this.normalWarningRadio]));
+ w9.Position = 1;
+ w9.Expand = false;
+ w9.Fill = false;
+ // Container child vbox1.Gtk.Box+BoxChild
+ this.allWarningRadio = new Gtk.RadioButton(Mono.Unix.Catalog.GetString("all"));
+ this.allWarningRadio.CanFocus = true;
+ this.allWarningRadio.Name = "allWarningRadio";
+ this.allWarningRadio.DrawIndicator = true;
+ this.allWarningRadio.UseUnderline = true;
+ this.allWarningRadio.Group = this.noWarningRadio.Group;
+ this.vbox1.Add(this.allWarningRadio);
+ Gtk.Box.BoxChild w10 = ((Gtk.Box.BoxChild)(this.vbox1[this.allWarningRadio]));
+ w10.Position = 2;
+ w10.Expand = false;
+ w10.Fill = false;
+ // Container child vbox1.Gtk.Box+BoxChild
+ this.warningsAsErrorsCheckBox = new Gtk.CheckButton();
+ this.warningsAsErrorsCheckBox.Sensitive = false;
+ this.warningsAsErrorsCheckBox.CanFocus = true;
+ this.warningsAsErrorsCheckBox.Name = "warningsAsErrorsCheckBox";
+ this.warningsAsErrorsCheckBox.Label = Mono.Unix.Catalog.GetString("Treat warnings as errors");
+ this.warningsAsErrorsCheckBox.DrawIndicator = true;
+ this.warningsAsErrorsCheckBox.UseUnderline = true;
+ this.vbox1.Add(this.warningsAsErrorsCheckBox);
+ Gtk.Box.BoxChild w11 = ((Gtk.Box.BoxChild)(this.vbox1[this.warningsAsErrorsCheckBox]));
+ w11.Position = 3;
+ w11.Expand = false;
+ w11.Fill = false;
+ this.table1.Add(this.vbox1);
+ Gtk.Table.TableChild w12 = ((Gtk.Table.TableChild)(this.table1[this.vbox1]));
+ w12.LeftAttach = ((uint)(1));
+ w12.RightAttach = ((uint)(2));
+ w12.XOptions = ((Gtk.AttachOptions)(4));
+ w12.YOptions = ((Gtk.AttachOptions)(4));
+ this.vbox6.Add(this.table1);
+ Gtk.Box.BoxChild w13 = ((Gtk.Box.BoxChild)(this.vbox6[this.table1]));
+ w13.Position = 0;
+ w13.Expand = false;
+ w13.Fill = false;
+ // Container child vbox6.Gtk.Box+BoxChild
+ this.hbox1 = new Gtk.HBox();
+ this.hbox1.Name = "hbox1";
+ this.hbox1.Spacing = 6;
+ // Container child hbox1.Gtk.Box+BoxChild
+ this.label12 = new Gtk.Label();
+ this.label12.Name = "label12";
+ this.label12.Xpad = 13;
+ this.label12.Xalign = 0F;
+ this.label12.LabelProp = Mono.Unix.Catalog.GetString("Define Symbols:");
+ this.hbox1.Add(this.label12);
+ Gtk.Box.BoxChild w14 = ((Gtk.Box.BoxChild)(this.hbox1[this.label12]));
+ w14.Position = 0;
+ w14.Expand = false;
+ w14.Fill = false;
+ // Container child hbox1.Gtk.Box+BoxChild
+ this.defineSymbolsTextEntry = new Gtk.Entry();
+ Gtk.Tooltips w15 = new Gtk.Tooltips();
+ w15.SetTip(this.defineSymbolsTextEntry, "A space-separated list of symbols to define.", "A space-separated list of symbols to define.");
+ this.defineSymbolsTextEntry.CanFocus = true;
+ this.defineSymbolsTextEntry.Name = "defineSymbolsTextEntry";
+ this.defineSymbolsTextEntry.IsEditable = true;
+ this.defineSymbolsTextEntry.InvisibleChar = '●';
+ this.hbox1.Add(this.defineSymbolsTextEntry);
+ Gtk.Box.BoxChild w16 = ((Gtk.Box.BoxChild)(this.hbox1[this.defineSymbolsTextEntry]));
+ w16.Position = 1;
+ w16.Padding = ((uint)(14));
+ this.vbox6.Add(this.hbox1);
+ Gtk.Box.BoxChild w17 = ((Gtk.Box.BoxChild)(this.vbox6[this.hbox1]));
+ w17.Position = 1;
+ w17.Expand = false;
+ w17.Fill = false;
+ // Container child vbox6.Gtk.Box+BoxChild
+ this.frame2 = new Gtk.Frame();
+ this.frame2.Name = "frame2";
+ this.frame2.ShadowType = ((Gtk.ShadowType)(0));
+ this.frame2.LabelYalign = 0F;
+ // Container child frame2.Gtk.Container+ContainerChild
+ this.GtkAlignment = new Gtk.Alignment(0F, 0F, 1F, 1F);
+ this.GtkAlignment.Name = "GtkAlignment";
+ this.GtkAlignment.LeftPadding = ((uint)(12));
+ // Container child GtkAlignment.Gtk.Container+ContainerChild
+ this.table5 = new Gtk.Table(((uint)(2)), ((uint)(1)), false);
+ this.table5.Name = "table5";
+ this.table5.RowSpacing = ((uint)(6));
+ this.table5.ColumnSpacing = ((uint)(9));
+ this.table5.BorderWidth = ((uint)(6));
+ // Container child table5.Gtk.Table+TableChild
+ this.label7 = new Gtk.Label();
+ this.label7.Name = "label7";
+ this.label7.Xalign = 0F;
+ this.label7.LabelProp = Mono.Unix.Catalog.GetString("Extra Compiler Options");
+ this.table5.Add(this.label7);
+ Gtk.Table.TableChild w18 = ((Gtk.Table.TableChild)(this.table5[this.label7]));
+ w18.XOptions = ((Gtk.AttachOptions)(4));
+ w18.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table5.Gtk.Table+TableChild
+ this.scrolledwindow4 = new Gtk.ScrolledWindow();
+ this.scrolledwindow4.CanFocus = true;
+ this.scrolledwindow4.Name = "scrolledwindow4";
+ this.scrolledwindow4.ShadowType = ((Gtk.ShadowType)(1));
+ // Container child scrolledwindow4.Gtk.Container+ContainerChild
+ this.extraCompilerTextView = new Gtk.TextView();
+ w15.SetTip(this.extraCompilerTextView, "A newline-separated list of extra options to send to the compiler.\nOne option can be in more than one line.\nExample:\n\t`--pkg\n\tcairo`", "A newline-separated list of extra options to send to the compiler.\nOne option can be in more than one line.\nExample:\n\t`--pkg\n\tcairo`");
+ this.extraCompilerTextView.CanFocus = true;
+ this.extraCompilerTextView.Name = "extraCompilerTextView";
+ this.scrolledwindow4.Add(this.extraCompilerTextView);
+ this.table5.Add(this.scrolledwindow4);
+ Gtk.Table.TableChild w20 = ((Gtk.Table.TableChild)(this.table5[this.scrolledwindow4]));
+ w20.TopAttach = ((uint)(1));
+ w20.BottomAttach = ((uint)(2));
+ this.GtkAlignment.Add(this.table5);
+ this.frame2.Add(this.GtkAlignment);
+ this.GtkLabel12 = new Gtk.Label();
+ this.GtkLabel12.Name = "GtkLabel12";
+ this.GtkLabel12.LabelProp = Mono.Unix.Catalog.GetString("<b>Extra Options</b>");
+ this.GtkLabel12.UseMarkup = true;
+ this.frame2.LabelWidget = this.GtkLabel12;
+ this.vbox6.Add(this.frame2);
+ Gtk.Box.BoxChild w23 = ((Gtk.Box.BoxChild)(this.vbox6[this.frame2]));
+ w23.Position = 2;
+ this.notebook1.Add(this.vbox6);
+ // Notebook tab
+ this.label1 = new Gtk.Label();
+ this.label1.Name = "label1";
+ this.label1.LabelProp = Mono.Unix.Catalog.GetString("Code Generation");
+ this.notebook1.SetTabLabel(this.vbox6, this.label1);
+ this.label1.ShowAll();
+ // Container child notebook1.Gtk.Notebook+NotebookChild
+ this.table2 = new Gtk.Table(((uint)(2)), ((uint)(3)), false);
+ this.table2.Name = "table2";
+ this.table2.RowSpacing = ((uint)(10));
+ this.table2.ColumnSpacing = ((uint)(10));
+ this.table2.BorderWidth = ((uint)(3));
+ // Container child table2.Gtk.Table+TableChild
+ this.addLibButton = new Gtk.Button();
+ this.addLibButton.Sensitive = false;
+ this.addLibButton.CanFocus = true;
+ this.addLibButton.Name = "addLibButton";
+ this.addLibButton.UseUnderline = true;
+ this.addLibButton.Label = Mono.Unix.Catalog.GetString("Add");
+ this.table2.Add(this.addLibButton);
+ Gtk.Table.TableChild w25 = ((Gtk.Table.TableChild)(this.table2[this.addLibButton]));
+ w25.LeftAttach = ((uint)(2));
+ w25.RightAttach = ((uint)(3));
+ w25.XOptions = ((Gtk.AttachOptions)(4));
+ w25.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table2.Gtk.Table+TableChild
+ this.label8 = new Gtk.Label();
+ this.label8.Name = "label8";
+ this.label8.LabelProp = Mono.Unix.Catalog.GetString("Library:");
+ this.table2.Add(this.label8);
+ Gtk.Table.TableChild w26 = ((Gtk.Table.TableChild)(this.table2[this.label8]));
+ w26.XOptions = ((Gtk.AttachOptions)(4));
+ w26.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table2.Gtk.Table+TableChild
+ this.libAddEntry = new Gtk.Entry();
+ this.libAddEntry.CanFocus = true;
+ this.libAddEntry.Name = "libAddEntry";
+ this.libAddEntry.IsEditable = true;
+ this.libAddEntry.InvisibleChar = '●';
+ this.table2.Add(this.libAddEntry);
+ Gtk.Table.TableChild w27 = ((Gtk.Table.TableChild)(this.table2[this.libAddEntry]));
+ w27.LeftAttach = ((uint)(1));
+ w27.RightAttach = ((uint)(2));
+ w27.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table2.Gtk.Table+TableChild
+ this.scrolledwindow1 = new Gtk.ScrolledWindow();
+ this.scrolledwindow1.CanFocus = true;
+ this.scrolledwindow1.Name = "scrolledwindow1";
+ this.scrolledwindow1.ShadowType = ((Gtk.ShadowType)(1));
+ // Container child scrolledwindow1.Gtk.Container+ContainerChild
+ this.libTreeView = new Gtk.TreeView();
+ this.libTreeView.CanFocus = true;
+ this.libTreeView.Name = "libTreeView";
+ this.scrolledwindow1.Add(this.libTreeView);
+ this.table2.Add(this.scrolledwindow1);
+ Gtk.Table.TableChild w29 = ((Gtk.Table.TableChild)(this.table2[this.scrolledwindow1]));
+ w29.TopAttach = ((uint)(1));
+ w29.BottomAttach = ((uint)(2));
+ w29.LeftAttach = ((uint)(1));
+ w29.RightAttach = ((uint)(2));
+ // Container child table2.Gtk.Table+TableChild
+ this.vbox4 = new Gtk.VBox();
+ this.vbox4.Name = "vbox4";
+ this.vbox4.Spacing = 6;
+ // Container child vbox4.Gtk.Box+BoxChild
+ this.browseButton = new Gtk.Button();
+ this.browseButton.CanFocus = true;
+ this.browseButton.Name = "browseButton";
+ this.browseButton.UseUnderline = true;
+ this.browseButton.Label = Mono.Unix.Catalog.GetString("Browse...");
+ this.vbox4.Add(this.browseButton);
+ Gtk.Box.BoxChild w30 = ((Gtk.Box.BoxChild)(this.vbox4[this.browseButton]));
+ w30.Position = 0;
+ w30.Expand = false;
+ w30.Fill = false;
+ // Container child vbox4.Gtk.Box+BoxChild
+ this.removeLibButton = new Gtk.Button();
+ this.removeLibButton.Sensitive = false;
+ this.removeLibButton.CanFocus = true;
+ this.removeLibButton.Name = "removeLibButton";
+ this.removeLibButton.UseUnderline = true;
+ this.removeLibButton.Label = Mono.Unix.Catalog.GetString("Remove");
+ this.vbox4.Add(this.removeLibButton);
+ Gtk.Box.BoxChild w31 = ((Gtk.Box.BoxChild)(this.vbox4[this.removeLibButton]));
+ w31.Position = 1;
+ w31.Expand = false;
+ w31.Fill = false;
+ this.table2.Add(this.vbox4);
+ Gtk.Table.TableChild w32 = ((Gtk.Table.TableChild)(this.table2[this.vbox4]));
+ w32.TopAttach = ((uint)(1));
+ w32.BottomAttach = ((uint)(2));
+ w32.LeftAttach = ((uint)(2));
+ w32.RightAttach = ((uint)(3));
+ w32.XOptions = ((Gtk.AttachOptions)(4));
+ this.notebook1.Add(this.table2);
+ Gtk.Notebook.NotebookChild w33 = ((Gtk.Notebook.NotebookChild)(this.notebook1[this.table2]));
+ w33.Position = 1;
+ // Notebook tab
+ this.label2 = new Gtk.Label();
+ this.label2.Name = "label2";
+ this.label2.LabelProp = Mono.Unix.Catalog.GetString("Libraries");
+ this.notebook1.SetTabLabel(this.table2, this.label2);
+ this.label2.ShowAll();
+ // Container child notebook1.Gtk.Notebook+NotebookChild
+ this.vbox7 = new Gtk.VBox();
+ this.vbox7.Name = "vbox7";
+ this.vbox7.Spacing = 6;
+ this.vbox7.BorderWidth = ((uint)(3));
+ // Container child vbox7.Gtk.Box+BoxChild
+ this.table3 = new Gtk.Table(((uint)(2)), ((uint)(3)), false);
+ this.table3.Name = "table3";
+ this.table3.RowSpacing = ((uint)(10));
+ this.table3.ColumnSpacing = ((uint)(10));
+ // Container child table3.Gtk.Table+TableChild
+ this.includePathAddButton = new Gtk.Button();
+ this.includePathAddButton.Sensitive = false;
+ this.includePathAddButton.CanFocus = true;
+ this.includePathAddButton.Name = "includePathAddButton";
+ this.includePathAddButton.UseUnderline = true;
+ this.includePathAddButton.Label = Mono.Unix.Catalog.GetString("Add");
+ this.table3.Add(this.includePathAddButton);
+ Gtk.Table.TableChild w34 = ((Gtk.Table.TableChild)(this.table3[this.includePathAddButton]));
+ w34.LeftAttach = ((uint)(2));
+ w34.RightAttach = ((uint)(3));
+ w34.XOptions = ((Gtk.AttachOptions)(4));
+ w34.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table3.Gtk.Table+TableChild
+ this.includePathEntry = new Gtk.Entry();
+ this.includePathEntry.CanFocus = true;
+ this.includePathEntry.Name = "includePathEntry";
+ this.includePathEntry.IsEditable = true;
+ this.includePathEntry.InvisibleChar = '●';
+ this.table3.Add(this.includePathEntry);
+ Gtk.Table.TableChild w35 = ((Gtk.Table.TableChild)(this.table3[this.includePathEntry]));
+ w35.LeftAttach = ((uint)(1));
+ w35.RightAttach = ((uint)(2));
+ w35.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table3.Gtk.Table+TableChild
+ this.label9 = new Gtk.Label();
+ this.label9.Name = "label9";
+ this.label9.LabelProp = Mono.Unix.Catalog.GetString("Vapi Paths:");
+ this.table3.Add(this.label9);
+ Gtk.Table.TableChild w36 = ((Gtk.Table.TableChild)(this.table3[this.label9]));
+ w36.XOptions = ((Gtk.AttachOptions)(4));
+ w36.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table3.Gtk.Table+TableChild
+ this.scrolledwindow2 = new Gtk.ScrolledWindow();
+ this.scrolledwindow2.CanFocus = true;
+ this.scrolledwindow2.Name = "scrolledwindow2";
+ this.scrolledwindow2.ShadowType = ((Gtk.ShadowType)(1));
+ // Container child scrolledwindow2.Gtk.Container+ContainerChild
+ this.includePathTreeView = new Gtk.TreeView();
+ this.includePathTreeView.CanFocus = true;
+ this.includePathTreeView.Name = "includePathTreeView";
+ this.scrolledwindow2.Add(this.includePathTreeView);
+ this.table3.Add(this.scrolledwindow2);
+ Gtk.Table.TableChild w38 = ((Gtk.Table.TableChild)(this.table3[this.scrolledwindow2]));
+ w38.TopAttach = ((uint)(1));
+ w38.BottomAttach = ((uint)(2));
+ w38.LeftAttach = ((uint)(1));
+ w38.RightAttach = ((uint)(2));
+ // Container child table3.Gtk.Table+TableChild
+ this.vbox5 = new Gtk.VBox();
+ this.vbox5.Name = "vbox5";
+ this.vbox5.Spacing = 6;
+ // Container child vbox5.Gtk.Box+BoxChild
+ this.includePathBrowseButton = new Gtk.Button();
+ this.includePathBrowseButton.CanFocus = true;
+ this.includePathBrowseButton.Name = "includePathBrowseButton";
+ this.includePathBrowseButton.UseUnderline = true;
+ this.includePathBrowseButton.Label = Mono.Unix.Catalog.GetString("Browse...");
+ this.vbox5.Add(this.includePathBrowseButton);
+ Gtk.Box.BoxChild w39 = ((Gtk.Box.BoxChild)(this.vbox5[this.includePathBrowseButton]));
+ w39.Position = 0;
+ w39.Expand = false;
+ w39.Fill = false;
+ // Container child vbox5.Gtk.Box+BoxChild
+ this.includePathRemoveButton = new Gtk.Button();
+ this.includePathRemoveButton.Sensitive = false;
+ this.includePathRemoveButton.CanFocus = true;
+ this.includePathRemoveButton.Name = "includePathRemoveButton";
+ this.includePathRemoveButton.UseUnderline = true;
+ this.includePathRemoveButton.Label = Mono.Unix.Catalog.GetString("Remove");
+ this.vbox5.Add(this.includePathRemoveButton);
+ Gtk.Box.BoxChild w40 = ((Gtk.Box.BoxChild)(this.vbox5[this.includePathRemoveButton]));
+ w40.Position = 1;
+ w40.Expand = false;
+ w40.Fill = false;
+ this.table3.Add(this.vbox5);
+ Gtk.Table.TableChild w41 = ((Gtk.Table.TableChild)(this.table3[this.vbox5]));
+ w41.TopAttach = ((uint)(1));
+ w41.BottomAttach = ((uint)(2));
+ w41.LeftAttach = ((uint)(2));
+ w41.RightAttach = ((uint)(3));
+ w41.XOptions = ((Gtk.AttachOptions)(4));
+ this.vbox7.Add(this.table3);
+ Gtk.Box.BoxChild w42 = ((Gtk.Box.BoxChild)(this.vbox7[this.table3]));
+ w42.Position = 0;
+ this.notebook1.Add(this.vbox7);
+ Gtk.Notebook.NotebookChild w43 = ((Gtk.Notebook.NotebookChild)(this.notebook1[this.vbox7]));
+ w43.Position = 2;
+ // Notebook tab
+ this.label3 = new Gtk.Label();
+ this.label3.Name = "label3";
+ this.label3.LabelProp = Mono.Unix.Catalog.GetString("Paths");
+ this.notebook1.SetTabLabel(this.vbox7, this.label3);
+ this.label3.ShowAll();
+ this.Add(this.notebook1);
+ if ((this.Child != null)) {
+ this.Child.ShowAll();
+ }
+ this.Show();
+ this.targetComboBox.Changed += new System.EventHandler(this.OnTargetComboBoxChanged);
+ this.browseButton.Clicked += new System.EventHandler(this.OnBrowseButtonClick);
+ this.removeLibButton.Clicked += new System.EventHandler(this.OnRemoveLibButtonClicked);
+ this.removeLibButton.Clicked += new System.EventHandler(this.OnLibRemoved);
+ this.libTreeView.CursorChanged += new System.EventHandler(this.OnLibTreeViewCursorChanged);
+ this.libAddEntry.Changed += new System.EventHandler(this.OnLibAddEntryChanged);
+ this.libAddEntry.Activated += new System.EventHandler(this.OnLibAddEntryActivated);
+ this.addLibButton.Clicked += new System.EventHandler(this.OnLibAdded);
+ this.includePathBrowseButton.Clicked += new System.EventHandler(this.OnIncludePathBrowseButtonClick);
+ this.includePathRemoveButton.Clicked += new System.EventHandler(this.OnIncludePathRemoveButtonClicked);
+ this.includePathRemoveButton.Clicked += new System.EventHandler(this.OnIncludePathRemoved);
+ this.includePathTreeView.CursorChanged += new System.EventHandler(this.OnIncludePathTreeViewCursorChanged);
+ this.includePathEntry.Changed += new System.EventHandler(this.OnIncludePathEntryChanged);
+ this.includePathEntry.Activated += new System.EventHandler(this.OnIncludePathEntryActivated);
+ this.includePathAddButton.Clicked += new System.EventHandler(this.OnIncludePathAdded);
+ }
+ }
+}
diff --git a/gtk-gui/MonoDevelop.ValaBinding.EditPackagesDialog.cs b/gtk-gui/MonoDevelop.ValaBinding.EditPackagesDialog.cs
new file mode 100644
index 0000000..a315fa5
--- /dev/null
+++ b/gtk-gui/MonoDevelop.ValaBinding.EditPackagesDialog.cs
@@ -0,0 +1,277 @@
+// ------------------------------------------------------------------------------
+// <autogenerated>
+// This code was generated by a tool.
+//
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </autogenerated>
+// ------------------------------------------------------------------------------
+
+namespace MonoDevelop.ValaBinding {
+
+
+ public partial class EditPackagesDialog {
+
+ private Gtk.VPaned vpaned1;
+
+ private Gtk.HBox hbox1;
+
+ private Gtk.Notebook notebook1;
+
+ private Gtk.ScrolledWindow scrolledwindow1;
+
+ private Gtk.TreeView normalPackageTreeView;
+
+ private Gtk.Label label1;
+
+ private Gtk.ScrolledWindow scrolledwindow3;
+
+ private Gtk.TreeView projectPackageTreeView;
+
+ private Gtk.Label label2;
+
+ private Gtk.VBox vbox3;
+
+ private Gtk.Fixed fixed1;
+
+ private Gtk.Button detailsButton;
+
+ private Gtk.Table table1;
+
+ private Gtk.Label label3;
+
+ private Gtk.ScrolledWindow scrolledwindow2;
+
+ private Gtk.TreeView selectedPackageTreeView;
+
+ private Gtk.VBox vbox2;
+
+ private Gtk.Button removeButton;
+
+ private Gtk.Button buttonCancel;
+
+ private Gtk.Button buttonOk;
+
+ protected virtual void Build() {
+ Stetic.Gui.Initialize(this);
+ // Widget MonoDevelop.ValaBinding.EditPackagesDialog
+ this.Name = "MonoDevelop.ValaBinding.EditPackagesDialog";
+ this.Title = Mono.Unix.Catalog.GetString("Edit packages");
+ this.Modal = true;
+ // Internal child MonoDevelop.ValaBinding.EditPackagesDialog.VBox
+ Gtk.VBox w1 = this.VBox;
+ w1.Name = "dialog1_VBox";
+ w1.BorderWidth = ((uint)(2));
+ // Container child dialog1_VBox.Gtk.Box+BoxChild
+ this.vpaned1 = new Gtk.VPaned();
+ this.vpaned1.CanFocus = true;
+ this.vpaned1.Name = "vpaned1";
+ this.vpaned1.Position = 183;
+ this.vpaned1.BorderWidth = ((uint)(6));
+ // Container child vpaned1.Gtk.Paned+PanedChild
+ this.hbox1 = new Gtk.HBox();
+ this.hbox1.Name = "hbox1";
+ this.hbox1.Spacing = 6;
+ // Container child hbox1.Gtk.Box+BoxChild
+ this.notebook1 = new Gtk.Notebook();
+ this.notebook1.CanFocus = true;
+ this.notebook1.Name = "notebook1";
+ this.notebook1.CurrentPage = 0;
+ // Container child notebook1.Gtk.Notebook+NotebookChild
+ this.scrolledwindow1 = new Gtk.ScrolledWindow();
+ this.scrolledwindow1.CanFocus = true;
+ this.scrolledwindow1.Name = "scrolledwindow1";
+ this.scrolledwindow1.ShadowType = ((Gtk.ShadowType)(1));
+ // Container child scrolledwindow1.Gtk.Container+ContainerChild
+ this.normalPackageTreeView = new Gtk.TreeView();
+ this.normalPackageTreeView.CanFocus = true;
+ this.normalPackageTreeView.Name = "normalPackageTreeView";
+ this.scrolledwindow1.Add(this.normalPackageTreeView);
+ this.notebook1.Add(this.scrolledwindow1);
+ // Notebook tab
+ this.label1 = new Gtk.Label();
+ this.label1.Name = "label1";
+ this.label1.LabelProp = Mono.Unix.Catalog.GetString("System Packages");
+ this.notebook1.SetTabLabel(this.scrolledwindow1, this.label1);
+ this.label1.ShowAll();
+ // Container child notebook1.Gtk.Notebook+NotebookChild
+ this.scrolledwindow3 = new Gtk.ScrolledWindow();
+ this.scrolledwindow3.CanFocus = true;
+ this.scrolledwindow3.Name = "scrolledwindow3";
+ this.scrolledwindow3.ShadowType = ((Gtk.ShadowType)(1));
+ // Container child scrolledwindow3.Gtk.Container+ContainerChild
+ this.projectPackageTreeView = new Gtk.TreeView();
+ this.projectPackageTreeView.CanFocus = true;
+ this.projectPackageTreeView.Name = "projectPackageTreeView";
+ this.scrolledwindow3.Add(this.projectPackageTreeView);
+ this.notebook1.Add(this.scrolledwindow3);
+ Gtk.Notebook.NotebookChild w5 = ((Gtk.Notebook.NotebookChild)(this.notebook1[this.scrolledwindow3]));
+ w5.Position = 1;
+ // Notebook tab
+ this.label2 = new Gtk.Label();
+ this.label2.Name = "label2";
+ this.label2.LabelProp = Mono.Unix.Catalog.GetString("Project Packages");
+ this.notebook1.SetTabLabel(this.scrolledwindow3, this.label2);
+ this.label2.ShowAll();
+ this.hbox1.Add(this.notebook1);
+ Gtk.Box.BoxChild w6 = ((Gtk.Box.BoxChild)(this.hbox1[this.notebook1]));
+ w6.Position = 0;
+ // Container child hbox1.Gtk.Box+BoxChild
+ this.vbox3 = new Gtk.VBox();
+ this.vbox3.Name = "vbox3";
+ this.vbox3.Spacing = 6;
+ // Container child vbox3.Gtk.Box+BoxChild
+ this.fixed1 = new Gtk.Fixed();
+ this.fixed1.HeightRequest = 21;
+ this.fixed1.Name = "fixed1";
+ this.fixed1.HasWindow = false;
+ this.vbox3.Add(this.fixed1);
+ Gtk.Box.BoxChild w7 = ((Gtk.Box.BoxChild)(this.vbox3[this.fixed1]));
+ w7.Position = 0;
+ w7.Expand = false;
+ w7.Fill = false;
+ // Container child vbox3.Gtk.Box+BoxChild
+ this.detailsButton = new Gtk.Button();
+ this.detailsButton.WidthRequest = 33;
+ this.detailsButton.HeightRequest = 33;
+ this.detailsButton.Sensitive = false;
+ this.detailsButton.CanFocus = true;
+ this.detailsButton.Name = "detailsButton";
+ this.detailsButton.UseUnderline = true;
+ this.detailsButton.Label = Mono.Unix.Catalog.GetString("...");
+ this.vbox3.Add(this.detailsButton);
+ Gtk.Box.BoxChild w8 = ((Gtk.Box.BoxChild)(this.vbox3[this.detailsButton]));
+ w8.Position = 1;
+ w8.Expand = false;
+ w8.Fill = false;
+ this.hbox1.Add(this.vbox3);
+ Gtk.Box.BoxChild w9 = ((Gtk.Box.BoxChild)(this.hbox1[this.vbox3]));
+ w9.Position = 1;
+ w9.Expand = false;
+ w9.Fill = false;
+ this.vpaned1.Add(this.hbox1);
+ Gtk.Paned.PanedChild w10 = ((Gtk.Paned.PanedChild)(this.vpaned1[this.hbox1]));
+ w10.Resize = false;
+ // Container child vpaned1.Gtk.Paned+PanedChild
+ this.table1 = new Gtk.Table(((uint)(2)), ((uint)(2)), false);
+ this.table1.Name = "table1";
+ this.table1.RowSpacing = ((uint)(6));
+ this.table1.ColumnSpacing = ((uint)(6));
+ // Container child table1.Gtk.Table+TableChild
+ this.label3 = new Gtk.Label();
+ this.label3.Name = "label3";
+ this.label3.Xalign = 0F;
+ this.label3.Yalign = 0F;
+ this.label3.LabelProp = Mono.Unix.Catalog.GetString("Selected packages:");
+ this.table1.Add(this.label3);
+ Gtk.Table.TableChild w11 = ((Gtk.Table.TableChild)(this.table1[this.label3]));
+ w11.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.scrolledwindow2 = new Gtk.ScrolledWindow();
+ this.scrolledwindow2.CanFocus = true;
+ this.scrolledwindow2.Name = "scrolledwindow2";
+ this.scrolledwindow2.ShadowType = ((Gtk.ShadowType)(1));
+ // Container child scrolledwindow2.Gtk.Container+ContainerChild
+ this.selectedPackageTreeView = new Gtk.TreeView();
+ this.selectedPackageTreeView.CanFocus = true;
+ this.selectedPackageTreeView.Name = "selectedPackageTreeView";
+ this.scrolledwindow2.Add(this.selectedPackageTreeView);
+ this.table1.Add(this.scrolledwindow2);
+ Gtk.Table.TableChild w13 = ((Gtk.Table.TableChild)(this.table1[this.scrolledwindow2]));
+ w13.TopAttach = ((uint)(1));
+ w13.BottomAttach = ((uint)(2));
+ w13.XOptions = ((Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.vbox2 = new Gtk.VBox();
+ this.vbox2.Name = "vbox2";
+ this.vbox2.Spacing = 6;
+ // Container child vbox2.Gtk.Box+BoxChild
+ this.removeButton = new Gtk.Button();
+ Gtk.Tooltips w14 = new Gtk.Tooltips();
+ w14.SetTip(this.removeButton, "Remove selected package from the project.", "Remove selected package from the project.");
+ this.removeButton.WidthRequest = 33;
+ this.removeButton.HeightRequest = 33;
+ this.removeButton.Sensitive = false;
+ this.removeButton.CanFocus = true;
+ this.removeButton.Name = "removeButton";
+ this.removeButton.UseUnderline = true;
+ // Container child removeButton.Gtk.Container+ContainerChild
+ Gtk.Alignment w15 = new Gtk.Alignment(0.5F, 0.5F, 0F, 0F);
+ // Container child GtkAlignment.Gtk.Container+ContainerChild
+ Gtk.HBox w16 = new Gtk.HBox();
+ w16.Spacing = 2;
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ Gtk.Image w17 = new Gtk.Image();
+ w17.Pixbuf = Stetic.IconLoader.LoadIcon(this, "gtk-remove", Gtk.IconSize.Menu, 16);
+ w16.Add(w17);
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ Gtk.Label w19 = new Gtk.Label();
+ w16.Add(w19);
+ w15.Add(w16);
+ this.removeButton.Add(w15);
+ this.vbox2.Add(this.removeButton);
+ Gtk.Box.BoxChild w23 = ((Gtk.Box.BoxChild)(this.vbox2[this.removeButton]));
+ w23.Position = 0;
+ w23.Expand = false;
+ w23.Fill = false;
+ this.table1.Add(this.vbox2);
+ Gtk.Table.TableChild w24 = ((Gtk.Table.TableChild)(this.table1[this.vbox2]));
+ w24.TopAttach = ((uint)(1));
+ w24.BottomAttach = ((uint)(2));
+ w24.LeftAttach = ((uint)(1));
+ w24.RightAttach = ((uint)(2));
+ w24.XOptions = ((Gtk.AttachOptions)(4));
+ this.vpaned1.Add(this.table1);
+ w1.Add(this.vpaned1);
+ Gtk.Box.BoxChild w26 = ((Gtk.Box.BoxChild)(w1[this.vpaned1]));
+ w26.Position = 0;
+ w26.Padding = ((uint)(3));
+ // Internal child MonoDevelop.ValaBinding.EditPackagesDialog.ActionArea
+ Gtk.HButtonBox w27 = this.ActionArea;
+ w27.Name = "dialog1_ActionArea";
+ w27.Spacing = 6;
+ w27.BorderWidth = ((uint)(5));
+ w27.LayoutStyle = ((Gtk.ButtonBoxStyle)(4));
+ // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
+ this.buttonCancel = new Gtk.Button();
+ this.buttonCancel.CanDefault = true;
+ this.buttonCancel.CanFocus = true;
+ this.buttonCancel.Name = "buttonCancel";
+ this.buttonCancel.UseStock = true;
+ this.buttonCancel.UseUnderline = true;
+ this.buttonCancel.Label = "gtk-cancel";
+ this.AddActionWidget(this.buttonCancel, -6);
+ Gtk.ButtonBox.ButtonBoxChild w28 = ((Gtk.ButtonBox.ButtonBoxChild)(w27[this.buttonCancel]));
+ w28.Expand = false;
+ w28.Fill = false;
+ // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
+ this.buttonOk = new Gtk.Button();
+ this.buttonOk.CanDefault = true;
+ this.buttonOk.CanFocus = true;
+ this.buttonOk.Name = "buttonOk";
+ this.buttonOk.UseStock = true;
+ this.buttonOk.UseUnderline = true;
+ this.buttonOk.Label = "gtk-ok";
+ this.AddActionWidget(this.buttonOk, -5);
+ Gtk.ButtonBox.ButtonBoxChild w29 = ((Gtk.ButtonBox.ButtonBoxChild)(w27[this.buttonOk]));
+ w29.Position = 1;
+ w29.Expand = false;
+ w29.Fill = false;
+ if ((this.Child != null)) {
+ this.Child.ShowAll();
+ }
+ this.DefaultWidth = 580;
+ this.DefaultHeight = 449;
+ this.Show();
+ this.normalPackageTreeView.CursorChanged += new System.EventHandler(this.OnNonSelectedPackageCursorChanged);
+ this.projectPackageTreeView.CursorChanged += new System.EventHandler(this.OnNonSelectedPackageCursorChanged);
+ this.detailsButton.Clicked += new System.EventHandler(this.OnDetailsButtonClicked);
+ this.removeButton.Clicked += new System.EventHandler(this.OnRemoveButtonClicked);
+ this.removeButton.Clicked += new System.EventHandler(this.OnRemoveButtonClick);
+ this.selectedPackageTreeView.CursorChanged += new System.EventHandler(this.OnSelectedPackagesTreeViewCursorChanged);
+ this.buttonCancel.Clicked += new System.EventHandler(this.OnCancelButtonClick);
+ this.buttonOk.Clicked += new System.EventHandler(this.OnOkButtonClick);
+ }
+ }
+}
diff --git a/gtk-gui/MonoDevelop.ValaBinding.GeneralOptionsPanel.cs b/gtk-gui/MonoDevelop.ValaBinding.GeneralOptionsPanel.cs
new file mode 100644
index 0000000..5dc4ec7
--- /dev/null
+++ b/gtk-gui/MonoDevelop.ValaBinding.GeneralOptionsPanel.cs
@@ -0,0 +1,61 @@
+// ------------------------------------------------------------------------------
+// <autogenerated>
+// This code was generated by a tool.
+//
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </autogenerated>
+// ------------------------------------------------------------------------------
+
+namespace MonoDevelop.ValaBinding {
+
+
+ public partial class GeneralOptionsPanel {
+
+ private Gtk.Table table1;
+
+ private Gtk.Label label1;
+
+ private Gtk.ComboBox valaCombo;
+
+ protected virtual void Build() {
+ Stetic.Gui.Initialize(this);
+ // Widget MonoDevelop.ValaBinding.GeneralOptionsPanel
+ Stetic.BinContainer.Attach(this);
+ this.Name = "MonoDevelop.ValaBinding.GeneralOptionsPanel";
+ // Container child MonoDevelop.ValaBinding.GeneralOptionsPanel.Gtk.Container+ContainerChild
+ this.table1 = new Gtk.Table(((uint)(3)), ((uint)(3)), false);
+ this.table1.Name = "table1";
+ this.table1.RowSpacing = ((uint)(6));
+ this.table1.ColumnSpacing = ((uint)(6));
+ // Container child table1.Gtk.Table+TableChild
+ this.label1 = new Gtk.Label();
+ this.label1.Name = "label1";
+ this.label1.Xpad = 10;
+ this.label1.Xalign = 0F;
+ this.label1.LabelProp = Mono.Unix.Catalog.GetString("Default Vala Compiler:");
+ this.table1.Add(this.label1);
+ Gtk.Table.TableChild w1 = ((Gtk.Table.TableChild)(this.table1[this.label1]));
+ w1.XOptions = ((Gtk.AttachOptions)(4));
+ w1.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.valaCombo = Gtk.ComboBox.NewText();
+ Gtk.Tooltips w2 = new Gtk.Tooltips();
+ w2.SetTip(this.valaCombo, "Default compiler to use for new C projects.", "Default compiler to use for new C projects.");
+ this.valaCombo.Name = "valaCombo";
+ this.table1.Add(this.valaCombo);
+ Gtk.Table.TableChild w3 = ((Gtk.Table.TableChild)(this.table1[this.valaCombo]));
+ w3.LeftAttach = ((uint)(1));
+ w3.RightAttach = ((uint)(2));
+ w3.XOptions = ((Gtk.AttachOptions)(4));
+ w3.YOptions = ((Gtk.AttachOptions)(4));
+ this.Add(this.table1);
+ if ((this.Child != null)) {
+ this.Child.ShowAll();
+ }
+ this.Show();
+ this.valaCombo.Changed += new System.EventHandler(this.OnValaComboChanged);
+ }
+ }
+}
diff --git a/gtk-gui/MonoDevelop.ValaBinding.OutputOptionsPanel.cs b/gtk-gui/MonoDevelop.ValaBinding.OutputOptionsPanel.cs
new file mode 100644
index 0000000..bd2f417
--- /dev/null
+++ b/gtk-gui/MonoDevelop.ValaBinding.OutputOptionsPanel.cs
@@ -0,0 +1,201 @@
+// ------------------------------------------------------------------------------
+// <autogenerated>
+// This code was generated by a tool.
+//
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </autogenerated>
+// ------------------------------------------------------------------------------
+
+namespace MonoDevelop.ValaBinding {
+
+
+ public partial class OutputOptionsPanel {
+
+ private Gtk.VBox vbox2;
+
+ private Gtk.Table table1;
+
+ private Gtk.HBox hbox1;
+
+ private Gtk.Entry outputPathTextEntry;
+
+ private Gtk.Button browseButton;
+
+ private Gtk.Label label1;
+
+ private Gtk.Label label2;
+
+ private Gtk.Label label3;
+
+ private Gtk.Label label4;
+
+ private Gtk.Entry outputNameTextEntry;
+
+ private Gtk.Entry parametersTextEntry;
+
+ private Gtk.CheckButton externalConsoleCheckbox;
+
+ private Gtk.CheckButton pauseCheckbox;
+
+ protected virtual void Build() {
+ Stetic.Gui.Initialize(this);
+ // Widget MonoDevelop.ValaBinding.OutputOptionsPanel
+ Stetic.BinContainer.Attach(this);
+ this.Name = "MonoDevelop.ValaBinding.OutputOptionsPanel";
+ // Container child MonoDevelop.ValaBinding.OutputOptionsPanel.Gtk.Container+ContainerChild
+ this.vbox2 = new Gtk.VBox();
+ this.vbox2.Name = "vbox2";
+ this.vbox2.Spacing = 6;
+ this.vbox2.BorderWidth = ((uint)(3));
+ // Container child vbox2.Gtk.Box+BoxChild
+ this.table1 = new Gtk.Table(((uint)(4)), ((uint)(2)), false);
+ this.table1.Name = "table1";
+ this.table1.RowSpacing = ((uint)(6));
+ this.table1.ColumnSpacing = ((uint)(6));
+ this.table1.BorderWidth = ((uint)(3));
+ // Container child table1.Gtk.Table+TableChild
+ this.hbox1 = new Gtk.HBox();
+ this.hbox1.Name = "hbox1";
+ this.hbox1.Spacing = 6;
+ // Container child hbox1.Gtk.Box+BoxChild
+ this.outputPathTextEntry = new Gtk.Entry();
+ this.outputPathTextEntry.CanFocus = true;
+ this.outputPathTextEntry.Name = "outputPathTextEntry";
+ this.outputPathTextEntry.IsEditable = true;
+ this.outputPathTextEntry.InvisibleChar = '●';
+ this.hbox1.Add(this.outputPathTextEntry);
+ Gtk.Box.BoxChild w1 = ((Gtk.Box.BoxChild)(this.hbox1[this.outputPathTextEntry]));
+ w1.Position = 0;
+ // Container child hbox1.Gtk.Box+BoxChild
+ this.browseButton = new Gtk.Button();
+ this.browseButton.CanFocus = true;
+ this.browseButton.Name = "browseButton";
+ this.browseButton.UseUnderline = true;
+ this.browseButton.Label = Mono.Unix.Catalog.GetString("_Browse");
+ this.hbox1.Add(this.browseButton);
+ Gtk.Box.BoxChild w2 = ((Gtk.Box.BoxChild)(this.hbox1[this.browseButton]));
+ w2.Position = 1;
+ w2.Expand = false;
+ w2.Fill = false;
+ this.table1.Add(this.hbox1);
+ Gtk.Table.TableChild w3 = ((Gtk.Table.TableChild)(this.table1[this.hbox1]));
+ w3.TopAttach = ((uint)(2));
+ w3.BottomAttach = ((uint)(3));
+ w3.LeftAttach = ((uint)(1));
+ w3.RightAttach = ((uint)(2));
+ w3.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.label1 = new Gtk.Label();
+ this.label1.Name = "label1";
+ this.label1.Xalign = 0F;
+ this.label1.LabelProp = Mono.Unix.Catalog.GetString("<b>Output</b>");
+ this.label1.UseMarkup = true;
+ this.table1.Add(this.label1);
+ Gtk.Table.TableChild w4 = ((Gtk.Table.TableChild)(this.table1[this.label1]));
+ w4.XOptions = ((Gtk.AttachOptions)(4));
+ w4.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.label2 = new Gtk.Label();
+ this.label2.Name = "label2";
+ this.label2.Xalign = 0F;
+ this.label2.LabelProp = Mono.Unix.Catalog.GetString("Output Name:");
+ this.table1.Add(this.label2);
+ Gtk.Table.TableChild w5 = ((Gtk.Table.TableChild)(this.table1[this.label2]));
+ w5.TopAttach = ((uint)(1));
+ w5.BottomAttach = ((uint)(2));
+ w5.XPadding = ((uint)(15));
+ w5.XOptions = ((Gtk.AttachOptions)(4));
+ w5.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.label3 = new Gtk.Label();
+ this.label3.Name = "label3";
+ this.label3.Xalign = 0F;
+ this.label3.LabelProp = Mono.Unix.Catalog.GetString("Output Path:");
+ this.table1.Add(this.label3);
+ Gtk.Table.TableChild w6 = ((Gtk.Table.TableChild)(this.table1[this.label3]));
+ w6.TopAttach = ((uint)(2));
+ w6.BottomAttach = ((uint)(3));
+ w6.XPadding = ((uint)(15));
+ w6.XOptions = ((Gtk.AttachOptions)(4));
+ w6.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.label4 = new Gtk.Label();
+ this.label4.Name = "label4";
+ this.label4.Xalign = 0F;
+ this.label4.LabelProp = Mono.Unix.Catalog.GetString("Parameters:");
+ this.table1.Add(this.label4);
+ Gtk.Table.TableChild w7 = ((Gtk.Table.TableChild)(this.table1[this.label4]));
+ w7.TopAttach = ((uint)(3));
+ w7.BottomAttach = ((uint)(4));
+ w7.XPadding = ((uint)(15));
+ w7.XOptions = ((Gtk.AttachOptions)(4));
+ w7.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.outputNameTextEntry = new Gtk.Entry();
+ this.outputNameTextEntry.CanFocus = true;
+ this.outputNameTextEntry.Name = "outputNameTextEntry";
+ this.outputNameTextEntry.IsEditable = true;
+ this.outputNameTextEntry.InvisibleChar = '●';
+ this.table1.Add(this.outputNameTextEntry);
+ Gtk.Table.TableChild w8 = ((Gtk.Table.TableChild)(this.table1[this.outputNameTextEntry]));
+ w8.TopAttach = ((uint)(1));
+ w8.BottomAttach = ((uint)(2));
+ w8.LeftAttach = ((uint)(1));
+ w8.RightAttach = ((uint)(2));
+ w8.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.parametersTextEntry = new Gtk.Entry();
+ this.parametersTextEntry.CanFocus = true;
+ this.parametersTextEntry.Name = "parametersTextEntry";
+ this.parametersTextEntry.IsEditable = true;
+ this.parametersTextEntry.InvisibleChar = '●';
+ this.table1.Add(this.parametersTextEntry);
+ Gtk.Table.TableChild w9 = ((Gtk.Table.TableChild)(this.table1[this.parametersTextEntry]));
+ w9.TopAttach = ((uint)(3));
+ w9.BottomAttach = ((uint)(4));
+ w9.LeftAttach = ((uint)(1));
+ w9.RightAttach = ((uint)(2));
+ w9.YOptions = ((Gtk.AttachOptions)(4));
+ this.vbox2.Add(this.table1);
+ Gtk.Box.BoxChild w10 = ((Gtk.Box.BoxChild)(this.vbox2[this.table1]));
+ w10.Position = 0;
+ w10.Expand = false;
+ w10.Fill = false;
+ // Container child vbox2.Gtk.Box+BoxChild
+ this.externalConsoleCheckbox = new Gtk.CheckButton();
+ this.externalConsoleCheckbox.CanFocus = true;
+ this.externalConsoleCheckbox.Name = "externalConsoleCheckbox";
+ this.externalConsoleCheckbox.Label = Mono.Unix.Catalog.GetString("Run on e_xternal console");
+ this.externalConsoleCheckbox.Active = true;
+ this.externalConsoleCheckbox.DrawIndicator = true;
+ this.externalConsoleCheckbox.UseUnderline = true;
+ this.vbox2.Add(this.externalConsoleCheckbox);
+ Gtk.Box.BoxChild w11 = ((Gtk.Box.BoxChild)(this.vbox2[this.externalConsoleCheckbox]));
+ w11.Position = 1;
+ w11.Expand = false;
+ w11.Fill = false;
+ // Container child vbox2.Gtk.Box+BoxChild
+ this.pauseCheckbox = new Gtk.CheckButton();
+ this.pauseCheckbox.Sensitive = false;
+ this.pauseCheckbox.CanFocus = true;
+ this.pauseCheckbox.Name = "pauseCheckbox";
+ this.pauseCheckbox.Label = Mono.Unix.Catalog.GetString("Pause _console output");
+ this.pauseCheckbox.DrawIndicator = true;
+ this.pauseCheckbox.UseUnderline = true;
+ this.vbox2.Add(this.pauseCheckbox);
+ Gtk.Box.BoxChild w12 = ((Gtk.Box.BoxChild)(this.vbox2[this.pauseCheckbox]));
+ w12.Position = 2;
+ w12.Expand = false;
+ w12.Fill = false;
+ this.Add(this.vbox2);
+ if ((this.Child != null)) {
+ this.Child.ShowAll();
+ }
+ this.Show();
+ this.browseButton.Clicked += new System.EventHandler(this.OnBrowseButtonClick);
+ this.externalConsoleCheckbox.Clicked += new System.EventHandler(this.OnExternalConsoleCheckboxClicked);
+ }
+ }
+}
diff --git a/gtk-gui/MonoDevelop.ValaBinding.PackageDetails.cs b/gtk-gui/MonoDevelop.ValaBinding.PackageDetails.cs
new file mode 100644
index 0000000..e452898
--- /dev/null
+++ b/gtk-gui/MonoDevelop.ValaBinding.PackageDetails.cs
@@ -0,0 +1,202 @@
+// ------------------------------------------------------------------------------
+// <autogenerated>
+// This code was generated by a tool.
+//
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </autogenerated>
+// ------------------------------------------------------------------------------
+
+namespace MonoDevelop.ValaBinding {
+
+
+ public partial class PackageDetails {
+
+ private Gtk.VBox vbox3;
+
+ private Gtk.Table table1;
+
+ private Gtk.Label descriptionLabel;
+
+ private Gtk.Label label7;
+
+ private Gtk.Label label8;
+
+ private Gtk.Label label9;
+
+ private Gtk.Label nameLabel;
+
+ private Gtk.Label versionLabel;
+
+ private Gtk.VBox vbox4;
+
+ private Gtk.Label label13;
+
+ private Gtk.ScrolledWindow scrolledwindow1;
+
+ private Gtk.TreeView requiresTreeView;
+
+ private Gtk.Button buttonOk;
+
+ protected virtual void Build() {
+ Stetic.Gui.Initialize(this);
+ // Widget MonoDevelop.ValaBinding.PackageDetails
+ this.Name = "MonoDevelop.ValaBinding.PackageDetails";
+ this.Title = Mono.Unix.Catalog.GetString("Package Details");
+ this.WindowPosition = ((Gtk.WindowPosition)(4));
+ this.HasSeparator = false;
+ // Internal child MonoDevelop.ValaBinding.PackageDetails.VBox
+ Gtk.VBox w1 = this.VBox;
+ w1.Name = "dialog1_VBox";
+ w1.BorderWidth = ((uint)(2));
+ // Container child dialog1_VBox.Gtk.Box+BoxChild
+ this.vbox3 = new Gtk.VBox();
+ this.vbox3.Name = "vbox3";
+ this.vbox3.Spacing = 6;
+ this.vbox3.BorderWidth = ((uint)(3));
+ // Container child vbox3.Gtk.Box+BoxChild
+ this.table1 = new Gtk.Table(((uint)(3)), ((uint)(2)), false);
+ this.table1.Name = "table1";
+ this.table1.RowSpacing = ((uint)(6));
+ this.table1.ColumnSpacing = ((uint)(6));
+ // Container child table1.Gtk.Table+TableChild
+ this.descriptionLabel = new Gtk.Label();
+ this.descriptionLabel.Name = "descriptionLabel";
+ this.descriptionLabel.Xalign = 0F;
+ this.descriptionLabel.Yalign = 0F;
+ this.descriptionLabel.LabelProp = Mono.Unix.Catalog.GetString("label12");
+ this.table1.Add(this.descriptionLabel);
+ Gtk.Table.TableChild w2 = ((Gtk.Table.TableChild)(this.table1[this.descriptionLabel]));
+ w2.TopAttach = ((uint)(2));
+ w2.BottomAttach = ((uint)(3));
+ w2.LeftAttach = ((uint)(1));
+ w2.RightAttach = ((uint)(2));
+ w2.XOptions = ((Gtk.AttachOptions)(4));
+ w2.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.label7 = new Gtk.Label();
+ this.label7.Name = "label7";
+ this.label7.Xalign = 0F;
+ this.label7.LabelProp = Mono.Unix.Catalog.GetString("Name:");
+ this.table1.Add(this.label7);
+ Gtk.Table.TableChild w3 = ((Gtk.Table.TableChild)(this.table1[this.label7]));
+ w3.XOptions = ((Gtk.AttachOptions)(4));
+ w3.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.label8 = new Gtk.Label();
+ this.label8.Name = "label8";
+ this.label8.Xalign = 0F;
+ this.label8.LabelProp = Mono.Unix.Catalog.GetString("Version:");
+ this.table1.Add(this.label8);
+ Gtk.Table.TableChild w4 = ((Gtk.Table.TableChild)(this.table1[this.label8]));
+ w4.TopAttach = ((uint)(1));
+ w4.BottomAttach = ((uint)(2));
+ w4.XOptions = ((Gtk.AttachOptions)(4));
+ w4.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.label9 = new Gtk.Label();
+ this.label9.Name = "label9";
+ this.label9.Xalign = 0F;
+ this.label9.Yalign = 0F;
+ this.label9.LabelProp = Mono.Unix.Catalog.GetString("Description:");
+ this.table1.Add(this.label9);
+ Gtk.Table.TableChild w5 = ((Gtk.Table.TableChild)(this.table1[this.label9]));
+ w5.TopAttach = ((uint)(2));
+ w5.BottomAttach = ((uint)(3));
+ w5.XOptions = ((Gtk.AttachOptions)(4));
+ w5.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.nameLabel = new Gtk.Label();
+ this.nameLabel.Name = "nameLabel";
+ this.nameLabel.Xalign = 0F;
+ this.nameLabel.LabelProp = Mono.Unix.Catalog.GetString("label10");
+ this.table1.Add(this.nameLabel);
+ Gtk.Table.TableChild w6 = ((Gtk.Table.TableChild)(this.table1[this.nameLabel]));
+ w6.LeftAttach = ((uint)(1));
+ w6.RightAttach = ((uint)(2));
+ w6.XOptions = ((Gtk.AttachOptions)(4));
+ w6.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table1.Gtk.Table+TableChild
+ this.versionLabel = new Gtk.Label();
+ this.versionLabel.Name = "versionLabel";
+ this.versionLabel.Xalign = 0F;
+ this.versionLabel.LabelProp = Mono.Unix.Catalog.GetString("label11");
+ this.table1.Add(this.versionLabel);
+ Gtk.Table.TableChild w7 = ((Gtk.Table.TableChild)(this.table1[this.versionLabel]));
+ w7.TopAttach = ((uint)(1));
+ w7.BottomAttach = ((uint)(2));
+ w7.LeftAttach = ((uint)(1));
+ w7.RightAttach = ((uint)(2));
+ w7.XOptions = ((Gtk.AttachOptions)(4));
+ w7.YOptions = ((Gtk.AttachOptions)(4));
+ this.vbox3.Add(this.table1);
+ Gtk.Box.BoxChild w8 = ((Gtk.Box.BoxChild)(this.vbox3[this.table1]));
+ w8.Position = 0;
+ w8.Expand = false;
+ w8.Fill = false;
+ // Container child vbox3.Gtk.Box+BoxChild
+ this.vbox4 = new Gtk.VBox();
+ this.vbox4.Name = "vbox4";
+ this.vbox4.Spacing = 6;
+ // Container child vbox4.Gtk.Box+BoxChild
+ this.label13 = new Gtk.Label();
+ this.label13.Name = "label13";
+ this.label13.Xalign = 0F;
+ this.label13.LabelProp = Mono.Unix.Catalog.GetString("Requires:");
+ this.vbox4.Add(this.label13);
+ Gtk.Box.BoxChild w9 = ((Gtk.Box.BoxChild)(this.vbox4[this.label13]));
+ w9.Position = 0;
+ w9.Expand = false;
+ w9.Fill = false;
+ // Container child vbox4.Gtk.Box+BoxChild
+ this.scrolledwindow1 = new Gtk.ScrolledWindow();
+ this.scrolledwindow1.CanFocus = true;
+ this.scrolledwindow1.Name = "scrolledwindow1";
+ this.scrolledwindow1.ShadowType = ((Gtk.ShadowType)(1));
+ // Container child scrolledwindow1.Gtk.Container+ContainerChild
+ Gtk.Viewport w10 = new Gtk.Viewport();
+ w10.ShadowType = ((Gtk.ShadowType)(0));
+ // Container child GtkViewport.Gtk.Container+ContainerChild
+ this.requiresTreeView = new Gtk.TreeView();
+ this.requiresTreeView.CanFocus = true;
+ this.requiresTreeView.Name = "requiresTreeView";
+ w10.Add(this.requiresTreeView);
+ this.scrolledwindow1.Add(w10);
+ this.vbox4.Add(this.scrolledwindow1);
+ Gtk.Box.BoxChild w13 = ((Gtk.Box.BoxChild)(this.vbox4[this.scrolledwindow1]));
+ w13.Position = 1;
+ this.vbox3.Add(this.vbox4);
+ Gtk.Box.BoxChild w14 = ((Gtk.Box.BoxChild)(this.vbox3[this.vbox4]));
+ w14.Position = 1;
+ w1.Add(this.vbox3);
+ Gtk.Box.BoxChild w15 = ((Gtk.Box.BoxChild)(w1[this.vbox3]));
+ w15.Position = 0;
+ // Internal child MonoDevelop.ValaBinding.PackageDetails.ActionArea
+ Gtk.HButtonBox w16 = this.ActionArea;
+ w16.Name = "dialog1_ActionArea";
+ w16.Spacing = 6;
+ w16.BorderWidth = ((uint)(5));
+ w16.LayoutStyle = ((Gtk.ButtonBoxStyle)(4));
+ // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
+ this.buttonOk = new Gtk.Button();
+ this.buttonOk.CanDefault = true;
+ this.buttonOk.CanFocus = true;
+ this.buttonOk.Name = "buttonOk";
+ this.buttonOk.UseStock = true;
+ this.buttonOk.UseUnderline = true;
+ this.buttonOk.Label = "gtk-ok";
+ this.AddActionWidget(this.buttonOk, -5);
+ Gtk.ButtonBox.ButtonBoxChild w17 = ((Gtk.ButtonBox.ButtonBoxChild)(w16[this.buttonOk]));
+ w17.Expand = false;
+ w17.Fill = false;
+ if ((this.Child != null)) {
+ this.Child.ShowAll();
+ }
+ this.DefaultWidth = 608;
+ this.DefaultHeight = 518;
+ this.Show();
+ this.buttonOk.Clicked += new System.EventHandler(this.OnButtonOkClicked);
+ }
+ }
+}
diff --git a/gtk-gui/generated.cs b/gtk-gui/generated.cs
new file mode 100644
index 0000000..35f420b
--- /dev/null
+++ b/gtk-gui/generated.cs
@@ -0,0 +1,115 @@
+// ------------------------------------------------------------------------------
+// <autogenerated>
+// This code was generated by a tool.
+//
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </autogenerated>
+// ------------------------------------------------------------------------------
+
+namespace Stetic {
+
+
+ internal class Gui {
+
+ private static bool initialized;
+
+ internal static void Initialize(Gtk.Widget iconRenderer) {
+ if ((Stetic.Gui.initialized == false)) {
+ Stetic.Gui.initialized = true;
+ }
+ }
+ }
+
+ internal class BinContainer {
+
+ private Gtk.Widget child;
+
+ private Gtk.UIManager uimanager;
+
+ public static BinContainer Attach(Gtk.Bin bin) {
+ BinContainer bc = new BinContainer();
+ bin.SizeRequested += new Gtk.SizeRequestedHandler(bc.OnSizeRequested);
+ bin.SizeAllocated += new Gtk.SizeAllocatedHandler(bc.OnSizeAllocated);
+ bin.Added += new Gtk.AddedHandler(bc.OnAdded);
+ return bc;
+ }
+
+ private void OnSizeRequested(object sender, Gtk.SizeRequestedArgs args) {
+ if ((this.child != null)) {
+ args.Requisition = this.child.SizeRequest();
+ }
+ }
+
+ private void OnSizeAllocated(object sender, Gtk.SizeAllocatedArgs args) {
+ if ((this.child != null)) {
+ this.child.Allocation = args.Allocation;
+ }
+ }
+
+ private void OnAdded(object sender, Gtk.AddedArgs args) {
+ this.child = args.Widget;
+ }
+
+ public void SetUiManager(Gtk.UIManager uim) {
+ this.uimanager = uim;
+ this.child.Realized += new System.EventHandler(this.OnRealized);
+ }
+
+ private void OnRealized(object sender, System.EventArgs args) {
+ if ((this.uimanager != null)) {
+ Gtk.Widget w;
+ w = this.child.Toplevel;
+ if (((w != null) && typeof(Gtk.Window).IsInstanceOfType(w))) {
+ ((Gtk.Window)(w)).AddAccelGroup(this.uimanager.AccelGroup);
+ this.uimanager = null;
+ }
+ }
+ }
+ }
+
+ internal class IconLoader {
+
+ public static Gdk.Pixbuf LoadIcon(Gtk.Widget widget, string name, Gtk.IconSize size, int sz) {
+ Gdk.Pixbuf res = widget.RenderIcon(name, size, null);
+ if ((res != null)) {
+ return res;
+ }
+ else {
+ try {
+ return Gtk.IconTheme.Default.LoadIcon(name, sz, 0);
+ }
+ catch (System.Exception ) {
+ if ((name != "gtk-missing-image")) {
+ return Stetic.IconLoader.LoadIcon(widget, "gtk-missing-image", size, sz);
+ }
+ else {
+ Gdk.Pixmap pmap = new Gdk.Pixmap(Gdk.Screen.Default.RootWindow, sz, sz);
+ Gdk.GC gc = new Gdk.GC(pmap);
+ gc.RgbFgColor = new Gdk.Color(255, 255, 255);
+ pmap.DrawRectangle(gc, true, 0, 0, sz, sz);
+ gc.RgbFgColor = new Gdk.Color(0, 0, 0);
+ pmap.DrawRectangle(gc, false, 0, 0, (sz - 1), (sz - 1));
+ gc.SetLineAttributes(3, Gdk.LineStyle.Solid, Gdk.CapStyle.Round, Gdk.JoinStyle.Round);
+ gc.RgbFgColor = new Gdk.Color(255, 0, 0);
+ pmap.DrawLine(gc, (sz / 4), (sz / 4), ((sz - 1) - (sz / 4)), ((sz - 1) - (sz / 4)));
+ pmap.DrawLine(gc, ((sz - 1) - (sz / 4)), (sz / 4), (sz / 4), ((sz - 1) - (sz / 4)));
+ return Gdk.Pixbuf.FromDrawable(pmap, pmap.Colormap, 0, 0, 0, 0, sz, sz);
+ }
+ }
+ }
+ }
+ }
+
+ internal class ActionGroups {
+
+ public static Gtk.ActionGroup GetActionGroup(System.Type type) {
+ return Stetic.ActionGroups.GetActionGroup(type.FullName);
+ }
+
+ public static Gtk.ActionGroup GetActionGroup(string name) {
+ return null;
+ }
+ }
+}
diff --git a/gtk-gui/gui.stetic b/gtk-gui/gui.stetic
new file mode 100644
index 0000000..c98bc56
--- /dev/null
+++ b/gtk-gui/gui.stetic
@@ -0,0 +1,1795 @@
+<?xml version="1.0" encoding="utf-8"?>
+<stetic-interface>
+ <configuration>
+ <images-root-path>..</images-root-path>
+ <target-gtk-version>2.8</target-gtk-version>
+ </configuration>
+ <import>
+ <widget-library name="MonoDevelop.Core.Gui, Version=1.9.1.0, Culture=neutral" />
+ <widget-library name="MonoDevelop.Deployment, Version=1.9.1.0, Culture=neutral" />
+ <widget-library name="MonoDevelop.Ide, Version=1.9.1.0, Culture=neutral" />
+ <widget-library name="MonoDevelop.Components, Version=1.9.1.0, Culture=neutral" />
+ <widget-library name="Mono.TextEditor, Version=1.0.0.0, Culture=neutral" />
+ <widget-library name="MonoDevelop.VersionControl, Version=1.9.1.0, Culture=neutral" />
+ <widget-library name="MonoDevelop.XmlEditor, Version=1.9.1.0, Culture=neutral" />
+ <widget-library name="MonoDevelop.Gettext, Version=1.9.1.0, Culture=neutral" />
+ <widget-library name="MonoDevelop.Deployment.Linux, Version=1.9.1.0, Culture=neutral" />
+ <widget-library name="MonoDevelop.VBNetBinding, Version=1.9.1.0, Culture=neutral" />
+ <widget-library name="MonoDevelop.CBinding, Version=1.9.1.0, Culture=neutral" />
+ <widget-library name="MonoDevelop.CSharpBinding, Version=1.9.1.0, Culture=neutral" />
+ <widget-library name="MonoDevelop.Autotools, Version=1.9.1.0, Culture=neutral" />
+ <widget-library name="MonoDevelop.Projects.Gui, Version=1.9.1.0, Culture=neutral" />
+ <widget-library name="../build/MonoDevelop.ValaBinding.dll" internal="true" />
+ </import>
+ <widget class="Gtk.Bin" id="MonoDevelop.ValaBinding.CodeGenerationPanel" design-size="611 396">
+ <property name="MemberName" />
+ <child>
+ <widget class="Gtk.Notebook" id="notebook1">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="CurrentPage">0</property>
+ <child>
+ <widget class="Gtk.VBox" id="vbox6">
+ <property name="MemberName" />
+ <property name="Spacing">3</property>
+ <child>
+ <widget class="Gtk.Table" id="table1">
+ <property name="MemberName" />
+ <property name="NRows">4</property>
+ <property name="NColumns">2</property>
+ <property name="RowSpacing">5</property>
+ <property name="ColumnSpacing">5</property>
+ <property name="BorderWidth">2</property>
+ <child>
+ <widget class="Gtk.Label" id="label10">
+ <property name="MemberName" />
+ <property name="Xpad">10</property>
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes">Warning Level:</property>
+ </widget>
+ <packing>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label4">
+ <property name="MemberName" />
+ <property name="Xpad">10</property>
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes">Multithreading:</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">3</property>
+ <property name="BottomAttach">4</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label5">
+ <property name="MemberName" />
+ <property name="Xpad">10</property>
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes">Optimization Level:</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label6">
+ <property name="MemberName" />
+ <property name="Xpad">10</property>
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes">Target:</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">2</property>
+ <property name="BottomAttach">3</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.SpinButton" id="optimizationSpinButton">
+ <property name="MemberName" />
+ <property name="Sensitive">False</property>
+ <property name="CanFocus">True</property>
+ <property name="Upper">3</property>
+ <property name="PageIncrement">10</property>
+ <property name="StepIncrement">1</property>
+ <property name="ClimbRate">1</property>
+ <property name="Numeric">True</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.ComboBox" id="targetComboBox">
+ <property name="MemberName" />
+ <property name="IsTextCombo">True</property>
+ <property name="Items" translatable="yes">Executable
+Static Library
+Shared Object</property>
+ <signal name="Changed" handler="OnTargetComboBoxChanged" />
+ </widget>
+ <packing>
+ <property name="TopAttach">2</property>
+ <property name="BottomAttach">3</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.CheckButton" id="threadingCheckbox">
+ <property name="MemberName">threadingCheckbox</property>
+ <property name="CanFocus">True</property>
+ <property name="Label" translatable="yes">Enable multithreading</property>
+ <property name="DrawIndicator">True</property>
+ <property name="HasLabel">True</property>
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">3</property>
+ <property name="BottomAttach">4</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.VBox" id="vbox1">
+ <property name="MemberName" />
+ <property name="Spacing">1</property>
+ <child>
+ <widget class="Gtk.RadioButton" id="noWarningRadio">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Label" translatable="yes">no warnings</property>
+ <property name="Active">True</property>
+ <property name="DrawIndicator">True</property>
+ <property name="HasLabel">True</property>
+ <property name="UseUnderline">True</property>
+ <property name="Group">group1</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.RadioButton" id="normalWarningRadio">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Label" translatable="yes">normal</property>
+ <property name="DrawIndicator">True</property>
+ <property name="HasLabel">True</property>
+ <property name="UseUnderline">True</property>
+ <property name="Group">group1</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.RadioButton" id="allWarningRadio">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Label" translatable="yes">all</property>
+ <property name="DrawIndicator">True</property>
+ <property name="HasLabel">True</property>
+ <property name="UseUnderline">True</property>
+ <property name="Group">group1</property>
+ </widget>
+ <packing>
+ <property name="Position">2</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.CheckButton" id="warningsAsErrorsCheckBox">
+ <property name="MemberName" />
+ <property name="Sensitive">False</property>
+ <property name="CanFocus">True</property>
+ <property name="Label" translatable="yes">Treat warnings as errors</property>
+ <property name="DrawIndicator">True</property>
+ <property name="HasLabel">True</property>
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="Position">3</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.HBox" id="hbox1">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.Label" id="label12">
+ <property name="MemberName" />
+ <property name="Xpad">13</property>
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes">Define Symbols:</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Entry" id="defineSymbolsTextEntry">
+ <property name="MemberName" />
+ <property name="Tooltip" translatable="yes">A space-separated list of symbols to define.</property>
+ <property name="CanFocus">True</property>
+ <property name="IsEditable">True</property>
+ <property name="InvisibleChar">●</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">False</property>
+ <property name="Padding">14</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Frame" id="frame2">
+ <property name="MemberName" />
+ <property name="ShadowType">None</property>
+ <property name="LabelYalign">0</property>
+ <child>
+ <widget class="Gtk.Alignment" id="GtkAlignment">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="Yalign">0</property>
+ <property name="LeftPadding">12</property>
+ <child>
+ <widget class="Gtk.Table" id="table5">
+ <property name="MemberName" />
+ <property name="NRows">2</property>
+ <property name="NColumns">1</property>
+ <property name="RowSpacing">6</property>
+ <property name="ColumnSpacing">9</property>
+ <property name="BorderWidth">6</property>
+ <child>
+ <widget class="Gtk.Label" id="label7">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes">Extra Compiler Options</property>
+ </widget>
+ <packing>
+ <property name="AutoSize">False</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.ScrolledWindow" id="scrolledwindow4">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="ShadowType">In</property>
+ <child>
+ <widget class="Gtk.TextView" id="extraCompilerTextView">
+ <property name="MemberName" />
+ <property name="Tooltip" translatable="yes">A newline-separated list of extra options to send to the compiler.
+One option can be in more than one line.
+Example:
+ `--pkg
+ cairo`</property>
+ <property name="CanFocus">True</property>
+ <property name="Text" translatable="yes" />
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="AutoSize">False</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">True</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="GtkLabel12">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes"><b>Extra Options</b></property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">2</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label1">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes">Code Generation</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Table" id="table2">
+ <property name="MemberName" />
+ <property name="NRows">2</property>
+ <property name="NColumns">3</property>
+ <property name="RowSpacing">10</property>
+ <property name="ColumnSpacing">10</property>
+ <property name="BorderWidth">3</property>
+ <child>
+ <placeholder />
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="addLibButton">
+ <property name="MemberName" />
+ <property name="Sensitive">False</property>
+ <property name="CanFocus">True</property>
+ <property name="Type">TextOnly</property>
+ <property name="Label" translatable="yes">Add</property>
+ <property name="UseUnderline">True</property>
+ <signal name="Clicked" handler="OnLibAdded" />
+ </widget>
+ <packing>
+ <property name="LeftAttach">2</property>
+ <property name="RightAttach">3</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label8">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes">Library:</property>
+ </widget>
+ <packing>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Entry" id="libAddEntry">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="IsEditable">True</property>
+ <property name="InvisibleChar">●</property>
+ <signal name="Changed" handler="OnLibAddEntryChanged" />
+ <signal name="Activated" handler="OnLibAddEntryActivated" />
+ </widget>
+ <packing>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.ScrolledWindow" id="scrolledwindow1">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="ShadowType">In</property>
+ <child>
+ <widget class="Gtk.TreeView" id="libTreeView">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="HeadersClickable">True</property>
+ <signal name="CursorChanged" handler="OnLibTreeViewCursorChanged" />
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">True</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.VBox" id="vbox4">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.Button" id="browseButton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextOnly</property>
+ <property name="Label" translatable="yes">Browse...</property>
+ <property name="UseUnderline">True</property>
+ <signal name="Clicked" handler="OnBrowseButtonClick" />
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="removeLibButton">
+ <property name="MemberName" />
+ <property name="Sensitive">False</property>
+ <property name="CanFocus">True</property>
+ <property name="Type">TextOnly</property>
+ <property name="Label" translatable="yes">Remove</property>
+ <property name="UseUnderline">True</property>
+ <signal name="Clicked" handler="OnRemoveLibButtonClicked" />
+ <signal name="Clicked" handler="OnLibRemoved" />
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="LeftAttach">2</property>
+ <property name="RightAttach">3</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">True</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label2">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes">Libraries</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.VBox" id="vbox7">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <property name="BorderWidth">3</property>
+ <child>
+ <widget class="Gtk.Table" id="table3">
+ <property name="MemberName" />
+ <property name="NRows">2</property>
+ <property name="NColumns">3</property>
+ <property name="RowSpacing">10</property>
+ <property name="ColumnSpacing">10</property>
+ <child>
+ <placeholder />
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="includePathAddButton">
+ <property name="MemberName" />
+ <property name="Sensitive">False</property>
+ <property name="CanFocus">True</property>
+ <property name="Type">TextOnly</property>
+ <property name="Label" translatable="yes">Add</property>
+ <property name="UseUnderline">True</property>
+ <signal name="Clicked" handler="OnIncludePathAdded" />
+ </widget>
+ <packing>
+ <property name="LeftAttach">2</property>
+ <property name="RightAttach">3</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Entry" id="includePathEntry">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="IsEditable">True</property>
+ <property name="InvisibleChar">●</property>
+ <signal name="Changed" handler="OnIncludePathEntryChanged" />
+ <signal name="Activated" handler="OnIncludePathEntryActivated" />
+ </widget>
+ <packing>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label9">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes">Vapi Paths:</property>
+ </widget>
+ <packing>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.ScrolledWindow" id="scrolledwindow2">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="ShadowType">In</property>
+ <child>
+ <widget class="Gtk.TreeView" id="includePathTreeView">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="HeadersClickable">True</property>
+ <signal name="CursorChanged" handler="OnIncludePathTreeViewCursorChanged" />
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">True</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.VBox" id="vbox5">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.Button" id="includePathBrowseButton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextOnly</property>
+ <property name="Label" translatable="yes">Browse...</property>
+ <property name="UseUnderline">True</property>
+ <signal name="Clicked" handler="OnIncludePathBrowseButtonClick" />
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="includePathRemoveButton">
+ <property name="MemberName" />
+ <property name="Sensitive">False</property>
+ <property name="CanFocus">True</property>
+ <property name="Type">TextOnly</property>
+ <property name="Label" translatable="yes">Remove</property>
+ <property name="UseUnderline">True</property>
+ <signal name="Clicked" handler="OnIncludePathRemoveButtonClicked" />
+ <signal name="Clicked" handler="OnIncludePathRemoved" />
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="LeftAttach">2</property>
+ <property name="RightAttach">3</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">True</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label3">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes">Paths</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <widget class="Gtk.Dialog" id="MonoDevelop.ValaBinding.AddLibraryDialog" design-size="648 439">
+ <property name="MemberName" />
+ <property name="Title" translatable="yes">Add Library</property>
+ <property name="Modal">True</property>
+ <property name="Buttons">2</property>
+ <property name="HelpButton">False</property>
+ <child internal-child="VBox">
+ <widget class="Gtk.VBox" id="dialog1_VBox">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <property name="BorderWidth">2</property>
+ <child>
+ <widget class="Gtk.FileChooserWidget" id="file_chooser_widget">
+ <property name="MemberName" />
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ <child internal-child="ActionArea">
+ <widget class="Gtk.HButtonBox" id="dialog1_ActionArea">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <property name="BorderWidth">5</property>
+ <property name="Size">2</property>
+ <property name="LayoutStyle">End</property>
+ <child>
+ <widget class="Gtk.Button" id="buttonCancel">
+ <property name="MemberName" />
+ <property name="CanDefault">True</property>
+ <property name="CanFocus">True</property>
+ <property name="UseStock">True</property>
+ <property name="Type">StockItem</property>
+ <property name="StockId">gtk-cancel</property>
+ <property name="ResponseId">-6</property>
+ <signal name="Clicked" handler="OnCancelButtonClick" />
+ <property name="label">gtk-cancel</property>
+ </widget>
+ <packing>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="buttonOk">
+ <property name="MemberName" />
+ <property name="CanDefault">True</property>
+ <property name="CanFocus">True</property>
+ <property name="UseStock">True</property>
+ <property name="Type">StockItem</property>
+ <property name="StockId">gtk-ok</property>
+ <property name="ResponseId">-5</property>
+ <signal name="Clicked" handler="OnOkButtonClick" />
+ <property name="label">gtk-ok</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <widget class="Gtk.Dialog" id="MonoDevelop.ValaBinding.AddPathDialog" design-size="649 436">
+ <property name="MemberName" />
+ <property name="Title" translatable="yes">Add Path</property>
+ <property name="Modal">True</property>
+ <property name="Buttons">2</property>
+ <property name="HelpButton">False</property>
+ <child internal-child="VBox">
+ <widget class="Gtk.VBox" id="dialog1_VBox">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <property name="BorderWidth">2</property>
+ <child>
+ <widget class="Gtk.FileChooserWidget" id="file_chooser_widget">
+ <property name="MemberName" />
+ <property name="ShowHidden">True</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ <child internal-child="ActionArea">
+ <widget class="Gtk.HButtonBox" id="dialog1_ActionArea">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <property name="BorderWidth">5</property>
+ <property name="Size">2</property>
+ <property name="LayoutStyle">End</property>
+ <child>
+ <widget class="Gtk.Button" id="buttonCancel">
+ <property name="MemberName" />
+ <property name="CanDefault">True</property>
+ <property name="CanFocus">True</property>
+ <property name="UseStock">True</property>
+ <property name="Type">StockItem</property>
+ <property name="StockId">gtk-cancel</property>
+ <property name="ResponseId">-6</property>
+ <signal name="Clicked" handler="OnCancelButtonClick" />
+ <property name="label">gtk-cancel</property>
+ </widget>
+ <packing>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="buttonOk">
+ <property name="MemberName" />
+ <property name="CanDefault">True</property>
+ <property name="CanFocus">True</property>
+ <property name="UseStock">True</property>
+ <property name="Type">StockItem</property>
+ <property name="StockId">gtk-ok</property>
+ <property name="ResponseId">-5</property>
+ <signal name="Clicked" handler="OnOkButtonClick" />
+ <property name="label">gtk-ok</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <widget class="Gtk.Bin" id="MonoDevelop.ValaBinding.OutputOptionsPanel" design-size="412 273">
+ <property name="MemberName" />
+ <child>
+ <widget class="Gtk.VBox" id="vbox2">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <property name="BorderWidth">3</property>
+ <child>
+ <widget class="Gtk.Table" id="table1">
+ <property name="MemberName" />
+ <property name="NRows">4</property>
+ <property name="NColumns">2</property>
+ <property name="RowSpacing">6</property>
+ <property name="ColumnSpacing">6</property>
+ <property name="BorderWidth">3</property>
+ <child>
+ <placeholder />
+ </child>
+ <child>
+ <widget class="Gtk.HBox" id="hbox1">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.Entry" id="outputPathTextEntry">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="IsEditable">True</property>
+ <property name="InvisibleChar">●</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="browseButton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextOnly</property>
+ <property name="Label" translatable="yes">_Browse</property>
+ <property name="UseUnderline">True</property>
+ <signal name="Clicked" handler="OnBrowseButtonClick" />
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="TopAttach">2</property>
+ <property name="BottomAttach">3</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label1">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes"><b>Output</b></property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label2">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes">Output Name:</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="XPadding">15</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label3">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes">Output Path:</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">2</property>
+ <property name="BottomAttach">3</property>
+ <property name="XPadding">15</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label4">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes">Parameters:</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">3</property>
+ <property name="BottomAttach">4</property>
+ <property name="XPadding">15</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Entry" id="outputNameTextEntry">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="IsEditable">True</property>
+ <property name="InvisibleChar">●</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Entry" id="parametersTextEntry">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="IsEditable">True</property>
+ <property name="InvisibleChar">●</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">3</property>
+ <property name="BottomAttach">4</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.CheckButton" id="externalConsoleCheckbox">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Label" translatable="yes">Run on e_xternal console</property>
+ <property name="Active">True</property>
+ <property name="DrawIndicator">True</property>
+ <property name="HasLabel">True</property>
+ <property name="UseUnderline">True</property>
+ <signal name="Clicked" handler="OnExternalConsoleCheckboxClicked" />
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.CheckButton" id="pauseCheckbox">
+ <property name="MemberName" />
+ <property name="Sensitive">False</property>
+ <property name="CanFocus">True</property>
+ <property name="Label" translatable="yes">Pause _console output</property>
+ <property name="DrawIndicator">True</property>
+ <property name="HasLabel">True</property>
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="Position">2</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <widget class="Gtk.Bin" id="MonoDevelop.ValaBinding.GeneralOptionsPanel" design-size="457 300">
+ <property name="MemberName" />
+ <child>
+ <widget class="Gtk.Table" id="table1">
+ <property name="MemberName" />
+ <property name="NRows">3</property>
+ <property name="NColumns">3</property>
+ <property name="RowSpacing">6</property>
+ <property name="ColumnSpacing">6</property>
+ <child>
+ <placeholder />
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label1">
+ <property name="MemberName" />
+ <property name="Xpad">10</property>
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes">Default Vala Compiler:</property>
+ </widget>
+ <packing>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.ComboBox" id="valaCombo">
+ <property name="MemberName" />
+ <property name="Tooltip" translatable="yes">Default compiler to use for new C projects.</property>
+ <property name="IsTextCombo">True</property>
+ <property name="Items" translatable="yes" />
+ <property name="Active">0</property>
+ <signal name="Changed" handler="OnValaComboChanged" />
+ </widget>
+ <packing>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <widget class="Gtk.Dialog" id="MonoDevelop.ValaBinding.EditPackagesDialog" design-size="580 449">
+ <property name="MemberName" />
+ <property name="Title" translatable="yes">Edit packages</property>
+ <property name="Modal">True</property>
+ <property name="Buttons">2</property>
+ <property name="HelpButton">False</property>
+ <child internal-child="VBox">
+ <widget class="Gtk.VBox" id="dialog1_VBox">
+ <property name="MemberName" />
+ <property name="BorderWidth">2</property>
+ <child>
+ <widget class="Gtk.VPaned" id="vpaned1">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Position">183</property>
+ <property name="BorderWidth">6</property>
+ <child>
+ <widget class="Gtk.HBox" id="hbox1">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.Notebook" id="notebook1">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="CurrentPage">0</property>
+ <child>
+ <widget class="Gtk.ScrolledWindow" id="scrolledwindow1">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="ShadowType">In</property>
+ <child>
+ <widget class="Gtk.TreeView" id="normalPackageTreeView">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="HeadersClickable">True</property>
+ <signal name="CursorChanged" handler="OnNonSelectedPackageCursorChanged" />
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label1">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes">System Packages</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.ScrolledWindow" id="scrolledwindow3">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="ShadowType">In</property>
+ <child>
+ <widget class="Gtk.TreeView" id="projectPackageTreeView">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="HeadersClickable">True</property>
+ <signal name="CursorChanged" handler="OnNonSelectedPackageCursorChanged" />
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label2">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes">Project Packages</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.VBox" id="vbox3">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.Fixed" id="fixed1">
+ <property name="MemberName" />
+ <property name="HeightRequest">21</property>
+ <property name="HasWindow">False</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">False</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="detailsButton">
+ <property name="MemberName" />
+ <property name="WidthRequest">33</property>
+ <property name="HeightRequest">33</property>
+ <property name="Sensitive">False</property>
+ <property name="CanFocus">True</property>
+ <property name="Type">TextOnly</property>
+ <property name="Label" translatable="yes">...</property>
+ <property name="UseUnderline">True</property>
+ <signal name="Clicked" handler="OnDetailsButtonClicked" />
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ </widget>
+ <packing>
+ <property name="Resize">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Table" id="table1">
+ <property name="MemberName" />
+ <property name="NRows">2</property>
+ <property name="NColumns">2</property>
+ <property name="RowSpacing">6</property>
+ <property name="ColumnSpacing">6</property>
+ <child>
+ <placeholder />
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label3">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="Yalign">0</property>
+ <property name="LabelProp" translatable="yes">Selected packages:</property>
+ </widget>
+ <packing>
+ <property name="AutoSize">False</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.ScrolledWindow" id="scrolledwindow2">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="ShadowType">In</property>
+ <child>
+ <widget class="Gtk.TreeView" id="selectedPackageTreeView">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="HeadersClickable">True</property>
+ <signal name="CursorChanged" handler="OnSelectedPackagesTreeViewCursorChanged" />
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">True</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.VBox" id="vbox2">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.Button" id="removeButton">
+ <property name="MemberName" />
+ <property name="WidthRequest">33</property>
+ <property name="HeightRequest">33</property>
+ <property name="Sensitive">False</property>
+ <property name="Tooltip">Remove selected package from the project.</property>
+ <property name="CanFocus">True</property>
+ <property name="Type">TextAndIcon</property>
+ <property name="Icon">stock:gtk-remove Menu</property>
+ <property name="Label" />
+ <property name="UseUnderline">True</property>
+ <signal name="Clicked" handler="OnRemoveButtonClicked" />
+ <signal name="Clicked" handler="OnRemoveButtonClick" />
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">False</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">True</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ <property name="Padding">3</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ <child internal-child="ActionArea">
+ <widget class="Gtk.HButtonBox" id="dialog1_ActionArea">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <property name="BorderWidth">5</property>
+ <property name="Size">2</property>
+ <property name="LayoutStyle">End</property>
+ <child>
+ <widget class="Gtk.Button" id="buttonCancel">
+ <property name="MemberName" />
+ <property name="CanDefault">True</property>
+ <property name="CanFocus">True</property>
+ <property name="UseStock">True</property>
+ <property name="Type">StockItem</property>
+ <property name="StockId">gtk-cancel</property>
+ <property name="ResponseId">-6</property>
+ <signal name="Clicked" handler="OnCancelButtonClick" />
+ <property name="label">gtk-cancel</property>
+ </widget>
+ <packing>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="buttonOk">
+ <property name="MemberName" />
+ <property name="CanDefault">True</property>
+ <property name="CanFocus">True</property>
+ <property name="UseStock">True</property>
+ <property name="Type">StockItem</property>
+ <property name="StockId">gtk-ok</property>
+ <property name="ResponseId">-5</property>
+ <signal name="Clicked" handler="OnOkButtonClick" />
+ <property name="label">gtk-ok</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <widget class="Gtk.Dialog" id="MonoDevelop.ValaBinding.PackageDetails" design-size="608 518">
+ <property name="MemberName" />
+ <property name="Title" translatable="yes">Package Details</property>
+ <property name="WindowPosition">CenterOnParent</property>
+ <property name="Buttons">1</property>
+ <property name="HelpButton">False</property>
+ <property name="HasSeparator">False</property>
+ <child internal-child="VBox">
+ <widget class="Gtk.VBox" id="dialog1_VBox">
+ <property name="MemberName" />
+ <property name="BorderWidth">2</property>
+ <child>
+ <widget class="Gtk.VBox" id="vbox3">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <property name="BorderWidth">3</property>
+ <child>
+ <widget class="Gtk.Table" id="table1">
+ <property name="MemberName" />
+ <property name="NRows">3</property>
+ <property name="NColumns">2</property>
+ <property name="RowSpacing">6</property>
+ <property name="ColumnSpacing">6</property>
+ <child>
+ <widget class="Gtk.Label" id="descriptionLabel">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="Yalign">0</property>
+ <property name="LabelProp" translatable="yes">label12</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">2</property>
+ <property name="BottomAttach">3</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label7">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes">Name:</property>
+ </widget>
+ <packing>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label8">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes">Version:</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label9">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="Yalign">0</property>
+ <property name="LabelProp" translatable="yes">Description:</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">2</property>
+ <property name="BottomAttach">3</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="nameLabel">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes">label10</property>
+ </widget>
+ <packing>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="versionLabel">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes">label11</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.VBox" id="vbox4">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.Label" id="label13">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes">Requires:</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.ScrolledWindow" id="scrolledwindow1">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="ShadowType">In</property>
+ <child>
+ <widget class="Gtk.Viewport" id="GtkViewport">
+ <property name="MemberName" />
+ <property name="ShadowType">None</property>
+ <child>
+ <widget class="Gtk.TreeView" id="requiresTreeView">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="ShowScrollbars">True</property>
+ <property name="HeadersClickable">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ <child>
+ <placeholder />
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ <child internal-child="ActionArea">
+ <widget class="Gtk.HButtonBox" id="dialog1_ActionArea">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <property name="BorderWidth">5</property>
+ <property name="Size">1</property>
+ <property name="LayoutStyle">End</property>
+ <child>
+ <widget class="Gtk.Button" id="buttonOk">
+ <property name="MemberName" />
+ <property name="CanDefault">True</property>
+ <property name="CanFocus">True</property>
+ <property name="UseStock">True</property>
+ <property name="Type">StockItem</property>
+ <property name="StockId">gtk-ok</property>
+ <property name="ResponseId">-5</property>
+ <signal name="Clicked" handler="OnButtonOkClicked" />
+ <property name="label">gtk-ok</property>
+ </widget>
+ <packing>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+</stetic-interface>
\ No newline at end of file
diff --git a/gtk-gui/objects.xml b/gtk-gui/objects.xml
new file mode 100644
index 0000000..2c33b19
--- /dev/null
+++ b/gtk-gui/objects.xml
@@ -0,0 +1,2 @@
+<objects attr-sync="on">
+</objects>
\ No newline at end of file
diff --git a/icons/Icons.16x16.PrivateUnion b/icons/Icons.16x16.PrivateUnion
new file mode 100644
index 0000000..cc32f48
Binary files /dev/null and b/icons/Icons.16x16.PrivateUnion differ
diff --git a/icons/Icons.16x16.ProjectReference b/icons/Icons.16x16.ProjectReference
new file mode 100644
index 0000000..1a80ef9
Binary files /dev/null and b/icons/Icons.16x16.ProjectReference differ
diff --git a/icons/Icons.16x16.ProtectedUnion b/icons/Icons.16x16.ProtectedUnion
new file mode 100644
index 0000000..df75b65
Binary files /dev/null and b/icons/Icons.16x16.ProtectedUnion differ
diff --git a/icons/Icons.16x16.Union b/icons/Icons.16x16.Union
new file mode 100644
index 0000000..40aae0f
Binary files /dev/null and b/icons/Icons.16x16.Union differ
diff --git a/icons/text-x-vala.16x16.png b/icons/text-x-vala.16x16.png
new file mode 100644
index 0000000..0fe1f50
Binary files /dev/null and b/icons/text-x-vala.16x16.png differ
diff --git a/icons/text-x-vala.24x24.png b/icons/text-x-vala.24x24.png
new file mode 100644
index 0000000..daa22b6
Binary files /dev/null and b/icons/text-x-vala.24x24.png differ
diff --git a/icons/text-x-vala.32x32.png b/icons/text-x-vala.32x32.png
new file mode 100644
index 0000000..d2e90a0
Binary files /dev/null and b/icons/text-x-vala.32x32.png differ
diff --git a/icons/text-x-vala.48x48.png b/icons/text-x-vala.48x48.png
new file mode 100644
index 0000000..b7def39
Binary files /dev/null and b/icons/text-x-vala.48x48.png differ
diff --git a/icons/vala-icon-32.png b/icons/vala-icon-32.png
new file mode 100644
index 0000000..528a7e6
Binary files /dev/null and b/icons/vala-icon-32.png differ
diff --git a/install-sh b/install-sh
new file mode 100755
index 0000000..a5897de
--- /dev/null
+++ b/install-sh
@@ -0,0 +1,519 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2006-12-25.00
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+nl='
+'
+IFS=" "" $nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+ doit_exec=exec
+else
+ doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+ test "$posix_glob" != "?" || {
+ if (set -f) 2>/dev/null; then
+ posix_glob=
+ else
+ posix_glob=:
+ fi
+ }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+ --help display this help and exit.
+ --version display version info and exit.
+
+ -c (ignored)
+ -C install only if different (preserve the last data modification time)
+ -d create directories instead of installing files.
+ -g GROUP $chgrpprog installed files to GROUP.
+ -m MODE $chmodprog installed files to MODE.
+ -o USER $chownprog installed files to USER.
+ -s $stripprog installed files.
+ -t DIRECTORY install into DIRECTORY.
+ -T report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+ RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+ case $1 in
+ -c) ;;
+
+ -C) copy_on_change=true;;
+
+ -d) dir_arg=true;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift;;
+
+ --help) echo "$usage"; exit $?;;
+
+ -m) mode=$2
+ case $mode in
+ *' '* | *' '* | *'
+'* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
+
+ -o) chowncmd="$chownprog $2"
+ shift;;
+
+ -s) stripcmd=$stripprog;;
+
+ -t) dst_arg=$2
+ shift;;
+
+ -T) no_target_directory=true;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+ --) shift
+ break;;
+
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
+
+ *) break;;
+ esac
+ shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+ # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dst_arg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dst_arg"
+ shift # fnord
+ fi
+ shift # arg
+ dst_arg=$arg
+ done
+fi
+
+if test $# -eq 0; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+ fi
+ # It's OK to call `install-sh -d' without argument.
+ # This can happen when creating conditional directories.
+ exit 0
+fi
+
+if test -z "$dir_arg"; then
+ trap '(exit $?); exit' 1 2 13 15
+
+ # Set umask so as not to create temps with too-generous modes.
+ # However, 'strip' requires both read and write access to temps.
+ case $mode in
+ # Optimize common cases.
+ *644) cp_umask=133;;
+ *755) cp_umask=22;;
+
+ *[0-7])
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw='% 200'
+ fi
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+ *)
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw=,u+rw
+ fi
+ cp_umask=$mode$u_plus_rw;;
+ esac
+fi
+
+for src
+do
+ # Protect names starting with `-'.
+ case $src in
+ -*) src=./$src;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ dstdir=$dst
+ test -d "$dstdir"
+ dstdir_status=$?
+ else
+
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dst_arg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+
+ dst=$dst_arg
+ # Protect names starting with `-'.
+ case $dst in
+ -*) dst=./$dst;;
+ esac
+
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ if test -n "$no_target_directory"; then
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
+ fi
+ dstdir=$dst
+ dst=$dstdir/`basename "$src"`
+ dstdir_status=0
+ else
+ # Prefer dirname, but fall back on a substitute if dirname fails.
+ dstdir=`
+ (dirname "$dst") 2>/dev/null ||
+ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$dst" : 'X\(//\)[^/]' \| \
+ X"$dst" : 'X\(//\)$' \| \
+ X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$dst" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'
+ `
+
+ test -d "$dstdir"
+ dstdir_status=$?
+ fi
+ fi
+
+ obsolete_mkdir_used=false
+
+ if test $dstdir_status != 0; then
+ case $posix_mkdir in
+ '')
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writeable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
+ esac
+
+ if
+ $posix_mkdir && (
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ )
+ then :
+ else
+
+ # The umask is ridiculous, or mkdir does not conform to POSIX,
+ # or it failed possibly due to a race condition. Create the
+ # directory the slow way, step by step, checking for races as we go.
+
+ case $dstdir in
+ /*) prefix='/';;
+ -*) prefix='./';;
+ *) prefix='';;
+ esac
+
+ eval "$initialize_posix_glob"
+
+ oIFS=$IFS
+ IFS=/
+ $posix_glob set -f
+ set fnord $dstdir
+ shift
+ $posix_glob set +f
+ IFS=$oIFS
+
+ prefixes=
+
+ for d
+ do
+ test -z "$d" && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
+ done
+
+ if test -n "$prefixes"; then
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
+ fi
+ fi
+ fi
+
+ if test -n "$dir_arg"; then
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+ else
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+ rmtmp=$dstdir/_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+ # Copy the file name to the temp name.
+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+ # If -C, don't bother to copy if it wouldn't change the file.
+ if $copy_on_change &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+ eval "$initialize_posix_glob" &&
+ $posix_glob set -f &&
+ set X $old && old=:$2:$4:$5:$6 &&
+ set X $new && new=:$2:$4:$5:$6 &&
+ $posix_glob set +f &&
+
+ test "$old" = "$new" &&
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+ then
+ rm -f "$dsttmp"
+ else
+ # Rename the file to the real destination.
+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+ {
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
+ }
+ fi || exit 1
+
+ trap '' 0
+ fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/missing b/missing
new file mode 100755
index 0000000..1c8ff70
--- /dev/null
+++ b/missing
@@ -0,0 +1,367 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2006-05-10.23
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+fi
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+ configure_ac=configure.ac
+else
+ configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+ # Try to run requested program, and just exit if it succeeds.
+ run=
+ shift
+ "$@" && exit 0
+ # Exit code 63 means version mismatch. This often happens
+ # when the user try to use an ancient version of a tool on
+ # a file that requires a minimum version. In this case we
+ # we should proceed has if the program had been absent, or
+ # if --run hadn't been passed.
+ if test $? = 63; then
+ run=:
+ msg="probably too old"
+ fi
+ ;;
+
+ -h|--h|--he|--hel|--help)
+ echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+ -h, --help display this help and exit
+ -v, --version output version information and exit
+ --run try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+ aclocal touch file \`aclocal.m4'
+ autoconf touch file \`configure'
+ autoheader touch file \`config.h.in'
+ autom4te touch the output file, or create a stub one
+ automake touch all \`Makefile.in' files
+ bison create \`y.tab.[ch]', if possible, from existing .[ch]
+ flex create \`lex.yy.c', if possible, from existing .c
+ help2man touch the output file
+ lex create \`lex.yy.c', if possible, from existing .c
+ makeinfo touch the output file
+ tar try tar, gnutar, gtar, then tar without non-portable flags
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Send bug reports to <bug-automake at gnu.org>."
+ exit $?
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing $scriptversion (GNU Automake)"
+ exit $?
+ ;;
+
+ -*)
+ echo 1>&2 "$0: Unknown \`$1' option"
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+ ;;
+
+esac
+
+# Now exit if we have it, but it failed. Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).
+case $1 in
+ lex|yacc)
+ # Not GNU programs, they don't have --version.
+ ;;
+
+ tar)
+ if test -n "$run"; then
+ echo 1>&2 "ERROR: \`tar' requires --run"
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ exit 1
+ fi
+ ;;
+
+ *)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ # Could not run --version or --help. This is probably someone
+ # running `$TOOL --version' or `$TOOL --help' to check whether
+ # $TOOL exists and not knowing $TOOL uses missing.
+ exit 1
+ fi
+ ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $1 in
+ aclocal*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acinclude.m4' or \`${configure_ac}'. You might want
+ to install the \`Automake' and \`Perl' packages. Grab them from
+ any GNU archive site."
+ touch aclocal.m4
+ ;;
+
+ autoconf)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`${configure_ac}'. You might want to install the
+ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
+ archive site."
+ touch configure
+ ;;
+
+ autoheader)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acconfig.h' or \`${configure_ac}'. You might want
+ to install the \`Autoconf' and \`GNU m4' packages. Grab them
+ from any GNU archive site."
+ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+ test -z "$files" && files="config.h"
+ touch_files=
+ for f in $files; do
+ case $f in
+ *:*) touch_files="$touch_files "`echo "$f" |
+ sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+ *) touch_files="$touch_files $f.in";;
+ esac
+ done
+ touch $touch_files
+ ;;
+
+ automake*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+ You might want to install the \`Automake' and \`Perl' packages.
+ Grab them from any GNU archive site."
+ find . -type f -name Makefile.am -print |
+ sed 's/\.am$/.in/' |
+ while read f; do touch "$f"; done
+ ;;
+
+ autom4te)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them.
+ You can get \`$1' as part of \`Autoconf' from any GNU
+ archive site."
+
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo "#! /bin/sh"
+ echo "# Created by GNU Automake missing as a replacement of"
+ echo "# $ $@"
+ echo "exit 0"
+ chmod +x $file
+ exit 1
+ fi
+ ;;
+
+ bison|yacc)
+ echo 1>&2 "\
+WARNING: \`$1' $msg. You should only need it if
+ you modified a \`.y' file. You may need the \`Bison' package
+ in order for those modifications to take effect. You can get
+ \`Bison' from any GNU archive site."
+ rm -f y.tab.c y.tab.h
+ if test $# -ne 1; then
+ eval LASTARG="\${$#}"
+ case $LASTARG in
+ *.y)
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.c
+ fi
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.h
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f y.tab.h; then
+ echo >y.tab.h
+ fi
+ if test ! -f y.tab.c; then
+ echo 'main() { return 0; }' >y.tab.c
+ fi
+ ;;
+
+ lex|flex)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.l' file. You may need the \`Flex' package
+ in order for those modifications to take effect. You can get
+ \`Flex' from any GNU archive site."
+ rm -f lex.yy.c
+ if test $# -ne 1; then
+ eval LASTARG="\${$#}"
+ case $LASTARG in
+ *.l)
+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" lex.yy.c
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f lex.yy.c; then
+ echo 'main() { return 0; }' >lex.yy.c
+ fi
+ ;;
+
+ help2man)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a dependency of a manual page. You may need the
+ \`Help2man' package in order for those modifications to take
+ effect. You can get \`Help2man' from any GNU archive site."
+
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo ".ab help2man is required to generate this page"
+ exit 1
+ fi
+ ;;
+
+ makeinfo)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.texi' or \`.texinfo' file, or any other file
+ indirectly affecting the aspect of the manual. The spurious
+ call might also be the consequence of using a buggy \`make' (AIX,
+ DU, IRIX). You might want to install the \`Texinfo' package or
+ the \`GNU make' package. Grab either from any GNU archive site."
+ # The file to touch is that specified with -o ...
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -z "$file"; then
+ # ... or it is the one specified with @setfilename ...
+ infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+ file=`sed -n '
+ /^@setfilename/{
+ s/.* \([^ ]*\) *$/\1/
+ p
+ q
+ }' $infile`
+ # ... or it is derived from the source name (dir/f.texi becomes f.info)
+ test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+ fi
+ # If the file does not exist, the user really needs makeinfo;
+ # let's fail without touching anything.
+ test -f $file || exit 1
+ touch $file
+ ;;
+
+ tar)
+ shift
+
+ # We have already tried tar in the generic part.
+ # Look for gnutar/gtar before invocation to avoid ugly error
+ # messages.
+ if (gnutar --version > /dev/null 2>&1); then
+ gnutar "$@" && exit 0
+ fi
+ if (gtar --version > /dev/null 2>&1); then
+ gtar "$@" && exit 0
+ fi
+ firstarg="$1"
+ if shift; then
+ case $firstarg in
+ *o*)
+ firstarg=`echo "$firstarg" | sed s/o//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ case $firstarg in
+ *h*)
+ firstarg=`echo "$firstarg" | sed s/h//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ fi
+
+ echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+ You may want to install GNU tar or Free paxutils, or check the
+ command line arguments."
+ exit 1
+ ;;
+
+ *)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them. Check the \`README' file,
+ it often tells you about the needed prerequisites for installing
+ this package. You may also peek at any GNU archive site, in case
+ some other package would contain this missing \`$1' program."
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/templates/ConsoleValaProject.xpt.xml b/templates/ConsoleValaProject.xpt.xml
new file mode 100644
index 0000000..b1182cd
--- /dev/null
+++ b/templates/ConsoleValaProject.xpt.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<Template
+ originator = "Levi Bard"
+ created = "03/11/2008"
+ lastModified = "03/11/2008">
+
+ <!-- Template Header -->
+ <TemplateConfiguration>
+ <_Name>Console Project</_Name>
+ <_Category>Vala</_Category>
+ <Icon>md-project-console|res:vala-icon-32.png</Icon>
+ <LanguageName>Vala</LanguageName>
+ <_Description>Creates a simple hello world Vala project.</_Description>
+ </TemplateConfiguration>
+
+ <!-- Template Content -->
+ <Combine name = "${ProjectName}" directory = ".">
+ <Project name = "${ProjectName}" directory = "." type = "Vala">
+ <Options
+ Target = "Bin"
+ PauseConsoleOutput = "True"
+ CompilerArgs = ""
+ LinkerArgs = ""
+ Packages = "glib-2.0"
+ />
+
+ <Files>
+ <File name = "main.vala"><![CDATA[// project created on ${Date} at ${Time}
+using GLib;
+
+public class HelloVala: GLib.Object {
+ public static int main (string[] args) {
+ stdout.printf ("Hello world!\n");
+
+ return 0;
+ }
+}]]></File>
+ </Files>
+ </Project>
+ </Combine>
+</Template>
diff --git a/templates/EmptyValaProject.xpt.xml b/templates/EmptyValaProject.xpt.xml
new file mode 100644
index 0000000..7b0a347
--- /dev/null
+++ b/templates/EmptyValaProject.xpt.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<Template
+ originator = "Levi Bard"
+ created = "03/11/2008"
+ lastModified = "03/11/2008">
+
+ <!-- Template Header -->
+ <TemplateConfiguration>
+ <_Name>Empty Vala Project</_Name>
+ <_Category>Vala</_Category>
+ <Icon>md-project|res:vala-icon-32.png</Icon>
+ <LanguageName>Vala</LanguageName>
+ <_Description>Creates an empty Vala solution.</_Description>
+ </TemplateConfiguration>
+
+ <!-- Template Content -->
+ <Combine name = "${ProjectName}" directory = ".">
+ <Project name = "${ProjectName}" directory = "." type = "Vala">
+ <Options
+ Target = "Bin"
+ PauseConsoleOutput = "True"
+ CompilerArgs = ""
+ LinkerArgs = ""
+ Packages = "glib-2.0"
+ />
+ </Project>
+ </Combine>
+</Template>
diff --git a/templates/EmptyValaSourceFile.xft.xml b/templates/EmptyValaSourceFile.xft.xml
new file mode 100644
index 0000000..f0385e9
--- /dev/null
+++ b/templates/EmptyValaSourceFile.xft.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<Template
+ Originator="Levi Bard"
+ Language="Vala"
+ Created="03/11/2008"
+ LastModified="03/11/2008">
+
+ <TemplateConfiguration>
+ <_Name>Empty Vala Source File</_Name>
+ <Icon>res:text-x-vala.32x32.png</Icon>
+ <_Category>General</_Category>
+ <LanguageName>Vala</LanguageName>
+ <_Description>Creates an empty Vala source file.</_Description>
+ </TemplateConfiguration>
+
+ <TemplateFiles>
+ <File DefaultExtension=".vala" DefaultName="EmptyValaSourceFile"/>
+ </TemplateFiles>
+
+ <FileOptions/>
+
+</Template>
diff --git a/templates/SharedLibraryValaProject.xpt.xml b/templates/SharedLibraryValaProject.xpt.xml
new file mode 100644
index 0000000..9ec8d6d
--- /dev/null
+++ b/templates/SharedLibraryValaProject.xpt.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<Template
+ originator = "Levi Bard"
+ created = "03/12/2008"
+ lastModified = "03/12/2008">
+
+ <!-- Template Header -->
+ <TemplateConfiguration>
+ <_Name>Shared Library</_Name>
+ <_Category>Vala</_Category>
+ <Icon>md-project-library|res:vala-icon-32.png</Icon>
+ <LanguageName>Vala</LanguageName>
+ <_Description>Creates a simple shared library Vala project.</_Description>
+ </TemplateConfiguration>
+
+ <!-- Template Content -->
+ <Combine name = "${ProjectName}" directory = ".">
+ <Project name = "${ProjectName}" directory = "." type = "Vala">
+ <Options
+ Target = "SharedLibrary"
+ PauseConsoleOutput = "True"
+ CompilerArgs = ""
+ Packages = "glib-2.0"
+ />
+
+ <Files>
+ <File name = "main.vala"><![CDATA[// project created on ${Date} at ${Time}
+
+// Library content goes here
+
+]]></File>
+ </Files>
+ </Project>
+ </Combine>
+</Template>
diff --git a/templates/ValaTestFixture.xpt.xml b/templates/ValaTestFixture.xpt.xml
new file mode 100644
index 0000000..d8c69d5
--- /dev/null
+++ b/templates/ValaTestFixture.xpt.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<Template
+ originator = "Levi Bard"
+ created = "08/12/2008"
+ lastModified = "08/12/2008">
+
+ <!-- Template Header -->
+ <TemplateConfiguration>
+ <_Name>Test Fixture</_Name>
+ <_Category>Vala</_Category>
+ <Icon>md-project-console|res:vala-icon-32.png</Icon>
+ <LanguageName>Vala</LanguageName>
+ <_Description>Creates a Vala test fixture.</_Description>
+ </TemplateConfiguration>
+
+ <!-- Template Content -->
+ <Combine name = "${ProjectName}" directory = ".">
+ <Project name = "${ProjectName}" directory = "." type = "Vala">
+ <Options
+ Target = "Bin"
+ PauseConsoleOutput = "True"
+ CompilerArgs = ""
+ LinkerArgs = ""
+ Packages = "glib-2.0"
+ />
+
+ <Files>
+ <File name = "main.vala"><![CDATA[// project created on ${Date} at ${Time}
+using GLib;
+
+public class MyValaTest: GLib.Object {
+ public static void doTest() {
+ // Test code goes here
+ }
+
+ public static int main (string[] args) {
+ Test.init(ref args);
+
+ Test.add_func ("/MyValaTest/MyTest", doTest);
+
+ Test.run();
+
+ return 0;
+ }
+}]]></File>
+ </Files>
+ </Project>
+ </Combine>
+</Template>
--
monodevelop-vala
More information about the Pkg-cli-apps-commits
mailing list