Changeset - df2debf1b6fc
[Not reviewed]
default
0 10 2
Tess Snider (Malkyne) - 9 years ago 2015-09-09 11:49:11
this@malkyne.org
Update project for modern MonoDevelop (Xamarin Studio), added README file, and made some essential .hgignore changes.
12 files changed with 97 insertions and 65 deletions:
0 comments (0 inline, 0 general)
.hgignore
Show inline comments
 
new file 100644
 
syntax: glob
 
obj/
 
*.userprefs
 
*.orig
...
 
\ No newline at end of file
DesertPaintLab.csproj
Show inline comments
 
<?xml version="1.0" encoding="utf-8"?>
 
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
 
  <PropertyGroup>
 
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
 
    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
 
    <ProductVersion>8.0.50727</ProductVersion>
 
    <SchemaVersion>2.0</SchemaVersion>
 
    <ProjectGuid>{1A885212-5FD2-4EBF-A98F-3EB1491A1CBB}</ProjectGuid>
 
    <OutputType>WinExe</OutputType>
 
    <RootNamespace>DesertPaintLab</RootNamespace>
 
    <AssemblyName>DesertPaintLab</AssemblyName>
 
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
 
  </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>
 
    <PlatformTarget>x86</PlatformTarget>
 
    <ConsolePause>false</ConsolePause>
 
    <additionalargs>/unsafe</additionalargs>
 
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
 
  </PropertyGroup>
 
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
 
    <DebugType>none</DebugType>
 
    <Optimize>false</Optimize>
 
    <OutputPath>bin\Release</OutputPath>
 
    <ErrorReport>prompt</ErrorReport>
 
    <WarningLevel>4</WarningLevel>
 
    <PlatformTarget>x86</PlatformTarget>
 
    <ConsolePause>false</ConsolePause>
 
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
 
  </PropertyGroup>
 
  <ItemGroup>
 
    <Reference Include="System" />
 
    <Reference Include="Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
 
    <Reference Include="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
 
    <Reference Include="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
 
    <Reference Include="System" />
 
    <Reference Include="glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
 
    <Reference Include="glade-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
 
    <Reference Include="pango-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
 
    <Reference Include="atk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
 
  </ItemGroup>
 
  <ItemGroup>
 
    <EmbeddedResource Include="gtk-gui\gui.stetic">
 
      <LogicalName>gui.stetic</LogicalName>
 
    </EmbeddedResource>
 
  </ItemGroup>
 
  <ItemGroup>
 
    <Compile Include="gtk-gui\generated.cs" />
 
    <Compile Include="MainWindow.cs" />
 
    <Compile Include="Main.cs" />
 
    <Compile Include="AssemblyInfo.cs" />
 
    <Compile Include="PlayerProfile.cs" />
 
    <Compile Include="FirstRunDialog.cs" />
 
    <Compile Include="SelectProfileDialog.cs" />
 
    <Compile Include="NewProfileDialog.cs" />
 
    <Compile Include="PaintSwatch.cs" />
 
    <Compile Include="Palette.cs" />
 
    <Compile Include="PaintColor.cs" />
 
    <Compile Include="Reaction.cs" />
 
    <Compile Include="ReagentManager.cs" />
 
    <Compile Include="Reagent.cs" />
 
    <Compile Include="gtk-gui\MainWindow.cs" />
 
    <Compile Include="gtk-gui\DesertPaintLab.FirstRunDialog.cs" />
 
    <Compile Include="gtk-gui\DesertPaintLab.SelectProfileDialog.cs" />
 
    <Compile Include="gtk-gui\DesertPaintLab.NewProfileDialog.cs" />
 
    <Compile Include="gtk-gui\DesertPaintLab.PaintSwatch.cs" />
 
    <Compile Include="SimulatorWindow.cs" />
 
    <Compile Include="gtk-gui\DesertPaintLab.SimulatorWindow.cs" />
 
  </ItemGroup>
 
  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
 
  <ProjectExtensions>
 
    <MonoDevelop>
 
      <Properties InternalTargetFrameworkVersion="3.5" />
 
      <Properties>
 
        <GtkDesignInfo generateGettext="False" />
 
      </Properties>
 
    </MonoDevelop>
 
  </ProjectExtensions>
 
</Project>
...
 
\ No newline at end of file
DesertPaintLab.sln
Show inline comments
 

 
Microsoft Visual Studio Solution File, Format Version 9.00
 
# Visual Studio 2005
 
Microsoft Visual Studio Solution File, Format Version 12.00
 
# Visual Studio 2012
 
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DesertPaintLab", "DesertPaintLab.csproj", "{1A885212-5FD2-4EBF-A98F-3EB1491A1CBB}"
 
EndProject
 
Global
 
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 
		Debug|x86 = Debug|x86
 
		Release|x86 = Release|x86
 
	EndGlobalSection
 
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
 
		{1A885212-5FD2-4EBF-A98F-3EB1491A1CBB}.Debug|x86.ActiveCfg = Debug|x86
 
		{1A885212-5FD2-4EBF-A98F-3EB1491A1CBB}.Debug|x86.Build.0 = Debug|x86
 
		{1A885212-5FD2-4EBF-A98F-3EB1491A1CBB}.Release|x86.ActiveCfg = Release|x86
 
		{1A885212-5FD2-4EBF-A98F-3EB1491A1CBB}.Release|x86.Build.0 = Release|x86
 
	EndGlobalSection
 
	GlobalSection(MonoDevelopProperties) = preSolution
 
		StartupItem = DesertPaintLab.csproj
 
	EndGlobalSection
 
EndGlobal
README.md
Show inline comments
 
new file 100644
 
# Desert Paint Lab
 

 
This is a tool for players to record their [Pigment Laboratory](http://www.atitd.org/wiki/tale6/Pigment_Laboratory)
 
ingredient reactions in [A Tale in the Desert](http://www.atitd.com/).  You can maintain multiple persistent player
 
profiles, each with their own reaction history.
 

 
Once you are done gathering all of your reactions, you can use the built-in simulator to figure out what your paint combinations
 
will do (`Window > Run Simulator`), or you can export a file to use with the
 
[PracticalPaint](http://www.atitd.org/wiki/tale6/File:PracticalPaint.zip) recipe finder.
 

 
This application should run under Mono on Mac, Linux, and Windows.  If you are on Windows,
 
and do not have Mono installed, you can install [GTK# for .NET](http://www.mono-project.com/download/#download-win),
 
without the need for installing Mono.
 

 
# Tale 7
 

 
This application _has not yet been tested_ for Tale 7.  However, I intend to give it a thorough testing,
 
once I get a Pigment Lab up.  If you find any problems with it, before I get a chance to verify it, please [open an issue](https://bitbucket.org/Malkyne/desert-paint-lab/issues).  Once I can verify that it is working properly, I will post
 
executables and an illustrated guide, for public consumption.
 

 
# For Developers
 

 
This application was developed using [MonoDevelop](http://www.monodevelop.com/), using the [Stetic GTK UI designer](http://www.monodevelop.com/documentation/stetic-gui-designer/).
...
 
\ No newline at end of file
gtk-gui/DesertPaintLab.FirstRunDialog.cs
Show inline comments
 

 
// This file has been generated by the GUI designer. Do not modify.
 
namespace DesertPaintLab
 
{
 
	public partial class FirstRunDialog
 
	{
 
		private global::Gtk.Label label2;
 

 
		private global::Gtk.Button buttonCancel;
 

 
		private global::Gtk.Button buttonImport;
 

 
		private global::Gtk.Button buttonNew;
 

 
		protected virtual void Build ()
 
		{
 
			global::Stetic.Gui.Initialize (this);
 
			// Widget DesertPaintLab.FirstRunDialog
 
			this.Name = "DesertPaintLab.FirstRunDialog";
 
			this.Title = global::Mono.Unix.Catalog.GetString ("Set Up Profile");
 
			this.Title = "Set Up Profile";
 
			this.WindowPosition = ((global::Gtk.WindowPosition)(4));
 
			this.Modal = true;
 
			this.AllowShrink = true;
 
			// Internal child DesertPaintLab.FirstRunDialog.VBox
 
			global::Gtk.VBox w1 = this.VBox;
 
			w1.Name = "dialog1_VBox";
 
			w1.BorderWidth = ((uint)(2));
 
			// Container child dialog1_VBox.Gtk.Box+BoxChild
 
			this.label2 = new global::Gtk.Label ();
 
			this.label2.Name = "label2";
 
			this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("Since this is your first time using this program, you need a new profile.\n\nYou ca" + "n either import an existing PracticalPaint reactions.txt file, or you can start " + "a new profile from scratch.");
 
			this.label2.LabelProp = "Since this is your first time using this program, you need a new profile.\n\nYou ca" +
 
			"n either import an existing PracticalPaint reactions.txt file, or you can start " +
 
			"a new profile from scratch.";
 
			this.label2.Wrap = true;
 
			w1.Add (this.label2);
 
			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(w1[this.label2]));
 
			w2.Position = 0;
 
			w2.Padding = ((uint)(5));
 
			// Internal child DesertPaintLab.FirstRunDialog.ActionArea
 
			global::Gtk.HButtonBox w3 = this.ActionArea;
 
			w3.Name = "dialog1_ActionArea";
 
			w3.Spacing = 10;
 
			w3.BorderWidth = ((uint)(5));
 
			w3.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(4));
 
			// 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 w4 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3[this.buttonCancel]));
 
			w4.Expand = false;
 
			w4.Fill = false;
 
			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
 
			this.buttonImport = new global::Gtk.Button ();
 
			this.buttonImport.CanDefault = true;
 
			this.buttonImport.CanFocus = true;
 
			this.buttonImport.Name = "buttonImport";
 
			this.buttonImport.UseUnderline = true;
 
			this.buttonImport.Label = global::Mono.Unix.Catalog.GetString ("Import reactions.txt");
 
			this.buttonImport.Label = "Import reactions.txt";
 
			this.AddActionWidget (this.buttonImport, -3);
 
			global::Gtk.ButtonBox.ButtonBoxChild w5 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3[this.buttonImport]));
 
			w5.Position = 1;
 
			w5.Expand = false;
 
			w5.Fill = false;
 
			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
 
			this.buttonNew = new global::Gtk.Button ();
 
			this.buttonNew.CanFocus = true;
 
			this.buttonNew.Name = "buttonNew";
 
			this.buttonNew.UseUnderline = true;
 
			this.buttonNew.Label = global::Mono.Unix.Catalog.GetString ("New Profile");
 
			this.buttonNew.Label = "New Profile";
 
			this.AddActionWidget (this.buttonNew, -5);
 
			global::Gtk.ButtonBox.ButtonBoxChild w6 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3[this.buttonNew]));
 
			w6.Position = 2;
 
			w6.Expand = false;
 
			w6.Fill = false;
 
			if ((this.Child != null)) {
 
				this.Child.ShowAll ();
 
			}
 
			this.DefaultWidth = 416;
 
			this.DefaultHeight = 189;
 
			this.Show ();
 
		}
 
	}
 
}
gtk-gui/DesertPaintLab.NewProfileDialog.cs
Show inline comments
 

 
// This file has been generated by the GUI designer. Do not modify.
 
