diff --git a/Projects/SAMufasaGUI/colourhistory.lfm b/Projects/SAMufasaGUI/colourhistory.lfm
new file mode 100644
index 0000000..9d9d31b
--- /dev/null
+++ b/Projects/SAMufasaGUI/colourhistory.lfm
@@ -0,0 +1,62 @@
+object ColourHistoryForm: TColourHistoryForm
+ Left = 498
+ Height = 250
+ Top = 474
+ Width = 489
+ ActiveControl = SelectionName
+ Caption = 'Colour Picker History'
+ ClientHeight = 250
+ ClientWidth = 489
+ LCLVersion = '0.9.29'
+ object ColourList: TListView
+ Left = 16
+ Height = 208
+ Top = 16
+ Width = 320
+ Columns = <>
+ TabOrder = 0
+ OnSelectItem = ChangeViewData
+ end
+ object DeleteButton: TButton
+ Left = 352
+ Height = 25
+ Top = 199
+ Width = 128
+ Caption = 'Delete'
+ OnClick = DeleteSelected
+ TabOrder = 1
+ end
+ object ColourValue: TLabel
+ Left = 360
+ Height = 18
+ Top = 40
+ Width = 9
+ Caption = '0'
+ ParentColor = False
+ end
+ object CoordValue: TLabel
+ Left = 360
+ Height = 18
+ Top = 73
+ Width = 25
+ Caption = '0, 0'
+ ParentColor = False
+ end
+ object SelectionName: TEdit
+ Left = 360
+ Height = 27
+ Top = 104
+ Width = 104
+ OnChange = ChangeName
+ TabOrder = 2
+ Text = 'Name'
+ end
+ object PickNewColourButton: TButton
+ Left = 352
+ Height = 25
+ Top = 160
+ Width = 128
+ Caption = 'Pick New Colour'
+ TabOrder = 3
+ end
+end
diff --git a/Projects/SAMufasaGUI/colourhistory.lrs b/Projects/SAMufasaGUI/colourhistory.lrs
new file mode 100644
index 0000000..7c24f90
--- /dev/null
+++ b/Projects/SAMufasaGUI/colourhistory.lrs
@@ -0,0 +1,18 @@
+LazarusResources.Add('TColourHistoryForm','FORMDATA',[
+ 'TPF0'#18'TColourHistoryForm'#17'ColourHistoryForm'#4'Left'#3#242#1#6'Height'
+ +#3#250#0#3'Top'#3#218#1#5'Width'#3#233#1#13'ActiveControl'#7#13'SelectionNam'
+ +'e'#7'Caption'#6#21'Colour Picker History'#12'ClientHeight'#3#250#0#11'Clien'
+ +'tWidth'#3#233#1#10'LCLVersion'#6#6'0.9.29'#0#9'TListView'#10'ColourList'#4
+ +'Left'#2#16#6'Height'#3#208#0#3'Top'#2#16#5'Width'#3'@'#1#7'Columns'#14#0#8
+ +'TabOrder'#2#0#12'OnSelectItem'#7#14'ChangeViewData'#0#0#7'TButton'#12'Delet'
+ +'eButton'#4'Left'#3'`'#1#6'Height'#2#25#3'Top'#3#199#0#5'Width'#3#128#0#7'Ca'
+ +'ption'#6#6'Delete'#7'OnClick'#7#14'DeleteSelected'#8'TabOrder'#2#1#0#0#6'TL'
+ +'abel'#11'ColourValue'#4'Left'#3'h'#1#6'Height'#2#18#3'Top'#2'('#5'Width'#2#9
+ +#7'Caption'#6#1'0'#11'ParentColor'#8#0#0#6'TLabel'#10'CoordValue'#4'Left'#3
+ +'h'#1#6'Height'#2#18#3'Top'#2'I'#5'Width'#2#25#7'Caption'#6#4'0, 0'#11'Paren'
+ +'tColor'#8#0#0#5'TEdit'#13'SelectionName'#4'Left'#3'h'#1#6'Height'#2#27#3'To'
+ +'p'#2'h'#5'Width'#2'h'#8'OnChange'#7#10'ChangeName'#8'TabOrder'#2#2#4'Text'#6
+ +#4'Name'#0#0#7'TButton'#19'PickNewColourButton'#4'Left'#3'`'#1#6'Height'#2#25
+ +#3'Top'#3#160#0#5'Width'#3#128#0#7'Caption'#6#15'Pick New Colour'#8'TabOrder'
+ +#2#3#0#0#0
+]);
diff --git a/Projects/SAMufasaGUI/colourhistory.pas b/Projects/SAMufasaGUI/colourhistory.pas
new file mode 100644
index 0000000..5226c64
--- /dev/null
+++ b/Projects/SAMufasaGUI/colourhistory.pas
@@ -0,0 +1,128 @@
+unit colourhistory;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
+ ComCtrls, StdCtrls;
+
+type
+ TColourPickerObject = class(TObject)
+ constructor Create(C: Integer; P: TPoint; N: String);
+ destructor Destroy; override;
+
+ public
+ Colour: Integer;
+ Pos: TPoint;
+ Name: String;
+ end;
+
+ { TColourHistoryForm }
+
+ TColourHistoryForm = class(TForm)
+ PickNewColourButton: TButton;
+ DeleteButton: TButton;
+ ColourValue: TLabel;
+ CoordValue: TLabel;
+ ColourList: TListView;
+ SelectionName: TEdit;
+ procedure ChangeName(Sender: TObject);
+ procedure ChangeViewData(Sender: TObject; Item: TListItem; Selected: Boolean
+ );
+ procedure DeleteSelected(Sender: TObject);
+ procedure AddColObj(c: TColourPickerObject);
+
+ constructor Create(TheOwner: TComponent); override;
+ destructor Destroy; override;
+ private
+ { private declarations }
+ public
+ IndexSelected: Integer;
+ { public declarations }
+ end;
+
+
+
+var
+ ColourHistoryForm: TColourHistoryForm;
+
+implementation
+uses
+ TestUnit;
+
+constructor TColourPickerObject.Create(C: Integer; P: TPoint; N: String);
+begin
+ inherited Create;
+ Self.Colour := C;
+ Self.Pos := P;
+ Self.Name:= N;
+end;
+
+destructor TColourPickerObject.Destroy;
+begin
+
+ inherited Destroy;
+end;
+
+{ TColourHistoryForm }
+
+procedure TColourHistoryForm.AddColObj(c: TColourPickerObject);
+
+var
+ it: TListItem;
+begin
+ it := ColourList.Items.Add;
+ it.Data := c;
+ it.Caption:= c.Name;
+ ColourList.Selected := it;
+end;
+
+procedure TColourHistoryForm.DeleteSelected(Sender: TObject);
+begin
+ if (Assigned(ColourList.Selected)) then
+ begin
+ TColourPickerObject(ColourList.Selected.Data).Free;
+ ColourList.Selected.Delete;
+ end;
+end;
+
+procedure TColourHistoryForm.ChangeViewData(Sender: TObject; Item: TListItem;
+ Selected: Boolean);
+begin
+ ColourValue.Caption := 'Colour: ' + IntToStr(TColourPickerObject(ColourList.Selected.Data).Colour);
+ CoordValue.Caption := 'Coords: ' + IntToStr(TColourPickerObject(ColourList.Selected.Data).Pos.X) +
+ ', ' + IntToStr(TColourPickerObject(ColourList.Selected.Data).Pos.Y);
+ SelectionName.Text := TColourPickerObject(ColourList.Selected.Data).Name;
+end;
+
+procedure TColourHistoryForm.ChangeName(Sender: TObject);
+begin
+ if not Assigned(ColourList.Selected) then
+ begin
+ WriteLn('We double clicked but have nothing Selected?');
+ exit;
+ end;
+ ColourList.Selected.Caption := SelectionName.Text;
+ TColourPickerObject(ColourList.Selected.Data).Name := SelectionName.Text;
+end;
+
+constructor TColourHistoryForm.Create(TheOwner: TComponent);
+begin
+ inherited Create(TheOwner);
+
+ PickNewColourButton.OnClick:= @Form1.ButtonPickClick;
+
+end;
+
+destructor TColourHistoryForm.Destroy;
+begin
+ inherited Destroy;
+end;
+
+initialization
+ {$I colourhistory.lrs}
+
+end.
+
diff --git a/Projects/SAMufasaGUI/project1.lpi b/Projects/SAMufasaGUI/project1.lpi
index 47b34a8..4d6b0f5 100644
--- a/Projects/SAMufasaGUI/project1.lpi
+++ b/Projects/SAMufasaGUI/project1.lpi
@@ -7,7 +7,7 @@