diff --git a/trunk/Images/license.txt b/trunk/Images/license.txt
index 4462ae5..3cd35c5 100644
--- a/trunk/Images/license.txt
+++ b/trunk/Images/license.txt
@@ -1,6 +1,6 @@
pause,stop: From Lazarus (http://lazarus.freepascal.org)
exit,cut,page_new,new,open,paste,redo,run,save,undo,help,bug,arrow_refresh,html: Mark James http://www.famfamfam.com/lab/icons/silk/
-closetab,closetabs,addtab,eraser,terminate: Yusuke Kamiyamane http://www.pinvoke.com/
+closetab,closetabs,addtab,eraser,terminate,terminal: Yusuke Kamiyamane http://www.pinvoke.com/
pickcolor: From the Crystal Clear Project (http://www.everaldo.com/crystal/) licensed under LGPL
crosshair: http://led24.de/iconset/ or http://led24.de/ would be appreciated. Follow us on twitter http://twitter.com/gasyoun or email leds24@gmail.com 512 icons 20/05/2009
diff --git a/trunk/Images/terminal.png b/trunk/Images/terminal.png
new file mode 100644
index 0000000..de569e1
Binary files /dev/null and b/trunk/Images/terminal.png differ
diff --git a/trunk/Projects/SAMufasaGUI/colourhistory.lfm b/trunk/Projects/SAMufasaGUI/colourhistory.lfm
index 92262b0..8defba7 100644
--- a/trunk/Projects/SAMufasaGUI/colourhistory.lfm
+++ b/trunk/Projects/SAMufasaGUI/colourhistory.lfm
@@ -5,7 +5,7 @@ object ColourHistoryForm: TColourHistoryForm
Width = 499
ActiveControl = SelectionName
Caption = 'Colour Picker History'
- ClientHeight = 235
+ ClientHeight = 240
ClientWidth = 499
Constraints.MinHeight = 200
Constraints.MinWidth = 490
@@ -17,7 +17,7 @@ object ColourHistoryForm: TColourHistoryForm
object DeleteButton: TButton
Left = 16
Height = 25
- Top = 193
+ Top = 198
Width = 128
Anchors = [akLeft, akBottom]
Caption = 'Delete'
@@ -26,7 +26,7 @@ object ColourHistoryForm: TColourHistoryForm
end
object SelectionName: TEdit
Left = 370
- Height = 27
+ Height = 21
Top = 16
Width = 112
Anchors = [akTop, akRight]
@@ -38,7 +38,7 @@ object ColourHistoryForm: TColourHistoryForm
object PickNewColourButton: TButton
Left = 226
Height = 25
- Top = 193
+ Top = 198
Width = 128
Anchors = [akRight, akBottom]
Caption = 'Pick New Colour'
@@ -46,7 +46,7 @@ object ColourHistoryForm: TColourHistoryForm
end
object ColourValue: TEdit
Left = 370
- Height = 27
+ Height = 21
Top = 56
Width = 112
Anchors = [akTop, akRight]
@@ -56,7 +56,7 @@ object ColourHistoryForm: TColourHistoryForm
end
object CoordValue: TLabel
Left = 370
- Height = 18
+ Height = 14
Top = 96
Width = 112
Anchors = [akTop, akRight]
@@ -67,14 +67,14 @@ object ColourHistoryForm: TColourHistoryForm
object ColourImage: TImage
Left = 152
Height = 24
- Top = 194
+ Top = 199
Width = 66
Anchors = [akLeft, akRight, akBottom]
end
object OkButton: TButton
Left = 402
Height = 24
- Top = 194
+ Top = 199
Width = 80
Anchors = [akRight, akBottom]
Caption = 'Ok'
@@ -83,7 +83,7 @@ object ColourHistoryForm: TColourHistoryForm
end
object CH_RGB_Label: TLabel
Left = 370
- Height = 18
+ Height = 14
Top = 128
Width = 112
Anchors = [akTop, akRight]
@@ -93,11 +93,11 @@ object ColourHistoryForm: TColourHistoryForm
end
object ColourTree: TTreeView
Left = 8
- Height = 154
+ Height = 159
Top = 16
Width = 346
Anchors = [akTop, akLeft, akRight, akBottom]
- DefaultItemHeight = 19
+ DefaultItemHeight = 16
DragMode = dmAutomatic
Images = CHImages
ScrollBars = ssAutoBoth
diff --git a/trunk/Projects/SAMufasaGUI/colourhistory.lrs b/trunk/Projects/SAMufasaGUI/colourhistory.lrs
index f407234..387f0de 100644
--- a/trunk/Projects/SAMufasaGUI/colourhistory.lrs
+++ b/trunk/Projects/SAMufasaGUI/colourhistory.lrs
@@ -3,33 +3,33 @@
LazarusResources.Add('TColourHistoryForm','FORMDATA',[
'TPF0'#18'TColourHistoryForm'#17'ColourHistoryForm'#4'Left'#3'v'#1#6'Height'#3
+#4#1#3'Top'#3'O'#1#5'Width'#3#243#1#13'ActiveControl'#7#13'SelectionName'#7
- +'Caption'#6#21'Colour Picker History'#12'ClientHeight'#3#235#0#11'ClientWidt'
+ +'Caption'#6#21'Colour Picker History'#12'ClientHeight'#3#240#0#11'ClientWidt'
+'h'#3#243#1#21'Constraints.MinHeight'#3#200#0#20'Constraints.MinWidth'#3#234
+#1#4'Menu'#7#10'CHMainMenu'#8'OnCreate'#7#10'FormCreate'#6'OnHide'#7#15'UnSe'
+'tCHShowMenu'#6'OnShow'#7#13'SetCHShowMenu'#10'LCLVersion'#6#6'0.9.29'#0#7'T'
- +'Button'#12'DeleteButton'#4'Left'#2#16#6'Height'#2#25#3'Top'#3#193#0#5'Width'
+ +'Button'#12'DeleteButton'#4'Left'#2#16#6'Height'#2#25#3'Top'#3#198#0#5'Width'
+#3#128#0#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#6'Delete'#7'OnCl'
+'ick'#7#14'DeleteSelected'#8'TabOrder'#2#0#0#0#5'TEdit'#13'SelectionName'#4
- +'Left'#3'r'#1#6'Height'#2#27#3'Top'#2#16#5'Width'#2'p'#7'Anchors'#11#5'akTop'
+ +'Left'#3'r'#1#6'Height'#2#21#3'Top'#2#16#5'Width'#2'p'#7'Anchors'#11#5'akTop'
+#7'akRight'#0#8'OnChange'#7#10'ChangeName'#10'OnKeyPress'#7#21'SelectionName'
+'KeyPress'#8'TabOrder'#2#1#4'Text'#6#4'Name'#0#0#7'TButton'#19'PickNewColour'
- +'Button'#4'Left'#3#226#0#6'Height'#2#25#3'Top'#3#193#0#5'Width'#3#128#0#7'An'
+ +'Button'#4'Left'#3#226#0#6'Height'#2#25#3'Top'#3#198#0#5'Width'#3#128#0#7'An'
+'chors'#11#7'akRight'#8'akBottom'#0#7'Caption'#6#15'Pick New Colour'#8'TabOr'
- +'der'#2#2#0#0#5'TEdit'#11'ColourValue'#4'Left'#3'r'#1#6'Height'#2#27#3'Top'#2
+ +'der'#2#2#0#0#5'TEdit'#11'ColourValue'#4'Left'#3'r'#1#6'Height'#2#21#3'Top'#2
+'8'#5'Width'#2'p'#7'Anchors'#11#5'akTop'#7'akRight'#0#8'ReadOnly'#9#8'TabOrd'
+'er'#2#3#4'Text'#6#11'ColourValue'#0#0#6'TLabel'#10'CoordValue'#4'Left'#3'r'
- +#1#6'Height'#2#18#3'Top'#2'`'#5'Width'#2'p'#7'Anchors'#11#5'akTop'#7'akRight'
+ +#1#6'Height'#2#14#3'Top'#2'`'#5'Width'#2'p'#7'Anchors'#11#5'akTop'#7'akRight'
+#0#7'Caption'#6#10'CoordValue'#20'Constraints.MinWidth'#2'p'#11'ParentColor'
- +#8#0#0#6'TImage'#11'ColourImage'#4'Left'#3#152#0#6'Height'#2#24#3'Top'#3#194
+ +#8#0#0#6'TImage'#11'ColourImage'#4'Left'#3#152#0#6'Height'#2#24#3'Top'#3#199
+#0#5'Width'#2'B'#7'Anchors'#11#6'akLeft'#7'akRight'#8'akBottom'#0#0#0#7'TBut'
- +'ton'#8'OkButton'#4'Left'#3#146#1#6'Height'#2#24#3'Top'#3#194#0#5'Width'#2'P'
+ +'ton'#8'OkButton'#4'Left'#3#146#1#6'Height'#2#24#3'Top'#3#199#0#5'Width'#2'P'
+#7'Anchors'#11#7'akRight'#8'akBottom'#0#7'Caption'#6#2'Ok'#7'OnClick'#7#13'O'
+'kButtonClick'#8'TabOrder'#2#4#0#0#6'TLabel'#12'CH_RGB_Label'#4'Left'#3'r'#1
- +#6'Height'#2#18#3'Top'#3#128#0#5'Width'#2'p'#7'Anchors'#11#5'akTop'#7'akRigh'
+ +#6'Height'#2#14#3'Top'#3#128#0#5'Width'#2'p'#7'Anchors'#11#5'akTop'#7'akRigh'
+'t'#0#7'Caption'#6#9'RGBValues'#20'Constraints.MinWidth'#2'p'#11'ParentColor'
- +#8#0#0#9'TTreeView'#10'ColourTree'#4'Left'#2#8#6'Height'#3#154#0#3'Top'#2#16
+ +#8#0#0#9'TTreeView'#10'ColourTree'#4'Left'#2#8#6'Height'#3#159#0#3'Top'#2#16
+#5'Width'#3'Z'#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#17
- +'DefaultItemHeight'#2#19#8'DragMode'#7#11'dmAutomatic'#6'Images'#7#8'CHImage'
+ +'DefaultItemHeight'#2#16#8'DragMode'#7#11'dmAutomatic'#6'Images'#7#8'CHImage'
+'s'#10'ScrollBars'#7#10'ssAutoBoth'#8'TabOrder'#2#5#8'OnChange'#7#16'ColourT'
+'reeChange'#10'OnDragDrop'#7#18'ColourTreeDragDrop'#10'OnDragOver'#7#18'Colo'
+'urTreeDragOver'#0#0#10'TImageList'#8'CHImages'#4'left'#3#168#1#3'top'#3#160
@@ -42,4 +42,4 @@ LazarusResources.Add('TColourHistoryForm','FORMDATA',[
+'HAboutClick'#0#0#0#0#11'TSaveDialog'#12'CHSaveDialog'#10'DefaultExt'#6#4'.x'
+'ml'#4'left'#3#136#1#3'top'#3#160#0#0#0#11'TOpenDialog'#12'CHOpenDialog'#10
+'DefaultExt'#6#4'.xml'#4'left'#3#200#1#3'top'#3#160#0#0#0#0
-]);
\ No newline at end of file
+]);
diff --git a/trunk/Projects/SAMufasaGUI/colourhistory.pas b/trunk/Projects/SAMufasaGUI/colourhistory.pas
index 25ff55f..0355571 100644
--- a/trunk/Projects/SAMufasaGUI/colourhistory.pas
+++ b/trunk/Projects/SAMufasaGUI/colourhistory.pas
@@ -27,7 +27,7 @@ unit colourhistory;
interface
uses
- Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
+ Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,MufasaBase,
ComCtrls, StdCtrls, ExtCtrls, Menus, DOM, XMLWrite, XMLRead;
type
@@ -172,7 +172,7 @@ begin
begin
If Assigned(N.Data) then
TColourPickerObject(N.Data).Free;
- WriteLn('Deleting ImageIndex: ' + IntToStr(n.ImageIndex) + '; Text: ' + N.Text);
+ mDebugLn('Deleting ImageIndex: ' + IntToStr(n.ImageIndex) + '; Text: ' + N.Text);
// yeah....
try
@@ -198,7 +198,7 @@ begin
WalkDeleteTree(ColourTree.Selected, CHImages);
- WriteLn('Deleting ImageIndex: ' + IntToStr(ColourTree.Selected.ImageIndex) + '; Text: ' + ColourTree.Selected.Text);
+ mDebugLn('Deleting ImageIndex: ' + IntToStr(ColourTree.Selected.ImageIndex) + '; Text: ' + ColourTree.Selected.Text);
if ColourTree.Selected.ImageIndex <> -1 then
CHImages.Delete(ColourTree.Selected.ImageIndex);
@@ -284,7 +284,7 @@ begin
C := 0;
- writeln(Colourtree.Items.TopLvlCount);
+ mDebugLn(inttostr(Colourtree.Items.TopLvlCount));
for i := 0 to Colourtree.Items.TopLvlCount -1 do
begin
WriteXMLData(ColourTree.Items.TopLvlItems[i], RootNode, XMLDoc, XMLChild, C);
@@ -343,7 +343,7 @@ begin
Node := ColourTree.GetNodeAt(X, Y);
if not assigned(ColourTree.Selected) then
begin
- writeln('No valid node is currently selected');
+ mDebugLn('No valid node is currently selected');
exit;
end;
@@ -355,8 +355,8 @@ begin
end;
ColourTree.Selected.MoveTo(Node, naAddChild);
TreeChanged:=True;
- writeln('Dragging from: ' + ColourTree.Selected.Text);
- writeln('Dragging to: ' + Node.Text);
+ mDebugLn('Dragging from: ' + ColourTree.Selected.Text);
+ mDebugLn('Dragging to: ' + Node.Text);
end;
procedure TColourHistoryForm.ColourTreeDragOver(Sender, Source: TObject; X,
@@ -370,7 +370,7 @@ procedure TColourHistoryForm.ChangeName(Sender: TObject);
begin
if not Assigned(ColourTree.Selected) then
begin
- WriteLn('We double clicked but have nothing Selected?');
+ mDebugLn('We double clicked but have nothing Selected?');
exit;
end;
ColourTree.Selected.Text := SelectionName.Text;
@@ -406,7 +406,7 @@ var
exit;
TreeNode := ColourTree.Items.AddChild(TreeNode, 'ERROR');
- writeln(Node.NodeName);
+ mDebugLn(Node.NodeName);
cNode := Node.FindNode('Data');
if Assigned(cNode) then
begin
diff --git a/trunk/Projects/SAMufasaGUI/framefunctionlist.pas b/trunk/Projects/SAMufasaGUI/framefunctionlist.pas
index f11d68b..371a4a3 100644
--- a/trunk/Projects/SAMufasaGUI/framefunctionlist.pas
+++ b/trunk/Projects/SAMufasaGUI/framefunctionlist.pas
@@ -5,7 +5,7 @@ unit framefunctionlist;
interface
uses
- Classes, SysUtils, FileUtil, LResources, Forms, ComCtrls, StdCtrls, Controls,
+ Classes, SysUtils, FileUtil, LResources, MufasaBase,Forms, ComCtrls, StdCtrls, Controls,
ExtCtrls, Buttons;
type
@@ -137,7 +137,7 @@ var
begin
if InCodeCompletion then
begin;
- Writeln('Not yet implemented');
+ mDebugLn('Not yet implemented');
exit;
end;
if not (Sender is TTreeView) then
@@ -191,7 +191,7 @@ begin
if ScriptNode = nil then
exit;
if FilterTree.Visible then
- Writeln('Might get some acces violations now..');
+ mDebugLn('Might get some acces violations now..');
ScriptNode.DeleteChildren;
Analyzer := TScriptAnalyzer.create;
Analyzer.ScriptToAnalyze:= Script;
@@ -241,7 +241,7 @@ begin
begin;
if FilterTree.Visible = false then
begin;
- Writeln('ERROR: You cannot search next, since the Tree isnt generated yet');
+ mDebugLn('ERROR: You cannot search next, since the Tree isnt generated yet');
Find(false);
exit;
end;
@@ -313,7 +313,7 @@ begin
FilterTreeVis(True);
FilterTree.FullExpand;
FilterTree.Items[1].Selected:= True;
- Writeln(FunctionList.Items[Index].Text);
+ mDebugLn(FunctionList.Items[Index].Text);
FunctionList.FullCollapse;
FunctionList.Items[Index].Selected := true;
FunctionList.Items[index].ExpandParents;
@@ -365,7 +365,7 @@ begin
exit;
if InCodeCompletion then
begin;
- Writeln('Not yet implemented');
+ mDebugLn('Not yet implemented');
exit;
end;
if not (Sender is TTreeView) then
diff --git a/trunk/Projects/SAMufasaGUI/framescript.pas b/trunk/Projects/SAMufasaGUI/framescript.pas
index 222a00a..3575569 100644
--- a/trunk/Projects/SAMufasaGUI/framescript.pas
+++ b/trunk/Projects/SAMufasaGUI/framescript.pas
@@ -28,7 +28,7 @@ interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, SynHighlighterPas, SynEdit, SynEditMarkupHighAll,
- mmlpsthread,ComCtrls, SynEditKeyCmds, LCLType, SynEditMarkupSpecialLine, Graphics, Controls;
+ mmlpsthread,ComCtrls, SynEditKeyCmds, LCLType,MufasaBase, SynEditMarkupSpecialLine, Graphics, Controls;
const
ecCodeCompletion = ecUserFirst;
type
@@ -178,8 +178,8 @@ begin
Insert('%s',CompletionLine,i+1);
CompletionCaret := Point(endi,Caret.y);
StartWordCompletion:= Point(i+1,caret.y);
- Writeln(CompletionLine);
- Writeln(CompletionStart);
+ mDebugLn(CompletionLine);
+ mDebugLn(CompletionStart);
InCodeCompletion := true;
editSearchList.Text:= SearchText;
editSearchList.SelStart:= Length(searchText);
@@ -247,7 +247,7 @@ begin
if ErrorData.Module <> '' then
begin;
if not FileExists(ErrorData.Module) then
- Writeln(Format('ERROR comes from a non-existing file (%s)',[ErrorData.Module]))
+ formWriteln(Format('ERROR comes from a non-existing file (%s)',[ErrorData.Module]))
else
begin
ErrorData.Module:= SetDirSeparators(ErrorData.Module);// Set it right ;-)
diff --git a/trunk/Projects/SAMufasaGUI/project1.lpi b/trunk/Projects/SAMufasaGUI/project1.lpi
index c52f3ac..f1cea6a 100644
--- a/trunk/Projects/SAMufasaGUI/project1.lpi
+++ b/trunk/Projects/SAMufasaGUI/project1.lpi
@@ -14,9 +14,9 @@
-
+
@@ -39,7 +39,7 @@
-
+
@@ -228,6 +228,11 @@
+
+
+
+
+
@@ -250,6 +255,11 @@
+
+
+
+
+
'#202#242'?L'#215#255#216#188#154#255#246#234#225#255
- ,#187#146'Z'#191#148'b'#24';'#145'a'#26#1#255#255#255#0#255#255#255#0#255#255
+ ,#185#215''#202#242'?L'#215#255#216#188#154#255#246#234#225#255
+ +#187#146'Z'#191#148'b'#24';'#145'a'#26#1#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#29'('#169#156';F'#204#255#8
+#18#144':'#7#17#144'S;H'#212#255#219#189#156#255#238#204#166#255'@L'#222#255
+':C'#209#255#15#25#152'i'#255#255#255#0#255#255#255#0#255#255#255#0#255#255
@@ -1536,8 +1537,8 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#153'nL'#255#0#0#0#0#0#0#0#0#0#0#0#0#153'nL'#0#153'nL'#0#153'nL'#0#162'f7'
+#255#220#191#164#255#223#198#175#255#162'f7'#255#153'nL'#0#153'nL'#0#162'f7'
+#255#220#191#164#255#223#198#175#255#162'f7'#255#0#0#0#0#0#0#0#0#0#0#0#0#164
- +'e4'#0#164'e4'#0#164'e4'#0#164'e4'#255#221#188#157#255#231#209#188#255#164'e'
- ,'4'#255#164'e4'#0#164'e4'#0#164'e4'#255#221#188#157#255#231#209#188#255#164
+ ,'e4'#0#164'e4'#0#164'e4'#0#164'e4'#255#221#188#157#255#231#209#188#255#164'e'
+ +'4'#255#164'e4'#0#164'e4'#0#164'e4'#255#221#188#157#255#231#209#188#255#164
+'e4'#255#0#0#0#0#0#0#0#0#0#0#0#0#164'e4'#0#164'e4'#0#164'e4'#0#164'e4'#255
+#219#182#148#255#231#209#187#255#164'e4'#255#164'e4'#0#164'e4'#0#164'e4'#255
+#219#182#148#255#231#209#187#255#164'e4'#255#0#0#0#0#0#0#0#0#0#0#0#0#164'e4'
@@ -1600,8 +1601,8 @@ LazarusResources.Add('TForm1','FORMDATA',[
+'Z'#194#141#255#19'vC'#255#158#167#163#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#9'w?'#255#131#219#174#255#31#198'q'#255'r'#222
+#167#255'K'#178#127#255#23'tE'#255#168#173#170#255#0#0#0#0#0#0#0#0#0#0#0#0#0
- +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#4's:'#255#130#216#172#255'v'
- ,#214#166#255'<'#157'j'#255'''tL'#255#172#174#173#255#0#0#0#0#0#0#0#0#0#0#0#0
+ ,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#4's:'#255#130#216#172#255'v'
+ +#214#166#255'<'#157'j'#255'''tL'#255#172#174#173#255#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#4's:'#255'z'#207#164
+#255','#140'Z'#255'=vY'#255#174#174#174#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#4's:'#255'!'#130'O'
@@ -1664,8 +1665,8 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#171#254#1''''#145#255#7#30'j'#171#0#0#0#0#3#27'm'#0#0#0#0#0#0#0#0#0#127'rf'
+#0#0#0#0#0#0#9#154#1#3'2'#172#226#15':'#133#241#11'v'#234#255#11'~'#240#255
+#18'\'#171#255#9'q'#229#255#3'('#148#255#0','#162#254#0#25'm'#255#5#27'k'#221
- +#19'&f"'#0#0#0#0#0#0#0#0'sf['#6'uli'#29'gkz!'#8'A'#183#239#19'~'#236#255#12
- ,#137#255#254#23'p'#207#255'*x'#200#255#10'{'#243#255#5'K'#186#255#0'+'#160
+ ,#19'&f"'#0#0#0#0#0#0#0#0'sf['#6'uli'#29'gkz!'#8'A'#183#239#19'~'#236#255#12
+ +#137#255#254#23'p'#207#255'*x'#200#255#10'{'#243#255#5'K'#186#255#0'+'#160
+#255#4'*'#131#255#0#25'm'#254#2#23'f'#255#17#29'_$tz'#137#6'pjd*xdW(Td'#130
+'c!'#128#229#255#22'\'#179#255#25'a'#187#255'3'#149#249#255#9'y'#243#255#5'y'
+#248#255#3'y'#252#255#4'3'#158#255#5')'#146#255#2'!v'#255#0#20'b'#255#3#20'_'
@@ -1728,8 +1729,8 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#206#255#252#226#204#255#251#224#201#255#251#225#200#255#253#250#247#255#193
+'v;'#247#255#255#255#0#255#255#255#0#196'|@'#247#247#240#230#255#248#180'U'
+#255#247#180'V'#255#247#181'T'#255#248#180'S'#255#248#178'S'#255#247#179'R'
- +#255#247#179'R'#255#247#178'Q'#255#247#178'O'#255#247#178'O'#255#252#249#245
- ,#255#191'o6'#247#255#255#255#0#255#255#255#0#193'x<'#247#247#237#227#255#253
+ ,#255#247#179'R'#255#247#178'Q'#255#247#178'O'#255#247#178'O'#255#252#249#245
+ +#255#191'o6'#247#255#255#255#0#255#255#255#0#193'x<'#247#247#237#227#255#253
+#194'n'#255#255#216#160#255#255#215#158#255#255#214#155#255#255#215#152#255
+#255#214#150#255#255#214#149#255#255#213#148#255#255#212#147#255#251#190'e'
+#255#251#247#244#255#187'g1'#247#255#255#255#0#255#255#255#0#191'q8'#245#245
@@ -1792,8 +1793,8 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#243#255't'#213#243#255'p'#211#242#255#194#234#248#255'5'#148#218#255#255#255
+#255#0#255#255#255#0','#134#216#209'-'#136#216#247'-'#135#216#247'-'#136#216
+#247'-'#136#216#247'-'#136#216#247'-'#136#216#247'-'#136#216#247'-'#136#216
- +#247'-'#136#216#247'-'#136#216#247'-'#135#216#247'-'#136#216#247','#134#216
- ,#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0' c'#152'* c'#152
+ ,#247'-'#136#216#247'-'#136#216#247'-'#135#216#247'-'#136#216#247','#134#216
+ +#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0' c'#152'* c'#152
+#255' c'#152#255' c'#152#255' c'#152#255' c'#152#255' c'#152#240#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0' c'#152'2 c'#152#178' c'#152#255'7u'#164#255#182#239#254#255#128
@@ -1856,8 +1857,8 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#246#255'6'#217#236#255#22#205#227#255')'#219#241#255'/'#224#245#255')'#219
+#241#255'2'#226#247#255'/'#224#246#255#173#243#251#255#0#160#196#255#5'y}'#10
+#255#255#255#0#5'y}'#10#22#161#189#202'@'#205#225#255'6'#217#236#255#29#210
- +#232#255#29#210#232#255#29#210#232#255')'#219#241#255'/'#224#245#255'2'#226
- ,#247#255'2'#226#247#255'2'#226#248#255'/'#224#246#255#173#243#251#255#0#160
+ ,#232#255#29#210#232#255#29#210#232#255')'#219#241#255'/'#224#245#255'2'#226
+ +#247#255'2'#226#247#255'2'#226#248#255'/'#224#246#255#173#243#251#255#0#160
+#196#255#255#255#255#0#21#160#188#203#27#171#197#248'j'#229#243#255#11#200
+#223#255#29#210#232#255#29#210#232#255#29#210#232#255#4#192#214#255#4#192#214
+#255#4#192#214#255','#223#244#255'2'#226#248#255'y'#237#251#255#0#160#196#255
@@ -1920,8 +1921,8 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#0#0#0#0#0#0#0#188'k6q'#188'k6'#144#188'k6'#204#188'k6'#238#188'k6'#250#187
+'k6'#254#187'k6'#255#187'j6'#255#187'j6'#255#188'l9'#255#189'n;'#255#187'm:'
+#255#187'k8'#239#187'p>'#203#182'i5T'#255#255#255#0#188'k6'#155#246#224#209
- +#255#247#224#209#255#254#251#248#255#254#251#247#255#253#249#246#255#252#245
- ,#240#255#250#240#234#255#251#242#237#255#253#249#246#255#253#250#247#255#251
+ ,#255#247#224#209#255#254#251#248#255#254#251#247#255#253#249#246#255#252#245
+ +#240#255#250#240#234#255#251#242#237#255#253#249#246#255#253#250#247#255#251
+#241#235#255#248#233#223#254#236#208#189#251#201#137'^'#236#181'i5c'#188'k6'
+#216#246#223#209#255#233#170#128#255#254#250#246#255#253#250#246#255#200#140
+'d'#255#251#243#238#255#251#241#234#255#252#246#242#255#254#251#248#255#252
@@ -1984,8 +1985,8 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#252#252#255#252#252#252#255#252#252#252#255#252#252#252#255#252#252#252#255
+#252#252#252#255#252#252#252#255#252#252#252#255#252#252#252#255#252#252#252
+#255#253#253#253#255'QQQhMMMj'#250#250#250#255#248#248#248#255#248#248#248
- +#255#248#248#248#255#248#248#248#255#248#248#248#255#248#248#248#255#248#248
- ,#248#255#248#248#248#255#248#248#248#255#248#248#248#255#248#248#248#255#248
+ ,#255#248#248#248#255#248#248#248#255#248#248#248#255#248#248#248#255#248#248
+ +#248#255#248#248#248#255#248#248#248#255#248#248#248#255#248#248#248#255#248
+#248#248#255#250#250#250#255'MMMjIIIl'#247#247#247#255#244#244#244#255#244
+#244#244#255#244#244#244#255#244#244#244#255#244#244#244#255#244#244#244#255
+#244#244#244#255#244#244#244#255#244#244#244#255#244#244#244#255#244#244#244
@@ -2048,8 +2049,8 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#255'--'#179#255'--'#179#255'--'#179#255'--'#179#255'//'#181#255#17#17#129
+#200'''''''{'#235#235#235#255#231#231#231#255#231#231#231#255#231#231#231#255
+#231#231#231#255#231#231#231#255#231#231#231#255#231#231#231#255'//'#167#255
- +'^^'#247#255'^^'#247#255'^^'#247#255'^^'#247#255'^^'#247#255#5#5#139#229#13
- ,#13#13'g'#16#16#16#133#16#16#16#133#16#16#16#133#16#16#16#133#16#16#16#133#16
+ ,'^^'#247#255'^^'#247#255'^^'#247#255'^^'#247#255'^^'#247#255#5#5#139#229#13
+ +#13#13'g'#16#16#16#133#16#16#16#133#16#16#16#133#16#16#16#133#16#16#16#133#16
+#16#16#133#16#16#16#133#16#16#16#133#4#4'['#207#2#2's'#231#2#2's'#231#2#2's'
+#231#2#2's'#231#2#2's'#231#2#2'X'#176#0#0#0#9#0#0#0#22#0#0#0#26#0#0#0#26#0#0
+#0#26#0#0#0#26#0#0#0#26#0#0#0#26#0#0#0#26#0#0#0#26#0#0#0#26#0#0#0#26#0#0#0#26
@@ -2112,8 +2113,8 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#255#4#192#214#255#4#192#214#255#29#210#232#255#29#210#232#255#29#210#232#255
+#11#200#223#255'j'#229#243#255#27#171#197#248#21#160#188#203#0#0#0#0#0#0#0#0
+#5'y}'#17#0#160#196#255'v'#237#251#255#4#195#218#255'v'#237#251#255'i'#234
- +#249#255'i'#234#249#255'i'#234#249#255'i'#234#249#255#5#221#247#255#10#200
- ,#223#255#7#194#216#255'o'#220#235#255#27#163#191#244#0#0#0#0#0#0#0#0#0#0#0#0
+ ,#249#255'i'#234#249#255'i'#234#249#255'i'#234#249#255#5#221#247#255#10#200
+ +#223#255#7#194#216#255'o'#220#235#255#27#163#191#244#0#0#0#0#0#0#0#0#0#0#0#0
+#5'y}'#17#0#160#196#255'v'#237#251#255'v'#237#251#255#0#160#196#255#0#160#196
+#255#0#160#196#255#0#160#196#255#1#169#196#255'n'#225#238#255#15#201#223#255
+'i'#228#242#255#26#164#192#248#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#5'y}'#17#0#160
@@ -2176,8 +2177,8 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#0'RRR'#0'RRR['#198#198#198#212#219#219#219#255#214#214#214#255#209#209#209
+#255#203#204#204#255#199#199#199#255#198#196#196#255#200#197#197#255#206#198
+#198#255#212#201#201#255#196#183#183#212'RRR[UUU'#0'TTT'#0'PPP'#0'PPPi'#187
- +#187#187#255#185#185#185#255#182#182#182#255#180#180#180#255#176#176#176#255
- ,#173#173#173#255#169#169#169#255#166#166#166#255#162#162#162#255#160#160#160
+ ,#187#187#255#185#185#185#255#182#182#182#255#180#180#180#255#176#176#176#255
+ +#173#173#173#255#169#169#169#255#166#166#166#255#162#162#162#255#160#160#160
+#255#157#157#157#255#3#3#3'fUUU'#0'UUU'#0'UUU'#0'TTTg'#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
@@ -2240,8 +2241,8 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#255#255#255#255#0#255#255#255#0#196#129'T'#201#234#182#151#201#206#152's'
+#248#234#190#161#248#199#134'['#255#239#192#158#255#255#255#255#255#204#147
+'n'#255#255#255#255#255#255#255#255#255#255#251#247#255#255#248#241#255#228
- +#175#140#255#199#138'a'#255#255#255#255#0#255#255#255#0#195#127'Q'#201#239
- ,#182#154#201#204#150'o'#248#214#182#145#248#200#136']'#255#239#191#161#255
+ ,#175#140#255#199#138'a'#255#255#255#255#0#255#255#255#0#195#127'Q'#201#239
+ +#182#154#201#204#150'o'#248#214#182#145#248#200#136']'#255#239#191#161#255
+#253#252#250#255#254#252#251#255#254#253#253#255#254#253#252#255#253#251#250
+#255#253#252#251#255#221#168#133#255#193#127'S'#255#255#255#255#0#255#255#255
+#0#198#131'U'#201#239#206#186#201#199#142'f'#248#224#188#156#248#202#141'e'
@@ -2304,8 +2305,8 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#199'yJ'#185#200'yK'#206#200'uE'#221#199'uE'#212#200'uE'#212#199'uE'#212#202
+#132'R'#255#255#247#241#255#255#233#217#255#255#234#219#255#255#233#217#255
+#255#231#215#255#255#229#210#255#255#226#203#255#255#247#241#255#203#133'U'
- +#254#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
- ,#255#255#255#0#204#131'R'#251#251#245#238#255#255#233#217#255#255#234#219#255
+ ,#254#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+ +#255#255#255#0#204#131'R'#251#251#245#238#255#255#233#217#255#255#234#219#255
+#255#233#217#255#255#231#215#255#255#229#210#255#255#226#203#255#251#246#239
+#255#204#131'U'#254#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#207#130'S'#255#239#241#231#255#255#233#217#255
@@ -2368,8 +2369,8 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#246#244#255#246#246#244#255#246#246#244#255#246#246#244#255#246#246#244#255
+#246#246#244#255#246#246#244#255#244#244#241#255#191#191#185#255'ZZP'#204'bb'
+'X'#255#230#230#224#255#227#227#218#255#225#225#216#255#225#225#216#255#221
- +#221#212#255#221#221#212#255#225#225#216#255#225#225#216#255#221#221#212#255
- ,#221#221#212#255#225#225#216#255#225#225#216#255#227#227#218#255#231#231#225
+ ,#221#212#255#221#221#212#255#225#225#216#255#225#225#216#255#221#221#212#255
+ +#221#221#212#255#225#225#216#255#225#225#216#255#227#227#218#255#231#231#225
+#255'ddZ'#255'hh^'#255#218#218#208#255#217#217#207#255#217#217#207#255#213
+#213#203#255'}}u'#255#132#132'|'#255#213#213#205#255#213#213#205#255#132#132
+'|'#255'}}u'#255#213#213#203#255#217#217#207#255#217#217#207#255#218#218#208
@@ -2432,8 +2433,8 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#237#255'K'#136#179#255'4s'#171#234'>'#139'F'#255#143#206#153#255'}'#198#135
+#255'x'#195#129#255's'#192'|'#255't'#192'|'#255'y'#194#129#255'I'#144'O'#255
+'T'#127'W'#255'T'#137#191#255#148#191#221#255'u'#173#212#255'c'#184#225#255
- +'K'#212#255#255'B'#139#184#255',n'#166#234';'#135'B'#255#137#203#146#255#132
- ,#200#141#255#128#198#136#255'{'#195#131#255'w'#193#127#255'G'#143'M'#255';t?'
+ ,'K'#212#255#255'B'#139#184#255',n'#166#234';'#135'B'#255#137#203#146#255#132
+ +#200#141#255#128#198#136#255'{'#195#131#255'w'#193#127#255'G'#143'M'#255';t?'
+#255#161#161#161#255'L'#132#186#255#141#187#219#255'n'#168#209#255'f'#166#209
+#255'_'#180#223#255'G'#133#177#255'%i'#161#234'7'#130'>'#255'4~;'#255'1y7'
+#255'.u4'#255'I'#145'P'#255'F'#143'L'#255'9s='#255#161#161#161#255#162#162
@@ -2494,59 +2495,94 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1#1#1'0'#2
+#2#2#239#21#21#21#255':::'#255'```'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1#1#1' '#2#2#2#207
- +#20#20#20#255'999'#207#0#0#9'TTrayIcon'#9'MTrayIcon'#9'PopUpMenu'#7#9'TrayPo'
- +'pup'#9'Icon.Data'#10'j'#10#0#0'f'#10#0#0#0#0#1#0#1#0#25#25#0#0#1#0' '#0'P'
- +#10#0#0#22#0#0#0'('#0#0#0#25#0#0#0'2'#0#0#0#1#0' '#0#0#0#0#0#196#9#0#0'd'#0#0
- ,#0'd'#0#0#0#0#0#0#0#0#0#0#0#7#22#149#254#5#19#142#255#8#21#141#255#4#15#133
- +#255#4#15#130#255#5#13'~'#255#7#13'|'#255#6#12'~'#255#3#10#130#255#1#8#128
- +#255#12#23#147#255#9#21#148#255#7#22#149#255#5#24#148#255#5#25#152#254#21#28
- +#157#255'(+~'#224'qs'#144'-'#0#0#0#0#0#0#0#0#0#0#0#0#250#205#157#14#0#0#0#0#0
- +#0#0#0#0#0#0#0#6#21#148#255#6#21#148#255#5#20#145#255#6#20#138#255#4#18#130
- +#255#2#14'}'#255#4#11#128#255#6#10#127#255#7#12#129#255#2#7'~'#255#12#21#142
- +#255#12#22#146#255#10#22#147#255#7#23#144#255#10#27#149#254#20#27'~'#255'WW'
- +#132'q'#0#0#0#0#0#0#0#0#252#208#162#0#246#200#149#0#0#0#0#0#249#204#156#0#0#0
- +#0#0#0#0#0#0#7#22#149#255#6#21#152#255#4#21#150#255#5#22#140#255#5#23#132#255
- +#5#18#130#255#3#12#131#255#5#10#128#255#10#13#128#255#7#12#128#255#9#16#135
- +#255#13#23#144#255#11#21#146#255#11#23#144#255#15#28#141#255'%.r'#210#255#255
- +#255#0#0#0#0#0#182#182#207#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#247#197
- +#144#0#6#21#148#255#7#22#149#255#6#22#149#255#7#21#147#255#6#20#144#255#4#17
- +#141#255#0#14#136#255#4#10#131#255#11#12#128#255#10#13#129#255#5#14#130#255#9
- +#23#140#255#7#26#142#255#4#22#134#255#16'!y'#255',0Zy'#0#0#0#0#183#185#193#0
- +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#247#197#144#0#247#197#144#0#0#0#0#0#7#21#148
- +#255#6#22#146#255#7#22#147#255#7#19#152#255#5#16#153#255#3#16#150#255#5#20
- +#146#255#12#21#143#255#14#16#135#255#8#13#129#255#7#17#129#255#9#25#132#255#2
- +#22'~'#255#1#22'x'#255#20#31'g'#255'PFae'#0#0#0#0#0#0#0#0#0#0#0#0#253#210#166
- +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#247#197#144#0#7#22#148#255#7#22#146#255#6
- +#22#147#255#7#19#152#255#6#18#154#255#6#19#151#255#7#22#148#255#6#22#143#255
- +#8#23#142#255#8#23#135#255#4#18'{'#255#7#20'u'#255#7#19'n'#255#9#19'g'#255#30
- +#28'['#255'bNkl'#0#0#0#0#239#204#192#0#0#0#0#0#0#0#0#0#253#210#166#0#254#211
- +#167#0#252#212#151#0#0#0#0#0#0#0#0#0#5#20#147#255#6#21#146#255#7#22#147#255#6
- +#19#151#255#6#18#154#255#6#18#151#255#3#18#144#255#2#22#141#255#1#23#135#255
- +#0#17'|'#255#8#24'y'#255#3#15'f'#255#9#17'a'#255#15#21']'#255#27#28'T'#255'^'
- +'Qh'#170#0#0#0#0#0#0#0#0#188#173#160#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#252
- +#212#151#2#251#211#150#0#6#21#148#255#5#21#145#255#5#21#146#255#6#18#151#255
- +#5#17#152#255#4#17#150#255#5#20#145#255#4#26#138#255#14'+'#142#255#2#25'w'
- +#255#1#20'k'#255#2#17'a'#255#8#18'\'#255#14#23']'#255#21'!_'#255'33Q'#230#255
- +#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#8
- +#23#150#255#4#19#143#255#1#16#142#255#5#18#151#255#6#18#153#255#5#17#150#255
- +#5#20#145#255#2#23#130#255#12')}'#255#18'-'#127#255#12'"r'#255#7#25'f'#255#8
- +#22'a'#255#12#21']'#255#16#23'_'#255#17#27'R'#255'`bz'#175#143#155#176'^Ii'
- +#143'R^}'#168#128'q'#132#175#161#143#151#177#142#178#164#163'/'#0#0#0#0#0#0#0
- +#0#5#16#145#255#2#12#140#255#4#17#141#255#8#17#145#255#10#20#155#255#2#19#151
- +#255#3#22#142#255#8#27'}'#255#6#30'm'#255#20'.|'#255#17',}'#255#18'-'#128#255
- +#15'(|'#255#15'%u'#255#16'(n'#255#23':w'#254'+R'#132#255'4e'#154#255':w'#189
- +#255'>'#129#207#255'B'#136#222#255'O'#134#220#255'a'#142#202#249'x'#156#186
- +#153#187#183#173#18#9#18#149#255#6#21#146#255#9#30#146#255#5#18#136#255#5#19
- +#148#255#0#20#153#255#3#22#141#255#13' '#129#255#13'*{'#255#9'-'#129#255#13
- +'<'#148#255#11'@'#155#255#10'?'#156#255#10'@'#154#255#10'D'#144#255#23'U'#155
- +#255'-q'#180#255'6|'#195#255'?'#132#213#255'A'#136#221#255'@'#136#231#255'C'
- +#133#234#254'9'#136#232#255'\'#144#209#255#164#167#179'3'#11#19#150#255#21'.'
- +#162#255'#N'#177#255#2#31#134#255#0#21#139#255#0#22#150#255#5#21#142#255#4#21
- +#129#255#18'6'#148#255#12'C'#160#255#11'U'#178#255#6'Z'#185#255#3'Z'#186#255
- +#5'Y'#187#255#9'Y'#186#255#15'^'#185#255'2'#129#214#255':'#134#219#255'>'#136
- +#224#255'?'#138#230#255'9'#137#230#255'A'#137#227#254'4'#137#232#255'Z'#144
- +#207#189#143#156#182#12#10#22#151#255#14'+'#154#255'%U'#179#255#13';'#150#255
- +#0#26#134#255#4#22#148#255#8#20#146#255#7#20#137#255#3#26#135#255' X'#193#255
+ +#20#20#20#255'999'#207#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+ +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+ ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+ +#255#0#255#255#255#0'UUU"UUUYUUUfUUUfUUUfUUUfUUUfUUUfUUUfUUUfUUUfUUUfUUUfUUU'
+ +'fUUUYUUU"RRR['#198#198#198#212#220#220#220#255#216#217#217#255#213#213#213
+ +#255#208#209#209#255#204#204#204#255#200#200#200#255#198#198#198#255#198#197
+ +#197#255#201#197#197#255#205#198#198#255#209#199#199#255#215#203#203#255#196
+ +#184#184#212'RRR[PPPi'#187#187#187#255#186#186#186#255#184#184#184#255#182
+ +#182#182#255#179#179#179#255#176#176#176#255#174#174#174#255#171#171#171#255
+ +#168#168#168#255#166#166#166#255#163#163#163#255#160#160#160#255#158#158#158
+ +#255#156#156#156#255#3#3#3'fUUUg888'#255'MMM'#255'MMM'#255'LLL'#255'JJJ'#255
+ +'III'#255'HHH'#255'FFF'#255'DDD'#255'???'#255'977'#255'=99'#255'A=='#255'<99'
+ +#255#3#3#3'fQQQhMMM'#255#203#203#203#255#139#139#139#255'rrr'#255'nnn'#255'i'
+ +'ii'#255'ddd'#255'___'#255'RQQ'#255'HCC'#255'LFF'#255'RJJ'#255'XNN'#255'JDD'
+ +#255#3#3#3'fMMMjLLL'#255'[[['#255#197#197#197#255#136#136#136#255'fff'#255'a'
+ +'aa'#255'\\\'#255'PNN'#255'JDD'#255'PHH'#255'VMM'#255'\QQ'#255'aVV'#255'PII'
+ +#255#3#3#3'fIIIlJJJ'#255#191#191#191#255'www'#255'___'#255#191#191#191#255
+ +#140#140#140#255'QOO'#255'MGG'#255'SKK'#255'YOO'#255'_TT'#255'eXX'#255'j\\'
+ +#255'UNN'#255#3#3#3'fDDDnGGG'#255'TTT'#255'```'#255'[[['#255'LLL'#255'MMM'
+ +#255'QJJ'#255'WNN'#255']RR'#255'bVV'#255'h[['#255'm__'#255'qbb'#255'ZRR'#255
+ +#3#3#3'f>>>qEEE'#255']]]'#255'XXX'#255'SSS'#255'OOO'#255'RMM'#255'ZPP'#255'`'
+ +'UU'#255'fYY'#255'k]]'#255'oaa'#255'tcc'#255'vff'#255']TT'#255#3#3#3'f888sBB'
+ +'B'#255'UUU'#255'QQQ'#255'LLL'#255'LKK'#255']SS'#255'cWW'#255'i[['#255'n__'
+ +#255'rbb'#255'vee'#255'wff'#255'wff'#255'^UU'#255#3#3#3'f222v@@@'#255'NNN'
+ +#255'JJJ'#255'GGG'#255'SMM'#255'gZZ'#255'l^^'#255'paa'#255'tdd'#255'wff'#255
+ +'wff'#255'wff'#255'wff'#255'^UU'#255#3#3#3'f''''''{888'#255'???'#255'>>>'#255
+ +'>>>'#255'LGG'#255'TMM'#255'XPP'#255'[RR'#255'\TT'#255']UU'#255'^UU'#255'^UU'
+ +#255'^UU'#255'QMM'#255#18#18#18'r'#13#13#13'g'#16#16#16#133#16#16#16#133#16
+ +#16#16#133#16#16#16#133#16#16#16#133#16#16#16#133#16#16#16#133#16#16#16#133
+ +#16#16#16#133#16#16#16#133#16#16#16#133#16#16#16#133#16#16#16#133#16#16#16
+ +#133#13#13#13'g'#0#0#0#9#0#0#0#22#0#0#0#26#0#0#0#26#0#0#0#26#0#0#0#26#0#0#0
+ +#26#0#0#0#26#0#0#0#26#0#0#0#26#0#0#0#26#0#0#0#26#0#0#0#26#0#0#0#26#0#0#0#22#0
+ +#0#0#9#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+ +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+ +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+ +#255#0#0#0#9'TTrayIcon'#9'MTrayIcon'#9'PopUpMenu'#7#9'TrayPopup'#9'Icon.Data'
+ +#10'j'#10#0#0'f'#10#0#0#0#0#1#0#1#0#25#25#0#0#1#0' '#0'P'#10#0#0#22#0#0#0'('
+ +#0#0#0#25#0#0#0'2'#0#0#0#1#0' '#0#0#0#0#0#196#9#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0
+ +#0#0#0#0#7#22#149#254#5#19#142#255#8#21#141#255#4#15#133#255#4#15#130#255#5
+ +#13'~'#255#7#13'|'#255#6#12'~'#255#3#10#130#255#1#8#128#255#12#23#147#255#9
+ +#21#148#255#7#22#149#255#5#24#148#255#5#25#152#254#21#28#157#255'(+~'#224'qs'
+ +#144'-'#0#0#0#0#0#0#0#0#0#0#0#0#250#205#157#14#0#0#0#0#0#0#0#0#0#0#0#0#6#21
+ +#148#255#6#21#148#255#5#20#145#255#6#20#138#255#4#18#130#255#2#14'}'#255#4#11
+ +#128#255#6#10#127#255#7#12#129#255#2#7'~'#255#12#21#142#255#12#22#146#255#10
+ +#22#147#255#7#23#144#255#10#27#149#254#20#27'~'#255'WW'#132'q'#0#0#0#0#0#0#0
+ +#0#252#208#162#0#246#200#149#0#0#0#0#0#249#204#156#0#0#0#0#0#0#0#0#0#7#22#149
+ +#255#6#21#152#255#4#21#150#255#5#22#140#255#5#23#132#255#5#18#130#255#3#12
+ +#131#255#5#10#128#255#10#13#128#255#7#12#128#255#9#16#135#255#13#23#144#255
+ +#11#21#146#255#11#23#144#255#15#28#141#255'%.r'#210#255#255#255#0#0#0#0#0#182
+ +#182#207#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#247#197#144#0#6#21#148#255
+ +#7#22#149#255#6#22#149#255#7#21#147#255#6#20#144#255#4#17#141#255#0#14#136
+ +#255#4#10#131#255#11#12#128#255#10#13#129#255#5#14#130#255#9#23#140#255#7#26
+ +#142#255#4#22#134#255#16'!y'#255',0Zy'#0#0#0#0#183#185#193#0#0#0#0#0#0#0#0#0
+ +#0#0#0#0#0#0#0#0#247#197#144#0#247#197#144#0#0#0#0#0#7#21#148#255#6#22#146
+ +#255#7#22#147#255#7#19#152#255#5#16#153#255#3#16#150#255#5#20#146#255#12#21
+ +#143#255#14#16#135#255#8#13#129#255#7#17#129#255#9#25#132#255#2#22'~'#255#1
+ +#22'x'#255#20#31'g'#255'PFae'#0#0#0#0#0#0#0#0#0#0#0#0#253#210#166#0#0#0#0#0#0
+ +#0#0#0#0#0#0#0#0#0#0#0#247#197#144#0#7#22#148#255#7#22#146#255#6#22#147#255#7
+ +#19#152#255#6#18#154#255#6#19#151#255#7#22#148#255#6#22#143#255#8#23#142#255
+ +#8#23#135#255#4#18'{'#255#7#20'u'#255#7#19'n'#255#9#19'g'#255#30#28'['#255'b'
+ +'Nkl'#0#0#0#0#239#204#192#0#0#0#0#0#0#0#0#0#253#210#166#0#254#211#167#0#252
+ +#212#151#0#0#0#0#0#0#0#0#0#5#20#147#255#6#21#146#255#7#22#147#255#6#19#151
+ +#255#6#18#154#255#6#18#151#255#3#18#144#255#2#22#141#255#1#23#135#255#0#17'|'
+ +#255#8#24'y'#255#3#15'f'#255#9#17'a'#255#15#21']'#255#27#28'T'#255'^Qh'#170#0
+ +#0#0#0#0#0#0#0#188#173#160#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#252#212#151#2
+ +#251#211#150#0#6#21#148#255#5#21#145#255#5#21#146#255#6#18#151#255#5#17#152
+ ,#255#4#17#150#255#5#20#145#255#4#26#138#255#14'+'#142#255#2#25'w'#255#1#20'k'
+ +#255#2#17'a'#255#8#18'\'#255#14#23']'#255#21'!_'#255'33Q'#230#255#255#255#0#0
+ +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#8#23#150#255#4
+ +#19#143#255#1#16#142#255#5#18#151#255#6#18#153#255#5#17#150#255#5#20#145#255
+ +#2#23#130#255#12')}'#255#18'-'#127#255#12'"r'#255#7#25'f'#255#8#22'a'#255#12
+ +#21']'#255#16#23'_'#255#17#27'R'#255'`bz'#175#143#155#176'^Ii'#143'R^}'#168
+ +#128'q'#132#175#161#143#151#177#142#178#164#163'/'#0#0#0#0#0#0#0#0#5#16#145
+ +#255#2#12#140#255#4#17#141#255#8#17#145#255#10#20#155#255#2#19#151#255#3#22
+ +#142#255#8#27'}'#255#6#30'm'#255#20'.|'#255#17',}'#255#18'-'#128#255#15'(|'
+ +#255#15'%u'#255#16'(n'#255#23':w'#254'+R'#132#255'4e'#154#255':w'#189#255'>'
+ +#129#207#255'B'#136#222#255'O'#134#220#255'a'#142#202#249'x'#156#186#153#187
+ +#183#173#18#9#18#149#255#6#21#146#255#9#30#146#255#5#18#136#255#5#19#148#255
+ +#0#20#153#255#3#22#141#255#13' '#129#255#13'*{'#255#9'-'#129#255#13'<'#148
+ +#255#11'@'#155#255#10'?'#156#255#10'@'#154#255#10'D'#144#255#23'U'#155#255'-'
+ +'q'#180#255'6|'#195#255'?'#132#213#255'A'#136#221#255'@'#136#231#255'C'#133
+ +#234#254'9'#136#232#255'\'#144#209#255#164#167#179'3'#11#19#150#255#21'.'#162
+ +#255'#N'#177#255#2#31#134#255#0#21#139#255#0#22#150#255#5#21#142#255#4#21#129
+ +#255#18'6'#148#255#12'C'#160#255#11'U'#178#255#6'Z'#185#255#3'Z'#186#255#5'Y'
+ +#187#255#9'Y'#186#255#15'^'#185#255'2'#129#214#255':'#134#219#255'>'#136#224
+ +#255'?'#138#230#255'9'#137#230#255'A'#137#227#254'4'#137#232#255'Z'#144#207
+ +#189#143#156#182#12#10#22#151#255#14'+'#154#255'%U'#179#255#13';'#150#255#0
+ +#26#134#255#4#22#148#255#8#20#146#255#7#20#137#255#3#26#135#255' X'#193#255
+#13'a'#198#255#4'f'#201#255#0'f'#200#255#5'f'#199#255#10'd'#199#255#12'b'#195
+#255'1'#129#222#255';'#132#222#255' \'#179#255'8'#129#215#255'>'#142#230#255
+'C'#135#227#255'@'#137#228#237'Z'#146#194'7'#0#0#0#0#9#21#153#255#3#25#146
@@ -2561,7 +2597,7 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#132#162#178#176#173#165','#0#0#0#0#246#203#150#11#15#20#149#255#12#18#143
+#255#6#22#146#255#4#24#140#255#7#22#141#255#11#20#146#255#11#23#148#255#6#24
+#151#255#1#22#148#255#9'<'#172#255#10'i'#204#255#4'h'#198#255#11'i'#199#255
- ,#12'g'#198#255#13'j'#196#255#11'i'#201#255'5'#136#238#255'6'#139#238#255'7'
+ +#12'g'#198#255#13'j'#196#255#11'i'#201#255'5'#136#238#255'6'#139#238#255'7'
+#137#232#255'>'#138#231#254'-'#134#231#255'I'#143#228#255'o'#134#173':'#0#0#0
+#0#231#205#152#1#21#28#145#255#9#22#138#255#6#18#142#255#9#15#143#255#10#14
+#144#255#12#21#149#255#9#23#150#255#3#21#147#255#1#20#142#255#10'4'#160#255
@@ -2589,7 +2625,7 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#233#168'L'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#158'ma'#0#0#0#255#0#0#0
+#0#0'?!S#-!o}''&s'#190'/''{'#221'2'#31'z'#231'/$t'#210'<6c'#141'{jW'#25#0#0#0
+#0'jM_'#0#0#0#0#0#243#174'Q'#0#0#0#0#0#0#0#0#0#241#173'Q'#0#0#0#0#0#0#0#0#0#0
- +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132'Za'#0#0#0#0#0#0#0#0#0#0#0
+ ,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132'Za'#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#187'tV'#14#145'\Z'#29#255#243'L'#6#0#0#0#0#0#0#0#0#146'xp'#0#243
+#174'R'#0#243#174'R'#0#0#0#0#0#0#0#0#0#0#0#0#0#242#174'R'#0#0#0#0#0#241#173
+'Q'#0#242#174'R'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
@@ -2625,7 +2661,7 @@ LazarusResources.Add('TForm1','FORMDATA',[
+'A'#128#174#255#19'\'#148#234#255#255#255#0#255#255#255#0'```'#255#160#160
+#160#255'=vA'#255'6q9'#255#162#162#162#255#162#162#162#255#163#163#163#255'='
+'y'#176#255#130#179#215#255'b'#159#204#255'Z'#154#201#255'^'#155#202#255'C'
- ,#129#175#255#25'`'#152#234'7'#130'>'#255'4~;'#255'1y7'#255'.u4'#255'I'#145'P'
+ +#129#175#255#25'`'#152#234'7'#130'>'#255'4~;'#255'1y7'#255'.u4'#255'I'#145'P'
+#255'F'#143'L'#255'9s='#255#161#161#161#255#162#162#162#255'E~'#180#255#136
+#183#217#255'g'#163#207#255'a'#158#204#255'c'#159#204#255'E'#131#177#255#31
+'d'#156#234';'#135'B'#255#137#203#146#255#132#200#141#255#128#198#136#255'{'
@@ -2653,7 +2689,7 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#234#255#255#255#0#255#255#255#0#128#128#128#255'~~~'#255'|||'#255'zzz'#255
+'www'#255'uuu'#255'rrr'#255'q'#158#212#255'o'#158#214#255#135#178#220#255#171
+#211#232#255#169#208#230#255'X'#144#184#255'Y'#142#198#234#255#255#255#0#255
- +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+ ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'p'#158#214#219
+'m'#156#212#255#133#177#218#255'Z'#145#185#255'`'#147#203#234#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
@@ -2689,7 +2725,7 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#244#244#244#255#244#244#244#255#244#244#244#255#244#244#244#255#244#244#244
+#255#244#244#244#255#244#244#244#255#244#244#244#255#244#244#244#255#244#244
+#244#255#247#247#247#255'IIIlMMMj'#250#250#250#255#248#248#248#255#248#248
- ,#248#255#248#248#248#255#248#248#248#255#248#248#248#255#248#248#248#255#248
+ +#248#255#248#248#248#255#248#248#248#255#248#248#248#255#248#248#248#255#248
+#248#248#255#248#248#248#255#248#248#248#255#248#248#248#255#248#248#248#255
+#248#248#248#255#250#250#250#255'MMMjQQQh'#253#253#253#255#252#252#252#255
+#252#252#252#255#252#252#252#255#252#252#252#255#252#252#252#255#252#252#252
@@ -2717,7 +2753,7 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#255#0#0#0#0#9#0#0#0#22#0#0#0#26#0#0#0#26#0#0#0#26#0#0#0#26#0#0#0#26#0#0#0#26
+#0#0#0#26#0#0#0#26#0#0#0#26#0#0#0#26#0#0#0#26#0#0#0#26#0#0#0#22#0#0#0#9#13#13
+#13'g'#16#16#16#133#16#16#16#133#16#16#16#133#16#16#16#133#16#16#16#133#16#16
- +#16#133#16#16#16#133#16#16#16#133#4#4'['#207#2#2's'#231#2#2's'#231#2#2's'#231
+ ,#16#133#16#16#16#133#16#16#16#133#4#4'['#207#2#2's'#231#2#2's'#231#2#2's'#231
+#2#2's'#231#2#2's'#231#2#2'X'#176'''''''{'#235#235#235#255#231#231#231#255
+#231#231#231#255#231#231#231#255#231#231#231#255#231#231#231#255#231#231#231
+#255#231#231#231#255'//'#167#255'^^'#247#255'^^'#247#255'^^'#247#255'^^'#247
@@ -2753,7 +2789,7 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#255#208#209#209#255#204#204#204#255#200#200#200#255#198#198#198#255#198#197
+#197#255#201#197#197#255#205#198#198#255#209#199#199#255#215#203#203#255#196
+#184#184#212'RRR[UUU"UUUYUUUfUUUfUUUfUUUfUUUfUUUfUUUfUUUfUUUfUUUfUUUfUUUfUUU'
- ,'YUUU"'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+ +'YUUU"'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#10'ImageIndex'#2#16#7'OnClick'#7#21'MenuItemTabCloseClick'#0#0#9'TMen'
@@ -2781,7 +2817,7 @@ LazarusResources.Add('TForm1','FORMDATA',[
+'ActionSaveAll'#7'Caption'#6#8'Save All'#10'ImageIndex'#2#21#9'OnExecute'#7
+#20'ActionSaveAllExecute'#8'ShortCut'#3'S`'#0#0#7'TAction'#16'ActionClearDeb'
+'ug'#7'Caption'#6#5'Clear'#10'ImageIndex'#2#4#9'OnExecute'#7#23'ActionClearD'
- +'ebugExecute'#0#0#7'TAction'#15'ActionFindStart'#7'Caption'#6#9'&Find ...'#10
+ ,'ebugExecute'#0#0#7'TAction'#15'ActionFindStart'#7'Caption'#6#9'&Find ...'#10
+'ImageIndex'#2#26#9'OnExecute'#7#22'ActionFindstartExecute'#8'ShortCut'#3'F@'
+#0#0#7'TAction'#9'ActionCut'#7'Caption'#6#4'Cu&t'#10'ImageIndex'#2#3#9'OnExe'
+'cute'#7#16'ActionCutExecute'#0#0#7'TAction'#10'ActionCopy'#7'Caption'#6#5'&'
@@ -2802,304 +2838,306 @@ LazarusResources.Add('TForm1','FORMDATA',[
+'nCompileScript'#7'Caption'#6#19'ActionCompileScript'#9'OnExecute'#7#26'Acti'
+'onCompileScriptExecute'#8'ShortCut'#3'x@'#0#0#7'TAction'#16'ActionNormalSiz'
+'e'#7'Caption'#6#16'ActionNormalSize'#9'OnExecute'#7#23'ActionNormalSizeExec'
- +'ute'#8'ShortCut'#3'B@'#0#0#0#6'TTimer'#10'DebugTimer'#7'OnTimer'#7#18'Proce'
- +'ssDebugStream'#4'left'#3'8'#2#3'top'#2'h'#0#0#10'TPopupMenu'#11'ScriptPopup'
- +#6'Images'#7#17'Mufasa_Image_List'#7'OnPopup'#7#16'ScriptPopupPopup'#4'left'
- +#3'8'#2#3'top'#3#144#0#0#9'TMenuItem'#13'PopupItemUndo'#6'Action'#7#10'Actio'
- +'nUndo'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0
- +#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0
+ +'ute'#8'ShortCut'#3'B@'#0#0#7'TAction'#13'ActionConsole'#7'Caption'#6#13'Act'
+ +'ionConsole'#10'ImageIndex'#2#27#9'OnExecute'#7#20'ActionConsoleExecute'#0#0
+ +#0#6'TTimer'#10'DebugTimer'#7'OnTimer'#7#18'ProcessDebugStream'#4'left'#3'8'
+ +#2#3'top'#2'h'#0#0#10'TPopupMenu'#11'ScriptPopup'#6'Images'#7#17'Mufasa_Imag'
+ +'e_List'#7'OnPopup'#7#16'ScriptPopupPopup'#4'left'#3'8'#2#3'top'#3#144#0#0#9
+ +'TMenuItem'#13'PopupItemUndo'#6'Action'#7#10'ActionUndo'#11'Bitmap.Data'#10
+ +':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0
+ +' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+ +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#24#166#195
+ +'i'#26#167#196'i'#0#160#196#24#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+ +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#160#196']f'#219
+ +#234#178#17#166#194#174#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+ +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#160#196'"C'#196#219#252
+ +'C'#197#216#254'#'#166#192#127#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+ +#0#0#0#0#0#0#160#196#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#14#170#203
+ +#254']'#218#233#254'#'#166#192#239#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+ +#0#0#0#0#160#196#255#0#160#196#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#158#193
+ +#26#2#172#200#255#136#231#242#254#17#162#194#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+ +#0#0#5'y}'#17#0#160#196#255'v'#237#251#255#0#160#196#255#0#0#0#0#0#0#0#0#0
+ +#160#196'0'#0#153#185'P'#0#160#196#201'm'#230#245#255'v'#226#239#255#25#163
+ +#193#255#0#0#0#0#0#0#0#0#0#0#0#0#5'y}'#17#0#160#196#255'v'#237#251#255'v'#237
+ +#251#255#0#160#196#255#0#160#196#255#0#160#196#255#0#160#196#255#1#169#196
+ +#255'n'#225#238#255#15#201#223#255'i'#228#242#255#26#164#192#248#0#0#0#0#0#0
+ +#0#0#5'y}'#17#0#160#196#255'v'#237#251#255#4#195#218#255'v'#237#251#255'i'
+ +#234#249#255'i'#234#249#255'i'#234#249#255'i'#234#249#255#5#221#247#255#10
+ +#200#223#255#7#194#216#255'o'#220#235#255#27#163#191#244#0#0#0#0#5'y~'#17#0
+ +#160#196#255'y'#237#251#255'2'#226#248#255','#223#244#255#4#192#214#255#4#192
+ +#214#255#4#192#214#255#29#210#232#255#29#210#232#255#29#210#232#255#11#200
+ +#223#255'j'#229#243#255#27#171#197#248#21#160#188#203#0#0#0#0#0#160#196#255
+ +#173#243#251#255'/'#224#246#255'2'#226#248#255'2'#226#247#255'2'#226#247#255
+ +'/'#224#245#255')'#219#241#255#29#210#232#255#29#210#232#255#29#210#232#255
+ +'6'#217#236#255'@'#205#225#255#22#161#189#202#5'y}'#10#0#0#0#0#5'y}'#10#0#160
+ +#196#255#173#243#251#255'/'#224#246#255'2'#226#247#255')'#219#241#255'/'#224
+ +#245#255')'#219#241#255#22#205#227#255'6'#217#236#255'i'#231#246#255'A'#206
+ +#227#254#19#163#193#228#5'y}2'#0#0#0#0#0#0#0#0#0#0#0#0#5'y}'#17#0#160#196#255
+ +#173#243#251#255'1'#225#246#255' '#227#250#255's'#236#250#255'o'#235#250#255
+ +'n'#232#247#255'l'#232#247#248#20#161#188#212#20#163#193#213#5'y}'#28#0#0#0#0
+ +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#5'y}'#17#0#160#196#255#173#243#251#255'%'
+ +#228#251#255#0#160#196#255#0#160#196#255#19#161#190#231#21#159#187#207#27#161
+ +#187#164#6'z|'#11#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#5
+ +'y}'#17#0#160#196#255#173#243#251#255#0#160#196#255#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
- +#0#0#0#0#0#0#0#0#24#166#195'i'#26#167#196'i'#0#160#196#24#0#0#0#0#0#0#0#0#0#0
- +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
- +#0#0#0#0#0#160#196']f'#219#234#178#17#166#194#174#0#0#0#0#0#0#0#0#0#0#0#0#0#0
- +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
- +#0#160#196'"C'#196#219#252'C'#197#216#254'#'#166#192#127#0#0#0#0#0#0#0#0#0#0
- +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#160#196#255#0#0#0#0#0#0#0#0#0#0#0#0#0
- +#0#0#0#0#0#0#0#14#170#203#254']'#218#233#254'#'#166#192#239#0#0#0#0#0#0#0#0#0
- +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#160#196#255#0#160#196#255#0#0#0#0#0#0#0#0#0
- ,#0#0#0#0#0#0#0#0#158#193#26#2#172#200#255#136#231#242#254#17#162#194#255#0#0
- +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#5'y}'#17#0#160#196#255'v'#237#251#255#0#160#196
- +#255#0#0#0#0#0#0#0#0#0#160#196'0'#0#153#185'P'#0#160#196#201'm'#230#245#255
- +'v'#226#239#255#25#163#193#255#0#0#0#0#0#0#0#0#0#0#0#0#5'y}'#17#0#160#196#255
- +'v'#237#251#255'v'#237#251#255#0#160#196#255#0#160#196#255#0#160#196#255#0
- +#160#196#255#1#169#196#255'n'#225#238#255#15#201#223#255'i'#228#242#255#26
- +#164#192#248#0#0#0#0#0#0#0#0#5'y}'#17#0#160#196#255'v'#237#251#255#4#195#218
- +#255'v'#237#251#255'i'#234#249#255'i'#234#249#255'i'#234#249#255'i'#234#249
- +#255#5#221#247#255#10#200#223#255#7#194#216#255'o'#220#235#255#27#163#191#244
- +#0#0#0#0#5'y~'#17#0#160#196#255'y'#237#251#255'2'#226#248#255','#223#244#255
- +#4#192#214#255#4#192#214#255#4#192#214#255#29#210#232#255#29#210#232#255#29
- +#210#232#255#11#200#223#255'j'#229#243#255#27#171#197#248#21#160#188#203#0#0
- +#0#0#0#160#196#255#173#243#251#255'/'#224#246#255'2'#226#248#255'2'#226#247
- +#255'2'#226#247#255'/'#224#245#255')'#219#241#255#29#210#232#255#29#210#232
- +#255#29#210#232#255'6'#217#236#255'@'#205#225#255#22#161#189#202#5'y}'#10#0#0
- +#0#0#5'y}'#10#0#160#196#255#173#243#251#255'/'#224#246#255'2'#226#247#255')'
- +#219#241#255'/'#224#245#255')'#219#241#255#22#205#227#255'6'#217#236#255'i'
- +#231#246#255'A'#206#227#254#19#163#193#228#5'y}2'#0#0#0#0#0#0#0#0#0#0#0#0#5
- +'y}'#17#0#160#196#255#173#243#251#255'1'#225#246#255' '#227#250#255's'#236
- +#250#255'o'#235#250#255'n'#232#247#255'l'#232#247#248#20#161#188#212#20#163
- +#193#213#5'y}'#28#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#5'y}'#17#0#160#196
- +#255#173#243#251#255'%'#228#251#255#0#160#196#255#0#160#196#255#19#161#190
- +#231#21#159#187#207#27#161#187#164#6'z|'#11#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
- +#0#0#0#0#0#0#0#0#0#0#0#5'y}'#17#0#160#196#255#173#243#251#255#0#160#196#255#0
- +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
- +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#157#191#20#0#160#196#255#0#160#196#255#0#0#0#0#0
- +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
- +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#160#196#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0
- +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#7'OnClick'#7#17'ActionUndoExecu'
- +'te'#0#0#9'TMenuItem'#13'PopupItemRedo'#6'Action'#7#10'ActionRedo'#11'Bitmap'
- +'.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16
- +#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255
- +#0#0#0#0#0#0#160#196#24#26#167#196'i'#24#166#195'i'#0#0#0#0#0#0#0#0#0#0#0#0#0
- +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0
- +#0#0#0#0#17#166#194#174'f'#219#234#178#0#160#196']'#0#0#0#0#0#0#0#0#0#0#0#0#0
- +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0
- +'#'#166#192#127'C'#197#216#254'C'#196#219#252#0#160#196'"'#0#0#0#0#0#0#0#0#0
- +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255
- +#255#255#0'#'#166#192#239']'#218#233#254#14#170#203#254#0#0#0#0#0#0#0#0#0#0#0
- +#0#0#0#0#0#0#0#0#0#0#160#196#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
- +#0#0#255#255#255#0#17#162#194#255#136#231#242#254#2#172#200#255#0#158#193#26
- +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#160#196#255#0#160#196#255#0#0#0#0#0#0#0#0
- +#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#25#163#193#255'v'#226#239#255'm'#230
- +#245#255#0#160#196#201#0#153#185'P'#0#160#196'0'#0#0#0#0#0#0#0#0#0#160#196
- +#255'v'#237#251#255#0#160#196#255#5'y}'#17#0#0#0#0#0#0#0#0#0#0#0#0#255#255
- +#255#0#26#164#192#248'i'#228#242#255#15#201#223#255'n'#225#238#255#1#169#196
- +#255#0#160#196#255#0#160#196#255#0#160#196#255#0#160#196#255'v'#237#251#255
- +'v'#237#251#255#0#160#196#255#5'y}'#17#0#0#0#0#0#0#0#0#255#255#255#0#27#163
- +#191#244'o'#220#235#255#7#194#216#255#10#200#223#255#5#221#247#255'i'#234#249
- +#255'i'#234#249#255'i'#234#249#255'i'#234#249#255'v'#237#251#255#4#195#218
- +#255'v'#237#251#255#0#160#196#255#5'y}'#17#0#0#0#0#255#255#255#0#21#160#188
- +#203#27#171#197#248'j'#229#243#255#11#200#223#255#29#210#232#255#29#210#232
- +#255#29#210#232#255#4#192#214#255#4#192#214#255#4#192#214#255','#223#244#255
- +'2'#226#248#255'y'#237#251#255#0#160#196#255#5'y~'#17#255#255#255#0#5'y}'#10
- +#22#161#189#202'@'#205#225#255'6'#217#236#255#29#210#232#255#29#210#232#255
- +#29#210#232#255')'#219#241#255'/'#224#245#255'2'#226#247#255'2'#226#247#255
- +'2'#226#248#255'/'#224#246#255#173#243#251#255#0#160#196#255#255#255#255#0#0
- +#0#0#0#5'y}2'#19#163#193#228'A'#206#227#254'i'#231#246#255'6'#217#236#255#22
- +#205#227#255')'#219#241#255'/'#224#245#255')'#219#241#255'2'#226#247#255'/'
- +#224#246#255#173#243#251#255#0#160#196#255#5'y}'#10#255#255#255#0#0#0#0#0#0#0
- +#0#0#5'y}'#28#20#163#193#213#20#161#188#212'l'#232#247#248'n'#232#247#255'o'
- +#235#250#255's'#236#250#255' '#227#250#255'1'#225#246#255#173#243#251#255#0
- +#160#196#255#5'y}'#17#0#0#0#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#6'z|'#11
- +#27#161#187#164#21#159#187#207#19#161#190#231#0#160#196#255#0#160#196#255'%'
- ,#228#251#255#173#243#251#255#0#160#196#255#5'y}'#17#0#0#0#0#0#0#0#0#255#255
- +#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#160
- +#196#255#173#243#251#255#0#160#196#255#5'y}'#17#0#0#0#0#0#0#0#0#0#0#0#0#255
- +#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
- +#160#196#255#0#160#196#255#0#157#191#20#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255
- +#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
- +#160#196#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#7'OnClick'#7#17
- +'ActionRedoExecute'#0#0#9'TMenuItem'#17'PopupItemDivider1'#7'Caption'#6#1'-'
- +#0#0#9'TMenuItem'#12'PopupItemCut'#6'Action'#7#9'ActionCut'#11'Bitmap.Data'
- +#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0
- +#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255
- +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
- +#255#0#2#13#140#10#28''''#166#159'5?'#201#247'"-'#175#185#3#13#140#28#255#255
- +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
- +#255#255#255#0#5#15#141#31#6#16#142'&'#1#11#138#3#255#255#255#0#18#28#155'p@'
- +'K'#217#255',5'#191#221'=G'#209#255#29''''#169#164#255#255#255#0#255#255#255
- +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#15#25#151'c2='#199
- +#248'7A'#207#255#31')'#171#176#0#10#134#24'#-'#180#175'5@'#204#253#0#9#133#24
- +#28''''#168#149'4>'#197#248#4#14#140#20#255#255#255#0#255#255#255#0#255#255
- +#255#0#255#255#255#0#255#255#255#0'/:'#189#222'5?'#201#229'%0'#179#194'?J'
- +#221#255#31'*'#172#194'$0'#178#203'2<'#198#242#0#10#134#3#17#27#157'w7A'#200
- +#255#8#18#142' '#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
- +#255#255#0'2<'#195#236'#.'#173#175#255#255#255#0#26'%'#168#153'BP'#210#255
- +#203#163'u'#254'AO'#214#255#22'!'#163#157'/9'#192#212'.8'#190#223#2#13#139#10
- +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#29'('
- +#169#156';F'#204#255#8#18#144':'#7#17#144'S;H'#212#255#219#189#156#255#238
- +#204#166#255'@L'#222#255':C'#209#255#15#25#152'i'#255#255#255#0#255#255#255#0
- +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#3#13#140#31',5'#185
- +#215''#202#242'?L'#215#255#216#188#154#255#246#234#225#255#187
- +#146'Z'#191#148'b'#24';'#145'a'#26#1#255#255#255#0#255#255#255#0#255#255#255
- +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#3#13#140#31#27'&'
- +#167#153'*4'#186#204#17#28#157#137#187#152'i'#204#240#224#208#255#183#145'_'
- +#197#143']'#20#11#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
- +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
- +#255#0#0#11#136#2#255#255#255#0#180#142'Z'#144#246#234#221#255#225#205#180
- +#255#177#141']'#191#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+ +#0#0#157#191#20#0#160#196#255#0#160#196#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+ ,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+ +#0#0#0#0#0#0#160#196#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+ +#0#0#0#0#0#0#0#0#0#0#7'OnClick'#7#17'ActionUndoExecute'#0#0#9'TMenuItem'#13
+ +'PopupItemRedo'#6'Action'#7#10'ActionRedo'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0
+ +#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0
+ +#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0#0#0#0#0#160#196#24
+ +#26#167#196'i'#24#166#195'i'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+ +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0#0#0#0#17#166#194#174
+ +'f'#219#234#178#0#160#196']'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+ +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0'#'#166#192#127'C'#197
+ +#216#254'C'#196#219#252#0#160#196'"'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+ +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0'#'#166#192#239
+ +']'#218#233#254#14#170#203#254#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#160
+ +#196#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#17#162
+ +#194#255#136#231#242#254#2#172#200#255#0#158#193#26#0#0#0#0#0#0#0#0#0#0#0#0#0
+ +#0#0#0#0#160#196#255#0#160#196#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+ +#255#255#255#0#25#163#193#255'v'#226#239#255'm'#230#245#255#0#160#196#201#0
+ +#153#185'P'#0#160#196'0'#0#0#0#0#0#0#0#0#0#160#196#255'v'#237#251#255#0#160
+ +#196#255#5'y}'#17#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#26#164#192#248'i'#228
+ +#242#255#15#201#223#255'n'#225#238#255#1#169#196#255#0#160#196#255#0#160#196
+ +#255#0#160#196#255#0#160#196#255'v'#237#251#255'v'#237#251#255#0#160#196#255
+ +#5'y}'#17#0#0#0#0#0#0#0#0#255#255#255#0#27#163#191#244'o'#220#235#255#7#194
+ +#216#255#10#200#223#255#5#221#247#255'i'#234#249#255'i'#234#249#255'i'#234
+ +#249#255'i'#234#249#255'v'#237#251#255#4#195#218#255'v'#237#251#255#0#160#196
+ +#255#5'y}'#17#0#0#0#0#255#255#255#0#21#160#188#203#27#171#197#248'j'#229#243
+ +#255#11#200#223#255#29#210#232#255#29#210#232#255#29#210#232#255#4#192#214
+ +#255#4#192#214#255#4#192#214#255','#223#244#255'2'#226#248#255'y'#237#251#255
+ +#0#160#196#255#5'y~'#17#255#255#255#0#5'y}'#10#22#161#189#202'@'#205#225#255
+ +'6'#217#236#255#29#210#232#255#29#210#232#255#29#210#232#255')'#219#241#255
+ +'/'#224#245#255'2'#226#247#255'2'#226#247#255'2'#226#248#255'/'#224#246#255
+ +#173#243#251#255#0#160#196#255#255#255#255#0#0#0#0#0#5'y}2'#19#163#193#228'A'
+ +#206#227#254'i'#231#246#255'6'#217#236#255#22#205#227#255')'#219#241#255'/'
+ +#224#245#255')'#219#241#255'2'#226#247#255'/'#224#246#255#173#243#251#255#0
+ +#160#196#255#5'y}'#10#255#255#255#0#0#0#0#0#0#0#0#0#5'y}'#28#20#163#193#213
+ +#20#161#188#212'l'#232#247#248'n'#232#247#255'o'#235#250#255's'#236#250#255
+ +' '#227#250#255'1'#225#246#255#173#243#251#255#0#160#196#255#5'y}'#17#0#0#0#0
+ +#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#6'z|'#11#27#161#187#164#21#159#187#207
+ +#19#161#190#231#0#160#196#255#0#160#196#255'%'#228#251#255#173#243#251#255#0
+ +#160#196#255#5'y}'#17#0#0#0#0#0#0#0#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+ +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#160#196#255#173#243#251#255#0#160
+ +#196#255#5'y}'#17#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0
+ +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#160#196#255#0#160#196#255#0#157
+ +#191#20#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0
+ +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#160#196#255#0#0#0#0#0#0#0#0#0#0#0
+ +#0#0#0#0#0#0#0#0#0#0#0#0#0#7'OnClick'#7#17'ActionRedoExecute'#0#0#9'TMenuIte'
+ +'m'#17'PopupItemDivider1'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#12'PopupItemCut'
+ +#6'Action'#7#9'ActionCut'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0
+ +#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'
+ +#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+ +#0#255#255#255#0#255#255#255#0#255#255#255#0#2#13#140#10#28''''#166#159'5?'
+ +#201#247'"-'#175#185#3#13#140#28#255#255#255#0#255#255#255#0#255#255#255#0
+ +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#5#15#141#31#6#16#142
+ +'&'#1#11#138#3#255#255#255#0#18#28#155'p@K'#217#255',5'#191#221'=G'#209#255
+ +#29''''#169#164#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+ +#255#255#0#255#255#255#0#15#25#151'c2='#199#248'7A'#207#255#31')'#171#176#0
+ +#10#134#24'#-'#180#175'5@'#204#253#0#9#133#24#28''''#168#149'4>'#197#248#4#14
+ +#140#20#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+ +'/:'#189#222'5?'#201#229'%0'#179#194'?J'#221#255#31'*'#172#194'$0'#178#203'2'
+ +'<'#198#242#0#10#134#3#17#27#157'w7A'#200#255#8#18#142' '#255#255#255#0#255
+ +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'2<'#195#236'#.'#173#175
+ +#255#255#255#0#26'%'#168#153'BP'#210#255#203#163'u'#254'AO'#214#255#22'!'#163
+ +#157'/9'#192#212'.8'#190#223#2#13#139#10#255#255#255#0#255#255#255#0#255#255
+ +#255#0#255#255#255#0#255#255#255#0#29'('#169#156';F'#204#255#8#18#144':'#7#17
+ +#144'S;H'#212#255#219#189#156#255#238#204#166#255'@L'#222#255':C'#209#255#15
+ ,#25#152'i'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+ +#255#0#255#255#255#0#3#13#140#31',5'#185#215''#202#242'?L'#215
+ +#255#216#188#154#255#246#234#225#255#187#146'Z'#191#148'b'#24';'#145'a'#26#1
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
- +#255#255#0#255#255#255#0#255#255#255#0#179#140'W'#137#241#226#212#255#206#178
- +#142#244#245#235#224#255#166#127'J'#157#255#255#255#0#255#255#255#0#255#255
- +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
- +#255#255#255#0#255#255#255#0#255#255#255#0#177#137'S'#132#238#223#206#255#151
- +'f e'#194#163'|'#218#233#216#197#253#169#130'N{'#255#255#255#0#255#255#255#0
- +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
- +#255#255#0#255#255#255#0#255#255#255#0#175#135'P|'#231#213#193#255#149'e'#31
- +'+'#143'\'#18#27#197#167#131#231#213#188#157#225#181#147'db'#255#255#255#0
- +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
- +#255#255#0#255#255#255#0#255#255#255#0#172#131'Ku'#222#201#175#255#149'd'#29
- +#31#255#255#255#0#146'`'#23'&'#195#164'|'#235#181#144'c'#203#255#255#255#0
- +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
- +#255#255#0#255#255#255#0#255#255#255#0#170#129'Go'#214#189#159#247#147'a'#25
- +#16#255#255#255#0#255#255#255#0#150'f ,'#169#128'K'#203#255#255#255#0#255#255
- +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
- +#255#255#255#0#255#255#255#0#168'}Bi'#204#176#139#224#145']'#20#9#255#255#255
- +#0#255#255#255#0#255#255#255#0#146'`'#23#6#255#255#255#0#255#255#255#0#255
+ +#255#255#0#255#255#255#0#3#13#140#31#27'&'#167#153'*4'#186#204#17#28#157#137
+ +#187#152'i'#204#240#224#208#255#183#145'_'#197#143']'#20#11#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
- +#255#0#255#255#255#0#154'k''1'#170'~C'#161#146'`'#24#5#255#255#255#0#255#255
- +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#7'OnClick'#7
- +#16'ActionCutExecute'#0#0#9'TMenuItem'#13'PopupItemCopy'#6'Action'#7#10'Acti'
- +'onCopy'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('
- +#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0
- +#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
- +#255#255#255#0#197'sB'#193#198'uE'#230#200'uE'#254#199'uE'#243#200'uE'#243
- +#199'uE'#243#199'uE'#243#200'uF'#244#197'tD'#232#202#127'S'#241#255#255#255#0
- +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#199'y'
- ,'I'#237#252#243#236#255#250#241#232#255#250#240#231#255#251#241#233#255#251
- +#242#234#255#251#242#234#255#251#242#235#255#253#244#238#255#202#128'T'#249
- +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
- +#255#255#0#207#130'S'#255#239#241#231#255#255#233#217#255#255#234#219#255#255
- +#233#217#255#255#231#215#255#255#229#210#255#255#226#203#255#239#242#232#255
- +#206#129'V'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
- +#255#255#0#255#255#255#0#204#131'R'#251#251#245#238#255#255#233#217#255#255
- +#234#219#255#255#233#217#255#255#231#215#255#255#229#210#255#255#226#203#255
- +#251#246#239#255#204#131'U'#254#199'yJ'#185#200'yK'#206#200'uE'#221#199'uE'
- +#212#200'uE'#212#199'uE'#212#202#132'R'#255#255#247#241#255#255#233#217#255
- +#255#234#219#255#255#233#217#255#255#231#215#255#255#229#210#255#255#226#203
- +#255#255#247#241#255#203#133'U'#254#200'|N'#211#252#243#236#222#250#241#232
- +#222#250#240#231#222#251#241#233#222#251#242#234#222#228#186#145#255#255#247
- +#240#255#255#231#213#255#253#231#214#255#253#230#212#255#252#228#208#255#251
- +#227#203#255#250#220#194#255#254#243#232#255#204#134'V'#254#207#130'S'#222
- +#239#241#231#222#255#233#217#222#255#234#219#222#255#233#217#222#255#231#215
- +#222#228#187#145#255#255#247#242#255#254#231#213#255#254#231#213#255#253#229
- +#209#255#250#224#202#255#249#222#196#255#247#217#188#255#253#242#231#255#204
- +#135'W'#254#204#131'R'#219#251#245#238#222#255#233#217#222#255#234#219#222
- +#255#233#217#222#255#231#215#222#228#187#146#255#254#247#241#255#252#229#210
- +#255#252#228#209#255#251#226#204#255#249#221#196#255#246#215#187#255#243#209
- +#175#255#250#239#228#255#204#135'X'#254#202#132'R'#219#255#247#241#222#255
- +#233#217#222#255#234#219#222#255#233#217#222#255#231#215#222#228#187#146#255
- +#254#246#240#255#252#226#205#255#252#227#205#255#250#223#200#255#247#217#188
- +#255#245#233#221#255#250#243#235#255#251#248#243#255#202#131'S'#254#203#133
- +'S'#219#255#247#240#222#255#231#213#222#253#231#214#222#253#230#212#222#252
- +#228#208#222#228#187#147#255#254#245#237#255#252#222#197#255#251#224#199#255
- +#249#220#194#255#245#211#180#255#254#249#243#255#250#226#196#255#236#193#147
- +#255#195'}H'#147#203#134'T'#219#255#247#242#222#254#231#213#222#254#231#213
- +#222#253#229#209#222#250#224#202#222#229#190#150#255#255#255#254#255#253#243
- +#233#255#253#243#234#255#252#242#232#255#250#239#227#255#250#242#231#255#234
- +#187#136#255#207#133'U'#179#180'i='#12#203#134'U'#219#254#247#241#222#252#229
- +#210#222#252#228#209#222#251#226#204#222#249#221#196#222#234#195#157#255#230
- +#191#150#255#228#187#146#255#228#187#146#255#209#160'l'#245#208#158'm'#246
- +#204#150'_'#218#196'yB~'#178'g<'#9#255#255#255#0#203#134'U'#219#254#246#240
- +#222#252#226#205#222#252#227#205#222#250#223#200#222#247#217#188#222#245#233
- +#221#222#250#243#235#222#251#248#243#222#205#149'e'#220#255#255#255#0#255#255
- +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#203#134'V'#218
- +#254#245#237#222#252#222#197#222#251#224#199#222#249#220#194#222#245#211#180
- +#222#254#249#243#222#250#226#196#222#236#193#147#222#195'}H'#128#255#255#255
- +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#202
- +#133'T'#208#255#255#255#219#253#243#233#222#253#243#234#222#252#242#232#222
- +#250#239#227#222#250#242#231#222#234#187#136#222#207#133'U'#156#180'i='#10
- +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
- +#255#255#0#199'yG'#170#204#134'U'#206#204#136'W'#222#203#136'V'#219#204#136
- +'V'#219#203#135'W'#219#202#131'P'#208#196'yBn'#178'g<'#8#255#255#255#0#255
- +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
- +#255#0#7'OnClick'#7#17'ActionCopyExecute'#0#0#9'TMenuItem'#14'PopupItemPaste'
- +#6'Action'#7#11'ActionPaste'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0
- +#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0
- +#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
- +#255#0#255#255#255#0'^^^'#2'[[[wXXX'#138'UUU'#138'RRR'#138'OOO'#138'LLL'#138
- +'JJJ'#138'HHH'#138'FFF'#138'DDDf c'#152'J c'#152#207' c'#152#255' c'#152#255
- +' c'#152#255'$c'#149#255'Xs'#136#255#247#247#247#255#240#240#240#255#240#240
- +#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255#243
- +#243#243#250'FFF'#132' c'#152#194'b'#165#215#255'e'#168#218#255'd'#166#217
- +#255'b'#164#216#255'b'#159#209#255'u'#142#164#255#239#239#239#255#231#231#231
- +#255#231#231#231#255#231#231#231#255#231#231#231#255#230#230#230#255#230#230
- +#230#255#236#236#236#250'III'#132' c'#152#255'h'#171#220#255'H'#142#207#255
- +'F'#139#206#255'C'#135#205#255'D'#132#198#255'h'#133#161#255#240#240#240#255
- +#180#180#180#255#180#180#180#255#180#180#180#255#180#180#180#255#180#180#180
- +#255#179#179#179#255#237#237#237#250'LLL'#132' c'#152#255'i'#174#220#255'J'
- +#147#209#255'H'#143#208#255'F'#139#206#255'G'#136#199#255'l'#136#163#255#240
- +#240#240#255#232#232#232#255#232#232#232#255#231#231#231#255#231#231#231#255
- ,#231#231#231#255#231#231#231#255#237#237#237#250'OOO'#132' c'#152#255'k'#177
- +#222#255'M'#151#211#255'K'#147#210#255'H'#143#208#255'J'#140#201#255'o'#139
- +#165#255#241#241#241#255#182#182#182#255#181#181#181#255#181#181#181#255#180
- +#180#180#255#180#180#180#255#180#180#180#255#237#237#237#250'SSS'#132' c'#152
- +#255'm'#179#223#255'P'#156#213#255'N'#152#211#255'K'#148#209#255'L'#145#203
- +#255'p'#142#167#255#241#241#241#255#233#233#233#255#233#233#233#255#232#232
- +#232#255#232#232#232#255#232#232#232#255#231#231#231#255#237#237#237#250'VVV'
- +#132' c'#152#255'p'#181#224#255'R'#159#215#255'P'#156#214#255'N'#152#212#255
- +'O'#149#205#255's'#145#170#255#241#241#241#255#183#183#183#255#182#182#182
- +#255#182#182#182#255#182#182#182#255#181#181#181#255#181#181#181#255#238#238
- +#238#250'ZZZ'#132' c'#152#255's'#183#225#255'W'#163#215#255'S'#160#215#255'P'
- +#157#213#255'R'#153#207#255'u'#148#172#255#248#248#248#255#242#242#242#255
- +#242#242#242#255#242#242#242#255#242#242#242#255#242#242#242#255#241#241#241
- +#255#244#244#244#250'^^^'#132' c'#152#255'v'#185#226#255'\'#167#217#255'X'
- +#164#216#255'S'#160#215#255'S'#158#213#255'a'#139#169#255'd'#136#161#255'd'
- +#135#161#255'c'#134#160#255'i'#135#159#255'Jh'#129#255'jjj'#138'hhh'#138'eee'
- +#138'bbbc c'#152#255'z'#187#227#255'a'#170#219#255'Z'#165#217#255'S'#160#215
- +#255'R'#159#215#255'R'#159#215#255'R'#159#215#255'R'#159#215#255'R'#159#215
- +#255'b'#163#216#255' c'#152#255#255#255#255#0#255#255#255#0#255#255#255#0#255
- +#255#255#0' c'#152#255'|'#189#228#255'e'#174#221#255'b'#171#220#255'^'#168
- +#218#255'\'#167#217#255'\'#167#217#255'\'#167#217#255'\'#167#217#255'R'#159
- +#215#255'b'#163#216#255' c'#152#255#255#255#255#0#255#255#255#0#255#255#255#0
- +#255#255#255#0' c'#152#255#127#191#228#255'i'#178#222#255'J'#155#218#255'D'
- +#151#220#255'C'#150#220#255'B'#150#220#255'B'#149#220#255'A'#149#219#255'Q'
- +#158#214#255'l'#178#222#255' c'#152#255#255#255#255#0#255#255#255#0#255#255
- +#255#0#255#255#255#0' c'#152#224'q'#179#219#254'~'#191#228#255'N'#157#223#255
- +#181#238#253#255'u'#212#240#255'u'#212#240#255#181#238#253#255'K'#155#222#255
- +'n'#180#224#255'm'#179#223#249' c'#152#243#255#255#255#0#255#255#255#0#255
- +#255#255#0#255#255#255#0' c'#152'2 c'#152#178' c'#152#255'7u'#164#255#182#239
- +#254#255#128#219#243#255#128#219#243#255#182#239#254#255'.n'#161#255' c'#152
- +#255' c'#152#165' c'#152'S'#255#255#255#0#255#255#255#0#255#255#255#0#255#255
- +#255#0#255#255#255#0#255#255#255#0' c'#152'* c'#152#255' c'#152#255' c'#152
- +#255' c'#152#255' c'#152#255' c'#152#240#255#255#255#0#255#255#255#0#255#255
- +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#7'OnClick'#7
- +#18'ActionPasteExecute'#0#0#9'TMenuItem'#15'PopupItemDelete'#6'Action'#7#12
- +'ActionDelete'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0
- +#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0
- +#0#0#0#0#0#0#255#255#255#0#255#255#255#0#0#0#0#6#0#0#0#14#0#0#0#22#0#0#0#30#0
- +#0#0'%'#0#0#0'*'#0#0#0'+'#0#0#0')'#0#0#0'$'#0#0#0#29#0#0#0#21#0#0#0#13#0#0#0
- +#4#255#255#255#0#255#255#255#0#255#255#255#0#0#0#255#1#0#0#211'F'#255#255#255
- +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
- +#255#255#0#255#255#255#0#0#0#211'F'#0#0#255#1#255#255#255#0#255#255#255#0#255
- +#255#255#0#0#0#255#1#0#0#206#150#0#0#206#255#0#0#206'x'#255#255#255#0#255#255
- +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#206'x'#0#0
- +#207#255#0#0#207#150#0#0#255#1#255#255#255#0#255#255#255#0#0#0#200'F'#0#0#200
- +#255#0#0#200#255#0#0#201#255#0#0#202'x'#255#255#255#0#255#255#255#0#255#255
- +#255#0#255#255#255#0#0#0#202'x'#0#0#201#255#0#0#201#255#0#0#201#255#0#0#200
- +'F'#255#255#255#0#255#255#255#0#255#255#255#0#0#0#193'x'#0#0#195#255#0#0#195
- +#255#0#0#195#255#0#0#196'x'#255#255#255#0#255#255#255#0#0#0#196'x'#0#0#195
- +#255#0#0#195#255#0#0#195#255#0#0#196'x'#255#255#255#0#255#255#255#0#255#255
- +#255#0#255#255#255#0#255#255#255#0#0#0#189'x'#0#0#189#255#0#0#189#255#0#0#189
- +#255#0#0#189'x'#0#0#189'x'#0#0#189#255#0#0#189#255#0#0#189#255#0#0#189'x'#255
- +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
- +#255#0#255#255#255#0#0#0#183'x'#0#0#183#255#0#0#183#255#0#0#183#255#0#0#183
- +#255#0#0#183#255#0#0#183#255#0#0#183'x'#255#255#255#0#255#255#255#0#255#255
- +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
- +#255#255#255#0#0#0#176'x'#0#0#177#255#0#0#177#255#0#0#177#255#0#0#177#255#0#0
- +#179'x'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
- +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0
- +#170'x'#0#0#171#255#0#0#171#255#0#0#171#255#0#0#172#255#0#0#172'x'#255#255
- +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
- +#255#255#255#0#255#255#255#0#255#255#255#0#0#0#166'x'#0#0#165#255#0#0#165#255
- +#0#0#165#255#0#0#166#255#0#0#166#255#0#0#166#255#0#0#166'x'#255#255#255#0#255
- +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
- ,#255#0#0#0#159'x'#0#0#159#255#0#0#159#255#0#0#159#255#0#0#159'x'#0#0#159'x'#0
- +#0#160#255#0#0#160#255#0#0#160#255#0#0#159'x'#255#255#255#0#255#255#255#0#255
- +#255#255#0#255#255#255#0#255#255#255#0#0#0#153'x'#0#0#153#255#0#0#153#255#0#0
- +#153#255#0#0#153'x'#255#255#255#0#255#255#255#0#0#0#153'x'#0#0#154#255#0#0
- +#154#255#0#0#154#255#0#0#153'x'#255#255#255#0#255#255#255#0#255#255#255#0#0#0
- +#146'F'#0#0#147#255#0#0#147#255#0#0#147#255#0#0#149'x'#255#255#255#0#255#255
- +#255#0#255#255#255#0#255#255#255#0#0#0#149'x'#0#0#148#255#0#0#148#255#0#0#148
- +#255#0#0#149'F'#255#255#255#0#255#255#255#0#0#0#255#1#0#0#141#150#0#0#141#255
- +#0#0#142'x'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
- +#255#0#255#255#255#0#0#0#142'x'#0#0#142#255#0#0#143#150#0#0#255#1#255#255#255
- +#0#255#255#255#0#255#255#255#0#0#0#255#1#0#0#135'F'#255#255#255#0#255#255#255
- +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
- +#255#255#0#0#0#135'F'#0#0#255#1#255#255#255#0#255#255#255#0#255#255#255#0#255
+ +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#11#136#2#255#255#255#0#180
+ +#142'Z'#144#246#234#221#255#225#205#180#255#177#141']'#191#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
- +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#7'OnClick'#7#19'Act'
- +'ionDeleteExecute'#0#0#9'TMenuItem'#17'PopupItemDivider2'#7'Caption'#6#1'-'#0
- +#0#9'TMenuItem'#18'PopupItemSelectAll'#6'Action'#7#15'ActionSelectAll'#7'OnC'
- +'lick'#7#22'ActionSelectAllExecute'#0#0#9'TMenuItem'#17'PopupItemDivider3'#7
- +'Caption'#6#1'-'#0#0#9'TMenuItem'#13'PopupItemFind'#6'Action'#7#14'ActionFin'
- +'dNext'#7'OnClick'#7#21'ActionFindNextExecute'#0#0#9'TMenuItem'#16'PopupItem'
- +'Replace'#6'Action'#7#13'ActionReplace'#7'Caption'#6#7'Replace'#7'OnClick'#7
- +#20'ActionReplaceExecute'#0#0#0#14'TReplaceDialog'#10'dlgReplace'#7'Options'
- +#11#6'frDown'#10'frFindNext'#12'frHideUpDown'#0#6'OnFind'#7#14'dlgReplaceFin'
- +'d'#9'OnReplace'#7#17'dlgReplaceReplace'#4'left'#3'`'#2#3'top'#2'h'#0#0#6'TT'
- +'imer'#11'UpdateTimer'#8'Interval'#3#16''''#4'left'#3'`'#2#3'top'#3#144#0#0#0
- +#6'TTimer'#10'MouseTimer'#8'Interval'#2'd'#7'OnTimer'#7#17'ChangeMouseStatus'
- +#4'left'#3#192#1#3'top'#3#200#0#0#0#6'TTimer'#9'NewsTimer'#8'Interval'#3#244
- +#1#7'OnTimer'#7#14'NewsTimerTimer'#4'left'#3#232#1#3'top'#3#200#0#0#0#0
+ +#179#140'W'#137#241#226#212#255#206#178#142#244#245#235#224#255#166#127'J'
+ +#157#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+ +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+ +#255#255#0#177#137'S'#132#238#223#206#255#151'f e'#194#163'|'#218#233#216#197
+ +#253#169#130'N{'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+ +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+ +#255#0#175#135'P|'#231#213#193#255#149'e'#31'+'#143'\'#18#27#197#167#131#231
+ +#213#188#157#225#181#147'db'#255#255#255#0#255#255#255#0#255#255#255#0#255
+ +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+ +#255#0#172#131'Ku'#222#201#175#255#149'd'#29#31#255#255#255#0#146'`'#23'&'
+ +#195#164'|'#235#181#144'c'#203#255#255#255#0#255#255#255#0#255#255#255#0#255
+ +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+ +#255#0#170#129'Go'#214#189#159#247#147'a'#25#16#255#255#255#0#255#255#255#0
+ +#150'f ,'#169#128'K'#203#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+ +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+ +#168'}Bi'#204#176#139#224#145']'#20#9#255#255#255#0#255#255#255#0#255#255#255
+ +#0#146'`'#23#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+ +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#154'k''1'
+ +#170'~C'#161#146'`'#24#5#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+ +#255#0#255#255#255#0#255#255#255#0#7'OnClick'#7#16'ActionCutExecute'#0#0#9'T'
+ +'MenuItem'#13'PopupItemCopy'#6'Action'#7#10'ActionCopy'#11'Bitmap.Data'#10':'
+ +#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '
+ +#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255
+ +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#197'sB'#193
+ +#198'uE'#230#200'uE'#254#199'uE'#243#200'uE'#243#199'uE'#243#199'uE'#243#200
+ +'uF'#244#197'tD'#232#202#127'S'#241#255#255#255#0#255#255#255#0#255#255#255#0
+ +#255#255#255#0#255#255#255#0#255#255#255#0#199'yI'#237#252#243#236#255#250
+ +#241#232#255#250#240#231#255#251#241#233#255#251#242#234#255#251#242#234#255
+ +#251#242#235#255#253#244#238#255#202#128'T'#249#255#255#255#0#255#255#255#0
+ +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#207#130'S'#255#239
+ +#241#231#255#255#233#217#255#255#234#219#255#255#233#217#255#255#231#215#255
+ +#255#229#210#255#255#226#203#255#239#242#232#255#206#129'V'#255#255#255#255#0
+ +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#204
+ +#131'R'#251#251#245#238#255#255#233#217#255#255#234#219#255#255#233#217#255
+ +#255#231#215#255#255#229#210#255#255#226#203#255#251#246#239#255#204#131'U'
+ +#254#199'yJ'#185#200'yK'#206#200'uE'#221#199'uE'#212#200'uE'#212#199'uE'#212
+ +#202#132'R'#255#255#247#241#255#255#233#217#255#255#234#219#255#255#233#217
+ +#255#255#231#215#255#255#229#210#255#255#226#203#255#255#247#241#255#203#133
+ +'U'#254#200'|N'#211#252#243#236#222#250#241#232#222#250#240#231#222#251#241
+ +#233#222#251#242#234#222#228#186#145#255#255#247#240#255#255#231#213#255#253
+ +#231#214#255#253#230#212#255#252#228#208#255#251#227#203#255#250#220#194#255
+ +#254#243#232#255#204#134'V'#254#207#130'S'#222#239#241#231#222#255#233#217
+ +#222#255#234#219#222#255#233#217#222#255#231#215#222#228#187#145#255#255#247
+ +#242#255#254#231#213#255#254#231#213#255#253#229#209#255#250#224#202#255#249
+ +#222#196#255#247#217#188#255#253#242#231#255#204#135'W'#254#204#131'R'#219
+ +#251#245#238#222#255#233#217#222#255#234#219#222#255#233#217#222#255#231#215
+ +#222#228#187#146#255#254#247#241#255#252#229#210#255#252#228#209#255#251#226
+ +#204#255#249#221#196#255#246#215#187#255#243#209#175#255#250#239#228#255#204
+ +#135'X'#254#202#132'R'#219#255#247#241#222#255#233#217#222#255#234#219#222
+ +#255#233#217#222#255#231#215#222#228#187#146#255#254#246#240#255#252#226#205
+ +#255#252#227#205#255#250#223#200#255#247#217#188#255#245#233#221#255#250#243
+ +#235#255#251#248#243#255#202#131'S'#254#203#133'S'#219#255#247#240#222#255
+ +#231#213#222#253#231#214#222#253#230#212#222#252#228#208#222#228#187#147#255
+ ,#254#245#237#255#252#222#197#255#251#224#199#255#249#220#194#255#245#211#180
+ +#255#254#249#243#255#250#226#196#255#236#193#147#255#195'}H'#147#203#134'T'
+ +#219#255#247#242#222#254#231#213#222#254#231#213#222#253#229#209#222#250#224
+ +#202#222#229#190#150#255#255#255#254#255#253#243#233#255#253#243#234#255#252
+ +#242#232#255#250#239#227#255#250#242#231#255#234#187#136#255#207#133'U'#179
+ +#180'i='#12#203#134'U'#219#254#247#241#222#252#229#210#222#252#228#209#222
+ +#251#226#204#222#249#221#196#222#234#195#157#255#230#191#150#255#228#187#146
+ +#255#228#187#146#255#209#160'l'#245#208#158'm'#246#204#150'_'#218#196'yB~'
+ +#178'g<'#9#255#255#255#0#203#134'U'#219#254#246#240#222#252#226#205#222#252
+ +#227#205#222#250#223#200#222#247#217#188#222#245#233#221#222#250#243#235#222
+ +#251#248#243#222#205#149'e'#220#255#255#255#0#255#255#255#0#255#255#255#0#255
+ +#255#255#0#255#255#255#0#255#255#255#0#203#134'V'#218#254#245#237#222#252#222
+ +#197#222#251#224#199#222#249#220#194#222#245#211#180#222#254#249#243#222#250
+ +#226#196#222#236#193#147#222#195'}H'#128#255#255#255#0#255#255#255#0#255#255
+ +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#202#133'T'#208#255#255#255
+ +#219#253#243#233#222#253#243#234#222#252#242#232#222#250#239#227#222#250#242
+ +#231#222#234#187#136#222#207#133'U'#156#180'i='#10#255#255#255#0#255#255#255
+ +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#199'yG'#170#204
+ +#134'U'#206#204#136'W'#222#203#136'V'#219#204#136'V'#219#203#135'W'#219#202
+ +#131'P'#208#196'yBn'#178'g<'#8#255#255#255#0#255#255#255#0#255#255#255#0#255
+ +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#7'OnClick'#7#17'ActionC'
+ +'opyExecute'#0#0#9'TMenuItem'#14'PopupItemPaste'#6'Action'#7#11'ActionPaste'
+ +#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16
+ +#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0
+ +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'^^^'#2
+ +'[[[wXXX'#138'UUU'#138'RRR'#138'OOO'#138'LLL'#138'JJJ'#138'HHH'#138'FFF'#138
+ +'DDDf c'#152'J c'#152#207' c'#152#255' c'#152#255' c'#152#255'$c'#149#255'Xs'
+ +#136#255#247#247#247#255#240#240#240#255#240#240#240#255#240#240#240#255#240
+ +#240#240#255#240#240#240#255#240#240#240#255#243#243#243#250'FFF'#132' c'#152
+ +#194'b'#165#215#255'e'#168#218#255'd'#166#217#255'b'#164#216#255'b'#159#209
+ +#255'u'#142#164#255#239#239#239#255#231#231#231#255#231#231#231#255#231#231
+ +#231#255#231#231#231#255#230#230#230#255#230#230#230#255#236#236#236#250'III'
+ +#132' c'#152#255'h'#171#220#255'H'#142#207#255'F'#139#206#255'C'#135#205#255
+ +'D'#132#198#255'h'#133#161#255#240#240#240#255#180#180#180#255#180#180#180
+ +#255#180#180#180#255#180#180#180#255#180#180#180#255#179#179#179#255#237#237
+ +#237#250'LLL'#132' c'#152#255'i'#174#220#255'J'#147#209#255'H'#143#208#255'F'
+ +#139#206#255'G'#136#199#255'l'#136#163#255#240#240#240#255#232#232#232#255
+ +#232#232#232#255#231#231#231#255#231#231#231#255#231#231#231#255#231#231#231
+ +#255#237#237#237#250'OOO'#132' c'#152#255'k'#177#222#255'M'#151#211#255'K'
+ +#147#210#255'H'#143#208#255'J'#140#201#255'o'#139#165#255#241#241#241#255#182
+ +#182#182#255#181#181#181#255#181#181#181#255#180#180#180#255#180#180#180#255
+ +#180#180#180#255#237#237#237#250'SSS'#132' c'#152#255'm'#179#223#255'P'#156
+ +#213#255'N'#152#211#255'K'#148#209#255'L'#145#203#255'p'#142#167#255#241#241
+ +#241#255#233#233#233#255#233#233#233#255#232#232#232#255#232#232#232#255#232
+ +#232#232#255#231#231#231#255#237#237#237#250'VVV'#132' c'#152#255'p'#181#224
+ +#255'R'#159#215#255'P'#156#214#255'N'#152#212#255'O'#149#205#255's'#145#170
+ +#255#241#241#241#255#183#183#183#255#182#182#182#255#182#182#182#255#182#182
+ +#182#255#181#181#181#255#181#181#181#255#238#238#238#250'ZZZ'#132' c'#152#255
+ +'s'#183#225#255'W'#163#215#255'S'#160#215#255'P'#157#213#255'R'#153#207#255
+ +'u'#148#172#255#248#248#248#255#242#242#242#255#242#242#242#255#242#242#242
+ +#255#242#242#242#255#242#242#242#255#241#241#241#255#244#244#244#250'^^^'#132
+ +' c'#152#255'v'#185#226#255'\'#167#217#255'X'#164#216#255'S'#160#215#255'S'
+ +#158#213#255'a'#139#169#255'd'#136#161#255'd'#135#161#255'c'#134#160#255'i'
+ +#135#159#255'Jh'#129#255'jjj'#138'hhh'#138'eee'#138'bbbc c'#152#255'z'#187
+ +#227#255'a'#170#219#255'Z'#165#217#255'S'#160#215#255'R'#159#215#255'R'#159
+ +#215#255'R'#159#215#255'R'#159#215#255'R'#159#215#255'b'#163#216#255' c'#152
+ +#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0' c'#152#255'|'
+ +#189#228#255'e'#174#221#255'b'#171#220#255'^'#168#218#255'\'#167#217#255'\'
+ +#167#217#255'\'#167#217#255'\'#167#217#255'R'#159#215#255'b'#163#216#255' c'
+ +#152#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0' c'#152#255
+ +#127#191#228#255'i'#178#222#255'J'#155#218#255'D'#151#220#255'C'#150#220#255
+ +'B'#150#220#255'B'#149#220#255'A'#149#219#255'Q'#158#214#255'l'#178#222#255
+ +' c'#152#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0' c'#152
+ +#224'q'#179#219#254'~'#191#228#255'N'#157#223#255#181#238#253#255'u'#212#240
+ ,#255'u'#212#240#255#181#238#253#255'K'#155#222#255'n'#180#224#255'm'#179#223
+ +#249' c'#152#243#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0' c'
+ +#152'2 c'#152#178' c'#152#255'7u'#164#255#182#239#254#255#128#219#243#255#128
+ +#219#243#255#182#239#254#255'.n'#161#255' c'#152#255' c'#152#165' c'#152'S'
+ +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+ +#255#255#0' c'#152'* c'#152#255' c'#152#255' c'#152#255' c'#152#255' c'#152
+ +#255' c'#152#240#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+ +#255#255#0#255#255#255#0#255#255#255#0#7'OnClick'#7#18'ActionPasteExecute'#0
+ +#0#9'TMenuItem'#15'PopupItemDelete'#6'Action'#7#12'ActionDelete'#11'Bitmap.D'
+ +'ata'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0
+ +#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0
+ +#255#255#255#0#0#0#0#6#0#0#0#14#0#0#0#22#0#0#0#30#0#0#0'%'#0#0#0'*'#0#0#0'+'
+ +#0#0#0')'#0#0#0'$'#0#0#0#29#0#0#0#21#0#0#0#13#0#0#0#4#255#255#255#0#255#255
+ +#255#0#255#255#255#0#0#0#255#1#0#0#211'F'#255#255#255#0#255#255#255#0#255#255
+ +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+ +#0#0#211'F'#0#0#255#1#255#255#255#0#255#255#255#0#255#255#255#0#0#0#255#1#0#0
+ +#206#150#0#0#206#255#0#0#206'x'#255#255#255#0#255#255#255#0#255#255#255#0#255
+ +#255#255#0#255#255#255#0#255#255#255#0#0#0#206'x'#0#0#207#255#0#0#207#150#0#0
+ +#255#1#255#255#255#0#255#255#255#0#0#0#200'F'#0#0#200#255#0#0#200#255#0#0#201
+ +#255#0#0#202'x'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0
+ +#202'x'#0#0#201#255#0#0#201#255#0#0#201#255#0#0#200'F'#255#255#255#0#255#255
+ +#255#0#255#255#255#0#0#0#193'x'#0#0#195#255#0#0#195#255#0#0#195#255#0#0#196
+ +'x'#255#255#255#0#255#255#255#0#0#0#196'x'#0#0#195#255#0#0#195#255#0#0#195
+ +#255#0#0#196'x'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+ +#255#255#0#0#0#189'x'#0#0#189#255#0#0#189#255#0#0#189#255#0#0#189'x'#0#0#189
+ +'x'#0#0#189#255#0#0#189#255#0#0#189#255#0#0#189'x'#255#255#255#0#255#255#255
+ +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0
+ +#183'x'#0#0#183#255#0#0#183#255#0#0#183#255#0#0#183#255#0#0#183#255#0#0#183
+ +#255#0#0#183'x'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+ +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#176'x'
+ +#0#0#177#255#0#0#177#255#0#0#177#255#0#0#177#255#0#0#179'x'#255#255#255#0#255
+ +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+ +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#170'x'#0#0#171#255#0#0
+ +#171#255#0#0#171#255#0#0#172#255#0#0#172'x'#255#255#255#0#255#255#255#0#255
+ +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+ +#255#0#255#255#255#0#0#0#166'x'#0#0#165#255#0#0#165#255#0#0#165#255#0#0#166
+ +#255#0#0#166#255#0#0#166#255#0#0#166'x'#255#255#255#0#255#255#255#0#255#255
+ +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#159'x'#0#0
+ +#159#255#0#0#159#255#0#0#159#255#0#0#159'x'#0#0#159'x'#0#0#160#255#0#0#160
+ +#255#0#0#160#255#0#0#159'x'#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+ +#255#0#255#255#255#0#0#0#153'x'#0#0#153#255#0#0#153#255#0#0#153#255#0#0#153
+ +'x'#255#255#255#0#255#255#255#0#0#0#153'x'#0#0#154#255#0#0#154#255#0#0#154
+ +#255#0#0#153'x'#255#255#255#0#255#255#255#0#255#255#255#0#0#0#146'F'#0#0#147
+ +#255#0#0#147#255#0#0#147#255#0#0#149'x'#255#255#255#0#255#255#255#0#255#255
+ +#255#0#255#255#255#0#0#0#149'x'#0#0#148#255#0#0#148#255#0#0#148#255#0#0#149
+ +'F'#255#255#255#0#255#255#255#0#0#0#255#1#0#0#141#150#0#0#141#255#0#0#142'x'
+ +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+ +#255#255#0#0#0#142'x'#0#0#142#255#0#0#143#150#0#0#255#1#255#255#255#0#255#255
+ +#255#0#255#255#255#0#0#0#255#1#0#0#135'F'#255#255#255#0#255#255#255#0#255#255
+ +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+ +#0#0#135'F'#0#0#255#1#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+ +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+ +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+ +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#7'OnClick'#7#19'ActionDelet'
+ +'eExecute'#0#0#9'TMenuItem'#17'PopupItemDivider2'#7'Caption'#6#1'-'#0#0#9'TM'
+ +'enuItem'#18'PopupItemSelectAll'#6'Action'#7#15'ActionSelectAll'#7'OnClick'#7
+ +#22'ActionSelectAllExecute'#0#0#9'TMenuItem'#17'PopupItemDivider3'#7'Caption'
+ +#6#1'-'#0#0#9'TMenuItem'#13'PopupItemFind'#6'Action'#7#14'ActionFindNext'#7
+ +'OnClick'#7#21'ActionFindNextExecute'#0#0#9'TMenuItem'#16'PopupItemReplace'#6
+ +'Action'#7#13'ActionReplace'#7'Caption'#6#7'Replace'#7'OnClick'#7#20'ActionR'
+ +'eplaceExecute'#0#0#0#14'TReplaceDialog'#10'dlgReplace'#7'Options'#11#6'frDo'
+ +'wn'#10'frFindNext'#12'frHideUpDown'#0#6'OnFind'#7#14'dlgReplaceFind'#9'OnRe'
+ +'place'#7#17'dlgReplaceReplace'#4'left'#3'`'#2#3'top'#2'h'#0#0#6'TTimer'#11
+ +'UpdateTimer'#8'Interval'#3#16''''#4'left'#3'`'#2#3'top'#3#144#0#0#0#6'TTime'
+ ,'r'#10'MouseTimer'#8'Interval'#2'd'#7'OnTimer'#7#17'ChangeMouseStatus'#4'lef'
+ +'t'#3#192#1#3'top'#3#200#0#0#0#6'TTimer'#9'NewsTimer'#8'Interval'#3#244#1#7
+ +'OnTimer'#7#14'NewsTimerTimer'#4'left'#3#232#1#3'top'#3#200#0#0#0#0
]);
diff --git a/trunk/Projects/SAMufasaGUI/testunit.pas b/trunk/Projects/SAMufasaGUI/testunit.pas
index d6a7b80..6716275 100644
--- a/trunk/Projects/SAMufasaGUI/testunit.pas
+++ b/trunk/Projects/SAMufasaGUI/testunit.pas
@@ -40,11 +40,11 @@ uses
colourpicker, framescript, windowselector, lcltype, ActnList,
SynExportHTML, SynEditKeyCmds, SynEditHighlighter,
SynEditMarkupHighAll, LMessages, Buttons,
- stringutil,mufasatypesutil,
+ stringutil,mufasatypesutil,mufasabase,
about, framefunctionlist, ocr, updateform, simbasettings;
const
- SimbaVersion = 579;
+ SimbaVersion = 581;
type
@@ -65,6 +65,7 @@ type
{ TForm1 }
TForm1 = class(TForm)
+ ActionConsole: TAction;
ActionNormalSize: TAction;
ActionCompileScript: TAction;
ActionExit: TAction;
@@ -112,6 +113,7 @@ type
MenuItemDivider9: TMenuItem;
MouseTimer: TTimer;
NewsTimer: TTimer;
+ TT_Console: TToolButton;
TT_Cut: TToolButton;
TT_Copy: TToolButton;
TT_Paste: TToolButton;
@@ -214,6 +216,7 @@ type
procedure ActionClearDebugExecute(Sender: TObject);
procedure ActionCloseTabExecute(Sender: TObject);
procedure ActionCompileScriptExecute(Sender: TObject);
+ procedure ActionConsoleExecute(Sender: TObject);
procedure ActionCopyExecute(Sender: TObject);
procedure ActionCutExecute(Sender: TObject);
procedure ActionDeleteExecute(Sender: TObject);
@@ -330,6 +333,10 @@ type
OCR_Fonts: TMOCR;
Picker: TMColorPicker;
Selector: TMWindowSelector;
+ {$ifdef mswindows}
+ ConsoleVisible : boolean;
+ procedure ShowConsole( ShowIt : boolean);
+ {$endif}
procedure FunctionListShown( ShowIt : boolean);
property ScriptState : TScriptState read GetScriptState write SetScriptState;
procedure SafeCallThread;
@@ -357,10 +364,12 @@ type
procedure AddRecentFile(filename : string);
procedure InitalizeTMThread(var Thread : TMThread);
procedure HandleParameters;
+ procedure OnSaveScript(const Filename : string);
end;
procedure ClearDebug;
procedure formWriteln( S : String);
+ procedure formWritelnEx( S : String);
function GetMethodName( Decl : string; PlusNextChar : boolean) : string;
const
@@ -388,7 +397,13 @@ uses
colourhistory,
math;
-//{$ifdef mswindows}
+{$ifdef mswindows}
+function ConsoleHandler( eventType : DWord) : WINBOOL;stdcall;
+begin
+ TThread.Synchronize(nil,@Form1.Close);
+ Result := true;
+end;
+{$endif}
var
DebugCriticalSection: syncobjs.TCriticalSection;
@@ -506,18 +521,24 @@ procedure TForm1.UpdateTimerCheck(Sender: TObject);
var
chk: String;
time:integer;
+ LatestVersion : integer;
begin
chk := LoadSettingDef('Settings/Updater/CheckForUpdates','True');
if chk <> 'True' then
Exit;
- if SimbaUpdateForm.CanUpdate then
+ LatestVersion:= SimbaUpdateForm.GetLatestSimbaVersion;
+ if LatestVersion > SimbaVersion then
begin;
TT_Update.Visible:=True;
- formWriteln('A new update of Simba is available!');
+ formWritelnEx('A new update of Simba is available!');
+ formWritelnEx(format('Current version is %d. Latest version is %d',[SimbaVersion,LatestVersion]));
+ end else
+ begin
+ mDebugLn(format('Current Simba version: %d',[SimbaVersion]));
+ mDebugLn('Latest Simba Version: ' + IntToStr(LatestVersion));
end;
-
time := StrToIntDef(LoadSettingDef('Settings/Updater/CheckEveryXMinutes','30'),30);
UpdateTimer.Interval:= time {mins} * 60 {secs} * 1000 {ms};//Every half hour
end;
@@ -537,7 +558,7 @@ end;
procedure formWriteln( S : String);
begin
- writeln('formWriteln: ' + s);
+ mDebugLn('formWriteln: ' + s);
{$ifdef MSWindows}
//Ha, we cán acces the debugmemo
Form1.Memo1.Lines.Add(s);
@@ -566,7 +587,7 @@ begin
end else
if ScriptState <> ss_None then
begin;
- Writeln('The script hasn''t stopped yet, so we cannot start a new one.');
+ FormWritelnEx('The script hasn''t stopped yet, so we cannot start a new one.');
exit;
end;
InitalizeTMThread(scriptthread);
@@ -589,7 +610,7 @@ begin
ScriptThread.Suspended:= True;
ScriptState:= ss_Paused;
{$else}
- Writeln('Linux users are screwed, no pause button for u!');
+ mDebugLn('Linux users are screwed, no pause button for u!');
{$endif}
end else if ScriptState = ss_Paused then
begin;
@@ -606,8 +627,8 @@ begin
case ScriptState of
ss_Stopping:
begin //Terminate the thread the tough way.
- writeln('Terminating the Scriptthread');
- Writeln('Exit code terminate: ' +inttostr(KillThread(ScriptThread.Handle)));
+ mDebugLn('Terminating the Scriptthread');
+ mDebugLn('Exit code terminate: ' +inttostr(KillThread(ScriptThread.Handle)));
WaitForThreadTerminate(ScriptThread.Handle, 0);
ScriptThread.Free;
ScriptState := ss_None;
@@ -771,7 +792,7 @@ begin
end
else
begin
- Writeln('Searching: ' + SearchString);
+ mDebugLn('Searching: ' + SearchString);
if next then
CurrPos := CurrScript.SynEdit.LogicalCaretXY
else
@@ -782,7 +803,7 @@ begin
res := CurrScript.SynEdit.SearchReplaceEx(SearchString,'',SearchOptions,Classes.Point(0,0));
if res > 0 then
begin;
- Writeln('End of document reached');
+ mDebugLn('End of document reached');
SearchStart.x := 0;
SearchStart.Y := CurrScript.SynEdit.LogicalCaretXY.y;
end;
@@ -818,7 +839,7 @@ var
begin
if tabs.Count < 1 then
begin;
- Writeln('Cannot refresh tab, since there are no tabs.');
+ mDebugLn('Cannot refresh tab, since there are no tabs.');
exit;
end;
NewTab := PageControl1.TabIndex;
@@ -840,7 +861,8 @@ begin
SetScriptState(Tab.ScriptFrame.FScriptState);//To set the buttons right
if Self.Showing then
if Tab.TabSheet.TabIndex = Self.PageControl1.TabIndex then
- CurrScript.SynEdit.SetFocus;
+ if CurrScript.SynEdit.CanFocus then
+ CurrScript.SynEdit.SetFocus;
StopCodeCompletion;//To set the highlighting back to normal;
frmFunctionList.LoadScriptTree(CurrScript.SynEdit.Text);
with CurrScript.SynEdit do
@@ -913,6 +935,10 @@ begin
PluginsPath := CreateSetting('Settings/Plugins/Path', ExpandFileName(MainDir+ DS+ 'Plugins' + DS));
CreateSetting('LastConfig/MainForm/Position','');
CreateSetting('LastConfig/MainForm/State','Normal');
+ {$ifdef MSWindows}
+ CreateSetting('LastConfig/Console/Visible','True');
+ ShowConsole(True);
+ {$endif}
if not DirectoryExists(IncludePath) then
CreateDir(IncludePath);
if not DirectoryExists(FontPath) then
@@ -960,6 +986,13 @@ begin
FunctionListShown(True)
else
FunctionListShown(false);
+ {$ifdef MSWindows}
+ str := LowerCase(LoadSettingDef('LastConfig/Console/Visible','True'));
+ if str = 'true' then
+ ShowConsole(True)
+ else
+ ShowConsole(false);
+ {$endif}
end;
procedure TForm1.SaveFormSettings;
@@ -988,6 +1021,12 @@ begin
SetKeyValue('LastConfig/MainForm/FunctionListShown','True')
else
SetKeyValue('LastConfig/MainForm/FunctionListShown','False');
+ {$ifdef MSWindows}
+ if ConsoleVisible then
+ SetKeyValue('LastConfig/Console/Visible','True')
+ else
+ SetKeyValue('LastConfig/Console/Visible','false');
+ {$endif}
SaveToXML(SimbaSettingsFile);
end;
end;
@@ -1040,7 +1079,7 @@ begin
else
Thread := TPSThread.Create(True,@CurrentSyncInfo,PluginsPath);
except
- writeln('Failed to initialise the library!');
+ mDebugLn('Failed to initialise the library!');
Exit;
end;
{$IFNDEF TERMINALWRITELN}
@@ -1065,10 +1104,10 @@ begin
PluginsGlob.AddPath(PluginsPath);
if not DirectoryExists(IncludePath) then
if FirstRun then
- Writeln('Warning: The include directory specified in the Settings isn''t valid.');
+ FormWritelnEx('Warning: The include directory specified in the Settings isn''t valid.');
if not DirectoryExists(fontPath) then
if FirstRun then
- Writeln('Warning: The font directory specified in the Settings isn''t valid. Can''t load fonts now');
+ FormWritelnEx('Warning: The font directory specified in the Settings isn''t valid. Can''t load fonts now');
Thread.SetPaths(ScriptPath,AppPath,Includepath,PluginsPath,fontPath);
if selector.haspicked then Thread.Client.IOManager.SetTarget(Selector.LastPick);
@@ -1101,7 +1140,7 @@ begin
begin;
ErrorMsg:=Application.CheckOptions('ro:','run open:');
if ErrorMsg <> '' then
- writeln(ErrorMSG)
+ mDebugLn(ErrorMSG)
else
begin
if Application.HasOption('o','open') then
@@ -1115,6 +1154,25 @@ begin
Self.RunScript;
end;
+procedure TForm1.OnSaveScript(const Filename: string);
+begin
+ with CurrScript do
+ begin
+ ScriptFile:= Filename;
+ ScriptName:= ExtractFileNameOnly(Filename);
+ mDebugLn('Script name will be: ' + ScriptName);
+ FormWritelnEx('Succesfully saved: ' + Filename);
+ StartText:= SynEdit.Lines.Text;
+ ScriptChanged := false;
+ SynEdit.MarkTextAsSaved;
+ Self.Caption:= Format(WindowTitle,[ScriptName]);
+ CurrTab.TabSheet.Caption:= ScriptName;
+ Self.AddRecentFile(FileName);
+ StatusBar.Panels[Panel_ScriptName].Text:= ScriptName;
+ StatusBar.Panels[Panel_ScriptPath].text:= ScriptFile;
+ end;
+end;
+
procedure TForm1.ActionTabLastExecute(Sender: TObject);
var
@@ -1145,6 +1203,13 @@ begin
TempThread.Resume;
end;
+procedure TForm1.ActionConsoleExecute(Sender: TObject);
+begin
+ {$ifdef mswindows}
+ ShowConsole(not ConsoleVisible);
+ {$endif}
+end;
+
procedure TForm1.ActionCopyExecute(Sender: TObject);
begin
if CurrScript.SynEdit.Focused or ScriptPopup.HandleAllocated then
@@ -1339,7 +1404,7 @@ begin
Self.Manager.GetMousePos(x, y);
if self.Manager.ReceivedError() then
begin
- formWriteln('Our window no longer exists -> Resetting to desktop');
+ FormWritelnEx('Our window no longer exists -> Resetting to desktop');
self.Manager.SetDesktop;
self.Manager.ResetError;
end;
@@ -1373,7 +1438,7 @@ begin
editSearchList.Color:= clWhite;
if FilterTree.Focused then
begin;
- Writeln('This is currently not supported');
+ mDebugLn('This is currently not supported');
SynEdit.Lines[CompletionCaret.y - 1] := CompletionStart;
SynEdit.LogicalCaretXY:= Classes.point(CompletionCaret.x,CompletionCaret.y);
SynEdit.SelEnd:= SynEdit.SelStart;
@@ -1578,6 +1643,12 @@ begin
MainDir:= ExtractFileDir(Application.ExeName);
RecentFiles := TStringList.Create;
SimbaSettingsFile := MainDir + DS + 'settings.xml';
+ {$ifdef MSWindows}
+ ConsoleVisible := False;
+ {$else}
+ TT_Console.Visible:= false;
+ InitmDebug;
+ {$endif}
if FileExists(SimbaSettingsFile) then
begin
Application.CreateForm(TSettingsForm,SettingsForm);
@@ -1606,13 +1677,15 @@ begin
{$ifdef mswindows}
if FileExists(Application.ExeName+'_old_') then
begin
- Writeln('We still have an out-dated exe file in the dir, lets remove!');
- Writeln(format('Sucesfully deleted the file? %s',[BoolToStr(DeleteFile(PChar(Application.ExeName + '_old_')),true)]));
+ mDebugLn('We still have an out-dated exe file in the dir, lets remove!');
+ mDebugLn(format('Sucesfully deleted the file? %s',[BoolToStr(DeleteFile(PChar(Application.ExeName + '_old_')),true)]));
end;
+ SetConsoleCtrlHandler(@ConsoleHandler,true);
{$endif}
frmFunctionList.OnEndDock:= @frmFunctionList.FrameEndDock;
FirstRun := true;//Our next run is the first run.
HandleParameters;
+ TT_Update.Visible:= false;
end;
procedure TForm1.FormDestroy(Sender: TObject);
@@ -1734,6 +1807,11 @@ begin;
end;
end;
+procedure formWritelnEx(S: String);
+begin
+ Form1.Memo1.Lines.Add(s);
+end;
+
function GetMethodName( Decl : string; PlusNextChar : boolean) : string;
var
I : integer;
@@ -1876,6 +1954,7 @@ begin
News := TStringList.Create;
News.Text:= s;
Memo1.Lines.AddStrings(News);
+ Memo1.Lines.add('');
News.free;
end;
@@ -1902,7 +1981,7 @@ begin
ColourHistoryForm.AddColObj(cobj, true);
ColourHistoryForm.Show;
end;
- formWriteln('Picked colour: ' + inttostr(c) + ' at (' + inttostr(x) + ', ' + inttostr(y) + ')');
+ FormWritelnEx('Picked colour: ' + inttostr(c) + ' at (' + inttostr(x) + ', ' + inttostr(y) + ')');
end;
@@ -1910,7 +1989,7 @@ procedure TForm1.ButtonSelectorDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Manager.SetTarget(Selector.Drag);
- writeln('New window: ' + IntToStr(Selector.LastPick));
+ FormWritelnEx('New window: ' + IntToStr(Selector.LastPick));
end;
procedure TForm1.NoTray(Sender: TObject);
@@ -1943,7 +2022,7 @@ begin
PopupTab := PageControl1.TabIndexAtClientPos(MousePos);
if PopupTab = -1 then
begin
- Writeln('We couldn''t find which tab you clicked on, closing the popup');
+ mDebugLn('We couldn''t find which tab you clicked on, closing the popup');
Handled := true;
end;
end;
@@ -2042,6 +2121,24 @@ begin
result := SettingsForm.Settings.GetSetDefaultKeyValue(Key,value);
end;
+{$ifdef mswindows}
+procedure TForm1.ShowConsole(ShowIt: boolean);
+begin
+ if ShowIt = ConsoleVisible then
+ Exit;
+ if showit then //Console is hidden, get it back!
+ begin
+ AllocConsole;
+ InitmDebug;//Make sure mDebugLn works correctly!
+ end else
+ begin
+ FreeConsole;
+ FreemDebug;
+ end;
+ ConsoleVisible:= ShowIt;
+end;
+{$endif}
+
procedure TForm1.FunctionListShown(ShowIt: boolean);
begin
with MenuItemFunctionList, frmFunctionList do
@@ -2078,7 +2175,7 @@ procedure TForm1.SafeCallThread;
var
thread: TMThread;
begin
- Writeln('Executing : ' + CurrentSyncInfo.MethodName);
+ mDebugLn('Executing : ' + CurrentSyncInfo.MethodName);
thread:= TMThread(CurrentSyncInfo.OldThread);
mmlpsthread.CurrThread:= thread;
try
@@ -2138,7 +2235,7 @@ begin
SynEdit.Lines.LoadFromFile(FileName);
StartText := SynEdit.Lines.text;
ScriptName:= ExtractFileNameOnly(filename);
- WriteLn('Script name will be: ' + ScriptName);
+ mDebugLn('Script name will be: ' + ScriptName);
ScriptFile:= FileName;
ScriptChanged := false;
AddRecentFile(filename);
@@ -2155,50 +2252,34 @@ begin
Result := (ScriptFile <> '');
if Result then
begin;
- ScriptChanged := false;
SynEdit.Lines.SaveToFile(ScriptFile);
- StartText:= SynEdit.Lines.Text;
- SynEdit.MarkTextAsSaved;
- Self.Caption:= Format(WindowTitle,[ScriptName]);
+ OnSaveScript(scriptfile);
end
else
result := SaveCurrentScriptAs;
end;
- RefreshTab;
end;
function TForm1.SaveCurrentScriptAs: boolean;
+var
+ ScriptFile : string;
begin
- with CurrScript do
- begin;
- Result := false;
- with TSaveDialog.Create(nil) do
- try
- Filter:= 'Simba files|*.simb;*.cogat;*.mufa;*.pas;*.txt|Any Files|*.*';
- if Execute then
- begin;
- if ExtractFileExt(FileName) = '' then
- begin;
- ScriptFile := FileName + '.simb';
- end else
- ScriptFile := FileName;
- SynEdit.Lines.SaveToFile(ScriptFile);
- ScriptName:= ExtractFileNameOnly(ScriptFile);
- Writeln('Saving to: ' + FileName);
- WriteLn('Script name will be: ' + ScriptName);
- RefreshTab();
- Result := True;
- end;
- finally
- Free;
- end;
- if result then
+ Result := false;
+ with TSaveDialog.Create(nil) do
+ try
+ Filter:= 'Simba files|*.simb;*.cogat;*.mufa;*.pas;*.txt|Any Files|*.*';
+ if Execute then
begin;
- Writeln('Succesfully saved: ' + ScriptFile);
- StartText:= SynEdit.Lines.Text;
- SynEdit.MarkTextAsSaved;
- ScriptChanged := false;
+ if ExtractFileExt(FileName) = '' then
+ begin;
+ ScriptFile := FileName + '.simb';
+ end else
+ ScriptFile := FileName;
+ CurrScript.SynEdit.Lines.SaveToFile(ScriptFile);
+ OnSaveScript(scriptfile);
end;
+ finally
+ free;
end;
end;
diff --git a/trunk/Projects/SAMufasaGUI/updateform.pas b/trunk/Projects/SAMufasaGUI/updateform.pas
index fe2d195..004ecb4 100644
--- a/trunk/Projects/SAMufasaGUI/updateform.pas
+++ b/trunk/Projects/SAMufasaGUI/updateform.pas
@@ -5,7 +5,7 @@ unit updateform;
interface
uses
- Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
+ Classes, SysUtils, FileUtil, LResources, Forms,MufasaBase, Controls, Graphics, Dialogs,
ComCtrls, StdCtrls, updater;
type
@@ -31,8 +31,6 @@ type
procedure CleanUpdateForm(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure UpdateButtonClick(Sender: TObject);
- function CanUpdate: Boolean;
-
private
{ private declarations }
@@ -47,9 +45,9 @@ type
SimbaVersionThread : TSimbaVersionThread;
private
function OnUpdateBeat: Boolean;
- function GetLatestSimbaVersion: Integer;
public
- { public declarations }
+ function CanUpdate: Boolean;
+ function GetLatestSimbaVersion: Integer;
procedure PerformUpdate;
protected
FCancelled: Boolean;
@@ -86,8 +84,8 @@ const
function TSimbaUpdateForm.CanUpdate: Boolean;
begin
GetLatestSimbaVersion;
- Writeln(format('Current Simba version: %d',[TestUnit.SimbaVersion]));
- Writeln('Latest Simba Version: ' + IntToStr(FSimbaVersion));
+ mDebugLn(format('Current Simba version: %d',[TestUnit.SimbaVersion]));
+ mDebugLn('Latest Simba Version: ' + IntToStr(FSimbaVersion));
Exit(testunit.SimbaVersion < FSimbaVersion);
end;
diff --git a/trunk/Units/MMLAddon/PSInc/Wrappers/ocr.inc b/trunk/Units/MMLAddon/PSInc/Wrappers/ocr.inc
index a93deea..af136df 100644
--- a/trunk/Units/MMLAddon/PSInc/Wrappers/ocr.inc
+++ b/trunk/Units/MMLAddon/PSInc/Wrappers/ocr.inc
@@ -12,7 +12,6 @@ function BitmapFromText(text, font: String): integer; extdecl;
var
bmp: TMufasaBitmap;
begin
- writeln('BitmapFromText: ' + text + ' ' + font);
bmp := CurrThread.Client.MOCR.TextToFontBitmap(text, font);
Result := CurrThread.Client.MBitmaps.AddBMP(bmp);
end;
diff --git a/trunk/Units/MMLAddon/PSInc/Wrappers/other.inc b/trunk/Units/MMLAddon/PSInc/Wrappers/other.inc
index 54ee392..ff767a2 100644
--- a/trunk/Units/MMLAddon/PSInc/Wrappers/other.inc
+++ b/trunk/Units/MMLAddon/PSInc/Wrappers/other.inc
@@ -47,7 +47,7 @@ begin
{$ifdef MSWINDOWS}
sndPlaySound(PChar(sound),SND_ASYNC or SND_NODEFAULT);
{$else}
- Writeln(Format('Playing sound %s (not supported yet on Linux)',[sound]));
+ psWriteln(Format('Playing sound %s (not supported yet on Linux)',[sound]));
{$endif}
end;
@@ -56,7 +56,7 @@ begin
{$ifdef MSWINDOWS}
sndPlaySoundW(nil,0);
{$else}
- Writeln('Stopping sound is not supported yet on Linux');
+ psWriteln('Stopping sound is not supported yet on Linux');
{$endif}
end;
diff --git a/trunk/Units/MMLAddon/internets.pas b/trunk/Units/MMLAddon/internets.pas
index 485c2f3..f4e19ae 100644
--- a/trunk/Units/MMLAddon/internets.pas
+++ b/trunk/Units/MMLAddon/internets.pas
@@ -18,6 +18,7 @@ type
HTTPSend : THTTPSend;
fHandleCookies : boolean;
PostVariables : TStringList;
+ Client : TObject;
public
procedure SetHTTPUserAgent(agent : string);
function GetHTTPPage(url : string ) : string;
@@ -26,7 +27,7 @@ type
function GetRawHeaders: string;
procedure ClearPostData;
procedure AddPostVariable(VarName, VarValue: string);
- constructor Create(HandleCookies : boolean = true);
+ constructor Create(Owner : TObject; HandleCookies : boolean = true);
destructor Destroy;override;
end;
{ TMInternet }
@@ -45,6 +46,8 @@ type
implementation
+uses
+ Client;
{ OTHER }
function GetPage(URL: String): String;
var
@@ -67,7 +70,7 @@ end;
function TMInternet.CreateHTTPClient(HandleCookies: boolean = true): integer;
begin;
- Result := HTTPClients.Add(THTTPClient.Create(HandleCookies));
+ Result := HTTPClients.Add(THTTPClient.Create(Client,HandleCookies));
end;
function TMInternet.GetHTTPClient(Index: integer): THTTPClient;
@@ -105,13 +108,13 @@ begin
if Connections[i] <> nil then
begin
TObject(Connections[i]).Free;
- Writeln(Format('Connection[%d] has not been freed in the script, freeing it now.',[i]));
+ TClient(Client).Writeln(Format('Connection[%d] has not been freed in the script, freeing it now.',[i]));
end;
for i := HTTPClients.Count -1 downto 0 do
if HTTPClients[i] <> nil then
begin
THTTPClient(HTTPClients[i]).Free;
- Writeln(Format('HTTPClient[%d] has not been freed in the script, freeing it now.',[i]));
+ TClient(Client).Writeln(Format('HTTPClient[%d] has not been freed in the script, freeing it now.',[i]));
end;
Connections.Free;
HTTPClients.Free;
@@ -139,7 +142,7 @@ begin
result := '';
except
on e : exception do
- Writeln('THTTPClient error: ' + e.message);
+ TClient(Client).Writeln('THTTPClient error: ' + e.message);
end;
end;
@@ -157,7 +160,7 @@ begin
result := '';
except
on e : exception do
- Writeln('THTTPClient error: ' + e.message);
+ TClient(Client).Writeln('THTTPClient error: ' + e.message);
end;
end;
@@ -189,9 +192,10 @@ begin
PostVariables.Add(Varname + '=' + VarValue);
end;
-constructor THTTPClient.Create(HandleCookies : boolean = true);
+constructor THTTPClient.Create(Owner : TObject; HandleCookies : boolean = true);
begin
inherited Create;
+ Client := Owner;
HTTPSend := THTTPSend.Create;
fHandleCookies:= HandleCookies;
PostVariables := TStringList.Create;
diff --git a/trunk/Units/MMLAddon/mmlpsthread.pas b/trunk/Units/MMLAddon/mmlpsthread.pas
index 9305fc9..cdef7a1 100644
--- a/trunk/Units/MMLAddon/mmlpsthread.pas
+++ b/trunk/Units/MMLAddon/mmlpsthread.pas
@@ -31,7 +31,7 @@ interface
uses
Classes, SysUtils, client, uPSComponent,uPSCompiler,
- uPSRuntime,stdCtrls, uPSPreProcessor,MufasaTypes, web,
+ uPSRuntime,stdCtrls, uPSPreProcessor,MufasaTypes,MufasaBase, web,
bitmaps, plugins, libloader, dynlibs,internets;
@@ -45,7 +45,6 @@ type
OldThread : TThread;
end;
- TWritelnProc = procedure(s: string);
TClearDebugProc = procedure;
TDbgImgInfo = record
DispSize : ^TPoint;
@@ -213,7 +212,7 @@ begin
if Assigned(CurrThread.DebugTo) then
CurrThread.DebugTo(str)
else
- writeln(str);
+ mDebugLn(str);
end;
function MakeString(data : TPSVariantIFC) : string;
@@ -397,6 +396,7 @@ end;
procedure TMThread.SetDebug(writelnProc: TWritelnProc);
begin
DebugTo := writelnProc;
+ Client.WritelnProc:= writelnProc;
end;
procedure TMThread.SetDebugClear(clearProc: TClearDebugProc);
@@ -530,7 +530,7 @@ end;
function TPSThread.PSScriptFindUnknownFile(Sender: TObject;
const OrginFileName: string; var FileName, Output: string): Boolean;
begin
- Writeln(OrginFileName + '-' + Output + '-' + FileName);
+ mDebugLn(OrginFileName + '-' + Output + '-' + FileName);
Result := false;
end;
@@ -736,7 +736,7 @@ begin
end;
except
on E : Exception do
- psWriteln('ERROR IN PSSCRIPT: ' + e.message);
+ psWriteln('Exception in Script: ' + e.message);
end;
end;
diff --git a/trunk/Units/MMLAddon/settings.pas b/trunk/Units/MMLAddon/settings.pas
index 5d02818..6326ae5 100644
--- a/trunk/Units/MMLAddon/settings.pas
+++ b/trunk/Units/MMLAddon/settings.pas
@@ -28,7 +28,7 @@ unit settings;
interface
uses
- Classes, SysUtils, ComCtrls, xmlread, xmlwrite, DOM,mufasatypes;
+ Classes, SysUtils, ComCtrls, xmlread, xmlwrite, DOM,mufasatypes,MufasaBase;
@@ -411,7 +411,7 @@ begin
if length(path) < 2 then
begin
- writeln('Path too short!');
+ mDebugLn('CreateKey - Path too short!');
exit(false);
end;
nParent := WalkToNode(path[0]);
@@ -426,7 +426,7 @@ begin
begin
if Path[i] = '' then
begin
- writeln('Invalid Key Path / Name');
+ mDebugLn('CreateKey - Invalid Key Path / Name');
exit(false);
end;
NewPath := NewPath + Path[i] + '/';
@@ -441,7 +441,7 @@ begin
newN.Text := Path[i];
if (nParent = nil) then
begin
- writeln('This shouldn''t happen...');
+ mDebugLn('CreateKey - This shouldn''t happen...');
newN.MoveTo(Nodes.GetFirstNode, naAddChild);
nParent := newN;
end
@@ -474,12 +474,12 @@ var
begin
if not KeyExists(KeyName) then
begin
- writeln('SetKeyValue - Key does not exist');
+ mDebugLn('SetKeyValue - Key does not exist');
Exit;
end;
if not IsKey(KeyName) then
begin
- writeln('SetKeyValue - IsKey returned false');
+ mDebugLn('SetKeyValue - IsKey returned false');
Exit;
end;
N := WalkToNode(KeyName);
@@ -499,7 +499,7 @@ begin
TSettingData(N.Data).Free;
N.Data := TSettingData.Create;
TSettingData(N.Data).Val := KeyValue;
- writeln('Setting ' + KeyName + ' to ' + KeyValue);
+ mDebugLn('Setting ' + KeyName + ' to ' + KeyValue);
N := N.GetNextSibling;
end;
end;
@@ -513,7 +513,7 @@ begin
Nodes.Clear;
if not fileExists(fileName) then
begin
- writeln('SettingsFile hasn''t been created yet.');
+ mDebugLn('SettingsFile hasn''t been created yet.');
// create file.
SaveToXML(fileName);
end;
@@ -527,7 +527,7 @@ procedure TMMLSettings.WriteXMLData(n: TTreeNode;
var XMLChild: TDOMNode; var C: Integer);
begin
if assigned(n.data) and (n.HasChildren) then
- writeln('Has data and children! Please close simba and remove settings.xml. if problem persists, please report your settings.xml');
+ mDebugLn('WriteXMLData - Has data and children! Please close simba and remove settings.xml. if problem persists, please report your settings.xml');
if assigned(n.Data) then
begin
XMLChild := XMLDoc.CreateTextNode(TSettingData(N.Data).Val);
@@ -588,7 +588,7 @@ begin
try
WriteXMLFile(XMLDoc, fileName);
except
- Writeln('Failed to write ' + fileName);
+ mDebugLn('Failed to write ' + fileName);
end;
XMLDoc.Free;
end;
diff --git a/trunk/Units/MMLAddon/updater.pas b/trunk/Units/MMLAddon/updater.pas
index 8baecd9..cfd8f4f 100644
--- a/trunk/Units/MMLAddon/updater.pas
+++ b/trunk/Units/MMLAddon/updater.pas
@@ -5,7 +5,7 @@ unit updater;
interface
uses
- Classes, SysUtils, httpsend,blcksock
+ Classes, SysUtils, httpsend,MufasaBase,blcksock
{$IFDEF LINUX}
,BaseUnix
{$ENDIF};
@@ -175,7 +175,7 @@ begin
end;
FDownloaded := True;
except
- writeln('DownloadAndSave: Exception Occured');
+ mDebugLn('DownloadAndSave: Exception Occured');
Result := False;
end;
HTTPSend.Free;
@@ -189,25 +189,25 @@ begin
{ Change to messages + Exit(False) instead of exceptions? }
if not Downloaded then
begin
- writeln('Nothing downloaded');
+ mDebugLn('Nothing downloaded');
exit(False);
// raise Exception.Create('Nothing downloaded');
end;
if FReplacementFile = '' then
begin
- writeln('ReplacementFile not se');
+ mDebugLn('ReplacementFile not se');
exit(False);
//raise Exception.Create('ReplacementFile not set');
end;
if not FileExists(FBasePath + FReplacementFile) then
begin
- writeln('ReplacementFile not found');
+ mDebugLn('ReplacementFile not found');
exit(False);
//raise Exception.Create('ReplacementFile not found');
end;
if not FileExists(FBasePath + FReplacementFile+ '_') then
begin
- writeln('ReplacementFile + _ not found');
+ mDebugLn('ReplacementFile + _ not found');
exit(False);
//raise Exception.Create('ReplacementFile + _ not found');
end;
diff --git a/trunk/Units/MMLAddon/windowselector.pas b/trunk/Units/MMLAddon/windowselector.pas
index d1ac5aa..fcf979c 100644
--- a/trunk/Units/MMLAddon/windowselector.pas
+++ b/trunk/Units/MMLAddon/windowselector.pas
@@ -119,13 +119,13 @@ begin
if Result <> Tempwindow then
begin
- writeln('Making ' + inttostr(tempwindow) + ' transparent');
+ mDebugLn('Making ' + inttostr(tempwindow) + ' transparent');
XChangeProperty(manager.display, tempwindow, window_opacity, XA_CARDINAL, 32, PropModeReplace, @opacity_75, 1);
- writeln('Resetting ' + inttostr(Result));
+ mDebugLn('Resetting ' + inttostr(Result));
if result <> 0 then
XChangeProperty(manager.display, Result, window_opacity, XA_CARDINAL, 32, PropModeReplace, @opacity_100, 1);
- WriteLn('Changing Window from: ' + Inttostr(result) +' to: ' + IntToStr(Tempwindow));
+ mDebugLn('Changing Window from: ' + Inttostr(result) +' to: ' + IntToStr(Tempwindow));
// XChangeProperty(Window.XDisplay, tempwindow, window_opacity, XA_CARDINAL, 32, PropModeReplace, @opacity_50, 1);
Result := Tempwindow;
diff --git a/trunk/Units/MMLCore/bitmaps.pas b/trunk/Units/MMLCore/bitmaps.pas
index ea682bd..c63431c 100644
--- a/trunk/Units/MMLCore/bitmaps.pas
+++ b/trunk/Units/MMLCore/bitmaps.pas
@@ -27,7 +27,7 @@ unit bitmaps;
interface
uses
- Classes, SysUtils, FPImage,IntfGraphics,graphtype,MufasaTypes,graphics;
+ Classes, SysUtils, FPImage,IntfGraphics,graphtype,MufasaTypes,MufasaBase,graphics;
type
@@ -119,7 +119,7 @@ type
implementation
uses
- paszlib,DCPbase64,math,
+ paszlib,DCPbase64,math, client,
colour_conv,IOManager,mufasatypesutil;
// Needs more fixing. We need to either copy the memory ourself, or somehow
@@ -392,9 +392,9 @@ begin
end;
//Just for testing purposes
if ToDestroy.BmpName = '' then
- Writeln(Format('BMP[%d] has been freed.',[number]))
+ TClient(Self.Client).Writeln(Format('BMP[%d] has been freed.',[number]))
else
- Writeln(Format('BMP[%s] has been freed.',[ToDestroy.BmpName]));
+ TClient(Self.Client).Writeln(Format('BMP[%s] has been freed.',[ToDestroy.BmpName]));
ToDestroy.Free;
BmpArray[number] := nil;
end;
@@ -838,10 +838,10 @@ begin
if NewCorners[i].y < MinY then
MinY := NewCorners[i].y;
end;
- Writeln(Format('Min: (%d,%d) Max : (%d,%d)',[MinX,MinY,MaxX,MaxY]));
+ mDebugLn(Format('Min: (%d,%d) Max : (%d,%d)',[MinX,MinY,MaxX,MaxY]));
NewW := MaxX - MinX+1;
NewH := MaxY - MinY+1;
- Writeln(format('New bounds: %d,%d',[NewW,NewH]));
+ mDebugLn(format('New bounds: %d,%d',[NewW,NewH]));
TargetBitmap.SetSize(NewW,NewH);
for y := NewH - 1 downto 0 do
for x := NewW - 1 downto 0 do
@@ -1126,9 +1126,9 @@ begin
if BmpArray[i] <> nil then
begin;
if BmpArray[i].BmpName = '' then
- Writeln(Format('BMP[%d] has not been freed in the script, freeing it now.',[i]))
+ TClient(Client).Writeln(Format('BMP[%d] has not been freed in the script, freeing it now.',[i]))
else
- Writeln(Format('BMP[%s] has not been freed in the script, freeing it now.',[BmpArray[i].BmpName]));
+ TClient(Client).Writeln(Format('BMP[%s] has not been freed in the script, freeing it now.',[BmpArray[i].BmpName]));
FreeAndNil(BmpArray[i]);
end;
SetLength(BmpArray,0);
diff --git a/trunk/Units/MMLCore/client.pas b/trunk/Units/MMLCore/client.pas
index 8ed4fc3..6c48434 100644
--- a/trunk/Units/MMLCore/client.pas
+++ b/trunk/Units/MMLCore/client.pas
@@ -29,7 +29,7 @@ unit Client;
interface
uses
- Classes, SysUtils, MufasaTypes,
+ Classes, SysUtils, MufasaTypes,MufasaBase,
IOManager, Files, Finder, Bitmaps, dtm, ocr,
{$IFDEF MSWINDOWS} os_windows {$ENDIF}
{$IFDEF LINUX} os_linux {$ENDIF};
@@ -41,27 +41,38 @@ It binds all the components together.
type
TClient = class(TObject)
- constructor Create(plugin_dir: string);
- destructor Destroy; override;
-
- public
- IOManager: TIOManager;
- MFiles: TMFiles;
- MFinder: TMFinder;
- MBitmaps : TMBitmaps;
- MDTM: TMDTM;
- MOCR: TMOCR;
+ public
+ IOManager: TIOManager;
+ MFiles: TMFiles;
+ MFinder: TMFinder;
+ MBitmaps : TMBitmaps;
+ MDTM: TMDTM;
+ MOCR: TMOCR;
+ WritelnProc : TWritelnProc;
+ procedure WriteLn(s : string);
+ constructor Create(plugin_dir: string);
+ destructor Destroy; override;
end;
implementation
+
+
+procedure TClient.WriteLn(s: string);
+begin
+ if Assigned(WritelnProc) then
+ WritelnProc(s)
+ else
+ mDebugLn(s);
+end;
+
// Possibly pass arguments to a default window.
constructor TClient.Create(plugin_dir: string);
begin
inherited Create;
-
+ WritelnProc:= nil;
IOManager:= TIOManager.Create(plugin_dir);
- MFiles := TMFiles.Create;
+ MFiles := TMFiles.Create(self);
MFinder := TMFinder.Create(Self);
MBitmaps := TMBitmaps.Create(self);
MDTM := TMDTM.Create(self);
diff --git a/trunk/Units/MMLCore/dtm.pas b/trunk/Units/MMLCore/dtm.pas
index fda71a6..7630a8a 100644
--- a/trunk/Units/MMLCore/dtm.pas
+++ b/trunk/Units/MMLCore/dtm.pas
@@ -77,6 +77,7 @@ type
implementation
uses
dtmutil, paszlib,
+ client,
graphics, // for TColor
math // for max
;
@@ -112,9 +113,9 @@ begin
if not b then
begin;
if DTMList[i].n <> '' then
- Writeln(Format('DTM[%s] has not been freed in the script, freeing it now.',[DTMList[i].n]))
+ TClient(Client).Writeln(Format('DTM[%s] has not been freed in the script, freeing it now.',[DTMList[i].n]))
else
- writeln(Format('DTM[%d] has not been freed in the script, freeing it now.',[i]));
+ TClient(Client).Writeln(Format('DTM[%d] has not been freed in the script, freeing it now.',[i]));
FreeDTM(i);
end;
end;
@@ -167,10 +168,7 @@ begin
if uncompress(Bufferstring,Destlen,pchar(Source), ii) = Z_OK then
begin;
if (Destlen mod 36) > 0 then
- begin;
- Writeln('Invalid DTM');
- Exit;
- end;
+ raise Exception.CreateFmt('Invalid DTM passed to StringToDTM: %s',[s]);
DestLen := DestLen div 36;
SetLength(Result.p,DestLen);
SetLength(Result.c,DestLen);
diff --git a/trunk/Units/MMLCore/dtmutil.pas b/trunk/Units/MMLCore/dtmutil.pas
index 42c2bd4..11cb4e4 100644
--- a/trunk/Units/MMLCore/dtmutil.pas
+++ b/trunk/Units/MMLCore/dtmutil.pas
@@ -52,7 +52,7 @@ const
dtm_Triangle = 4;
implementation
-uses math;
+uses math,MufasaBase;
procedure RotatePoints_(Var P: TPointArray; A, cx, cy: Extended);
@@ -105,10 +105,10 @@ var
begin;
i := 0;
if adtm.n <> '' then
- writeln('Name: ' + aDTM.n);
- WriteLn('MainPoint ' + inttostr(aDTM.p[i].x) + ', ' + inttostr(aDTM.p[i].y) + ' col: ' + inttostr(aDTM.c[i]) + ', tol: ' + inttostr(aDTM.t[i]) + '; ashape ' + inttostr(aDTM.ash[i]) + ' asize ' + inttostr(aDTM.asz[i])+ ', Bad Point: ' + BoolToStr(aDTM.bp[i]));
+ mDebugLn('Name: ' + aDTM.n);
+ mDebugLn('MainPoint ' + inttostr(aDTM.p[i].x) + ', ' + inttostr(aDTM.p[i].y) + ' col: ' + inttostr(aDTM.c[i]) + ', tol: ' + inttostr(aDTM.t[i]) + '; ashape ' + inttostr(aDTM.ash[i]) + ' asize ' + inttostr(aDTM.asz[i])+ ', Bad Point: ' + BoolToStr(aDTM.bp[i]));
for I := 1 to High(aDTM.p) do
- WriteLn('SubPoint['+IntToStr(I) + '] ' + inttostr(aDTM.p[i].x) + ', ' + inttostr(aDTM.p[i].y) + ' col: ' + inttostr(aDTM.c[i]) + ', tol: ' + inttostr(aDTM.t[i]) + '; ashape ' + inttostr(aDTM.ash[i]) + ' asize ' + inttostr(aDTM.asz[i]) + ', Bad Point: ' + BoolToStr(aDTM.bp[i]));
+ mDebugLn('SubPoint['+IntToStr(I) + '] ' + inttostr(aDTM.p[i].x) + ', ' + inttostr(aDTM.p[i].y) + ' col: ' + inttostr(aDTM.c[i]) + ', tol: ' + inttostr(aDTM.t[i]) + '; ashape ' + inttostr(aDTM.ash[i]) + ' asize ' + inttostr(aDTM.asz[i]) + ', Bad Point: ' + BoolToStr(aDTM.bp[i]));
end;
Function pDTMToTDTM(Const DTM: pDTM): TDTM;
diff --git a/trunk/Units/MMLCore/files.pas b/trunk/Units/MMLCore/files.pas
index 4ad825c..9d4f7a9 100644
--- a/trunk/Units/MMLCore/files.pas
+++ b/trunk/Units/MMLCore/files.pas
@@ -40,7 +40,7 @@ type
TMufasaFilesArray = Array Of TMufasaFile;
TMFiles = class(TObject)
- constructor Create;
+ constructor Create(Owner : TObject);
destructor Destroy; override;
public
function CreateFile(Path: string): Integer;
@@ -56,6 +56,7 @@ type
protected
MFiles: TMufasaFilesArray;
FreeSpots: Array Of Integer;
+ Client : TObject;
private
procedure FreeFileList;
function AddFileToManagedList(Path: string; FS: TFileStream; Mode: Integer): Integer;
@@ -68,7 +69,7 @@ type
implementation
uses
- {$IFDEF MSWINDOWS}Windows,{$ENDIF} IniFiles;
+ {$IFDEF MSWINDOWS}Windows,{$ENDIF} IniFiles,Client;
{ GetFiles in independant of the TMFiles class }
@@ -108,9 +109,10 @@ begin
end;
end;
-constructor TMFiles.Create;
+constructor TMFiles.Create(Owner : TObject);
begin
inherited Create;
+ self.Client := Owner;
SetLength(Self.MFiles, 0);
SetLength(Self.FreeSpots, 0);
end;
@@ -122,11 +124,11 @@ begin;
For I := 0 To High(MFiles) Do
If MFiles[i].FS <> nil Then
Begin
- Writeln(Format('File[%s] has not been freed in the script, freeing it now.',[MFiles[i].Path]));
+ TClient(Client).Writeln(Format('File[%s] has not been freed in the script, freeing it now.',[MFiles[i].Path]));
Try
MFiles[I].FS.Free;
Except
- WriteLn('FreeFileList - Exception when freeing');
+ TClient(Client).Writeln('FreeFileList - Exception when freeing FileStream');
End;
End;
SetLength(MFiles, 0);
@@ -168,11 +170,7 @@ End;
Function TMFiles.SetFileCharPointer(FileNum, cChars, Origin: Integer): Integer;
Begin
If(FileNum < 0) or (FileNum >= Length(MFiles)) Then
- Begin
- WriteLn('Invalid File Num');
- Result := -1;
- Exit;
- End;
+ raise Exception.CreateFmt('Invalid FileNum passed: %d',[FileNum]);
{If Files[FileNum].Handle = -1 Then
Begin
@@ -183,33 +181,22 @@ Begin
case Origin of
fsFromBeginning:
- If(cChars < 0) Then
- Begin
- Writeln('fsFromBeginning takes no negative cChars.');
- Result := -1;
- Exit;
- End;
+ If(cChars < 0) Then
+ raise Exception.CreateFmt('fsFromBeginning takes no negative cChars. (%d)',[cChars]);
fsFromCurrent:
;
fsFromEnd:
If(cChars > 0) Then
- Begin
- Writeln('fsFromEnd takes no positive cChars.');
- Result := -1;
- Exit;
- End;
+ raise Exception.CreateFmt('fsFromEnd takes no positive cChars. (%d)',[cChars]);
else
- Begin
- WriteLn('Invalid Origin: ' + IntToStr(Origin));
- Result := -1;
- Exit;
- End;
- End;
+ raise Exception.CreateFmt('Invalid Origin: %d',[Origin]);
+ end;
Try
- Result := MFiles[FileNum].FS.Seek(cChars, Origin);
+ Result := MFiles[FileNum].FS.Seek(cChars, Origin);
Except
- WriteLn('SetFileCharPointer - Exception Occured.');
+ TClient(Client).Writeln('SetFileCharPointer - Exception Occured.');
+ Result := -1;
End;
//Result := FileSeek(Files[FileNum].Handle, cChars, Origin);
End;
@@ -230,7 +217,7 @@ begin
FS := TFileStream.Create(Path, fmCreate);
Except
Result := -1;
- WriteLn('CreateFile - Exception. Could not create file. Returning -1');
+ TClient(Client).Writeln(Format('CreateFile - Exception. Could not create file: %s',[path]));
Exit;
End;
@@ -259,7 +246,7 @@ begin
FS := TFileStream.Create(Path, fMode)
Except
Result := -1;
- WriteLn('OpenFile - Exception. Could not create file. Returning -1');
+ TClient(Client).Writeln(Format('OpenFile - Exception. Could not open file: %s',[path]));
Exit;
End;
@@ -299,7 +286,7 @@ begin
FS := TFileStream.Create(Path, fMode);
Except
Result := -1;
- WriteLn('ReWriteFile - Exception. Could not create file. Returning -1');
+ TClient(Client).Writeln(Format('ReWriteFile - Exception. Could not create file: %s',[path]));
Exit;
End;
@@ -324,17 +311,13 @@ end;
procedure TMFiles.CloseFile(FileNum: Integer);
begin
- //Writeln('Length of Files: ' + IntToStr(Length(Files)));
If (FileNum >= Length(MFiles)) or (FileNum < 0) Then
- Begin
- WriteLn('CloseFile. Invalid FileNum: ' + IntToStr(FileNum));
- Exit;
- End;
+ raise Exception.CreateFmt('Invalid FileNum passed: %d',[FileNum]);
Try
MFiles[FileNum].FS.Free;
Except
- WriteLn('CloseFile, exception when freeing the file...');
+ TClient(Client).Writeln(Format('CloseFile, exception when freeing the file: %d',[filenum]));
Exit;
End;
@@ -359,14 +342,10 @@ end;
function TMFiles.EndOfFile(FileNum: Integer): Boolean;
begin
If(FileNum < 0) or (FileNum >= Length(MFiles)) Then
- Begin
- WriteLn('Invalid File Num');
- Result := True;
- Exit;
- End;
+ raise Exception.CreateFmt('Invalid FileNum passed: %d',[FileNum]);
If MFiles[FileNum].FS = nil Then
Begin
- WriteLn('EndOfFile: Invalid Internal Handle');
+ TClient(Client).Writeln(format('EndOfFile: Invalid Internal Handle of File: %d',[filenum]));
Result := True;
Exit;
End;
@@ -380,17 +359,12 @@ end;
function TMFiles.FileSizeMuf(FileNum: Integer): LongInt;
begin
-
If(FileNum < 0) or (FileNum >= Length(MFiles)) Then
- Begin
- WriteLn('Invalid File Num');
- Result := -1;
- Exit;
- End;
+ raise Exception.CreateFmt('Invalid FileNum passed: %d',[FileNum]);
If MFiles[FileNum].FS = nil Then
Begin
- WriteLn('FileSize: Invalid Internal Handle');
+ TClient(Client).Writeln(format('FileSize: Invalid Internal Handle of File: %d',[filenum]));
Result := -1;
Exit;
End;
@@ -417,14 +391,10 @@ end;
function TMFiles.FilePointerPos(FileNum: Integer): Integer;
begin
If(FileNum < 0) or (FileNum >= Length(MFiles)) Then
- Begin
- WriteLn('Invalid File Num');
- Result := -1;
- Exit;
- End;
+ raise Exception.CreateFmt('Invalid FileNum passed: %d',[FileNum]);
If MFiles[FileNum].FS = nil Then
Begin
- WriteLn('FileSize: Invalid Internal Handle');
+ TClient(Client).Writeln(format('FilePointerPos: Invalid Internal Handle of File: %d',[filenum]));
Result := -1;
Exit;
End;
@@ -432,7 +402,7 @@ begin
try
Result := MFiles[FileNum].FS.Seek(0, fsFromCurrent);
Except
- WriteLn('Exception in FilePointerPos');
+ TClient(Client).Writeln('Exception in FilePointerPos');
End;
//Result := FileSeek(Files[FileNum].FS, 0, fsFromCurrent);
end;
@@ -445,14 +415,10 @@ function TMFiles.ReadFileString(FileNum: Integer; out s: string; x: Integer): Bo
begin
If(FileNum < 0) or (FileNum >= Length(MFiles)) Then
- Begin
- WriteLn('Invalid File Num');
- Result := False;
- Exit;
- End;
+ raise Exception.CreateFmt('Invalid FileNum passed: %d',[FileNum]);
If MFiles[FileNum].FS = nil Then
Begin
- WriteLn('ReadFileString: Invalid Internal Handle');
+ TClient(Client).Writeln(format('ReadFileString: Invalid Internal Handle of File: %d',[filenum]));
Exit;
End;
@@ -472,14 +438,10 @@ end;
function TMFiles.WriteFileString(FileNum: Integer; s: string): Boolean;
begin
If(FileNum < 0) or (FileNum >= Length(MFiles)) Then
- Begin
- WriteLn('Invalid File Num');
- Result := False;
- Exit;
- End;
+ raise Exception.CreateFmt('Invalid FileNum passed: %d',[FileNum]);
If(MFiles[FileNum].FS = nil) Then
Begin
- WriteLn('WriteFileString: Invalid Internal Handle');
+ TClient(Client).Writeln(format('WriteFileString: Invalid Internal Handle of File: %d',[filenum]));
Result := False;
Exit;
End;
@@ -493,7 +455,7 @@ begin
try
Result := MFiles[FileNum].FS.Write(S[1], Length(S)) <> 1;
except
- WriteLn('Exception - WriteFileString.');
+ TClient(Client).Writeln('Exception - WriteFileString.');
Result := False;
end;
diff --git a/trunk/Units/MMLCore/finder.pas b/trunk/Units/MMLCore/finder.pas
index 98ad98b..31ecc33 100644
--- a/trunk/Units/MMLCore/finder.pas
+++ b/trunk/Units/MMLCore/finder.pas
@@ -30,7 +30,7 @@ interface
{$define CheckAllBackground}//Undefine this to only check the first white point against the background (in masks).
uses
- Classes, SysUtils,bitmaps, MufasaTypes; // Types
+ Classes, SysUtils,bitmaps,MufasaBase, MufasaTypes; // Types
{ TMFinder Class }
@@ -1515,7 +1515,7 @@ begin
//We wont want HSL comparison with BMPs, right? Not for now atleast.
if CCTS > 1 then
begin
- Writeln('CTS > 1, putting it temporary back to 1. For this (bitmap)search');
+ mDebugLn('CTS > 1, putting it temporary back to 1. For this (bitmap)search');
CCTS := 1;
end;
//Get the "skip coords".
@@ -1652,7 +1652,7 @@ begin
CCTS := Self.CTS;
if CCTS > 1 then
begin
- Writeln('CTS > 1, putting it temporary back to 1. For this (bitmap)search');
+ mDebugLn('CTS > 1, putting it temporary back to 1. For this (bitmap)search');
CCTS := 1;
end;
//Get the "skip coords".
@@ -1727,7 +1727,7 @@ begin
CCTS := Self.CTS;
if CCTS > 1 then
begin
- Writeln('CTS > 1, putting it temporary back to 1. For this (bitmap)search');
+ mDebugLn('CTS > 1, putting it temporary back to 1. For this (bitmap)search');
CCTS := 1;
end;
FoundC := 0;
diff --git a/trunk/Units/MMLCore/fontloader.pas b/trunk/Units/MMLCore/fontloader.pas
index e370f5b..2e8cb1c 100644
--- a/trunk/Units/MMLCore/fontloader.pas
+++ b/trunk/Units/MMLCore/fontloader.pas
@@ -56,10 +56,11 @@ type
function GetFontIndex(Name: String): Integer;
function GetFontByIndex(Index : integer): TMfont;
private
- Fonts: TList;
- Path: String;
+ Fonts: TList;
+ Path: String;
+ Client : TObject;
public
- constructor Create;
+ constructor Create(Owner : TObject);
destructor Destroy; override;
function GetFont(Name: String): TOcrData;
@@ -75,7 +76,7 @@ type
implementation
uses
- MufasaTypes;
+ MufasaTypes,Client;
constructor TMFont.Create;
@@ -139,12 +140,12 @@ begin
result := TMfont(Fonts.Items[index]);
end;
-constructor TMFonts.Create;
+constructor TMFonts.Create(Owner : TObject);
begin
- inherited;
-
+ inherited Create;
Fonts := TList.Create;
+ Client := Owner;
end;
destructor TMFonts.Destroy;
@@ -223,7 +224,7 @@ begin
f.Data := ocrdata;
Fonts.Add(f);
{$IFDEF FONTDEBUG}
- writeln('Loaded Font ' + f.Name);
+ TClient(Client).Writeln('Loaded Font ' + f.Name);
{$ENDIF}
end;
@@ -232,7 +233,7 @@ function TMFonts.Copy: TMFonts;
var
i:integer;
begin
- Result := TMFonts.Create;
+ Result := TMFonts.Create(Client);
Result.Path := Self.GetPath();
for i := 0 to Self.Fonts.Count -1 do
Result.Fonts.Add(TMFont(Self.Fonts.Items[i]).Copy());
diff --git a/trunk/Units/MMLCore/libloader.pas b/trunk/Units/MMLCore/libloader.pas
index 5892c4e..e8e15e3 100644
--- a/trunk/Units/MMLCore/libloader.pas
+++ b/trunk/Units/MMLCore/libloader.pas
@@ -36,7 +36,7 @@ interface
implementation
uses
- MufasaTypes,FileUtil;
+ MufasaTypes,MufasaBase,FileUtil;
procedure TGenericLoader.AddPath(path: string);
var
@@ -47,7 +47,7 @@ implementation
//IDK who changed this to loading a dir, but DON'T
if not PluginDirs.Find(verified,idx) then
begin
- writeln('Adding Plugin Path: ' + verified);
+ mDebugLn('Adding Plugin Path: ' + verified);
PluginDirs.Add(verified);
end;
end;
@@ -60,7 +60,7 @@ implementation
begin;
if (Loaded[i].handle > 0) then
try
- Writeln(inttostr(I));
+ mDebugLn('Freeing plugin[%d]',[i]);
FreeLibrary(Loaded[i].handle);
except
end;
@@ -136,7 +136,7 @@ implementation
if Loaded[i].filename = (PluginDirs.Strings[ii] + PluginName + PlugExt) then
Exit(i);
SetLength(Loaded,PluginLen + 1);
- Writeln(Format('Loading plugin %s at %s',[PluginName,PluginDirs.Strings[ii]]));
+ mDebugLn(Format('Loading plugin %s at %s',[PluginName,PluginDirs.Strings[ii]]));
Loaded[PluginLen].filename:= PluginDirs.Strings[ii] + Pluginname + PlugExt;
Loaded[PluginLen].handle:= LoadLibrary(Loaded[PluginLen].filename);
if Loaded[PluginLen].handle = 0 then
diff --git a/trunk/Units/MMLCore/mufasabase.pas b/trunk/Units/MMLCore/mufasabase.pas
new file mode 100644
index 0000000..670ff85
--- /dev/null
+++ b/trunk/Units/MMLCore/mufasabase.pas
@@ -0,0 +1,50 @@
+unit mufasabase;
+
+{$mode objfpc}
+
+interface
+
+uses
+ files, Classes, SysUtils{$ifdef MSWindows},windows{$endif};
+
+procedure mDebugLn( s : string);overload;
+procedure mDebugLn( s : string; f : array of const);overload;
+procedure InitmDebug;
+procedure FreemDebug;
+implementation
+
+uses
+ TestUnit;
+var
+ CanDebug : boolean = false;
+
+procedure mDebugLn(s: string);
+begin
+ if CanDebug then
+ Writeln(s);
+end;
+
+procedure mDebugLn(s: string; f: array of const); overload;
+begin
+ mDebugLn(format(s,f));
+end;
+
+procedure InitmDebug;
+begin
+ CanDebug := true;
+ {$ifdef MSWindows}
+ IsConsole:= True;
+ SysInitStdIO;
+ {$endif}
+end;
+
+procedure FreemDebug;
+begin
+ CanDebug := false;
+ {$ifdef MSWindows}
+ IsConsole := false;
+ {$endif}
+end;
+
+end.
+
diff --git a/trunk/Units/MMLCore/mufasatypes.pas b/trunk/Units/MMLCore/mufasatypes.pas
index 43721a9..baab09d 100644
--- a/trunk/Units/MMLCore/mufasatypes.pas
+++ b/trunk/Units/MMLCore/mufasatypes.pas
@@ -121,6 +121,7 @@ type
SubPoints: TDTMPointDefArray;
end;
+ TWritelnProc = procedure(s: string);
type
VirtualKeyInfo = record
Str : string;
diff --git a/trunk/Units/MMLCore/ocr.pas b/trunk/Units/MMLCore/ocr.pas
index f064fce..5f17117 100644
--- a/trunk/Units/MMLCore/ocr.pas
+++ b/trunk/Units/MMLCore/ocr.pas
@@ -28,7 +28,7 @@ unit ocr;
interface
uses
- Classes, SysUtils, MufasaTypes, bitmaps, math, ocrutil, fontloader,
+ Classes, SysUtils, MufasaTypes,MufasaBase, bitmaps, math, ocrutil, fontloader,
{Begin To-Remove units. Replace ReadBmp with TMufasaBitmap stuff later.}
graphtype, intfgraphics,graphics;
{End To-Remove unit}
@@ -121,7 +121,7 @@ constructor TMOCR.Create(Owner: TObject);
begin
inherited Create;
Self.Client := Owner;
- Self.Fonts := TMFonts.Create;
+ Self.Fonts := TMFonts.Create(Owner);
end;
{ Destructor }
@@ -150,9 +150,6 @@ begin
begin
if Fonts.LoadFont(dirs[i], false) then
result := true;
- {$IFDEF FONTDEBUG}
- writeln('Loading ' + dirs[i]);
- {$ENDIF}
end;
If DirectoryExists(path + 'UpChars') then
Fonts.LoadFont('UpChars', true); // shadow
@@ -564,9 +561,9 @@ begin
begin // more than one char
{$IFDEF OCRDEBUG}
if length(chars_2d[y]) > 70 then
- writeln('more than one char at y: ' + inttostr(y));
+ mDebugLn('more than one char at y: ' + inttostr(y));
if (bb.x2 - bb.x1 > 10) then
- writeln('too wide at y: ' + inttostr(y));
+ mDebugLn('too wide at y: ' + inttostr(y));
{$ENDIF}
helpershadow:=getshadows(shadowsbmp,chars_2d[y]);
chars_2d_b := splittpaex(helpershadow,2,shadowsbmp.height);
@@ -649,17 +646,11 @@ begin
begin
font := Fonts.GetFont('UpChars_s');
thachars := shadows;
- {$IFDEF OCRDEBUG}
- writeln('using shadows');
- {$ENDIF}
end
else
begin
font := Fonts.GetFont('UpChars');
thachars := chars;
- {$IFDEF OCRDEBUG}
- writeln('not using shadows');
- {$ENDIF}
end;
lbset:=false;
@@ -841,11 +832,10 @@ begin
for i := 1 to length(text) do
begin
- writeln(text[i]);
an := Ord(text[i]);
if not InRange(an, 0, 255) then
begin
- writeln('WARNING: Invalid character passed to TextToFontTPA');
+ mDebugLn('WARNING: Invalid character passed to TextToFontTPA');
continue;
end;
d := fontD.ascii[an];
@@ -879,7 +869,6 @@ var
begin
TPA := TextToFontTPA(text, font, w, h);
bmp := TMufasaBitmap.Create;
- writeln(format('b: %d, %d', [w, h]));
bmp.SetSize(w, h);
bmp.DrawTPA(TPA, clWhite);
result := bmp;
diff --git a/trunk/Units/MMLCore/os_linux.pas b/trunk/Units/MMLCore/os_linux.pas
index aca1d8e..2d41fe0 100644
--- a/trunk/Units/MMLCore/os_linux.pas
+++ b/trunk/Units/MMLCore/os_linux.pas
@@ -148,14 +148,14 @@ implementation
xerror := 'UNKNOWN';
end;
result := 0;
- Writeln('X Error: ');
- writeln('Error code: ' + inttostr(para2^.error_code));
- writeln('Display: ' + inttostr(LongWord(para2^.display)));
- writeln('Minor code: ' + inttostr(para2^.minor_code));
- writeln('Request code: ' + inttostr(para2^.request_code));
- writeln('Resource ID: ' + inttostr(para2^.resourceid));
- writeln('Serial: ' + inttostr(para2^.serial));
- writeln('Type: ' + inttostr(para2^._type));
+ mDebugLn('X Error: ');
+ mDebugLn('Error code: ' + inttostr(para2^.error_code));
+ mDebugLn('Display: ' + inttostr(LongWord(para2^.display)));
+ mDebugLn('Minor code: ' + inttostr(para2^.minor_code));
+ mDebugLn('Request code: ' + inttostr(para2^.request_code));
+ mDebugLn('Resource ID: ' + inttostr(para2^.resourceid));
+ mDebugLn('Serial: ' + inttostr(para2^.serial));
+ mDebugLn('Type: ' + inttostr(para2^._type));
end;
function TWindow.GetError: String;
@@ -271,8 +271,8 @@ implementation
buffer := XGetImage(display, window, xs, ys, width, height, AllPlanes, ZPixmap);
if buffer = nil then
begin
- Writeln('ReturnData: XGetImage Error. Dumping data now:');
- Writeln('xs, ys, width, height: ' + inttostr(xs) + ', ' + inttostr(ys) +
+ mDebugLn('ReturnData: XGetImage Error. Dumping data now:');
+ mDebugLn('xs, ys, width, height: ' + inttostr(xs) + ', ' + inttostr(ys) +
', ' + inttostr(width) + ', ' + inttostr(height));
Result.Ptr := nil;
Result.IncPtrWith := 0;
diff --git a/trunk/Units/MMLCore/os_windows.pas b/trunk/Units/MMLCore/os_windows.pas
index 98a2459..48a3c64 100644
--- a/trunk/Units/MMLCore/os_windows.pas
+++ b/trunk/Units/MMLCore/os_windows.pas
@@ -181,7 +181,7 @@ implementation
destructor TWindow.Destroy;
begin
- ReleaseDC(handle,dc);
+ ReleaseDC(handle,dc);//Dogdy as one might have used .create and not set a handle..
buffer.Free;
keyinput.Free;
inherited Destroy;
@@ -283,8 +283,8 @@ implementation
Rect := WindowRect;
x := x + rect.left;
y := y + rect.top;
- if (x<0) or (y<0) then
- writeln('Negative coords, what now?');
+{ if (x<0) or (y<0) then
+ writeln('Negative coords, what now?');}
Windows.SetCursorPos(x, y);
end;
procedure TWindow.HoldMouse(x,y: integer; button: TClickType);
@@ -416,7 +416,6 @@ begin
inherited Create;
self.dc := GetDC(DesktopHandle);
self.handle:= DesktopHandle;
- Writeln('Created a desktop window');
end;
diff --git a/trunk/Units/MMLCore/tpa.pas b/trunk/Units/MMLCore/tpa.pas
index ef7bc28..7339d3e 100644
--- a/trunk/Units/MMLCore/tpa.pas
+++ b/trunk/Units/MMLCore/tpa.pas
@@ -696,7 +696,6 @@ var
SizeArr: TIntegerArray;
begin
l := High(a);
- Writeln(inttostr(l));
if (l < 0) then Exit;
SetLength(SizeArr, l + 1);
for i := 0 to l do