#pragma once
#include "Life.h"
#include "PrefDialog.h"
#include "AboutDlg.h"
#include "HelpDlg.h"

namespace LifeSim {

	using namespace System;
	using namespace System::ComponentModel;
	using namespace System::Collections;
	using namespace System::Windows::Forms;
	using namespace System::Data;
	using namespace System::Drawing;

	/// <summary>
	/// Summary for Form1
	///
	/// WARNING: If you change the name of this class, you will need to change the
	///          'Resource File Name' property for the managed resource compiler tool
	///          associated with all .resx files this class depends on.  Otherwise,
	///          the designers will not be able to interact properly with localized
	///          resources associated with this form.
	/// </summary>
	public ref class Form1 : public System::Windows::Forms::Form
	{
	public:
		Form1(void)
		{
			InitializeComponent();
			//
			//TODO: Add the constructor code here
			//
		}

	protected:
		/// <summary>
		/// Clean up any resources being used.
		/// </summary>
		~Form1()
		{
			if (components)
			{
				delete components;
			}
		}
	private: System::Windows::Forms::StatusStrip^  statusStrip;
	private: System::Windows::Forms::ToolStrip^  toolStrip;
	private: System::Windows::Forms::TabControl^  tabControl;
	protected: 

	protected: 


	private: System::Windows::Forms::TabPage^  tabPage1;

	private: System::Windows::Forms::Panel^  panel2;




	private: System::Windows::Forms::Timer^  animTimer;

	private: System::Windows::Forms::Button^  startButton;
	private: System::ComponentModel::IContainer^  components;


	private: System::Windows::Forms::ToolStripProgressBar^  progressBar;
	private: System::Windows::Forms::ToolStripStatusLabel^  status;
	private: System::Windows::Forms::Label^  patternText;



	private: System::Windows::Forms::TabPage^  tabPage3;







	private: System::Windows::Forms::Button^  saveButton;
	private: System::Windows::Forms::Button^  loadButton;
	private: System::Windows::Forms::TextBox^  jumpBox;
	private: System::Windows::Forms::Button^  jumpButton;






	private: System::Windows::Forms::ToolStripStatusLabel^  error;

	private: System::Windows::Forms::Label^  label6;
	private: System::Windows::Forms::NumericUpDown^  gensPerFrameBox;



	private: System::Windows::Forms::TabPage^  tabPage4;






	private: System::Windows::Forms::Label^  label9;


	private: System::Windows::Forms::Label^  label17;
	private: System::Windows::Forms::Label^  label14;
	private: System::Windows::Forms::Label^  label15;


	private: System::Windows::Forms::Label^  label8;
	private: System::Windows::Forms::Label^  label5;

	private: System::Windows::Forms::Label^  label18;

	private: System::Windows::Forms::Label^  label22;
	private: System::Windows::Forms::Label^  label21;



	private: System::Windows::Forms::Label^  label25;
	private: System::Windows::Forms::Label^  label27;
	private: System::Windows::Forms::Label^  label26;
	private: System::Windows::Forms::Label^  label28;
private: System::Windows::Forms::Label^  label29;
private: System::Windows::Forms::Label^  label30;
private: System::Windows::Forms::Splitter^  splitter1;
private: System::Windows::Forms::Panel^  picturePanelOld;


private: System::Windows::Forms::VScrollBar^  vPicScroll;

private: System::Windows::Forms::HScrollBar^  hPicScroll;







private: System::Windows::Forms::TabPage^  tabPage6;
private: System::Windows::Forms::Label^  label32;
private: System::Windows::Forms::ToolStripDropDownButton^  toolStripDropDownButton;
private: System::Windows::Forms::ToolStripMenuItem^  controlPanelEnable;
private: System::Windows::Forms::ToolStripMenuItem^  taskStripEnable;











private: System::Windows::Forms::Label^  label34;
private: System::Windows::Forms::Label^  zoomText;

private: System::Windows::Forms::GroupBox^  groupBox1;
private: System::Windows::Forms::Label^  generationText;
private: System::Windows::Forms::Label^  positionText;


private: System::Windows::Forms::Label^  populationText;
private: System::Windows::Forms::ToolStripMenuItem^  fullScreenToolStripMenuItem;
private: System::Windows::Forms::TreeView^  patternView;
private: System::Windows::Forms::ToolStripStatusLabel^  url;
private: System::Windows::Forms::Label^  label33;
private: System::Windows::Forms::PictureBox^  picturePanel;








private: System::Windows::Forms::CheckBox^  hashBox;

private: System::Windows::Forms::Splitter^  splitter2;
private: System::Windows::Forms::Panel^  panel1;
private: System::Windows::Forms::GroupBox^  groupBox2;
private: System::Windows::Forms::Label^  zeroGenCutoffText;


private: System::Windows::Forms::Label^  reusedAnswerText;

private: System::Windows::Forms::Label^  expandText;

private: System::Windows::Forms::Label^  tileComputeText;


private: System::Windows::Forms::Label^  foundNodeText;

private: System::Windows::Forms::Label^  missedNodeText;
private: System::Windows::Forms::Label^  zeroDrawCutoffText;


private: System::Windows::Forms::Label^  totalNodeText;
private: System::Windows::Forms::Label^  label10;
private: System::Windows::Forms::Label^  label23;
private: System::Windows::Forms::ToolTip^  toolTip1;

private: System::Windows::Forms::ColorDialog^  colorDialog;














	private:
		/// <summary>
		/// Required designer variable.
		/// </summary>

		Bitmap ^ image_; // main screen image
		PrefDialog::Preferences preferences_;


private: System::Windows::Forms::ToolStripButton^  goButton;



private: System::Windows::Forms::RichTextBox^  infoBox;
private: System::Windows::Forms::ToolStripDropDownButton^  toolStripDropDownButton1;
private: System::Windows::Forms::ToolStripMenuItem^  helpButton;
private: System::Windows::Forms::ToolStripMenuItem^  aboutButton;




private: System::Windows::Forms::ToolStripDropDownButton^  toolStripDropDownButton2;
private: System::Windows::Forms::ToolStripMenuItem^  loadFile;
private: System::Windows::Forms::ToolStripMenuItem^  saveFileAs;
private: System::Windows::Forms::Label^  label3;
private: System::Windows::Forms::GroupBox^  groupBox4;
private: System::Windows::Forms::ToolStripSeparator^  toolStripSeparator1;
private: System::Windows::Forms::ToolStripButton^  hyperToolButton;
private: System::Windows::Forms::ToolStripSeparator^  toolStripSeparator2;
private: System::Windows::Forms::ToolStripSeparator^  toolStripSeparator3;
private: System::Windows::Forms::ToolStripMenuItem^  prefToolButton;
private: System::Windows::Forms::Button^  prefButton;
private: System::Windows::Forms::ToolStripMenuItem^  exitButton;
private: System::Windows::Forms::Label^  label1;
private: System::Windows::Forms::Label^  label24;



#pragma region Windows Form Designer generated code
		/// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		void InitializeComponent(void)
		{
		this->components = (gcnew System::ComponentModel::Container());
		System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(Form1::typeid));
		this->statusStrip = (gcnew System::Windows::Forms::StatusStrip());
		this->progressBar = (gcnew System::Windows::Forms::ToolStripProgressBar());
		this->status = (gcnew System::Windows::Forms::ToolStripStatusLabel());
		this->error = (gcnew System::Windows::Forms::ToolStripStatusLabel());
		this->toolStripDropDownButton = (gcnew System::Windows::Forms::ToolStripDropDownButton());
		this->controlPanelEnable = (gcnew System::Windows::Forms::ToolStripMenuItem());
		this->taskStripEnable = (gcnew System::Windows::Forms::ToolStripMenuItem());
		this->fullScreenToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
		this->url = (gcnew System::Windows::Forms::ToolStripStatusLabel());
		this->toolStrip = (gcnew System::Windows::Forms::ToolStrip());
		this->toolStripDropDownButton2 = (gcnew System::Windows::Forms::ToolStripDropDownButton());
		this->loadFile = (gcnew System::Windows::Forms::ToolStripMenuItem());
		this->saveFileAs = (gcnew System::Windows::Forms::ToolStripMenuItem());
		this->toolStripSeparator3 = (gcnew System::Windows::Forms::ToolStripSeparator());
		this->prefToolButton = (gcnew System::Windows::Forms::ToolStripMenuItem());
		this->exitButton = (gcnew System::Windows::Forms::ToolStripMenuItem());
		this->toolStripSeparator1 = (gcnew System::Windows::Forms::ToolStripSeparator());
		this->goButton = (gcnew System::Windows::Forms::ToolStripButton());
		this->hyperToolButton = (gcnew System::Windows::Forms::ToolStripButton());
		this->toolStripSeparator2 = (gcnew System::Windows::Forms::ToolStripSeparator());
		this->toolStripDropDownButton1 = (gcnew System::Windows::Forms::ToolStripDropDownButton());
		this->helpButton = (gcnew System::Windows::Forms::ToolStripMenuItem());
		this->aboutButton = (gcnew System::Windows::Forms::ToolStripMenuItem());
		this->tabControl = (gcnew System::Windows::Forms::TabControl());
		this->tabPage1 = (gcnew System::Windows::Forms::TabPage());
		this->panel2 = (gcnew System::Windows::Forms::Panel());
		this->hashBox = (gcnew System::Windows::Forms::CheckBox());
		this->patternView = (gcnew System::Windows::Forms::TreeView());
		this->groupBox1 = (gcnew System::Windows::Forms::GroupBox());
		this->positionText = (gcnew System::Windows::Forms::Label());
		this->generationText = (gcnew System::Windows::Forms::Label());
		this->zoomText = (gcnew System::Windows::Forms::Label());
		this->populationText = (gcnew System::Windows::Forms::Label());
		this->gensPerFrameBox = (gcnew System::Windows::Forms::NumericUpDown());
		this->label6 = (gcnew System::Windows::Forms::Label());
		this->jumpBox = (gcnew System::Windows::Forms::TextBox());
		this->patternText = (gcnew System::Windows::Forms::Label());
		this->jumpButton = (gcnew System::Windows::Forms::Button());
		this->loadButton = (gcnew System::Windows::Forms::Button());
		this->saveButton = (gcnew System::Windows::Forms::Button());
		this->prefButton = (gcnew System::Windows::Forms::Button());
		this->startButton = (gcnew System::Windows::Forms::Button());
		this->tabPage3 = (gcnew System::Windows::Forms::TabPage());
		this->groupBox4 = (gcnew System::Windows::Forms::GroupBox());
		this->infoBox = (gcnew System::Windows::Forms::RichTextBox());
		this->splitter2 = (gcnew System::Windows::Forms::Splitter());
		this->panel1 = (gcnew System::Windows::Forms::Panel());
		this->groupBox2 = (gcnew System::Windows::Forms::GroupBox());
		this->zeroDrawCutoffText = (gcnew System::Windows::Forms::Label());
		this->zeroGenCutoffText = (gcnew System::Windows::Forms::Label());
		this->reusedAnswerText = (gcnew System::Windows::Forms::Label());
		this->expandText = (gcnew System::Windows::Forms::Label());
		this->tileComputeText = (gcnew System::Windows::Forms::Label());
		this->totalNodeText = (gcnew System::Windows::Forms::Label());
		this->foundNodeText = (gcnew System::Windows::Forms::Label());
		this->missedNodeText = (gcnew System::Windows::Forms::Label());
		this->tabPage6 = (gcnew System::Windows::Forms::TabPage());
		this->label32 = (gcnew System::Windows::Forms::Label());
		this->tabPage4 = (gcnew System::Windows::Forms::TabPage());
		this->label18 = (gcnew System::Windows::Forms::Label());
		this->label33 = (gcnew System::Windows::Forms::Label());
		this->label34 = (gcnew System::Windows::Forms::Label());
		this->label25 = (gcnew System::Windows::Forms::Label());
		this->label30 = (gcnew System::Windows::Forms::Label());
		this->label27 = (gcnew System::Windows::Forms::Label());
		this->label26 = (gcnew System::Windows::Forms::Label());
		this->label29 = (gcnew System::Windows::Forms::Label());
		this->label23 = (gcnew System::Windows::Forms::Label());
		this->label28 = (gcnew System::Windows::Forms::Label());
		this->label22 = (gcnew System::Windows::Forms::Label());
		this->label21 = (gcnew System::Windows::Forms::Label());
		this->label9 = (gcnew System::Windows::Forms::Label());
		this->label10 = (gcnew System::Windows::Forms::Label());
		this->label24 = (gcnew System::Windows::Forms::Label());
		this->label3 = (gcnew System::Windows::Forms::Label());
		this->label8 = (gcnew System::Windows::Forms::Label());
		this->label5 = (gcnew System::Windows::Forms::Label());
		this->label17 = (gcnew System::Windows::Forms::Label());
		this->label14 = (gcnew System::Windows::Forms::Label());
		this->label15 = (gcnew System::Windows::Forms::Label());
		this->animTimer = (gcnew System::Windows::Forms::Timer(this->components));
		this->splitter1 = (gcnew System::Windows::Forms::Splitter());
		this->picturePanelOld = (gcnew System::Windows::Forms::Panel());
		this->picturePanel = (gcnew System::Windows::Forms::PictureBox());
		this->vPicScroll = (gcnew System::Windows::Forms::VScrollBar());
		this->hPicScroll = (gcnew System::Windows::Forms::HScrollBar());
		this->toolTip1 = (gcnew System::Windows::Forms::ToolTip(this->components));
		this->colorDialog = (gcnew System::Windows::Forms::ColorDialog());
		this->label1 = (gcnew System::Windows::Forms::Label());
		this->statusStrip->SuspendLayout();
		this->toolStrip->SuspendLayout();
		this->tabControl->SuspendLayout();
		this->tabPage1->SuspendLayout();
		this->panel2->SuspendLayout();
		this->groupBox1->SuspendLayout();
		(cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->gensPerFrameBox))->BeginInit();
		this->tabPage3->SuspendLayout();
		this->groupBox4->SuspendLayout();
		this->panel1->SuspendLayout();
		this->groupBox2->SuspendLayout();
		this->tabPage6->SuspendLayout();
		this->tabPage4->SuspendLayout();
		this->picturePanelOld->SuspendLayout();
		(cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->picturePanel))->BeginInit();
		this->SuspendLayout();
		// 
		// statusStrip
		// 
		this->statusStrip->Items->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^  >(5) {this->progressBar, this->status, 
			this->error, this->toolStripDropDownButton, this->url});
		this->statusStrip->Location = System::Drawing::Point(0, 605);
		this->statusStrip->Name = L"statusStrip";
		this->statusStrip->Size = System::Drawing::Size(939, 22);
		this->statusStrip->TabIndex = 0;
		this->statusStrip->Text = L"statusStrip";
		// 
		// progressBar
		// 
		this->progressBar->Name = L"progressBar";
		this->progressBar->Size = System::Drawing::Size(200, 16);
		// 
		// status
		// 
		this->status->BorderStyle = System::Windows::Forms::Border3DStyle::Adjust;
		this->status->DisplayStyle = System::Windows::Forms::ToolStripItemDisplayStyle::Text;
		this->status->Name = L"status";
		this->status->Size = System::Drawing::Size(283, 17);
		this->status->Spring = true;
		this->status->Text = L"Info";
		// 
		// error
		// 
		this->error->BorderSides = static_cast<System::Windows::Forms::ToolStripStatusLabelBorderSides>((((System::Windows::Forms::ToolStripStatusLabelBorderSides::Left | System::Windows::Forms::ToolStripStatusLabelBorderSides::Top) 
			| System::Windows::Forms::ToolStripStatusLabelBorderSides::Right) 
			| System::Windows::Forms::ToolStripStatusLabelBorderSides::Bottom));
		this->error->BorderStyle = System::Windows::Forms::Border3DStyle::Adjust;
		this->error->DisplayStyle = System::Windows::Forms::ToolStripItemDisplayStyle::Text;
		this->error->Name = L"error";
		this->error->Size = System::Drawing::Size(283, 17);
		this->error->Spring = true;
		// 
		// toolStripDropDownButton
		// 
		this->toolStripDropDownButton->Alignment = System::Windows::Forms::ToolStripItemAlignment::Right;
		this->toolStripDropDownButton->DisplayStyle = System::Windows::Forms::ToolStripItemDisplayStyle::Text;
		this->toolStripDropDownButton->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^  >(3) {this->controlPanelEnable, 
			this->taskStripEnable, this->fullScreenToolStripMenuItem});
		this->toolStripDropDownButton->Image = (cli::safe_cast<System::Drawing::Image^  >(resources->GetObject(L"toolStripDropDownButton.Image")));
		this->toolStripDropDownButton->ImageTransparentColor = System::Drawing::Color::Magenta;
		this->toolStripDropDownButton->Name = L"toolStripDropDownButton";
		this->toolStripDropDownButton->Size = System::Drawing::Size(69, 20);
		this->toolStripDropDownButton->Text = L"Options...";
		// 
		// controlPanelEnable
		// 
		this->controlPanelEnable->Checked = true;
		this->controlPanelEnable->CheckState = System::Windows::Forms::CheckState::Checked;
		this->controlPanelEnable->Name = L"controlPanelEnable";
		this->controlPanelEnable->Size = System::Drawing::Size(177, 22);
		this->controlPanelEnable->Text = L"Control Panel";
		this->controlPanelEnable->Click += gcnew System::EventHandler(this, &Form1::controlPanelEnable_Click);
		// 
		// taskStripEnable
		// 
		this->taskStripEnable->Checked = true;
		this->taskStripEnable->CheckState = System::Windows::Forms::CheckState::Checked;
		this->taskStripEnable->Name = L"taskStripEnable";
		this->taskStripEnable->Size = System::Drawing::Size(177, 22);
		this->taskStripEnable->Text = L"Task Strip";
		this->taskStripEnable->Click += gcnew System::EventHandler(this, &Form1::taskStripEnable_Click);
		// 
		// fullScreenToolStripMenuItem
		// 
		this->fullScreenToolStripMenuItem->Enabled = false;
		this->fullScreenToolStripMenuItem->Name = L"fullScreenToolStripMenuItem";
		this->fullScreenToolStripMenuItem->Size = System::Drawing::Size(177, 22);
		this->fullScreenToolStripMenuItem->Text = L"Full Screen (TODO)";
		// 
		// url
		// 
		this->url->IsLink = true;
		this->url->Name = L"url";
		this->url->Size = System::Drawing::Size(87, 17);
		this->url->Text = L"www.lomont.org";
		this->url->Click += gcnew System::EventHandler(this, &Form1::url_Click);
		// 
		// toolStrip
		// 
		this->toolStrip->Items->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^  >(6) {this->toolStripDropDownButton2, 
			this->toolStripSeparator1, this->goButton, this->hyperToolButton, this->toolStripSeparator2, this->toolStripDropDownButton1});
		this->toolStrip->Location = System::Drawing::Point(0, 0);
		this->toolStrip->Name = L"toolStrip";
		this->toolStrip->Size = System::Drawing::Size(939, 25);
		this->toolStrip->TabIndex = 1;
		this->toolStrip->Text = L"toolStrip1";
		// 
		// toolStripDropDownButton2
		// 
		this->toolStripDropDownButton2->DisplayStyle = System::Windows::Forms::ToolStripItemDisplayStyle::Text;
		this->toolStripDropDownButton2->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^  >(5) {this->loadFile, 
			this->saveFileAs, this->toolStripSeparator3, this->prefToolButton, this->exitButton});
		this->toolStripDropDownButton2->Image = (cli::safe_cast<System::Drawing::Image^  >(resources->GetObject(L"toolStripDropDownButton2.Image")));
		this->toolStripDropDownButton2->ImageTransparentColor = System::Drawing::Color::Magenta;
		this->toolStripDropDownButton2->Name = L"toolStripDropDownButton2";
		this->toolStripDropDownButton2->Size = System::Drawing::Size(36, 22);
		this->toolStripDropDownButton2->Text = L"&File";
		// 
		// loadFile
		// 
		this->loadFile->Name = L"loadFile";
		this->loadFile->Size = System::Drawing::Size(143, 22);
		this->loadFile->Text = L"&Load...";
		this->loadFile->Click += gcnew System::EventHandler(this, &Form1::loadButton_Click);
		// 
		// saveFileAs
		// 
		this->saveFileAs->Name = L"saveFileAs";
		this->saveFileAs->Size = System::Drawing::Size(143, 22);
		this->saveFileAs->Text = L"S&ave As...";
		this->saveFileAs->Click += gcnew System::EventHandler(this, &Form1::saveButton_Click);
		// 
		// toolStripSeparator3
		// 
		this->toolStripSeparator3->Name = L"toolStripSeparator3";
		this->toolStripSeparator3->Size = System::Drawing::Size(140, 6);
		// 
		// prefToolButton
		// 
		this->prefToolButton->Name = L"prefToolButton";
		this->prefToolButton->Size = System::Drawing::Size(143, 22);
		this->prefToolButton->Text = L"&Preferences";
		this->prefToolButton->Click += gcnew System::EventHandler(this, &Form1::prefButton_Click);
		// 
		// exitButton
		// 
		this->exitButton->Name = L"exitButton";
		this->exitButton->Size = System::Drawing::Size(143, 22);
		this->exitButton->Text = L"E&xit";
		this->exitButton->Click += gcnew System::EventHandler(this, &Form1::exitButton_Click);
		// 
		// toolStripSeparator1
		// 
		this->toolStripSeparator1->Name = L"toolStripSeparator1";
		this->toolStripSeparator1->Size = System::Drawing::Size(6, 25);
		// 
		// goButton
		// 
		this->goButton->DisplayStyle = System::Windows::Forms::ToolStripItemDisplayStyle::Text;
		this->goButton->Image = (cli::safe_cast<System::Drawing::Image^  >(resources->GetObject(L"goButton.Image")));
		this->goButton->ImageTransparentColor = System::Drawing::Color::Magenta;
		this->goButton->Name = L"goButton";
		this->goButton->Size = System::Drawing::Size(24, 22);
		this->goButton->Text = L"&Go";
		this->goButton->Click += gcnew System::EventHandler(this, &Form1::startButton_Click);
		// 
		// hyperToolButton
		// 
		this->hyperToolButton->CheckOnClick = true;
		this->hyperToolButton->DisplayStyle = System::Windows::Forms::ToolStripItemDisplayStyle::Text;
		this->hyperToolButton->Image = (cli::safe_cast<System::Drawing::Image^  >(resources->GetObject(L"hyperToolButton.Image")));
		this->hyperToolButton->ImageTransparentColor = System::Drawing::Color::Magenta;
		this->hyperToolButton->Name = L"hyperToolButton";
		this->hyperToolButton->Size = System::Drawing::Size(40, 22);
		this->hyperToolButton->Text = L"H&yper";
		this->hyperToolButton->Click += gcnew System::EventHandler(this, &Form1::hashToolButton_CheckedChanged);
		// 
		// toolStripSeparator2
		// 
		this->toolStripSeparator2->Name = L"toolStripSeparator2";
		this->toolStripSeparator2->Size = System::Drawing::Size(6, 25);
		// 
		// toolStripDropDownButton1
		// 
		this->toolStripDropDownButton1->Alignment = System::Windows::Forms::ToolStripItemAlignment::Right;
		this->toolStripDropDownButton1->DisplayStyle = System::Windows::Forms::ToolStripItemDisplayStyle::Text;
		this->toolStripDropDownButton1->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^  >(2) {this->helpButton, 
			this->aboutButton});
		this->toolStripDropDownButton1->Image = (cli::safe_cast<System::Drawing::Image^  >(resources->GetObject(L"toolStripDropDownButton1.Image")));
		this->toolStripDropDownButton1->ImageTransparentColor = System::Drawing::Color::Magenta;
		this->toolStripDropDownButton1->Name = L"toolStripDropDownButton1";
		this->toolStripDropDownButton1->Size = System::Drawing::Size(41, 22);
		this->toolStripDropDownButton1->Text = L"&Help";
		// 
		// helpButton
		// 
		this->helpButton->Name = L"helpButton";
		this->helpButton->Size = System::Drawing::Size(114, 22);
		this->helpButton->Text = L"&Help";
		this->helpButton->Click += gcnew System::EventHandler(this, &Form1::helpButton_Click);
		// 
		// aboutButton
		// 
		this->aboutButton->Name = L"aboutButton";
		this->aboutButton->Size = System::Drawing::Size(114, 22);
		this->aboutButton->Text = L"&About";
		this->aboutButton->Click += gcnew System::EventHandler(this, &Form1::aboutButton_Click);
		// 
		// tabControl
		// 
		this->tabControl->Controls->Add(this->tabPage1);
		this->tabControl->Controls->Add(this->tabPage3);
		this->tabControl->Controls->Add(this->tabPage6);
		this->tabControl->Controls->Add(this->tabPage4);
		this->tabControl->Dock = System::Windows::Forms::DockStyle::Left;
		this->tabControl->Location = System::Drawing::Point(0, 25);
		this->tabControl->Name = L"tabControl";
		this->tabControl->SelectedIndex = 0;
		this->tabControl->Size = System::Drawing::Size(223, 580);
		this->tabControl->TabIndex = 2;
		// 
		// tabPage1
		// 
		this->tabPage1->Controls->Add(this->panel2);
		this->tabPage1->Location = System::Drawing::Point(4, 22);
		this->tabPage1->Name = L"tabPage1";
		this->tabPage1->Padding = System::Windows::Forms::Padding(3);
		this->tabPage1->Size = System::Drawing::Size(215, 554);
		this->tabPage1->TabIndex = 0;
		this->tabPage1->Text = L"Run";
		this->tabPage1->UseVisualStyleBackColor = true;
		// 
		// panel2
		// 
		this->panel2->Controls->Add(this->hashBox);
		this->panel2->Controls->Add(this->patternView);
		this->panel2->Controls->Add(this->groupBox1);
		this->panel2->Controls->Add(this->gensPerFrameBox);
		this->panel2->Controls->Add(this->label6);
		this->panel2->Controls->Add(this->jumpBox);
		this->panel2->Controls->Add(this->patternText);
		this->panel2->Controls->Add(this->jumpButton);
		this->panel2->Controls->Add(this->loadButton);
		this->panel2->Controls->Add(this->saveButton);
		this->panel2->Controls->Add(this->prefButton);
		this->panel2->Controls->Add(this->startButton);
		this->panel2->Dock = System::Windows::Forms::DockStyle::Fill;
		this->panel2->Location = System::Drawing::Point(3, 3);
		this->panel2->Name = L"panel2";
		this->panel2->Size = System::Drawing::Size(209, 548);
		this->panel2->TabIndex = 2;
		// 
		// hashBox
		// 
		this->hashBox->AutoSize = true;
		this->hashBox->Location = System::Drawing::Point(110, 114);
		this->hashBox->Name = L"hashBox";
		this->hashBox->Size = System::Drawing::Size(86, 17);
		this->hashBox->TabIndex = 14;
		this->hashBox->Text = L"Hyperspeed!";
		this->toolTip1->SetToolTip(this->hashBox, L"Use time compression - jumps ahead many generations");
		this->hashBox->UseVisualStyleBackColor = true;
		this->hashBox->CheckedChanged += gcnew System::EventHandler(this, &Form1::hashBox_CheckedChanged);
		// 
		// patternView
		// 
		this->patternView->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 8.25F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, 
			static_cast<System::Byte>(0)));
		this->patternView->HideSelection = false;
		this->patternView->Indent = 15;
		this->patternView->Location = System::Drawing::Point(9, 139);
		this->patternView->Name = L"patternView";
		this->patternView->Size = System::Drawing::Size(179, 264);
		this->patternView->TabIndex = 6;
		this->toolTip1->SetToolTip(this->patternView, L"Select a pattern to open");
		this->patternView->AfterSelect += gcnew System::Windows::Forms::TreeViewEventHandler(this, &Form1::patternView_AfterSelect);
		this->patternView->MouseLeave += gcnew System::EventHandler(this, &Form1::patternView_MouseLeave);
		// 
		// groupBox1
		// 
		this->groupBox1->Controls->Add(this->positionText);
		this->groupBox1->Controls->Add(this->generationText);
		this->groupBox1->Controls->Add(this->zoomText);
		this->groupBox1->Controls->Add(this->populationText);
		this->groupBox1->Location = System::Drawing::Point(5, 409);
		this->groupBox1->Name = L"groupBox1";
		this->groupBox1->Size = System::Drawing::Size(183, 129);
		this->groupBox1->TabIndex = 2;
		this->groupBox1->TabStop = false;
		this->groupBox1->Text = L"Info";
		// 
		// positionText
		// 
		this->positionText->AutoSize = true;
		this->positionText->Location = System::Drawing::Point(13, 49);
		this->positionText->Name = L"positionText";
		this->positionText->Size = System::Drawing::Size(116, 13);
		this->positionText->TabIndex = 13;
		this->positionText->Text = L"Position (0,0)-(100,100)";
		// 
		// generationText
		// 
		this->generationText->AutoSize = true;
		this->generationText->Location = System::Drawing::Point(13, 97);
		this->generationText->Name = L"generationText";
		this->generationText->Size = System::Drawing::Size(68, 13);
		this->generationText->TabIndex = 13;
		this->generationText->Text = L"Generation 1";
		// 
		// zoomText
		// 
		this->zoomText->AutoSize = true;
		this->zoomText->Location = System::Drawing::Point(13, 25);
		this->zoomText->Name = L"zoomText";
		this->zoomText->Size = System::Drawing::Size(58, 13);
		this->zoomText->TabIndex = 13;
		this->zoomText->Text = L"Zoom 1:16";
		// 
		// populationText
		// 
		this->populationText->AutoSize = true;
		this->populationText->Location = System::Drawing::Point(13, 73);
		this->populationText->Name = L"populationText";
		this->populationText->Size = System::Drawing::Size(66, 13);
		this->populationText->TabIndex = 13;
		this->populationText->Text = L"Population 0";
		// 
		// gensPerFrameBox
		// 
		this->gensPerFrameBox->Location = System::Drawing::Point(110, 36);
		this->gensPerFrameBox->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) {1000, 0, 0, 0});
		this->gensPerFrameBox->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) {1, 0, 0, 0});
		this->gensPerFrameBox->Name = L"gensPerFrameBox";
		this->gensPerFrameBox->Size = System::Drawing::Size(75, 20);
		this->gensPerFrameBox->TabIndex = 1;
		this->gensPerFrameBox->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) {1, 0, 0, 0});
		// 
		// label6
		// 
		this->label6->AutoSize = true;
		this->label6->Location = System::Drawing::Point(8, 37);
		this->label6->Name = L"label6";
		this->label6->Size = System::Drawing::Size(66, 13);
		this->label6->TabIndex = 11;
		this->label6->Text = L"Gens/Frame";
		// 
		// jumpBox
		// 
		this->jumpBox->Location = System::Drawing::Point(110, 58);
		this->jumpBox->Name = L"jumpBox";
		this->jumpBox->Size = System::Drawing::Size(75, 20);
		this->jumpBox->TabIndex = 3;
		this->jumpBox->Text = L"1";
		// 
		// patternText
		// 
		this->patternText->AutoSize = true;
		this->patternText->Location = System::Drawing::Point(10, 123);
		this->patternText->Name = L"patternText";
		this->patternText->Size = System::Drawing::Size(61, 13);
		this->patternText->TabIndex = 3;
		this->patternText->Text = L"Patterns (0)";
		// 
		// jumpButton
		// 
		this->jumpButton->Location = System::Drawing::Point(8, 56);
		this->jumpButton->Name = L"jumpButton";
		this->jumpButton->Size = System::Drawing::Size(75, 23);
		this->jumpButton->TabIndex = 2;
		this->jumpButton->Text = L"Step...";
		this->toolTip1->SetToolTip(this->jumpButton, L"Step over a few frames");
		this->jumpButton->UseVisualStyleBackColor = true;
		this->jumpButton->Click += gcnew System::EventHandler(this, &Form1::jumpButton_Click);
		// 
		// loadButton
		// 
		this->loadButton->Location = System::Drawing::Point(9, 85);
		this->loadButton->Name = L"loadButton";
		this->loadButton->Size = System::Drawing::Size(75, 23);
		this->loadButton->TabIndex = 4;
		this->loadButton->Text = L"Load";
		this->toolTip1->SetToolTip(this->loadButton, L"Load a Pattern or image");
		this->loadButton->UseVisualStyleBackColor = true;
		this->loadButton->Click += gcnew System::EventHandler(this, &Form1::loadButton_Click);
		// 
		// saveButton
		// 
		this->saveButton->Location = System::Drawing::Point(110, 85);
		this->saveButton->Name = L"saveButton";
		this->saveButton->Size = System::Drawing::Size(75, 23);
		this->saveButton->TabIndex = 5;
		this->saveButton->Text = L"Save";
		this->toolTip1->SetToolTip(this->saveButton, L"Saves screenshot, or RLE format");
		this->saveButton->UseVisualStyleBackColor = true;
		this->saveButton->Click += gcnew System::EventHandler(this, &Form1::saveButton_Click);
		// 
		// prefButton
		// 
		this->prefButton->Location = System::Drawing::Point(110, 7);
		this->prefButton->Name = L"prefButton";
		this->prefButton->Size = System::Drawing::Size(75, 23);
		this->prefButton->TabIndex = 0;
		this->prefButton->Text = L"Preferences";
		this->prefButton->UseVisualStyleBackColor = true;
		this->prefButton->Click += gcnew System::EventHandler(this, &Form1::prefButton_Click);
		// 
		// startButton
		// 
		this->startButton->Location = System::Drawing::Point(8, 8);
		this->startButton->Name = L"startButton";
		this->startButton->Size = System::Drawing::Size(75, 23);
		this->startButton->TabIndex = 0;
		this->startButton->Text = L"Start...";
		this->startButton->UseVisualStyleBackColor = true;
		this->startButton->Click += gcnew System::EventHandler(this, &Form1::startButton_Click);
		// 
		// tabPage3
		// 
		this->tabPage3->Controls->Add(this->groupBox4);
		this->tabPage3->Controls->Add(this->splitter2);
		this->tabPage3->Controls->Add(this->panel1);
		this->tabPage3->Location = System::Drawing::Point(4, 22);
		this->tabPage3->Name = L"tabPage3";
		this->tabPage3->Size = System::Drawing::Size(215, 554);
		this->tabPage3->TabIndex = 2;
		this->tabPage3->Text = L"Info";
		this->tabPage3->UseVisualStyleBackColor = true;
		// 
		// groupBox4
		// 
		this->groupBox4->Controls->Add(this->infoBox);
		this->groupBox4->Dock = System::Windows::Forms::DockStyle::Fill;
		this->groupBox4->Location = System::Drawing::Point(0, 0);
		this->groupBox4->Name = L"groupBox4";
		this->groupBox4->Size = System::Drawing::Size(215, 337);
		this->groupBox4->TabIndex = 4;
		this->groupBox4->TabStop = false;
		this->groupBox4->Text = L"Pattern info";
		// 
		// infoBox
		// 
		this->infoBox->Dock = System::Windows::Forms::DockStyle::Fill;
		this->infoBox->Location = System::Drawing::Point(3, 16);
		this->infoBox->Margin = System::Windows::Forms::Padding(2);
		this->infoBox->Name = L"infoBox";
		this->infoBox->Size = System::Drawing::Size(209, 318);
		this->infoBox->TabIndex = 3;
		this->infoBox->Text = L"";
		this->toolTip1->SetToolTip(this->infoBox, L"Comments from pattern file");
		this->infoBox->WordWrap = false;
		// 
		// splitter2
		// 
		this->splitter2->Dock = System::Windows::Forms::DockStyle::Bottom;
		this->splitter2->Location = System::Drawing::Point(0, 337);
		this->splitter2->Name = L"splitter2";
		this->splitter2->Size = System::Drawing::Size(215, 3);
		this->splitter2->TabIndex = 3;
		this->splitter2->TabStop = false;
		// 
		// panel1
		// 
		this->panel1->Controls->Add(this->groupBox2);
		this->panel1->Dock = System::Windows::Forms::DockStyle::Bottom;
		this->panel1->Location = System::Drawing::Point(0, 340);
		this->panel1->Name = L"panel1";
		this->panel1->Size = System::Drawing::Size(215, 214);
		this->panel1->TabIndex = 2;
		// 
		// groupBox2
		// 
		this->groupBox2->Controls->Add(this->zeroDrawCutoffText);
		this->groupBox2->Controls->Add(this->zeroGenCutoffText);
		this->groupBox2->Controls->Add(this->reusedAnswerText);
		this->groupBox2->Controls->Add(this->expandText);
		this->groupBox2->Controls->Add(this->tileComputeText);
		this->groupBox2->Controls->Add(this->totalNodeText);
		this->groupBox2->Controls->Add(this->foundNodeText);
		this->groupBox2->Controls->Add(this->missedNodeText);
		this->groupBox2->Dock = System::Windows::Forms::DockStyle::Fill;
		this->groupBox2->Location = System::Drawing::Point(0, 0);
		this->groupBox2->Name = L"groupBox2";
		this->groupBox2->Size = System::Drawing::Size(215, 214);
		this->groupBox2->TabIndex = 0;
		this->groupBox2->TabStop = false;
		this->groupBox2->Text = L"Hash Stats";
		// 
		// zeroDrawCutoffText
		// 
		this->zeroDrawCutoffText->AutoSize = true;
		this->zeroDrawCutoffText->Location = System::Drawing::Point(13, 182);
		this->zeroDrawCutoffText->Name = L"zeroDrawCutoffText";
		this->zeroDrawCutoffText->Size = System::Drawing::Size(105, 13);
		this->zeroDrawCutoffText->TabIndex = 0;
		this->zeroDrawCutoffText->Text = L"Zero Draw Cutoffs: 0";
		this->toolTip1->SetToolTip(this->zeroDrawCutoffText, L"Blank nodes that allowed draw skips");
		// 
		// zeroGenCutoffText
		// 
		this->zeroGenCutoffText->AutoSize = true;
		this->zeroGenCutoffText->Location = System::Drawing::Point(13, 159);
		this->zeroGenCutoffText->Name = L"zeroGenCutoffText";
		this->zeroGenCutoffText->Size = System::Drawing::Size(100, 13);
		this->zeroGenCutoffText->TabIndex = 0;
		this->zeroGenCutoffText->Text = L"Zero Gen Cutoffs: 0";
		this->toolTip1->SetToolTip(this->zeroGenCutoffText, L"Blank nodes that allowed skip of recomputation");
		// 
		// reusedAnswerText
		// 
		this->reusedAnswerText->AutoSize = true;
		this->reusedAnswerText->Location = System::Drawing::Point(13, 136);
		this->reusedAnswerText->Name = L"reusedAnswerText";
		this->reusedAnswerText->Size = System::Drawing::Size(99, 13);
		this->reusedAnswerText->TabIndex = 0;
		this->reusedAnswerText->Text = L"Reused Answers: 0";
		this->toolTip1->SetToolTip(this->reusedAnswerText, L"Nodes with precomputed answer used");
		// 
		// expandText
		// 
		this->expandText->AutoSize = true;
		this->expandText->Location = System::Drawing::Point(13, 113);
		this->expandText->Name = L"expandText";
		this->expandText->Size = System::Drawing::Size(105, 13);
		this->expandText->TabIndex = 0;
		this->expandText->Text = L"Universe Expands: 2";
		this->toolTip1->SetToolTip(this->expandText, L"time the universe size doubled");
		// 
		// tileComputeText
		// 
		this->tileComputeText->AutoSize = true;
		this->tileComputeText->Location = System::Drawing::Point(13, 90);
		this->tileComputeText->Name = L"tileComputeText";
		this->tileComputeText->Size = System::Drawing::Size(86, 13);
		this->tileComputeText->TabIndex = 0;
		this->tileComputeText->Text = L"Tile Computes: 0";
		this->toolTip1->SetToolTip(this->tileComputeText, L"4x4 tile computes");
		// 
		// totalNodeText
		// 
		this->totalNodeText->AutoSize = true;
		this->totalNodeText->Location = System::Drawing::Point(13, 21);
		this->totalNodeText->Name = L"totalNodeText";
		this->totalNodeText->Size = System::Drawing::Size(77, 13);
		this->totalNodeText->TabIndex = 0;
		this->totalNodeText->Text = L"Total Nodes: 0";
		this->toolTip1->SetToolTip(this->totalNodeText, L"Nodes hashed");
		// 
		// foundNodeText
		// 
		this->foundNodeText->AutoSize = true;
		this->foundNodeText->Location = System::Drawing::Point(13, 67);
		this->foundNodeText->Name = L"foundNodeText";
		this->foundNodeText->Size = System::Drawing::Size(83, 13);
		this->foundNodeText->TabIndex = 0;
		this->foundNodeText->Text = L"Found Nodes: 0";
		this->toolTip1->SetToolTip(this->foundNodeText, L"Nodes requested that were hashed");
		// 
		// missedNodeText
		// 
		this->missedNodeText->AutoSize = true;
		this->missedNodeText->Location = System::Drawing::Point(13, 44);
		this->missedNodeText->Name = L"missedNodeText";
		this->missedNodeText->Size = System::Drawing::Size(86, 13);
		this->missedNodeText->TabIndex = 0;
		this->missedNodeText->Text = L"Missed Nodes: 0";
		this->toolTip1->SetToolTip(this->missedNodeText, L"Nodes requested not yet hashed");
		// 
		// tabPage6
		// 
		this->tabPage6->Controls->Add(this->label32);
		this->tabPage6->Location = System::Drawing::Point(4, 22);
		this->tabPage6->Name = L"tabPage6";
		this->tabPage6->Size = System::Drawing::Size(215, 554);
		this->tabPage6->TabIndex = 5;
		this->tabPage6->Text = L"Edit";
		this->tabPage6->UseVisualStyleBackColor = true;
		// 
		// label32
		// 
		this->label32->AutoSize = true;
		this->label32->Location = System::Drawing::Point(23, 20);
		this->label32->Name = L"label32";
		this->label32->Size = System::Drawing::Size(134, 13);
		this->label32->TabIndex = 0;
		this->label32->Text = L"TODO - create basic editor";
		// 
		// tabPage4
		// 
		this->tabPage4->Controls->Add(this->label18);
		this->tabPage4->Controls->Add(this->label33);
		this->tabPage4->Controls->Add(this->label34);
		this->tabPage4->Controls->Add(this->label25);
		this->tabPage4->Controls->Add(this->label30);
		this->tabPage4->Controls->Add(this->label27);
		this->tabPage4->Controls->Add(this->label26);
		this->tabPage4->Controls->Add(this->label29);
		this->tabPage4->Controls->Add(this->label23);
		this->tabPage4->Controls->Add(this->label28);
		this->tabPage4->Controls->Add(this->label22);
		this->tabPage4->Controls->Add(this->label21);
		this->tabPage4->Controls->Add(this->label9);
		this->tabPage4->Controls->Add(this->label10);
		this->tabPage4->Controls->Add(this->label24);
		this->tabPage4->Controls->Add(this->label1);
		this->tabPage4->Controls->Add(this->label3);
		this->tabPage4->Controls->Add(this->label8);
		this->tabPage4->Controls->Add(this->label5);
		this->tabPage4->Controls->Add(this->label17);
		this->tabPage4->Controls->Add(this->label14);
		this->tabPage4->Controls->Add(this->label15);
		this->tabPage4->Location = System::Drawing::Point(4, 22);
		this->tabPage4->Name = L"tabPage4";
		this->tabPage4->Size = System::Drawing::Size(215, 554);
		this->tabPage4->TabIndex = 3;
		this->tabPage4->Text = L"TODO";
		this->tabPage4->UseVisualStyleBackColor = true;
		// 
		// label18
		// 
		this->label18->AutoSize = true;
		this->label18->Location = System::Drawing::Point(13, 246);
		this->label18->Name = L"label18";
		this->label18->Size = System::Drawing::Size(188, 13);
		this->label18->TabIndex = 6;
		this->label18->Text = L"TODO - Add simple onscreen drawing ";
		// 
		// label33
		// 
		this->label33->AutoSize = true;
		this->label33->Location = System::Drawing::Point(13, 518);
		this->label33->Name = L"label33";
		this->label33->Size = System::Drawing::Size(182, 13);
		this->label33->TabIndex = 6;
		this->label33->Text = L"TODO - show cursor position in world";
		// 
		// label34
		// 
		this->label34->AutoSize = true;
		this->label34->Location = System::Drawing::Point(13, 504);
		this->label34->Name = L"label34";
		this->label34->Size = System::Drawing::Size(262, 13);
		this->label34->TabIndex = 6;
		this->label34->Text = L"TODO - gray out options, threads, saved options in file";
		// 
		// label25
		// 
		this->label25->AutoSize = true;
		this->label25->Location = System::Drawing::Point(13, 267);
		this->label25->Name = L"label25";
		this->label25->Size = System::Drawing::Size(379, 13);
		this->label25->TabIndex = 6;
		this->label25->Text = L"TODO - Editing: draw, cut, paste, copy, region, catalog of shpes, flips, rotation" 
			L"s";
		// 
		// label30
		// 
		this->label30->AutoSize = true;
		this->label30->Location = System::Drawing::Point(13, 460);
		this->label30->Name = L"label30";
		this->label30->Size = System::Drawing::Size(149, 13);
		this->label30->TabIndex = 6;
		this->label30->Text = L"TODO - User settable hotekys";
		// 
		// label27
		// 
		this->label27->AutoSize = true;
		this->label27->Location = System::Drawing::Point(13, 400);
		this->label27->Name = L"label27";
		this->label27->Size = System::Drawing::Size(101, 13);
		this->label27->TabIndex = 6;
		this->label27->Text = L"TODO - Benchmark";
		// 
		// label26
		// 
		this->label26->AutoSize = true;
		this->label26->Location = System::Drawing::Point(13, 380);
		this->label26->Name = L"label26";
		this->label26->Size = System::Drawing::Size(137, 13);
		this->label26->TabIndex = 6;
		this->label26->Text = L"TODO - Save/load defaults";
		// 
		// label29
		// 
		this->label29->AutoSize = true;
		this->label29->Location = System::Drawing::Point(13, 440);
		this->label29->Name = L"label29";
		this->label29->Size = System::Drawing::Size(420, 13);
		this->label29->TabIndex = 6;
		this->label29->Text = L"TODO - Various torus options - edge wrap on/off, moebuis, kill boundaries, clippi" 
			L"ng, etc.";
		// 
		// label23
		// 
		this->label23->AutoSize = true;
		this->label23->Location = System::Drawing::Point(11, 340);
		this->label23->Name = L"label23";
		this->label23->Size = System::Drawing::Size(223, 13);
		this->label23->TabIndex = 6;
		this->label23->Text = L"TODO - R/L click on pic zoom in/out on point";
		// 
		// label28
		// 
		this->label28->AutoSize = true;
		this->label28->Location = System::Drawing::Point(13, 420);
		this->label28->Name = L"label28";
		this->label28->Size = System::Drawing::Size(139, 13);
		this->label28->TabIndex = 6;
		this->label28->Text = L"TODO - Save selected, etc.";
		// 
		// label22
		// 
		this->label22->AutoSize = true;
		this->label22->Location = System::Drawing::Point(13, 320);
		this->label22->Name = L"label22";
		this->label22->Size = System::Drawing::Size(269, 13);
		this->label22->TabIndex = 6;
		this->label22->Text = L"TODO - MDI\? cut and paste\?, only add on paste option";
		// 
		// label21
		// 
		this->label21->AutoSize = true;
		this->label21->Location = System::Drawing::Point(13, 300);
		this->label21->Name = L"label21";
		this->label21->Size = System::Drawing::Size(143, 13);
		this->label21->TabIndex = 6;
		this->label21->Text = L"TODO -snapshot and restore";
		// 
		// label9
		// 
		this->label9->AutoSize = true;
		this->label9->Location = System::Drawing::Point(13, 204);
		this->label9->Name = L"label9";
		this->label9->Size = System::Drawing::Size(249, 13);
		this->label9->TabIndex = 6;
		this->label9->Text = L"TODO - add precise metric for timing next gen code";
		// 
		// label10
		// 
		this->label10->AutoSize = true;
		this->label10->Location = System::Drawing::Point(13, 179);
		this->label10->Name = L"label10";
		this->label10->Size = System::Drawing::Size(135, 13);
		this->label10->TabIndex = 7;
		this->label10->Text = L"TODO - tooltips on all items";
		// 
		// label24
		// 
		this->label24->AutoSize = true;
		this->label24->Location = System::Drawing::Point(13, 217);
		this->label24->Name = L"label24";
		this->label24->Size = System::Drawing::Size(92, 13);
		this->label24->TabIndex = 5;
		this->label24->Text = L"TODO - fullscreen";
		// 
		// label3
		// 
		this->label3->AutoSize = true;
		this->label3->Location = System::Drawing::Point(13, 91);
		this->label3->Name = L"label3";
		this->label3->Size = System::Drawing::Size(126, 13);
		this->label3->TabIndex = 5;
		this->label3->Text = L"TODO - population graph";
		// 
		// label8
		// 
		this->label8->AutoSize = true;
		this->label8->Location = System::Drawing::Point(13, 57);
		this->label8->Name = L"label8";
		this->label8->Size = System::Drawing::Size(253, 13);
		this->label8->TabIndex = 5;
		this->label8->Text = L"TODO - background rendering threads, progress bar";
		// 
		// label5
		// 
		this->label5->AutoSize = true;
		this->label5->Location = System::Drawing::Point(13, 36);
		this->label5->Name = L"label5";
		this->label5->Size = System::Drawing::Size(232, 13);
		this->label5->TabIndex = 5;
		this->label5->Text = L"TODO - memory usage indicator, usage settings";
		// 
		// label17
		// 
		this->label17->AutoSize = true;
		this->label17->Location = System::Drawing::Point(13, 15);
		this->label17->Name = L"label17";
		this->label17->Size = System::Drawing::Size(315, 13);
		this->label17->TabIndex = 5;
		this->label17->Text = L"TODO - add 23/3 type rules, description, list of common rules, etc";
		// 
		// label14
		// 
		this->label14->AutoSize = true;
		this->label14->Location = System::Drawing::Point(13, 141);
		this->label14->Name = L"label14";
		this->label14->Size = System::Drawing::Size(251, 13);
		this->label14->TabIndex = 3;
		this->label14->Text = L"TODO - add age, color, etc options for basic engine";
		// 
		// label15
		// 
		this->label15->AutoSize = true;
		this->label15->Location = System::Drawing::Point(13, 120);
		this->label15->Name = L"label15";
		this->label15->Size = System::Drawing::Size(157, 13);
		this->label15->TabIndex = 2;
		this->label15->Text = L"TODO - add pattern seeker, etc";
		// 
		// animTimer
		// 
		this->animTimer->Interval = 30;
		this->animTimer->Tick += gcnew System::EventHandler(this, &Form1::animTimer_Tick);
		// 
		// splitter1
		// 
		this->splitter1->Location = System::Drawing::Point(223, 25);
		this->splitter1->Name = L"splitter1";
		this->splitter1->Size = System::Drawing::Size(3, 580);
		this->splitter1->TabIndex = 3;
		this->splitter1->TabStop = false;
		// 
		// picturePanelOld
		// 
		this->picturePanelOld->Controls->Add(this->picturePanel);
		this->picturePanelOld->Controls->Add(this->vPicScroll);
		this->picturePanelOld->Controls->Add(this->hPicScroll);
		this->picturePanelOld->Dock = System::Windows::Forms::DockStyle::Fill;
		this->picturePanelOld->Location = System::Drawing::Point(226, 25);
		this->picturePanelOld->Name = L"picturePanelOld";
		this->picturePanelOld->Size = System::Drawing::Size(713, 580);
		this->picturePanelOld->TabIndex = 4;
		// 
		// picturePanel
		// 
		this->picturePanel->Dock = System::Windows::Forms::DockStyle::Fill;
		this->picturePanel->Location = System::Drawing::Point(0, 0);
		this->picturePanel->Name = L"picturePanel";
		this->picturePanel->Size = System::Drawing::Size(696, 563);
		this->picturePanel->TabIndex = 2;
		this->picturePanel->TabStop = false;
		this->picturePanel->SizeChanged += gcnew System::EventHandler(this, &Form1::picturePanel_SizeChanged);
		// 
		// vPicScroll
		// 
		this->vPicScroll->Dock = System::Windows::Forms::DockStyle::Right;
		this->vPicScroll->Location = System::Drawing::Point(696, 0);
		this->vPicScroll->Name = L"vPicScroll";
		this->vPicScroll->Size = System::Drawing::Size(17, 563);
		this->vPicScroll->TabIndex = 1;
		this->vPicScroll->Value = 50;
		this->vPicScroll->MouseLeave += gcnew System::EventHandler(this, &Form1::vPicScroll_MouseLeave);
		this->vPicScroll->Scroll += gcnew System::Windows::Forms::ScrollEventHandler(this, &Form1::vPicScroll_Scroll);
		// 
		// hPicScroll
		// 
		this->hPicScroll->Dock = System::Windows::Forms::DockStyle::Bottom;
		this->hPicScroll->Location = System::Drawing::Point(0, 563);
		this->hPicScroll->Name = L"hPicScroll";
		this->hPicScroll->Size = System::Drawing::Size(713, 17);
		this->hPicScroll->TabIndex = 0;
		this->hPicScroll->Value = 50;
		this->hPicScroll->MouseLeave += gcnew System::EventHandler(this, &Form1::hPicScroll_MouseLeave);
		this->hPicScroll->Scroll += gcnew System::Windows::Forms::ScrollEventHandler(this, &Form1::hPicScroll_Scroll);
		// 
		// label1
		// 
		this->label1->AutoSize = true;
		this->label1->Location = System::Drawing::Point(13, 70);
		this->label1->Name = L"label1";
		this->label1->Size = System::Drawing::Size(67, 13);
		this->label1->TabIndex = 5;
		this->label1->Text = L"TODO - icon";
		// 
		// Form1
		// 
		this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
		this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
		this->ClientSize = System::Drawing::Size(939, 627);
		this->Controls->Add(this->picturePanelOld);
		this->Controls->Add(this->splitter1);
		this->Controls->Add(this->tabControl);
		this->Controls->Add(this->toolStrip);
		this->Controls->Add(this->statusStrip);
		this->Name = L"Form1";
		this->Text = L"Chris Lomont\'s Life Sim 2007 v0.1";
		this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
		this->statusStrip->ResumeLayout(false);
		this->statusStrip->PerformLayout();
		this->toolStrip->ResumeLayout(false);
		this->toolStrip->PerformLayout();
		this->tabControl->ResumeLayout(false);
		this->tabPage1->ResumeLayout(false);
		this->panel2->ResumeLayout(false);
		this->panel2->PerformLayout();
		this->groupBox1->ResumeLayout(false);
		this->groupBox1->PerformLayout();
		(cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->gensPerFrameBox))->EndInit();
		this->tabPage3->ResumeLayout(false);
		this->groupBox4->ResumeLayout(false);
		this->panel1->ResumeLayout(false);
		this->groupBox2->ResumeLayout(false);
		this->groupBox2->PerformLayout();
		this->tabPage6->ResumeLayout(false);
		this->tabPage6->PerformLayout();
		this->tabPage4->ResumeLayout(false);
		this->tabPage4->PerformLayout();
		this->picturePanelOld->ResumeLayout(false);
		(cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->picturePanel))->EndInit();
		this->ResumeLayout(false);
		this->PerformLayout();

			}