namespace DesertPaintLab
 
{
 
	public partial class NewProfileDialog
 
	{
 
		private global::Gtk.Label label1;
 

 
		private global::Gtk.Entry profileNameEntry;
 

 
		private global::Gtk.Button buttonCancel;
 

 
		private global::Gtk.Button buttonOk;
 

 
		protected virtual void Build ()
 
		{
 
			global::Stetic.Gui.Initialize (this);
 
			// Widget DesertPaintLab.NewProfileDialog
 
			this.Name = "DesertPaintLab.NewProfileDialog";
 
			this.Title = global::Mono.Unix.Catalog.GetString ("New Profile");
 
			this.Title = "New Profile";
 
			this.WindowPosition = ((global::Gtk.WindowPosition)(4));
 
			this.BorderWidth = ((uint)(5));
 
			// Internal child DesertPaintLab.NewProfileDialog.VBox
 
			global::Gtk.VBox w1 = this.VBox;
 
			w1.Name = "dialog1_VBox";
 
			w1.Spacing = 10;
 
			w1.BorderWidth = ((uint)(9));
 
			// Container child dialog1_VBox.Gtk.Box+BoxChild
 
			this.label1 = new global::Gtk.Label ();
 
			this.label1.Name = "label1";
 
			this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("Name your new profile:");
 
			this.label1.LabelProp = "Name your new profile:";
 
			w1.Add (this.label1);
 
			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(w1[this.label1]));
 
			w2.Position = 0;
 
			w2.Expand = false;
 
			w2.Fill = false;
 
			// Container child dialog1_VBox.Gtk.Box+BoxChild
 
			this.profileNameEntry = new global::Gtk.Entry ();
 
			this.profileNameEntry.CanFocus = true;
 
			this.profileNameEntry.Name = "profileNameEntry";
 
			this.profileNameEntry.IsEditable = true;
 
			this.profileNameEntry.InvisibleChar = '●';
 
			w1.Add (this.profileNameEntry);
 
			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(w1[this.profileNameEntry]));
 
			w3.Position = 1;
 
			w3.Expand = false;
 
			w3.Fill = false;
 
			// Internal child DesertPaintLab.NewProfileDialog.ActionArea
 
			global::Gtk.HButtonBox w4 = this.ActionArea;
 
			w4.Name = "dialog1_ActionArea";
 
			w4.Spacing = 10;
 
			w4.BorderWidth = ((uint)(5));
 
			w4.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(4));
 
			// 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 w5 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w4[this.buttonCancel]));
 
			w5.Expand = false;
 
			w5.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 w6 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w4[this.buttonOk]));
 
			w6.Position = 1;
 
			w6.Expand = false;
 
			w6.Fill = false;
 
			if ((this.Child != null)) {
 
				this.Child.ShowAll ();
 
			}
 
			this.DefaultWidth = 318;
 
			this.DefaultHeight = 177;
 
			this.Show ();
 
		}
 
	}
 
}
gtk-gui/DesertPaintLab.PaintSwatch.cs
Show inline comments
 

 
// This file has been generated by the GUI designer. Do not modify.
 
namespace DesertPaintLab
 
{
 
	public partial class PaintSwatch
 
	{
 
		private global::Gtk.VBox vbox1;
 

 
		private global::Gtk.Label colorNameLabel;
 

 
		private global::Gtk.DrawingArea colorBox;
 

 
		private global::Gtk.Label rgbLabel;
 

 
		protected virtual void Build ()
 
		{
 
			global::Stetic.Gui.Initialize (this);
 
			// Widget DesertPaintLab.PaintSwatch
 
			global::Stetic.BinContainer.Attach (this);
 
			this.Name = "DesertPaintLab.PaintSwatch";
 
			// Container child DesertPaintLab.PaintSwatch.Gtk.Container+ContainerChild
 
			this.vbox1 = new global::Gtk.VBox ();
 
			this.vbox1.Name = "vbox1";
 
			this.vbox1.Spacing = 6;
 
			// Container child vbox1.Gtk.Box+BoxChild
 
			this.colorNameLabel = new global::Gtk.Label ();
 
			this.colorNameLabel.Name = "colorNameLabel";
 
			this.colorNameLabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Unknown");
 
			this.colorNameLabel.LabelProp = "Unknown";
 
			this.vbox1.Add (this.colorNameLabel);
 
			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.colorNameLabel]));
 
			w1.Position = 0;
 
			w1.Expand = false;
 
			w1.Fill = false;
 
			// Container child vbox1.Gtk.Box+BoxChild
 
			this.colorBox = new global::Gtk.DrawingArea ();
 
			this.colorBox.Name = "colorBox";
 
			this.vbox1.Add (this.colorBox);
 
			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.colorBox]));
 
			w2.Position = 1;
 
			// Container child vbox1.Gtk.Box+BoxChild
 
			this.rgbLabel = new global::Gtk.Label ();
 
			this.rgbLabel.Name = "rgbLabel";
 
			this.rgbLabel.LabelProp = global::Mono.Unix.Catalog.GetString ("???, ???, ???");
 
			this.rgbLabel.LabelProp = "???, ???, ???";
 
			this.vbox1.Add (this.rgbLabel);
 
			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.rgbLabel]));
 
			w3.Position = 2;
 
			w3.Expand = false;
 
			w3.Fill = false;
 
			this.Add (this.vbox1);
 
			if ((this.Child != null)) {
 
				this.Child.ShowAll ();
 
			}
 
			this.Hide ();
 
		}
 
	}
 
}
gtk-gui/DesertPaintLab.SelectProfileDialog.cs
Show inline comments
 

 
// This file has been generated by the GUI designer. Do not modify.
 
namespace DesertPaintLab
 
{
 
	public partial class SelectProfileDialog
 
	{
 
		private global::Gtk.Label label3;
 

 
		private global::Gtk.TreeView profileListView;
 

 
		private global::Gtk.Button buttonCancel;
 

 
		private global::Gtk.Button button56;
 

 
		private global::Gtk.Button buttonOk;
 

 
		protected virtual void Build ()
 
		{
 
			global::Stetic.Gui.Initialize (this);
 
			// Widget DesertPaintLab.SelectProfileDialog
 
			this.Name = "DesertPaintLab.SelectProfileDialog";
 
			this.Title = global::Mono.Unix.Catalog.GetString ("Open Profile");
 
			this.Title = "Open Profile";
 
			this.WindowPosition = ((global::Gtk.WindowPosition)(4));
 
			this.Modal = true;
 
			this.BorderWidth = ((uint)(5));
 
			// Internal child DesertPaintLab.SelectProfileDialog.VBox
 
			global::Gtk.VBox w1 = this.VBox;
 
			w1.Name = "dialog1_VBox";
 
			w1.Spacing = 10;
 
			w1.BorderWidth = ((uint)(2));
 
			// Container child dialog1_VBox.Gtk.Box+BoxChild
 
			this.label3 = new global::Gtk.Label ();
 
			this.label3.Name = "label3";
 
			this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("Select the profile you would like to open:");
 
			this.label3.LabelProp = "Select the profile you would like to open:";
 
			w1.Add (this.label3);
 
			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(w1[this.label3]));
 
