Changeset - 4ef58379d19a
[Not reviewed]
default
0 10 0
Jason Maltzen (jmaltzen) - 9 years ago 2015-11-19 23:50:55
jason.maltzen@unsanctioned.net
Add a debug menu to help in tracking down problems. Save screen height/width settings entered by the user and load on next run.
10 files changed with 1087 insertions and 955 deletions:
0 comments (0 inline, 0 general)
DesertPaintLab.csproj
Show inline comments
 
<?xml version="1.0" encoding="utf-8"?>
 
<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>
 
    <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="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" />
 
    <Compile Include="ScreenCheckDialog.cs" />
 
    <Compile Include="gtk-gui\DesertPaintLab.ScreenCheckDialog.cs" />
 
  </ItemGroup>
 
  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
 
  <ProjectExtensions>
 
    <MonoDevelop>
 
      <Properties>
 
        <Policies>
 
          <TextStylePolicy inheritsSet="VisualStudio" inheritsScope="text/plain" scope="text/x-csharp" />
 
          <CSharpFormattingPolicy IndentSwitchBody="True" IndentBlocksInsideExpressions="True" AnonymousMethodBraceStyle="NextLine" PropertyBraceStyle="NextLine" PropertyGetBraceStyle="NextLine" PropertySetBraceStyle="NextLine" EventBraceStyle="NextLine" EventAddBraceStyle="NextLine" EventRemoveBraceStyle="NextLine" StatementBraceStyle="NextLine" ElseNewLinePlacement="NewLine" CatchNewLinePlacement="NewLine" FinallyNewLinePlacement="NewLine" WhileNewLinePlacement="DoNotCare" ArrayInitializerWrapping="DoNotChange" ArrayInitializerBraceStyle="NextLine" BeforeMethodDeclarationParentheses="False" BeforeMethodCallParentheses="False" BeforeConstructorDeclarationParentheses="False" NewLineBeforeConstructorInitializerColon="NewLine" NewLineAfterConstructorInitializerColon="SameLine" BeforeDelegateDeclarationParentheses="False" NewParentheses="False" SpacesBeforeBrackets="False" inheritsSet="Mono" inheritsScope="text/x-csharp" scope="text/x-csharp" />
 
        </Policies>
 
        <GtkDesignInfo generateGettext="False" />
 
      </Properties>
 
    </MonoDevelop>
 
  </ProjectExtensions>
 
</Project>
...
 
\ No newline at end of file
MainWindow.cs
Show inline comments
 
/*
 
 * Copyright (c) 2010, Tess Snider
 

	
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 
 of this software and associated documentation files (the "Software"), to deal
 
 in the Software without restriction, including without limitation the rights
 
 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 
 copies of the Software, and to permit persons to whom the Software is
 
 furnished to do so, subject to the following conditions:
 

	
 
 The above copyright notice and this permission notice shall be included in
 
 all copies or substantial portions of the Software.
 

	
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 
 THE SOFTWARE.
 
*/
 

	
 
using System;
 
using System.IO;
 
using System.Collections.Generic;
 
using System.Text.RegularExpressions;
 
using Gtk;
 
using DesertPaintLab;
 

	
 
public partial class MainWindow : Gtk.Window
 
{
 
	const int colorTolerance = 2;
 

	
 
	int swatchHeight = 24;
 
	int colorBarWidth = 306;
 
	int redBarSpacing = 32;
 
	int greenBarSpacing = 42;
 
	int blueBarSpacing = 52;
 

	
 

	
 
	bool unsavedData = false;
 
	bool shouldShutDown = false;
 
	string appDataPath;
 
	List<string> profileList = new List<string>();
 
	PlayerProfile profile = null;
 
	PaintColor expectedColor = new PaintColor();
 
	PaintColor reactedColor = new PaintColor();
 
	
 
	int screenWidth = 0;
 
	int screenHeight = 0;
 
	int pixelMultiplier = 1;
 

	
 
    bool enableDebugMenu = false;
 

	
 
	Gdk.Window rootWindow = null;
 
	Gdk.Pixbuf screenBuffer = null;
 

	
 
	Reagent reagent1 = null;
 
	Reagent reagent2 = null;
 
	Reagent reagent3 = null;
 

	
 
	
 
	public bool ShouldShutDown
 
	{
 
		get
 
		{
 
			return shouldShutDown;	
 
		}
 
	}
 
	
 
	
 
	public MainWindow () : base(Gtk.WindowType.Toplevel)
 
	{
 
		appDataPath = System.IO.Path.Combine(
 
			Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
 
		    "DesertPaintLab");
 
		
 
		if (!System.IO.Directory.Exists(appDataPath))
 
		{
 
			System.IO.Directory.CreateDirectory(appDataPath);	
 
		}
 
		
 
		DirectoryInfo di = new DirectoryInfo(appDataPath);
 
		DirectoryInfo[] dirs = di.GetDirectories();
 
		foreach (DirectoryInfo dir in dirs)
 
		{
 
			if (dir.Name != "template")
 
			{
 
				profileList.Add(dir.Name);
 
			}
 
		}
 
		
 

	
 
		Palette.Load(System.IO.Path.Combine(
 
				System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location),
 
		    	"colors.txt"));
 
		
 
		Build();
 
		
 
		if (unmodifiedSwatch != null)
 
		{
 
			unmodifiedSwatch.Clear();
 
		}
 
		if (reactionSwatch != null)
 
		{
 
			reactionSwatch.Clear();
 
		}
 

	
 
		// get the root window
 
		rootWindow = Gdk.Global.DefaultRootWindow;
 

	
 
		// get its width and height
 
		rootWindow.GetSize(out screenWidth, out screenHeight);
 

	
 
        string settingsPath = System.IO.Path.Combine(appDataPath, "settings");
 
        if (System.IO.File.Exists(settingsPath))
 
        {
 
            LoadSettings(settingsPath);
 
        }
 

	
 
        this.DebugAction.Visible = enableDebugMenu;
 

	
 
		ScreenCheckDialog screenCheckDialog = new ScreenCheckDialog();
 
		screenCheckDialog.ScreenWidth = screenWidth;
 
		screenCheckDialog.ScreenHeight = screenHeight;
 
		screenCheckDialog.GamePixelWidth = pixelMultiplier;
 
		ResponseType resp = (ResponseType)screenCheckDialog.Run();
 
		screenWidth = screenCheckDialog.ScreenWidth;
 
		screenHeight = screenCheckDialog.ScreenHeight;
 
		pixelMultiplier = screenCheckDialog.GamePixelWidth;
 
		screenCheckDialog.Destroy();
 

	
 
        SaveSettings(settingsPath);
 

	
 