#pragma endregion
			private: void DoOneFrame(void);
			 private: void RandomImage(void);
			private: void DrawImage(void);
			 private: void Clear(void);
			private: bool LoadPattern(String ^ name, String ^% comment, int & width, int & height, LifeSimulator * sim);
	private: System::Void animTimer_Tick(System::Object^  sender, System::EventArgs^  e) {
			 DoOneFrame();
			 }
private: System::Void startButton_Click(System::Object^  sender, System::EventArgs^  e) {
			 if (true == animTimer->Enabled)
				 {
				 startButton->Text = "&Go";
				 goButton->Text = startButton->Text;
				 animTimer->Enabled = false;
				 }
			 else
				 {
				 startButton->Text = "S&top";
				 goButton->Text = startButton->Text;
				 animTimer->Enabled = true;
				 }
			 }
private: System::Void stopButton_Click(System::Object^  sender, System::EventArgs^  e) {
			 animTimer->Enabled = false;
			 }
private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e);

private: System::Void stepButton_Click(System::Object^  sender, System::EventArgs^  e) {
			 DoOneFrame();
			 }
private: void Form1::LoadPatternView(String ^ basedir);
private: void Form1::ShowHashStats(void);
private: void Form1::LoadFile(String ^ filename);

private: System::Void saveButton_Click(System::Object^  sender, System::EventArgs^  e);
private: System::Void loadButton_Click(System::Object^  sender, System::EventArgs^  e);
private: System::Void jumpButton_Click(System::Object^  sender, System::EventArgs^  e);
private:void ChangeEngine(PrefDialog::Preferences::Engine engine);
private: System::Void checkEngine_CheckedChanged(System::Object^  sender, System::EventArgs^  e);