			w2.Position = 0;
 
			w2.Expand = false;
 
			w2.Fill = false;
 
			// Container child dialog1_VBox.Gtk.Box+BoxChild
 
			this.profileListView = new global::Gtk.TreeView ();
 
			this.profileListView.CanFocus = true;
 
			this.profileListView.Name = "profileListView";
 
			this.profileListView.EnableSearch = false;
 
			w1.Add (this.profileListView);
 
			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(w1[this.profileListView]));
 
			w3.Position = 1;
 
			// Internal child DesertPaintLab.SelectProfileDialog.ActionArea
 
			global::Gtk.HButtonBox w4 = this.ActionArea;
 
			w4.Name = "dialog1_ActionArea";
 
			w4.Spacing = 10;
 
			w4.BorderWidth = ((uint)(5));
 
			w4.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(4));
 
			// 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 w5 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w4[this.buttonCancel]));
 
			w5.Expand = false;
 
			w5.Fill = false;
 
			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
 
			this.button56 = new global::Gtk.Button ();
 
			this.button56.CanFocus = true;
 
			this.button56.Name = "button56";
 
			this.button56.UseUnderline = true;
 
			this.button56.Label = global::Mono.Unix.Catalog.GetString ("New Profile");
 
			this.button56.Label = "New Profile";
 
			this.AddActionWidget (this.button56, -3);
 
			global::Gtk.ButtonBox.ButtonBoxChild w6 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w4[this.button56]));
 
			w6.Position = 1;
 
			w6.Expand = false;
 
			w6.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 w7 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w4[this.buttonOk]));
 
			w7.Position = 2;
 
			w7.Expand = false;
 
			w7.Fill = false;
 
			if ((this.Child != null)) {
 
				this.Child.ShowAll ();
 
			}
 
			this.DefaultWidth = 400;
 
			this.DefaultHeight = 288;
 
			this.Show ();
 
			this.profileListView.CursorChanged += new global::System.EventHandler (this.OnCursorChanged);
 
		}
 
	}
 
}
gtk-gui/DesertPaintLab.SimulatorWindow.cs
Show inline comments
 

 
// This file has been generated by the GUI designer. Do not modify.
 
namespace DesertPaintLab
 
{
 
	public partial class SimulatorWindow
 
	{
 
		private global::Gtk.HBox hbox1;
 

 
		private global::Gtk.ScrolledWindow GtkScrolledWindow;
 

 
		private global::Gtk.TreeView reagentListView;
 

 
		private global::Gtk.VBox vbox162;
 

 
		private global::Gtk.Alignment alignment1;
 

 
		private global::Gtk.Button addReagentButton;
 

 
		private global::Gtk.Image addReagentButtonImage;
 

 
		private global::Gtk.Alignment alignment3;
 

 
		private global::Gtk.ScrolledWindow GtkScrolledWindow1;
 

 
		private global::Gtk.TreeView recipeView;
 

 
		private global::Gtk.VBox vbox3;
 

 
		private global::Gtk.Alignment alignment2;
 

 
		private global::Gtk.Button button65;
 

 
		private global::Gtk.Image image1;
 

 
		private global::Gtk.Button button66;
 

 
		private global::Gtk.Image image2;
 

 
		private global::Gtk.Alignment alignment4;
 

 
		private global::DesertPaintLab.PaintSwatch paintSwatch;
 

 
		protected virtual void Build ()
 
		{
 
			global::Stetic.Gui.Initialize (this);
 
			// Widget DesertPaintLab.SimulatorWindow
 
			this.Name = "DesertPaintLab.SimulatorWindow";
 
			this.Title = global::Mono.Unix.Catalog.GetString ("Simulator");
 
			this.Title = "Simulator";
 
			this.WindowPosition = ((global::Gtk.WindowPosition)(4));
 
			// Container child DesertPaintLab.SimulatorWindow.Gtk.Container+ContainerChild
 
			this.hbox1 = new global::Gtk.HBox ();
 
			this.hbox1.Name = "hbox1";
 
			this.hbox1.Spacing = 6;
 
			this.hbox1.BorderWidth = ((uint)(12));
 
			// Container child hbox1.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.reagentListView = new global::Gtk.TreeView ();
 
			this.reagentListView.CanFocus = true;
 
			this.reagentListView.Name = "reagentListView";
 
			this.GtkScrolledWindow.Add (this.reagentListView);
 
			this.hbox1.Add (this.GtkScrolledWindow);
 
			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.GtkScrolledWindow]));
 
			w2.Position = 0;
 
			// Container child hbox1.Gtk.Box+BoxChild
 
			this.vbox162 = new global::Gtk.VBox ();
 
			this.vbox162.Name = "vbox162";
 
			this.vbox162.Spacing = 6;
 
			// Container child vbox162.Gtk.Box+BoxChild
 
			this.alignment1 = new global::Gtk.Alignment (0.5f, 0.5f, 1f, 1f);
 
			this.alignment1 = new global::Gtk.Alignment (0.5F, 0.5F, 1F, 1F);
 
			this.alignment1.Name = "alignment1";
 
			this.vbox162.Add (this.alignment1);
 
			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox162[this.alignment1]));
 
			w3.Position = 0;
 
			// Container child vbox162.Gtk.Box+BoxChild
 
			this.addReagentButton = new global::Gtk.Button ();
 
			this.addReagentButton.CanFocus = true;
 
			this.addReagentButton.Name = "addReagentButton";
 
			// Container child addReagentButton.Gtk.Container+ContainerChild
 
			this.addReagentButtonImage = new global::Gtk.Image ();
 
			this.addReagentButtonImage.Name = "addReagentButtonImage";
 
			this.addReagentButtonImage.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-go-forward", global::Gtk.IconSize.Menu);
 
			this.addReagentButton.Add (this.addReagentButtonImage);
 
			this.addReagentButton.Label = null;
 
			this.vbox162.Add (this.addReagentButton);
 
			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox162[this.addReagentButton]));
 
			w5.Position = 1;
 
			w5.Expand = false;
 
			w5.Fill = false;
 
			// Container child vbox162.Gtk.Box+BoxChild
 
			this.alignment3 = new global::Gtk.Alignment (0.5f, 0.5f, 1f, 1f);
 
			this.alignment3 = new global::Gtk.Alignment (0.5F, 0.5F, 1F, 1F);
 
			this.alignment3.Name = "alignment3";
 
			this.vbox162.Add (this.alignment3);
 
			global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox162[this.alignment3]));
 
			w6.Position = 2;
 
			this.hbox1.Add (this.vbox162);
 
			global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.vbox162]));
 
			w7.Position = 1;
 
			w7.Expand = false;
 
			w7.Fill = false;
 
			// Container child hbox1.Gtk.Box+BoxChild
 
			this.GtkScrolledWindow1 = new global::Gtk.ScrolledWindow ();
 
			this.GtkScrolledWindow1.WidthRequest = 0;
 
			this.GtkScrolledWindow1.Name = "GtkScrolledWindow1";
 
			this.GtkScrolledWindow1.ShadowType = ((global::Gtk.ShadowType)(1));
 
			// Container child GtkScrolledWindow1.Gtk.Container+ContainerChild
 
			this.recipeView = new global::Gtk.TreeView ();
 
			this.recipeView.CanFocus = true;
 
			this.recipeView.Name = "recipeView";
 
			this.recipeView.EnableSearch = false;
 
			this.recipeView.Reorderable = true;
 
			this.GtkScrolledWindow1.Add (this.recipeView);
 
			this.hbox1.Add (this.GtkScrolledWindow1);
 
			global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.GtkScrolledWindow1]));
 
			w9.Position = 2;
 
			// Container child hbox1.Gtk.Box+BoxChild
 
			this.vbox3 = new global::Gtk.VBox ();
 
			this.vbox3.Name = "vbox3";
 
			this.vbox3.Spacing = 6;
 
			// Container child vbox3.Gtk.Box+BoxChild
 
			this.alignment2 = new global::Gtk.Alignment (0.5f, 0.5f, 1f, 1f);
 
			this.alignment2 = new global::Gtk.Alignment (0.5F, 0.5F, 1F, 1F);
 
			this.alignment2.Name = "alignment2";
 
			this.vbox3.Add (this.alignment2);
 
			global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.alignment2]));
 
			w10.Position = 0;
 
			// Container child vbox3.Gtk.Box+BoxChild
 
			this.button65 = new global::Gtk.Button ();
 
			this.button65.CanFocus = true;
 
			this.button65.Name = "button65";
 
			// Container child button65.Gtk.Container+ContainerChild
 
			this.image1 = new global::Gtk.Image ();
 
			this.image1.Name = "image1";
 
			this.image1.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-add", global::Gtk.IconSize.Menu);
 
			this.button65.Add (this.image1);
 
			this.button65.Label = null;
 
			this.vbox3.Add (this.button65);
 
			global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.button65]));
 
			w12.Position = 1;
 
			w12.Expand = false;
 
			w12.Fill = false;
 
			// Container child vbox3.Gtk.Box+BoxChild
 
			this.button66 = new global::Gtk.Button ();
 
			this.button66.CanFocus = true;
 
			this.button66.Name = "button66";
 
			// Container child button66.Gtk.Container+ContainerChild
 
			this.image2 = new global::Gtk.Image ();
 
			this.image2.Name = "image2";
 
			this.image2.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-remove", global::Gtk.IconSize.Menu);
 
			this.button66.Add (this.image2);
 
			this.button66.Label = null;
 
			this.vbox3.Add (this.button66);
 
			global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.button66]));
 
			w14.Position = 2;
 
			w14.Expand = false;
 
			w14.Fill = false;
 
			// Container child vbox3.Gtk.Box+BoxChild
 
			this.alignment4 = new global::Gtk.Alignment (0.5f, 0.5f, 1f, 1f);
 
			this.alignment4 = new global::Gtk.Alignment (0.5F, 0.5F, 1F, 1F);
 
			this.alignment4.Name = "alignment4";
 
			this.vbox3.Add (this.alignment4);
 
			global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.alignment4]));
 
			w15.Position = 3;
 
			this.hbox1.Add (this.vbox3);
 
			global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.vbox3]));
 
			w16.Position = 3;
 
			w16.Expand = false;
 
			w16.Fill = false;
 
			// Container child hbox1.Gtk.Box+BoxChild
 
			this.paintSwatch = new global::DesertPaintLab.PaintSwatch ();
 
			this.paintSwatch.WidthRequest = 200;
 
			this.paintSwatch.Events = ((global::Gdk.EventMask)(256));
 
			this.paintSwatch.Name = "paintSwatch";
 
			this.hbox1.Add (this.paintSwatch);
 
			global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.paintSwatch]));
 
			w17.Position = 4;
 
			this.Add (this.hbox1);
 
			if ((this.Child != null)) {
 
				this.Child.ShowAll ();
 
			}
 
			this.DefaultWidth = 804;
 
			this.DefaultHeight = 390;
 
			this.Show ();
 
			this.addReagentButton.Clicked += new global::System.EventHandler (this.OnAddReagent);
 
			this.button65.Clicked += new global::System.EventHandler (this.OnIncrementReagent);
 
			this.button66.Clicked += new global::System.EventHandler (this.OnDecrementReagent);
 
		}
 
	}
 
}
gtk-gui/MainWindow.cs
Show inline comments
 

 
// This file has been generated by the GUI designer. Do not modify.
 

 
public partial class MainWindow
 