		screenBuffer = new Gdk.Pixbuf(Gdk.Colorspace.Rgb, false, 8, screenWidth, screenHeight);
 
	
 
		swatchHeight    *= pixelMultiplier;
 
		colorBarWidth   *= pixelMultiplier;
 
		redBarSpacing   *= pixelMultiplier;
 
		greenBarSpacing *= pixelMultiplier;
 
		blueBarSpacing  *= pixelMultiplier;
 

	
 
		if (!OpenProfile())
 
		{
 
			shouldShutDown = true;
 
		}
 
	}
 

	
 
    static Regex optionEntry = new Regex(@"(?<opt>[^#=][^=]*)=(?<optval>.*)$");
 
    void LoadSettings(string file)
 
    {
 
        string line;
 
        Match match;
 
        using (StreamReader reader = new StreamReader(file))
 
        {
 
            while ((line = reader.ReadLine()) != null) 
 
            {
 
                match = optionEntry.Match(line);
 
                if (match.Success)
 
                {
 
                    String optName = match.Groups["opt"].Value.ToLower();
 
                    String optVal = match.Groups["optval"].Value.Trim();
 
                    switch (optName)
 
                    {
 
                        case "screenwidth":
 
                            try {
 
                                int val = Int32.Parse(optVal);
 
                                if (val > 0)
 
                                {
 
                                    screenWidth = val;
 
                                }
 
                            } catch (FormatException) {
 
                                // ignore
 
                            }
 
                            break;
 
                        case "screenheight":
 
                            try {
 
                                int val = Int32.Parse(optVal);
 
                                if (val > 0)
 
                                {
 
                                    screenHeight = val;
 
                                }
 
                            } catch (FormatException) {
 
                                // ignore
 
                            }
 
                            break;
 
                        case "pixelmultiplier":
 
                            try {
 
                                int val = Int32.Parse(optVal);
 
                                if (val > 0)
 
                                {
 
                                    pixelMultiplier = val;
 
                                }
 
                            } catch (FormatException) {
 
                                // ignore
 
                            }
 
                            break;
 
                        case "debug":
 
                            try {
 
                                bool val = Boolean.Parse(optVal.ToLower());
 
                                enableDebugMenu = val;
 
                            } catch (FormatException) {
 
                                // ignore
 
                            }
 
                            break;
 
                        default:
 
                            // ignore
 
                            break;
 
                    }
 
                }
 
            }
 
        }
 
    }
 

	
 
    void SaveSettings(string file)
 
    {
 
        using (StreamWriter writer = new StreamWriter(file))
 
        {
 
            writer.WriteLine("screenwidth={0}", screenWidth);
 
            writer.WriteLine("screenheight={0}", screenHeight);
 
            writer.WriteLine("pixelmultiplier={0}", pixelMultiplier);
 
            writer.WriteLine("debug={0}", enableDebugMenu);
 
        }
 
    }
 

	
 
	bool ConfirmedExit()
 
	{
 
		if (unsavedData)
 
		{
 
			MessageDialog md = new MessageDialog(this, 
 
	            DialogFlags.DestroyWithParent,
 
	            MessageType.Warning, ButtonsType.OkCancel, 
 
	            "Your last reaction was unsaved." +
 
	            "Are you sure you want to quit?");
 
	   
 
			ResponseType resp = (ResponseType)md.Run();
 
			md.Destroy();
 
			return (resp == ResponseType.Ok);
 
		}
 
		return true;
 
	}
 
	
 
	void SetProfileName(string name)
 
	{	
 
		profile = new PlayerProfile(name,
 
		                System.IO.Path.Combine(appDataPath, name));
 
		
 
		statusBar.Push(0, name);
 
	}
 
	
 
	bool NewProfile()
 
	{
 
		bool newProfileCreated = false;
 
		bool duplicateName = false;
 
		NewProfileDialog newProfileDialog = new NewProfileDialog();
 
		ResponseType resp = (ResponseType)newProfileDialog.Run();
 
		if (resp == ResponseType.Ok)
 
		{
 
			// Make sure profile doesn't already exist.
 
			foreach (string profileName in profileList)
 
			{
 
				if (profileName == newProfileDialog.ProfileName)
 
				{
 
					MessageDialog md = new MessageDialog(this, 
 
	            		DialogFlags.DestroyWithParent,
 
	            		MessageType.Error, ButtonsType.Ok, 
 
	            		"That profile name already exists.");
 
					resp = (ResponseType)md.Run();
 
					md.Destroy();
 
					duplicateName = true;
 
					break;	
 
				}
 
			}
 
			
 
			if (!duplicateName)
 
			{
 
				// Set profile name.
 
				SetProfileName(newProfileDialog.ProfileName);
 
				
 
				profile.Initialize();
 
				
 
				newProfileCreated = true;
 
			}
 
		}
 
		newProfileDialog.Destroy();
 
		return newProfileCreated;
 
	}
 
	
 
	bool OpenProfile()
 
	{
 
		bool profileSelected = false;
 
		
 
		if (profileList.Count > 0)
 
		{
 
			SelectProfileDialog selectProfileDialog = new SelectProfileDialog();
 
			selectProfileDialog.ProfileList = profileList;
 
			ResponseType resp = (ResponseType)selectProfileDialog.Run();
 
			selectProfileDialog.Destroy();
 
			string selectedProfile = selectProfileDialog.SelectedProfile;
 
			if ((resp == ResponseType.Ok) && (selectedProfile.Length > 0)) 
 
				// Selected a profile.
 
			{
 
				SetProfileName(selectedProfile);
 
				profileSelected = true;
 
			}
 
			else if (resp == ResponseType.Accept) // New profile.
 
			{
 
				profileSelected = NewProfile();
 
			}
 
		}
 
		else
 
		{
 
			FirstRunDialog firstRunDialog = new FirstRunDialog();
 
			ResponseType resp = (ResponseType)firstRunDialog.Run();
 
			firstRunDialog.Destroy();
 
			if (resp == ResponseType.Ok) // New profile
 
			{
 
				profileSelected = NewProfile();
 
			}
 
			else if (resp == ResponseType.Accept) // Import
 
			{
 
				FileChooserDialog fileDialog =
 
					new FileChooserDialog("Select reactions.txt file.",
 
				    this, FileChooserAction.Open,
 
					Gtk.Stock.Cancel, ResponseType.Cancel,
 
		            Gtk.Stock.Open, ResponseType.Accept);
 
				resp = (ResponseType)fileDialog.Run();
 
				if (resp == ResponseType.Accept)
 
				{
 
					string fileName = fileDialog.Filename;
 
					string directory = fileDialog.CurrentFolder;
 
					if (fileName == "reactions.txt")
 
					{
 
						profileSelected = NewProfile();
 
						if (profileSelected)
 
						{
 
							profile.Import(directory);
 
						}
 
					}
 
				}
 
			}
 
		}
 
		
 
		if (profileSelected)
 
		{
 
			profile.Load();
 
			PopulateDropDowns();
 
		}
 

	
 
		return profileSelected;
 
	}
 
	
 
	void PopulateDropDowns()
 
	{
 
		ReagentManager.PopulateReagents(ref ingredient1ComboBox);
 
		ReagentManager.PopulateReagents(ref ingredient2ComboBox);
 
		ReagentManager.PopulateReagents(ref ingredient3ComboBox);
 
		
 
		ingredient2ComboBox.Sensitive = false;
 
		ingredient3ComboBox.Sensitive = false;
 
		
 
        Gtk.TreeIter iter;
 
        ingredient1ComboBox.Model.IterNthChild(out iter, 0);
 
        ingredient1ComboBox.SetActiveIter(iter);
 
		ingredient2ComboBox.Model.IterNthChild(out iter, 0);
 
        ingredient2ComboBox.SetActiveIter(iter);
 
		ingredient3ComboBox.Model.IterNthChild(out iter, 0);
 
        ingredient3ComboBox.SetActiveIter(iter);
 
	}
 
	
 
	protected void SetExpectedColor(byte red, byte green, byte blue)
 
	{
 
		expectedColor.Red = red;
 
		expectedColor.Green = green;
 
		expectedColor.Blue = blue;
 
		unmodifiedSwatch.Color = expectedColor;
 
	}
 
	
 
	protected void SetExpectedColor(PaintColor color)
 
	{
 
		SetExpectedColor(color.Red, color.Green, color.Blue);
 
	}
 
	
 
	protected void UpdateIngredients()
 
	{
 
		Reaction reaction1, reaction2;
 
		TreeIter selectIter;
 
		string reagentName;
 
		reagent1 = null;
 
		reagent2 = null;
 
		reagent3 = null;
 
		
 
		int expRedSum = 0;
 
		int expGreenSum = 0;
 
		int expBlueSum = 0;
 
		
 
		int reactRedSum = 0;
 
		int reactGreenSum = 0;
 
		int reactBlueSum = 0;
 
		
 
		bool reactionKnown = true;
 
		
 
		int pigmentCount = 0;
 
		
 
		saveButton.Sensitive = false;
 
		
 
		if (ingredient1ComboBox.GetActiveIter(out selectIter))
 
		{
 
			reagentName = (string)ingredient1ComboBox.Model.GetValue(selectIter, 0);
 
			if ((reagentName == null) || (reagentName.Length == 0))
 
			{
 
				ingredient2ComboBox.Sensitive = false;
 
				ingredient3ComboBox.Sensitive = false;
 
				unmodifiedSwatch.Clear();
 
				captureButton.Sensitive = false;
 
			}
 
			else
...
 
@@ -416,384 +506,399 @@ public partial class MainWindow : Gtk.Wi
 
									md.Run();
 
									md.Destroy();	
 
									captureButton.Sensitive = false;
 
								}
 
								
 
								if (reaction1 != null)
 
								{
 
									reactRedSum += reaction1.Red;
 
									reactGreenSum += reaction1.Green;
 
									reactBlueSum += reaction1.Blue;
 
								}
 
								else
 
								{
 
									reactionKnown = false;	
 
								}
 

	
 
								if (reaction2 != null)
 
								{
 
									reactRedSum += reaction2.Red;
 
									reactGreenSum += reaction2.Green;
 
									reactBlueSum += reaction2.Blue;
 
								}
 
								else
 
								{
 
									reactionKnown = false;	
 
								}
 
							}
 
						}
 
					}
 
				}
 
				SetExpectedColor((byte)Math.Round((float)expRedSum / (float)pigmentCount),
 
					(byte)Math.Round((float)expGreenSum / (float)pigmentCount),
 
					(byte)Math.Round((float)expBlueSum / (float)pigmentCount));
 
				
 
				if (reactionKnown)
 
				{
 
					reactedColor.Red = (byte)Math.Min(255, Math.Max(0, expectedColor.Red + reactRedSum));
 
					reactedColor.Green = (byte)Math.Min(255, Math.Max(0, expectedColor.Green + reactGreenSum));
 
					reactedColor.Blue = (byte)Math.Min(255, Math.Max(0, expectedColor.Blue + reactBlueSum));
 
					reactionSwatch.Color = reactedColor;
 
				}
 
				else
 
				{
 
					reactionSwatch.Clear();	
 
				}
 
			}
 
		}
 
	}
 
	
 
	protected void OnDeleteEvent(object sender, DeleteEventArgs a)
 
	{
 
		if (ConfirmedExit())
 
		{
 
			a.RetVal = true;
 
			Application.Quit();
 
		}
 
		else
 
		{
 
			a.RetVal = false;
 
		}
 
	}
 
	
 
	bool IsPapyTexture(byte r, byte g, byte b)
 
	{
 
		return ((r > 0xD0) && (g > 0xC8) && (b > 0xA0)) &&
 
				((r < 0xF4) && (g < 0xE0) && (b < 0xC4));
 
	}
 
	
 
	unsafe bool CaptureReactionColor()
 
	{
 
		// Take a screenshot.
 
		byte r, g, b;
 
		int pixelStart, otherPixelStart;
 
		bool colorMatch;
 
		Gdk.Image rootImage = rootWindow.GetImage(0, 0, screenWidth, screenHeight);
 
		screenBuffer.GetFromImage(rootImage, rootImage.Colormap, 0, 0, 0, 0, screenWidth, screenHeight);
 
		//screenBuffer.GetFromDrawable(rootWindow,
 
		//	rootWindow.Colormap, 0, 0, 0, 0, screenWidth, screenHeight);
 
		int stride = screenBuffer.Rowstride;
 
		byte* pixBytes = (byte*)screenBuffer.Pixels;
 
	
 
		for (int x = 0; x < screenWidth - colorBarWidth; ++x)
 
		{
 
			for (int y = 0; y < (screenHeight - 53); ++y)
 
			{
 
				// Look for the color swatch.
 
				pixelStart = (y * stride) + (x * 3);
 
				r = pixBytes[pixelStart];
 
				g = pixBytes[pixelStart + 1];
 
				b = pixBytes[pixelStart + 2];
 
				
 
				// 1.) Check if this is a dark pixel.
 
				if ((r < 0x46) && (g < 0x46) && (b < 0x46))
 
				{
 
					// 2.) Check the pixel above it,
 
					// to see if it's from the papy texture.
 
					otherPixelStart = pixelStart - stride;
 
					if ((otherPixelStart >= 0) &&
 
					    IsPapyTexture(pixBytes[otherPixelStart++],
 
					                   pixBytes[otherPixelStart++],
 
					                   pixBytes[otherPixelStart]))
 
					{
 
						// 3.) Check the pixel below where the swatch should be,
 
						// to see if it's also from the papy texture.
 
						otherPixelStart = pixelStart + (stride * swatchHeight);
 
						if (IsPapyTexture(pixBytes[otherPixelStart++],
 
					                   pixBytes[otherPixelStart++],
 
					                   pixBytes[otherPixelStart]))
 
						{
 
							// pixBytes[pixelStart] = 0xFF;
 
							// pixBytes[pixelStart + 1] = 0x00;
 
							// pixBytes[pixelStart + 2] = 0xFF;
 
							
 
							// 4.) Scan the left border of the potential swatch
 
							// location.
 
							colorMatch = true;
 
							for (int i = 1; i < swatchHeight - 2; ++i)
 
							{
 
								otherPixelStart = pixelStart + (stride * i);
 
								if ((Math.Abs(r - pixBytes[otherPixelStart++]) > colorTolerance) ||
 
								    (Math.Abs(g - pixBytes[otherPixelStart++]) > colorTolerance) ||
 
								    (Math.Abs(b - pixBytes[otherPixelStart]) > colorTolerance))
 
								{
 
									colorMatch = false;
 
									break;
 
								}
 
							}
 
							
 
							if (colorMatch)
 
							{
 
								// WE FOUND THE SWATCH!
 
								// Now we know where the color bars are.
 
								otherPixelStart = pixelStart + (redBarSpacing * stride);
 
								int pixelCount = 0;
 
								while ((pixBytes[otherPixelStart] > 0x9F) &&
 
								       (pixBytes[otherPixelStart + 1] < 0x62) &&
 
								       (pixBytes[otherPixelStart + 2]  < 0x62))
 
								{
 
									pixelCount++;
 
									// pixBytes[otherPixelStart] = 0x00;
 
									// pixBytes[otherPixelStart + 1] = 0xFF;
 
									// pixBytes[otherPixelStart + 2] = 0xFF;
 
									otherPixelStart += 3;
 
								}
 
									
 
								reactedColor.Red = (byte)Math.Round((float)pixelCount * 255f / (float)colorBarWidth);
 
								otherPixelStart = pixelStart + (greenBarSpacing * stride);
 
								
 
								pixelCount = 0;
 
								while ((pixBytes[otherPixelStart] < 0x62) &&
 
								       (pixBytes[otherPixelStart + 1] > 0x9F) &&
 
								       (pixBytes[otherPixelStart + 2] < 0x62))
 
								{
 
									pixelCount++;
 
									// pixBytes[otherPixelStart] = 0x00;
 
									// pixBytes[otherPixelStart + 1] = 0xFF;
 
									// pixBytes[otherPixelStart + 2] = 0xFF;
 
									otherPixelStart += 3;
 
								}
 

	
 
								reactedColor.Green = (byte)Math.Round((float)pixelCount * 255f / (float)colorBarWidth);
 
								otherPixelStart = pixelStart + (blueBarSpacing * stride);
 
								
 
								pixelCount = 0;
 
								while ((pixBytes[otherPixelStart] < 0x62) &&
 
									(pixBytes[otherPixelStart + 1] < 0x62) &&
 
									(pixBytes[otherPixelStart + 2] > 0x9F))
 
								{
 
									pixelCount++;
 
									// pixBytes[otherPixelStart] = 0x00;
 
									// pixBytes[otherPixelStart + 1] = 0xFF;
 
									// pixBytes[otherPixelStart + 2] = 0xFF;
 
									otherPixelStart += 3;
 
								}
 

	
 
								reactedColor.Blue = (byte)Math.Round((float)pixelCount * 255f / (float)colorBarWidth);
 
								
 
								// write out the screenshot
 
								//screenBuffer.Save("screenshot.png", "png");
 
								return true;
 
							}
 
						}
 
					}
 
				}
 
			}
 
		}
 
        //screenBuffer.Save("screenshot.png", "png");
 
		
 
		return false;
 
		
 
	}
 
	
 
    protected virtual void OnDebugScreenshot(object sender, System.EventArgs e)
 
    {
 
        Gdk.Image rootImage = rootWindow.GetImage(0, 0, screenWidth, screenHeight);
 
        screenBuffer.GetFromImage(rootImage, rootImage.Colormap, 0, 0, 0, 0, screenWidth, screenHeight);
 
        string screenshotDir = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
 
        string filename;
 
        int i = 0;
 
        do
 
        {
 
            ++i;
 
            filename = System.IO.Path.Combine(screenshotDir, String.Format("DesertPaintLab_{0}.png", i));
 
        } while (System.IO.File.Exists(filename));
 
        screenBuffer.Save(filename, "png");
 
    }
 

	
 
	protected virtual void OnCaptureButton(object sender, System.EventArgs e)
 
	{
 
		if (CaptureReactionColor())
 
		{
 
			string warning = "";
 
			if (reactedColor.Red == 0)
 
			{
 
				warning = warning + "\nRed is too low.";
 
			}
 
			if (reactedColor.Green == 0)
 
			{
 
				warning = warning + "\nGreen is too low.";	
 
			}
 
			if (reactedColor.Blue == 0)
 
			{
 
				warning = warning + "\nBlue is too low.";	
 
			}
 
			if (reactedColor.Red == 255)
 
			{
 
				warning = warning + "\nRed is too high.";
 
			}
 
			if (reactedColor.Green == 255)
 
			{
 
				warning = warning + "\nGreen is too high.";	
 
			}
 
			if (reactedColor.Blue == 255)
 
			{
 
				warning = warning + "\nBlue is too high.";	
 
			}
 
			
 
			if (warning.Length != 0)
 
			{
 
				MessageDialog md = new MessageDialog(this, 
 
	            DialogFlags.DestroyWithParent,
 
	            MessageType.Error, ButtonsType.Ok, 
 
	            "Reaction clipped.  You will need to do a " +
 
	            "3-way reaction to test this pair.  Details: " +
 
	            warning);
 
	   
 
				md.Run();
 
				md.Destroy();
 
			}
 
			else
 
			{
 
				this.reactionSwatch.Color = reactedColor;
 
				saveButton.Sensitive = true;
 
			}
 
		}
 
		else
 
		{
 
			MessageDialog md = new MessageDialog(this, 
 
	            DialogFlags.DestroyWithParent,
 
	            MessageType.Error, ButtonsType.Ok, 
 
	            "Pigment Lab dialog box NOT FOUND.  Please ensure " +
 
	            "that there is an unobstructed view of the dialog " +
 
	            "when you press the Capture button.");
 
	   
 
			md.Run();
 
			md.Destroy();	
 
		}
 
	}
 
	
 
	protected virtual void OnSaveButton(object sender, System.EventArgs e)
 
	{
 
		int r, g, b;
 
		if (reagent3 != null)
 
		{
 
			// A 3-reagent reaction.
 
			Reaction reaction1 = profile.FindReaction(reagent1, reagent2);
 
			Reaction reaction2 = profile.FindReaction(reagent1, reagent3);
 
			Reaction reaction3 = profile.FindReaction(reagent2, reagent3);
 
			
 
			r = reactedColor.Red - expectedColor.Red;
 
			g = reactedColor.Green - expectedColor.Green;
 
			b = reactedColor.Blue - expectedColor.Blue;
 
			
 
			if (reaction2 == null)
 
			{
 
				r = r - reaction1.Red - reaction3.Red;
 
				g = g - reaction1.Green - reaction3.Green;
 
				b = b - reaction1.Blue - reaction3.Blue;
 
				profile.SetReaction(reagent1, reagent3, new Reaction(r, g, b));
 
				profile.Save();
 
				saveButton.Sensitive = false;
 
			}
 
			else if (reaction3 == null)
 
			{
 
				r = r - reaction1.Red - reaction2.Red;
 
				g = g - reaction1.Green - reaction2.Green;
 
				b = b - reaction1.Blue - reaction2.Blue;
 
				profile.SetReaction(reagent2, reagent3, new Reaction(r, g, b));
 
				profile.Save();
 
				saveButton.Sensitive = false;
 
			}	
 
		}
 
		else if ((reagent1 != null) && (reagent2 != null))
 
		{
 
			// A 2-reagent reaction.
 
			r = reactedColor.Red - expectedColor.Red;
 
			g = reactedColor.Green - expectedColor.Green;
 
			b = reactedColor.Blue - expectedColor.Blue;
 
			profile.SetReaction(reagent1, reagent2, new Reaction(r, g, b));
 
			profile.Save();
 
			saveButton.Sensitive = false;
 
		}
 
	}
 
	
 
	protected virtual void OnChangedIngredient1(object sender, System.EventArgs e)
 
	{
 
		UpdateIngredients();
 
	}
 
	
 
	protected virtual void OnChangedIngredient2(object sender, System.EventArgs e)
 
	{
 
		UpdateIngredients();
 
	}
 
	
 
	protected virtual void OnChangedIngredient3(object sender, System.EventArgs e)
 
	{
 
		UpdateIngredients();
 

	
 
	}
 
	
 
	protected virtual void OnNewProfile(object sender, System.EventArgs e)
 
	{
 
		if (unsavedData)
 
		{
 
			MessageDialog md = new MessageDialog(this, 
 
	            DialogFlags.DestroyWithParent,
 
	            MessageType.Warning, ButtonsType.OkCancel, 
 
	            "Your last reaction was unsaved." +
 
	            "Are you sure you want to lose your changes?");
 
	   
 
			ResponseType resp = (ResponseType)md.Run();
 
			md.Destroy();
 
			if (resp != ResponseType.Ok)
 
			{
 
				return;	
 
			}
 
		}
 
		
 
		if (NewProfile())
 
		{
 
			profile.Load();
 
			PopulateDropDowns();
 
		}
 
	}
 
	
 
	protected virtual void OnOpenProfile(object sender, System.EventArgs e)
 
	{
 
		bool profileSelected = false;
 
		SelectProfileDialog selectProfileDialog = new SelectProfileDialog();
 
		selectProfileDialog.ProfileList = profileList;
 
		ResponseType resp = (ResponseType)selectProfileDialog.Run();
 
		selectProfileDialog.Destroy();
 
		if (resp == ResponseType.Ok) // Selected a profile.
 
		{
 
			SetProfileName(selectProfileDialog.SelectedProfile);
 
			profileSelected = true;
 
		}
 
		else if (resp == ResponseType.Accept) // New profile.
 
		{
 
			profileSelected = NewProfile();
 
		}
 
		if (profileSelected)
 
		{
 
			profile.Load();
 
			PopulateDropDowns();
 
		}
 
	}
 
	
 
	protected virtual void OnAbout(object sender, System.EventArgs e)
 
	{
 
		AboutDialog aboutDialog = new AboutDialog();
 
		aboutDialog.Run();
 
		aboutDialog.Destroy();
 
	}
 
	
 
	protected virtual void OnMenuExit (object sender, System.EventArgs e)
 
	{
 
		if (ConfirmedExit())
 
		{
 
			Application.Quit();
 
		}
 
	}
 
	
 
	protected virtual void OnExport(object sender, System.EventArgs e)
 
	{
 
		FileChooserDialog fileDialog =
 
			new FileChooserDialog("Select destination file.",
 
				    this, FileChooserAction.Save,
 
			        Gtk.Stock.Cancel, ResponseType.Cancel,
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 = "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 = "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 = "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 = "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 ();
 
		}
 
	}
 
}
 

	
 