protected: virtual void OnMouseWheel(MouseEventArgs ^ e) sealed override;
private: System::Void controlPanelEnable_Click(System::Object^  sender, System::EventArgs^  e) 
			 {
			 tabControl->Visible ^= true;
			 controlPanelEnable->Checked ^= true;
			 }
private: System::Void taskStripEnable_Click(System::Object^  sender, System::EventArgs^  e) 
			 {
			 toolStrip->Visible ^= true;
			 taskStripEnable->Checked ^= true;
			 }
private: void Resize(void);
private: System::Void picturePanel_SizeChanged(System::Object^  sender, System::EventArgs^  e) {
			 Resize();
			 }
private: void ShowInfo(void);
private: System::Void vPicScroll_Scroll(System::Object^  sender, System::Windows::Forms::ScrollEventArgs^  e);
private: System::Void hPicScroll_Scroll(System::Object^  sender, System::Windows::Forms::ScrollEventArgs^  e);
private: System::Void vPicScroll_MouseLeave(System::Object^  sender, System::EventArgs^  e) {
			 // todo - figure out how to do on mouse up
			 vPicScroll->Value = vPicScroll->Maximum/2;
			 }
private: System::Void hPicScroll_MouseLeave(System::Object^  sender, System::EventArgs^  e) {
			 // todo - figure out how to do on mouse up
			 hPicScroll->Value = hPicScroll->Maximum/2;
			 }