{
 
	private global::Gtk.UIManager UIManager;
 

 
	private global::Gtk.Action FileAction;
 

 
	private global::Gtk.Action HelpAction;
 

 
	private global::Gtk.Action AboutAction;
 

 
	private global::Gtk.Action NewProfileAction;
 

 
	private global::Gtk.Action OpenProfileAction;
 

 
	private global::Gtk.Action ExitAction;
 

 
	private global::Gtk.Action ExportForPracticalPaintAction;
 

 
	private global::Gtk.Action WindowAction;
 

 
	private global::Gtk.Action RunSimulatorAction;
 

 
	private global::Gtk.VBox vbox1;
 

 
	private global::Gtk.MenuBar menubar1;
 

 
	private global::Gtk.HBox hbox1;
 

 
	private global::Gtk.Frame frame2;
 

 
	private global::Gtk.Alignment GtkAlignment;
 

 
	private global::Gtk.VBox vbox3;
 

 
	private global::Gtk.HBox hbox6;
 

 
	private global::Gtk.Label label4;
 

 
	private global::Gtk.ComboBox ingredient1ComboBox;
 

 
	private global::Gtk.HBox hbox7;
 

 
	private global::Gtk.Label label5;
 

 
	private global::Gtk.ComboBox ingredient2ComboBox;
 

 
	private global::Gtk.HBox hbox8;
 

 
	private global::Gtk.Label label6;
 

 
	private global::Gtk.ComboBox ingredient3ComboBox;
 

 
	private global::Gtk.Label GtkLabel2;
 

 
	private global::Gtk.Frame frame3;
 

 
	private global::Gtk.Alignment GtkAlignment1;
 

 
	private global::Gtk.VBox vbox4;
 

 
	private global::DesertPaintLab.PaintSwatch unmodifiedSwatch;
 

 
	private global::Gtk.Button captureButton;
 

 
	private global::Gtk.Label GtkLabel25;
 

 
	private global::Gtk.Frame frame4;
 

 
	private global::Gtk.Alignment GtkAlignment2;
 

 
	private global::Gtk.VBox vbox5;
 

 
	private global::DesertPaintLab.PaintSwatch reactionSwatch;
 

 
	private global::Gtk.Button saveButton;
 

 
	private global::Gtk.Label GtkLabel26;
 

 
	private global::Gtk.Statusbar statusBar;
 

 
	protected virtual void Build ()
 