// 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 = "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 = "Since this is your first time using this program, you need a new profile.\n\nYou can 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 = "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 = "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 = "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 = "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 ();
 
		}
 
	}
 
}
 

	
 
// 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 = "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 = "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 = "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 = "???, ???, ???";
 
			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 ();
 
		}
 
	}
 
}
 

	
 
// 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 = "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 = "???, ???, ???";
 
			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.ScreenCheckDialog.cs
Show inline comments
 

 
// This file has been generated by the GUI designer. Do not modify.
 
namespace DesertPaintLab
 
{
 
	public partial class ScreenCheckDialog
 
	{
 
		private global::Gtk.VBox vbox2;
 
		
 
		private global::Gtk.HBox hbox1;
 
		
 
		private global::Gtk.Label label1;
 
		
 
		private global::Gtk.Entry screenWidthEntry;
 
		
 
		private global::Gtk.Entry screenHeightEntry;
 
		
 
		private global::Gtk.HBox hbox2;
 
		
 
		private global::Gtk.Label label2;
 
		
 
		private global::Gtk.Entry gamePixelWidthEntry;
 
		
 
		private global::Gtk.Button buttonOk;
 

 
		protected virtual void Build ()
 
		{
 
			global::Stetic.Gui.Initialize (this);
 
			// Widget DesertPaintLab.ScreenCheckDialog
 
			this.Name = "DesertPaintLab.ScreenCheckDialog";
 
			this.Title = "Screen Check";
 
			this.WindowPosition = ((global::Gtk.WindowPosition)(4));
 
			this.Modal = true;
 
			this.BorderWidth = ((uint)(9));
 
			// Internal child DesertPaintLab.ScreenCheckDialog.VBox
 
			global::Gtk.VBox w1 = this.VBox;
 
			w1.Name = "dialog1_VBox";
 
			// Container child dialog1_VBox.Gtk.Box+BoxChild
 
			this.vbox2 = new global::Gtk.VBox ();
 
			this.vbox2.Name = "vbox2";
 
			this.vbox2.Spacing = 20;
 
			this.vbox2.BorderWidth = ((uint)(20));
 
			// Container child vbox2.Gtk.Box+BoxChild
 
			this.hbox1 = new global::Gtk.HBox ();
 
			this.hbox1.Name = "hbox1";
 
			this.hbox1.Spacing = 20;
 
			this.hbox1.BorderWidth = ((uint)(10));
 
			// Container child hbox1.Gtk.Box+BoxChild
 
			this.label1 = new global::Gtk.Label ();
 
			this.label1.Name = "label1";
 
			this.label1.LabelProp = "Screen Resolution";
 
			this.hbox1.Add (this.label1);
 
			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.label1]));
 
			w2.Position = 0;
 
			w2.Expand = false;
 
			w2.Fill = false;
 
			// Container child hbox1.Gtk.Box+BoxChild
 
			this.screenWidthEntry = new global::Gtk.Entry ();
 
			this.screenWidthEntry.WidthRequest = 50;
 
			this.screenWidthEntry.CanFocus = true;
 
			this.screenWidthEntry.Name = "screenWidthEntry";
 
			this.screenWidthEntry.IsEditable = true;
 
			this.screenWidthEntry.InvisibleChar = '●';
 
			this.hbox1.Add (this.screenWidthEntry);
 
			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.screenWidthEntry]));
 
			w3.Position = 1;
 
			// Container child hbox1.Gtk.Box+BoxChild
 
			this.screenHeightEntry = new global::Gtk.Entry ();
 
			this.screenHeightEntry.WidthRequest = 50;
 
			this.screenHeightEntry.CanFocus = true;
 
			this.screenHeightEntry.Name = "screenHeightEntry";
 
			this.screenHeightEntry.IsEditable = true;
 
			this.screenHeightEntry.InvisibleChar = '●';
 
			this.hbox1.Add (this.screenHeightEntry);
 
			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.screenHeightEntry]));
 
			w4.Position = 2;
 
			this.vbox2.Add (this.hbox1);
 
			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox1]));
 
			w5.Position = 0;
 
			w5.Expand = false;
 
			w5.Fill = false;
 
			// Container child vbox2.Gtk.Box+BoxChild
 
			this.hbox2 = new global::Gtk.HBox ();
 
			this.hbox2.Name = "hbox2";
 
			this.hbox2.Spacing = 20;
 
			this.hbox2.BorderWidth = ((uint)(10));
 
			// Container child hbox2.Gtk.Box+BoxChild
 
			this.label2 = new global::Gtk.Label ();
 
			this.label2.Name = "label2";
 
			this.label2.LabelProp = "Game Pixel Width in Screen Pixels";
 
			this.hbox2.Add (this.label2);
 
			global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.label2]));
 
			w6.Position = 0;
 
			w6.Expand = false;
 
			w6.Fill = false;
 
			// Container child hbox2.Gtk.Box+BoxChild
 
			this.gamePixelWidthEntry = new global::Gtk.Entry ();
 
			this.gamePixelWidthEntry.WidthRequest = 50;
 
			this.gamePixelWidthEntry.CanFocus = true;
 
			this.gamePixelWidthEntry.Name = "gamePixelWidthEntry";
 
			this.gamePixelWidthEntry.IsEditable = true;
 
			this.gamePixelWidthEntry.InvisibleChar = '●';
 
			this.hbox2.Add (this.gamePixelWidthEntry);
 
			global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.gamePixelWidthEntry]));
 
			w7.Position = 1;
 
			w7.Expand = false;
 
			w7.Fill = false;
 
			this.vbox2.Add (this.hbox2);
 
			global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox2]));
 
			w8.Position = 1;
 
			w8.Expand = false;
 
			w8.Fill = false;
 
			w1.Add (this.vbox2);
 
			global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(w1 [this.vbox2]));
 
			w9.Position = 0;
 
			// Internal child DesertPaintLab.ScreenCheckDialog.ActionArea
 
			global::Gtk.HButtonBox w10 = this.ActionArea;
 
			w10.Name = "dialog1_ActionArea";
 
			w10.Spacing = 10;
 
			w10.BorderWidth = ((uint)(5));
 
			w10.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(4));
 
			// 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 w11 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w10 [this.buttonOk]));
 
			w11.Expand = false;
 
			w11.Fill = false;
 
			if ((this.Child != null)) {
 
				this.Child.ShowAll ();
 
			}
 
			this.DefaultWidth = 378;
 
			this.DefaultHeight = 245;
 
			this.Show ();
 
		}
 
	}
 
}
 

	
 
