--- /dev/null
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoDevelop.HelloWorld", "MonoDevelop.HelloWorld\MonoDevelop.HelloWorld.csproj", "{809465B8-CF04-41ED-B1C5-2C8EF6C5E73B}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x86 = Debug|x86
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {809465B8-CF04-41ED-B1C5-2C8EF6C5E73B}.Debug|x86.ActiveCfg = Debug|x86
+ {809465B8-CF04-41ED-B1C5-2C8EF6C5E73B}.Debug|x86.Build.0 = Debug|x86
+ {809465B8-CF04-41ED-B1C5-2C8EF6C5E73B}.Release|x86.ActiveCfg = Release|x86
+ {809465B8-CF04-41ED-B1C5-2C8EF6C5E73B}.Release|x86.Build.0 = Release|x86
+ EndGlobalSection
+ GlobalSection(MonoDevelopProperties) = preSolution
+ description = Just a simple Addin for MonoDevelopment IDE
+ version = 1.0
+ EndGlobalSection
+EndGlobal
--- /dev/null
+using System;
+using System.Linq;
+using MonoDevelop.Components.Commands;
+using MonoDevelop.Ide;
+using MonoDevelop.Projects;
+
+
+namespace MonoDevelop.HelloWorld
+{
+ public enum Commands
+ {
+ ShowFiles,
+ }
+
+ public class ShowFilesCommandHandler : CommandHandler
+ {
+ protected override void Run()
+ {
+ var proj = IdeApp.Workspace.GetAllProjects ().FirstOrDefault ();
+ if (proj != null)
+ {
+ var dlg = new ShowFilesDialog (proj);
+ MessageService.ShowCustomDialog (dlg);
+ }
+ }
+ }
+}
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<Addin
+ name = "Hello World Addin"
+ id = "MonoDevelop.HelloWorld"
+ namespace = "MonoDevelop.HelloWorld"
+ author = "Gustavo Martin Morcuende"
+ copyright = "Apache License, Version 2"
+ url = "http://gumartinm.name"
+ description = "Just a simple Addin for MonoDevelopment IDE"
+ category = "HelloWorld Category"
+ version = "1.0">
+
+ <Runtime>
+ </Runtime>
+ <Extension path = "/MonoDevelop/Ide/Commands">
+ <Command id = "MonoDevelop.HelloWorld.Commands.ShowFiles"
+ _label = "Show Files in Project"
+ description = "Show Files in Project"
+ defaultHandler = "MonoDevelop.HelloWorld.ShowFilesCommandHandler" />
+ </Extension>
+
+ <Extension path = "/MonoDevelop/Ide/MainMenu">
+ <ItemSet id = "HelloWorld" _label = "Hello World" insertafter = "Run" >
+ <CommandItem id = "MonoDevelop.HelloWorld.Commands.ShowFiles" />
+ <SeparatorItem/>
+ <CommandItem id = "MonoDevelop.HelloWorld.Commands.ShowFiles"/>
+ </ItemSet>
+ </Extension>
+
+</Addin>
+
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+ <ProjectGuid>{809465B8-CF04-41ED-B1C5-2C8EF6C5E73B}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <RootNamespace>MonoDevelop.HelloWorld</RootNamespace>
+ <AssemblyName>MonoDevelop.HelloWorld</AssemblyName>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <Description>Just a simple Addin for MonoDevelopment IDE</Description>
+ <ReleaseVersion>1.0</ReleaseVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug</OutputPath>
+ <DefineConstants>DEBUG;</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <ConsolePause>false</ConsolePause>
+ <PlatformTarget>x86</PlatformTarget>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release</OutputPath>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <ConsolePause>false</ConsolePause>
+ <PlatformTarget>x86</PlatformTarget>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="gtk-sharp, Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
+ <SpecificVersion>False</SpecificVersion>
+ </Reference>
+ <Reference Include="gdk-sharp, Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
+ <SpecificVersion>False</SpecificVersion>
+ </Reference>
+ <Reference Include="glib-sharp, Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
+ <SpecificVersion>False</SpecificVersion>
+ </Reference>
+ <Reference Include="glade-sharp, Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
+ <SpecificVersion>False</SpecificVersion>
+ </Reference>
+ <Reference Include="pango-sharp, Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
+ <SpecificVersion>False</SpecificVersion>
+ </Reference>
+ <Reference Include="atk-sharp, Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
+ <SpecificVersion>False</SpecificVersion>
+ </Reference>
+ <Reference Include="Mono.Posix" />
+ <Reference Include="Mono.Addins, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
+ <Reference Include="MonoDevelop.Core, Version=2.6.0.0, Culture=neutral">
+ <Package>monodevelop</Package>
+ </Reference>
+ <Reference Include="MonoDevelop.Ide, Version=2.6.0.0, Culture=neutral">
+ <Package>monodevelop</Package>
+ </Reference>
+ </ItemGroup>
+ <ItemGroup>
+ <EmbeddedResource Include="gtk-gui\gui.stetic">
+ <LogicalName>gui.stetic</LogicalName>
+ </EmbeddedResource>
+ <EmbeddedResource Include="MonoDevelop.HelloWorld.addin.xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="gtk-gui\generated.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="Commands.cs" />
+ <Compile Include="ShowFilesDialog.cs" />
+ <Compile Include="gtk-gui\MonoDevelop.HelloWorld.ShowFilesDialog.cs" />
+ <Compile Include="Properties\AddinInfo.cs" />
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+</Project>
\ No newline at end of file
--- /dev/null
+using Mono.Addins;
+
+[assembly:Addin (
+ "MonoDevelop.HelloWorld",
+ Namespace = "MonoDevelop.HelloWorld",
+ Version = "1.0",
+ Category = "HelloWorld Category"
+)]
+
+[assembly:AddinName ("HelloWorld")]
+[assembly:AddinCategory ("HelloWorld Category")]
+[assembly:AddinDescription ("Just a simple Addin for MonoDevelopment IDE")]
+[assembly:AddinAuthor ("Gustavo Martin Morcuende")]
+
+[assembly:AddinDependency ("::MonoDevelop.Core", MonoDevelop.BuildInfo.Version)]
+[assembly:AddinDependency ("::MonoDevelop.Ide", MonoDevelop.BuildInfo.Version)]
+
--- /dev/null
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+// Information about this assembly is defined by the following attributes.
+// Change them to the values specific to your project.
+
+[assembly: AssemblyTitle ("MonoDevelop.HelloWorld")]
+[assembly: AssemblyDescription ("Just a simple Addin for MonoDevelopment IDE")]
+[assembly: AssemblyConfiguration ("")]
+[assembly: AssemblyCompany ("gumartinm.name")]
+[assembly: AssemblyProduct ("Hello World MonoDevelopment Addin")]
+[assembly: AssemblyCopyright ("gumartinm.name")]
+[assembly: AssemblyTrademark ("Apache License, Version 2")]
+[assembly: AssemblyCulture ("")]
+
+// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
+// The form "{Major}.{Minor}.*" will automatically update the build and revision,
+// and "{Major}.{Minor}.{Build}.*" will update just the revision.
+
+[assembly: AssemblyVersion ("1.0.*")]
+
+// The following attributes are used to specify the signing key for the assembly,
+// if desired. See the Mono documentation for more information about signing.
+
+//[assembly: AssemblyDelaySign(false)]
+//[assembly: AssemblyKeyFile("")]
+
--- /dev/null
+using System;
+using MonoDevelop.Projects;
+using System.Text;
+
+namespace MonoDevelop.HelloWorld
+{
+ public partial class ShowFilesDialog : Gtk.Dialog
+ {
+ readonly Project project;
+
+ public ShowFilesDialog (Project project)
+ {
+ this.project = project;
+ this.Build ();
+
+ var fileNames = new StringBuilder ();
+ fileNames.Append ("Project name: " + project.Name);
+ fileNames.Append (Environment.NewLine);
+ foreach (var file in project.Files)
+ {
+ fileNames.Append(file.Name);
+ fileNames.Append (Environment.NewLine);
+ }
+ this.ShowFilesTextView.Buffer.Text = fileNames.ToString ();
+ }
+
+ protected void OnButtonShowFilesClickEvent (object sender, EventArgs e)
+ {
+ var fileNames = new StringBuilder ();
+ fileNames.Append ("Project name: " + project.Name);
+ fileNames.Append (Environment.NewLine);
+ foreach (var file in project.Files)
+ {
+ fileNames.Append(file.Name);
+ fileNames.Append (Environment.NewLine);
+ }
+ this.ShowFilesTextView.Buffer.Text = fileNames.ToString ();
+ }
+ }
+}
+
--- /dev/null
+
+// This file has been generated by the GUI designer. Do not modify.
+namespace MonoDevelop.HelloWorld
+{
+ public partial class ShowFilesDialog
+ {
+ private global::Gtk.VBox vbox2;
+
+ private global::Gtk.ScrolledWindow GtkScrolledWindow;
+
+ private global::Gtk.TextView textview1;
+
+ private global::Gtk.ScrolledWindow GtkScrolledWindow1;
+
+ private global::Gtk.TextView ShowFilesTextView;
+
+ private global::Gtk.Button ShowFilesButton;
+
+ private global::Gtk.Button buttonCancel;
+
+ private global::Gtk.Button buttonOk;
+
+ protected virtual void Build ()
+ {
+ global::Stetic.Gui.Initialize (this);
+ // Widget MonoDevelop.HelloWorld.ShowFilesDialog
+ this.Name = "MonoDevelop.HelloWorld.ShowFilesDialog";
+ this.WindowPosition = ((global::Gtk.WindowPosition)(4));
+ // Internal child MonoDevelop.HelloWorld.ShowFilesDialog.VBox
+ global::Gtk.VBox w1 = this.VBox;
+ w1.Name = "dialog1_VBox";
+ w1.BorderWidth = ((uint)(2));
+ // Container child dialog1_VBox.Gtk.Box+BoxChild
+ this.vbox2 = new global::Gtk.VBox ();
+ this.vbox2.Name = "vbox2";
+ this.vbox2.Spacing = 6;
+ // Container child vbox2.Gtk.Box+BoxChild
+ this.GtkScrolledWindow = new global::Gtk.ScrolledWindow ();
+ this.GtkScrolledWindow.Name = "GtkScrolledWindow";
+ this.GtkScrolledWindow.ShadowType = ((global::Gtk.ShadowType)(1));
+ // Container child GtkScrolledWindow.Gtk.Container+ContainerChild
+ this.textview1 = new global::Gtk.TextView ();
+ this.textview1.Buffer.Text = "Hello World Addin";
+ this.textview1.CanFocus = true;
+ this.textview1.Name = "textview1";
+ this.GtkScrolledWindow.Add (this.textview1);
+ this.vbox2.Add (this.GtkScrolledWindow);
+ global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.GtkScrolledWindow]));
+ w3.Position = 0;
+ // Container child vbox2.Gtk.Box+BoxChild
+ this.GtkScrolledWindow1 = new global::Gtk.ScrolledWindow ();
+ this.GtkScrolledWindow1.Name = "GtkScrolledWindow1";
+ this.GtkScrolledWindow1.ShadowType = ((global::Gtk.ShadowType)(1));
+ // Container child GtkScrolledWindow1.Gtk.Container+ContainerChild
+ this.ShowFilesTextView = new global::Gtk.TextView ();
+ this.ShowFilesTextView.CanFocus = true;
+ this.ShowFilesTextView.Name = "ShowFilesTextView";
+ this.GtkScrolledWindow1.Add (this.ShowFilesTextView);
+ this.vbox2.Add (this.GtkScrolledWindow1);
+ global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.GtkScrolledWindow1]));
+ w5.Position = 1;
+ w1.Add (this.vbox2);
+ global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(w1 [this.vbox2]));
+ w6.Position = 0;
+ // Internal child MonoDevelop.HelloWorld.ShowFilesDialog.ActionArea
+ global::Gtk.HButtonBox w7 = this.ActionArea;
+ w7.Name = "dialog1_ActionArea";
+ w7.Spacing = 10;
+ w7.BorderWidth = ((uint)(5));
+ w7.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(4));
+ // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
+ this.ShowFilesButton = new global::Gtk.Button ();
+ this.ShowFilesButton.CanFocus = true;
+ this.ShowFilesButton.Name = "ShowFilesButton";
+ this.ShowFilesButton.UseUnderline = true;
+ this.ShowFilesButton.Label = global::Mono.Unix.Catalog.GetString ("ShowFiles");
+ this.AddActionWidget (this.ShowFilesButton, 0);
+ global::Gtk.ButtonBox.ButtonBoxChild w8 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w7 [this.ShowFilesButton]));
+ w8.Expand = false;
+ w8.Fill = false;
+ // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
+ this.buttonCancel = new global::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);
+ global::Gtk.ButtonBox.ButtonBoxChild w9 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w7 [this.buttonCancel]));
+ w9.Position = 1;
+ w9.Expand = false;
+ w9.Fill = false;
+ // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
+ this.buttonOk = new global::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);
+ global::Gtk.ButtonBox.ButtonBoxChild w10 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w7 [this.buttonOk]));
+ w10.Position = 2;
+ w10.Expand = false;
+ w10.Fill = false;
+ if ((this.Child != null)) {
+ this.Child.ShowAll ();
+ }
+ this.DefaultWidth = 400;
+ this.DefaultHeight = 300;
+ this.Show ();
+ this.ShowFilesButton.Clicked += new global::System.EventHandler (this.OnButtonShowFilesClickEvent);
+ }
+ }
+}
--- /dev/null
+
+// This file has been generated by the GUI designer. Do not modify.
+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 ActionGroups
+ {
+ public static Gtk.ActionGroup GetActionGroup (System.Type type)
+ {
+ return Stetic.ActionGroups.GetActionGroup (type.FullName);
+ }
+
+ public static Gtk.ActionGroup GetActionGroup (string name)
+ {
+ return null;
+ }
+ }
+}
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<stetic-interface>
+ <configuration>
+ <images-root-path>..</images-root-path>
+ </configuration>
+ <import>
+ <widget-library name="glade-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+ <widget-library name="MonoDevelop.Ide, Version=2.6.0.0, Culture=neutral" />
+ <widget-library name="../bin/Release/MonoDevelop.HelloWorld.dll" internal="true" />
+ </import>
+ <widget class="Gtk.Dialog" id="MonoDevelop.HelloWorld.ShowFilesDialog" design-size="400 300">
+ <property name="MemberName" />
+ <property name="WindowPosition">CenterOnParent</property>
+ <property name="Buttons">3</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.VBox" id="vbox2">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.ScrolledWindow" id="GtkScrolledWindow">
+ <property name="MemberName" />
+ <property name="ShadowType">In</property>
+ <child>
+ <widget class="Gtk.TextView" id="textview1">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="ShowScrollbars">True</property>
+ <property name="Text" translatable="yes">Hello World Addin</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.ScrolledWindow" id="GtkScrolledWindow1">
+ <property name="MemberName" />
+ <property name="ShadowType">In</property>
+ <child>
+ <widget class="Gtk.TextView" id="ShowFilesTextView">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="ShowScrollbars">True</property>
+ <property name="Text" translatable="yes" />
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </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">10</property>
+ <property name="BorderWidth">5</property>
+ <property name="Size">3</property>
+ <property name="LayoutStyle">End</property>
+ <child>
+ <widget class="Gtk.Button" id="ShowFilesButton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextOnly</property>
+ <property name="Label" translatable="yes">ShowFiles</property>
+ <property name="UseUnderline">True</property>
+ <property name="ResponseId">0</property>
+ <signal name="Clicked" handler="OnButtonShowFilesClickEvent" />
+ </widget>
+ <packing>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <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>
+ <property name="label">gtk-cancel</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <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>
+ <property name="label">gtk-ok</property>
+ </widget>
+ <packing>
+ <property name="Position">2</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+</stetic-interface>
\ No newline at end of file