	{
 
		global::Stetic.Gui.Initialize (this);
 
		// Widget MainWindow
 
		this.UIManager = new global::Gtk.UIManager ();
 
		global::Gtk.ActionGroup w1 = new global::Gtk.ActionGroup ("Default");
 
		this.FileAction = new global::Gtk.Action ("FileAction", global::Mono.Unix.Catalog.GetString ("_File"), null, null);
 
		this.FileAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("_File");
 
		this.FileAction = new global::Gtk.Action ("FileAction", "_File", null, null);
 
		this.FileAction.ShortLabel = "_File";
 
		w1.Add (this.FileAction, "<Alt>f");
 
		this.HelpAction = new global::Gtk.Action ("HelpAction", global::Mono.Unix.Catalog.GetString ("_Help"), null, null);
 
		this.HelpAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("_Help");
 
		this.HelpAction = new global::Gtk.Action ("HelpAction", "_Help", null, null);
 
		this.HelpAction.ShortLabel = "_Help";
 
		w1.Add (this.HelpAction, "<Alt>a");
 
		this.AboutAction = new global::Gtk.Action ("AboutAction", global::Mono.Unix.Catalog.GetString ("_About..."), null, null);
 
		this.AboutAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("_About...");
 
		this.AboutAction = new global::Gtk.Action ("AboutAction", "_About...", null, null);
 
		this.AboutAction.ShortLabel = "_About...";
 
		w1.Add (this.AboutAction, "<Alt>a");
 
		this.NewProfileAction = new global::Gtk.Action ("NewProfileAction", global::Mono.Unix.Catalog.GetString ("_New Profile..."), null, null);
 
		this.NewProfileAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("_New Profile...");
 
		this.NewProfileAction = new global::Gtk.Action ("NewProfileAction", "_New Profile...", null, null);
 
		this.NewProfileAction.ShortLabel = "_New Profile...";
 
		w1.Add (this.NewProfileAction, "<Alt>n");
 
		this.OpenProfileAction = new global::Gtk.Action ("OpenProfileAction", global::Mono.Unix.Catalog.GetString ("_Open Profile..."), null, null);
 
		this.OpenProfileAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("_Open Profile...");
 
		this.OpenProfileAction = new global::Gtk.Action ("OpenProfileAction", "_Open Profile...", null, null);
 
		this.OpenProfileAction.ShortLabel = "_Open Profile...";
 
		w1.Add (this.OpenProfileAction, "<Alt>o");
 
		this.ExitAction = new global::Gtk.Action ("ExitAction", global::Mono.Unix.Catalog.GetString ("E_xit"), null, null);
 
		this.ExitAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("E_xit");
 
		this.ExitAction = new global::Gtk.Action ("ExitAction", "E_xit", null, null);
 
		this.ExitAction.ShortLabel = "E_xit";
 
		w1.Add (this.ExitAction, "<Alt>x");
 
		this.ExportForPracticalPaintAction = new global::Gtk.Action ("ExportForPracticalPaintAction", global::Mono.Unix.Catalog.GetString ("Export for _PracticalPaint..."), null, null);
 
		this.ExportForPracticalPaintAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("Export for _PracticalPaint...");
 
		this.ExportForPracticalPaintAction = new global::Gtk.Action ("ExportForPracticalPaintAction", "Export for _PracticalPaint...", null, null);
 
		this.ExportForPracticalPaintAction.ShortLabel = "Export for _PracticalPaint...";
 
		w1.Add (this.ExportForPracticalPaintAction, null);
 
		this.WindowAction = new global::Gtk.Action ("WindowAction", global::Mono.Unix.Catalog.GetString ("_Window"), null, null);
 
		this.WindowAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("_Window");
 
		this.WindowAction = new global::Gtk.Action ("WindowAction", "_Window", null, null);
 
		this.WindowAction.ShortLabel = "_Window";
 
		w1.Add (this.WindowAction, null);
 
		this.RunSimulatorAction = new global::Gtk.Action ("RunSimulatorAction", global::Mono.Unix.Catalog.GetString ("_Run Simulator"), null, null);
 
		this.RunSimulatorAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("_Run Simulator");
 
		this.RunSimulatorAction = new global::Gtk.Action ("RunSimulatorAction", "_Run Simulator", null, null);
 
		this.RunSimulatorAction.ShortLabel = "_Run Simulator";
 
		w1.Add (this.RunSimulatorAction, null);
 
		this.UIManager.InsertActionGroup (w1, 0);
 
		this.AddAccelGroup (this.UIManager.AccelGroup);
 
		this.Name = "MainWindow";
 
		this.Title = global::Mono.Unix.Catalog.GetString ("Desert Paint Lab");
 
		this.Title = "Desert Paint Lab";
 
		this.WindowPosition = ((global::Gtk.WindowPosition)(4));
 
		// Container child MainWindow.Gtk.Container+ContainerChild
 
		this.vbox1 = new global::Gtk.VBox ();
 
		this.vbox1.Name = "vbox1";
 
		// Container child vbox1.Gtk.Box+BoxChild
 
		this.UIManager.AddUiFromString (@"<ui><menubar name='menubar1'><menu name='FileAction' action='FileAction'><menuitem name='NewProfileAction' action='NewProfileAction'/><menuitem name='OpenProfileAction' action='OpenProfileAction'/><menuitem name='ExportForPracticalPaintAction' action='ExportForPracticalPaintAction'/><separator/><menuitem name='ExitAction' action='ExitAction'/></menu><menu name='WindowAction' action='WindowAction'><menuitem name='RunSimulatorAction' action='RunSimulatorAction'/></menu><menu name='HelpAction' action='HelpAction'><menuitem name='AboutAction' action='AboutAction'/></menu></menubar></ui>");
 
		this.menubar1 = ((global::Gtk.MenuBar)(this.UIManager.GetWidget ("/menubar1")));
 
		this.menubar1.Name = "menubar1";
 
		this.vbox1.Add (this.menubar1);
 
		global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.menubar1]));
 
		w2.Position = 0;
 
		w2.Expand = false;
 
		w2.Fill = false;
 
		// Container child vbox1.Gtk.Box+BoxChild
 
		this.hbox1 = new global::Gtk.HBox ();
 
		this.hbox1.Name = "hbox1";
 
		this.hbox1.Spacing = 6;
 
		this.hbox1.BorderWidth = ((uint)(4));
 
		// Container child hbox1.Gtk.Box+BoxChild
 
		this.frame2 = new global::Gtk.Frame ();
 
		this.frame2.Name = "frame2";
 
		this.frame2.BorderWidth = ((uint)(4));
 
		// Container child frame2.Gtk.Container+ContainerChild
 
		this.GtkAlignment = new global::Gtk.Alignment (0f, 0f, 1f, 1f);
 
		this.GtkAlignment = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
 
		this.GtkAlignment.Name = "GtkAlignment";
 
		this.GtkAlignment.LeftPadding = ((uint)(6));
 
		this.GtkAlignment.RightPadding = ((uint)(6));
 
		// Container child GtkAlignment.Gtk.Container+ContainerChild
 
		this.vbox3 = new global::Gtk.VBox ();
 
		this.vbox3.Name = "vbox3";
 
		this.vbox3.Homogeneous = true;
 
		this.vbox3.Spacing = 6;
 
		// Container child vbox3.Gtk.Box+BoxChild
 
		this.hbox6 = new global::Gtk.HBox ();
 
		this.hbox6.Name = "hbox6";
 
		this.hbox6.Spacing = 6;
 
		// Container child hbox6.Gtk.Box+BoxChild
 
		this.label4 = new global::Gtk.Label ();
 
		this.label4.Name = "label4";
 
		this.label4.LabelProp = global::Mono.Unix.Catalog.GetString ("Ingredient 1:");
 
		this.label4.LabelProp = "Ingredient 1:";
 
		this.hbox6.Add (this.label4);
 
		global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox6[this.label4]));
 
		w3.Position = 0;
 
		w3.Expand = false;
 
		w3.Fill = false;
 
		// Container child hbox6.Gtk.Box+BoxChild
 
		this.ingredient1ComboBox = global::Gtk.ComboBox.NewText ();
 
		this.ingredient1ComboBox.Name = "ingredient1ComboBox";
 
		this.hbox6.Add (this.ingredient1ComboBox);
 
		global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.hbox6[this.ingredient1ComboBox]));
 
		w4.Position = 1;
 
		this.vbox3.Add (this.hbox6);
 
		global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.hbox6]));
 
		w5.Position = 0;
 
		w5.Expand = false;
 
		w5.Fill = false;
 
		// Container child vbox3.Gtk.Box+BoxChild
 
		this.hbox7 = new global::Gtk.HBox ();
 
		this.hbox7.Name = "hbox7";
 
		this.hbox7.Spacing = 6;
 
		// Container child hbox7.Gtk.Box+BoxChild
 
		this.label5 = new global::Gtk.Label ();
 
		this.label5.Name = "label5";
 
		this.label5.LabelProp = global::Mono.Unix.Catalog.GetString ("Ingredient 2:");
 
		this.label5.LabelProp = "Ingredient 2:";
 
		this.hbox7.Add (this.label5);
 
		global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.hbox7[this.label5]));
 
		w6.Position = 0;
 
		w6.Expand = false;
 
		w6.Fill = false;
 
		// Container child hbox7.Gtk.Box+BoxChild
 
		this.ingredient2ComboBox = global::Gtk.ComboBox.NewText ();
 
		this.ingredient2ComboBox.Name = "ingredient2ComboBox";
 
		this.hbox7.Add (this.ingredient2ComboBox);
 
		global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.hbox7[this.ingredient2ComboBox]));
 
		w7.Position = 1;
 
		this.vbox3.Add (this.hbox7);
 
		global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.hbox7]));
 
		w8.Position = 1;
 
		w8.Expand = false;
 
		w8.Fill = false;
 
		// Container child vbox3.Gtk.Box+BoxChild
 
		this.hbox8 = new global::Gtk.HBox ();
 
		this.hbox8.Name = "hbox8";
 
		this.hbox8.Spacing = 6;
 
		// Container child hbox8.Gtk.Box+BoxChild
 
		this.label6 = new global::Gtk.Label ();
 
		this.label6.Name = "label6";
 
		this.label6.LabelProp = global::Mono.Unix.Catalog.GetString ("Ingredient 3:");
 
		this.label6.LabelProp = "Ingredient 3:";
 
		this.hbox8.Add (this.label6);
 
		global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.hbox8[this.label6]));
 
		w9.Position = 0;
 
		w9.Expand = false;
 
		w9.Fill = false;
 
		// Container child hbox8.Gtk.Box+BoxChild
 
		this.ingredient3ComboBox = global::Gtk.ComboBox.NewText ();
 
		this.ingredient3ComboBox.Name = "ingredient3ComboBox";
 
		this.hbox8.Add (this.ingredient3ComboBox);
 
		global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.hbox8[this.ingredient3ComboBox]));
 
		w10.Position = 1;
 
		this.vbox3.Add (this.hbox8);
 
		global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.hbox8]));
 
		w11.Position = 2;
 
		w11.Expand = false;
 
		w11.Fill = false;
 
		this.GtkAlignment.Add (this.vbox3);
 
		this.frame2.Add (this.GtkAlignment);
 
		this.GtkLabel2 = new global::Gtk.Label ();
 
		this.GtkLabel2.Name = "GtkLabel2";
 
		this.GtkLabel2.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Select Ingredients</b>");
 
		this.GtkLabel2.LabelProp = "<b>Select Ingredients</b>";
 
		this.GtkLabel2.UseMarkup = true;
 
		this.frame2.LabelWidget = this.GtkLabel2;
 
		this.hbox1.Add (this.frame2);
 
		global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.frame2]));
 
		w14.Position = 0;
 
		// Container child hbox1.Gtk.Box+BoxChild
 
		this.frame3 = new global::Gtk.Frame ();
 
		this.frame3.Name = "frame3";
 
		this.frame3.BorderWidth = ((uint)(4));
 
		// Container child frame3.Gtk.Container+ContainerChild
 
		this.GtkAlignment1 = new global::Gtk.Alignment (0f, 0f, 1f, 1f);
 
		this.GtkAlignment1 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
 
		this.GtkAlignment1.Name = "GtkAlignment1";
 
		this.GtkAlignment1.LeftPadding = ((uint)(5));
 
		this.GtkAlignment1.TopPadding = ((uint)(5));
 
		this.GtkAlignment1.RightPadding = ((uint)(5));
 
		this.GtkAlignment1.BottomPadding = ((uint)(6));
 
		// Container child GtkAlignment1.Gtk.Container+ContainerChild
 
		this.vbox4 = new global::Gtk.VBox ();
 
		this.vbox4.WidthRequest = 120;
 
		this.vbox4.Name = "vbox4";
 
		this.vbox4.Spacing = 6;
 
		// Container child vbox4.Gtk.Box+BoxChild
 
		this.unmodifiedSwatch = new global::DesertPaintLab.PaintSwatch ();
 
		this.unmodifiedSwatch.Events = ((global::Gdk.EventMask)(256));
 
		this.unmodifiedSwatch.Name = "unmodifiedSwatch";
 
		this.vbox4.Add (this.unmodifiedSwatch);
 
		global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.vbox4[this.unmodifiedSwatch]));
 
		w15.Position = 0;
 
		// Container child vbox4.Gtk.Box+BoxChild
 
		this.captureButton = new global::Gtk.Button ();
 
		this.captureButton.WidthRequest = 100;
 
		this.captureButton.CanFocus = true;
 
		this.captureButton.Name = "captureButton";
 
		this.captureButton.UseUnderline = true;
 
		this.captureButton.Label = global::Mono.Unix.Catalog.GetString ("Capture");
 
		this.captureButton.Label = "Capture";
 
		this.vbox4.Add (this.captureButton);
 
		global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.vbox4[this.captureButton]));
 
		w16.Position = 1;
 
		w16.Expand = false;
 
		w16.Fill = false;
 
		this.GtkAlignment1.Add (this.vbox4);
 
		this.frame3.Add (this.GtkAlignment1);
 
		this.GtkLabel25 = new global::Gtk.Label ();
 
		this.GtkLabel25.Name = "GtkLabel25";
 
		this.GtkLabel25.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Unmodified</b>");
 
		this.GtkLabel25.LabelProp = "<b>Unmodified</b>";
 
		this.GtkLabel25.UseMarkup = true;
 
		this.frame3.LabelWidget = this.GtkLabel25;
 
		this.hbox1.Add (this.frame3);
 
		global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.frame3]));
 
		w19.Position = 1;
 
		w19.Expand = false;
 
		w19.Fill = false;
 
		// Container child hbox1.Gtk.Box+BoxChild
 
		this.frame4 = new global::Gtk.Frame ();
 
		this.frame4.Name = "frame4";
 
		this.frame4.BorderWidth = ((uint)(4));
 
		// Container child frame4.Gtk.Container+ContainerChild
 
		this.GtkAlignment2 = new global::Gtk.Alignment (0f, 0f, 1f, 1f);
 
		this.GtkAlignment2 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
 
		this.GtkAlignment2.WidthRequest = 130;
 
		this.GtkAlignment2.Name = "GtkAlignment2";
 
		this.GtkAlignment2.LeftPadding = ((uint)(5));
 
		this.GtkAlignment2.TopPadding = ((uint)(5));
 
		this.GtkAlignment2.RightPadding = ((uint)(5));
 
		this.GtkAlignment2.BottomPadding = ((uint)(6));
 
		// Container child GtkAlignment2.Gtk.Container+ContainerChild
 
		this.vbox5 = new global::Gtk.VBox ();
 
		this.vbox5.WidthRequest = 120;
 
		this.vbox5.Name = "vbox5";
 
		this.vbox5.Spacing = 6;
 
		// Container child vbox5.Gtk.Box+BoxChild
 
		this.reactionSwatch = new global::DesertPaintLab.PaintSwatch ();
 
		this.reactionSwatch.Events = ((global::Gdk.EventMask)(256));
 
		this.reactionSwatch.Name = "reactionSwatch";
 
		this.vbox5.Add (this.reactionSwatch);
 
		global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.vbox5[this.reactionSwatch]));
 
		w20.Position = 0;
 
		// Container child vbox5.Gtk.Box+BoxChild
 
		this.saveButton = new global::Gtk.Button ();
 
		this.saveButton.WidthRequest = 100;
 
		this.saveButton.CanFocus = true;
 
		this.saveButton.Name = "saveButton";
 
		this.saveButton.UseUnderline = true;
 
		this.saveButton.Label = global::Mono.Unix.Catalog.GetString ("Record");
 
		this.saveButton.Label = "Record";
 
		this.vbox5.Add (this.saveButton);
 
		global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.vbox5[this.saveButton]));
 
		w21.Position = 1;
 
		w21.Expand = false;
 
		w21.Fill = false;
 
		this.GtkAlignment2.Add (this.vbox5);
 
		this.frame4.Add (this.GtkAlignment2);
 
		this.GtkLabel26 = new global::Gtk.Label ();
 
		this.GtkLabel26.Name = "GtkLabel26";
 
		this.GtkLabel26.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Reaction</b>");
 
		this.GtkLabel26.LabelProp = "<b>Reaction</b>";
 
		this.GtkLabel26.UseMarkup = true;
 
		this.frame4.LabelWidget = this.GtkLabel26;
 
		this.hbox1.Add (this.frame4);
 
		global::Gtk.Box.BoxChild w24 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.frame4]));
 
		w24.Position = 2;
 
		w24.Expand = false;
 
		w24.Fill = false;
 
		this.vbox1.Add (this.hbox1);
 
		global::Gtk.Box.BoxChild w25 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.hbox1]));
 
		w25.Position = 1;
 
		// Container child vbox1.Gtk.Box+BoxChild
 
		this.statusBar = new global::Gtk.Statusbar ();
 
		this.statusBar.Name = "statusBar";
 
		this.statusBar.Spacing = 6;
 
		this.vbox1.Add (this.statusBar);
 
		global::Gtk.Box.BoxChild w26 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.statusBar]));
 
		w26.Position = 2;
 
		w26.Expand = false;
 
		w26.Fill = false;
 
		this.Add (this.vbox1);
 
		if ((this.Child != null)) {
 
			this.Child.ShowAll ();
 
		}
 
		this.DefaultWidth = 629;
 
		this.DefaultHeight = 265;
 
		this.Show ();
 
		this.DeleteEvent += new global::Gtk.DeleteEventHandler (this.OnDeleteEvent);
 
		this.AboutAction.Activated += new global::System.EventHandler (this.OnAbout);
 
		this.NewProfileAction.Activated += new global::System.EventHandler (this.OnNewProfile);
 
		this.OpenProfileAction.Activated += new global::System.EventHandler (this.OnOpenProfile);
 
		this.ExitAction.Activated += new global::System.EventHandler (this.OnMenuExit);
 
		this.ExportForPracticalPaintAction.Activated += new global::System.EventHandler (this.OnExport);
 
		this.RunSimulatorAction.Activated += new global::System.EventHandler (this.RunSimulator);
 
		this.ingredient1ComboBox.Changed += new global::System.EventHandler (this.OnChangedIngredient1);
 
		this.ingredient2ComboBox.Changed += new global::System.EventHandler (this.OnChangedIngredient2);
 
		this.ingredient3ComboBox.Changed += new global::System.EventHandler (this.OnChangedIngredient3);
 
		this.captureButton.Clicked += new global::System.EventHandler (this.OnCaptureButton);
 
		this.saveButton.Clicked += new global::System.EventHandler (this.OnSaveButton);
 
	}
 
}
gtk-gui/generated.cs
Show inline comments
 

 
// This file has been generated by the GUI designer. Do not modify.
 