// This file has been generated by the GUI designer. Do not modify.
 
namespace DesertPaintLab
 
{
 
	public partial class ScreenCheckDialog
 
	{
 
		private global::Gtk.VBox vbox2;
 
		
 
		private global::Gtk.HBox hbox1;
 
		
 
		private global::Gtk.Label label1;
 
		
 
		private global::Gtk.Entry screenWidthEntry;
 
		
 
		private global::Gtk.Entry screenHeightEntry;
 
		
 
		private global::Gtk.HBox hbox2;
 
		
 
		private global::Gtk.Label label2;
 
		
 
		private global::Gtk.Entry gamePixelWidthEntry;
 
		
 
		private global::Gtk.Button buttonOk;
 

	
 
		protected virtual void Build ()
 
		{
 
			global::Stetic.Gui.Initialize (this);
 
			// Widget DesertPaintLab.ScreenCheckDialog
 
			this.Name = "DesertPaintLab.ScreenCheckDialog";
 
			this.Title = "Screen Check";
 
			this.WindowPosition = ((global::Gtk.WindowPosition)(4));
 
			this.Modal = true;
 
			this.BorderWidth = ((uint)(9));
 
			// Internal child DesertPaintLab.ScreenCheckDialog.VBox
 
			global::Gtk.VBox w1 = this.VBox;
 
			w1.Name = "dialog1_VBox";
 
			// Container child dialog1_VBox.Gtk.Box+BoxChild
 
			this.vbox2 = new global::Gtk.VBox ();
 
			this.vbox2.Name = "vbox2";
 
			this.vbox2.Spacing = 20;
 
			this.vbox2.BorderWidth = ((uint)(20));
 
			// Container child vbox2.Gtk.Box+BoxChild
 
			this.hbox1 = new global::Gtk.HBox ();
 
			this.hbox1.Name = "hbox1";
 
			this.hbox1.Spacing = 20;
 
			this.hbox1.BorderWidth = ((uint)(10));
 
			// Container child hbox1.Gtk.Box+BoxChild
 
			this.label1 = new global::Gtk.Label ();
 
			this.label1.Name = "label1";
 
			this.label1.LabelProp = "Screen Resolution";
 
			this.hbox1.Add (this.label1);
 
			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.label1]));
 
			w2.Position = 0;
 
			w2.Expand = false;
 
			w2.Fill = false;
 
			// Container child hbox1.Gtk.Box+BoxChild
 
			this.screenWidthEntry = new global::Gtk.Entry ();
 
			this.screenWidthEntry.WidthRequest = 50;
 
			this.screenWidthEntry.CanFocus = true;
 
			this.screenWidthEntry.Name = "screenWidthEntry";
 
			this.screenWidthEntry.IsEditable = true;
 
			this.screenWidthEntry.InvisibleChar = '●';
 
			this.hbox1.Add (this.screenWidthEntry);
 
			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.screenWidthEntry]));
 
			w3.Position = 1;
 
			// Container child hbox1.Gtk.Box+BoxChild
 
			this.screenHeightEntry = new global::Gtk.Entry ();
 
			this.screenHeightEntry.WidthRequest = 50;
 
			this.screenHeightEntry.CanFocus = true;
 
			this.screenHeightEntry.Name = "screenHeightEntry";
 
			this.screenHeightEntry.IsEditable = true;
 
			this.screenHeightEntry.InvisibleChar = '●';
 
			this.hbox1.Add (this.screenHeightEntry);
 
			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.screenHeightEntry]));
 
			w4.Position = 2;
 
			this.vbox2.Add (this.hbox1);
 
			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox1]));
 
			w5.Position = 0;
 
			w5.Expand = false;
 
			w5.Fill = false;
 
			// Container child vbox2.Gtk.Box+BoxChild
 
			this.hbox2 = new global::Gtk.HBox ();
 
			this.hbox2.Name = "hbox2";
 
			this.hbox2.Spacing = 20;
 
			this.hbox2.BorderWidth = ((uint)(10));
 
			// Container child hbox2.Gtk.Box+BoxChild
 
			this.label2 = new global::Gtk.Label ();
 
			this.label2.Name = "label2";
 
			this.label2.LabelProp = "Game Pixel Width in Screen Pixels";
 
			this.hbox2.Add (this.label2);
 
			global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.label2]));
 
			w6.Position = 0;
 
			w6.Expand = false;
 
			w6.Fill = false;
 
			// Container child hbox2.Gtk.Box+BoxChild
 
			this.gamePixelWidthEntry = new global::Gtk.Entry ();
 
			this.gamePixelWidthEntry.WidthRequest = 50;
 
			this.gamePixelWidthEntry.CanFocus = true;
 
			this.gamePixelWidthEntry.Name = "gamePixelWidthEntry";
 
			this.gamePixelWidthEntry.IsEditable = true;
 
			this.gamePixelWidthEntry.InvisibleChar = '●';
 
			this.hbox2.Add (this.gamePixelWidthEntry);
 
			global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.gamePixelWidthEntry]));
 
			w7.Position = 1;
 
			w7.Expand = false;
 
			w7.Fill = false;
 
			this.vbox2.Add (this.hbox2);
 
			global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox2]));
 
			w8.Position = 1;
 
			w8.Expand = false;
 
			w8.Fill = false;
 
			w1.Add (this.vbox2);
 
			global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(w1 [this.vbox2]));
 
			w9.Position = 0;
 
			// Internal child DesertPaintLab.ScreenCheckDialog.ActionArea
 
			global::Gtk.HButtonBox w10 = this.ActionArea;
 
			w10.Name = "dialog1_ActionArea";
 
			w10.Spacing = 10;
 
			w10.BorderWidth = ((uint)(5));
 
			w10.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(4));
 
			// 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 w11 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w10 [this.buttonOk]));
 
			w11.Expand = false;
 
			w11.Fill = false;
 
			if ((this.Child != null)) {
 
				this.Child.ShowAll ();
 
			}
 
			this.DefaultWidth = 378;
 
			this.DefaultHeight = 245;
 
			this.Show ();
 
		}
 
	}
 
}
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 = "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 = "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 = "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);
 
		}
 
	}
 
}
 

	
 