private: System::Void patternView_AfterSelect(System::Object^  sender, System::Windows::Forms::TreeViewEventArgs^  e);
private: void SetHashing(bool hash);
private: System::Void hashToolButton_CheckedChanged(System::Object^  sender, System::EventArgs^  e);
private: System::Void hashBox_CheckedChanged(System::Object^  sender, System::EventArgs^  e);
private: System::Void resetView_Click(System::Object^  sender, System::EventArgs^  e);
private: System::Void patternView_MouseLeave(System::Object^  sender, System::EventArgs^  e) {
			 saveButton->Focus(); // todo - pick better place?
			 //MessageBox::Show("Out of box");
			 }
private: System::Void prefButton_Click(System::Object^  sender, System::EventArgs^  e);
private: System::Void helpButton_Click(System::Object^  sender, System::EventArgs^  e) {
			 HelpDlg ^ dlg = gcnew HelpDlg;
			 dlg->ShowDialog();
			 }
private: System::Void aboutButton_Click(System::Object^  sender, System::EventArgs^  e) {
			 AboutDlg ^ dlg = gcnew AboutDlg;
			 dlg->ShowDialog();
			 }
private: System::Void exitButton_Click(System::Object^  sender, System::EventArgs^  e) {
			 Close();
			 }
private: System::Void url_Click(System::Object^  sender, System::EventArgs^  e) {
			 System::Diagnostics::Process::Start(String::Concat("http://",url->Text));
			 }
}; // class
} // namespace