namespace Stetic
 
{
 
	internal class Gui
 
	{
 
		private static bool initialized;
 

 
		static internal void Initialize (Gtk.Widget iconRenderer)
 
		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))) {
 
				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)
 
		{
 
			Gdk.Pixbuf res = widget.RenderIcon (name, size, null);
 
			if ((res != null)) {
 
				return res;
 
			} else {
 
				int sz;
 
				int sy;
 
				global::Gtk.Icon.SizeLookup (size, out sz, out sy);
 
				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);
 
					} 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)));
 
						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;
 
		}
 
	}
 
}
gtk-gui/gui.stetic
Show inline comments
 
<?xml version="1.0" encoding="utf-8"?>
 
<stetic-interface>
 
  <configuration>
 
    <images-root-path>..</images-root-path>
 
    <target-gtk-version>2.12</target-gtk-version>
 
  </configuration>
 
  <import>
 
    <widget-library name="glade-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
 
    <widget-library name="..\bin\Debug\DesertPaintLab.exe" internal="true" />
 
    <widget-library name="../bin/Debug/DesertPaintLab.exe" internal="true" />
 
  </import>
 
  <widget class="Gtk.Window" id="MainWindow" design-size="629 265">
 
    <action-group name="Default">
 
      <action id="FileAction">
 
        <property name="Type">Action</property>
 
        <property name="Accelerator">&lt;Alt&gt;f</property>
 
        <property name="Label" translatable="yes">_File</property>
 
        <property name="ShortLabel" translatable="yes">_File</property>
 
      </action>
 
      <action id="HelpAction">
 
        <property name="Type">Action</property>
 
        <property name="Accelerator">&lt;Alt&gt;a</property>
 
        <property name="Label" translatable="yes">_Help</property>
 
        <property name="ShortLabel" translatable="yes">_Help</property>
 
      </action>
 
      <action id="AboutAction">
 
        <property name="Type">Action</property>
 
        <property name="Accelerator">&lt;Alt&gt;a</property>
 
        <property name="Label" translatable="yes">_About...</property>
 
        <property name="ShortLabel" translatable="yes">_About...</property>
 
        <signal name="Activated" handler="OnAbout" />
 
      </action>
 
      <action id="NewProfileAction">
 
        <property name="Type">Action</property>
 
        <property name="Accelerator">&lt;Alt&gt;n</property>
 
        <property name="Label" translatable="yes">_New Profile...</property>
 
        <property name="ShortLabel" translatable="yes">_New Profile...</property>
 
        <signal name="Activated" handler="OnNewProfile" />
 
      </action>
 
      <action id="OpenProfileAction">
 
        <property name="Type">Action</property>
 
        <property name="Accelerator">&lt;Alt&gt;o</property>
 
        <property name="Label" translatable="yes">_Open Profile...</property>
 
        <property name="ShortLabel" translatable="yes">_Open Profile...</property>
 
        <signal name="Activated" handler="OnOpenProfile" />
 
      </action>
 
      <action id="ExitAction">
 
        <property name="Type">Action</property>
 
        <property name="Accelerator">&lt;Alt&gt;x</property>
 
        <property name="Label" translatable="yes">E_xit</property>
 
        <property name="ShortLabel" translatable="yes">E_xit</property>
 
        <signal name="Activated" handler="OnMenuExit" />
 
      </action>
 
      <action id="ExportForPracticalPaintAction">
 
        <property name="Type">Action</property>
 
        <property name="Label" translatable="yes">Export for _PracticalPaint...</property>
 
        <property name="ShortLabel" translatable="yes">Export for _PracticalPaint...</property>
 
        <signal name="Activated" handler="OnExport" />
 
      </action>
 
      <action id="WindowAction">
 
        <property name="Type">Action</property>
 
        <property name="Label" translatable="yes">_Window</property>
 
        <property name="ShortLabel" translatable="yes">_Window</property>
 
      </action>
 
      <action id="RunSimulatorAction">
 
        <property name="Type">Action</property>
 
        <property name="Label" translatable="yes">_Run Simulator</property>
 
        <property name="ShortLabel" translatable="yes">_Run Simulator</property>
 
        <signal name="Activated" handler="RunSimulator" />
 
      </action>
 
    </action-group>
 
    <property name="MemberName" />
 
    <property name="Title" translatable="yes">Desert Paint Lab</property>
 
    <property name="WindowPosition">CenterOnParent</property>
 
    <signal name="DeleteEvent" handler="OnDeleteEvent" />
 
    <child>
 
      <widget class="Gtk.VBox" id="vbox1">
 
        <property name="MemberName" />
 
        <child>
 
          <widget class="Gtk.MenuBar" id="menubar1">
 
            <property name="MemberName" />
 
            <node name="menubar1" type="Menubar">
 
              <node type="Menu" action="FileAction">
 
                <node type="Menuitem" action="NewProfileAction" />
 
                <node type="Menuitem" action="OpenProfileAction" />
 
                <node type="Menuitem" action="ExportForPracticalPaintAction" />
 
                <node type="Separator" />
 
                <node type="Menuitem" action="ExitAction" />
 
              </node>
 
              <node type="Menu" action="WindowAction">
 
                <node type="Menuitem" action="RunSimulatorAction" />
 
              </node>
 
              <node type="Menu" action="HelpAction">
 
                <node type="Menuitem" action="AboutAction" />
 
              </node>
 
            </node>
 
          </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>
 
            <property name="BorderWidth">4</property>
 
            <child>
 
              <widget class="Gtk.Frame" id="frame2">
 
                <property name="MemberName" />
 
                <property name="BorderWidth">4</property>
 
                <child>
 
                  <widget class="Gtk.Alignment" id="GtkAlignment">
 
                    <property name="MemberName" />
 
                    <property name="Xalign">0</property>
 
                    <property name="Yalign">0</property>
 
                    <property name="LeftPadding">6</property>
 
                    <property name="RightPadding">6</property>
 
                    <child>
 
                      <widget class="Gtk.VBox" id="vbox3">
 
                        <property name="MemberName" />
 
                        <property name="Homogeneous">True</property>
 
                        <property name="Spacing">6</property>
 
                        <child>
 
                          <widget class="Gtk.HBox" id="hbox6">
 
                            <property name="MemberName" />
 
                            <property name="Spacing">6</property>
 
                            <child>
 
                              <widget class="Gtk.Label" id="label4">
 
                                <property name="MemberName" />
 
                                <property name="LabelProp" translatable="yes">Ingredient 1:</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.ComboBox" id="ingredient1ComboBox">
 
                                <property name="MemberName" />
 
                                <property name="IsTextCombo">True</property>
 
                                <property name="Items" translatable="yes" />
 
                                <signal name="Changed" handler="OnChangedIngredient1" />
 
                              </widget>
 
                              <packing>
 
                                <property name="Position">1</property>
 
                                <property name="AutoSize">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="hbox7">
 
                            <property name="MemberName" />
 
                            <property name="Spacing">6</property>
 
                            <child>
 
                              <widget class="Gtk.Label" id="label5">
 
                                <property name="MemberName" />
 
                                <property name="LabelProp" translatable="yes">Ingredient 2:</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.ComboBox" id="ingredient2ComboBox">
 
                                <property name="MemberName" />
 
                                <property name="IsTextCombo">True</property>
 
                                <property name="Items" translatable="yes" />
 
                                <signal name="Changed" handler="OnChangedIngredient2" />
 
                              </widget>
 
                              <packing>
 
                                <property name="Position">1</property>
 
                                <property name="AutoSize">False</property>
 
                              </packing>
 
                            </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.HBox" id="hbox8">
 
                            <property name="MemberName" />
 
                            <property name="Spacing">6</property>
 
                            <child>
 
                              <widget class="Gtk.Label" id="label6">
 
                                <property name="MemberName" />
 
                                <property name="LabelProp" translatable="yes">Ingredient 3:</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.ComboBox" id="ingredient3ComboBox">
 
                                <property name="MemberName" />
 
                                <property name="IsTextCombo">True</property>
 
                                <property name="Items" translatable="yes" />
 
                                <signal name="Changed" handler="OnChangedIngredient3" />
 
                              </widget>
 
                              <packing>
 
                                <property name="Position">1</property>
 
                                <property name="AutoSize">False</property>
 
                              </packing>
 
                            </child>
 
                          </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>
 
                </child>
 
                <child>
 
                  <widget class="Gtk.Label" id="GtkLabel2">
 
                    <property name="MemberName" />
 
                    <property name="LabelProp" translatable="yes">&lt;b&gt;Select Ingredients&lt;/b&gt;</property>
 
                    <property name="UseMarkup">True</property>
 
                  </widget>
 
                  <packing>
 
                    <property name="type">label_item</property>
 
                  </packing>
 
                </child>
 
              </widget>
 
              <packing>
 
                <property name="Position">0</property>
 
                <property name="AutoSize">False</property>
 
              </packing>
 
            </child>
 
            <child>
 
              <widget class="Gtk.Frame" id="frame3">
 
                <property name="MemberName" />
 
                <property name="BorderWidth">4</property>
 
                <child>
 
                  <widget class="Gtk.Alignment" id="GtkAlignment1">
 
                    <property name="MemberName" />
 
                    <property name="Xalign">0</property>
 
                    <property name="Yalign">0</property>
 
                    <property name="LeftPadding">5</property>
 
                    <property name="TopPadding">5</property>
 
                    <property name="RightPadding">5</property>
 
                    <property name="BottomPadding">6</property>
