1
0
mirror of https://github.com/moparisthebest/Simba synced 2025-02-25 16:01:48 -05:00

Pimped the function list..

And!! Even made some kind of ctrl + space list!!! <3<3

git-svn-id: http://www.villavu.com/repositories/merlijn/mufasa@334 3f818213-9676-44b0-a9b4-5e4c4e03d09d
This commit is contained in:
Raymond 2009-12-25 01:34:14 +00:00
parent f0dd60011b
commit afd8871cd6
13 changed files with 2930 additions and 662 deletions

@ -30,7 +30,7 @@ object FunctionListFrame: TFunctionListFrame
Width = 115
Align = alBottom
OnChange = editSearchListChange
OnExit = editSearchListExit
OnKeyPress = editSearchListKeyPress
TabOrder = 1
end
end

@ -11,6 +11,6 @@ LazarusResources.Add('TFunctionListFrame','FORMDATA',[
+'oAutoItemHeight'#16'tvoHideSelection'#21'tvoKeepCollapsedNodes'#11'tvoReadO'
+'nly'#14'tvoShowButtons'#12'tvoShowLines'#11'tvoShowRoot'#11'tvoToolTips'#0#0
+#0#5'TEdit'#14'editSearchList'#4'Left'#2#0#6'Height'#2#21#3'Top'#3'2'#1#5'Wi'
+'dth'#2's'#5'Align'#7#8'alBottom'#8'OnChange'#7#20'editSearchListChange'#6'O'
+'nExit'#7#18'editSearchListExit'#8'TabOrder'#2#1#0#0#0
+'dth'#2's'#5'Align'#7#8'alBottom'#8'OnChange'#7#20'editSearchListChange'#10
+'OnKeyPress'#7#22'editSearchListKeyPress'#8'TabOrder'#2#1#0#0#0
]);