// 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 = "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 = "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 = "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/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", "_File", null, null);
 
		this.FileAction.ShortLabel = "_File";
 
		w1.Add (this.FileAction, "<Alt>f");
 
		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", "_About...", null, null);
 
		this.AboutAction.ShortLabel = "_About...";
 
		w1.Add (this.AboutAction, "<Alt>a");
 
		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", "_Open Profile...", null, null);
 
		this.OpenProfileAction.ShortLabel = "_Open Profile...";
 
		w1.Add (this.OpenProfileAction, "<Alt>o");
 
		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", "Export for _PracticalPaint...", null, null);
 
		this.ExportForPracticalPaintAction.ShortLabel = "Export for _PracticalPaint...";
 
		w1.Add (this.ExportForPracticalPaintAction, null);
 
		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", "_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 = "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.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 = "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 = "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 = "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 = "<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.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 = "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 = "<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.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 = "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 = "<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);
 
	}
 
}
 

	
 
// 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.Action DebugAction;
 
	
 
	private global::Gtk.Action ScreenshotAction;
 
	
 
	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", "_File", null, null);
 
		this.FileAction.ShortLabel = "_File";
 
		w1.Add (this.FileAction, "<Alt>f");
 
		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", "_About...", null, null);
 
		this.AboutAction.ShortLabel = "_About...";
 
		w1.Add (this.AboutAction, "<Alt>a");
 
		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", "_Open Profile...", null, null);
 
		this.OpenProfileAction.ShortLabel = "_Open Profile...";
 
		w1.Add (this.OpenProfileAction, "<Alt>o");
 
		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", "Export for _PracticalPaint...", null, null);
 
		this.ExportForPracticalPaintAction.ShortLabel = "Export for _PracticalPaint...";
 
		w1.Add (this.ExportForPracticalPaintAction, null);
 
		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", "_Run Simulator", null, null);
 
		this.RunSimulatorAction.ShortLabel = "_Run Simulator";
 
		w1.Add (this.RunSimulatorAction, null);
 
		this.DebugAction = new global::Gtk.Action ("DebugAction", "Debug", null, null);
 
		this.DebugAction.ShortLabel = "Debug";
 
		w1.Add (this.DebugAction, null);
 
		this.ScreenshotAction = new global::Gtk.Action ("ScreenshotAction", "Screenshot", null, null);
 
		this.ScreenshotAction.ShortLabel = "Screenshot";
 
		w1.Add (this.ScreenshotAction, null);
 
		this.UIManager.InsertActionGroup (w1, 0);
 
		this.AddAccelGroup (this.UIManager.AccelGroup);
 
		this.Name = "MainWindow";
 
		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><menu name='DebugAction' action='DebugAction'><menuitem name='ScreenshotAction' action='ScreenshotAction'/></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.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 = "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 = "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 = "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 = "<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.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 = "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 = "<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.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 = "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 = "<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.ScreenshotAction.Activated += new global::System.EventHandler (this.OnDebugScreenshot);
 
		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;
 

 
		internal static void Initialize (Gtk.Widget iconRenderer)
 
		{
 
			if ((Stetic.Gui.initialized == false)) {
 
				Stetic.Gui.initialized = true;
 
			}
 
		}
 
	}
 

 
	internal class BinContainer
 
	{
 
		private Gtk.Widget child;
 
		
 
		private Gtk.UIManager uimanager;
 

 
		public static BinContainer Attach (Gtk.Bin bin)
 
		{
 
			BinContainer bc = new BinContainer ();
 
			bin.SizeRequested += new Gtk.SizeRequestedHandler (bc.OnSizeRequested);
 
			bin.SizeAllocated += new Gtk.SizeAllocatedHandler (bc.OnSizeAllocated);
 
			bin.Added += new Gtk.AddedHandler (bc.OnAdded);
 
			return bc;
 
		}
 

 
		private void OnSizeRequested (object sender, Gtk.SizeRequestedArgs args)
 
		{
 
			if ((this.child != null)) {
 
				args.Requisition = this.child.SizeRequest ();
 
			}
 
		}
 

 
		private void OnSizeAllocated (object sender, Gtk.SizeAllocatedArgs args)
 
		{
 
			if ((this.child != null)) {
 
				this.child.Allocation = args.Allocation;
 
			}
 
		}
 

 
		private void OnAdded (object sender, Gtk.AddedArgs args)
 
		{
 
			this.child = args.Widget;
 
		}
 

 
		public void SetUiManager (Gtk.UIManager uim)
 
		{
 
			this.uimanager = uim;
 
			this.child.Realized += new System.EventHandler (this.OnRealized);
 
		}
 

 
		private void OnRealized (object sender, System.EventArgs args)
 
		{
 
			if ((this.uimanager != null)) {
 
				Gtk.Widget w;
 
				w = this.child.Toplevel;
 
				if (((w != null)
 
				    && typeof(Gtk.Window).IsInstanceOfType (w))) {
 
					((Gtk.Window)(w)).AddAccelGroup (this.uimanager.AccelGroup);
 
					this.uimanager = null;
 
				}
 
			}
 
		}
 
	}
 

 
	internal class IconLoader
 
	{
 
		public static Gdk.Pixbuf LoadIcon (Gtk.Widget widget, string name, Gtk.IconSize size)
 
		{
 
			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)));
 
						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;
 
		}
 
	}
 
}
 

	
 