...
 
@@ -364,512 +364,513 @@
 
                          </packing>
 
                        </child>
 
                      </widget>
 
                    </child>
 
                  </widget>
 
                </child>
 
                <child>
 
                  <widget class="Gtk.Label" id="GtkLabel26">
 
                    <property name="MemberName" />
 
                    <property name="LabelProp" translatable="yes">&lt;b&gt;Reaction&lt;/b&gt;</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">True</property>
 
                <property name="Expand">False</property>
 
                <property name="Fill">False</property>
 
              </packing>
 
            </child>
 
          </widget>
 
          <packing>
 
            <property name="Position">1</property>
 
            <property name="AutoSize">False</property>
 
          </packing>
 
        </child>
 
        <child>
 
          <widget class="Gtk.Statusbar" id="statusBar">
 
            <property name="MemberName" />
 
            <property name="Spacing">6</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.Dialog" id="DesertPaintLab.FirstRunDialog" design-size="416 189">
 
    <property name="MemberName" />
 
    <property name="Title" translatable="yes">Set Up Profile</property>
 
    <property name="WindowPosition">CenterOnParent</property>
 
    <property name="Modal">True</property>
 
    <property name="AllowShrink">True</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.Label" id="label2">
 
            <property name="MemberName" />
 
            <property name="LabelProp" translatable="yes">Since this is your first time using this program, you need a new profile.
 

	
 