@ -15,7 +15,7 @@ type
editSearchList: TEdit;
FunctionList: TTreeView;
procedure editSearchListChange(Sender: TObject);
procedure editSearchListExit(Sender: TObject);
procedure editSearchListKeyPress(Sender: TObject; var Key: char);
procedure FunctionListMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FunctionListMouseUp(Sender: TObject; Button: TMouseButton;
@ -25,40 +25,34 @@ type
{ private declarations }
public
DraggingNode : TTreeNode;
ScriptNode : TTreeNode;
InCodeCompletion : boolean;
CompletionCaret : TPoint;
StartWordCompletion : TPoint;
CompletionLine : string;
CompletionStart : string;
function Find(Next : boolean) : boolean;
{ public declarations }
end;
implementation
uses
TestUnit, Graphics;
TestUnit, Graphics,simpleanalyzer;
{ TFunctionListFrame }
procedure TFunctionListFrame.editSearchListChange(Sender: TObject);
var
I: Integer;
begin
if(editSearchList.Text = '')then
begin
editSearchList.Color := clWhite;
exit;
end;
for I := 0 to FunctionList.Items.Count do //WTF LOOPS FAIL. for I := 1 to 3 do ;; would make I 4 after a successful, non-brakeing run :<
begin
if(I = FunctionList.Items.Count)then break;
if(pos(lowercase(editSearchList.Text), lowercase(FunctionList.Items[I].Text)) > 0)then
break;
end;
if(I = FunctionList.Items.Count)then
editSearchList.Color := 6711039
else
editSearchList.Color := clWhite;
Find(false);
end;
procedure TFunctionListFrame.editSearchListExit(Sender: TObject);
procedure TFunctionListFrame.editSearchListKeyPress(Sender: TObject;
var Key: char);
begin
editSearchList.Color := clWhite;
Writeln('test');
end;
procedure TFunctionListFrame.DockFormOnClose(Sender: TObject; var CloseAction: TCloseAction);
@ -67,6 +61,98 @@ begin
Form1.MenuItemFunctionList.Checked := False;
end;
function TFunctionListFrame.Find(Next : boolean) : boolean;
var
Start,i,index,posi: Integer;
FoundFunction : boolean;
str : string;
Node : TTreeNode;
begin
if(editSearchList.Text = '')then
begin
editSearchList.Color := clWhite;
editSearchList.Repaint;
node := FunctionList.Items.GetFirstNode;
while node <> nil do
begin;
node.Expanded:= false;
node := Node.GetNext;
end;
if InCodeCompletion then
begin;
Form1.CurrScript.SynEdit.Lines[ CompletionCaret.y - 1] := CompletionStart;
Form1.CurrScript.SynEdit.LogicalCaretXY:= point(CompletionCaret.x,CompletionCaret.y);
Form1.CurrScript.SynEdit.SelEnd:= Form1.CurrScript.SynEdit.SelStart;
end;
exit;
end;
FoundFunction := false;
if FunctionList.Selected <> nil then
begin
if next then
Start := FunctionList.Selected.AbsoluteIndex + 1
else
Start := FunctionList.Selected.AbsoluteIndex;
end else
Start := 0;
for i := start to FunctionList.Items.Count - 1 do
begin
Node := FunctionList.Items.Item[i];
if Node.Level = 1 then
if(pos(lowercase(editSearchList.Text), lowercase(FunctionList.Items[I].Text)) > 0)then
begin;
FoundFunction := true;
index := i;
break;
end;
end;
if not FoundFunction then
begin;
for i := 0 to start - 1 do
begin
Node := FunctionList.Items.Item[i];
if Node.Level = 1 then
if(pos(lowercase(editSearchList.Text), lowercase(FunctionList.Items[I].Text)) > 0)then
begin;
FoundFunction := true;
index := i;
break;
end;
end;
end;
Result := FoundFunction;
if Result then
begin;
Writeln(FunctionList.Items[Index].Text);
for i := 0 to FunctionList.Items.Count - 1 do
FunctionList.Items[i].Expanded:= false;
FunctionList.Items[Index].Selected := true;
FunctionList.Items[index].ExpandParents;
editSearchList.Color := clWhite;
if InCodeCompletion then
begin;
str :=format(CompletionLine,[ FunctionList.items[index].text]);
with Form1.CurrScript.SynEdit do
begin;
Lines[ CompletionCaret.y - 1] := str;
LogicalCaretXY:= StartWordCompletion;
i := SelStart;
posi := pos(lowercase(editSearchList.text), lowercase(FunctionList.items[index].text));
SelStart := i + length(editSearchList.Text) + posi - 1;
SelEnd := i + Length(str);
end;
end;
end else
begin
editSearchList.Color := 6711039;
if InCodeCompletion then
Form1.CurrScript.SynEdit.Lines[ CompletionCaret.y - 1] := CompletionStart;
end;
editSearchList.Repaint;
end;
procedure TFunctionListFrame.FunctionListMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var

@ -6,7 +6,7 @@ object ScriptFrame: TScriptFrame
ClientHeight = 328
ClientWidth = 397
TabOrder = 0
DesignLeft = 788
DesignLeft = 159
DesignTop = 420
inline SynEdit: TSynEdit
Left = 0
@ -595,6 +595,7 @@ object ScriptFrame: TScriptFrame
BracketHighlightStyle = sbhsBoth
OnChange = SynEditChange
OnProcessCommand = SynEditProcessCommand
OnProcessUserCommand = SynEditProcessUserCommand
OnSpecialLineColors = SynEditSpecialLineColors
inline TSynGutterPartList
object TSynGutterMarks

@ -3,8 +3,8 @@
LazarusResources.Add('TScriptFrame','FORMDATA',[
'TPF0'#12'TScriptFrame'#11'ScriptFrame'#4'Left'#2#0#6'Height'#3'H'#1#3'Top'#2
+#0#5'Width'#3#141#1#12'ClientHeight'#3'H'#1#11'ClientWidth'#3#141#1#8'TabOrd'
+'er'#2#0#10'DesignLeft'#3#20#3#9'DesignTop'#3#164#1#0#244#8'TSynEdit'#7'SynE'
+'dit'#4'Left'#2#0#6'Height'#3'H'#1#3'Top'#2#0#5'Width'#3#141#1#5'Align'#7#8
+'er'#2#0#10'DesignLeft'#3#159#0#9'DesignTop'#3#164#1#0#244#8'TSynEdit'#7'Syn'
+'Edit'#4'Left'#2#0#6'Height'#3'H'#1#3'Top'#2#0#5'Width'#3#141#1#5'Align'#7#8
+'alClient'#11'Font.Height'#2#243#9'Font.Name'#6#11'Courier New'#10'Font.Pitc'
+'h'#7#7'fpFixed'#12'Font.Quality'#7#16'fqNonAntialiased'#11'ParentColor'#8#10
+'ParentFont'#8#9'PopupMenu'#7#17'Form1.ScriptPopup'#8'TabOrder'#2#0#10'OnDra'
@ -118,37 +118,37 @@ LazarusResources.Add('TScriptFrame','FORMDATA',[
+#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0#13'Lines.Strings'#1#6#12'p'
+'rogram new;'#6#5'begin'#6#4'end.'#0#21'BracketHighlightStyle'#7#8'sbhsBoth'
+#8'OnChange'#7#13'SynEditChange'#16'OnProcessCommand'#7#21'SynEditProcessCom'
+'mand'#19'OnSpecialLineColors'#7#24'SynEditSpecialLineColors'#0#244#18'TSynG'
+'utterPartList'#0#0#15'TSynGutterMarks'#0#5'Width'#2#23#0#0#20'TSynGutterLin'
+'eNumber'#0#5'Width'#2#17#12'MouseActions'#14#0#21'MarkupInfo.Background'#7#9
+'clBtnFace'#21'MarkupInfo.Foreground'#7#6'clNone'#10'DigitCount'#2#2#30'Show'
+'OnlyLineNumbersMultiplesOf'#2#1#9'ZeroStart'#8#12'LeadingZeros'#8#0#0#17'TS'
+'ynGutterChanges'#0#5'Width'#2#4#13'ModifiedColor'#4#252#233#0#0#10'SavedCol'
+'or'#7#7'clGreen'#0#0#19'TSynGutterSeparator'#0#5'Width'#2#2#0#0#21'TSynGutt'
+'erCodeFolding'#0#12'MouseActions'#14#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Bu'
+'tton'#7#7'mbRight'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7'Com'
+'mand'#2#16#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9
+'ShiftMask'#11#7'ssShift'#0#6'Button'#7#8'mbMiddle'#10'ClickCount'#7#5'ccAny'
,#8'ClickDir'#7#6'cdDown'#7'Command'#2#14#9'MoveCaret'#8#6'Option'#2#0#8'Prio'
+'rity'#2#0#0#1#5'Shift'#11#7'ssShift'#0#9'ShiftMask'#11#7'ssShift'#0#6'Butto'
+'n'#7#8'mbMiddle'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Comman'
+'d'#2#14#9'MoveCaret'#8#6'Option'#2#1#8'Priority'#2#0#0#1#5'Shift'#11#0#9'Sh'
+'iftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7
+#6'cdDown'#7'Command'#2#0#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0#21
+'MarkupInfo.Background'#7#6'clNone'#21'MarkupInfo.Foreground'#7#6'clGray'#20
+'MouseActionsExpanded'#14#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mb'
+'Left'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#14#9'M'
+'oveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0#21'MouseActionsCollapsed'#14#1
+#5'Shift'#11#6'ssCtrl'#0#9'ShiftMask'#11#6'ssCtrl'#0#6'Button'#7#6'mbLeft'#10
+'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#15#9'MoveCaret'
+#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#6'ssCtrl'
+#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7
+'Command'#2#15#9'MoveCaret'#8#6'Option'#2#1#8'Priority'#2#0#0#0#0#0#0#0#17'T'
+'SynFreePascalSyn'#17'SynFreePascalSyn1'#7'Enabled'#8#23'CommentAttri.Foregr'
+'ound'#7#6'clBlue'#18'CommentAttri.Style'#11#6'fsBold'#0#26'IdentifierAttri.'
+'Foreground'#7#9'clDefault'#22'NumberAttri.Foreground'#7#6'clNavy'#22'String'
+'Attri.Foreground'#7#6'clBlue'#22'SymbolAttri.Foreground'#7#5'clRed'#25'Dire'
+'ctiveAttri.Foreground'#7#5'clRed'#20'DirectiveAttri.Style'#11#6'fsBold'#0#12
+'CompilerMode'#7#9'pcmObjFPC'#14'NestedComments'#9#4'left'#3'@'#1#3'top'#2#16
+#0#0#0
+'mand'#20'OnProcessUserCommand'#7#25'SynEditProcessUserCommand'#19'OnSpecial'
+'LineColors'#7#24'SynEditSpecialLineColors'#0#244#18'TSynGutterPartList'#0#0
+#15'TSynGutterMarks'#0#5'Width'#2#23#0#0#20'TSynGutterLineNumber'#0#5'Width'
+#2#17#12'MouseActions'#14#0#21'MarkupInfo.Background'#7#9'clBtnFace'#21'Mark'
+'upInfo.Foreground'#7#6'clNone'#10'DigitCount'#2#2#30'ShowOnlyLineNumbersMul'
+'tiplesOf'#2#1#9'ZeroStart'#8#12'LeadingZeros'#8#0#0#17'TSynGutterChanges'#0
+#5'Width'#2#4#13'ModifiedColor'#4#252#233#0#0#10'SavedColor'#7#7'clGreen'#0#0
+#19'TSynGutterSeparator'#0#5'Width'#2#2#0#0#21'TSynGutterCodeFolding'#0#12'M'
+'ouseActions'#14#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#7'mbRight'#10
+'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7'Command'#2#16#9'MoveCaret'
+#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#7'ssShift'
,#0#6'Button'#7#8'mbMiddle'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'
+#7'Command'#2#14#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11
+#7'ssShift'#0#9'ShiftMask'#11#7'ssShift'#0#6'Button'#7#8'mbMiddle'#10'ClickC'
+'ount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#14#9'MoveCaret'#8#6'O'
+'ption'#2#1#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6
+'mbLeft'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#0#9
+'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0#21'MarkupInfo.Background'#7#6
+'clNone'#21'MarkupInfo.Foreground'#7#6'clGray'#20'MouseActionsExpanded'#14#1
+#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'cc'
+'Any'#8'ClickDir'#7#6'cdDown'#7'Command'#2#14#9'MoveCaret'#8#6'Option'#2#0#8
+'Priority'#2#0#0#0#21'MouseActionsCollapsed'#14#1#5'Shift'#11#6'ssCtrl'#0#9
+'ShiftMask'#11#6'ssCtrl'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8
+'ClickDir'#7#6'cdDown'#7'Command'#2#15#9'MoveCaret'#8#6'Option'#2#0#8'Priori'
+'ty'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#6'ssCtrl'#0#6'Button'#7#6'mbLeft'
+#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#15#9'MoveCar'
+'et'#8#6'Option'#2#1#8'Priority'#2#0#0#0#0#0#0#0#17'TSynFreePascalSyn'#17'Sy'
+'nFreePascalSyn1'#7'Enabled'#8#23'CommentAttri.Foreground'#7#6'clBlue'#18'Co'
+'mmentAttri.Style'#11#6'fsBold'#0#26'IdentifierAttri.Foreground'#7#9'clDefau'
+'lt'#22'NumberAttri.Foreground'#7#6'clNavy'#22'StringAttri.Foreground'#7#6'c'
+'lBlue'#22'SymbolAttri.Foreground'#7#5'clRed'#25'DirectiveAttri.Foreground'#7
+#5'clRed'#20'DirectiveAttri.Style'#11#6'fsBold'#0#12'CompilerMode'#7#9'pcmOb'
+'jFPC'#14'NestedComments'#9#4'left'#3'@'#1#3'top'#2#16#0#0#0
]);

@ -29,7 +29,8 @@ interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, SynHighlighterPas, SynEdit, SynEditMarkupHighAll,
mmlpsthread,ComCtrls, SynEditKeyCmds, LCLType, SynEditMarkupSpecialLine, Graphics, Controls;
const
ecCodeCompletion = ecUserFirst;
type
TScriptState = (ss_None,ss_Running,ss_Paused,ss_Stopping);
{
@ -51,6 +52,8 @@ type
);
procedure SynEditProcessCommand(Sender: TObject;
var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer);
procedure SynEditProcessUserCommand(Sender: TObject;
var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer);
procedure SynEditSpecialLineColors(Sender: TObject; Line: integer;
var Special: boolean; var FG, BG: TColor);
private
@ -95,7 +98,7 @@ end;
procedure TScriptFrame.SynEditDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if TFunctionListFrame(Source).DraggingNode.Data <> nil then
SynEdit.InsertTextAtCaret(PChar(TFunctionListFrame(Source).DraggingNode.Data));
SynEdit.InsertTextAtCaret( GetMethodName(PChar(TFunctionListFrame(Source).DraggingNode.Data),true));
end;
procedure TScriptFrame.SynEditDragOver(Sender, Source: TObject; X, Y: Integer;
@ -135,6 +138,54 @@ begin
end;
end;
procedure TScriptFrame.SynEditProcessUserCommand(Sender: TObject;
var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer);
var
LineText,SearchText : string;
Caret : TPoint;
i,endI : integer;
begin
if Command = ecCodeCompletion then
begin
form1.FunctionListShown(True);
with form1.frmFunctionList do
if editSearchList.CanFocus then
begin;
editSearchList.SetFocus;
LineText := SynEdit.LineText;
Caret:=SynEdit.LogicalCaretXY;
i := Caret.X - 1;
endi := caret.x;
if (i > length(LineText)) or ((i = 0) and (length(lineText) = 0)) then
begin
SearchText:= '';
CompletionLine := PadRight(linetext,caret.x);
end
else begin
while (i > 0) and (LineText[i] in ['a'..'z','A'..'Z','0'..'9','_']) do
dec(i);
while LineText[endi] in ['a'..'z','A'..'Z','0'..'9','_'] do
inc(endi);
SearchText := Trim(copy(LineText, i + 1, Caret.X - i - 1));
CompletionLine := LineText;
end;
CompletionStart:= LineText;
Delete(CompletionLine,i+1,endi - i - 1);
Insert('%s',CompletionLine,i+1);
CompletionCaret := Point(endi,Caret.y);
StartWordCompletion:= Point(i+1,caret.y);
Writeln(CompletionLine);
Writeln(CompletionStart);
InCodeCompletion := true;
editSearchList.Text:= SearchText;
editSearchList.SelStart:= Length(searchText);
SynEdit.SelectedColor.Style:= [fsUnderline];
SynEdit.SelectedColor.Foreground:= clBlack;
SynEdit.SelectedColor.Background:= clWhite;
end;
end;
end;
procedure TScriptFrame.SynEditSpecialLineColors(Sender: TObject;
Line: integer; var Special: boolean; var FG, BG: TColor);
begin
@ -201,7 +252,15 @@ begin
FScriptState:= ss_None;
Form1.RefreshTab;
end;
procedure AddKey(const SynEdit : TSynEdit; const ACmd: TSynEditorCommand; const AKey: word;const AShift: TShiftState);
begin
with SynEdit.KeyStrokes.Add do
begin
Key := AKey;
Shift := AShift;
Command := ACmd;
end;
end;
constructor TScriptFrame.Create(TheOwner: TComponent);
var
MarkCaret : TSynEditMarkupHighlightAllCaret;
@ -233,6 +292,7 @@ begin
MarkCaret.WaitTime := 1500;
MarkCaret.IgnoreKeywords := true;
end;
AddKey(SynEdit,ecCodeCompletion,VK_SPACE,[ssCtrl]);
end;
destructor TScriptFrame.Destroy;

File diff suppressed because it is too large Load Diff

@ -31,7 +31,7 @@ uses
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, LResources, testunit, colourhistory, About, internets, debugimage,
framefunctionlist;
framefunctionlist, simpleanalyzer;
{$IFDEF WINDOWS}{$R project1.rc}{$ENDIF}

@ -0,0 +1,372 @@
unit simpleanalyzer;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, SynEdit, SynHighlighterPas, Clipbrd;
type
TScriptVar = record
VarName, VarType : string;
end;
{ TScriptMethod }
TScriptMethod = class(TObject)
BeginPos, EndPos : integer;
isFunction : Boolean;
Name : string;
Parameters,Vars : array of TScriptVar;
ParameterLen,VarLen : integer;
Returns : String;
Methods : Array of TScriptMethod;
MethodLen : Integer;
function AddMethod( iszehfunction : boolean; TheName : string): TScriptMethod;
procedure AddVar( TheName, TheType : string);
procedure AddParam( TheName : string);
constructor create( iszehfunction : Boolean; TheName : string);
function CreateMethodStr : string;
Destructor Destroy; override;
end;
{ TScriptAnalyzer }
TScriptAnalyzer = class(TObject)
ScriptToAnalyze : string;
ScriptName : string;
Methods : Array of TScriptMethod;
MethodLen : Integer;
Main : TScriptMethod;
HasMain : boolean;
Vars : Array of TScriptVar;
VarLen : integer;
Function AddMethod( iszehfunction : boolean; Name : string): TScriptMethod;
procedure AddVar( TheName, TheType : string);
procedure analyze;
constructor create;
Destructor Destroy; override;
end;
implementation
uses
mPasLex,strutils;
destructor TScriptAnalyzer.Destroy;
var
i : integer;
begin;
for i := 0 to MethodLen - 1 do
Self.Methods[i].Free;
Main.Free;
inherited;
end;
destructor TScriptMethod.Destroy;
var
i : integer;
begin;
for i := 0 to MethodLen - 1 do
Self.Methods[i].Free;
inherited;
end;
constructor TScriptMethod.create( iszehfunction : Boolean; TheName : string);
begin;
inherited Create;
Self.isFunction := iszehfunction;
Self.Name := TheName;
end;
function TScriptMethod.CreateMethodStr: string;
var
i : integer;
LastType : string;
begin
if isFunction then
result := 'function ' + Name
else
result := 'procedure '+ name;
if ParameterLen > 0 then
begin;
result := result + '(';
LastType := '';
for i := 0 to ParameterLen - 1 do
begin;
if lasttype <> '' then
if lowercase(lasttype) <> lowercase(Parameters[i].VarType) then
result := result + ' : ' + LastType + '; '
else
result := result + ', ';
result := result + Parameters[i].VarName;
lasttype := Parameters[i].VarType;
end;
Result := result + ' : ' + Parameters[ParameterLen - 1].VarType + ')';
end;
if isFunction then
result := result + ' : ' + Returns
else
result := result + ';';
end;
constructor TScriptAnalyzer.create;
begin;
inherited create;
ScriptName := 'Default';
Main := TScriptMethod.create(false,'!main');
end;
procedure TScriptMethod.addVar( TheName, TheType : string);
begin;
inc(Self.VarLen);
SetLength(Self.Vars, self.varlen);
Self.Vars[Self.VarLen - 1].VarName := TheName;
Self.Vars[Self.VarLen - 1].VarType := TheType;
end;
procedure TScriptAnalyzer.AddVar( TheName, TheType : string);
begin;
inc(Self.VarLen);
SetLength(Self.Vars, self.VarLen);
Self.Vars[Self.VarLen - 1].VarName := TheName;
Self.Vars[Self.VarLen - 1].VarType := TheType;
end;
function TScriptMethod.AddMethod( iszehfunction : boolean; TheName : string) : TScriptMethod;
begin;
inc(Self.MethodLen);
SetLength(Self.Methods, Self.MethodLen);
Self.Methods[Self.Methodlen - 1] := TScriptMethod.create(iszehfunction,TheName);
Result :=Self.Methods[Self.Methodlen - 1];
end;
function TScriptAnalyzer.AddMethod( iszehfunction : boolean; Name : string) : TScriptMethod;
begin;
inc(Self.MethodLen);
SetLength(Self.Methods, Self.MethodLen);
Self.Methods[Self.Methodlen - 1] := TScriptMethod.create(iszehfunction,Name);
Result :=Self.Methods[Self.Methodlen - 1];
end;
procedure TScriptMethod.AddParam(TheName: string);
begin;
inc(Self.ParameterLen);
SetLength(Self.Parameters, self.ParameterLen);
Self.Parameters[Self.ParameterLen - 1].VarName := TheName;
end;
procedure TScriptAnalyzer.analyze;
var
LastTk : TTokenKind;
StartPos,LastPos: integer;
LastTkString : string;
I : integer;
InMethod : Boolean;
ExpectingType : boolean; //Params and result
WaitingForResult : boolean;
StartParam : integer;
StartVar : integer;
Method : TScriptMethod;
InTypes : Boolean;
TempName : string;
BeginCount : integer;
InGlobal : boolean;
InParams : boolean;
InVarSection : Boolean;
Lex : TmwPasLex;
begin
Lex := TmwPasLex.Create;
Lex.Origin := PChar(Self.ScriptToAnalyze);
InTypes := False;
InMethod := False;
InParams := False;
Method := nil;
BeginCount := 0;
ExpectingType := False;
WaitingForResult := False;
StartParam := 0;
InVarSection := False;
while (Lex.TokenID <> tkNull) do
begin;
LastTk := Lex.TokenID;
LastPos := Lex.RunPos;
Lex.NextNoJunk;
case LastTk of
// tkInclude : ShowMessage(Lex.Token);
// if (FParser.Token[Length(FParser.Token)] = '}') then
// FIncludes.Add(StringReplace(LowerCase(Trim(Copy(FParser.Token, 11, Length(FParser.Token) - 11))), '/', '\', [rfReplaceAll]));
tkProgram : if Lex.TokenID = tkIdentifier then
Self.ScriptName := Lex.Token;
tkRoundOpen: begin;
LastTkString := Lex.Token;
if InMethod and InParams then
StartParam := 0;
end;
tkType : InVarSection := False;
tkBegin : begin;
InVarSection := False;
if InMethod then
inc(BeginCount)
else if BeginCount = 0 then
begin;
InVarSection := false;
InMethod := true;
HasMain := True;
Method := Main;
Main.BeginPos := LastPos - 4;
Inc(BeginCount);
end;
end;
tkCase : begin;
if InMethod then
inc(BeginCount);
end;
tkEnd : if InMethod then
begin;
Dec(BeginCount);
if BeginCount = 0 then
begin;
Method.EndPos := LastPos;
InMethod := False;
end;
end;
tkIdentifier: begin;
if (InMethod and InParams) or (InVarSection) then
begin;
{ if ExpectingType then
begin;
FormAnalyzer.SynEdit1.Lines.add(copy( FormAnalyzer.SynEdit1.Lines.Text,StartPos, LastPos - StartPos));
LastTKString := copy( FormAnalyzer.SynEdit1.Lines.GetText,StartPos, Lex.TokenPos - StartPos);
for i := StartParam to Method.ParameterLen - 1 do
Method.Parameters[i].VarType := LastTkString;
end
else
Method.AddParam(LastTkString); }
if not ExpectingType and InVarSection then
Method.AddVar(LastTKString,'') else
if not ExpectingType then
Method.AddParam(LastTKString);
end;
end;
tkVar : begin;
if InMethod and Not InParams then
InVarSection := True;
if not InMethod then
begin;
Method := Main;
InGlobal := True;
InVarSection := True;
end;
if InVarSection then
StartVar := Method.VarLen;
LastTKString := Lex.Token;
end;
tkConst : begin;
if not InMethod then
InVarSection := false;
LastTKString := Lex.token;
end;
tkComma : begin;
LastTKString := Lex.Token;
end;
tkColon : begin;
LastTkString := Lex.Token;
if (InMethod and InParams) or InVarSection then
begin;
ExpectingType := True;
StartPos := LastPos;
end
else if InMethod and WaitingForresult then
begin;
Method.Returns := Lex.Token;
WaitingForResult := False;
end;
end;
tkSemiColon : begin;
if (InMethod and InParams) or (InVarSection) then
begin;
if ExpectingType then
begin;
LastTKString := Trim(copy( ScriptToAnalyze,StartPos + 1, LastPos - StartPos - 1));
if (InParams and InMethod) then
for i := StartParam to Method.ParameterLen - 1 do
Method.Parameters[i].VarType := LastTkString
else
for i := StartVar to Method.VarLen - 1 do
Method.Vars[i].VarType := LastTKString;
ExpectingType := False;
end;
LastTkString := Lex.Token;
StartParam := Method.ParameterLen;
StartVar := Method.VarLen;
end;
end;
tkRoundClose: if InMethod and InParams then
begin;
if ExpectingType then
begin;
LastTKString := Trim(copy(ScriptToAnalyze,StartPos + 2, LastPos - StartPos - 2));
for i := StartParam to Method.ParameterLen - 1 do
Method.Parameters[i].VarType := LastTkString;
ExpectingType := False;
end;
InParams := False;
end;
tkProcedure,
tkFunction : begin;
if not InMethod then
InVarSection := False;
if (not InTypes) and (not InVarSection) then
begin;
WaitingForResult := LastTK = tkFunction;
if Lex.TokenID <> tkIdentifier then
begin;
ShowMessage('No method name -> exiting');
exit;
end;
TempName := Lex.Token;
Lex.NextNoJunk;
if Lex.TokenID = tkRoundOpen then
InParams := True
else if Lex.TokenID = tkPoint then
begin;
// FormAnalyzer.SynEdit2.Lines.add('In class definition *cough*');
Lex.NextNoJunk;
TempName := Lex.Token;
end else if ((Lex.TokenID = tkSemicolon) xor WaitingForResult) or ((Lex.TokenID = tkColon) xor WaitingForResult) then
begin;
InParams := False;
end else
begin;
ShowMessage('Your missing some stuff in the procedure declaration');
Exit;
end;
if InMethod then
Method := Method.AddMethod(WaitingForResult,TempName)
else
Method := Self.AddMethod(WaitingForResult,TempName);
InMethod := true;
Method.BeginPos := LastPos - 5;
end;
end;
end;
// SynEdit2.Lines.Add(TokeToString(Lex.TokenID) + '-' + Lex.Token);
end;
end;
end.

@ -1,12 +1,12 @@
object Form1: TForm1
Left = 274
Left = 273
Height = 557
Top = 233
Width = 732
Width = 734
ActiveControl = ScriptPanel
Caption = 'THA FUKING MUFASA'
ClientHeight = 537
ClientWidth = 732
ClientWidth = 734
KeyPreview = True
Menu = MainMenu1
OnClose = FormClose
@ -20,7 +20,7 @@ object Form1: TForm1
Left = 0
Height = 24
Top = 0
Width = 732
Width = 734
Caption = 'ToolBar1'
Images = Mufasa_Image_List
ParentShowHint = False
@ -168,7 +168,7 @@ object Form1: TForm1
Left = 0
Height = 23
Top = 514
Width = 732
Width = 734
Panels = <
item
Width = 60
@ -186,16 +186,16 @@ object Form1: TForm1
Left = 0
Height = 154
Top = 360
Width = 732
Width = 734
Align = alBottom
ClientHeight = 154
ClientWidth = 732
ClientWidth = 734
TabOrder = 2
object Memo1: TMemo
Left = 1
Height = 152
Top = 1
Width = 730
Width = 732
Align = alClient
ScrollBars = ssAutoBoth
TabOrder = 0
@ -206,7 +206,7 @@ object Form1: TForm1
Left = 0
Height = 5
Top = 355
Width = 732
Width = 734
Align = alBottom
ResizeAnchor = akBottom
end
@ -214,20 +214,20 @@ object Form1: TForm1
Left = 0
Height = 331
Top = 24
Width = 732
Width = 734
Align = alClient
BevelOuter = bvNone
ClientHeight = 331
ClientWidth = 732
ClientWidth = 734
DockSite = True
TabOrder = 4
OnDockDrop = ScriptPanelDockDrop
OnDockOver = ScriptPanelDockOver
object PageControl1: TPageControl
Left = 118
Left = 150
Height = 296
Top = 0
Width = 614
Width = 584
Align = alClient
Images = Mufasa_Image_List
PopupMenu = TabPopup
@ -245,11 +245,11 @@ object Form1: TForm1
Left = 0
Height = 35
Top = 296
Width = 732
Width = 734
Align = alBottom
BevelOuter = bvSpace
ClientHeight = 35
ClientWidth = 732
ClientWidth = 734
TabOrder = 1
Visible = False
object SpeedButtonSearch: TSpeedButton
@ -373,7 +373,7 @@ object Form1: TForm1
end
end
object Splitter1: TSplitter
Left = 113
Left = 145
Height = 296
Top = 0
Width = 5
@ -382,19 +382,22 @@ object Form1: TForm1
end
inline frmFunctionList: TFunctionListFrame
Height = 296
Width = 113
Width = 145
ClientHeight = 296
ClientWidth = 113
ClientWidth = 145
TabOrder = 3
Visible = False
inherited FunctionList: TTreeView
Height = 275
Width = 113
Width = 145
OnChange = FunctionListChange
OnExit = FunctionListExit
end
inherited editSearchList: TEdit
Top = 275
Width = 113
OnExit = nil
Width = 145
OnExit = editSearchListExit
OnKeyPress = editSearchListKeyPress
end
end
end

@ -1,13 +1,13 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TForm1','FORMDATA',[
'TPF0'#6'TForm1'#5'Form1'#4'Left'#3#18#1#6'Height'#3'-'#2#3'Top'#3#233#0#5'Wi'
+'dth'#3#220#2#13'ActiveControl'#7#11'ScriptPanel'#7'Caption'#6#17'THA FUKING'
+' MUFASA'#12'ClientHeight'#3#25#2#11'ClientWidth'#3#220#2#10'KeyPreview'#9#4
'TPF0'#6'TForm1'#5'Form1'#4'Left'#3#17#1#6'Height'#3'-'#2#3'Top'#3#233#0#5'Wi'
+'dth'#3#222#2#13'ActiveControl'#7#11'ScriptPanel'#7'Caption'#6#17'THA FUKING'
+' MUFASA'#12'ClientHeight'#3#25#2#11'ClientWidth'#3#222#2#10'KeyPreview'#9#4
+'Menu'#7#9'MainMenu1'#7'OnClose'#7#9'FormClose'#8'OnCreate'#7#10'FormCreate'
+#9'OnDestroy'#7#11'FormDestroy'#10'OnShortCut'#7#13'FormShortCuts'#8'Positio'
+'n'#7#14'poScreenCenter'#10'LCLVersion'#6#6'0.9.29'#7'Visible'#9#0#8'TToolBa'
+'r'#8'ToolBar1'#4'Left'#2#0#6'Height'#2#24#3'Top'#2#0#5'Width'#3#220#2#7'Cap'
+'r'#8'ToolBar1'#4'Left'#2#0#6'Height'#2#24#3'Top'#2#0#5'Width'#3#222#2#7'Cap'
+'tion'#6#8'ToolBar1'#6'Images'#7#17'Mufasa_Image_List'#14'ParentShowHint'#8#8
+'ShowHint'#9#8'TabOrder'#2#0#0#11'TToolButton'#6'TB_Run'#4'Left'#2'`'#4'Hint'
+#6#3'Run'#3'Top'#2#2#6'Action'#7#15'ActionRunScript'#10'ImageIndex'#2#6#0#0
@ -44,33 +44,33 @@ LazarusResources.Add('TForm1','FORMDATA',[
+'Save'#4'Left'#2'/'#4'Hint'#6#4'Save'#3'Top'#2#2#6'Action'#7#16'ActionSaveSc'
+'ript'#0#0#11'TToolButton'#10'TB_SaveAll'#4'Left'#2'F'#4'Hint'#6#8'Save all'
+#3'Top'#2#2#6'Action'#7#13'ActionSaveAll'#7'Enabled'#8#0#0#0#10'TStatusBar'#9
+'StatusBar'#4'Left'#2#0#6'Height'#2#23#3'Top'#3#2#2#5'Width'#3#220#2#6'Panel'
+'StatusBar'#4'Left'#2#0#6'Height'#2#23#3'Top'#3#2#2#5'Width'#3#222#2#6'Panel'
+'s'#14#1#5'Width'#2'<'#0#1#4'Text'#6#8'Untitled'#5'Width'#3#150#0#0#1#5'Widt'
+'h'#2'2'#0#0#11'SimplePanel'#8#0#0#6'TPanel'#9'PanelMemo'#4'Left'#2#0#6'Heig'
+'ht'#3#154#0#3'Top'#3'h'#1#5'Width'#3#220#2#5'Align'#7#8'alBottom'#12'Client'
+'Height'#3#154#0#11'ClientWidth'#3#220#2#8'TabOrder'#2#2#0#5'TMemo'#5'Memo1'
+#4'Left'#2#1#6'Height'#3#152#0#3'Top'#2#1#5'Width'#3#218#2#5'Align'#7#8'alCl'
+'ht'#3#154#0#3'Top'#3'h'#1#5'Width'#3#222#2#5'Align'#7#8'alBottom'#12'Client'
+'Height'#3#154#0#11'ClientWidth'#3#222#2#8'TabOrder'#2#2#0#5'TMemo'#5'Memo1'
+#4'Left'#2#1#6'Height'#3#152#0#3'Top'#2#1#5'Width'#3#220#2#5'Align'#7#8'alCl'
+'ient'#10'ScrollBars'#7#10'ssAutoBoth'#8'TabOrder'#2#0#0#0#0#9'TSplitter'#19
+'SplitterMemoSynedit'#6'Cursor'#7#8'crVSplit'#4'Left'#2#0#6'Height'#2#5#3'To'
+'p'#3'c'#1#5'Width'#3#220#2#5'Align'#7#8'alBottom'#12'ResizeAnchor'#7#8'akBo'
+'p'#3'c'#1#5'Width'#3#222#2#5'Align'#7#8'alBottom'#12'ResizeAnchor'#7#8'akBo'
+'ttom'#0#0#6'TPanel'#11'ScriptPanel'#4'Left'#2#0#6'Height'#3'K'#1#3'Top'#2#24
+#5'Width'#3#220#2#5'Align'#7#8'alClient'#10'BevelOuter'#7#6'bvNone'#12'Clien'
+'tHeight'#3'K'#1#11'ClientWidth'#3#220#2#8'DockSite'#9#8'TabOrder'#2#4#10'On'
+#5'Width'#3#222#2#5'Align'#7#8'alClient'#10'BevelOuter'#7#6'bvNone'#12'Clien'
+'tHeight'#3'K'#1#11'ClientWidth'#3#222#2#8'DockSite'#9#8'TabOrder'#2#4#10'On'
+'DockDrop'#7#19'ScriptPanelDockDrop'#10'OnDockOver'#7#19'ScriptPanelDockOver'
+#0#12'TPageControl'#12'PageControl1'#4'Left'#2'v'#6'Height'#3'('#1#3'Top'#2#0
+#5'Width'#3'f'#2#5'Align'#7#8'alClient'#6'Images'#7#17'Mufasa_Image_List'#9
+'PopupMenu'#7#8'TabPopup'#8'TabOrder'#2#0#8'OnChange'#7#18'PageControl1Chang'
+'e'#10'OnChanging'#7#20'PageControl1Changing'#14'OnContextPopup'#7#24'PageCo'
+'ntrol1ContextPopup'#10'OnDragDrop'#7#20'PageControl1DragDrop'#10'OnDragOver'
+#7#20'PageControl1DragOver'#11'OnMouseDown'#7#21'PageControl1MouseDown'#9'On'
+'MouseUp'#7#19'PageControl1MouseUp'#13'OnPageChanged'#7#18'PageControl1Chang'
+'e'#0#0#6'TPanel'#11'SearchPanel'#4'Left'#2#0#6'Height'#2'#'#3'Top'#3'('#1#5
,'Width'#3#220#2#5'Align'#7#8'alBottom'#10'BevelOuter'#7#7'bvSpace'#12'Client'
+'Height'#2'#'#11'ClientWidth'#3#220#2#8'TabOrder'#2#1#7'Visible'#8#0#12'TSpe'
+'edButton'#17'SpeedButtonSearch'#4'Left'#2' '#6'Height'#2#19#3'Top'#2#7#5'Wi'
+'dth'#2#16#5'Color'#7#9'clBtnFace'#4'Flat'#9#10'Glyph.Data'#10':'#9#0#0'6'#9
+#0#0'BM6'#9#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0' '#0#0#0#0#0
+#0#9#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#12'TPageControl'#12'PageControl1'#4'Left'#3#150#0#6'Height'#3'('#1#3'Top'
+#2#0#5'Width'#3'H'#2#5'Align'#7#8'alClient'#6'Images'#7#17'Mufasa_Image_List'
+#9'PopupMenu'#7#8'TabPopup'#8'TabOrder'#2#0#8'OnChange'#7#18'PageControl1Cha'
+'nge'#10'OnChanging'#7#20'PageControl1Changing'#14'OnContextPopup'#7#24'Page'
+'Control1ContextPopup'#10'OnDragDrop'#7#20'PageControl1DragDrop'#10'OnDragOv'
+'er'#7#20'PageControl1DragOver'#11'OnMouseDown'#7#21'PageControl1MouseDown'#9
+'OnMouseUp'#7#19'PageControl1MouseUp'#13'OnPageChanged'#7#18'PageControl1Cha'
+'nge'#0#0#6'TPanel'#11'SearchPanel'#4'Left'#2#0#6'Height'#2'#'#3'Top'#3'('#1
,#5'Width'#3#222#2#5'Align'#7#8'alBottom'#10'BevelOuter'#7#7'bvSpace'#12'Clie'
+'ntHeight'#2'#'#11'ClientWidth'#3#222#2#8'TabOrder'#2#1#7'Visible'#8#0#12'TS'
+'peedButton'#17'SpeedButtonSearch'#4'Left'#2' '#6'Height'#2#19#3'Top'#2#7#5
+'Width'#2#16#5'Color'#7#9'clBtnFace'#4'Flat'#9#10'Glyph.Data'#10':'#9#0#0'6'
+#9#0#0'BM6'#9#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0' '#0#0#0#0
+#0#0#9#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#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
@ -91,10 +91,10 @@ 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#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#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#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#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#255#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#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#0#0#0#0#0#255#0#0#0#255#0#0#0#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#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#255#0#0#0#255#0#0#0#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#0#0#0
+#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0
@ -146,72 +146,74 @@ LazarusResources.Add('TForm1','FORMDATA',[
+'OnKeyPress'#7#25'LabeledEditSearchKeyPress'#0#0#9'TCheckBox'#17'CheckBoxMat'
+'chCase'#4'Left'#3'@'#1#6'Height'#2#17#3'Top'#2#7#5'Width'#2'H'#7'Caption'#6
+#10'Match case'#7'OnClick'#7#22'CheckBoxMatchCaseClick'#8'TabOrder'#2#1#0#0#0
+#9'TSplitter'#9'Splitter1'#4'Left'#2'q'#6'Height'#3'('#1#3'Top'#2#0#5'Width'
+#2#5#11'OnCanResize'#7#18'Splitter1CanResize'#7'Visible'#8#0#0#244#18'TFunct'
+'ionListFrame'#15'frmFunctionList'#6'Height'#3'('#1#5'Width'#2'q'#12'ClientH'
+'eight'#3'('#1#11'ClientWidth'#2'q'#8'TabOrder'#2#3#7'Visible'#8#0#241#9'TTr'
+'eeView'#12'FunctionList'#6'Height'#3#19#1#5'Width'#2'q'#0#0#241#5'TEdit'#14
+'editSearchList'#3'Top'#3#19#1#5'Width'#2'q'#6'OnExit'#13#0#0#0#0#9'TMainMen'
+'u'#9'MainMenu1'#4'left'#3#16#2#0#9'TMenuItem'#8'MenuFile'#7'Caption'#6#5'&F'
+'ile'#13'SubMenuImages'#7#17'Mufasa_Image_List'#0#9'TMenuItem'#11'MenuItemNe'
+'w'#6'Action'#7#15'ActionNewScript'#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#187'j4k'#186'e0'#188#187'f1'
+#237#186'f0'#247#186'f0'#247#186'f0'#247#186'e0'#247#186'e/'#247#185'e.'#247
+#185'e.'#247#185'd.'#247#185'd.'#239#183'b,'#189#183'b.c'#255#255#255#0#255
+#255#255#0#188'i3'#222#248#241#234#242#247#236#223#253#246#235#222#255#246
+#234#222#255#246#234#220#255#246#234#220#255#250#243#235#255#250#243#235#255
+#250#242#234#255#252#247#243#255#252#248#244#253#254#254#253#240#183'`*'#213
+#255#255#255#0#255#255#255#0#191'q8'#245#245#235#223#254#253#191'h'#255#252
+#189'g'#255#251#190'e'#255#252#190'd'#255#252#190'd'#255#252#189'b'#255#251
+#189'c'#255#251#188'a'#255#252#190'`'#255#252#188'b'#255#253#251#248#253#185
+'d-'#243#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#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#197#128'B'#247
+#248#241#232#255#254#229#213#255#253#229#211#255#253#229#211#255#252#229#211
+#255#252#229#211#255#252#228#209#255#252#226#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#197#130'E'#247#248#242#235#255#254#231#214#255#253#231#214#255#253#231
+#214#255#253#231#214#255#253#230#213#255#253#229#211#255#252#228#209#255#252
+#226#205#255#251#225#203#255#251#225#201#255#251#247#242#255#197'|?'#247#255
+#255#255#0#255#255#255#0#198#132'G'#247#249#243#236#255#254#232#214#255#254
+#232#215#255#253#231#214#255#253#231#214#255#253#231#213#255#253#229#211#255
+#251#228#208#255#251#227#204#255#250#223#199#255#250#223#198#255#250#242#234
+#255#198#128'B'#247#255#255#255#0#255#255#255#0#198#136'I'#247#249#244#237
+#255#254#232#216#255#254#232#216#255#254#232#215#255#254#231#214#255#253#229
+#211#255#252#228#209#255#251#225#204#255#250#224#199#255#249#221#195#255#248
+#220#194#255#250#244#237#255#198#130'E'#247#255#255#255#0#255#255#255#0#198
+#136'J'#247#249#244#239#255#254#231#215#255#253#231#214#255#253#231#213#255
+#253#230#212#255#252#230#210#255#251#225#204#255#250#223#199#255#248#220#194
+#255#246#218#189#255#246#216#187#255#250#244#239#255#198#131'F'#247#255#255
+#255#0#255#255#255#0#198#137'K'#247#249#244#240#255#252#230#211#255#252#230
+#212#255#253#231#211#255#252#228#209#255#251#227#205#255#250#224#200#255#248
+#220#194#255#245#214#187#255#243#212#181#255#241#210#179#255#248#244#240#255
+#196#130'F'#247#255#255#255#0#255#255#255#0#198#137'K'#247#249#245#241#255
+#252#227#207#255#251#228#208#255#252#228#207#255#252#227#205#255#250#225#202
,#255#249#221#196#255#246#217#188#255#244#233#223#255#247#242#236#255#251#247
+#243#255#245#239#233#255#194'~E'#251#255#255#255#0#255#255#255#0#198#137'L'
+#246#249#245#241#255#252#227#205#255#251#227#206#255#251#227#205#255#251#226
+#203#255#249#224#200#255#248#220#194#255#245#214#186#255#253#251#248#255#252
+#230#205#255#250#229#201#255#226#182#132#255#191'yB'#166#255#255#255#0#255
+#255#255#0#197#136'K'#234#250#246#242#252#250#224#199#255#251#225#201#255#251
+#226#201#255#251#224#200#255#249#223#197#255#248#219#193#255#244#214#184#255
+#255#251#248#255#246#216#180#255#225#176'}'#255#219#146'd'#246#180'k>'#7#255
+#255#255#0#255#255#255#0#196#133'I'#195#247#242#236#236#248#244#238#252#248
+#244#237#255#248#243#237#255#248#243#237#255#248#243#237#255#248#242#236#255
+#247#242#236#255#242#230#215#255#226#178'}'#255#219#148'e'#245#179'h;'#7#255
+#255#255#0#255#255#255#0#255#255#255#0#193'}D`'#200#139'M'#187#200#140'O'#238
+#200#140'O'#246#200#140'O'#247#200#140'O'#247#200#141'O'#247#201#140'O'#247
+#199#139'O'#247#197#137'K'#212#196'v;'#145#179'h<'#6#255#255#255#0#255#255
+#255#0#255#255#255#0#13'SubMenuImages'#7#17'Mufasa_Image_List'#7'OnClick'#7
+#16'ActionNewExecute'#0#0#9'TMenuItem'#15'MenuItemDivider'#7'Caption'#6#1'-'
+#0#0#9'TMenuItem'#12'MenuItemOpen'#6'Action'#7#16'ActionOpenScript'#11'Bitma'
+'p.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','#134
+#9'TSplitter'#9'Splitter1'#4'Left'#3#145#0#6'Height'#3'('#1#3'Top'#2#0#5'Wid'
+'th'#2#5#11'OnCanResize'#7#18'Splitter1CanResize'#7'Visible'#8#0#0#244#18'TF'
+'unctionListFrame'#15'frmFunctionList'#6'Height'#3'('#1#5'Width'#3#145#0#12
+'ClientHeight'#3'('#1#11'ClientWidth'#3#145#0#8'TabOrder'#2#3#7'Visible'#8#0
+#241#9'TTreeView'#12'FunctionList'#6'Height'#3#19#1#5'Width'#3#145#0#8'OnCha'
+'nge'#7#18'FunctionListChange'#6'OnExit'#7#16'FunctionListExit'#0#0#241#5'TE'
+'dit'#14'editSearchList'#3'Top'#3#19#1#5'Width'#3#145#0#6'OnExit'#7#18'editS'
+'earchListExit'#10'OnKeyPress'#7#22'editSearchListKeyPress'#0#0#0#0#9'TMainM'
+'enu'#9'MainMenu1'#4'left'#3#16#2#0#9'TMenuItem'#8'MenuFile'#7'Caption'#6#5
+'&File'#13'SubMenuImages'#7#17'Mufasa_Image_List'#0#9'TMenuItem'#11'MenuItem'
+'New'#6'Action'#7#15'ActionNewScript'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'B'
+'M6'#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#187'j4k'#186'e0'#188#187
+'f1'#237#186'f0'#247#186'f0'#247#186'f0'#247#186'e0'#247#186'e/'#247#185'e.'
+#247#185'e.'#247#185'd.'#247#185'd.'#239#183'b,'#189#183'b.c'#255#255#255#0
+#255#255#255#0#188'i3'#222#248#241#234#242#247#236#223#253#246#235#222#255
+#246#234#222#255#246#234#220#255#246#234#220#255#250#243#235#255#250#243#235
+#255#250#242#234#255#252#247#243#255#252#248#244#253#254#254#253#240#183'`*'
+#213#255#255#255#0#255#255#255#0#191'q8'#245#245#235#223#254#253#191'h'#255
+#252#189'g'#255#251#190'e'#255#252#190'd'#255#252#190'd'#255#252#189'b'#255
+#251#189'c'#255#251#188'a'#255#252#190'`'#255#252#188'b'#255#253#251#248#253
+#185'd-'#243#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#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#197#128'B'
+#247#248#241#232#255#254#229#213#255#253#229#211#255#253#229#211#255#252#229
+#211#255#252#229#211#255#252#228#209#255#252#226#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#197#130'E'#247#248#242#235#255#254#231#214#255#253#231#214#255#253
+#231#214#255#253#231#214#255#253#230#213#255#253#229#211#255#252#228#209#255
+#252#226#205#255#251#225#203#255#251#225#201#255#251#247#242#255#197'|?'#247
+#255#255#255#0#255#255#255#0#198#132'G'#247#249#243#236#255#254#232#214#255
+#254#232#215#255#253#231#214#255#253#231#214#255#253#231#213#255#253#229#211
+#255#251#228#208#255#251#227#204#255#250#223#199#255#250#223#198#255#250#242
+#234#255#198#128'B'#247#255#255#255#0#255#255#255#0#198#136'I'#247#249#244
+#237#255#254#232#216#255#254#232#216#255#254#232#215#255#254#231#214#255#253
+#229#211#255#252#228#209#255#251#225#204#255#250#224#199#255#249#221#195#255
+#248#220#194#255#250#244#237#255#198#130'E'#247#255#255#255#0#255#255#255#0
+#198#136'J'#247#249#244#239#255#254#231#215#255#253#231#214#255#253#231#213
+#255#253#230#212#255#252#230#210#255#251#225#204#255#250#223#199#255#248#220
+#194#255#246#218#189#255#246#216#187#255#250#244#239#255#198#131'F'#247#255
+#255#255#0#255#255#255#0#198#137'K'#247#249#244#240#255#252#230#211#255#252
+#230#212#255#253#231#211#255#252#228#209#255#251#227#205#255#250#224#200#255
+#248#220#194#255#245#214#187#255#243#212#181#255#241#210#179#255#248#244#240
,#255#196#130'F'#247#255#255#255#0#255#255#255#0#198#137'K'#247#249#245#241
+#255#252#227#207#255#251#228#208#255#252#228#207#255#252#227#205#255#250#225
+#202#255#249#221#196#255#246#217#188#255#244#233#223#255#247#242#236#255#251
+#247#243#255#245#239#233#255#194'~E'#251#255#255#255#0#255#255#255#0#198#137
+'L'#246#249#245#241#255#252#227#205#255#251#227#206#255#251#227#205#255#251
+#226#203#255#249#224#200#255#248#220#194#255#245#214#186#255#253#251#248#255
+#252#230#205#255#250#229#201#255#226#182#132#255#191'yB'#166#255#255#255#0
+#255#255#255#0#197#136'K'#234#250#246#242#252#250#224#199#255#251#225#201#255
+#251#226#201#255#251#224#200#255#249#223#197#255#248#219#193#255#244#214#184
+#255#255#251#248#255#246#216#180#255#225#176'}'#255#219#146'd'#246#180'k>'#7
+#255#255#255#0#255#255#255#0#196#133'I'#195#247#242#236#236#248#244#238#252
+#248#244#237#255#248#243#237#255#248#243#237#255#248#243#237#255#248#242#236
+#255#247#242#236#255#242#230#215#255#226#178'}'#255#219#148'e'#245#179'h;'#7
+#255#255#255#0#255#255#255#0#255#255#255#0#193'}D`'#200#139'M'#187#200#140'O'
+#238#200#140'O'#246#200#140'O'#247#200#140'O'#247#200#141'O'#247#201#140'O'
+#247#199#139'O'#247#197#137'K'#212#196'v;'#145#179'h<'#6#255#255#255#0#255
+#255#255#0#255#255#255#0#13'SubMenuImages'#7#17'Mufasa_Image_List'#7'OnClick'
+#7#16'ActionNewExecute'#0#0#9'TMenuItem'#15'MenuItemDivider'#7'Caption'#6#1
+'-'#0#0#9'TMenuItem'#12'MenuItemOpen'#6'Action'#7#16'ActionOpenScript'#11'Bi'
+'tmap.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','#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,9 +257,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#255#255#0#255#255#255#0#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#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#228#187#147#255#254#245#237#255#252
,#255#255#0#255#255#255#0#255#255#255#0#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#255#255#255#0#255#255#255#0#255
+#250#226#196#255#236#193#147#255#195'}H'#147#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#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#255#255#255#0#255#255
@ -319,9 +321,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#255#187'm:'#255#187'k8'#239#187'p>'#203#182'i5T'#255#255#255#0#7'OnClick'#7
+#17'ActionSaveExecute'#0#0#9'TMenuItem'#14'MenuItemSaveAs'#6'Action'#7#18'Ac'
+'tionSaveScriptAs'#7'Caption'#6#10'Save as...'#7'OnClick'#7#19'ActionSaveAsE'
+'xecute'#0#0#9'TMenuItem'#15'MenuItemSaveAll'#6'Action'#7#13'ActionSaveAll'#7
,'xecute'#0#0#9'TMenuItem'#15'MenuItemSaveAll'#6'Action'#7#13'ActionSaveAll'#7
+'Enabled'#8#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#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#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
@ -383,9 +385,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#209#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#14'b'#4#207#14
+'~'#2#231#14'~'#2#231'='#226','#255#14'~'#2#231#14'~'#2#231#11'_'#2#176''''''
+'''{'#235#235#235#255#231#231#231#255#231#231#231#255#231#231#231#255#231#231
,'''{'#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';'#165'/'#255'R'#231
,'A'#255'R'#231'A'#255'R'#231'A'#255'R'#231'A'#255'R'#231'A'#255#18#137#5#229
+'A'#255'R'#231'A'#255'R'#231'A'#255'R'#231'A'#255'R'#231'A'#255#18#137#5#229
+'222v'#234#234#234#255#226#226#226#255#226#226#226#255#226#226#226#255#226
+#226#226#255#226#226#226#255#226#226#226#255#226#226#226#255'f'#185'['#255'<'
+#171'-'#255'<'#171'-'#255'f'#235'U'#255'<'#171'-'#255'>'#173'/'#255#28'z'#17
@ -447,9 +449,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#255#239#239#239#255#239#239#239#255#239#239#239#255#239#239#239#255#239#239
+#239#255#239#239#239#255#239#239#239#255#239#239#239#255#239#239#239#255#239
+#239#239#255#239#239#239#255#243#243#243#255'DDDnIIIl'#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#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#255#247#247#247#255'IIIlMMMj'#250#250#250
+#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#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
@ -511,9 +513,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#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'TTTgUUU'#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#255#157
,#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'fTTT'#0'RRR'#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
+#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'
+'[TTT'#0'TTT'#0'TTT'#0'UUU"UUUYUUUfUUUfUUUfUUUfUUUfUUUfUUUfUUUfUUUfUUUYUUU"'
+#10'ImageIndex'#2#20#7'OnClick'#7#22'MenuItemCloseTabsClick'#0#0#9'TMenuItem'
@ -575,9 +577,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#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#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
@ -639,9 +641,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#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
,#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
+#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
@ -703,9 +705,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#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'#12'MenuItemCopy'#6'Action'#7#10'Actio'
,#16'ActionCutExecute'#0#0#9'TMenuItem'#12'MenuItemCopy'#6'Action'#7#10'Actio'
+'nCopy'#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#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
@ -767,9 +769,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#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
,#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
+'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
@ -831,9 +833,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#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
,#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
+#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
@ -895,9 +897,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#255#246#232#255#255#250#242#255#241#232#219#255#147#146#145#255#140#140#140
+'p'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#140#140#140'0'#140#140#140#255#183#183
+#183#255#255#254#253#255#255#254#252#255#255#253#249#255#255#253#249#255#255
+#254#252#255#248#242#232#255#162#159#156#255#140#140#140#223#140#140#140#16#0
,#254#252#255#248#242#232#255#162#159#156#255#140#140#140#223#140#140#140#16#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#140#140#140'`'#140#140#140#255#154#154
,#154#255#212#211#210#255#226#225#223#255#226#224#220#255#205#201#195#255#147
+#154#255#212#211#210#255#226#225#223#255#226#224#220#255#205#201#195#255#147
+#147#146#255#140#140#140#239#140#140#140'0'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#140#140#140'0'#140#140#140#175#140#140#140#255#140#140
+#140#255#140#140#140#255#140#140#140#239#140#140#140#159#140#140#140#16#0#0#0
@ -959,9 +961,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#0#0#0#0#0#0#0#164'e4'#0#164'e4'#0#164'e4'#0#164'e4'#255#216#169#129#255#230
+#204#181#255#164'e4'#255#164'e4'#0#164'e4'#0#164'e4'#255#216#169#129#255#230
+#204#181#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#215#167#127#255#230#204#181#255#164'e4'#255#164'e4'#0#164'e4'
,#0#164'e4'#255#215#167#127#255#230#204#181#255#164'e4'#255#164'e4'#0#164'e4'
+#0#164'e4'#255#215#167#127#255#230#204#181#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#215#169#129#255#230#205#182
+#0#0#0#164'e4'#0#164'e4'#0#164'e4'#0#164'e4'#255#215#169#129#255#230#205#182
+#255#164'e4'#255#164'e4'#0#164'e4'#0#164'e4'#255#215#169#129#255#230#205#182
+#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'e'
+'4'#255#216#171#132#255#230#206#183#255#164'e4'#255#164'e4'#0#164'e4'#0#164
@ -1023,9 +1025,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#255#135#149#246#255'}'#141#247#255'r'#132#248#255'h|'#248#255'99'#134#230
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'EP'#191#230#199#202
+#241#255#191#197#243#255#183#190#243#255#174#183#244#255#166#175#244#255#155
+#167#245#255#146#159#246#255#135#150#246#255'|'#141#247#255'r'#132#247#255'9'
,#167#245#255#146#159#246#255#135#150#246#255'|'#141#247#255'r'#132#247#255'9'
+'9'#134#230#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'EP'#191
,#230#204#208#241#255#198#203#241#255#191#197#242#255#183#191#243#255#175#183
+#230#204#208#241#255#198#203#241#255#191#197#242#255#183#191#243#255#175#183
+#244#255#166#175#245#255#155#168#245#255#145#159#246#255#135#150#246#255'}'
+#141#247#255'99'#134#230#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'EP'#191#230#209#212#241#255#204#208#242#255#198#203#242#255#191#197
@ -1087,9 +1089,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+'BB'#0#0#0#0#0#0#0#0#0#225#238#225#255#197#220#197#255#219#233#219#255#244
+#249#244#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#174#213#176#255#214#248#225#255#207#250#221
+#255#181#248#204#255'x'#216#145#255'@'#139'@'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0
,#255#181#248#204#255'x'#216#145#255'@'#139'@'#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#202#225#202#255
,#197#247#213#255#156#244#185#255'}'#228#159#255#10'Y'#12#255#0#0#0#191#0#0#0
+#197#247#213#255#156#244#185#255'}'#228#159#255#10'Y'#12#255#0#0#0#191#0#0#0
+#0#195#196#237#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
+#149#196#149#255#187#243#206#255#157#240#186#255'k'#212#142#255'N'#154'h'#255
+#10'D'#10#255#0#0#0#191#0#0#0#0#221#221#246#255'RW'#199#255#0#0#0#0#0#0#0#0#0
@ -1151,9 +1153,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#239#234#255#153#204#185#255'Y'#172#141#255#161#208#191#255#216#235#228#255
+'Y'#172#141#255'n'#183#156#255#237#246#243#255'X'#170#139#255'/}]'#231#255
+#255#255#0')vW'#171'H'#152'y'#255#189#221#209#255#168#211#194#255'O'#165#132
+#255'h'#178#149#255#216#235#228#255'S'#145'w'#255#209#232#223#255'f'#177#148
,#255'h'#178#149#255#216#235#228#255'S'#145'w'#255#209#232#223#255'f'#177#148
+#255'O'#165#132#255#174#214#199#255#183#218#204#255'F'#153'x'#255')vW'#180
,#255#255#255#0'#pQQ5'#129'c'#255'W'#168#135#255#237#246#243#255'l'#179#151
+#255#255#255#0'#pQQ5'#129'c'#255'W'#168#135#255#237#246#243#255'l'#179#151
+#255'E'#159'{'#255'E'#159'{'#255'(wX'#255'E'#159'{'#255'E'#159'{'#255's'#183
+#156#255#242#248#246#255']'#171#140#255'8'#132'e'#255'#pQW'#255#255#255#0#255
+#255#255#0#29'iL'#204'0'#135'd'#255'r'#182#154#255#243#249#247#255#163#207
@ -1215,9 +1217,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#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#0#0#0#0#0#0#0#0#0#0#0#0'!!!'#0'eee'#0#139#139#139#0'%'#2
+#176#0'%'#2#178#0'%'#2#179#0'&'#2#181'7&'#2#180'{%'#2#180'|%'#2#179'8%'#2#175
+#0'$'#2#172#0'#'#2#168#0#0#0#0#0#29#29#29#0'\\\'#0#128#128#128#0#134#134#134
,#0'$'#2#172#0'#'#2#168#0#0#0#0#0#29#29#29#0'\\\'#0#128#128#128#0#134#134#134
+#0#139#139#139#0'%'#2#176#0'%'#2#178#0'%'#2#179'8%'#2#179'|'#201#184#253#255
,#202#185#254#255'%'#2#177'~%'#2#175'9$'#2#172#0'#'#2#168#0'RRR'#0'sss'#0'yyy'
+#202#185#254#255'%'#2#177'~%'#2#175'9$'#2#172#0'#'#2#168#0'RRR'#0'sss'#0'yyy'
+#0#128#128#128#0#134#134#134#0#139#139#139#0'%'#2#176#0'%'#2#178'9%'#2#177'~'
+#198#181#252#255#182#165#236#255#184#167#236#255#202#185#254#255'$'#2#173#129
+'$'#2#172';#'#2#168#0'lll'#0'sss'#0'yyy'#0#128#128#128#0#134#134#134#0#139
@ -1279,9 +1281,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#171#132#255#230#206#183#255#164'e4'#255#164'e4'#0#164'e4'#0#164'e4'#255#216
+#171#132#255#230#206#183#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#215#169#129#255#230#205#182#255#164'e4'#255
+#164'e4'#0#164'e4'#0#164'e4'#255#215#169#129#255#230#205#182#255#164'e4'#255
,#164'e4'#0#164'e4'#0#164'e4'#255#215#169#129#255#230#205#182#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#215#167
,#127#255#230#204#181#255#164'e4'#255#164'e4'#0#164'e4'#0#164'e4'#255#215#167
+#127#255#230#204#181#255#164'e4'#255#164'e4'#0#164'e4'#0#164'e4'#255#215#167
+#127#255#230#204#181#255#164'e4'#255#0#0#0#0#0#0#0#0#0#0#0#0#164'e4'#0#164'e'
+'4'#0#164'e4'#0#164'e4'#255#216#169#129#255#230#204#181#255#164'e4'#255#164
+'e4'#0#164'e4'#0#164'e4'#255#216#169#129#255#230#204#181#255#164'e4'#255#0#0
@ -1343,9 +1345,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'EP'#191#230#204#208
+#241#255#198#203#241#255#191#197#242#255#183#191#243#255#175#183#244#255#166
+#175#245#255#155#168#245#255#145#159#246#255#135#150#246#255'}'#141#247#255
+'99'#134#230#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'EP'#191
,'99'#134#230#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'EP'#191
+#230#199#202#241#255#191#197#243#255#183#190#243#255#174#183#244#255#166#175
,#244#255#155#167#245#255#146#159#246#255#135#150#246#255'|'#141#247#255'r'
+#244#255#155#167#245#255#146#159#246#255#135#150#246#255'|'#141#247#255'r'
+#132#247#255'99'#134#230#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'EP'#191#230#191#197#242#255#183#190#243#255#175#183#244#255#165#175
+#244#255#156#167#245#255#146#159#246#255#135#149#246#255'}'#141#247#255'r'
@ -1407,9 +1409,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#129#255#2#24'v'#255#0#23'z'#255#0#9'X'#255#0#0#0#0#0#0#0#0#0#0#0#0#15','#136
+#137#1''''#153#255#1'$'#145#255#0'#'#146#255#0'$'#145#255#0#23'x'#255#2#19'o'
+#255#2#26'|'#255#1#27'~'#255#1#25'{'#255#1#19'r'#255#1#20'r'#255#1#6'O'#255#0
+#0#0#0#0#0#0#0#0#0#0#0#25'*u*'#2'#'#139#255#2'"'#139#255#0'#'#143#255#1#28
,#0#0#0#0#0#0#0#0#0#0#0#25'*u*'#2'#'#139#255#2'"'#139#255#0'#'#143#255#1#28
+#129#255#2#23'w'#255#1#28#127#255#0#27'~'#255#0#24'z'#255#1#17'l'#255#1#14'i'
,#255#0#11'a'#255#0#5'A'#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
+#255#0#11'a'#255#0#5'A'#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#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#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#193'}D`'
@ -1471,9 +1473,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#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#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#228#187#147#255#254
+#245#237#255#252#222#197#255#251#224#199#255#249#220#194#255#245#211#180#255
,#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#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#228
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#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#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
@ -1535,9 +1537,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#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'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'
,#134#160#255'i'#135#159#255'Jh'#129#255'jjj'#138'hhh'#138'eee'#138'bbbc 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
+#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'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
@ -1599,9 +1601,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#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#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
,#0#0#0#0#0#0#0#0#0#0#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#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
+#0#0#0#0#0#0#0#0#0#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#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
@ -1663,9 +1665,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+'d'#255#200#140'd'#255#200#140'd'#255#218#156't'#255#225#186#159#255#179'f4'
+#255#187'j6'#255#242#216#197#255#227#164'{'#255#227#163'z'#255#227#164'z'#255
+#226#164'{'#255#226#163'{'#255#225#163'{'#255#225#162'y'#255#223#160'w'#255
+#222#159'v'#255#221#158't'#255#219#156'r'#255#220#157't'#255#221#181#154#255
,#222#159'v'#255#221#158't'#255#219#156'r'#255#220#157't'#255#221#181#154#255
+#177'e4'#255#187'j6'#255#242#213#194#255#227#163'z'#255#227#163'z'#255#226
,#163'{'#255#226#163'{'#255#226#164'{'#255#225#162'y'#255#224#161'x'#255#222
+#163'{'#255#226#163'{'#255#226#164'{'#255#225#162'y'#255#224#161'x'#255#222
+#160'w'#255#222#158'u'#255#220#157't'#255#218#155's'#255#217#155's'#255#218
+#176#149#255#175'd3'#255#187'j6'#255#240#210#190#255#226#163'z'#255#226#163
+'z'#255#225#163'z'#255#226#163'{'#255#225#163'{'#255#224#161'x'#255#222#159
@ -1727,9 +1729,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#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';'#165'/'#255'R'#231'A'#255'R'
+#231'A'#255'R'#231'A'#255'R'#231'A'#255'R'#231'A'#255#18#137#5#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
,'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#14'b'#4#207#14'~'#2#231#14'~'#2#231'='#226','
,#255#14'~'#2#231#14'~'#2#231#11'_'#2#176#0#0#0#9#0#0#0#22#0#0#0#26#0#0#0#26#0
+#255#14'~'#2#231#14'~'#2#231#11'_'#2#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#11#128#0#209'+'
+#223#26#255#11#128#0#209#0#0#0#22#0#0#0#9#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#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'9'#0#0#6'm'#0#153#5'i'#0#204#6
@ -1791,9 +1793,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+'('#174#255#255#28#170#255#255#19#166#255#255#12#164#255#255#0#159#255#255#0
+#0#0'_'#0#149#239#255#0'}'#200#255#0#0#0'#'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#255#255#255#0#255#255#255#0#0#0#0#11#0#0#0'#'#0#0#0'/'#0#0#0'/'#0#0#0'/'#0#0
+#0'#'#0#0#0#23#0#0#0'G'#0'c'#158#255#0#0#0'G'#0#0#0#11#0#0#0#0#0#0#0#0#0#0#0
,#0'#'#0#0#0#23#0#0#0'G'#0'c'#158#255#0#0#0'G'#0#0#0#11#0#0#0#0#0#0#0#0#0#0#0
+#0#255#255#255#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'\'#148#255#0'En'#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'\'#148#255#0'En'#255#0#0#0'#'#0#0#0#0#0#0#0#0#0#0#0#0
+#255#255#255#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#11#0#0#0'G'#0'_'#152#255#0#0#0'/'#0#0#0#0#0#0#0#0#0#0#0#0#255
+#255#255#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
@ -1855,9 +1857,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#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#162#0#0#0#165#0#0#0#168#0#0#0#169#26#0#0#170'l'#0#0#170#166#0
+#0#170#196#0#0#170#196#0#0#170#166#0#0#170'l'#0#0#169#26#0#0#168#0#0#0#165#0
,#0#170#196#0#0#170#196#0#0#170#166#0#0#170'l'#0#0#169#26#0#0#168#0#0#0#165#0
+#0#0#162#0#255#255#255#0#255#255#255#0#0#0#162#0#0#0#165#0#0#0#168'M'#9#9#174
,#191'77'#208#227'\\'#234#245'jj'#243#253'ii'#242#253'[['#233#245'66'#207#227
+#191'77'#208#227'\\'#234#245'jj'#243#253'ii'#242#253'[['#233#245'66'#207#227
+#9#9#174#191#0#0#168'M'#0#0#165#0#0#0#162#0#255#255#255#0#255#255#255#0#0#0
+#162#0#0#0#165'M'#16#16#177#205'[['#232#246'__'#231#255'[['#227#255'[['#227
+#255'[['#227#255'[['#227#255'__'#231#255'XX'#228#246#15#15#176#205#0#0#165'M'
@ -1919,9 +1921,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#251#251#251#255#251#251#251#255#251#251#251#255#251#251#251#255#251#251#251
+#255#251#251#251#255#252#252#252#255#168#168#168#255#228#228#228#255#235#235
+#235#255'666tKKKk'#248#248#248#255#246#246#246#255#246#246#246#255#246#246
+#246#255#246#246#246#255#246#246#246#255#246#246#246#255#246#246#246#255#246
,#246#255#246#246#246#255#246#246#246#255#246#246#246#255#246#246#246#255#246
+#246#246#255#246#246#246#255#248#248#248#255#166#166#166#255#232#232#232#255
,#236#236#236#255'---xEEEn'#244#244#244#255#240#240#240#255#240#240#240#255
+#236#236#236#255'---xEEEn'#244#244#244#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#240#240#240
+#255#240#240#240#255#240#240#240#255#244#244#244#255'111'#184#20#20#20#131#20
+#20#20#131#17#17#17'e===q'#239#239#239#255#234#234#234#255#234#234#234#255
@ -1983,9 +1985,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#135#238#199#255#162#244#215#255#162#246#215#255#140#238#199#255#224#255#255
+#255#221#162#133#255#171'j>'#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#186'h3'#197#195#132'X'#255#211#139
+'h'#255#225#143'p'#255#220#141'l'#255#218#139'm'#255#215#138'n'#255#205#139
,'h'#255#225#143'p'#255#220#141'l'#255#218#139'm'#255#215#138'n'#255#205#139
+'l'#255#171'mD'#255#166'_.'#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#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#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'
@ -2047,9 +2049,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#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#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
,'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#255#255#255#0#0#0#153'x'#0#0#153#255
+#0#0#149'F'#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#255#255#255#0#255#255#255#0#0#0#159'x'#0#0#159#255#0#0#159#255#0#0
@ -2111,9 +2113,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+']'#255'ccY'#255#195#195#185#255#195#195#185#255#199#199#190#255#131#131'}'
+#255'22('#255'22('#255#141#141#134#255#141#141#134#255'22('#255'22('#255#131
+#131'}'#255#199#199#190#255#195#195#185#255#195#195#185#255'gg]'#255'ddZ'#255
+#191#191#181#255#192#192#182#255#192#192#182#255#199#199#191#255#141#141#134
,#191#191#181#255#192#192#182#255#192#192#182#255#199#199#191#255#141#141#134
+#255#150#150#144#255#197#197#188#255#197#197#188#255#150#150#144#255#141#141
,#134#255#199#199#191#255#192#192#182#255#192#192#182#255#191#191#181#255'gg]'
+#134#255#199#199#191#255#192#192#182#255#192#192#182#255#191#191#181#255'gg]'
+#255'ii_'#255#176#176#166#255#186#186#176#255#188#188#178#255#188#188#178#255
+#196#196#187#255#194#194#185#255#188#188#178#255#188#188#178#255#194#194#185
+#255#196#196#187#255#188#188#178#255#188#188#178#255#186#186#176#255#176#176
@ -2175,9 +2177,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#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#29'c'#155#22#25'`'#152'9'#20']'#149'b'
+#16'Z'#146#136#13'X'#144#164#19'\'#146#252#12'W'#143#237#0#0#0#0#0#0#0#0#140
+#140#140'0'#140#140#140#175#140#140#140#255#140#140#140#255#140#140#140#255
,#140#140'0'#140#140#140#175#140#140#140#255#140#140#140#255#140#140#140#255
+#140#140#140#239#140#140#140#159#140#140#140#16#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
,#0#0#0#0#0#0#0#0#0#0#0#0#0#140#140#140'`'#140#140#140#255#154#154#154#255#212
+#0#0#0#0#0#0#0#0#0#0#0#0#0#140#140#140'`'#140#140#140#255#154#154#154#255#212
+#211#210#255#226#225#223#255#226#224#220#255#205#201#195#255#147#147#146#255
+#140#140#140#239#140#140#140'0'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#140
+#140#140'0'#140#140#140#255#183#183#183#255#255#254#253#255#255#254#252#255
@ -2239,9 +2241,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#21'c'#255#10#22'f'#255#9#20'b'#255#9#20'd'#255#9#23's'#255#7#23's'#255#7#23
+'r'#255#7#23'r'#255#9#23'r'#255#9#22'r'#255#11#22'b'#255#12#17'G'#255#12#16
+'G'#255#11#17'F'#255#10#16'E'#255#10#15'F'#255#12#15'D'#255#12#16'E'#255#0#0
+#0#0#0#0#0#0#131#137#134#0#30'2i'#130#8#28's'#255#8#26'w'#255#8#26'y'#255#7
,#0#0#0#0#0#0#131#137#134#0#30'2i'#130#8#28's'#255#8#26'w'#255#8#26'y'#255#7
+#24'x'#255#8#24'v'#255#7#28'v'#255#24'{'#224#255#26'~'#228#255#24#127#231#255
,#24'}'#232#255#24'~'#233#255#24'}'#233#255#23'}'#232#255#25'}'#232#255#24'~'
+#24'}'#232#255#24'~'#233#255#24'}'#233#255#23'}'#232#255#25'}'#232#255#24'~'
+#232#255#21#127#232#255#21'a'#196#255#8#22'd'#255#11#21'c'#255#10#21'e'#255#9
+#22'd'#255#10#20'b'#255#8#21'f'#255#7#23'r'#255#7#24't'#255#7#23'v'#255#8#23
+'r'#255#7#22'r'#255#8#23'q'#255#11#18'N'#255#12#17'G'#255#12#16'F'#255#11#16
@ -2303,9 +2305,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#18'P'#255#11'Z'#199#255#10'_'#209#255#8'j'#226#255#8'j'#227#255#9'j'#230#255
+#10'm'#234#255#12'q'#241#255#12't'#249#255#12'n'#232#255#28'~'#239#255#28#128
+#239#255#26'|'#233#255#23'i'#209#255#22'k'#212#255#8'['#202#255#8']'#206#255
+#7'\'#206#255#6'`'#213#255#7'a'#218#255#6'a'#219#255#6'f'#220#255#15'D'#167
,#7'\'#206#255#6'`'#213#255#7'a'#218#255#6'a'#219#255#6'f'#220#255#15'D'#167
+#255#10#23'd'#255#10#16'H'#255#7#20'l'#255#7#23'{'#255#7#22'z'#255#8#22'|'
,#255#12#21'b'#255#12#17'L'#254#11#16'M'#255#16#15'F'#211':.C'#17'q'#161#195
+#255#12#21'b'#255#12#17'L'#254#11#16'M'#255#16#15'F'#211':.C'#17'q'#161#195
+#15'P'#135#177'('#153#148'~'#1#18'9'#132'9'#7#28'y'#248#11#27'`'#255#9#24'W'
+#255#8'Z'#200#255#7']'#204#255#7'd'#214#255#7'd'#213#255#6'd'#215#255#6'e'
+#219#255#7'h'#221#255#7'i'#230#255#7'd'#217#255#26'|'#231#255#27#128#236#255
@ -2367,9 +2369,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+'('#24')'#0#0#0#0#0#0#0#0#0#0#0#0#0#148#173#153#0#0#0#0#0'?Bef'#10#29'n'#253
+#8#24#127#254#8#25#132#255#7#24#132#255#7#24#129#255#7#25'|'#255#8#20'j'#255
+#6#24'}'#255#7#24#128#255#9#23'i'#255#11'!k'#255#9'T'#191#255#6'm'#236#255#6
+'l'#233#255#6'l'#238#255#14'l'#230#255#17'='#144#255#8#21'h'#255#7#24#128#255
,'l'#233#255#6'l'#238#255#14'l'#230#255#17'='#144#255#8#21'h'#255#7#24#128#255
+#7#24#131#255#7#24#129#255#8#23#127#255#8#23'~'#255#6#28#129#255#8'U'#201#255
,#12'2'#137#255#11#18'S'#255#10#17'P'#254#10#17'Q'#255#11#17'O'#251#24#20'=Q'
+#12'2'#137#255#11#18'S'#255#10#17'P'#254#10#17'Q'#255#11#17'O'#251#24#20'=Q'
+#0#0#0#0'"'#20'/'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'F@G/'#27
+'(a'#238#7#24's'#255#7#24'x'#255#7#24'{'#254#8#25'~'#255#9#24'd'#255#7#19'i'
+#255#7#25'}'#255#6#25#127#255#9#26'y'#255#10#18'N'#255#10#16'G'#255#12'''o'
@ -2431,9 +2433,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#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#255#255#255#0
+#255#255#255#0#29'c'#155#22#25'`'#152'9'#20']'#149'b'#16'Z'#146#136#13'X'#144
+#164#19'\'#146#252#12'W'#143#237#153#153#153#255'qqq'#255'TTT'#255'QQQ'#255
,#164#19'\'#146#252#12'W'#143#237#153#153#153#255'qqq'#255'TTT'#255'QQQ'#255
+'OOO'#255'LLL'#255'JJJ'#255'GGG'#255'EEE'#255'%g'#157#255'2t'#168#255'=|'#175
,#255'G'#132#181#255'N'#138#186#255'>~'#173#255#12'W'#143#234#255#255#255#0
+#255'G'#132#181#255'N'#138#186#255'>~'#173#255#12'W'#143#234#255#255#255#0
+#255#255#255#0'XXX'#255#162#162#162#255#162#162#162#255#163#163#163#255#164
+#164#164#255#164#164#164#255#165#165#165#255'/o'#165#255'x'#171#210#255'x'
+#171#211#255's'#167#209#255'i'#160#205#255'@'#127#174#255#15'Y'#145#234#255
@ -2495,9 +2497,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#226#226#255#226#226#226#255'f'#185'['#255'<'#171'-'#255'<'#171'-'#255'f'#235
+'U'#255'<'#171'-'#255'>'#173'/'#255#28'z'#17#200'888s'#237#237#237#255#230
+#230#230#255#230#230#230#255#230#230#230#255#230#230#230#255#230#230#230#255
+#230#230#230#255#230#230#230#255#230#230#230#255#230#230#230#255'>'#177'.'
,#230#230#230#255#230#230#230#255#230#230#230#255#230#230#230#255'>'#177'.'
+#255'u'#238'd'#255'>'#177'.'#255#237#237#237#255'888s>>>q'#240#240#240#255
,#235#235#235#255#235#235#235#255#235#235#235#255#235#235#235#255#235#235#235
+#235#235#235#255#235#235#235#255#235#235#235#255#235#235#235#255#235#235#235
+#255#235#235#235#255#235#235#235#255#235#235#235#255#235#235#235#255'k'#196
+'_'#255'@'#182'/'#255'k'#196'_'#255#240#240#240#255'>>>qDDDn'#243#243#243#255
+#239#239#239#255#239#239#239#255#239#239#239#255#239#239#239#255#239#239#239
@ -2559,9 +2561,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#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#255#252#252
+#252#255#252#252#252#255#252#252#252#255#252#252#252#255#252#252#252#255#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'QQQhUUUg'#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#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'UUUgPPPi'#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
@ -2623,9 +2625,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+':'#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
,'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
+#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
@ -2687,9 +2689,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#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'
,#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
+#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
@ -2751,9 +2753,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#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'
,#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' '
+#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
@ -2815,9 +2817,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#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
,#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
+#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'
@ -2879,9 +2881,9 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#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
,#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
+#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

@ -211,6 +211,10 @@ type
procedure ActionUndoExecute(Sender: TObject);
procedure CheckBoxMatchCaseClick(Sender: TObject);
procedure CloseFindPanel;
procedure editSearchListExit(Sender: TObject);
procedure editSearchListKeyPress(Sender: TObject; var Key: char);
procedure FunctionListChange(Sender: TObject; Node: TTreeNode);
procedure FunctionListExit(Sender: TObject);
procedure MenuItemColourHistoryClick(Sender: TObject);
procedure dlgReplaceFind(Sender: TObject);
procedure dlgReplaceReplace(Sender: TObject);
@ -276,6 +280,7 @@ type
OCR_Fonts: TMOCR;
Picker: TMColorPicker;
Selector: TMWindowSelector;
procedure FunctionListShown( ShowIt : boolean);
property ScriptState : TScriptState read GetScriptState write SetScriptState;
procedure SafeCallThread;
function OpenScript : boolean;
@ -297,6 +302,7 @@ type
end;
procedure formWriteln( S : String);
function GetMethodName( Decl : string; PlusNextChar : boolean) : string;
const
// Rip Mufasa -> Simba ftw
@ -319,6 +325,7 @@ uses
debugimage,
bitmaps,
colourhistory,
simpleanalyzer,
math;
//{$ifdef mswindows}
@ -805,9 +812,16 @@ end;
procedure TForm1.ActionFindstartExecute(Sender: TObject);
begin
SearchPanel.Visible:= true;
if LabeledEditSearch.CanFocus then
LabeledEditSearch.SetFocus;
if frmFunctionList.Focused or frmFunctionList.FunctionList.Focused or frmFunctionList.editSearchList.Focused then
begin
if frmFunctionList.editSearchList.CanFocus then
frmFunctionList.editSearchList.SetFocus;
end else
begin
SearchPanel.Visible:= true;
if LabeledEditSearch.CanFocus then
LabeledEditSearch.SetFocus;
end;
end;
procedure TForm1.ActionClearDebugExecute(Sender: TObject);
@ -943,6 +957,60 @@ begin
CurrScript.SynEdit.SetFocus;
end;
procedure TForm1.editSearchListExit(Sender: TObject);
begin
frmFunctionList.editSearchList.Color := clWhite;
if frmFunctionList.InCodeCompletion then
begin;
frmFunctionList.InCodeCompletion:= false;
CurrScript.SynEdit.SelectedColor.Style:= [];
CurrScript.SynEdit.SelectedColor.Foreground:= clHighlightText;
CurrScript.SynEdit.SelectedColor.Background:= clHighlight;
end;
end;
procedure TForm1.editSearchListKeyPress(Sender: TObject; var Key: char);
var
linetext : string;
begin
if key = #13 then//enter
begin;
key := #0;
frmFunctionList.Find(True);
end;
if key = #32 then//space lets do this!
begin;
key := #0;
linetext := CurrScript.SynEdit.Lines[frmFunctionList.CompletionCaret.y - 1];
frmFunctionList.editSearchList.OnExit(sender);
while (frmFunctionList.CompletionCaret.x <= length(linetext)) and (linetext[frmFunctionList.CompletionCaret.x] in ['a'..'z','A'..'Z','0'..'9','_']) do
inc(frmFunctionList.CompletionCaret.x);
CurrScript.SynEdit.LogicalCaretXY:= frmFunctionList.CompletionCaret;
CurrScript.SynEdit.SetFocus;
end;
if key = #27 then//esc
begin
key := #0;
CurrScript.SynEdit.Lines[frmFunctionList.CompletionCaret.y - 1] := frmFunctionList.CompletionStart;
frmFunctionList.editSearchList.OnExit(sender);
CurrScript.SynEdit.LogicalCaretXY:= point(frmFunctionList.CompletionCaret.x,frmFunctionList.CompletionCaret.y);
CurrScript.SynEdit.SelEnd:= CurrScript.SynEdit.SelStart;
CurrScript.SynEdit.SetFocus;
end;
end;
procedure TForm1.FunctionListChange(Sender: TObject; Node: TTreeNode);
begin
if Node.Level > 0 then
StatusBar.Panels[2].Text := PChar(Node.Data);
end;
procedure TForm1.FunctionListExit(Sender: TObject);
begin
StatusBar.Panels[2].Text:= '';
end;
procedure TForm1.MenuItemColourHistoryClick(Sender: TObject);
begin
MenuItemColourHistory.Checked := not ColourHistoryForm.Visible;
@ -1127,7 +1195,6 @@ begin
DebugImgForm.Hide;
end;
procedure TForm1.MenuitemFillFunctionListClick(Sender: TObject);
function GetMethodName( Decl : string; PlusNextChar : boolean) : string;
var
I : integer;
@ -1142,6 +1209,12 @@ begin;
result := result + decl[ii];
exit;
end;
if (Decl[ii] = ' ') or (Decl[ii] = ':') then
begin;
if PlusNextChar then
result := result + ' ';
exit;
end;
result := result + decl[ii];
end;
//We made it out of the loop.. This is a method without ';' we might wanne add that!
@ -1149,6 +1222,7 @@ begin;
result := result + ';';
end;
procedure TForm1.MenuitemFillFunctionListClick(Sender: TObject);
var
Methods : TExpMethodArr;
LastSection : string;
@ -1179,8 +1253,9 @@ begin
end;
end;
Temp2Node := Tree.Items.AddChild(Tempnode,GetMethodName(Methods[i].FuncDecl,false));
Temp2Node.Data:= strnew(PChar(GetMethodName(Methods[i].FuncDecl,true)));
Temp2Node.Data:= strnew(PChar(Methods[i].FuncDecl));
end;
frmFunctionList.ScriptNode := Tree.Items.Add(nil,'Script');
end;
procedure TForm1.MenuItemHideClick(Sender: TObject);
@ -1209,24 +1284,7 @@ end;
procedure TForm1.MenuItemFunctionListClick(Sender: TObject);
begin
with MenuItemFunctionList do
begin
Checked := not Checked;
if(Checked)then
begin
if(frmFunctionList.Parent is TPanel)then
begin
Splitter1.Show;
frmFunctionList.Show;
end else frmFunctionList.Parent.Show;
end else begin
if(frmFunctionList.Parent is TPanel)then
frmFunctionList.Hide
else
frmFunctionList.Parent.Hide;
Splitter1.Hide;
end;
end;
FunctionListShown(not MenuItemFunctionList.Checked);
end;
procedure TForm1.OnLinePSScript(Sender: TObject);
@ -1373,6 +1431,51 @@ begin
end;
end;
procedure TForm1.FunctionListShown(ShowIt: boolean);
var
Node : TTreeNode;
tmpNode : TTreeNode;
Tree : TTreeView;
Analyzer : TScriptAnalyzer;
I,ii : integer;
begin
with MenuItemFunctionList, frmFunctionList do
begin
Checked := ShowIt;
if(Checked)then
begin
if FunctionList.Items.Count = 0 then
MenuitemFillFunctionListClick(nil);
if(frmFunctionList.Parent is TPanel)then
begin
Splitter1.Show;
frmFunctionList.Show;
end else frmFunctionList.Parent.Show;
if editSearchList.CanFocus then
editSearchList.SetFocus;
//Lets load up this Script tree!
Tree := frmFunctionList.FunctionList;
Node := frmFunctionList.ScriptNode;
Node.DeleteChildren;
Analyzer := TScriptAnalyzer.create;
Analyzer.ScriptToAnalyze:= CurrScript.SynEdit.Lines.Text;
Analyzer.analyze;
for i := 0 to Analyzer.MethodLen - 1 do
begin
tmpNode := Tree.Items.AddChild(Node,Analyzer.Methods[i].Name);
tmpNode.Data:= PChar(Analyzer.Methods[i].CreateMethodStr);
end;
end else begin
if(frmFunctionList.Parent is TPanel)then
frmFunctionList.Hide
else
frmFunctionList.Parent.Hide;
Splitter1.Hide;
end;
end;
end;
procedure TForm1.SafeCallThread;
begin

1614
Units/Misc/mPasLex.pas Normal file

File diff suppressed because it is too large Load Diff