// 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 BinContainer
 
	{
 
		private Gtk.Widget child;
 
		
 
		private Gtk.UIManager uimanager;
 

	
 
		public static BinContainer Attach (Gtk.Bin bin)
 
		{
 
			BinContainer bc = new BinContainer ();
 
			bin.SizeRequested += new Gtk.SizeRequestedHandler (bc.OnSizeRequested);
 
			bin.SizeAllocated += new Gtk.SizeAllocatedHandler (bc.OnSizeAllocated);
 
			bin.Added += new Gtk.AddedHandler (bc.OnAdded);
 
			return bc;
 
		}
 

	
 
		private void OnSizeRequested (object sender, Gtk.SizeRequestedArgs args)
 
		{
 
			if ((this.child != null)) {
 
				args.Requisition = this.child.SizeRequest ();
 
			}
 
		}
 

	
 
		private void OnSizeAllocated (object sender, Gtk.SizeAllocatedArgs args)
 
		{
 
			if ((this.child != null)) {
 
				this.child.Allocation = args.Allocation;
 
			}
 
		}
 

	
 
		private void OnAdded (object sender, Gtk.AddedArgs args)
 
		{
 
			this.child = args.Widget;
 
		}
 

	
 
		public void SetUiManager (Gtk.UIManager uim)
 
		{
 
			this.uimanager = uim;
 
			this.child.Realized += new System.EventHandler (this.OnRealized);
 
		}
 

	
 
		private void OnRealized (object sender, System.EventArgs args)
 
		{
 
			if ((this.uimanager != null)) {
 
				Gtk.Widget w;
 
				w = this.child.Toplevel;
 
				if (((w != null)
 
				    && typeof(Gtk.Window).IsInstanceOfType (w))) {
 
					((Gtk.Window)(w)).AddAccelGroup (this.uimanager.AccelGroup);
 
					this.uimanager = null;
 
				}
 
			}
 
		}
 
	}
 

	
 
	internal class IconLoader
 
	{
 
		public static Gdk.Pixbuf LoadIcon (Gtk.Widget widget, string name, Gtk.IconSize size)
 
		{
 
			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)));
 
						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" />
 
  </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 id="DebugAction">
 
        <property name="Type">Action</property>
 
        <property name="Label" translatable="yes">Debug</property>
 
        <property name="ShortLabel" translatable="yes">Debug</property>
 
      </action>
 
      <action id="ScreenshotAction">
 
        <property name="Type">Action</property>
 
        <property name="Label" translatable="yes">Screenshot</property>
 
        <property name="ShortLabel" translatable="yes">Screenshot</property>
 
        <signal name="Activated" handler="OnDebugScreenshot" />
 
      </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 type="Menu" action="DebugAction">
 
                <node type="Menuitem" action="ScreenshotAction" />
 
              </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>
 
                    <child>
 
                      <widget class="Gtk.VBox" id="vbox4">
 
                        <property name="MemberName" />
 
                        <property name="WidthRequest">120</property>
 
                        <property name="Spacing">6</property>
 
                        <child>
 
                          <widget class="DesertPaintLab.PaintSwatch" id="unmodifiedSwatch">
 
                            <property name="MemberName" />
 
                            <property name="Events">ButtonPressMask</property>
 
                          </widget>
 
                          <packing>
 
                            <property name="Position">0</property>
 
                            <property name="AutoSize">True</property>
 
                          </packing>
 
                        </child>
 
                        <child>
 
                          <widget class="Gtk.Button" id="captureButton">
 
                            <property name="MemberName" />
 
                            <property name="WidthRequest">100</property>
 
                            <property name="CanFocus">True</property>
 
                            <property name="Type">TextOnly</property>
0 comments (0 inline, 0 general)