You can either import an existing PracticalPaint reactions.txt file, or you can start a new profile from scratch.</property>
 
            <property name="Wrap">True</property>
 
          </widget>
 
          <packing>
 
            <property name="Position">0</property>
 
            <property name="AutoSize">False</property>
 
            <property name="Padding">5</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="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="Expand">False</property>
 
            <property name="Fill">False</property>
 
          </packing>
 
        </child>
 
        <child>
 
          <widget class="Gtk.Button" id="buttonImport">
 
            <property name="MemberName" />
 
            <property name="CanDefault">True</property>
 
            <property name="CanFocus">True</property>
 
            <property name="Type">TextOnly</property>
 
            <property name="Label" translatable="yes">Import reactions.txt</property>
 
            <property name="UseUnderline">True</property>
 
            <property name="ResponseId">-3</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="buttonNew">
 
            <property name="MemberName" />
 
            <property name="CanFocus">True</property>
 
            <property name="Type">TextOnly</property>
 
            <property name="Label" translatable="yes">New Profile</property>
 
            <property name="UseUnderline">True</property>
 
            <property name="ResponseId">-5</property>
 
          </widget>
 
          <packing>
 
            <property name="Position">2</property>
 
            <property name="Expand">False</property>
 
            <property name="Fill">False</property>
 
          </packing>
 
        </child>
 
      </widget>
 
    </child>
 
  </widget>
 
  <widget class="Gtk.Dialog" id="DesertPaintLab.SelectProfileDialog" design-size="400 288">
 
    <property name="MemberName" />
 
    <property name="Title" translatable="yes">Open Profile</property>
 
    <property name="WindowPosition">CenterOnParent</property>
 
    <property name="Modal">True</property>
 
    <property name="BorderWidth">5</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="Spacing">10</property>
 
        <property name="BorderWidth">2</property>
 
        <child>
 
          <widget class="Gtk.Label" id="label3">
 
            <property name="MemberName" />
 
            <property name="LabelProp" translatable="yes">Select the profile you would like to open:</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.TreeView" id="profileListView">
 
            <property name="MemberName" />
 
            <property name="CanFocus">True</property>
 
            <property name="EnableSearch">False</property>
 
            <signal name="CursorChanged" handler="OnCursorChanged" />
 
          </widget>
 
          <packing>
 
            <property name="Position">1</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="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="Expand">False</property>
 
            <property name="Fill">False</property>
 
          </packing>
 
        </child>
 
        <child>
 
          <widget class="Gtk.Button" id="button56">
 
            <property name="MemberName" />
 
            <property name="CanFocus">True</property>
 
            <property name="Type">TextOnly</property>
 
            <property name="Label" translatable="yes">New Profile</property>
 
            <property name="UseUnderline">True</property>
 
            <property name="ResponseId">-3</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>
 
  <widget class="Gtk.Dialog" id="DesertPaintLab.NewProfileDialog" design-size="318 177">
 
    <property name="MemberName" />
 
    <property name="Title" translatable="yes">New Profile</property>
 
    <property name="WindowPosition">CenterOnParent</property>
 
    <property name="BorderWidth">5</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">10</property>
 
        <property name="BorderWidth">9</property>
 
        <child>
 
          <widget class="Gtk.Label" id="label1">
 
            <property name="MemberName" />
 
            <property name="LabelProp" translatable="yes">Name your new profile:</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="profileNameEntry">
 
            <property name="MemberName" />
 
            <property name="CanFocus">True</property>
 
            <property name="IsEditable">True</property>
 
            <property name="InvisibleChar">●</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>
 
      </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">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>
 
            <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>
 
            <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="DesertPaintLab.PaintSwatch" design-size="245 235">
 
    <property name="MemberName" />
 
    <property name="Visible">False</property>
 
    <child>
 
      <widget class="Gtk.VBox" id="vbox1">
 
        <property name="MemberName" />
 
        <property name="Spacing">6</property>
 
        <child>
 
          <widget class="Gtk.Label" id="colorNameLabel">
 
            <property name="MemberName" />
 
            <property name="LabelProp" translatable="yes">Unknown</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.DrawingArea" id="colorBox">
 
            <property name="MemberName" />
 
          </widget>
 
          <packing>
 
            <property name="Position">1</property>
 
            <property name="AutoSize">True</property>
 
          </packing>
 
        </child>
 
        <child>
 
          <widget class="Gtk.Label" id="rgbLabel">
 
            <property name="MemberName" />
 
            <property name="LabelProp" translatable="yes">???, ???, ???</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.Window" id="DesertPaintLab.SimulatorWindow" design-size="804 390">
 
    <property name="MemberName" />
 
    <property name="Title" translatable="yes">Simulator</property>
 
    <property name="WindowPosition">CenterOnParent</property>
 
    <child>
 
      <widget class="Gtk.HBox" id="hbox1">
 
        <property name="MemberName" />
 
        <property name="Spacing">6</property>
 
        <property name="BorderWidth">12</property>
 
        <child>
 
          <widget class="Gtk.ScrolledWindow" id="GtkScrolledWindow">
 
            <property name="MemberName" />
 
            <property name="ShadowType">In</property>
 
            <child>
 
              <widget class="Gtk.TreeView" id="reagentListView">
 
                <property name="MemberName" />
 
                <property name="CanFocus">True</property>
 
                <property name="ShowScrollbars">True</property>
 
              </widget>
 
            </child>
 
          </widget>
 
          <packing>
 
            <property name="Position">0</property>
 
            <property name="AutoSize">True</property>
 
          </packing>
 
        </child>
 
        <child>
 
          <widget class="Gtk.VBox" id="vbox162">
 
            <property name="MemberName" />
 
            <property name="Spacing">6</property>
 
            <child>
 
              <widget class="Gtk.Alignment" id="alignment1">
 
                <property name="MemberName" />
 
                <child>
 
                  <placeholder />
 
                </child>
 
              </widget>
 
              <packing>
 
                <property name="Position">0</property>
 
                <property name="AutoSize">True</property>
 
              </packing>
 
            </child>
 
            <child>
 
              <widget class="Gtk.Button" id="addReagentButton">
 
                <property name="MemberName" />
 
                <property name="CanFocus">True</property>
 
                <property name="Type">Custom</property>
 
                <signal name="Clicked" handler="OnAddReagent" />
 
                <child>
 
                  <widget class="Gtk.Image" id="addReagentButtonImage">
 
                    <property name="MemberName" />
 
                    <property name="Pixbuf">stock:gtk-go-forward Menu</property>
 
                  </widget>
 
                </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.Alignment" id="alignment3">
 
                <property name="MemberName" />
 
                <child>
 
                  <placeholder />
 
                </child>
 
              </widget>
 
              <packing>
 
                <property name="Position">2</property>
 
                <property name="AutoSize">True</property>
 
              </packing>
 
            </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.ScrolledWindow" id="GtkScrolledWindow1">
 
            <property name="MemberName" />
 
            <property name="WidthRequest">0</property>
 
            <property name="ShadowType">In</property>
 
            <child>
 
              <widget class="Gtk.TreeView" id="recipeView">
 
                <property name="MemberName" />
 
                <property name="CanFocus">True</property>
 
                <property name="ShowScrollbars">True</property>
 
                <property name="EnableSearch">False</property>
 
                <property name="Reorderable">True</property>
 
              </widget>
 
            </child>
 
          </widget>
 
          <packing>
 
            <property name="Position">2</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.Alignment" id="alignment2">
 
                <property name="MemberName" />
 
                <child>
 
                  <placeholder />
 
                </child>
 
              </widget>
 
              <packing>
 
                <property name="Position">0</property>
 
                <property name="AutoSize">True</property>
 
              </packing>
 
            </child>
 
            <child>
 
              <widget class="Gtk.Button" id="button65">
 
                <property name="MemberName" />
 
                <property name="CanFocus">True</property>
 
                <property name="Type">Custom</property>
 
                <signal name="Clicked" handler="OnIncrementReagent" />
 
                <child>
 
                  <widget class="Gtk.Image" id="image1">
 
                    <property name="MemberName" />
 
                    <property name="Pixbuf">stock:gtk-add Menu</property>
 
                  </widget>
 
                </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.Button" id="button66">
 
                <property name="MemberName" />
 
                <property name="CanFocus">True</property>
 
                <property name="Type">Custom</property>
 
                <signal name="Clicked" handler="OnDecrementReagent" />
 
                <child>
 
                  <widget class="Gtk.Image" id="image2">
 
                    <property name="MemberName" />
 
                    <property name="Pixbuf">stock:gtk-remove Menu</property>
 
                  </widget>
 
                </child>
 
              </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.Alignment" id="alignment4">
0 comments (0 inline, 0 general)