diff --git a/lazproj/coedit.lpi b/lazproj/coedit.lpi
index 1c7cf916..cc3a8578 100644
--- a/lazproj/coedit.lpi
+++ b/lazproj/coedit.lpi
@@ -50,11 +50,6 @@
-
-
-
-
-
@@ -115,18 +110,21 @@
-
+
-
+
-
+
-
+
+
+
+
-
+
@@ -192,6 +190,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lazproj/coedit.lpr b/lazproj/coedit.lpr
index 18cc0b32..811eec68 100644
--- a/lazproj/coedit.lpr
+++ b/lazproj/coedit.lpr
@@ -6,9 +6,9 @@ uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
- Interfaces,
- Forms, lazcontrols, ce_main, ce_widget, ce_common,
- ce_messages, ce_editor, ce_project, ce_synmemo, ce_dmdwrap;
+ Interfaces, Forms, lazcontrols, runtimetypeinfocontrols, ce_main, ce_widget,
+ ce_common, ce_messages, ce_editor, ce_project, ce_synmemo, ce_dmdwrap,
+ ce_projconf, ce_projconfframe, ce_projconfall;
{$R *.res}
diff --git a/src/ce_common.pas b/src/ce_common.pas
index da32650a..8e178125 100644
--- a/src/ce_common.pas
+++ b/src/ce_common.pas
@@ -45,7 +45,7 @@ type
fFilename: string;
fBasePath: string;
fOptsColl: TCollection;
- fSrcs, fSrcsCop: TStringList; // an editor can be associated to a file using the Object[] property
+ fSrcs, fSrcsCop: TStringList;
fConfIx: Integer;
procedure doChanged;
procedure subMemberChanged(sender : TObject);
@@ -55,6 +55,7 @@ type
procedure setConfIx(aValue: Integer);
function getConfig(const ix: integer): TCompilerConfiguration;
function getSrcs: TStringList;
+ function getCurrConf: TCompilerConfiguration;
published
property OptionsCollection: TCollection read fOptsColl write setOptsColl;
property Sources: TStringList read fSrcs write setSrcs; // 'read' should return a copy to avoid abs/rel errors
@@ -69,6 +70,7 @@ type
function getOpts: string;
//
property configuration[ix: integer]: TCompilerConfiguration read getConfig;
+ property currentConfiguration: TCompilerConfiguration read getCurrConf;
property fileName: string read fFilename write setFname;
property onChange: TNotifyEvent read fOnChange write fOnChange;
end;
@@ -111,7 +113,10 @@ begin
str1.Position := 0;
ObjectTextToBinary(str1,str2);
str2.Position := 0;
- str2.ReadComponent(aComp);
+ try
+ str2.ReadComponent(aComp);
+ except
+ end;
finally
str1.Free;
str2.Free;
@@ -133,7 +138,7 @@ begin
end;
end;
-// TODO: comments handling
+// TODO: block comments handling
function getModuleName(const aSource: TStrings): string;
var
ln: string;
@@ -161,14 +166,17 @@ begin
end;
if tok then if ln[pos] = ';'then
- begin
- result := id;
- exit;
- end;
+ exit(id);
id += ln[pos];
Inc(pos);
+ if id = '//' then
+ begin
+ Inc(pos, length(ln));
+ break;
+ end;
+
if id = 'module' then
begin
tok := true;
@@ -188,9 +196,9 @@ begin
inherited create(aOwner);
fSrcs := TStringList.Create;
fSrcsCop := TStringList.Create;
- fSrcs.OnChange := @subMemberChanged;
fOptsColl := TCollection.create(TCompilerConfiguration);
reset;
+ fSrcs.OnChange := @subMemberChanged;
end;
destructor TCEProject.destroy;
@@ -269,11 +277,20 @@ procedure TCEProject.doChanged;
begin
fModified := true;
if assigned(fOnChange) then fOnChange(Self);
+ {$IFDEF DEBUG}
+ writeln(getOpts);
+ {$ENDIF}
end;
function TCEProject.getConfig(const ix: integer): TCompilerConfiguration;
begin
result := TCompilerConfiguration(fOptsColl.Items[ix]);
+ result.onChanged := @subMemberChanged;
+end;
+
+function TCEProject.getCurrConf: TCompilerConfiguration;
+begin
+ result := TCompilerConfiguration(fOptsColl.Items[fConfIx]);
end;
function TCEProject.getSrcs: TStringList;
@@ -300,13 +317,12 @@ procedure TCEProject.reset;
var
defConf: TCompilerConfiguration;
begin
+ fConfIx := 0;
fOptsColl.Clear;
defConf := addConfiguration;
defConf.name := 'default';
fSrcs.Clear;
fFilename := '';
- fModified := true;
- fConfIx := 0;
doChanged;
end;
@@ -315,12 +331,13 @@ var
rel, abs: string;
begin
result := '';
+ if fConfIx = -1 then exit;
for rel in fSrcs do
begin
abs := expandFilenameEx(fBasePath,rel);
result += '"' + abs + '"';
end;
- result += TCompilerConfiguration(fOptsColl.Items[fConfIx]).getOpts;
+ result += ' ' + TCompilerConfiguration(fOptsColl.Items[fConfIx]).getOpts;
end;
function TCEProject.getAbsoluteSourceName(const aIndex: integer): string;
diff --git a/src/ce_dmdwrap.pas b/src/ce_dmdwrap.pas
index da3bbd1c..c9494194 100644
--- a/src/ce_dmdwrap.pas
+++ b/src/ce_dmdwrap.pas
@@ -64,7 +64,6 @@ type
fWarnEx: boolean;
fVtls: boolean;
fQuiet: boolean;
- fProp: boolean;
procedure setDepHandling(const aValue: TDepHandling);
procedure setVerb(const aValue: boolean);
procedure setWarn(const aValue: boolean);
@@ -79,20 +78,39 @@ type
property tlsInformations: boolean read fVtls write setVtls;
property quiet: boolean read fQuiet write setQuiet;
public
+ constructor create;
function getOpts: string; override;
end;
+ (*****************************************************************************
+ * Describes the target registry size
+ *)
+ TTargetSystem = (auto, os32bit, os64bit);
+ (**
+ * Describes the output kind
+ *)
+ TBinaryKind = (executable, staticlib, sharedlib, obj);
+
+
(*****************************************************************************
* Encapsulates the options/args related to the analysis & the code gen.
*)
TOutputOpts= class(TOptsGroup)
private
+ fTrgKind: TTargetSystem;
+ fBinKind: TBinaryKind;
+ fUt: boolean;
+ fVerId: string;
fInline: boolean;
fNoBounds: boolean;
- fOptims: boolean;
+ fOptimz: boolean;
fGenStack: boolean;
fMain: boolean;
fRelease: boolean;
+ procedure setUt(const aValue: boolean);
+ procedure setVerId(const aValue: string);
+ procedure setTrgKind(const aValue: TTargetSystem);
+ procedure setBinKind(const aValue: TBinaryKind);
procedure setInline(const aValue: boolean);
procedure setNoBounds(const aValue: boolean);
procedure setOptims(const aValue: boolean);
@@ -100,25 +118,20 @@ type
procedure setMain(const aValue: boolean);
procedure setRelease(const aValue: boolean);
published
+ property targetKind: TTargetSystem read fTrgKind write setTrgKind;
+ property binaryKind: TBinaryKind read fBinKind write setBinKind;
property inlining: boolean read fInline write setInline;
property noBoundsCheck: boolean read fNoBounds write setNoBounds;
- property optimisations: boolean read fOptims write setOptims;
+ property optimizations: boolean read fOptimz write setOptims;
property generateStackFrame: boolean read fGenStack write setGenStack;
property addMain: boolean read fMain write setMain;
property release: boolean read fRelease write setRelease;
+ property unittest: boolean read fUt write setUt;
+ property versionIdentifier: string read fVerId write setVerId;
public
function getOpts: string; override;
end;
- (*****************************************************************************
- * Describes the target registry size
- *)
- TTargetSystem = (auto, os32bit, os64bit);
- (**
- * Describes the output kind
- *)
- TBinaryKind = (executable, staticlib, sharedlib);
-
(**
* Encapsulates the options/args related to the debuging
*)
@@ -129,9 +142,19 @@ type
fDbgD: boolean;
fDbgC: boolean;
fMap: boolean;
+ procedure setDbg(const aValue: boolean);
+ procedure setDbgIdent(const aValue: string);
+ procedure setDbgD(const aValue: boolean);
+ procedure setDbgC(const aValue: boolean);
+ procedure setMap(const aValue: boolean);
published
+ property debug: boolean read fDbg write setDbg;
+ property debugIdentifier: string read fDbgIdent write setDbgIdent;
+ property addDInformations: boolean read fDbgD write setDbgD;
+ property addCInformations: boolean read fDbgC write setDbgC;
+ property generateMapFile: boolean read fMap write setMap;
public
- //function getOpts: string; override;
+ function getOpts: string; override;
end;
(*****************************************************************************
@@ -269,9 +292,14 @@ end;
(*******************************************************************************
* TMsgOpts
*)
+constructor TMsgOpts.create;
+begin
+ fDepHandling := TDepHandling.warning;
+end;
+
function TMsgOpts.getOpts: string;
const
- DepStr : array[TDepHandling] of string = ('-d ','-dw ','-de ');
+ DepStr : array[TDepHandling] of string = ('-d ','-dw ', '-de ');
begin
result := DepStr[fDepHandling];
if fVerb then result += '-v ';
@@ -327,16 +355,50 @@ end;
* TOutputOpts
*)
function TOutputOpts.getOpts: string;
+const
+ trgKindStr: array[TTargetSystem] of string = ('', '-m32 ','-m64 ');
+ binKindStr: array[TBinaryKind] of string = ('', '-lib ', '-shared ', '-c ');
begin
- result := '';
+ result := binKindStr[fBinKind];
+ result += trgKindStr[fTrgKind];
+ if fUt then result += '-unittest ';
+ if fVerId <> '' then result += '-version=' + fVerId + ' ';;
if fInline then result += '-inline ';
if fNoBounds then result += '-noboundscheck ';
- if fOptims then result += '-O ';
+ if fOptimz then result += '-O ';
if fGenStack then result += '-gs ';
if fMain then result += '-main ';
if fRelease then result += '-release ';
end;
+procedure TOutputOpts.setUt(const aValue: boolean);
+begin
+ if fUt = aValue then exit;
+ fUt := aValue;
+ doChanged;
+end;
+
+procedure TOutputOpts.setVerId(const aValue: string);
+begin
+ if fVerId = aValue then exit;
+ fVerId := aValue;
+ doChanged;
+end;
+
+procedure TOutputOpts.setTrgKind(const aValue: TTargetSystem);
+begin
+ if fTrgKind = aValue then exit;
+ fTrgKind := aValue;
+ doChanged;
+end;
+
+procedure TOutputOpts.setBinKind(const aValue: TBinaryKind);
+begin
+ if fBinKind = aValue then exit;
+ fBinKind := aValue;
+ doChanged;
+end;
+
procedure TOutputOpts.setInline(const aValue: boolean);
begin
if fInline = aValue then exit;
@@ -353,8 +415,8 @@ end;
procedure TOutputOpts.setOptims(const aValue: boolean);
begin
- if fOptims = aValue then exit;
- fOptims := aValue;
+ if fOptimz = aValue then exit;
+ fOptimz := aValue;
doChanged;
end;
@@ -379,6 +441,54 @@ begin
doChanged;
end;
+(*******************************************************************************
+ * TDebugOpts
+ *)
+function TDebugOpts.getOpts: string;
+begin
+ result := '';
+ if fDbg then result += '-debug ';
+ if fDbgIdent <> '' then result += '-debug=' + fDbgIdent + ' ';
+ if fDbgD then result += '-g ';
+ if fDbgC then result += '-gc ';
+ if fMap then result += '-map ';
+end;
+
+procedure TDebugOpts.setDbg(const aValue: boolean);
+begin
+ if fDbg = aValue then exit;
+ fDbg := aValue;
+ doChanged;
+end;
+
+procedure TDebugOpts.setDbgIdent(const aValue: string);
+begin
+ if fDbgIdent = aValue then exit;
+ fDbgIdent := aValue;
+ doChanged;
+end;
+
+procedure TDebugOpts.setDbgD(const aValue: boolean);
+begin
+ if fDbgD = aValue then exit;
+ fDbgD := aValue;
+ doChanged;
+end;
+
+procedure TDebugOpts.setDbgC(const aValue: boolean);
+begin
+ if fDbgC = aValue then exit;
+ fDbgC := aValue;
+ doChanged;
+end;
+
+procedure TDebugOpts.setMap(const aValue: boolean);
+begin
+ if fMap = aValue then exit;
+ fMap := aValue;
+ doChanged;
+end;
+
(*******************************************************************************
* TPathsOpts
*)
@@ -515,11 +625,11 @@ end;
function TCompilerConfiguration.getCmdLine: string;
begin
- result :=
- fDocOpts.getOpts + (*fDebugOpts.getOpts +*) fMsgOpts.getOpts
+ result :=
+ fDocOpts.getOpts + fDebugOpts.getOpts + fMsgOpts.getOpts
+ fOutputOpts.getOpts + fPathsOpts.getOpts + fOthers.getOpts;
- if result[length(result)] = ' ' then
- setlength(result, length(result)-1);
+ if result[length(result)] = ' ' then
+ setlength(result, length(result)-1);
end;
procedure TCompilerConfiguration.setName(const aValue: string);
@@ -528,6 +638,7 @@ begin
fName := aValue;
if fName = '' then fName := nameFromID;
Changed(true);
+ doChanged;
end;
procedure TCompilerConfiguration.subOptsChanged(sender: TObject);
diff --git a/src/ce_editor.lfm b/src/ce_editor.lfm
index 6afad2dc..dd93df52 100644
--- a/src/ce_editor.lfm
+++ b/src/ce_editor.lfm
@@ -1,37 +1,39 @@
inherited CEEditorWidget: TCEEditorWidget
Left = 1248
- Height = 517
+ Height = 336
Top = 89
Width = 481
Caption = 'EditorWidget'
- ClientHeight = 517
+ ClientHeight = 336
ClientWidth = 481
inherited Back: TPanel
- Height = 517
+ Height = 336
Width = 481
- ClientHeight = 517
+ ClientHeight = 336
ClientWidth = 481
inherited Content: TScrollBox
- Height = 491
+ Height = 310
Width = 481
HorzScrollBar.Page = 477
- VertScrollBar.Page = 487
- ClientHeight = 487
+ VertScrollBar.Page = 306
+ ClientHeight = 306
ClientWidth = 477
object PageControl: TExtendedNotebook[0]
Left = 2
- Height = 460
+ Height = 279
Top = 2
Width = 473
Align = alClient
BorderSpacing.Around = 2
TabOrder = 0
OnChange = PageControlChange
+ TabDragMode = dmAutomatic
+ TabDragAcceptMode = dmAutomatic
end
object editorStatus: TStatusBar[1]
Left = 0
Height = 23
- Top = 464
+ Top = 283
Width = 477
Panels = <
item
@@ -50,11 +52,12 @@ inherited CEEditorWidget: TCEEditorWidget
Width = 481
end
end
- object macRecorder: TSynMacroRecorder[1]
+ object macRecorder: TSynMacroRecorder[2]
RecordShortCut = 24658
PlaybackShortCut = 24656
+ left = 64
end
- object imgList: TImageList[2]
+ object imgList: TImageList[3]
left = 32
Bitmap = {
4C69010000001000000010000000CCCBC900CCCBC900CCCBC900CCCBC900CCCB
@@ -92,7 +95,4 @@ inherited CEEditorWidget: TCEEditorWidget
0000000000000000000000000000
}
end
- object ApplicationProperties1: TApplicationProperties[3]
- left = 64
- end
end
diff --git a/src/ce_editor.pas b/src/ce_editor.pas
index 401e50b5..1ac0b826 100644
--- a/src/ce_editor.pas
+++ b/src/ce_editor.pas
@@ -13,7 +13,6 @@ uses
type
{ TCEEditorWidget }
TCEEditorWidget = class(TCEWidget)
- ApplicationProperties1: TApplicationProperties;
imgList: TImageList;
PageControl: TExtendedNotebook;
macRecorder: TSynMacroRecorder;
diff --git a/src/ce_main.lfm b/src/ce_main.lfm
index 1a0457ec..54f4d18e 100644
--- a/src/ce_main.lfm
+++ b/src/ce_main.lfm
@@ -4,91 +4,770 @@ object CEMainForm: TCEMainForm
Top = 0
Width = 655
Caption = 'Coedit'
+ DockSite = True
+ DragMode = dmAutomatic
Menu = mainMenu
+ OnDropFiles = FormDropFiles
LCLVersion = '1.2.2.0'
object mainMenu: TMainMenu
+ Images = imgList
object MenuItem1: TMenuItem
Caption = 'File'
object MenuItem5: TMenuItem
Action = actNewFile
+ Bitmap.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000FFFFFF000000
+ 0000000000330000000000000033000000000000003300000000000000330000
+ 000000000033000000000000003300000000FFFFFF00FFFFFF00FFFFFF000000
+ 003389898AFF0000003389898AFF0000003389898AFF0000003389898AFF0000
+ 003389898AFF0000003389898AFF00000033FFFFFF00FFFFFF00FFFFFF008989
+ 8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFF89898AFFFFFFFF00FFFFFF00FFFFFF000000
+ 0033FFFFFFFFFDFDFDFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFC
+ FCFFFCFCFCFFFDFDFDFFFFFFFFFF00000033FFFFFF00FFFFFF00FFFFFF008989
+ 8AFFFFFFFFFFFAF9F9FFF9F8F8FFF9F8F8FFF9F8F8FFF9F8F8FFF9F8F8FFF9F8
+ F8FFF9F8F8FFFAF9F9FFFFFFFFFF89898AFFFFFFFF00FFFFFF00FFFFFF000000
+ 0033FFFFFFFFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6
+ F6FFF6F6F6FFF6F6F6FFFFFFFFFF00000033FFFFFF00FFFFFF00FFFFFF008989
+ 8AFFFFFFFFFFF4F4F3FFF4F4F3FFF4F4F3FFF4F4F3FFF4F4F3FFF4F4F3FFF4F4
+ F3FFF4F4F3FFF4F4F3FFFFFFFFFF89898AFFFFFFFF00FFFFFF00FFFFFF000000
+ 0033FFFFFFFFF2F1F0FFF2F1F0FFF2F1F0FFF2F1F0FFF2F1F0FFF2F1F0FFF2F1
+ F0FFF2F1F0FFF2F1F0FFFFFFFFFF00000033FFFFFF00FFFFFF00FFFFFF008989
+ 8AFFFFFFFFFFEFEFEEFFEFEFEEFFEFEFEEFFEFEFEEFFEFEFEEFFEFEFEEFFEFEF
+ EEFFEEEEEDFFEEEFEEFFFFFFFFFF89898AFFFFFFFF00FFFFFF00FFFFFF000000
+ 0033FFFFFFFFEDEBEAFFEDECEBFFEDECEBFFEDECEBFFEDECEBFFECEBEAFFECEB
+ E9FFEBEAE9FFECEAE9FFFFFFFFFF00000033FFFFFF00FFFFFF00FFFFFF008989
+ 8AFFFFFFFFFFE9E9E8FFEAEAE9FFEAEAE9FFEAEAE9FFE9E9E8FFF4F4F2FFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFF89898AFFFFFFFF00FFFFFF00FFFFFF000000
+ 0033FFFFFFFFE7E6E5FFE8E7E6FFE8E7E6FFE8E7E6FFE6E5E4FFFFFFFFFF9191
+ 91FFFFFFFFFF929292FFFFFFFFFF00000033FFFFFF00FFFFFF00FFFFFF008989
+ 8AFFFFFFFFFFE3E3E2FFE4E4E3FFE4E5E4FFE4E4E3FFE3E3E2FFFFFFFFFFFFFF
+ FFFFE6E6E4FFFFFFFFFFE0E0E0AB89898AFFFFFFFF00FFFFFF00FFFFFF000000
+ 0033FFFFFFFFE0DFDDFFE0DFDEFFE0DFDEFFE0DFDEFFDFDEDCFFFFFFFFFF9191
+ 91FFFFFFFFFFDDDDDDA789898AFF00000000FFFFFF00FFFFFF00FFFFFF008989
+ 8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFE0E0E0AB89898AFF0000000000000000FFFFFF00FFFFFF00FFFFFF00A5A5
+ A53889898AFF0000000089898AFF0000000089898AFF0000000089898AFF0000
+ 000089898AFF000000000000000000000000FFFFFF00FFFFFF00
+ }
end
object MenuItem24: TMenuItem
Action = actNewRunnable
end
object MenuItem2: TMenuItem
Action = actOpenFile
+ Bitmap.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000FFFFFF000000
+ 00000000000000000000000000000000001200000025000000330000002E0000
+ 00000000000000000000000000000000000000000000FFFFFF00FFFFFF000000
+ 0000000000120000002500000033326E987A3E8BC1C84195D1FF3892D1ED0000
+ 00330000003300000033000000330000003300000023FFFFFF00FFFFFF000000
+ 002F326F997C3D8AC1C74092CEFF54ADDEFF66C4EDFF78E0FEFF3591D1FFBBB2
+ AAFFB0AEABFFADADABFFAEAEABFFAFAFADFFA4A4A2C0FFFFFF00FFFFFF004295
+ CEEF58B0DFFF6DC9EFFF7FE2FDFF7EE3FEFF7ADEFCFF7EE1FFFF308CCDFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0B0ADFFFFFFFF00FFFFFF004094
+ CFFF92F1FFFF85E7FFFF80E1FDFF7ADEFBFF77DBFBFF83E1FFFF308ACBFFFFFF
+ FBFFFFFFFDFFFCFCFCFFFCFCFCFFFFFFFFFFAEAEABFFFFFFFF00FFFFFF003E92
+ CEFF9AF0FFFF83E4FDFF7EDFFCFF7ADDFBFF76DAFAFF89E2FEFF48A8DDFF70AE
+ D9FFFFFCF8FFF9F6F6FFF7F6F6FFFFFFFFFFADADABFFFFFFFF00FFFFFF003E92
+ CEFFA3F1FFFF82E3FCFF7EDFFCFF7ADDFBFF76DAFAFF71D9FBFF9DE8FFFF2A89
+ CBFFFFFBF6FFF6F4F3FFF4F3F3FFFFFFFFFFADADABFFFFFFFF00FFFFFF003D92
+ CEFFADF3FFFF81E3FCFF7EDFFCFF7ADDFBFF76DAFAFF6FD8FAFFABEBFFFF2B89
+ CCFFFFF8F1FFF2F1EFFFEFF0EEFFFFFFFFFFADADABFFFFFFFF00FFFFFF003C92
+ CEFFB6F6FFFF80E3FCFF7DDFFCFF7ADDFBFF76DAFAFF6ED7FAFFB9EFFFFF2A89
+ CCFFFCF2EDFFEEECEBFFEBEAEAFFFFFFFFFFADADABFFFFFFFF00FFFFFF003C91
+ CEFFC0F8FFFF7FE2FCFF7DDFFCFF7ADDFBFF75DAFAFF6DD7FAFFC6F3FFFF2989
+ CBFFFFF9F4FFFFFFFFFFFFFFFFFFFFFFFFFFAEAEABFFFFFFFF00FFFFFF003B91
+ CEFFC9F9FFFF7EE2FCFF7CDEFCFF78DCFBFF72D9FAFF6AD6FAFFD2F6FFFF2888
+ CBFFFFFFFFFFCDCBC9FFA4A4A2FFFFFFFFFFAFAFADFFFFFFFF00FFFFFF003A91
+ CEFFD2FCFFFF7AE2FCFF77DDFCFF7FDFFBFF9BE6FDFFB3EDFFFFD4F9FFFF2688
+ CBFFFFFFFFFFA7A5A2FFFFFFFFFFE9E9E9FFB0B0AEACFFFFFF00FFFFFF003991
+ CFFFE9FFFFFFAFF0FFFFCEF7FFFFDAFAFFFFC4ECFCFF8CCAECFF5FAEE0FF82BD
+ E6FFFFFFFFFFFFFFFFFFE9E9E9FFAFAFADA700000000FFFFFF00FFFFFF003C93
+ D0FFE9FFFFFFA8DAF3FF7BBDE4FF4398D2FF408EC7FF6E9CBCFF90A5B2FFBAAF
+ A6FFB5ADA6FFB5AFA9FFB5B1ADA40000000000000000FFFFFF00FFFFFF004297
+ D2FF3B93D0FF62ADDCFF93CDEDFFBBE7FAFFD8FCFFFFD6FCFFFFD3FBFFFFD1FB
+ FFFFD3FCFFFF2E91D5FF000000000000000000000000FFFFFF00FFFFFF00459A
+ D3EF4498D2FF4197D1FF3F95D1FF3D94D0FF3B93D0FF3A92D0FF3A92D0FF3A93
+ D0FF3C94D1FF3E97D3EE000000000000000000000000FFFFFF00
+ }
end
object MenuItem6: TMenuItem
Caption = '-'
end
object MenuItem3: TMenuItem
Action = actSaveFileAs
+ Bitmap.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000002C0000
+ 0033000000330000003300000033000000330000003300000033000000330000
+ 00330000003300000033000000330000002C0000000000000000B3811AE1B781
+ 14FFB57E10FFB57D0CFFB67C0BFFB67C0AFFB57C0AFFB67D0AFFB77D0BFFB77E
+ 0BFFB77E0CFFB67F10FFB78114FFB3811AE1BB871E00BB871F00B78115FFFEE9
+ C7FFFBE4BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFE7BCFFFFEAC6FFB78115FFBB861D00BB871F00B67F12FFFBE9
+ CFFFD88500FFFFFFFFFF797B7FFFA2A4A5FFFFFCF3FF828180FF425C72FF385A
+ 80FF3784DDFFEB8D00FFFFECCCFFB78011FFBB861C00BC871D00B67F12FFFAE4
+ C1FFDB8D0AFFFEFFFFFFFDF7EBFFFFF8EAFFFFF7E9FFFFFDEBFF507C9CFF7BA3
+ B5FF86D2FFFF1F60A2FFFFEBB6FFBE830DFFC0871600C2891600B68013FFF7DE
+ B5FFDC9317FFFFFFFFFF787879FF7A7979FFA4A2A1FFABA39FFF3AABF2FFA1ED
+ FFFF9ADEFEFF0998FFFF2366A9FFCA8604FF0000000971747E00B68014FFF5D9
+ AAFFDF9822FFFFFFFFFFF1E6D9FFF2E6D9FFF2E6D7FFF6E6D6FFCED9DBFF1D6F
+ C5FF39C4FFFF1DABFFFF7EA3C4FF7C7878FF3B3B3A5674767000B68114FFF4D4
+ A2FFE29F31FFE9E1E2FFFEFFFFFFFEFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFF1B74D0FFACDBF4FF928782FFC1C0BAFF797B71FF00000033B68115FFF3D1
+ 99FFE3A740FFE2A336FFE19F2EFFE19E2BFFE19E2BFFE29F2CFFE3A02CFFE8A3
+ 2DFFF1A830FF817F83FFE9E9E8FF898B83FFAC7BA7FF9969CBFFB68115FFF3CE
+ 93FFE5AB48FFEED7B6FFF5F3F7FFF5F1F4FFF7F3F6FFFBF8FAFFFCF8FAFFF9F6
+ F9FFF2D9B4FFEEAE40FF7A8185FFE0B1E4FFCB96C7FFAE7DCEFFB68116FFF3CB
+ 8CFFE7AE4EFFF5F4F8FFF0E9E4FFF1E9E2FFF8EFE8FF8A847FFF88817EFFF8F0
+ EBFFF7F5F9FFEAAF4BFFF6CD7DFFBC87E4FFBE8ADAFFAC7BCF00B68116FFF1C8
+ 87FFE8B258FFF6F5F7FFEEE2D9FFEFE3D9FFFFFAF5FF5C5752FF48423FFFFFFB
+ F7FFF7F6F8FFE9B257FFF2C880FFB68100FFBE8AEC00AB7BDF00B68116FFF2CA
+ 85FFEBB962FFF8F8FBFFE9DCD1FFEBDDD1FFFFFFFCFF958B83FF4A443FFFFFFF
+ FFFFFAF9FCFFEBB962FFF2CA83FFB6810FFFBB860F00BC880D00B78218FFF6CC
+ 89FFF2C274FFFFFFFFFFFEFDFCFFFFFEFCFFFFFEF9FF93887EFF4A433DFFFFFF
+ FFFFFFFFFFFFF2C274FFF6CC89FFB78217FFBB861C00BB871C00B9851CC5B781
+ 16FFB37A06FFD6CFD1FFD4C9C3FFD4C9C1FFD8CCC5FFE3D7D02B4A433D00DFD4
+ CEFFD8D1D2FFB37A06FFB78116FFB9851CC5BB871F00BB871F00
+ }
end
object MenuItem4: TMenuItem
Action = actSaveFile
+ Bitmap.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000000000000000
+ 0033000000330000003300000033000000330000003300000033000000330000
+ 0033000000330000003300000033000000330000003300000030AA7C29C0B681
+ 24FFB57F20FFB47F1FFFB57F20FFB68226FFB8831FFFB78216FFB68114FFB880
+ 10FFB9810FFFB87F0EFFB67E0FFFB68013FFB78218FFB7831CF2B68124FFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB37A09FFF5CB89FFF3C275FFF9FC
+ FFFF8B8D91FFF9F9F9FFF4F8FCFFF2C174FFF6CD8BFFB78218FFB57F20FFFFFF
+ FFFFE6D6AEFFE6D7B0FFE8D9B3FFEBDFC0FFB17805FFF2CA88FFEBB65CFFF2ED
+ EDFF7F7978FFF1E9E2FFEEE9E9FFEAB55BFFF3CC8BFFB68116FFB47E1FFFFFFF
+ FFFFE6D6AFFFE7D7B2FFE8DAB5FFEBE0C2FFB17805FFF2CD91FFE6AD4FFFEACF
+ A9FFFFFFFFFFFDFFFFFFE8CEA7FFE6AD4EFFF3CE93FFB68115FFB47E1EFFFFFF
+ FFFFE6D5ADFFE6D6AFFFE7D8B3FFEBDFC0FFB17703FFF4D39CFFE4A641FFE3A4
+ 3AFFE3A133FFE2A132FFE3A43AFFE3A641FFF4D49EFFB68114FFB47E1EFFFFFF
+ FFFFF8F4E7FFF8F4E8FFF9F6EBFFFCFDFAFFB07601FFF5D7A9FFE19E2FFFE7CA
+ A1FFEBE2E0FFEBE2E0FFE7CAA1FFE19E2FFFF6D9ADFFB68014FFB47E1EFFFFFF
+ FFFFF4EDDDFFF4EDDDFFF5EFE1FFF9F7F0FFB07500FFF7E0B9FFDD9419FFEEE9
+ E9FFEFE6DEFFEFE6DEFFEEE9E9FFDD9419FFF8E2BCFFB68012FFB47E1EFFFFFF
+ FFFFF3EAD6FFF3EAD7FFF4ECDAFFF8F3E8FFB07500FFFAE9CEFFDA8802FFF0EE
+ ECFFB2ADA7FFB2ADA7FFF0EEECFFDA8802FFFBEAD1FFB67F12FFB47E1EFFFFFF
+ FFFFF1E6CEFFF1E7CFFFF2E8D3FFF6EFDFFFB07400FFFDE8C7FFFBE6C2FFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE6C4FFFFECCEFFB78114FFB47E1EFFFFFF
+ FFFFEEE3C8FFEFE4C9FFEFE5CCFFF2E9D3FFC9A14FFFB07500FFB27803FFB379
+ 04FFB37801FFB27600FFB37A05FFB57E0EFFB78114FFB9851BEFB47E1EFFFFFF
+ FFFFECE0C1FFEDE1C3FFEDE1C5FFEEE3C7FFEFE5CBFFFFFFFFFFD5B683FFB37D
+ 1DFFB27A19FFFFFFFFFFB68227FFB9841800BA861C00BB871E00B47E1EFFFFFF
+ FFFFEADCB9FFEADDBCFFEBDDBDFFEADDBCFFEADCBBFFFFFFFFFFAE740EFFFEFE
+ FAFFFFFFFFFFECDDC5FFB78429AABA8A3500BB871D00BB871F00B57F1FFFFFFF
+ FFFFE7D8B1FFE7D8B2FFE7D9B3FFE7D8B2FFE7D8B0FFFFFFFFFFAC7107FFFFFF
+ FFFFEADABFFFB57F20A7B9872E00BB8A3500BB871D00BB871F00B68124FFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBDC
+ C3FFB57F20A6B9872D00BB893200BB8A3500BB871D00BB871F00B9872DEFB681
+ 24FFB57F1FFFB47E1EFFB47E1EFFB47E1EFFB47E1EFFB47F1FFFB58022FFB783
+ 27EAB9872E00BB893200BB8A3300BB8A3500BB871D00BB871F00
+ }
end
object MenuItem25: TMenuItem
Caption = '-'
end
object MenuItem26: TMenuItem
Action = actAddCurrToProj
+ Bitmap.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000000000000000
+ 0033000000330000003300000033000000330000003300000033000000330000
+ 00330000002F00000000000000000000000000000000000000004498D1F24397
+ D1FF4094D0FF3F92CFFF3F92CFFF4093D0FF4193D1FF4193D1FF4194D1FF4194
+ D1FF4295CFEF00000012000000000000000000000000000000004498D2FF449A
+ D3FFAAF4FFFF92F1FFFF94F1FFFF9AF4FFFF9EF7FFFF9FF7FFFF9FF7FFFFB1FD
+ FFFF6DBDEDFF3175A573000000000000000000000000000000004397D1FF62B8
+ E3FF7ECCEDFF81E6FFFF87E8FFFF26A786FF007F38FF007F3BFF007F3CFF0081
+ 3BFF25A082FF368CD1D2000000330000003300000033000000234095D0FF86D7
+ F4FF4AA7DBFFE2FFFFFFE9FFFFFF007F39FF16EBABFF00E39DFF00E49FFF00E8
+ 9FFF008039FFC2B1B0FFB3AFABFFAFAEABFFB0AFADFFA4A4A2C03E93D0FFB1F6
+ FFFF4DA7DCFF388CCEFF4190D9FF00823BFF47E8BCFF00D699FF00D79CFF007C
+ 3DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0B0ADFF3D92CFFFBBF3
+ FFFF72DAFBFF6CCCF3FF74D0FFFF008139FF75EAD0FF4BEAD0FF00C59AFF00C8
+ 9CFF007A34FFFFFFFFFFFEFCFDFFFCFCFCFFFFFFFFFFAEAEABFF3B92CFFFC6F5
+ FFFF6BD8FAFF6FDAFCFF77DFFFFF008037FF93EDE0FF007B36FF88E5DCFF86E6
+ DDFF007932FFFFFDFFFFFAF7F8FFF7F6F6FFFFFFFFFFADADABFF3B92CFFFD5F7
+ FFFF5FD1F9FFB6EBFEFFE2FCFFFF44B188FF007E35FFFFFFFFFF007933FF0079
+ 32FFFFFDFFFFFCF6F8FFF5F3F3FFF4F3F3FFFFFFFFFFADADABFF3D94D0FFDCFD
+ FFFFD8F9FFFFDBFBFFFF388FD1FF3993D9FFC2B2AEFFFFFFFFFFFFF6FAFFFFF6
+ F9FFF8F3F4FFF1F0EFFFEFEFEEFFEFEFEEFFFFFFFFFFADADABFF4398D2B03D94
+ D0FF3B92CFFF3D94D0FF4097D2E400000000BAB0A9FFFFFFFFFFEFEDEDFFEFED
+ EDFFF6F6F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAEAEABFF000000000000
+ 000000000000000000000000000000000000B7B0A9FFFFFFFFFFE8E7E8FFE8E7
+ E7FFFFFFFFFFCBCBCAFFA7A7A4FFA5A5A3FFFFFFFFFFAFAFADFF000000000000
+ 000000000000000000000000000000000000B2AFAAFFFFFFFFFFE5E4E3FFE5E4
+ E2FFFFFFFFFFA7A7A4FFEBEBEAFFFFFFFFFFE9E9E9FFB0B0AEAC000000000000
+ 000000000000000000000000000000000000AFAEABFFFFFFFFFFE0E0DFFFDFDF
+ DEFFFFFFFFFFA5A5A3FFFFFFFFFFE8E8E8FFAFAFACA700000000000000000000
+ 000000000000000000000000000000000000B0AFADFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFE9E9E9FFAEAEACA70000000000000000000000000000
+ 000000000000000000000000000000000000B3B3B1B0B0B0ADFFAEAEACFFADAD
+ ABFFAEAEABFFAFAFADFFB0B0AEAC000000000000000000000000
+ }
+ end
+ object MenuItem36: TMenuItem
+ Caption = '-'
+ end
+ object MenuItem37: TMenuItem
+ Action = actCompAndRunFile
+ end
+ object MenuItem38: TMenuItem
+ Action = ActCompAndRunFileWithArgs
end
end
object MenuItem7: TMenuItem
Caption = 'Edit'
object MenuItem15: TMenuItem
Action = actCopy
+ Bitmap.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000000000000000
+ 0000000000000000000000000000000000000000003000000033000000330000
+ 0033000000330000003300000033000000330000003300000030000000000000
+ 000000000000000000000000000000000000B1B1AFF2B0B0AEFFAEAEACFFADAD
+ ABFFADADABFFADADABFFADADABFFAEAEABFFAFAFADFFB1B1AFF2000000000000
+ 000B0000000A0000000A0000000A00000007B0B0AEFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0B0ADFF0000002F6868
+ 675F6464625C6464625C616160594E4E4D4EB0B0ADFFF6F6F5FFECECEBFFFBFA
+ FAFFFDFDFDFFFCFCFCFFFBFBFCFFFCFCFCFFFFFFFFFFAEAEABFFB0B0AEF1AFAF
+ ADFFAEAEABFFADADABFFADADABFFADADABFFACACAAFFA9A9A7FFA8A8A6FFB8B7
+ B6FFFBFAFAFFF8F6F6FFF7F6F6FFF7F6F6FFFFFFFFFFADADABFFB0B0ADFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8A8
+ A5FFF9F8F8FFF5F4F4FFF4F3F3FFF4F3F3FFFFFFFFFFADADABFFAEAEABFFFFFF
+ FFFFFCFCFCFFFBFBFCFFFBFBFCFFFBFBFCFFFBFBFCFFFCFCFCFFFFFFFFFFA7A7
+ A5FFF5F5F4FFF1F1F0FFEFEFEEFFEFEFEEFFFFFFFFFFADADABFFADADABFFFFFF
+ FFFFF7F6F6FFF7F6F6FFF7F6F6FFF7F6F6FFF7F6F6FFF7F6F6FFFFFFFFFFA7A7
+ A5FFF1F1F1FFEDEDECFFEBEBEAFFEBEBEAFFFFFFFFFFADADABFFADADABFFFFFF
+ FFFFF4F3F3FFF4F3F3FFF4F3F3FFF4F3F3FFF4F3F3FFF4F3F3FFFFFFFFFFA8A8
+ A5FFEDECECFFF4F3F3FFFFFFFFFFFFFFFFFFFFFFFFFFAEAEABFFADADABFFFFFF
+ FFFFF0F0EFFFF0F0EFFFF0F0EFFFF0F0EFFFEFEFEEFFEFEFEEFFFFFFFFFFA8A8
+ A5FFE9E8E7FFFFFFFFFFCACAC9FFA4A4A2FFFFFFFFFFAFAFADFFADADABFFFFFF
+ FFFFECECEBFFEDEDECFFEDEDECFFECECEBFFEBEBEAFFEBEBEAFFFFFFFFFFA8A8
+ A5FFE4E4E3FFFFFFFFFFA4A4A2FFFFFFFFFFE9E9E9FFB0B0AEACADADABFFFFFF
+ FFFFE9E8E8FFEAE8E9FFE9E8E8FFF3F2F2FFFFFFFFFFFFFFFFFFFFFFFFFFA9A9
+ A6FFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9FFAFAFADA700000000AEAEABFFFFFF
+ FFFFE5E4E3FFE6E5E4FFE5E4E3FFFFFFFFFFCACAC9FFA4A4A2FFFFFFFFFFADAD
+ AAFFAFAFADFFAEAEACFFAFAFADFFB0B0AEAC0000000000000000AEAEACFFFFFF
+ FFFFE0E0DFFFE0E0DFFFE0E0DFFFFFFFFFFFA4A4A2FFFFFFFFFFE9E9E9FFB0B0
+ AEA4000000000000000000000000000000000000000000000000AFAFADFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9FFAFAFADA70000
+ 0000000000000000000000000000000000000000000000000000B3B3B1EFB0B0
+ ADFFAEAEACFFAEAEABFFADADABFFAEAEABFFAFAFADFFB0B0AED5000000000000
+ 0000000000000000000000000000000000000000000000000000
+ }
end
object MenuItem16: TMenuItem
Action = actCut
+ Bitmap.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
+ FF00000000000000000000000033000000330000001400000000000000000000
+ 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF000000000000000000B97B3DFFB0773FFF8458318400000000000000000000
+ 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF000000000000000000C1803CFF00000000B2773FFF00000000000000000000
+ 000000000000000000210000003300000023FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF000000000000000000C9843AFF00000010B97B3DFF00000000000000000000
+ 00000000002DA9713AB0B0773FFF9F6C3BBEFFFFFF00FFFFFF00FFFFFF00FFFF
+ FF000000000000000000CF8639E08D5C2871C07F3CFF00000000000000000000
+ 0023B97B3AE5BA7B3DAF00000016B0753FF6FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF000000000000000000D3893726D08736FFC98235FF0000001300000021B677
+ 36BDBF7E3AEB0000002B9361308BB6793EE3FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF0000000000000000000000000000000000B3906DFF7171717DBE792DB5CC85
+ 38FFC7833BE6C2803BD7BE7E3CFF00000000FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF0000000000000000000000000000000021AB8968FF9E958EFFE09B4DFF0000
+ 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00000000000000000000000022989BA1B6D37C1DFFB98B5EFF000000000000
+ 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00000000000000002F9C9B9BB9ECEDEFFFBDB4A8FFCACCD0FF000000000000
+ 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF000000001BAAA8A5EDEBEBEBFFD2D1D1D3C4C3C3FFC7C6C6FF000000000000
+ 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF009694949DEBEAEBFFD7D5D4E300000000CDCBCAFFC8C7C5FF000000000000
+ 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00D4D4D3FFDAD9D8EB0000000000000000D4D2D1FFBDBBBAFF000000000000
+ 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00B9B7B5D3000000000000000000000000D9D7D6FFC2C2C0FF000000000000
+ 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF0000000000000000000000000000000000D3D1D1FFAFADABEA000000000000
+ 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF0000000000000000000000000000000000BAB8B6FC00000000000000000000
+ 000000000000000000000000000000000000FFFFFF00FFFFFF00
+ }
end
object MenuItem17: TMenuItem
Action = actPaste
+ Bitmap.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000000000000000
+ 0000000000000000000000000000000000000000002E00000033000000330000
+ 0033000000330000003300000033000000330000003300000030000000230000
+ 003300000033000000330000003300000033BBB7B0ECB1B0AEFFAEAEABFFADAD
+ ABFFADADABFFADADABFFADADABFFAEAEABFFAFAFADFFB1B1AFF23B6088C04068
+ 93FF3F6893FF406893FF3E6793FF335F8FFFBBB7B0FFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0B0ADFF3F6A94FF568A
+ B0FF4C82ABFF4D82ABFF4B81ABFF417BA8FFB9B4ADFFFFFFFFFFFDFDFDFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFEFEFEFFFCFCFCFFFFFFFFFFAEAEABFF3F6A95FF6594
+ BBFF4C83AEFF4E83AEFF4C82AEFF427DACFFB8B3ACFFFFFFFFFFFBFBFAFF8181
+ 81FFB5B5B6FFB4B4B4FFB1B1B1FFF9F9F8FFFFFFFFFFADADABFF3F6B95FF74A1
+ C3FF4F86B1FF5187B2FF4F86B2FF4581B0FFB8B2ABFFFFFFFFFFF6F6F5FFFBFB
+ FAFFFBFBFAFFF9F9F8FFF7F7F6FFF4F4F3FFFFFFFFFFADADABFF3F6B97FF82AB
+ CCFF5088B5FF528AB6FF5189B6FF4784B5FFB8B2ABFFFFFFFFFFF3F2F2FF8484
+ 84FFB2B2B3FFF5F4F4FFAEAEAEFFF1F0F0FFFFFFFFFFADADABFF3E6C97FF91B6
+ D5FF528BBAFF558CBBFF548CBBFF4B88BBFFB8B2ABFFFFFFFFFFEEEDEDFFF3F2
+ F2FFF3F2F2FFF1F0F0FFF0EFEFFFEDEBEBFFFFFFFFFFADADABFF3E6D97FF9FC1
+ DDFF538EBDFF5791BFFF5691BFFF4D8CBFFFB7B1AAFFFFFFFFFFE9E9E8FF8585
+ 85FFB2B1B1FFB0AFAFFFAEADADFFE8E8E6FFFFFFFFFFAEAEABFF3E6E99FFACCA
+ E4FF5691C1FF5A93C3FF5993C3FF508FC3FFB8B2AAFFFFFFFFFFE3E2E0FFE6E5
+ E4FFE7E5E4FFE6E5E4FFE4E3E2FFE2E1E0FFFFFFFFFFAEAEACFF3E6F9AFFB9D5
+ EAFF5794C7FF5B97C8FF5B98C9FF5395CAFFBAB3ABFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFADFF3D709AFFC6DE
+ F0FF5797CCFF5A9ACFFF589AD1FF5398D2FF92AABEFFB5B2ADFFB2AFAAFFB2AE
+ A9FFB3B0ABFFB1AFACFFAFAEACFFAEAEACFFB0B0ADFFB3B3B1B03E729DFFD4E7
+ F7FF569BD3FFADA096FFAA9F98FFA79E98FFA49E99FFA59D97FF4E98D5FFCCE4
+ F8FF2F6A9AFFC0BAB300B8B7B300B5B4B200B4B4B200B5B5B30042759FFFAFD2
+ F2FFA9D0F3FF978E87FFCECAC8FFCBC8C6FFCDCAC8FF968D87FFA8D0F4FFADD1
+ F2FF3D739EFF3972A100C3BCB500B9B7B400B5B5B300B5B5B300477AA3B04378
+ A2FF3D77A4FF888079FFB9B6B6FFB7B5B5FFB9B6B6FF888079FF3D77A4FF4378
+ A2FF4779A3B04479A4003973A300BEBAB400B7B5B300B5B5B3004A7CA500487C
+ A600427BA9008D847D00807F7EFF7E7E7EFF807F7EFF8D847D00427BA900487C
+ A6004A7CA500487BA5003E76A300C0BBB500B7B6B300B5B5B300
+ }
end
object MenuItem18: TMenuItem
Caption = '-'
end
object MenuItem19: TMenuItem
Action = actUndo
+ Bitmap.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000000000000000
+ 0000000000000000003300000027000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000008F4F00008F
+ 4E0000000033008C4BFF008548CD008F4F00008F4F00008F4F00008F4F00008F
+ 4F00FFFFFF00008F4F00008F4F00008F4F00008F4F00008F4F00008F4E000000
+ 0033008745FF54D9B0FF008847FF000000330000003300000033000000330000
+ 0033000000330000003300000022FFFFFF00008F4F00008F4F00000000330087
+ 44FF65D7B3FF00D9A0FF00C384FF008544FF008746FF008847FF008847FF0088
+ 47FF008847FF008948FF007E43B900000033008F4F00008F4F00008A48FF74DB
+ BDFF00D09CFF00CE9AFF00D59CFF00D89FFF00D9A0FF00D9A0FF00D9A0FF00D9
+ A0FF00D9A1FF00D79CFF00B174FF008947FF00000033008F4F00008A48FF86E0
+ C8FF00CB9BFF00C999FF5FE3C3FF5CE5C6FF5CE6C7FF5CE6C8FF5CE6C7FF5BE5
+ C6FF5BE4C5FF29D8AFFF00D09FFF00C593FF008A47FF0000001EFFFFFF000087
+ 43FF9BE3D0FF00C69EFF00C28FFF008441FF008744FF008744FF008744FF0086
+ 42FF29AA78FF60D6BCFF0DC8A6FF00C5A1FF00A876FF007C42A9008E4E00008C
+ 4A00008743FFA4E6D9FF008845FF008C4B00008D4D00008E4D00008D4D00008D
+ 4C08008A48670E9256FF40CAAAFF00C6A0FF00C19AFF008948F9008F4F00008E
+ 4E00008D4C00008B49FF008D4CC0008F4E00008F4F00008F4F00008F4F00008F
+ 4F00008E4D0000874768009D61FF00CDA1FF00CFA4FF008947FF008F4F00008F
+ 4F00008F4F00008F4E02008F4F03008F4F00008F4F00008F4F00008F4F00008F
+ 4F00008F4F00004F2B29009656FF00D4A1FF00D6A3FF008947FF008F4F00008F
+ 4F00008F4F00008F4F00008F4F00008F4F00008F4F00008F4F00008F4F00008F
+ 4F0000000010006A398500A061FF00D8A0FF00DAA3FF008847FF008F4F000000
+ 0023000000330000003300000033000000330000003300000033000000330000
+ 003300613474008D4BFF00CB90FF00D99FFF00D197FF008848F8008F4F000081
+ 46C0008A49FF008846FF008846FF008846FF008846FF008846FF008846FF0087
+ 44FF009F60FF00C78FFF00D59DFF20DEADFF2FBD8BFF008B4A95008E4E00008A
+ 49FF14DFB0FF11DAABFF11DAAAFF11DAAAFF11DAAAFF11DAAAFF11DAAAFF11D9
+ A9FF10D4A9FF1DD5ABFF52E1C2FF3AD1ABFF008846FF008D4D00008E4E00008A
+ 47FF66E2D0FF62DDCAFF62DDC8FF62DDC8FF62DDC8FF62DDC8FF62DDC8FF62DD
+ C9FF61E0CAFF62DEC8FF3ABA91FF008845FFFFFFFF00008F4F00008F4E00008C
+ 4AB000965DFF00935AFF009359FF009359FF009359FF009359FF009359FF0094
+ 5AFF008743FF008945FF008A49A8FFFFFF00008F4E00008F4F00
+ }
end
object MenuItem20: TMenuItem
Action = actRedo
+ Bitmap.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000000000000000
+ 0000000000000000002200000033000000330000003300000033000000330000
+ 0033000000330000003300000033000000330000003000000000008F4F00008F
+ 4F0000000033007E43BB008948FF008847FF008847FF008847FF008847FF0088
+ 47FF008847FF008847FF008847FF008A49FF008B4CF2008F4F00008F4F000000
+ 0033008947FF00B174FF00D79CFF00DCA1FF00DCA0FF00DCA0FF00DCA0FF00DC
+ A0FF00DCA0FF00DCA0FF00DCA1FF00E1A7FF008A49FF008E4E000000001E008A
+ 47FF00C593FF00D09FFF29D8AFFF5BE3C5FF5BE4C6FF5CE5C7FF5CE5C8FF5CE5
+ C8FF5CE5C8FF5CE5C8FF5CE6C9FF60EACEFF008A48FF008E4E00007C42AA00A8
+ 76FF00C5A1FF0DC8A6FF60D6BCFF29AA78FF008642FF008744FF008744FF0087
+ 44FF008744FF008744FF008745FF008947FF008D4CB0008F4F00008948F900C1
+ 9AFF00C6A0FF40CAAAFF0E9256FF008A4867008D4C08008D4D00008E4D00008E
+ 4D00008E4D00008E4D00008E4D00008E4E00008F4F00008F4F00008947FF00CF
+ A4FF00CDA1FF009D61FF00864654008E4D00008F4F00008F4F00008F4F00008F
+ 4F00008F4F00008F4F00008F4F00008F4F00008F4F00008F4F00008947FF00D6
+ A3FF00D4A1FF009656FF004F2B29008F4F00008F4F00008F4F00008F4F00008F
+ 4F00008F4F000000002300000033008F4F00008F4F00008F4F00008847FF00DA
+ A3FF00D8A0FF00A061FF006A3985000000100000000A008F4F00008F4F00008F
+ 4F00008F4F00008147C1008C4BFF00000033008F4E00008F4F00008848F800D1
+ 97FF00D99FFF00CB90FF008D4BFF00613474004E2B5C00000033000000330000
+ 003300000033008947FF54D9B0FF008846FF00000033008F4E00008B4A962FBD
+ 8BFF20DEADFF00D59DFF00C78FFF009F60FF008744FF008846FF008846FF0088
+ 46FF008643FF00BA7EFF00D8A0FF65D7B3FF008744FF00000033008D4D000088
+ 46FF3AD1ABFF52E1C2FF1DD5ABFF10D4A8FF11D5AAFF11D6ABFF11D6ABFF11D6
+ ABFF11D5A9FF13D3A8FF00CC9BFF00CE9DFF74DBBFFF008A48FF008F4F00008C
+ 4C00008845FF3ABA91FF62DEC8FF61E0CAFF62E0CAFF62E0CAFF62E0CAFF62E0
+ CAFF62E0C9FF65DEC7FF00C59AFF00C69CFF86DEC8FF008A48FF008F4F00008F
+ 4E00008D4C00008A49AA008946FF008844FF008744FF008744FF008744FF0087
+ 44FF008641FF00AB7DFF00BF9EFF9BDFD0FF008743FF008D4B00008F4F00008F
+ 4F00008F4F00008E4E00008E4D00008E4D00008E4D00008E4D00008E4D00008E
+ 4D00008D4B00008945FFA4E4D9FF008743FF008C4A00008F4E00008F4F00008F
+ 4F00008F4F00008F4F00008F4F00008F4F00008F4F00008F4F00008F4F00008F
+ 4F00008F4E00008D4CB1008C49FF008D4C00008F4E00008F4F00
+ }
end
object MenuItem21: TMenuItem
Caption = '-'
end
object MenuItem22: TMenuItem
Action = actMacStartStop
+ Bitmap.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00000000000000001E00000033000000330000
+ 00330000001E00000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF000000001E2F44B4AC344BCBFF334ACAFF344B
+ CBFF2F44B4AC0000001EFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF002F44B4AC425AD9FF6F88FFFF738CFFFF6F88
+ FFFF425AD9FF2F44B4ACFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00354BCBFF5F7CFFFF607CFFFF5F7BFDFF607C
+ FFFF5F7CFFFF354BCBFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00334ACBFF6D88FFFF4D6DFBFF4D6DFAFF4D6D
+ FBFF6D88FFFF334ACBFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00334ACCFF90A5FDFF5A79FAFF5573F9FF5A79
+ FAFF90A5FDFF334ACCFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00354CCD97455DDBFF90A6FCFF95ACFFFF90A6
+ FCFF445DDBFF354CCD97FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF0000000000354CCD973249CCFF3148CBFF3249
+ CCFF354CCD9700000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
+ }
end
object MenuItem23: TMenuItem
Action = actMacPlay
+ Bitmap.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00A8A8A8349C9C9C80979797C0969696ED929292ED9090
+ 90C08E8E8E8092929234FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00AFAFAF67AAAAAAD5CECECEFFE6E6E6FFF5F5F5FFF2F2F2FFDDDD
+ DDFFC0C0C0FF939393D590909067FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00BCBCBC67B9B9B9F1ECECECFFFEFEFEFFF3F3F3FFE8E8E8FFE7E7E7FFF1F1
+ F1FFFBFBFBFFE1E1E1FF999999F193939367FFFFFF00FFFFFF00FFFFFF00C7C7
+ C734C4C4C4D5F0F0F0FFFFFFFFFFE5E5E5FFE5E5E5FFEFEFEFFFE3E3E3FFE2E2
+ E2FFE1E1E1FFFEFEFEFFE2E2E2FF999999D599999934FFFFFF00FFFFFF00CECE
+ CE80E4E4E4FFFEFEFEFFE8E8E8FFE7E7E7FFE6E6E6FF737373FFEFEFEFFFE4E4
+ E4FFE3E3E3FFE2E2E2FFFBFBFBFFC6C6C6FF99999980FFFFFF00FFFFFF00D1D1
+ D1C0F2F2F2FFF5F5F5FFE9E9E9FFE9E9E9FFE8E8E8FF787878FF747373FFEFEF
+ EFFFE5E5E5FFE4E4E4FFF2F2F2FFE1E1E1FF9D9D9DC0FFFFFF00FFFFFF00D3D3
+ D3EDFCFCFCFFEFEFEFFFEBEBEBFFEAEAEAFFE9E9E9FF757575FF797878FF7473
+ 73FFEFEFEFFFE5E5E5FFE8E8E8FFF4F4F4FFA2A2A2EDFFFFFF00FFFFFF00D4D4
+ D4EDFCFCFCFFF0F0F0FFEDEDEDFFEBEBEBFFEAEAEAFF757575FF757575FF7A79
+ 79FFCDCDCDFFE6E6E6FFE9E9E9FFFAFAFAFFA7A7A7EDFFFFFF00FFFFFF00D6D6
+ D6C0F5F5F5FFF7F7F7FFEDEDEDFFEDEDEDFFECECECFF767575FF767575FFC0C0
+ C0FFE9E9E9FFE8E8E8FFF4F4F4FFEEEEEEFFABABABC0FFFFFF00FFFFFF00D7D7
+ D780EBEBEBFFFFFFFFFFEFEFEFFFEEEEEEFFEDEDEDFF777676FFC2C2C2FFEBEB
+ EBFFE9E9E9FFE9E9E9FFFFFFFFFFDDDDDDFFB3B3B380FFFFFF00FFFFFF00D9D9
+ D934D8D8D8D5F8F8F8FFFFFFFFFFEFEFEFFFEEEEEEFFC3C3C3FFEDEDEDFFECEC
+ ECFFEBEBEBFFFFFFFFFFF5F5F5FFC0C0C0D5BEBEBE34FFFFFF00FFFFFF00FFFF
+ FF00D9D9D967D8D8D8F1F8F8F8FFFFFFFFFFF8F8F8FFF2F2F2FFF1F1F1FFF7F7
+ F7FFFFFFFFFFF5F5F5FFC9C9C9F1C7C7C767FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00D9D9D967D8D8D8D5EBEBEBFFF5F5F5FFFCFCFCFFFCFCFCFFF4F4
+ F4FFE8E8E8FFCECECED5CCCCCC67FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00D9D9D934D8D8D880D7D7D7C0D6D6D6EDD5D5D5EDD3D3
+ D3C0D2D2D280D0D0D034FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
+ }
end
end
object MenuItem14: TMenuItem
Caption = 'Project'
object MenuItem31: TMenuItem
Action = actNewProj
+ Bitmap.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000FFFFFF000000
+ 0000000000330000000000000033000000000000003300000000000000330000
+ 000000000033000000000000003300000000FFFFFF00FFFFFF00FFFFFF000000
+ 003389898AFF0000003389898AFF0000003389898AFF0000003389898AFF0000
+ 003389898AFF0000003389898AFF00000033FFFFFF00FFFFFF00FFFFFF008989
+ 8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFF89898AFFFFFFFF00FFFFFF00FFFFFF000000
+ 0033FFFFFFFFFDFDFDFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFC
+ FCFFFCFCFCFFFDFDFDFFFFFFFFFF00000033FFFFFF00FFFFFF00FFFFFF008989
+ 8AFFFFFFFFFFFAF9F9FFF9F8F8FFF9F8F8FFF9F8F8FFF9F8F8FFF9F8F8FFF9F8
+ F8FFF9F8F8FFFAF9F9FFFFFFFFFF89898AFFFFFFFF00FFFFFF00FFFFFF000000
+ 0033FFFFFFFFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6
+ F6FFF6F6F6FFF6F6F6FFFFFFFFFF00000033FFFFFF00FFFFFF00FFFFFF008989
+ 8AFFFFFFFFFFF4F4F3FFF4F4F3FFF4F4F3FFF4F4F3FFF4F4F3FFF4F4F3FFF4F4
+ F3FFF4F4F3FFF4F4F3FFFFFFFFFF89898AFFFFFFFF00FFFFFF00FFFFFF000000
+ 0033FFFFFFFFF2F1F0FFF2F1F0FFF2F1F0FFF2F1F0FFF2F1F0FFF2F1F0FFF2F1
+ F0FFF2F1F0FFF2F1F0FFFFFFFFFF00000033FFFFFF00FFFFFF00FFFFFF008989
+ 8AFFFFFFFFFFEFEFEEFFEFEFEEFFEFEFEEFFEFEFEEFFEFEFEEFFEFEFEEFFEFEF
+ EEFFEEEEEDFFEEEFEEFFFFFFFFFF89898AFFFFFFFF00FFFFFF00FFFFFF000000
+ 0033FFFFFFFFEDEBEAFFEDECEBFFEDECEBFFEDECEBFFEDECEBFFECEBEAFFECEB
+ E9FFEBEAE9FFECEAE9FFFFFFFFFF00000033FFFFFF00FFFFFF00FFFFFF008989
+ 8AFFFFFFFFFFE9E9E8FFEAEAE9FFEAEAE9FFEAEAE9FFE9E9E8FFF4F4F2FFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFF89898AFFFFFFFF00FFFFFF00FFFFFF000000
+ 0033FFFFFFFFE7E6E5FFE8E7E6FFE8E7E6FFE8E7E6FFE6E5E4FFFFFFFFFF9191
+ 91FFFFFFFFFF929292FFFFFFFFFF00000033FFFFFF00FFFFFF00FFFFFF008989
+ 8AFFFFFFFFFFE3E3E2FFE4E4E3FFE4E5E4FFE4E4E3FFE3E3E2FFFFFFFFFFFFFF
+ FFFFE6E6E4FFFFFFFFFFE0E0E0AB89898AFFFFFFFF00FFFFFF00FFFFFF000000
+ 0033FFFFFFFFE0DFDDFFE0DFDEFFE0DFDEFFE0DFDEFFDFDEDCFFFFFFFFFF9191
+ 91FFFFFFFFFFDDDDDDA789898AFF00000000FFFFFF00FFFFFF00FFFFFF008989
+ 8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFE0E0E0AB89898AFF0000000000000000FFFFFF00FFFFFF00FFFFFF00A5A5
+ A53889898AFF0000000089898AFF0000000089898AFF0000000089898AFF0000
+ 000089898AFF000000000000000000000000FFFFFF00FFFFFF00
+ }
end
object MenuItem30: TMenuItem
Action = actOpenProj
+ Bitmap.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000FFFFFF000000
+ 00000000000000000000000000000000001200000025000000330000002E0000
+ 00000000000000000000000000000000000000000000FFFFFF00FFFFFF000000
+ 0000000000120000002500000033326E987A3E8BC1C84195D1FF3892D1ED0000
+ 00330000003300000033000000330000003300000023FFFFFF00FFFFFF000000
+ 002F326F997C3D8AC1C74092CEFF54ADDEFF66C4EDFF78E0FEFF3591D1FFBBB2
+ AAFFB0AEABFFADADABFFAEAEABFFAFAFADFFA4A4A2C0FFFFFF00FFFFFF004295
+ CEEF58B0DFFF6DC9EFFF7FE2FDFF7EE3FEFF7ADEFCFF7EE1FFFF308CCDFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0B0ADFFFFFFFF00FFFFFF004094
+ CFFF92F1FFFF85E7FFFF80E1FDFF7ADEFBFF77DBFBFF83E1FFFF308ACBFFFFFF
+ FBFFFFFFFDFFFCFCFCFFFCFCFCFFFFFFFFFFAEAEABFFFFFFFF00FFFFFF003E92
+ CEFF9AF0FFFF83E4FDFF7EDFFCFF7ADDFBFF76DAFAFF89E2FEFF48A8DDFF70AE
+ D9FFFFFCF8FFF9F6F6FFF7F6F6FFFFFFFFFFADADABFFFFFFFF00FFFFFF003E92
+ CEFFA3F1FFFF82E3FCFF7EDFFCFF7ADDFBFF76DAFAFF71D9FBFF9DE8FFFF2A89
+ CBFFFFFBF6FFF6F4F3FFF4F3F3FFFFFFFFFFADADABFFFFFFFF00FFFFFF003D92
+ CEFFADF3FFFF81E3FCFF7EDFFCFF7ADDFBFF76DAFAFF6FD8FAFFABEBFFFF2B89
+ CCFFFFF8F1FFF2F1EFFFEFF0EEFFFFFFFFFFADADABFFFFFFFF00FFFFFF003C92
+ CEFFB6F6FFFF80E3FCFF7DDFFCFF7ADDFBFF76DAFAFF6ED7FAFFB9EFFFFF2A89
+ CCFFFCF2EDFFEEECEBFFEBEAEAFFFFFFFFFFADADABFFFFFFFF00FFFFFF003C91
+ CEFFC0F8FFFF7FE2FCFF7DDFFCFF7ADDFBFF75DAFAFF6DD7FAFFC6F3FFFF2989
+ CBFFFFF9F4FFFFFFFFFFFFFFFFFFFFFFFFFFAEAEABFFFFFFFF00FFFFFF003B91
+ CEFFC9F9FFFF7EE2FCFF7CDEFCFF78DCFBFF72D9FAFF6AD6FAFFD2F6FFFF2888
+ CBFFFFFFFFFFCDCBC9FFA4A4A2FFFFFFFFFFAFAFADFFFFFFFF00FFFFFF003A91
+ CEFFD2FCFFFF7AE2FCFF77DDFCFF7FDFFBFF9BE6FDFFB3EDFFFFD4F9FFFF2688
+ CBFFFFFFFFFFA7A5A2FFFFFFFFFFE9E9E9FFB0B0AEACFFFFFF00FFFFFF003991
+ CFFFE9FFFFFFAFF0FFFFCEF7FFFFDAFAFFFFC4ECFCFF8CCAECFF5FAEE0FF82BD
+ E6FFFFFFFFFFFFFFFFFFE9E9E9FFAFAFADA700000000FFFFFF00FFFFFF003C93
+ D0FFE9FFFFFFA8DAF3FF7BBDE4FF4398D2FF408EC7FF6E9CBCFF90A5B2FFBAAF
+ A6FFB5ADA6FFB5AFA9FFB5B1ADA40000000000000000FFFFFF00FFFFFF004297
+ D2FF3B93D0FF62ADDCFF93CDEDFFBBE7FAFFD8FCFFFFD6FCFFFFD3FBFFFFD1FB
+ FFFFD3FCFFFF2E91D5FF000000000000000000000000FFFFFF00FFFFFF00459A
+ D3EF4498D2FF4197D1FF3F95D1FF3D94D0FF3B93D0FF3A92D0FF3A92D0FF3A93
+ D0FF3C94D1FF3E97D3EE000000000000000000000000FFFFFF00
+ }
end
object MenuItem29: TMenuItem
Caption = '-'
end
object MenuItem27: TMenuItem
Action = actSaveProj
+ Bitmap.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000000000000000
+ 0033000000330000003300000033000000330000003300000033000000330000
+ 0033000000330000003300000033000000330000003300000030AA7C29C0B681
+ 24FFB57F20FFB47F1FFFB57F20FFB68226FFB8831FFFB78216FFB68114FFB880
+ 10FFB9810FFFB87F0EFFB67E0FFFB68013FFB78218FFB7831CF2B68124FFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB37A09FFF5CB89FFF3C275FFF9FC
+ FFFF8B8D91FFF9F9F9FFF4F8FCFFF2C174FFF6CD8BFFB78218FFB57F20FFFFFF
+ FFFFE6D6AEFFE6D7B0FFE8D9B3FFEBDFC0FFB17805FFF2CA88FFEBB65CFFF2ED
+ EDFF7F7978FFF1E9E2FFEEE9E9FFEAB55BFFF3CC8BFFB68116FFB47E1FFFFFFF
+ FFFFE6D6AFFFE7D7B2FFE8DAB5FFEBE0C2FFB17805FFF2CD91FFE6AD4FFFEACF
+ A9FFFFFFFFFFFDFFFFFFE8CEA7FFE6AD4EFFF3CE93FFB68115FFB47E1EFFFFFF
+ FFFFE6D5ADFFE6D6AFFFE7D8B3FFEBDFC0FFB17703FFF4D39CFFE4A641FFE3A4
+ 3AFFE3A133FFE2A132FFE3A43AFFE3A641FFF4D49EFFB68114FFB47E1EFFFFFF
+ FFFFF8F4E7FFF8F4E8FFF9F6EBFFFCFDFAFFB07601FFF5D7A9FFE19E2FFFE7CA
+ A1FFEBE2E0FFEBE2E0FFE7CAA1FFE19E2FFFF6D9ADFFB68014FFB47E1EFFFFFF
+ FFFFF4EDDDFFF4EDDDFFF5EFE1FFF9F7F0FFB07500FFF7E0B9FFDD9419FFEEE9
+ E9FFEFE6DEFFEFE6DEFFEEE9E9FFDD9419FFF8E2BCFFB68012FFB47E1EFFFFFF
+ FFFFF3EAD6FFF3EAD7FFF4ECDAFFF8F3E8FFB07500FFFAE9CEFFDA8802FFF0EE
+ ECFFB2ADA7FFB2ADA7FFF0EEECFFDA8802FFFBEAD1FFB67F12FFB47E1EFFFFFF
+ FFFFF1E6CEFFF1E7CFFFF2E8D3FFF6EFDFFFB07400FFFDE8C7FFFBE6C2FFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE6C4FFFFECCEFFB78114FFB47E1EFFFFFF
+ FFFFEEE3C8FFEFE4C9FFEFE5CCFFF2E9D3FFC9A14FFFB07500FFB27803FFB379
+ 04FFB37801FFB27600FFB37A05FFB57E0EFFB78114FFB9851BEFB47E1EFFFFFF
+ FFFFECE0C1FFEDE1C3FFEDE1C5FFEEE3C7FFEFE5CBFFFFFFFFFFD5B683FFB37D
+ 1DFFB27A19FFFFFFFFFFB68227FFB9841800BA861C00BB871E00B47E1EFFFFFF
+ FFFFEADCB9FFEADDBCFFEBDDBDFFEADDBCFFEADCBBFFFFFFFFFFAE740EFFFEFE
+ FAFFFFFFFFFFECDDC5FFB78429AABA8A3500BB871D00BB871F00B57F1FFFFFFF
+ FFFFE7D8B1FFE7D8B2FFE7D9B3FFE7D8B2FFE7D8B0FFFFFFFFFFAC7107FFFFFF
+ FFFFEADABFFFB57F20A7B9872E00BB8A3500BB871D00BB871F00B68124FFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBDC
+ C3FFB57F20A6B9872D00BB893200BB8A3500BB871D00BB871F00B9872DEFB681
+ 24FFB57F1FFFB47E1EFFB47E1EFFB47E1EFFB47E1EFFB47F1FFFB58022FFB783
+ 27EAB9872E00BB893200BB8A3300BB8A3500BB871D00BB871F00
+ }
end
object MenuItem28: TMenuItem
Action = actSaveProjAs
+ Bitmap.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000002C0000
+ 0033000000330000003300000033000000330000003300000033000000330000
+ 00330000003300000033000000330000002C0000000000000000B3811AE1B781
+ 14FFB57E10FFB57D0CFFB67C0BFFB67C0AFFB57C0AFFB67D0AFFB77D0BFFB77E
+ 0BFFB77E0CFFB67F10FFB78114FFB3811AE1BB871E00BB871F00B78115FFFEE9
+ C7FFFBE4BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFE7BCFFFFEAC6FFB78115FFBB861D00BB871F00B67F12FFFBE9
+ CFFFD88500FFFFFFFFFF797B7FFFA2A4A5FFFFFCF3FF828180FF425C72FF385A
+ 80FF3784DDFFEB8D00FFFFECCCFFB78011FFBB861C00BC871D00B67F12FFFAE4
+ C1FFDB8D0AFFFEFFFFFFFDF7EBFFFFF8EAFFFFF7E9FFFFFDEBFF507C9CFF7BA3
+ B5FF86D2FFFF1F60A2FFFFEBB6FFBE830DFFC0871600C2891600B68013FFF7DE
+ B5FFDC9317FFFFFFFFFF787879FF7A7979FFA4A2A1FFABA39FFF3AABF2FFA1ED
+ FFFF9ADEFEFF0998FFFF2366A9FFCA8604FF0000000971747E00B68014FFF5D9
+ AAFFDF9822FFFFFFFFFFF1E6D9FFF2E6D9FFF2E6D7FFF6E6D6FFCED9DBFF1D6F
+ C5FF39C4FFFF1DABFFFF7EA3C4FF7C7878FF3B3B3A5674767000B68114FFF4D4
+ A2FFE29F31FFE9E1E2FFFEFFFFFFFEFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFF1B74D0FFACDBF4FF928782FFC1C0BAFF797B71FF00000033B68115FFF3D1
+ 99FFE3A740FFE2A336FFE19F2EFFE19E2BFFE19E2BFFE29F2CFFE3A02CFFE8A3
+ 2DFFF1A830FF817F83FFE9E9E8FF898B83FFAC7BA7FF9969CBFFB68115FFF3CE
+ 93FFE5AB48FFEED7B6FFF5F3F7FFF5F1F4FFF7F3F6FFFBF8FAFFFCF8FAFFF9F6
+ F9FFF2D9B4FFEEAE40FF7A8185FFE0B1E4FFCB96C7FFAE7DCEFFB68116FFF3CB
+ 8CFFE7AE4EFFF5F4F8FFF0E9E4FFF1E9E2FFF8EFE8FF8A847FFF88817EFFF8F0
+ EBFFF7F5F9FFEAAF4BFFF6CD7DFFBC87E4FFBE8ADAFFAC7BCF00B68116FFF1C8
+ 87FFE8B258FFF6F5F7FFEEE2D9FFEFE3D9FFFFFAF5FF5C5752FF48423FFFFFFB
+ F7FFF7F6F8FFE9B257FFF2C880FFB68100FFBE8AEC00AB7BDF00B68116FFF2CA
+ 85FFEBB962FFF8F8FBFFE9DCD1FFEBDDD1FFFFFFFCFF958B83FF4A443FFFFFFF
+ FFFFFAF9FCFFEBB962FFF2CA83FFB6810FFFBB860F00BC880D00B78218FFF6CC
+ 89FFF2C274FFFFFFFFFFFEFDFCFFFFFEFCFFFFFEF9FF93887EFF4A433DFFFFFF
+ FFFFFFFFFFFFF2C274FFF6CC89FFB78217FFBB861C00BB871C00B9851CC5B781
+ 16FFB37A06FFD6CFD1FFD4C9C3FFD4C9C1FFD8CCC5FFE3D7D02B4A433D00DFD4
+ CEFFD8D1D2FFB37A06FFB78116FFB9851CC5BB871F00BB871F00
+ }
+ end
+ object MenuItem32: TMenuItem
+ Caption = '-'
+ end
+ object MenuItem41: TMenuItem
+ Action = actProjOpts
+ end
+ object MenuItem40: TMenuItem
+ Caption = '-'
+ end
+ object MenuItem33: TMenuItem
+ Action = actCompileProj
+ end
+ object MenuItem34: TMenuItem
+ Action = actCompileAndRunProj
+ end
+ object MenuItem35: TMenuItem
+ Action = actCompAndRunProjWithArgs
end
end
object MenuItem8: TMenuItem
Caption = 'Run'
object MenuItem9: TMenuItem
Action = actCompAndRunFile
+ Bitmap.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 001F000000080000003300000033000000040000002400000000000000000000
+ 0000000000000000000000000000000000330000003300000033000000332D73
+ BAAF1B3D60523F93D4FF3F93D4FF102438413578BAC300000024000000000000
+ 0000000000230000002F00000000B88445FFC89451FFCE934AFF6D8192FF40A9
+ EAFF429EDDFF52D0F8FF52D0F8FF439EDCFF48AAE2FF3980C8B6000000000000
+ 0023AA7A3EBFB68243ED00000033B58142FFF5C378FFFCC371FFAD7E49FF3B9E
+ E3FF4ECFFBFF41B0EDFF42B1EDFF50CFFAFF439EDCFF1B3D5F5200000000AA7A
+ 3FBED2A76FFFD7A561FFB88241FFD39F58FFEDB96BFFF7B962FF288DE3FF4CCF
+ FCFF40B0EDFFC39F7BFF987653CB42B1EEFF52D0F9FF3F92D5FF00000000B984
+ 43E9DDBB8CFFEEC486FFE8B466FFF1CC96FFF7DCB5FFFFDEADFF288CDFFF4CCE
+ FBFF3FAFEDFFFAB66DFFC7751FCE41B1EFFF52D0F9FF3F92D5FF000000330000
+ 0033B78242FFE4B163FFEBC68EFFEACFA9FFD1A774FFD9A970FFCCBBA4FF399C
+ E1FF4CCEFBFF3FB0EEFF40B1EFFF4FCFFCFF429EDCFF16324E31B98545FFB782
+ 42FFC8934EFFDFAB5EFFE4C494FFB68245DAB8813F3CBE823B2561809CFF37A8
+ EFFF399DE3FF4CCFFDFF4AC7F8FF3D9EE1FF45AAE4FF3982CB9FC38F4EFFE2B5
+ 72FFDEB06AFFDBA658FFC59555FF926935300000000000000000AA7333436A83
+ 99FFCD9F5FFF298DE2FF2B8FE1FFB48B5AFF3081D29100000000C5995FFFF1DC
+ BBFFECD2ACFFD6A152FFC18C49FF70502A620000000C0000000C704F2861C88D
+ 44FFDFA24CFFEACEA6FFF1D7B2FFD79A51FF0000000000000000B98442FFB680
+ 3EFFCEA673FFDBAE6EFFCB954BFFB88344FF6E4F2A616E4F2A61B88344FFCD97
+ 4AFFDCAE6DFFD0A772FFB9813CFFBE843FFF0000000000000000000000000000
+ 002FBA8547FFCE9949FFDAB276FFC9944BFFBE8943FFBE8943FFC9944BFFDAB2
+ 76FFCE9949FFBA8546FF0000002F00000000000000000000000000000000B782
+ 42ECD3AE7CFFE7CBA4FFEAD4B2FFE8D0ADFFCF9D56FFCF9D56FFE8D0ADFFEAD4
+ B2FFE7CBA4FFD3AE7CFFB78242EC00000000000000000000000000000000B985
+ 44AFCCA26CFFD4B080FFB98343FFCCA470FFC9984EFFC9984EFFCCA470FFB983
+ 43FFD4B080FFCCA26CFFB98544AF000000000000000000000000000000000000
+ 0000B98544AFB98443E900000000B78140FFE9D4B4FFE9D4B4FFB78140FF0000
+ 0000B98443E9B98544AF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000BA8545FFB9843FFFB9843FFFBA8545FF0000
+ 0000000000000000000000000000000000000000000000000000
+ }
end
object MenuItem13: TMenuItem
Action = ActCompAndRunFileWithArgs
+ Bitmap.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 001F000000080000003300000033000000040000002400000000000000000000
+ 0000000000000000000000000000000000330000003300000033000000332D73
+ BAAF1B3D60523F93D4FF3F93D4FF102438413578BAC300000024000000000000
+ 0000000000230000002F00000000B88445FFC89451FFCE934AFF6D8192FF40A9
+ EAFF429EDDFF52D0F8FF52D0F8FF439EDCFF48AAE2FF3980C8B6000000000000
+ 0023AA7A3EBFB68243ED00000033B58142FFF5C378FFFCC371FFAD7E49FF3B9E
+ E3FF4ECFFBFF41B0EDFF42B1EDFF50CFFAFF439EDCFF1B3D5F5200000000AA7A
+ 3FBED2A76FFFD7A561FFB88241FFD39F58FFEDB96BFFF7B962FF288DE3FF4CCF
+ FCFF40B0EDFFC39F7BFF987653CB42B1EEFF52D0F9FF3F92D5FF00000000B984
+ 43E9DDBB8CFFEEC486FFE8B466FFF1CC96FFF7DCB5FFFFDEADFF288CDFFF4CCE
+ FBFF3FAFEDFFFAB66DFFC7751FCE41B1EFFF52D0F9FF3F92D5FF000000330000
+ 0033B78242FFE4B163FFEBC68EFFEACFA9FFD1A774FFD9A970FFCCBBA4FF399C
+ E1FF4CCEFBFF3FB0EEFF40B1EFFF4FCFFCFF429EDCFF16324E31B98545FFB782
+ 42FFC8934EFFDFAB5EFFE4C494FFB68245DAB8813F3CBE823B2561809CFF37A8
+ EFFF399DE3FF4CCFFDFF4AC7F8FF3D9EE1FF45AAE4FF3982CB9FC38F4EFFE2B5
+ 72FFDEB06AFFDBA658FFC59555FF926935300000000000000000AA7333436A83
+ 99FFCD9F5FFF298DE2FF2B8FE1FFB48B5AFF3081D29100000000C5995FFFF1DC
+ BBFFECD2ACFFD6A152FFC18C49FF70502A620000000C0000000C704F2861C88D
+ 44FFDFA24CFFEACEA6FFF1D7B2FFD79A51FF0000000000000000B98442FFB680
+ 3EFFCEA673FFDBAE6EFFCB954BFFB88344FF6E4F2A616E4F2A61B88344FFCD97
+ 4AFFDCAE6DFFD0A772FFB9813CFFBE843FFF0000000000000000000000000000
+ 002FBA8547FFCE9949FFDAB276FFC9944BFFBE8943FFBE8943FFC9944BFFDAB2
+ 76FFCE9949FFBA8546FF0000002F00000000000000000000000000000000B782
+ 42ECD3AE7CFFE7CBA4FFEAD4B2FFE8D0ADFFCF9D56FFCF9D56FFE8D0ADFFEAD4
+ B2FFE7CBA4FFD3AE7CFFB78242EC00000000000000000000000000000000B985
+ 44AFCCA26CFFD4B080FFB98343FFCCA470FFC9984EFFC9984EFFCCA470FFB983
+ 43FFD4B080FFCCA26CFFB98544AF000000000000000000000000000000000000
+ 0000B98544AFB98443E900000000B78140FFE9D4B4FFE9D4B4FFB78140FF0000
+ 0000B98443E9B98544AF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000BA8545FFB9843FFFB9843FFFBA8545FF0000
+ 0000000000000000000000000000000000000000000000000000
+ }
end
object MenuItem10: TMenuItem
Caption = '-'
@@ -97,27 +776,37 @@ object CEMainForm: TCEMainForm
Action = actCompileProj
end
object MenuItem12: TMenuItem
- Action = ActCompileAndRunProj
+ Action = actCompileAndRunProj
end
+ object MenuItem39: TMenuItem
+ Action = actCompAndRunProjWithArgs
+ end
+ end
+ object mnuItemWin: TMenuItem
+ Caption = 'Window'
end
end
object Actions: TActionList
+ Images = imgList
OnUpdate = ActionsUpdate
left = 32
object actSaveFile: TAction
Category = 'File'
Caption = 'Save file'
+ ImageIndex = 3
OnExecute = actSaveFileExecute
end
object actCopy: TAction
Category = 'Edit'
Caption = 'Copy'
+ ImageIndex = 4
OnExecute = actCopyExecute
ShortCut = 16451
end
object actSaveProj: TAction
Category = 'Project'
Caption = 'Save project'
+ ImageIndex = 3
OnExecute = actSaveProjExecute
end
object Action4: TAction
@@ -127,74 +816,87 @@ object CEMainForm: TCEMainForm
object actSaveFileAs: TAction
Category = 'File'
Caption = 'Save file as...'
+ ImageIndex = 2
OnExecute = actSaveFileAsExecute
end
object actOpenFile: TAction
Category = 'File'
Caption = 'Open file...'
+ ImageIndex = 9
OnExecute = actOpenFileExecute
end
object actNewFile: TAction
Category = 'File'
Caption = 'new empty file'
+ ImageIndex = 8
OnExecute = actNewFileExecute
end
object actCompAndRunFile: TAction
Category = 'Run'
Caption = 'Compile and run file'
+ ImageIndex = 21
OnExecute = actCompAndRunFileExecute
end
object ActCompAndRunFileWithArgs: TAction
Category = 'Run'
Caption = 'Compile and run file...'
+ ImageIndex = 21
OnExecute = ActCompAndRunFileWithArgsExecute
end
object actCompileProj: TAction
Category = 'Run'
Caption = 'Compile project'
+ OnExecute = actCompileProjExecute
end
- object ActCompileAndRunProj: TAction
+ object actCompileAndRunProj: TAction
Category = 'Run'
Caption = 'Compile and run project'
end
object actSaveProjAs: TAction
Category = 'Project'
Caption = 'Save project as...'
+ ImageIndex = 2
OnExecute = actSaveProjAsExecute
end
object actPaste: TAction
Category = 'Edit'
Caption = 'Paste'
+ ImageIndex = 5
OnExecute = actPasteExecute
ShortCut = 16470
end
object actCut: TAction
Category = 'Edit'
Caption = 'Cut'
+ ImageIndex = 6
OnExecute = actCutExecute
ShortCut = 16472
end
object actUndo: TAction
Category = 'Edit'
Caption = 'Undo'
+ ImageIndex = 0
OnExecute = actUndoExecute
ShortCut = 16474
end
object actRedo: TAction
Category = 'Edit'
Caption = 'Redo'
+ ImageIndex = 1
OnExecute = actRedoExecute
ShortCut = 24666
end
object actMacStartStop: TAction
Category = 'Edit'
Caption = 'Start/stop macro recording'
+ ImageIndex = 10
OnExecute = actMacStartStopExecute
ShortCut = 24658
end
object actMacPlay: TAction
Category = 'Edit'
Caption = 'Play macro'
+ ImageIndex = 11
OnExecute = actMacPlayExecute
ShortCut = 24656
end
@@ -206,20 +908,739 @@ object CEMainForm: TCEMainForm
object actAddCurrToProj: TAction
Category = 'File'
Caption = 'Add file to project'
+ ImageIndex = 7
OnExecute = actAddCurrToProjExecute
end
object actOpenProj: TAction
Category = 'Project'
Caption = 'Open project...'
+ ImageIndex = 9
OnExecute = actOpenProjExecute
end
object actNewProj: TAction
Category = 'Project'
Caption = 'New project'
+ ImageIndex = 8
OnExecute = actNewProjExecute
end
+ object actCompAndRunProjWithArgs: TAction
+ Category = 'Run'
+ Caption = 'Compile and run project...'
+ end
+ object actProjOpts: TAction
+ Category = 'Project'
+ Caption = 'Projects options'
+ OnExecute = actProjOptsExecute
+ end
end
object imgList: TImageList
left = 64
+ Bitmap = {
+ 4C69160000001000000010000000008F4E00008C4AB000965DFF00935AFF0093
+ 59FF009359FF009359FF009359FF009359FF00945AFF008743FF008945FF008A
+ 49A8FFFFFF00008F4E00008F4F00008E4E00008A47FF66E2D0FF62DDCAFF62DD
+ C8FF62DDC8FF62DDC8FF62DDC8FF62DDC8FF62DDC9FF61E0CAFF62DEC8FF3ABA
+ 91FF008845FFFFFFFF00008F4F00008E4E00008A49FF14DFB0FF11DAABFF11DA
+ AAFF11DAAAFF11DAAAFF11DAAAFF11DAAAFF11D9A9FF10D4A9FF1DD5ABFF52E1
+ C2FF3AD1ABFF008846FF008D4D00008F4F00008146C0008A49FF008846FF0088
+ 46FF008846FF008846FF008846FF008846FF008744FF009F60FF00C78FFF00D5
+ 9DFF20DEADFF2FBD8BFF008B4A95008F4F000000002300000033000000330000
+ 0033000000330000003300000033000000330000003300613474008D4BFF00CB
+ 90FF00D99FFF00D197FF008848F8008F4F00008F4F00008F4F00008F4F00008F
+ 4F00008F4F00008F4F00008F4F00008F4F00008F4F0000000010006A398500A0
+ 61FF00D8A0FF00DAA3FF008847FF008F4F00008F4F00008F4F00008F4E02008F
+ 4F03008F4F00008F4F00008F4F00008F4F00008F4F00008F4F00004F2B290096
+ 56FF00D4A1FF00D6A3FF008947FF008F4F00008E4E00008D4C00008B49FF008D
+ 4CC0008F4E00008F4F00008F4F00008F4F00008F4F00008E4D0000874768009D
+ 61FF00CDA1FF00CFA4FF008947FF008E4E00008C4A00008743FFA4E6D9FF0088
+ 45FF008C4B00008D4D00008E4D00008D4D00008D4C08008A48670E9256FF40CA
+ AAFF00C6A0FF00C19AFF008948F9FFFFFF00008743FF9BE3D0FF00C69EFF00C2
+ 8FFF008441FF008744FF008744FF008744FF008642FF29AA78FF60D6BCFF0DC8
+ A6FF00C5A1FF00A876FF007C42A9008A48FF86E0C8FF00CB9BFF00C999FF5FE3
+ C3FF5CE5C6FF5CE6C7FF5CE6C8FF5CE6C7FF5BE5C6FF5BE4C5FF29D8AFFF00D0
+ 9FFF00C593FF008A47FF0000001E008A48FF74DBBDFF00D09CFF00CE9AFF00D5
+ 9CFF00D89FFF00D9A0FF00D9A0FF00D9A0FF00D9A0FF00D9A1FF00D79CFF00B1
+ 74FF008947FF00000033008F4F0000000033008744FF65D7B3FF00D9A0FF00C3
+ 84FF008544FF008746FF008847FF008847FF008847FF008847FF008948FF007E
+ 43B900000033008F4F00008F4F00008F4E0000000033008745FF54D9B0FF0088
+ 47FF000000330000003300000033000000330000003300000033000000330000
+ 0022FFFFFF00008F4F00008F4F00008F4F00008F4E0000000033008C4BFF0085
+ 48CD008F4F00008F4F00008F4F00008F4F00008F4F00FFFFFF00008F4F00008F
+ 4F00008F4F00008F4F00008F4F00000000000000000000000000000000330000
+ 0027000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000008F4F00008F4F00008F4F00008F4F00008F
+ 4F00008F4F00008F4F00008F4F00008F4F00008F4F00008F4E00008D4CB1008C
+ 49FF008D4C00008F4E00008F4F00008F4F00008F4F00008F4F00008E4E00008E
+ 4D00008E4D00008E4D00008E4D00008E4D00008E4D00008D4B00008945FFA4E4
+ D9FF008743FF008C4A00008F4E00008F4F00008F4E00008D4C00008A49AA0089
+ 46FF008844FF008744FF008744FF008744FF008744FF008641FF00AB7DFF00BF
+ 9EFF9BDFD0FF008743FF008D4B00008F4F00008C4C00008845FF3ABA91FF62DE
+ C8FF61E0CAFF62E0CAFF62E0CAFF62E0CAFF62E0CAFF62E0C9FF65DEC7FF00C5
+ 9AFF00C69CFF86DEC8FF008A48FF008D4D00008846FF3AD1ABFF52E1C2FF1DD5
+ ABFF10D4A8FF11D5AAFF11D6ABFF11D6ABFF11D6ABFF11D5A9FF13D3A8FF00CC
+ 9BFF00CE9DFF74DBBFFF008A48FF008B4A962FBD8BFF20DEADFF00D59DFF00C7
+ 8FFF009F60FF008744FF008846FF008846FF008846FF008643FF00BA7EFF00D8
+ A0FF65D7B3FF008744FF00000033008848F800D197FF00D99FFF00CB90FF008D
+ 4BFF00613474004E2B5C00000033000000330000003300000033008947FF54D9
+ B0FF008846FF00000033008F4E00008847FF00DAA3FF00D8A0FF00A061FF006A
+ 3985000000100000000A008F4F00008F4F00008F4F00008F4F00008147C1008C
+ 4BFF00000033008F4E00008F4F00008947FF00D6A3FF00D4A1FF009656FF004F
+ 2B29008F4F00008F4F00008F4F00008F4F00008F4F00008F4F00000000230000
+ 0033008F4F00008F4F00008F4F00008947FF00CFA4FF00CDA1FF009D61FF0086
+ 4654008E4D00008F4F00008F4F00008F4F00008F4F00008F4F00008F4F00008F
+ 4F00008F4F00008F4F00008F4F00008948F900C19AFF00C6A0FF40CAAAFF0E92
+ 56FF008A4867008D4C08008D4D00008E4D00008E4D00008E4D00008E4D00008E
+ 4D00008E4E00008F4F00008F4F00007C42AA00A876FF00C5A1FF0DC8A6FF60D6
+ BCFF29AA78FF008642FF008744FF008744FF008744FF008744FF008744FF0087
+ 45FF008947FF008D4CB0008F4F000000001E008A47FF00C593FF00D09FFF29D8
+ AFFF5BE3C5FF5BE4C6FF5CE5C7FF5CE5C8FF5CE5C8FF5CE5C8FF5CE5C8FF5CE6
+ C9FF60EACEFF008A48FF008E4E00008F4F0000000033008947FF00B174FF00D7
+ 9CFF00DCA1FF00DCA0FF00DCA0FF00DCA0FF00DCA0FF00DCA0FF00DCA0FF00DC
+ A1FF00E1A7FF008A49FF008E4E00008F4F00008F4F0000000033007E43BB0089
+ 48FF008847FF008847FF008847FF008847FF008847FF008847FF008847FF0088
+ 47FF008A49FF008B4CF2008F4F00000000000000000000000000000000220000
+ 0033000000330000003300000033000000330000003300000033000000330000
+ 0033000000330000003000000000B9851CC5B78116FFB37A06FFD6CFD1FFD4C9
+ C3FFD4C9C1FFD8CCC5FFE3D7D02B4A433D00DFD4CEFFD8D1D2FFB37A06FFB781
+ 16FFB9851CC5BB871F00BB871F00B78218FFF6CC89FFF2C274FFFFFFFFFFFEFD
+ FCFFFFFEFCFFFFFEF9FF93887EFF4A433DFFFFFFFFFFFFFFFFFFF2C274FFF6CC
+ 89FFB78217FFBB861C00BB871C00B68116FFF2CA85FFEBB962FFF8F8FBFFE9DC
+ D1FFEBDDD1FFFFFFFCFF958B83FF4A443FFFFFFFFFFFFAF9FCFFEBB962FFF2CA
+ 83FFB6810FFFBB860F00BC880D00B68116FFF1C887FFE8B258FFF6F5F7FFEEE2
+ D9FFEFE3D9FFFFFAF5FF5C5752FF48423FFFFFFBF7FFF7F6F8FFE9B257FFF2C8
+ 80FFB68100FFBE8AEC00AB7BDF00B68116FFF3CB8CFFE7AE4EFFF5F4F8FFF0E9
+ E4FFF1E9E2FFF8EFE8FF8A847FFF88817EFFF8F0EBFFF7F5F9FFEAAF4BFFF6CD
+ 7DFFBC87E4FFBE8ADAFFAC7BCF00B68115FFF3CE93FFE5AB48FFEED7B6FFF5F3
+ F7FFF5F1F4FFF7F3F6FFFBF8FAFFFCF8FAFFF9F6F9FFF2D9B4FFEEAE40FF7A81
+ 85FFE0B1E4FFCB96C7FFAE7DCEFFB68115FFF3D199FFE3A740FFE2A336FFE19F
+ 2EFFE19E2BFFE19E2BFFE29F2CFFE3A02CFFE8A32DFFF1A830FF817F83FFE9E9
+ E8FF898B83FFAC7BA7FF9969CBFFB68114FFF4D4A2FFE29F31FFE9E1E2FFFEFF
+ FFFFFEFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B74D0FFACDBF4FF9287
+ 82FFC1C0BAFF797B71FF00000033B68014FFF5D9AAFFDF9822FFFFFFFFFFF1E6
+ D9FFF2E6D9FFF2E6D7FFF6E6D6FFCED9DBFF1D6FC5FF39C4FFFF1DABFFFF7EA3
+ C4FF7C7878FF3B3B3A5674767000B68013FFF7DEB5FFDC9317FFFFFFFFFF7878
+ 79FF7A7979FFA4A2A1FFABA39FFF3AABF2FFA1EDFFFF9ADEFEFF0998FFFF2366
+ A9FFCA8604FF0000000971747E00B67F12FFFAE4C1FFDB8D0AFFFEFFFFFFFDF7
+ EBFFFFF8EAFFFFF7E9FFFFFDEBFF507C9CFF7BA3B5FF86D2FFFF1F60A2FFFFEB
+ B6FFBE830DFFC0871600C2891600B67F12FFFBE9CFFFD88500FFFFFFFFFF797B
+ 7FFFA2A4A5FFFFFCF3FF828180FF425C72FF385A80FF3784DDFFEB8D00FFFFEC
+ CCFFB78011FFBB861C00BC871D00B78115FFFEE9C7FFFBE4BDFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7BCFFFFEA
+ C6FFB78115FFBB861D00BB871F00B3811AE1B78114FFB57E10FFB57D0CFFB67C
+ 0BFFB67C0AFFB57C0AFFB67D0AFFB77D0BFFB77E0BFFB77E0CFFB67F10FFB781
+ 14FFB3811AE1BB871E00BB871F000000002C0000003300000033000000330000
+ 0033000000330000003300000033000000330000003300000033000000330000
+ 00330000002C0000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00B9872DEFB68124FFB57F1FFFB47E1EFFB47E
+ 1EFFB47E1EFFB47E1EFFB47F1FFFB58022FFB78327EAB9872E00BB893200BB8A
+ 3300BB8A3500BB871D00BB871F00B68124FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBDCC3FFB57F20A6B9872D00BB89
+ 3200BB8A3500BB871D00BB871F00B57F1FFFFFFFFFFFE7D8B1FFE7D8B2FFE7D9
+ B3FFE7D8B2FFE7D8B0FFFFFFFFFFAC7107FFFFFFFFFFEADABFFFB57F20A7B987
+ 2E00BB8A3500BB871D00BB871F00B47E1EFFFFFFFFFFEADCB9FFEADDBCFFEBDD
+ BDFFEADDBCFFEADCBBFFFFFFFFFFAE740EFFFEFEFAFFFFFFFFFFECDDC5FFB784
+ 29AABA8A3500BB871D00BB871F00B47E1EFFFFFFFFFFECE0C1FFEDE1C3FFEDE1
+ C5FFEEE3C7FFEFE5CBFFFFFFFFFFD5B683FFB37D1DFFB27A19FFFFFFFFFFB682
+ 27FFB9841800BA861C00BB871E00B47E1EFFFFFFFFFFEEE3C8FFEFE4C9FFEFE5
+ CCFFF2E9D3FFC9A14FFFB07500FFB27803FFB37904FFB37801FFB27600FFB37A
+ 05FFB57E0EFFB78114FFB9851BEFB47E1EFFFFFFFFFFF1E6CEFFF1E7CFFFF2E8
+ D3FFF6EFDFFFB07400FFFDE8C7FFFBE6C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFCE6C4FFFFECCEFFB78114FFB47E1EFFFFFFFFFFF3EAD6FFF3EAD7FFF4EC
+ DAFFF8F3E8FFB07500FFFAE9CEFFDA8802FFF0EEECFFB2ADA7FFB2ADA7FFF0EE
+ ECFFDA8802FFFBEAD1FFB67F12FFB47E1EFFFFFFFFFFF4EDDDFFF4EDDDFFF5EF
+ E1FFF9F7F0FFB07500FFF7E0B9FFDD9419FFEEE9E9FFEFE6DEFFEFE6DEFFEEE9
+ E9FFDD9419FFF8E2BCFFB68012FFB47E1EFFFFFFFFFFF8F4E7FFF8F4E8FFF9F6
+ EBFFFCFDFAFFB07601FFF5D7A9FFE19E2FFFE7CAA1FFEBE2E0FFEBE2E0FFE7CA
+ A1FFE19E2FFFF6D9ADFFB68014FFB47E1EFFFFFFFFFFE6D5ADFFE6D6AFFFE7D8
+ B3FFEBDFC0FFB17703FFF4D39CFFE4A641FFE3A43AFFE3A133FFE2A132FFE3A4
+ 3AFFE3A641FFF4D49EFFB68114FFB47E1FFFFFFFFFFFE6D6AFFFE7D7B2FFE8DA
+ B5FFEBE0C2FFB17805FFF2CD91FFE6AD4FFFEACFA9FFFFFFFFFFFDFFFFFFE8CE
+ A7FFE6AD4EFFF3CE93FFB68115FFB57F20FFFFFFFFFFE6D6AEFFE6D7B0FFE8D9
+ B3FFEBDFC0FFB17805FFF2CA88FFEBB65CFFF2EDEDFF7F7978FFF1E9E2FFEEE9
+ E9FFEAB55BFFF3CC8BFFB68116FFB68124FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFB37A09FFF5CB89FFF3C275FFF9FCFFFF8B8D91FFF9F9F9FFF4F8
+ FCFFF2C174FFF6CD8BFFB78218FFAA7C29C0B68124FFB57F20FFB47F1FFFB57F
+ 20FFB68226FFB8831FFFB78216FFB68114FFB88010FFB9810FFFB87F0EFFB67E
+ 0FFFB68013FFB78218FFB7831CF2000000000000003300000033000000330000
+ 0033000000330000003300000033000000330000003300000033000000330000
+ 0033000000330000003300000030B3B3B1EFB0B0ADFFAEAEACFFAEAEABFFADAD
+ ABFFAEAEABFFAFAFADFFB0B0AED5000000000000000000000000000000000000
+ 0000000000000000000000000000AFAFADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFE9E9E9FFAFAFADA70000000000000000000000000000
+ 0000000000000000000000000000AEAEACFFFFFFFFFFE0E0DFFFE0E0DFFFE0E0
+ DFFFFFFFFFFFA4A4A2FFFFFFFFFFE9E9E9FFB0B0AEA400000000000000000000
+ 0000000000000000000000000000AEAEABFFFFFFFFFFE5E4E3FFE6E5E4FFE5E4
+ E3FFFFFFFFFFCACAC9FFA4A4A2FFFFFFFFFFADADAAFFAFAFADFFAEAEACFFAFAF
+ ADFFB0B0AEAC0000000000000000ADADABFFFFFFFFFFE9E8E8FFEAE8E9FFE9E8
+ E8FFF3F2F2FFFFFFFFFFFFFFFFFFFFFFFFFFA9A9A6FFFFFFFFFFFFFFFFFFFFFF
+ FFFFE9E9E9FFAFAFADA700000000ADADABFFFFFFFFFFECECEBFFEDEDECFFEDED
+ ECFFECECEBFFEBEBEAFFEBEBEAFFFFFFFFFFA8A8A5FFE4E4E3FFFFFFFFFFA4A4
+ A2FFFFFFFFFFE9E9E9FFB0B0AEACADADABFFFFFFFFFFF0F0EFFFF0F0EFFFF0F0
+ EFFFF0F0EFFFEFEFEEFFEFEFEEFFFFFFFFFFA8A8A5FFE9E8E7FFFFFFFFFFCACA
+ C9FFA4A4A2FFFFFFFFFFAFAFADFFADADABFFFFFFFFFFF4F3F3FFF4F3F3FFF4F3
+ F3FFF4F3F3FFF4F3F3FFF4F3F3FFFFFFFFFFA8A8A5FFEDECECFFF4F3F3FFFFFF
+ FFFFFFFFFFFFFFFFFFFFAEAEABFFADADABFFFFFFFFFFF7F6F6FFF7F6F6FFF7F6
+ F6FFF7F6F6FFF7F6F6FFF7F6F6FFFFFFFFFFA7A7A5FFF1F1F1FFEDEDECFFEBEB
+ EAFFEBEBEAFFFFFFFFFFADADABFFAEAEABFFFFFFFFFFFCFCFCFFFBFBFCFFFBFB
+ FCFFFBFBFCFFFBFBFCFFFCFCFCFFFFFFFFFFA7A7A5FFF5F5F4FFF1F1F0FFEFEF
+ EEFFEFEFEEFFFFFFFFFFADADABFFB0B0ADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8A8A5FFF9F8F8FFF5F4F4FFF4F3
+ F3FFF4F3F3FFFFFFFFFFADADABFFB0B0AEF1AFAFADFFAEAEABFFADADABFFADAD
+ ABFFADADABFFACACAAFFA9A9A7FFA8A8A6FFB8B7B6FFFBFAFAFFF8F6F6FFF7F6
+ F6FFF7F6F6FFFFFFFFFFADADABFF0000002F6868675F6464625C6464625C6161
+ 60594E4E4D4EB0B0ADFFF6F6F5FFECECEBFFFBFAFAFFFDFDFDFFFCFCFCFFFBFB
+ FCFFFCFCFCFFFFFFFFFFAEAEABFF000000000000000B0000000A0000000A0000
+ 000A00000007B0B0AEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFB0B0ADFF000000000000000000000000000000000000
+ 000000000000B1B1AFF2B0B0AEFFAEAEACFFADADABFFADADABFFADADABFFADAD
+ ABFFAEAEABFFAFAFADFFB1B1AFF2000000000000000000000000000000000000
+ 0000000000000000003000000033000000330000003300000033000000330000
+ 00330000003300000033000000304A7CA500487CA600427BA9008D847D00807F
+ 7EFF7E7E7EFF807F7EFF8D847D00427BA900487CA6004A7CA500487BA5003E76
+ A300C0BBB500B7B6B300B5B5B300477AA3B04378A2FF3D77A4FF888079FFB9B6
+ B6FFB7B5B5FFB9B6B6FF888079FF3D77A4FF4378A2FF4779A3B04479A4003973
+ A300BEBAB400B7B5B300B5B5B30042759FFFAFD2F2FFA9D0F3FF978E87FFCECA
+ C8FFCBC8C6FFCDCAC8FF968D87FFA8D0F4FFADD1F2FF3D739EFF3972A100C3BC
+ B500B9B7B400B5B5B300B5B5B3003E729DFFD4E7F7FF569BD3FFADA096FFAA9F
+ 98FFA79E98FFA49E99FFA59D97FF4E98D5FFCCE4F8FF2F6A9AFFC0BAB300B8B7
+ B300B5B4B200B4B4B200B5B5B3003D709AFFC6DEF0FF5797CCFF5A9ACFFF589A
+ D1FF5398D2FF92AABEFFB5B2ADFFB2AFAAFFB2AEA9FFB3B0ABFFB1AFACFFAFAE
+ ACFFAEAEACFFB0B0ADFFB3B3B1B03E6F9AFFB9D5EAFF5794C7FF5B97C8FF5B98
+ C9FF5395CAFFBAB3ABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFAFAFADFF3E6E99FFACCAE4FF5691C1FF5A93C3FF5993
+ C3FF508FC3FFB8B2AAFFFFFFFFFFE3E2E0FFE6E5E4FFE7E5E4FFE6E5E4FFE4E3
+ E2FFE2E1E0FFFFFFFFFFAEAEACFF3E6D97FF9FC1DDFF538EBDFF5791BFFF5691
+ BFFF4D8CBFFFB7B1AAFFFFFFFFFFE9E9E8FF858585FFB2B1B1FFB0AFAFFFAEAD
+ ADFFE8E8E6FFFFFFFFFFAEAEABFF3E6C97FF91B6D5FF528BBAFF558CBBFF548C
+ BBFF4B88BBFFB8B2ABFFFFFFFFFFEEEDEDFFF3F2F2FFF3F2F2FFF1F0F0FFF0EF
+ EFFFEDEBEBFFFFFFFFFFADADABFF3F6B97FF82ABCCFF5088B5FF528AB6FF5189
+ B6FF4784B5FFB8B2ABFFFFFFFFFFF3F2F2FF848484FFB2B2B3FFF5F4F4FFAEAE
+ AEFFF1F0F0FFFFFFFFFFADADABFF3F6B95FF74A1C3FF4F86B1FF5187B2FF4F86
+ B2FF4581B0FFB8B2ABFFFFFFFFFFF6F6F5FFFBFBFAFFFBFBFAFFF9F9F8FFF7F7
+ F6FFF4F4F3FFFFFFFFFFADADABFF3F6A95FF6594BBFF4C83AEFF4E83AEFF4C82
+ AEFF427DACFFB8B3ACFFFFFFFFFFFBFBFAFF818181FFB5B5B6FFB4B4B4FFB1B1
+ B1FFF9F9F8FFFFFFFFFFADADABFF3F6A94FF568AB0FF4C82ABFF4D82ABFF4B81
+ ABFF417BA8FFB9B4ADFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFEFE
+ FEFFFCFCFCFFFFFFFFFFAEAEABFF3B6088C0406893FF3F6893FF406893FF3E67
+ 93FF335F8FFFBBB7B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFB0B0ADFF000000230000003300000033000000330000
+ 003300000033BBB7B0ECB1B0AEFFAEAEABFFADADABFFADADABFFADADABFFADAD
+ ABFFAEAEABFFAFAFADFFB1B1AFF2000000000000000000000000000000000000
+ 0000000000000000002E00000033000000330000003300000033000000330000
+ 0033000000330000003300000030FFFFFF00FFFFFF0000000000000000000000
+ 000000000000BAB8B6FC00000000000000000000000000000000000000000000
+ 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+ 000000000000D3D1D1FFAFADABEA000000000000000000000000000000000000
+ 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00B9B7B5D3000000000000
+ 000000000000D9D7D6FFC2C2C0FF000000000000000000000000000000000000
+ 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00D4D4D3FFDAD9D8EB0000
+ 000000000000D4D2D1FFBDBBBAFF000000000000000000000000000000000000
+ 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF009694949DEBEAEBFFD7D5
+ D4E300000000CDCBCAFFC8C7C5FF000000000000000000000000000000000000
+ 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000001BAAA8A5EDEBEB
+ EBFFD2D1D1D3C4C3C3FFC7C6C6FF000000000000000000000000000000000000
+ 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000002F9C9B
+ 9BB9ECEDEFFFBDB4A8FFCACCD0FF000000000000000000000000000000000000
+ 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+ 0022989BA1B6D37C1DFFB98B5EFF000000000000000000000000000000000000
+ 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+ 000000000021AB8968FF9E958EFFE09B4DFF0000000000000000000000000000
+ 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+ 000000000000B3906DFF7171717DBE792DB5CC8538FFC7833BE6C2803BD7BE7E
+ 3CFF00000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000D389
+ 3726D08736FFC98235FF0000001300000021B67736BDBF7E3AEB0000002B9361
+ 308BB6793EE3FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000CF86
+ 39E08D5C2871C07F3CFF000000000000000000000023B97B3AE5BA7B3DAF0000
+ 0016B0753FF6FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000C984
+ 3AFF00000010B97B3DFF0000000000000000000000000000002DA9713AB0B077
+ 3FFF9F6C3BBEFFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000C180
+ 3CFF00000000B2773FFF00000000000000000000000000000000000000210000
+ 003300000023FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000B97B
+ 3DFFB0773FFF8458318400000000000000000000000000000000000000000000
+ 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+ 0033000000330000001400000000000000000000000000000000000000000000
+ 000000000000FFFFFF00FFFFFF00000000000000000000000000000000000000
+ 000000000000B3B3B1B0B0B0ADFFAEAEACFFADADABFFAEAEABFFAFAFADFFB0B0
+ AEAC000000000000000000000000000000000000000000000000000000000000
+ 000000000000B0AFADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9
+ E9FFAEAEACA70000000000000000000000000000000000000000000000000000
+ 000000000000AFAEABFFFFFFFFFFE0E0DFFFDFDFDEFFFFFFFFFFA5A5A3FFFFFF
+ FFFFE8E8E8FFAFAFACA700000000000000000000000000000000000000000000
+ 000000000000B2AFAAFFFFFFFFFFE5E4E3FFE5E4E2FFFFFFFFFFA7A7A4FFEBEB
+ EAFFFFFFFFFFE9E9E9FFB0B0AEAC000000000000000000000000000000000000
+ 000000000000B7B0A9FFFFFFFFFFE8E7E8FFE8E7E7FFFFFFFFFFCBCBCAFFA7A7
+ A4FFA5A5A3FFFFFFFFFFAFAFADFF4398D2B03D94D0FF3B92CFFF3D94D0FF4097
+ D2E400000000BAB0A9FFFFFFFFFFEFEDEDFFEFEDEDFFF6F6F5FFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFAEAEABFF3D94D0FFDCFDFFFFD8F9FFFFDBFBFFFF388F
+ D1FF3993D9FFC2B2AEFFFFFFFFFFFFF6FAFFFFF6F9FFF8F3F4FFF1F0EFFFEFEF
+ EEFFEFEFEEFFFFFFFFFFADADABFF3B92CFFFD5F7FFFF5FD1F9FFB6EBFEFFE2FC
+ FFFF44B188FF007E35FFFFFFFFFF007933FF007932FFFFFDFFFFFCF6F8FFF5F3
+ F3FFF4F3F3FFFFFFFFFFADADABFF3B92CFFFC6F5FFFF6BD8FAFF6FDAFCFF77DF
+ FFFF008037FF93EDE0FF007B36FF88E5DCFF86E6DDFF007932FFFFFDFFFFFAF7
+ F8FFF7F6F6FFFFFFFFFFADADABFF3D92CFFFBBF3FFFF72DAFBFF6CCCF3FF74D0
+ FFFF008139FF75EAD0FF4BEAD0FF00C59AFF00C89CFF007A34FFFFFFFFFFFEFC
+ FDFFFCFCFCFFFFFFFFFFAEAEABFF3E93D0FFB1F6FFFF4DA7DCFF388CCEFF4190
+ D9FF00823BFF47E8BCFF00D699FF00D79CFF007C3DFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFB0B0ADFF4095D0FF86D7F4FF4AA7DBFFE2FFFFFFE9FF
+ FFFF007F39FF16EBABFF00E39DFF00E49FFF00E89FFF008039FFC2B1B0FFB3AF
+ ABFFAFAEABFFB0AFADFFA4A4A2C04397D1FF62B8E3FF7ECCEDFF81E6FFFF87E8
+ FFFF26A786FF007F38FF007F3BFF007F3CFF00813BFF25A082FF368CD1D20000
+ 00330000003300000033000000234498D2FF449AD3FFAAF4FFFF92F1FFFF94F1
+ FFFF9AF4FFFF9EF7FFFF9FF7FFFF9FF7FFFFB1FDFFFF6DBDEDFF3175A5730000
+ 00000000000000000000000000004498D1F24397D1FF4094D0FF3F92CFFF3F92
+ CFFF4093D0FF4193D1FF4193D1FF4194D1FF4194D1FF4295CFEF000000120000
+ 0000000000000000000000000000000000000000003300000033000000330000
+ 003300000033000000330000003300000033000000330000002F000000000000
+ 0000000000000000000000000000FFFFFF00A5A5A53889898AFF000000008989
+ 8AFF0000000089898AFF0000000089898AFF0000000089898AFF000000000000
+ 000000000000FFFFFF00FFFFFF00FFFFFF0089898AFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0E0E0AB89898AFF0000
+ 000000000000FFFFFF00FFFFFF00FFFFFF0000000033FFFFFFFFE0DFDDFFE0DF
+ DEFFE0DFDEFFE0DFDEFFDFDEDCFFFFFFFFFF919191FFFFFFFFFFDDDDDDA78989
+ 8AFF00000000FFFFFF00FFFFFF00FFFFFF0089898AFFFFFFFFFFE3E3E2FFE4E4
+ E3FFE4E5E4FFE4E4E3FFE3E3E2FFFFFFFFFFFFFFFFFFE6E6E4FFFFFFFFFFE0E0
+ E0AB89898AFFFFFFFF00FFFFFF00FFFFFF0000000033FFFFFFFFE7E6E5FFE8E7
+ E6FFE8E7E6FFE8E7E6FFE6E5E4FFFFFFFFFF919191FFFFFFFFFF929292FFFFFF
+ FFFF00000033FFFFFF00FFFFFF00FFFFFF0089898AFFFFFFFFFFE9E9E8FFEAEA
+ E9FFEAEAE9FFEAEAE9FFE9E9E8FFF4F4F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFF89898AFFFFFFFF00FFFFFF00FFFFFF0000000033FFFFFFFFEDEBEAFFEDEC
+ EBFFEDECEBFFEDECEBFFEDECEBFFECEBEAFFECEBE9FFEBEAE9FFECEAE9FFFFFF
+ FFFF00000033FFFFFF00FFFFFF00FFFFFF0089898AFFFFFFFFFFEFEFEEFFEFEF
+ EEFFEFEFEEFFEFEFEEFFEFEFEEFFEFEFEEFFEFEFEEFFEEEEEDFFEEEFEEFFFFFF
+ FFFF89898AFFFFFFFF00FFFFFF00FFFFFF0000000033FFFFFFFFF2F1F0FFF2F1
+ F0FFF2F1F0FFF2F1F0FFF2F1F0FFF2F1F0FFF2F1F0FFF2F1F0FFF2F1F0FFFFFF
+ FFFF00000033FFFFFF00FFFFFF00FFFFFF0089898AFFFFFFFFFFF4F4F3FFF4F4
+ F3FFF4F4F3FFF4F4F3FFF4F4F3FFF4F4F3FFF4F4F3FFF4F4F3FFF4F4F3FFFFFF
+ FFFF89898AFFFFFFFF00FFFFFF00FFFFFF0000000033FFFFFFFFF6F6F6FFF6F6
+ F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFFFFF
+ FFFF00000033FFFFFF00FFFFFF00FFFFFF0089898AFFFFFFFFFFFAF9F9FFF9F8
+ F8FFF9F8F8FFF9F8F8FFF9F8F8FFF9F8F8FFF9F8F8FFF9F8F8FFFAF9F9FFFFFF
+ FFFF89898AFFFFFFFF00FFFFFF00FFFFFF0000000033FFFFFFFFFDFDFDFFFCFC
+ FCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFDFDFDFFFFFF
+ FFFF00000033FFFFFF00FFFFFF00FFFFFF0089898AFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFF89898AFFFFFFFF00FFFFFF00FFFFFF000000003389898AFF000000338989
+ 8AFF0000003389898AFF0000003389898AFF0000003389898AFF000000338989
+ 8AFF00000033FFFFFF00FFFFFF00FFFFFF000000000000000033000000000000
+ 0033000000000000003300000000000000330000000000000033000000000000
+ 003300000000FFFFFF00FFFFFF00FFFFFF00459AD3EF4498D2FF4197D1FF3F95
+ D1FF3D94D0FF3B93D0FF3A92D0FF3A92D0FF3A93D0FF3C94D1FF3E97D3EE0000
+ 00000000000000000000FFFFFF00FFFFFF004297D2FF3B93D0FF62ADDCFF93CD
+ EDFFBBE7FAFFD8FCFFFFD6FCFFFFD3FBFFFFD1FBFFFFD3FCFFFF2E91D5FF0000
+ 00000000000000000000FFFFFF00FFFFFF003C93D0FFE9FFFFFFA8DAF3FF7BBD
+ E4FF4398D2FF408EC7FF6E9CBCFF90A5B2FFBAAFA6FFB5ADA6FFB5AFA9FFB5B1
+ ADA40000000000000000FFFFFF00FFFFFF003991CFFFE9FFFFFFAFF0FFFFCEF7
+ FFFFDAFAFFFFC4ECFCFF8CCAECFF5FAEE0FF82BDE6FFFFFFFFFFFFFFFFFFE9E9
+ E9FFAFAFADA700000000FFFFFF00FFFFFF003A91CEFFD2FCFFFF7AE2FCFF77DD
+ FCFF7FDFFBFF9BE6FDFFB3EDFFFFD4F9FFFF2688CBFFFFFFFFFFA7A5A2FFFFFF
+ FFFFE9E9E9FFB0B0AEACFFFFFF00FFFFFF003B91CEFFC9F9FFFF7EE2FCFF7CDE
+ FCFF78DCFBFF72D9FAFF6AD6FAFFD2F6FFFF2888CBFFFFFFFFFFCDCBC9FFA4A4
+ A2FFFFFFFFFFAFAFADFFFFFFFF00FFFFFF003C91CEFFC0F8FFFF7FE2FCFF7DDF
+ FCFF7ADDFBFF75DAFAFF6DD7FAFFC6F3FFFF2989CBFFFFF9F4FFFFFFFFFFFFFF
+ FFFFFFFFFFFFAEAEABFFFFFFFF00FFFFFF003C92CEFFB6F6FFFF80E3FCFF7DDF
+ FCFF7ADDFBFF76DAFAFF6ED7FAFFB9EFFFFF2A89CCFFFCF2EDFFEEECEBFFEBEA
+ EAFFFFFFFFFFADADABFFFFFFFF00FFFFFF003D92CEFFADF3FFFF81E3FCFF7EDF
+ FCFF7ADDFBFF76DAFAFF6FD8FAFFABEBFFFF2B89CCFFFFF8F1FFF2F1EFFFEFF0
+ EEFFFFFFFFFFADADABFFFFFFFF00FFFFFF003E92CEFFA3F1FFFF82E3FCFF7EDF
+ FCFF7ADDFBFF76DAFAFF71D9FBFF9DE8FFFF2A89CBFFFFFBF6FFF6F4F3FFF4F3
+ F3FFFFFFFFFFADADABFFFFFFFF00FFFFFF003E92CEFF9AF0FFFF83E4FDFF7EDF
+ FCFF7ADDFBFF76DAFAFF89E2FEFF48A8DDFF70AED9FFFFFCF8FFF9F6F6FFF7F6
+ F6FFFFFFFFFFADADABFFFFFFFF00FFFFFF004094CFFF92F1FFFF85E7FFFF80E1
+ FDFF7ADEFBFF77DBFBFF83E1FFFF308ACBFFFFFFFBFFFFFFFDFFFCFCFCFFFCFC
+ FCFFFFFFFFFFAEAEABFFFFFFFF00FFFFFF004295CEEF58B0DFFF6DC9EFFF7FE2
+ FDFF7EE3FEFF7ADEFCFF7EE1FFFF308CCDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFB0B0ADFFFFFFFF00FFFFFF000000002F326F997C3D8AC1C74092
+ CEFF54ADDEFF66C4EDFF78E0FEFF3591D1FFBBB2AAFFB0AEABFFADADABFFAEAE
+ ABFFAFAFADFFA4A4A2C0FFFFFF00FFFFFF000000000000000012000000250000
+ 0033326E987A3E8BC1C84195D1FF3892D1ED0000003300000033000000330000
+ 00330000003300000023FFFFFF00FFFFFF000000000000000000000000000000
+ 00000000001200000025000000330000002E0000000000000000000000000000
+ 00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF0000000000354CCD973249CCFF3148CBFF3249CCFF354CCD9700000000FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00354CCD97455DDBFF90A6FCFF95ACFFFF90A6FCFF445DDBFF354CCD97FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00334ACCFF90A5FDFF5A79FAFF5573F9FF5A79FAFF90A5FDFF334ACCFFFFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00334ACBFF6D88FFFF4D6DFBFF4D6DFAFF4D6DFBFF6D88FFFF334ACBFFFFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00354BCBFF5F7CFFFF607CFFFF5F7BFDFF607CFFFF5F7CFFFF354BCBFFFFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF002F44B4AC425AD9FF6F88FFFF738CFFFF6F88FFFF425AD9FF2F44B4ACFFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF000000001E2F44B4AC344BCBFF334ACAFF344BCBFF2F44B4AC0000001EFFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00000000000000001E0000003300000033000000330000001E00000000FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D9D9
+ D934D8D8D880D7D7D7C0D6D6D6EDD5D5D5EDD3D3D3C0D2D2D280D0D0D034FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D9D9D967D8D8
+ D8D5EBEBEBFFF5F5F5FFFCFCFCFFFCFCFCFFF4F4F4FFE8E8E8FFCECECED5CCCC
+ CC67FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D9D9D967D8D8D8F1F8F8
+ F8FFFFFFFFFFF8F8F8FFF2F2F2FFF1F1F1FFF7F7F7FFFFFFFFFFF5F5F5FFC9C9
+ C9F1C7C7C767FFFFFF00FFFFFF00FFFFFF00D9D9D934D8D8D8D5F8F8F8FFFFFF
+ FFFFEFEFEFFFEEEEEEFFC3C3C3FFEDEDEDFFECECECFFEBEBEBFFFFFFFFFFF5F5
+ F5FFC0C0C0D5BEBEBE34FFFFFF00FFFFFF00D7D7D780EBEBEBFFFFFFFFFFEFEF
+ EFFFEEEEEEFFEDEDEDFF777676FFC2C2C2FFEBEBEBFFE9E9E9FFE9E9E9FFFFFF
+ FFFFDDDDDDFFB3B3B380FFFFFF00FFFFFF00D6D6D6C0F5F5F5FFF7F7F7FFEDED
+ EDFFEDEDEDFFECECECFF767575FF767575FFC0C0C0FFE9E9E9FFE8E8E8FFF4F4
+ F4FFEEEEEEFFABABABC0FFFFFF00FFFFFF00D4D4D4EDFCFCFCFFF0F0F0FFEDED
+ EDFFEBEBEBFFEAEAEAFF757575FF757575FF7A7979FFCDCDCDFFE6E6E6FFE9E9
+ E9FFFAFAFAFFA7A7A7EDFFFFFF00FFFFFF00D3D3D3EDFCFCFCFFEFEFEFFFEBEB
+ EBFFEAEAEAFFE9E9E9FF757575FF797878FF747373FFEFEFEFFFE5E5E5FFE8E8
+ E8FFF4F4F4FFA2A2A2EDFFFFFF00FFFFFF00D1D1D1C0F2F2F2FFF5F5F5FFE9E9
+ E9FFE9E9E9FFE8E8E8FF787878FF747373FFEFEFEFFFE5E5E5FFE4E4E4FFF2F2
+ F2FFE1E1E1FF9D9D9DC0FFFFFF00FFFFFF00CECECE80E4E4E4FFFEFEFEFFE8E8
+ E8FFE7E7E7FFE6E6E6FF737373FFEFEFEFFFE4E4E4FFE3E3E3FFE2E2E2FFFBFB
+ FBFFC6C6C6FF99999980FFFFFF00FFFFFF00C7C7C734C4C4C4D5F0F0F0FFFFFF
+ FFFFE5E5E5FFE5E5E5FFEFEFEFFFE3E3E3FFE2E2E2FFE1E1E1FFFEFEFEFFE2E2
+ E2FF999999D599999934FFFFFF00FFFFFF00FFFFFF00BCBCBC67B9B9B9F1ECEC
+ ECFFFEFEFEFFF3F3F3FFE8E8E8FFE7E7E7FFF1F1F1FFFBFBFBFFE1E1E1FF9999
+ 99F193939367FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00AFAFAF67AAAA
+ AAD5CECECEFFE6E6E6FFF5F5F5FFF2F2F2FFDDDDDDFFC0C0C0FF939393D59090
+ 9067FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A8A8
+ A8349C9C9C80979797C0969696ED929292ED909090C08E8E8E8092929234FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF008C8987009794920096939100979492008C89
+ 87008D8A88008D8A88008D8A880097949200969391F4969391FF908D8B009693
+ 91FF969391F4979492008D8A88008C8987009794920096939100979492008C89
+ 87008D8A88008D8A88008D8A88008B888600848180C28D8989FF8C8987E68D89
+ 89FF848180C18B8886008D8A88008C8987009794920096939100979492008C89
+ 87008D8A88008D8A88008D8A88F48A8785B3A5A2A1FBDFDEDDFFE4E4E3FFDFDE
+ DDFFA5A2A1F98A8785DE8D8A88F58C898700979492009693910096939100928F
+ 8D009895930088858300898684FF858280FFD7D5D4FFB7B6B4FF94928FFFB7B6
+ B4FFD7D5D4FF858280FF868381DF8C898700979492009693910096939100918E
+ 8C009794920099969400000000337D7A7AE9D4D3D2FF8F8D8DFF000000338F8D
+ 8DFFD4D3D2FF777474CA0000002B8D8A880097949200969391F4969391FF908D
+ 8B00969391FF989593E17C7A7AFF7A7A7BFFC4C7CAFFA8ACB1FF888C92FFA8AC
+ B1FFC4C7CAFF7A7A7CFF7E7D7DD68D8A88008B888600848180C28D8989FF8C89
+ 87E68D8A89FF838181B2707071D57B716CF3A76831FFB05100FFAF5100FFB051
+ 00FFA76832FF7B7370F9747A7FEE8D8A88F48A8785B3A5A2A1FBDFDEDDFFE4E4
+ E3FFDFDEDDFFA4A4A5F3877C75CEB0580BFFD19963FFEBCDABFFE9C9A7FFEBCD
+ ABFFD19A64FFB15608FC0000002F8A8785FF858280FFD7D5D4FFB7B6B4FF9492
+ 8FFFB7B6B5FFD4D7DAFF9F6029FFD49C68FFE6C29BFFCF924EFFFFFFFFFFCF92
+ 4EFFE6C39BFFD39F6EFFB05B13BB000000337D7A79EBD4D2D1FF908C8BFF0000
+ 00338F8D8DFFCFD4DAFFAE5000FFEACCA6FFCC8B40FFC98335FFC8802FFFC983
+ 35FFCC8B40FFEACEAAFFAE5912FF7F7C7BFF7C7978FFC6C5C2FFAAA8A6FF8A86
+ 86FFA9A8A7FFC1C7CBFFAF5203FFDEAC73FFD19149FFCF8C41FFFFFFFFFFCF8C
+ 41FFD19149FFDEAD75FFAE5A13FF7B7876F5767371E3908D8AF9BFBCBAFFC4C1
+ BEFFBEBCBBFF83888DF3B25608FFDBA25EFFD69C58FFD3944CFFFFFFFFFFD394
+ 4CFFD69C58FFDBA360FFAF5B15FF000000300000002C6F6C6CE473706FFF6B68
+ 67CB727071FF6A6E75DAA3510CB9CC8844FFDEA968FFDAA05BFFFFFFFFFFDAA0
+ 5BFFDEA968FFCB8846FFA55716CA7D7A7800726F6E00726F6EF66E6B6AE00000
+ 00266D6C6CDF6C7177EF00000021AF5B13FFCD8E4CFFE5B676FFE3B271FFE5B6
+ 76FFCD8E4CFFAE5B15FF2F1907317E7B790073706F00000000310000002B7976
+ 75000000002B0000002FB85F12002313053DA45615CAAE5A13FFAD5912FFAE5A
+ 13FFA45615CA2514053D00000003000000000000000000000000000000000000
+ 0000000000000000000000000000000000020000002600000033000000330000
+ 00330000002600000003000000009E9E9E8F9B9B9BFF9A9A9AFF9A9B9BFF9B9B
+ 9BFF9B9B9BFF9B9B9BFF9B9B9BFF9B9B9BFF9B9B9BFF9B9B9BFF9A9B9BFF9A9A
+ 9AFF9B9B9BFF9E9E9E8FFFFFFF009B9B9BFFF9F7F6FFE0DEDDFFE0DFDEFFE1E0
+ DFFFE1E0DFFFE1E0DFFFE1E0DFFFE1E0DFFFE1E0DFFFE1E0DFFFE0DFDEFFE0DE
+ DDFFF9F7F6FF9B9B9BFFFFFFFF00999A9AFFF1F2F0FFB9B7B5FFBBB9B7FFBBB9
+ B7FFBBB9B7FFBBB9B7FFBBB9B7FFBBB9B7FFBCB9B7FFBCBAB7FFBBB9B7FFB9B7
+ B5FFF1F2F0FF999A9AFFFFFFFF00999A9AFFF0EFEEFFBFBDBBFFC0BEBCFFC1BF
+ BCFFC1BFBCFFC1BFBCFFC1BFBDFFC1BFBDFFC1C0BDFFC1C0BDFFC1BFBDFFBFBD
+ BBFFF0EFEEFF999A9AFFFFFFFF00999A9AFFEFECEDFFC7C3C2FFF1F1F0FFF3F2
+ F1FFF3F2F1FFF3F2F1FFF3F2F1FFE9E7E6FFC9C6C5FFC7C4C3FFC6C3C2FFC5C2
+ C1FFEEECECFF999A9AFFFFFFFF00999A9AFFEDECEBFFCECBCAFF363433FF3A38
+ 37FF3B3938FF3B3938FF3A3837FF363433FFD0CDCCFFCCC8C7FFCBC8C7FFC9C6
+ C5FFECECEAFF999A9AFFFFFFFF00999A9AFFECEAEAFFD1CFCDFFD6D4D2FFDAD8
+ D6FFFCFBFAFFFDFCFBFFFDFCFBFFFBFAF9FFF6F5F4FFF4F3F2FFEAE9E8FFD0CE
+ CBFFECEAEAFF999A9AFFFFFFFF00999A9AFFEAE9E8FFD3D1D0FFD5D3D2FFDAD7
+ D6FF474443FF4B4846FF4B4847FF4B4847FF4A4746FF494645FF454241FFD8D5
+ D4FFEBEAE9FF999A9AFFFFFFFF00999999FFEBEAEAFFD7D5D4FFD7D5D4FFDCDA
+ D9FFF9F8F9FFFDFCFCFFFDFDFDFFFDFDFDFFFDFDFDFFF6F4F4FFE0DEDDFFDAD8
+ D7FFECEBEBFF999999FFFFFFFF00999999FFECEBEAFFDBDAD9FFDCDBDAFFE0E0
+ DFFF54504FFF595554FF595655FF595655FF595554FF545150FFE1E0DFFFDDDC
+ DBFFECEBEAFF999999FFFFFFFF00999999FFEDECECFFDFDEDDFFDFDEDDFFE4E3
+ E2FFFAFBFAFFFEFFFEFFFFFFFFFFFFFFFEFFF8F9F8FFE8E7E6FFE2E1E0FFE0DF
+ DEFFEDECECFF999999FFFFFFFF00989999FFEFEEEEFFE5E3E3FFE5E3E3FFE9E7
+ E7FF615D5CFF656261FF666261FF656261FF615E5CFFEAE8E8FFE5E3E3FFE5E3
+ E3FFEFEEEEFF989999FFFFFFFF00999999FFF3F1F1FFEAE8E8FFEAE8E8FFECEA
+ EAFFF0EEEEFFF2F0F0FFF3F0F1FFF2F0F0FFF0EEEEFFECEAEAFFEAE8E8FFEAE8
+ E8FFF3F1F1FF999999FFFFFFFF009A9A9AFFFAF9F9FFF5F4F3FFF5F4F2FFF5F4
+ F3FFF6F5F3FFF6F5F4FFF6F5F4FFF6F5F4FFF6F5F3FFF5F4F3FFF5F4F2FFF5F4
+ F3FFFAF9F9FF9A9A9AFFFFFFFF007B7B7B889A9A9AFF989898FF989898FF9898
+ 98FF989898FF989898FF989898FF989898FF989898FF989898FF989898FF9898
+ 98FF9A9A9AFF8585859CFFFFFF00000000000000003300000033000000330000
+ 0033000000330000003300000033000000330000003300000033000000330000
+ 0033000000330000001AFFFFFF000000000000000000000000002C3CC25B303F
+ C4FF4555CEFF4454CDFF4354CDFF4454CDFF4555CEFF303FC4FF2C3CC25B0000
+ 00000000000000000000FFFFFF0000000000000000002C3CC2582F3EC3FF95A1
+ EFFFAEB9F8FFADB9F7FFADB9F7FFADB9F7FFAEB9F8FF95A1EFFF2F3EC3FF2C3C
+ C2580000000000000000FFFFFF00000000002C3CC2582F3FC2FF97A4EEFF7B8D
+ F1FF2340E5FF2542E5FF2642E5FF2542E5FF2340E5FF7B8DF1FF97A4EEFF2F3F
+ C2FF2C3CC25800000000FFFFFF002D3DC25B2E3EC3FF99A6F0FF7F91F3FF2B47
+ E7FF304CE8FF324DE8FF324DE8FF324DE8FF304CE8FF2B47E7FF7F91F3FF99A6
+ F0FF2E3EC3FF2D3DC25BFFFFFF002838C1FF9FABF1FF8393F4FF304BE9FF3651
+ EAFF3853EAFF3953EAFF3953EAFF3953EAFF3853EAFF3651EAFF304BE9FF8393
+ F4FF9FABF1FF2838C1FFFFFFFF002637BFFFCED6FFFF334EEDFF3B54EDFF3E57
+ EDFF3E57EDFF3E57EDFF3E57EDFF3E57EDFF3E57EDFF3E57EDFF3B54EDFF334E
+ EDFFC6CFFEFF2737BFFFFFFFFF002737BFFF9AA8FBFF3B55EFFF405AEFFF425B
+ EFFF425BEFFF425BEFFF425BEFFF425BEFFF425BEFFF425BEFFF405AEFFF3C56
+ EFFF8E9DFAFF2838BFFFFFFFFF002939BFFF8696FBFF435AF1FF465DF1FF475E
+ F1FF475EF1FF475EF1FF475EF1FF475EF1FF475EF1FF475EF1FF465DF1FF435B
+ F1FF7D90F9FF2A39BFFFFFFFFF002A3ABFFF7386FAFF4A60F4FF4C62F3FF4C62
+ F3FF4C62F3FF4C62F3FF4C62F3FF4C62F3FF4C62F3FF4C62F3FF4C62F3FF4A60
+ F4FF6E81FAFF2B3ABFFFFFFFFF002B3BBFFF6276FCFF5066F6FF5066F5FF5066
+ F5FF5066F5FF5066F5FF5066F5FF5066F5FF5066F5FF5066F5FF5066F5FF5066
+ F6FF5F75FCFF2C3BBFFFFFFFFF002D3DC0FF5367F2FF576CFAFF556BF8FF556A
+ F7FF556AF7FF556AF7FF556AF7FF556AF7FF556AF7FF556AF7FF566BF8FF576D
+ FAFF5166F2FF2D3DC0FFFFFFFF00222D8E7C303FC2FF5669F3FF5D71FCFF5B6F
+ FAFF5A6EF9FF5A6EF9FF5A6EF9FF5A6EF9FF5A6EF9FF5B6FFAFF5D71FCFF5669
+ F3FF303FC2FF222D8E7CFFFFFF0000000012212D8D792F3EC2FF596CF6FF6175
+ FFFF5F74FEFF5F73FDFF5F73FDFF5F73FDFF5F74FEFF6175FFFF596CF6FF2F3E
+ C2FF212D8D7900000012FFFFFF000000000000000012212D8D792F3EC3FF5F71
+ F9FF697DFFFF697CFFFF697CFFFF697CFFFF697DFFFF5F71F9FF2F3EC3FF212D
+ 8D790000001200000000FFFFFF00000000000000000000000012222D8E7C2C3C
+ C0FF2B3BBEFF2B3ABEFF2B3ABEFF2B3ABEFF2B3BBEFF2C3CC0FF222D8E7C0000
+ 00120000000000000000FFFFFF00000000000000000000000000000000120000
+ 0033000000330000003300000033000000330000003300000033000000120000
+ 00000000000000000000FFFFFF00AF9B8600AF9B8600AD9984B0AB9681FFA995
+ 80FFA99580FFA99580FFA99580FFA99480FFA99480FFA9947FFFA9947FFFAB96
+ 81FFAD9984B0AF9B8600AF9B8600AE9A8400AE998300AA957FFFF3F7EAFFF0F6
+ ECFFF0F7EEFFF0F7EEFFEFF6EDFFEFF5ECFFEFF5EBFFEFF4EAFFF0F4E8FFF2F2
+ E4FFAA957FFFAE998300AE9A8400AC988200AB978100A7927CFFEDEFE4FFCD70
+ 15FFD27F27FFD98B34FFDC923EFFDE9848FFE09C52FFDE9F5AFFDFA061FFE8E7
+ D9FFA6927CFFAB978100AC988200AA968000A9957F00A5907BFFE6E8DBFFD27E
+ 23FFDC9039FFE19C45FFE5A34EFFE6A857FFE6AC61FFE5AD69FFE4A96AFFE3E0
+ D0FFA4907AFFA9957F00AA968000A8947E00A7937D00A38F79FFE0DED0FFDA89
+ 2AFFE29B3FFFE7A74BFFEDB057FFEEB461FFEDB76BFFEBB874FFE9B271FFDDD8
+ C8FFA38F79FFA7937D00A8947E00A6927C00A5917B00A18D78FFDAD4C4FFDF92
+ 30FFE8A345FFEEAF4DFFF0AD42FFF0AB37FFECA12CFFE69729FFDF8B20FFD8D1
+ C0FFA18D78FFA5917B00A6927C00A4907A00A38F79009F8B77FFD4CBB9FFE498
+ 34FFEAA037FFEFA52DFFF7AF2DFFF9B02EFFF2A82EFFEB9E2DFFE49023FFD3C9
+ B7FF9F8B77FFA38F7900A4907A00A28E7800A18D77009D8975FFCEC0AAFFE591
+ 24FFEB9820FFF3A421FFFDB023FFFFB323FFF6A822FFED9C21FFE58E1BFFCFBF
+ A9FF9D8A75FFA18D7700A28E7800A08A73009F8A74009C8872FFCCB699FFF3F9
+ F1FFF0F7F1FFEFF6F1FFEEF5F1FFEEF5F1FFEEF5F1FFF0F6F1FFF3F9F1FFCCB6
+ 99FF9C8872FF9F8A7400A08A7300A19B8E00A19B8F008A7965B19A8874FF9785
+ 71FF968470FF968370FF968370FF968370FF968370FF968470FF978571FF9A88
+ 74FF8A7965B1A19B8F00A19B8E00A1998C009F978A00989185DE9B9387FF9A93
+ 86FF9A9386FF9A9285FF9A9286FF9A9285FF9A9286FF9A9285FF9A9386FF9B93
+ 86FF989184DE9F978A00A1998C009F9789009A9183E3EEECE9FFCFC9BEFFF3F1
+ EEFFCEC8BEFFF3F1EEFFCEC8BEFFF3F1EEFFCEC8BEFFF3F1EEFFCEC8BDFFF3F1
+ EEFFEDECE8FF999183E29F9789009C9486AAF0ECEAFFCDC8BDFFF0EEEAFFCBC6
+ BBFFF0EEEAFFCBC6BBFFF0EEEAFFCBC6BBFFF0EEEAFFCBC6BBFFF0EEEAFFCCC6
+ BCFFCEC9BEFFF0ECEAFF9C9486E99C9487FFE8E5DFFFE5E1DBFFE3E0DAFFE3E0
+ DAFFE3E0DAFFE3E0DAFFE3E0DAFFE3E0DAFFE3E0DAFFE3E0DAFFE3E0DAFFE4E1
+ DAFFE5E1DBFFE8E5DFFF9C9487FF9D9588F29C9487FF9B9385FF9B9285FF9B92
+ 85FF9B9285FF9B9285FF9B9285FF9B9285FF9B9285FF9B9285FF9B9285FF9B93
+ 85FF9B9385FF9C9487FF9D9588F2000000000000003300000033000000330000
+ 0033000000330000003300000033000000330000003300000033000000330000
+ 0033000000330000003300000000A5A5A5EFA2A2A2FFA0A0A0FFA1A1A1FFA1A1
+ A1FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1
+ A1FFA0A0A0FFA2A2A2FFA5A5A5EFA2A2A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFA2A2A2FFA0A0A0FFFFFFFFFFE6E5E4FF42403FFF5351
+ 4FFF5D5B5AFF696664FF73706EFF767472FF6B6968FF615F5EFF575552FF4643
+ 42FFE7E6E4FFFFFFFFFFA0A0A0FF9F9F9FFFFFFFFFFFE7E7E6FFECEEEFFFEFF3
+ F5FFEFF1F2FFEEEFEFFFF0F1F0FFF6F6F5FFF8F9F8FFF9FAF9FFF9FAF9FFF5F5
+ F4FFEAEAE9FFFFFFFFFF9F9F9FFF9F9F9FFFFFFFFFFFE8E8E8FFEBEEF2FFD18F
+ 47FFEBEAECFFECEEF1FFF3F2F3FF514F4DFF6C6A69FF817E7CFF716F6EFF5553
+ 51FFF0EFEEFFFFFFFFFF9F9F9FFF9F9F9FFFFFFFFFFFEAECEEFFECF5FEFFD487
+ 2FFFD79549FFEAE0D4FFF4F7F9FF504E4CFF6C6969FF807E7CFF706E6DFF5552
+ 50FFF2F3F2FFFFFFFFFF9F9F9FFF9F9F9FFFFFFFFFFFEDF0F3FFDA8828FFDE94
+ 3BFFDE933AFFDF9945FFF6F8FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+ FDFFF4F2F1FFFFFFFFFF9F9F9FFF9F9F9FFFFFFFFFFFEFF2F4FFF2FBFFFFD286
+ 2EFFD48D3AFFEEE4DAFFFAFDFEFF504E4CFF6B6968FF807E7BFF706E6DFF5452
+ 4FFFF8F8F7FFFFFFFFFF9F9F9FFF9F9F9FFFFFFFFFFFF3F3F3FFF5F9FDFFD190
+ 47FFF3F5F7FFF7F9FCFFFEFEFDFF4F4D4BFF6B6968FF7F7D7BFF706D6DFF5451
+ 4FFFFCFBFAFFFFFFFFFF9F9F9FFF9F9F9FFFFFFFFFFFF8F8F8FFFEFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFCFCFBFFFFFFFFFF9F9F9FFF9F9F9FFFFFFFFFFFFEFEFEFF413F3EFF5351
+ 4FFF5D5B5AFF686663FF72706EFF767471FF6A6766FF5F5D5CFF555250FF4341
+ 40FFFEFEFEFFFFFFFFFF9F9F9FFF9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFEFCFCFFFFFFFFFF9F9F9FFF9F9F9FFFFFFFFFFFFFFFFFFF444240FF5D5A
+ 58FF6F6D6AFF73706EFF605E5BFF484645FFFFFFFFFFFFFFFFFFFEFEFFFFFEFE
+ FEFFFEFEFEFFFFFFFFFF9F9F9FFFA2A2A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFA2A2A2FF979797C0A2A2A2FFA0A0A0FFA1A1A1FFA1A1
+ A1FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1A1FFA0A0A0FF9F9F9FFF9F9F9FFF9F9F
+ 9FFF9F9F9FFFA2A2A2FF979797C0000000000000003300000033000000330000
+ 0033000000330000003300000033000000330000003300000033000000330000
+ 0033000000330000003300000000A5A5A5EFA2A2A2FFA0A0A0FFA1A1A1FFA1A1
+ A1FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1
+ A1FFA0A0A0FFA2A2A2FFA5A5A5EFA2A2A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFA2A2A2FFA0A0A0FFFFFFFFFFE6E5E4FF42403FFF5351
+ 4EFF5D5B5BFF696664FF73706EFF767472FF6B6968FF615F5EFF575552FF4643
+ 42FFE7E6E4FFFFFFFFFFA0A0A0FF9F9F9FFFFFFFFFFFE7E7E6FFECEDEDFFEFF1
+ F2FFEFF2F5FFEEF0F1FFF0F1F1FFF6F6F5FFF8F9F8FFF9FAF9FFF9FAF9FFF5F5
+ F4FFEAEAE9FFFFFFFFFF9F9F9FFF9F9F9FFFFFFFFFFFE8E7E7FFEAECEFFFEBEA
+ ECFFD18F47FFEDF0F4FFF3F3F3FF514F4CFF6C6A69FF817E7CFF716F6EFF5553
+ 51FFF0EFEEFFFFFFFFFF9F9F9FFF9F9F9FFFFFFFFFFFEAECEEFFE7DFD2FFD795
+ 49FFD4872FFFEEF7FFFFF4F7F9FF504E4CFF6C6969FF807E7CFF706E6DFF5552
+ 50FFF2F3F2FFFFFFFFFF9F9F9FFF9F9F9FFFFFFFFFFFEDF0F3FFDE9743FFDE93
+ 3AFFDE943BFFDB8A29FFF6F8FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+ FDFFF4F2F1FFFFFFFFFF9F9F9FFF9F9F9FFFFFFFFFFFEFF2F4FFECE3D8FFD48D
+ 3AFFD2862EFFF4FCFFFFFAFCFEFF504E4CFF6B6968FF807E7BFF706E6DFF5452
+ 4FFFF8F8F7FFFFFFFFFF9F9F9FFF9F9F9FFFFFFFFFFFF3F3F2FFF5F7F9FFF3F5
+ F7FFD19047FFF8FBFFFFFEFEFEFF4F4D4AFF6B6968FF7F7D7BFF706D6DFF5451
+ 4FFFFCFBFAFFFFFFFFFF9F9F9FFF9F9F9FFFFFFFFFFFF8F8F7FFFDFEFEFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFCFCFBFFFFFFFFFF9F9F9FFF9F9F9FFFFFFFFFFFFEFEFEFF413E3DFF5250
+ 4EFF5D5B5BFF686664FF72706EFF767471FF6A6766FF5F5D5CFF555250FF4341
+ 40FFFEFEFEFFFFFFFFFF9F9F9FFF9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFEFCFCFFFFFFFFFF9F9F9FFF9F9F9FFFFFFFFFFFFFFFFFFF444240FF5D5A
+ 58FF6F6D6AFF73706EFF605E5BFF484645FFFFFFFFFFFFFFFFFFFEFEFFFFFEFE
+ FEFFFEFEFEFFFFFFFFFF9F9F9FFFA2A2A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFA2A2A2FF979797C0A2A2A2FFA0A0A0FFA1A1A1FFA1A1
+ A1FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1A1FFA0A0A0FF9F9F9FFF9F9F9FFF9F9F
+ 9FFF9F9F9FFFA2A2A2FF979797C0000000000000003300000033000000330000
+ 0033000000330000003300000033000000330000003300000033000000330000
+ 0033000000330000003300000000B3B3B1EFB0B0ADFFAEAEACFFAEAEABFFAEAE
+ ABFFAEAEABFFADAEABFFAEAEABFFAFAFADFFB0B0AEEAB3B3B100B5B5B200B4B9
+ B000C188D400BF8AD200AC7BCC00AFAFADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9FFAEAEACA6B3B3B000B3B9
+ B000C188D400BF8AD200AC7BCC00AEAEACFFFFFFFFFFE0DFDEFFE1DFDEFFE1E0
+ DFFFE1DFDEFFE0DFDEFFFFFFFFFFA5A5A3FFFFFFFFFFE8E8E8FFAFAFACA6B2B8
+ AE00C088D400BF8AD200AC7BCC00AEAEABFFFFFFFFFFE3E3E2FFE4E4E3FFE4E5
+ E4FFE4E4E3FFE3E3E2FFFFFFFFFFA7A7A4FFEBEBEAFFFFFFFFFFEAEBEAFFB1B6
+ AD98C087D5FFBE8AD3FFAC7BCC00ADAEABFFFFFFFFFFE7E6E4FFE8E7E6FFE8E7
+ E6FFE8E7E6FFE7E5E4FFFFFFFFFFCCCCCAFFA8A7A5FFA9A8A6FFFFFFFFFF7D7E
+ 77FFE1B1DFFFCB96C6FFAE7DCEFFADADABFFFFFFFFFFEAEAE9FFECECEBFFEDED
+ ECFFECECEBFFEAEAE9FFF4F4F3FFFFFFFFFFFFFFFFFFFFFFFFFF807973FFE9E6
+ E2FF888B82FFBA7AB6FF9869CAFFADADABFFFFFFFFFFEFEEECFFCACACAFFCBCC
+ CCFFCACACAFFF0EEEDFFF0EEECFFF7F2EEFFFFF7EEFF1C70C4FFACD9EEFF9188
+ 7FFFC1BFB8FF777C6EFF00000033ADADABFFFFFFFFFFF2F2F0FFCACACBFFCDCD
+ CDFFCBCBCBFFF4F4F2FFFAF7F3FF9F938AFF2674C4FF40C6FFFF20AAFFFF83B0
+ D7FF7E7871FF000000339D6ACF00ADADABFFFFFFFFFFF5F3F2FFC9C9C9FFCBCB
+ CBFFCACAC9FFFDF8F4FFFFFFF5FF2574C4FF44C7FFFF2BABFFFF129BFFFF2966
+ 9FFF0000003379796F009A64CF00ADADABFFFFFFFFFFF6F6F5FFFAFAF8FFFCFC
+ FAFFFFFDF9FFFFFFF8FF1E6EC2FF3EC4FFFF2AA9FFFF1398FFFF2A6195FFC5BB
+ B1FFBDBBB600BABBB600B8BCB300ADADABFFFFFFFFFFF9F9FAFFC9C9C9FFCDCC
+ CBFFD5CFCCFF39A9EFFF88E4FFFF7ED3FFFF0C95FFFF245C90FFFFFFFFFFB6B3
+ AEFFB6B5B300B6B6B300B5B6B300ADADABFFFFFFFFFFFEFCFDFFCACACAFFCFCE
+ CDFFD9D4D1FF507B9AFF7CA3B4FF87CFFCFF1E5890FFFFFFFFFFFFFFFFFFAFAF
+ ACFFB4B4B200B5B5B300B5B5B300AEAEABFFFFFFFFFFFFFFFFFFC8C8C8FFCCCC
+ CCFFD4D1D0FF40596CFF375879FF367ECEFFFFFFFFFFFFFFFFFFFFFFFFFFAEAE
+ ABFFB4B4B200B5B5B300B5B5B300B0B0ADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0B0
+ ADFFB4B4B200B5B5B300B5B5B300A4A4A2C0AFAFADFFAEAEACFFAEAEACFFAEAE
+ ACFFAFAFACFFB0AFADFFB0AFADFFAFAFACFFAEAEABFFAEAEABFFAFAFADFFA4A4
+ A2C0B5B5B300B5B5B300B5B5B300000000000000003300000033000000330000
+ 0033000000330000003300000033000000330000003300000033000000330000
+ 0000000000000000000000000000929292EF8E8F8FFF8D8D8EFF8D8D8EFF8D8E
+ 8EFF8D8D8EFF8C8D8DFF8C8D8DFF8C8D8DFF8C8D8DFF8C8D8DFF8C8D8DFF8C8C
+ 8DFF8C8D8DFF8E8E8EFF929292EF8E8F8FFFFFFFFFFFF7F7FAFFF7F9FDFFF7F9
+ FEFFF7F7FAFFF5F4F5FFF5F3F3FFF5F3F3FFF5F3F3FFF5F3F3FFF5F2F2FFF4F2
+ F2FFF4F2F2FFFFFFFFFF8E8E8EFF8C8D8DFFFFFFFFFFC4A47FFFAE7A41FFAF7B
+ 41FFC5A581FFE2E2E3FFE2E0E0FFE2E0DFFFE1DFDEFFE0DEDDFFDEDCDBFFDDDB
+ D9FFDCDAD9FFFFFEFEFF8C8C8CFF8C8D8DFFFFFFFFFF9F6931FFF0DABCFFE2BE
+ 91FFA06A33FFE8E9ECFF626364FFA2A3A3FFA1A1A1FF9E9F9FFFE2E0DFFFE0DE
+ DDFFE0DDDCFFFCFDFBFF8C8C8CFF8C8C8DFFFFFFFFFFBC9C7AFFA36E37FFA26D
+ 36FFBC9C7BFFE9EAEEFFE9E8E9FFE9E7E7FFE8E6E6FFE6E4E4FFE4E2E3FFE3E1
+ E1FFE3E1E1FFFCFBFBFF8C8C8CFF8C8C8CFFFEFEFFFFEFEFF2FF858A8EFFF1F4
+ FAFFEDF1F7FFECEFF4FFEBEDF2FFEAEAEDFFE8E7E8FFE8E6E6FFE8E5E6FFE7E5
+ E5FFE7E5E5FFFCFBFBFF8C8C8CFF8C8C8CFFFDFCFCFFF1F1F0FF868788FFF7FA
+ FCFFCBAB89FFAE7A40FFAD7A40FFC8A885FFEFF1F2FFEFEFEEFFEFEEEDFFEFEE
+ ECFFEEEDECFFFDFCFCFF8C8C8CFF8B8C8CFFFEFDFDFFF5F4F3FF878788FF878B
+ 8FFFA26C34FFF0DABCFFE1BD90FF9E6931FFF5F8FBFF5F6061FFA0A0A0FF9E9F
+ 9FFF9C9D9DFFFFFEFEFF8C8C8CFF8B8B8BFFFFFEFEFFF8F7F6FF858585FFFFFF
+ FFFFC2A280FF9F6A34FF9F6A34FFC0A07EFFF5F7F9FFF6F5F4FFF5F4F3FFF5F4
+ F2FFF4F3F2FFFFFEFEFF8C8C8CFF8B8B8BFFFFFFFFFFFAFAFAFF838383FFFDFF
+ FFFFFAFFFFFFFCFFFFFFFCFFFFFFF9FEFFFFF4F7F9FFF4F4F4FFF3F4F4FFF3F3
+ F3FFF4F4F4FFFFFEFEFF8B8B8BFF8B8B8BFFFFFFFFFFFEFEFEFF838384FFFFFF
+ FFFFCFB08CFFAD7941FFAD7941FFCCAD8AFFFBFEFFFFFBFCFCFFFBFBFBFFFAFA
+ FAFFFAFAFAFFFFFFFFFF8B8B8BFF8B8B8BFFFFFFFFFFFFFFFFFF808182FF8387
+ 8AFFA16A32FFF0D9BBFFE0BC8FFF9D672FFFFFFFFFFF5C5D5DFF9E9E9EFF9C9C
+ 9CFF9A9A9AFFFFFFFFFF8B8B8BFF8B8B8BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFC6A584FF9E6932FF9E6932FFC4A482FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFF8B8B8BFF8D8D8DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFF8D8D8DFF868686C08D8D8DFF8A8A8AFF8A8A8AFF8A8A
+ 8BFF8B8B8CFF8B8C8DFF8B8C8DFF8B8B8CFF8A8A8BFF8A8A8AFF8A8A8AFF8A8A
+ 8AFF8A8A8AFF8D8D8DFF868686C0000000000000003300000033000000330000
+ 0033000000330000003300000033000000330000003300000033000000330000
+ 0033000000330000003300000000FFFFFF00FFFFFF0000000000000000000000
+ 000000000000A971314AA76D2DFFA66C2BFFA76D2DFFA9713135000000000000
+ 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+ 000000000000A76D2DFFE4CB96FFE7CD99FFE4CB96FFA76D2DFF000000000000
+ 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+ 000000000000A66C2CFFE7C182FFDEB068FFE7C182FFA66C2DFF000000000000
+ 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+ 000000000000A66D2EFFEEBF76FFF0BE74FFEEBB70FFA66D2DFF000000000000
+ 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+ 000000000000A36B2CEFA26727FFA06525FFA26626FFA26829E9A76D2D8DA970
+ 2F0B00000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+ 0000A66C2BE0C3985CFFE5CA96FFE7CF9CFFE8CF9CFFE5CA96FFD0AB72FFBC8D
+ 50FFA9702F4AFFFFFF00FFFFFF00FFFFFF00FFFFFF00A97131B1A76D2CFFA469
+ 28FFD2AC74FFEBD19CFFD9AD68FFD4A55EFFD4A55EFFD6A963FFE1BE81FFEED5
+ A1FFA46B2CD3FFFFFF00FFFFFF00FFFFFF00FFFFFF00A86F2EFFF6E0AEFFF4DC
+ AAFFE9CC96FFC38D45FFC48C44FFD49F52FFD49E52FFCB9549FFAD7531FFDAA6
+ 57FFA76E2EFFFFFFFF00FFFFFF00FFFFFF00FFFFFF009B682DC1A76D2DFFA66B
+ 2BFFA46A2AF7A36828FFCCA368FFD9A55AFFD9A55AFFEBCB90FFA2692AFFE3B0
+ 64FFA87030FFFFFFFF00FFFFFF00FFFFFF00FFFFFF0000000023000000330000
+ 0033926027A9BC8D52FFF2D7A2FFDCA85EFFE0AE63FFD7A258FFA46A2CF7A870
+ 30FF9C692EBFFFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+ 0000AF793AFFF5DBA9FFE7B86FFFAD7533FFD6A35BFFE5BB7BFF9A6428CB0000
+ 003300000023FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000A66D
+ 2CFDEFD3A1FFE6BB7AFFA96F2FFF81552388BC8541FFF6D193FFC6995FFFA86E
+ 2E0700000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000A56C
+ 2BFFFFDFA4FFA86E2EFF96632AB5000000159D662AD4ECBC74FFF6DCAAFFA66C
+ 2B9400000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000A66E
+ 2EFFFFD488FFA66D2DFF000000200000000082562474C6904CFFFFE3A8FFA66D
+ 2DFF00000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000009B68
+ 2DC1A86F30FF9B682DC00000000000000000000000129A652BBDA76E2EFF9C68
+ 2CC100000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+ 0023000000330000002300000000000000000000000000000023000000330000
+ 002400000000FFFFFF00FFFFFF00000000000000000000000000000000000000
+ 0000BA8545FFB9843FFFB9843FFFBA8545FF0000000000000000000000000000
+ 00000000000000000000000000000000000000000000B98544AFB98443E90000
+ 0000B78140FFE9D4B4FFE9D4B4FFB78140FF00000000B98443E9B98544AF0000
+ 000000000000000000000000000000000000B98544AFCCA26CFFD4B080FFB983
+ 43FFCCA470FFC9984EFFC9984EFFCCA470FFB98343FFD4B080FFCCA26CFFB985
+ 44AF00000000000000000000000000000000B78242ECD3AE7CFFE7CBA4FFEAD4
+ B2FFE8D0ADFFCF9D56FFCF9D56FFE8D0ADFFEAD4B2FFE7CBA4FFD3AE7CFFB782
+ 42EC000000000000000000000000000000000000002FBA8547FFCE9949FFDAB2
+ 76FFC9944BFFBE8943FFBE8943FFC9944BFFDAB276FFCE9949FFBA8546FF0000
+ 002F000000000000000000000000B98442FFB6803EFFCEA673FFDBAE6EFFCB95
+ 4BFFB88344FF6E4F2A616E4F2A61B88344FFCD974AFFDCAE6DFFD0A772FFB981
+ 3CFFBE843FFF0000000000000000C5995FFFF1DCBBFFECD2ACFFD6A152FFC18C
+ 49FF70502A620000000C0000000C704F2861C88D44FFDFA24CFFEACEA6FFF1D7
+ B2FFD79A51FF0000000000000000C38F4EFFE2B572FFDEB06AFFDBA658FFC595
+ 55FF926935300000000000000000AA7333436A8399FFCD9F5FFF298DE2FF2B8F
+ E1FFB48B5AFF3081D29100000000B98545FFB78242FFC8934EFFDFAB5EFFE4C4
+ 94FFB68245DAB8813F3CBE823B2561809CFF37A8EFFF399DE3FF4CCFFDFF4AC7
+ F8FF3D9EE1FF45AAE4FF3982CB9F0000003300000033B78242FFE4B163FFEBC6
+ 8EFFEACFA9FFD1A774FFD9A970FFCCBBA4FF399CE1FF4CCEFBFF3FB0EEFF40B1
+ EFFF4FCFFCFF429EDCFF16324E3100000000B98443E9DDBB8CFFEEC486FFE8B4
+ 66FFF1CC96FFF7DCB5FFFFDEADFF288CDFFF4CCEFBFF3FAFEDFFFAB66DFFC775
+ 1FCE41B1EFFF52D0F9FF3F92D5FF00000000AA7A3FBED2A76FFFD7A561FFB882
+ 41FFD39F58FFEDB96BFFF7B962FF288DE3FF4CCFFCFF40B0EDFFC39F7BFF9876
+ 53CB42B1EEFF52D0F9FF3F92D5FF0000000000000023AA7A3EBFB68243ED0000
+ 0033B58142FFF5C378FFFCC371FFAD7E49FF3B9EE3FF4ECFFBFF41B0EDFF42B1
+ EDFF50CFFAFF439EDCFF1B3D5F520000000000000000000000230000002F0000
+ 0000B88445FFC89451FFCE934AFF6D8192FF40A9EAFF429EDDFF52D0F8FF52D0
+ F8FF439EDCFF48AAE2FF3980C8B6000000000000000000000000000000000000
+ 0000000000330000003300000033000000332D73BAAF1B3D60523F93D4FF3F93
+ D4FF102438413578BAC300000024000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000001F00000008000000330000
+ 0033000000040000002400000000
+ }
end
end
diff --git a/src/ce_main.pas b/src/ce_main.pas
index 35c1082b..a249dda0 100644
--- a/src/ce_main.pas
+++ b/src/ce_main.pas
@@ -7,7 +7,7 @@ interface
uses
Classes, SysUtils, FileUtil, SynEditKeyCmds, Forms, Controls, Graphics,
Dialogs, Menus, ActnList, ce_common, ce_widget, ce_messages, ce_editor,
- ce_project, ce_synmemo, process;
+ ce_project, ce_synmemo, ce_projconf, process, ce_dmdwrap;
type
@@ -15,8 +15,10 @@ type
TCEMainForm = class(TForm)
actCompAndRunFile: TAction;
actCompileProj: TAction;
- ActCompileAndRunProj: TAction;
+ actCompileAndRunProj: TAction;
ActCompAndRunFileWithArgs: TAction;
+ actCompAndRunProjWithArgs: TAction;
+ actProjOpts: TAction;
actNewProj: TAction;
actOpenProj: TAction;
actSaveProjAs: TAction;
@@ -63,6 +65,17 @@ type
MenuItem3: TMenuItem;
MenuItem30: TMenuItem;
MenuItem31: TMenuItem;
+ MenuItem32: TMenuItem;
+ MenuItem33: TMenuItem;
+ MenuItem34: TMenuItem;
+ MenuItem35: TMenuItem;
+ MenuItem36: TMenuItem;
+ MenuItem37: TMenuItem;
+ MenuItem38: TMenuItem;
+ MenuItem39: TMenuItem;
+ MenuItem40: TMenuItem;
+ MenuItem41: TMenuItem;
+ mnuItemWin: TMenuItem;
MenuItem4: TMenuItem;
MenuItem5: TMenuItem;
MenuItem6: TMenuItem;
@@ -72,6 +85,7 @@ type
procedure actAddCurrToProjExecute(Sender: TObject);
procedure actCompAndRunFileExecute(Sender: TObject);
procedure ActCompAndRunFileWithArgsExecute(Sender: TObject);
+ procedure actCompileProjExecute(Sender: TObject);
procedure actCopyExecute(Sender: TObject);
procedure actCutExecute(Sender: TObject);
procedure ActionsUpdate(AAction: TBasicAction; var Handled: Boolean);
@@ -83,25 +97,31 @@ type
procedure actOpenFileExecute(Sender: TObject);
procedure actOpenProjExecute(Sender: TObject);
procedure actPasteExecute(Sender: TObject);
+ procedure actProjOptsExecute(Sender: TObject);
procedure actRedoExecute(Sender: TObject);
procedure actSaveFileAsExecute(Sender: TObject);
procedure actSaveFileExecute(Sender: TObject);
procedure actSaveProjAsExecute(Sender: TObject);
procedure actSaveProjExecute(Sender: TObject);
procedure actUndoExecute(Sender: TObject);
+ procedure FormDropFiles(Sender: TObject; const FileNames: array of String);
private
fProject: TCEProject;
fWidgList: TCEWidgetList;
fMesgWidg: TCEMessagesWidget;
fEditWidg: TCEEditorWidget;
fProjWidg: TCEProjectWidget;
+ fPrjCfWidg: TCEProjectConfigurationWidget;
// widget interfaces subroutines
procedure checkWidgetActions(const aWidget: TCEWidget);
+ procedure widgetShowFromAction(sender: TObject);
// run & exec sub routines
procedure ProcessOutputToMsg(const aProcess: TProcess);
procedure compileAndRunFile(const edIndex: NativeInt; const runArgs: string = '');
+ procedure compileProject(const aProject: TCEProject);
+ procedure runProject(const aProject: TCEProject);
// file sub routines
procedure newFile;
@@ -141,6 +161,10 @@ uses
{$REGION std comp methods ******************************************************}
constructor TCEMainForm.create(aOwner: TComponent);
+var
+ act: TAction;
+ itm: TMenuItem;
+ widg: TCEWidget;
begin
inherited create(aOwner);
//
@@ -148,19 +172,31 @@ begin
fMesgWidg := TCEMessagesWidget.create(nil);
fEditWidg := TCEEditorWidget.create(nil);
fProjWidg := TCEProjectWidget.create(nil);
+ fPrjCfWidg:= TCEProjectConfigurationWidget.create(nil);
fWidgList.addWidget(@fMesgWidg);
fWidgList.addWidget(@fEditWidg);
fWidgList.addWidget(@fProjWidg);
+ fWidgList.addWidget(@fPrjCfWidg);
- checkWidgetActions(fMesgWidg);
+ for widg in fWidgList do widg.Show;
- fMesgWidg.Show;
- fEditWidg.Show;
- fProjWidg.Show;
+ for widg in fWidgList do
+ begin
+ act := TAction.Create(self);
+ act.Category := 'Window';
+ act.Caption := widg.Caption;
+ act.OnExecute := @widgetShowFromAction;
+ act.Tag := ptrInt(widg);
+ itm := TMenuItem.Create(self);
+ itm.Action := act;
+ itm.Tag := ptrInt(widg);
+ mnuItemWin.Add(itm);
+ end;
fProject := TCEProject.Create(self);
fProject.onChange := @projChange;
+ projChange(nil);
end;
@@ -170,6 +206,7 @@ begin
fMesgWidg.Free;
fEditWidg.Free;
fProjWidg.Free;
+ fPrjCfWidg.Free;
//
inherited;
end;
@@ -399,6 +436,14 @@ begin
str := fEditWidg.editor[fEditWidg.editorIndex].fileName;
fProject.addSource(str);
end;
+
+procedure TCEMainForm.FormDropFiles(Sender: TObject;const FileNames: array of String);
+var
+ fname: string;
+begin
+ for fname in FileNames do
+ openFile(fname);
+end;
{$ENDREGION}
{$REGION edit ******************************************************************}
@@ -503,18 +548,21 @@ procedure TCEMainForm.compileAndRunFile(const edIndex: NativeInt; const runArgs:
var
dmdproc: TProcess;
runproc: TProcess;
- fname, temppath: string;
+ fname, temppath, olddir: string;
begin
+ olddir := '';
dmdproc := TProcess.Create(nil);
runproc := TProcess.Create(nil);
+ getDir(0,olddir);
try
- temppath := GetTempDir;
+ temppath := GetTempDir(false);
+ chDir(temppath);
{$IFDEF DEBUG}{$WARNINGS OFF}{$HINTS OFF}{$ENDIF}
fname := temppath + format('temp_%.8x',[LongWord(@dmdproc)]);
{$IFDEF DEBUG}{$WARNINGS ON}{$HINTS ON}{$ENDIF}
fEditWidg.editor[edIndex].Lines.SaveToFile(fname + '.d');
- dmdproc.Options:= [poWaitOnExit,poUsePipes,poStdErrToOutput];
+ dmdproc.Options:= [poWaitOnExit,poStdErrToOutput,poUsePipes];
dmdproc.Executable:= 'dmd';
dmdproc.Parameters.Text := '"'+ fname +'.d"';
try
@@ -547,9 +595,39 @@ begin
finally
dmdproc.Free;
runproc.Free;
+ chDir(olddir);
end;
end;
+procedure TCEMainForm.compileProject(const aProject: TCEProject);
+var
+ dmdproc: TProcess;
+ olddir, prjpath: string;
+begin
+ dmdproc := TProcess.Create(nil);
+ getDir(0,olddir);
+ try
+
+ prjpath := extractFilePath(aProject.fileName);
+ if directoryExists(prjpath) then chDir(prjpath);
+ dmdproc.Options:= [poStdErrToOutput,poUsePipes];
+ dmdproc.Executable := 'dmd';
+ dmdproc.Parameters.Text := aProject.getOpts;
+ dmdproc.Execute;
+ ProcessOutputToMsg(dmdproc);
+
+ finally
+ dmdproc.Free;
+ chDir(olddir);
+ end;
+end;
+
+procedure TCEMainForm.runProject(const aProject: TCEProject);
+begin
+ if aProject.currentConfiguration.outputOptions.binaryKind <>
+ executable then exit;
+end;
+
procedure TCEMainForm.actCompAndRunFileExecute(Sender: TObject);
begin
if fEditWidg = nil then exit;
@@ -569,9 +647,19 @@ begin
if InputQuery('Execution arguments', 'enter switches and arguments',
runargs) then compileAndRunFile(fEditWidg.editorIndex, runargs);
end;
+
+procedure TCEMainForm.actCompileProjExecute(Sender: TObject);
+begin
+ compileProject(fProject);
+end;
{$ENDREGION}
{$REGION view ******************************************************************}
+procedure TCEMainForm.widgetShowFromAction(sender: TObject);
+begin
+ TCEWidget( TComponent(sender).tag ).Show;
+end;
+
{$ENDREGION}
{$REGION project ***************************************************************}
@@ -584,8 +672,21 @@ begin
end;
procedure TCEMainForm.newProj;
+var
+ // cf. with ce_projconf, fProject is hook
+ // ICEProjectMonitor would recquire beforeProjChanged-), afterProjChage(), ...
+ old: TCEProject;
begin
- fProject.reset;
+ old := fProject;
+ fProject := nil;
+ projChange(nil);
+ //
+ old.Free;
+ old := nil;
+ //
+ fProject := TCEProject.Create(self);
+ fProject.onChange := @projChange;
+ projChange(nil);
end;
procedure TCEMainForm.saveProj;
@@ -647,5 +748,10 @@ begin
Free;
end;
end;
+
+procedure TCEMainForm.actProjOptsExecute(Sender: TObject);
+begin
+ fPrjCfWidg.Show;
+end;
{$ENDREGION}
end.
diff --git a/src/ce_messages.lfm b/src/ce_messages.lfm
index fb1b881f..9fc00722 100644
--- a/src/ce_messages.lfm
+++ b/src/ce_messages.lfm
@@ -1,35 +1,35 @@
inherited CEMessagesWidget: TCEMessagesWidget
- Left = 1248
- Height = 186
- Top = 643
- Width = 657
+ Left = 1247
+ Height = 85
+ Top = 463
+ Width = 658
Caption = 'MessagesWidget'
- ClientHeight = 186
- ClientWidth = 657
+ ClientHeight = 85
+ ClientWidth = 658
inherited Back: TPanel
- Height = 186
- Width = 657
- ClientHeight = 186
- ClientWidth = 657
+ Height = 85
+ Width = 658
+ ClientHeight = 85
+ ClientWidth = 658
inherited Content: TScrollBox
- Height = 160
- Width = 657
- HorzScrollBar.Page = 653
- VertScrollBar.Page = 156
- ClientHeight = 156
- ClientWidth = 653
+ Height = 59
+ Width = 658
+ HorzScrollBar.Page = 637
+ VertScrollBar.Page = 55
+ ClientHeight = 55
+ ClientWidth = 637
object List: TListView[0]
Left = 2
- Height = 152
+ Height = 150
Top = 2
- Width = 649
+ Width = 633
Align = alClient
AutoSort = False
AutoWidthLastColumn = True
BorderSpacing.Around = 2
Columns = <
item
- Width = 645
+ Width = 629
end>
GridLines = True
IconOptions.Arrangement = iaLeft
@@ -40,10 +40,10 @@ inherited CEMessagesWidget: TCEMessagesWidget
end
end
inherited Header: TPanel
- Width = 657
+ Width = 658
end
end
- object imgList: TImageList[1]
+ object imgList: TImageList[2]
Bitmap = {
4C69030000001000000010000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
diff --git a/src/ce_projconf.lfm b/src/ce_projconf.lfm
new file mode 100644
index 00000000..09ff58f8
--- /dev/null
+++ b/src/ce_projconf.lfm
@@ -0,0 +1,119 @@
+inherited CEProjectConfigurationWidget: TCEProjectConfigurationWidget
+ Left = 1249
+ Height = 377
+ Top = 587
+ Width = 546
+ Caption = 'ProjectConfigurationWidget'
+ ClientHeight = 377
+ ClientWidth = 546
+ inherited Back: TPanel
+ Height = 377
+ Width = 546
+ ClientHeight = 377
+ ClientWidth = 546
+ inherited Content: TScrollBox
+ Height = 351
+ Width = 546
+ HorzScrollBar.Page = 542
+ VertScrollBar.Page = 347
+ ClientHeight = 347
+ ClientWidth = 542
+ object Tree: TTreeView[0]
+ Left = 4
+ Height = 313
+ Top = 30
+ Width = 190
+ Align = alLeft
+ BorderSpacing.Around = 4
+ DefaultItemHeight = 18
+ ScrollBars = ssAutoBoth
+ ShowRoot = False
+ TabOrder = 0
+ Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoShowButtons, tvoShowLines, tvoToolTips, tvoThemedDraw]
+ Items.Data = {
+ F9FFFFFF020003000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000
+ 0000000700000047656E6572616CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0500
+ 000000000000010A00000043617465676F72696573FFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFF000000000000000000080000004D65737361676573FFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFF000000000000000000080000004465627567696E67FF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000D000000446F6375
+ 6D656E746174696F6EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000
+ 0000060000004F7574707574FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000
+ 0000000000060000004F7468657273FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+ 00000000000000000E000000416C6C2063617465676F72696573
+ }
+ end
+ inline frameEditAll: TCEProjConfAll[1]
+ Left = 198
+ Height = 317
+ Top = 28
+ Width = 342
+ Align = alClient
+ BorderSpacing.Around = 2
+ ClientHeight = 317
+ ClientWidth = 342
+ TabOrder = 1
+ DesignLeft = 1406
+ DesignTop = 572
+ inherited Grid: TTIPropertyGrid
+ Left = 2
+ Height = 313
+ Top = 2
+ Width = 338
+ BorderSpacing.Around = 2
+ DefaultItemHeight = 22
+ PreferredSplitterX = 150
+ SplitterX = 150
+ end
+ end
+ object Panel1: TPanel[2]
+ Left = 2
+ Height = 24
+ Top = 2
+ Width = 538
+ Align = alTop
+ BorderSpacing.Around = 2
+ BevelOuter = bvNone
+ ClientHeight = 24
+ ClientWidth = 538
+ TabOrder = 2
+ object selConf: TComboBox
+ Left = 0
+ Height = 23
+ Top = 1
+ Width = 297
+ Align = alClient
+ BorderSpacing.Top = 1
+ BorderSpacing.Right = 1
+ ItemHeight = 15
+ OnChange = selConfChange
+ Style = csDropDownList
+ TabOrder = 0
+ end
+ object btnAddConf: TButton
+ Left = 298
+ Height = 24
+ Top = 0
+ Width = 120
+ Align = alRight
+ Caption = 'Add configuration'
+ OnClick = btnAddConfClick
+ TabOrder = 1
+ end
+ object btnDelConf: TButton
+ Left = 418
+ Height = 24
+ Top = 0
+ Width = 120
+ Align = alRight
+ Caption = 'Delete configuration'
+ OnClick = btnDelConfClick
+ TabOrder = 2
+ end
+ end
+ end
+ inherited Header: TPanel
+ Width = 546
+ end
+ end
+end
diff --git a/src/ce_projconf.pas b/src/ce_projconf.pas
new file mode 100644
index 00000000..6db7e172
--- /dev/null
+++ b/src/ce_projconf.pas
@@ -0,0 +1,107 @@
+unit ce_projconf;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
+ ComCtrls, StdCtrls, ce_widget, ce_common, ce_projconfall, ce_dmdwrap;
+
+type
+
+ { TCEProjectConfigurationWidget }
+ TCEProjectConfigurationWidget = class(TCEWidget)
+ btnAddConf: TButton;
+ btnDelConf: TButton;
+ selConf: TComboBox;
+ frameEditAll: TCEProjConfAll;
+ Panel1: TPanel;
+ Tree: TTreeView;
+ procedure btnAddConfClick(Sender: TObject);
+ procedure btnDelConfClick(Sender: TObject);
+ procedure selConfChange(Sender: TObject);
+ private
+ fProj: TCEProject;
+ protected
+ procedure updaterProc2; //override;
+ public
+ procedure projChange(const aProject: TCEProject); override;
+ property project: TCEProject read fProj;
+ end;
+
+implementation
+{$R *.lfm}
+
+procedure TCEProjectConfigurationWidget.projChange(const aProject: TCEProject);
+begin
+ fProj := aProject;
+ updaterProc2;
+end;
+
+procedure TCEProjectConfigurationWidget.selConfChange(Sender: TObject);
+begin
+ if fUpdating then exit;
+ if fProj = nil then exit;
+ if selConf.ItemIndex = -1 then exit;
+ //
+ fProj.ConfigurationIndex := selConf.ItemIndex;
+ updaterProc2;
+end;
+
+procedure TCEProjectConfigurationWidget.btnAddConfClick(Sender: TObject);
+var
+ nme: string;
+ cfg: TCompilerConfiguration;
+begin
+ if fProj = nil then exit;
+ //
+ cfg := fProj.addConfiguration;
+ nme := '';
+ if InputQuery('Configuration name', '', nme) then cfg.name := nme;
+ fProj.ConfigurationIndex := cfg.Index;
+end;
+
+procedure TCEProjectConfigurationWidget.btnDelConfClick(Sender: TObject);
+begin
+ if fProj = nil then exit;
+ if fProj.OptionsCollection.Count = 1 then exit;
+ //
+ frameEditAll.Grid.TIObject := nil;
+ frameEditAll.Grid.Clear;
+ frameEditAll.Invalidate;
+ fProj.OptionsCollection.Delete(selConf.ItemIndex);
+ fProj.ConfigurationIndex := 0;
+ updaterProc2;
+end;
+
+procedure TCEProjectConfigurationWidget.updaterProc2;
+var
+ i: NativeInt;
+ obj: TPersistent;
+begin
+
+ selConf.Clear;
+
+ if (fProj = nil) then
+ begin
+ frameEditAll.Grid.Selection.Clear;
+ frameEditAll.Grid.Clear;
+ // AV if the previous TIObject is already destroyed
+ frameEditAll.Grid.TIObject := nil;
+ frameEditAll.Invalidate;
+ exit;
+ end;
+
+ for i:= 0 to fProj.OptionsCollection.Count-1 do
+ selConf.Items.Add(fProj.configuration[i].name);
+ selConf.ItemIndex := fProj.ConfigurationIndex;
+
+ obj := fProj.configuration[fProj.ConfigurationIndex];
+ if frameEditAll.Grid.TIObject <> obj then
+ frameEditAll.Grid.TIObject := obj;
+
+end;
+
+end.
+
diff --git a/src/ce_projconfall.lfm b/src/ce_projconfall.lfm
new file mode 100644
index 00000000..8d02de2c
--- /dev/null
+++ b/src/ce_projconfall.lfm
@@ -0,0 +1,20 @@
+inherited CEProjConfAll: TCEProjConfAll
+ Height = 428
+ Width = 297
+ ClientHeight = 428
+ ClientWidth = 297
+ DesignLeft = 1271
+ DesignTop = 500
+ object Grid: TTIPropertyGrid[0]
+ Left = 0
+ Height = 428
+ Top = 0
+ Width = 297
+ Align = alClient
+ DefaultValueFont.Color = clWindowText
+ Filter = [tkInteger, tkChar, tkEnumeration, tkFloat, tkSet, tkMethod, tkSString, tkLString, tkAString, tkWString, tkVariant, tkArray, tkRecord, tkInterface, tkClass, tkObject, tkWChar, tkBool, tkInt64, tkQWord, tkDynArray, tkInterfaceRaw, tkProcVar, tkUString, tkUChar, tkHelper]
+ Indent = 16
+ NameFont.Color = clWindowText
+ ValueFont.Color = clMaroon
+ end
+end
diff --git a/src/ce_projconfall.pas b/src/ce_projconfall.pas
new file mode 100644
index 00000000..8e85bfa1
--- /dev/null
+++ b/src/ce_projconfall.pas
@@ -0,0 +1,28 @@
+unit ce_projconfall;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, FileUtil, RTTIGrids, Forms, Controls, Graphics, Dialogs,
+ ce_projconfframe;
+
+type
+
+ { TCEProjConfAll }
+
+ TCEProjConfAll = class(TCEProjConfFrame)
+ Grid: TTIPropertyGrid;
+ private
+ { private declarations }
+ public
+ { public declarations }
+ end;
+
+implementation
+
+{$R *.lfm}
+
+end.
+
diff --git a/src/ce_projconfframe.lfm b/src/ce_projconfframe.lfm
new file mode 100644
index 00000000..87c8ea8d
--- /dev/null
+++ b/src/ce_projconfframe.lfm
@@ -0,0 +1,9 @@
+object CEProjConfFrame: TCEProjConfFrame
+ Left = 0
+ Height = 240
+ Top = 0
+ Width = 320
+ TabOrder = 0
+ DesignLeft = 677
+ DesignTop = 497
+end
diff --git a/src/ce_projconfframe.pas b/src/ce_projconfframe.pas
new file mode 100644
index 00000000..4916cfb0
--- /dev/null
+++ b/src/ce_projconfframe.pas
@@ -0,0 +1,20 @@
+unit ce_projconfframe;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, FileUtil, Forms, Controls, ce_common;
+
+type
+ TCEProjConfFrame = class(TFrame)
+ private
+ protected
+ end;
+
+implementation
+{$R *.lfm}
+
+end.
+
diff --git a/src/ce_project.lfm b/src/ce_project.lfm
index a173e34a..611856e5 100644
--- a/src/ce_project.lfm
+++ b/src/ce_project.lfm
@@ -1,29 +1,29 @@
inherited CEProjectWidget: TCEProjectWidget
Left = 1745
- Height = 517
+ Height = 336
Top = 89
Width = 163
Caption = 'ProjectWidget'
- ClientHeight = 517
+ ClientHeight = 336
ClientWidth = 163
inherited Back: TPanel
- Height = 517
+ Height = 336
Width = 163
- ClientHeight = 517
+ ClientHeight = 336
ClientWidth = 163
inherited Content: TScrollBox
- Height = 491
+ Height = 310
Width = 163
HorzScrollBar.Page = 159
- VertScrollBar.Page = 487
- ClientHeight = 487
+ VertScrollBar.Page = 306
+ ClientHeight = 306
ClientWidth = 159
object Tree: TTreeView[0]
Left = 2
- Height = 206
+ Height = 302
Top = 2
Width = 155
- Align = alTop
+ Align = alClient
AutoExpand = True
BorderSpacing.Around = 2
DefaultItemHeight = 18
@@ -45,7 +45,7 @@ inherited CEProjectWidget: TCEProjectWidget
end
end
object imgList: TImageList[2]
- top = 3
+ left = 32
Bitmap = {
4C69040000001000000010000000B3B3B1EFB0B0ADFFAEAEACFFAEAEACFFAEAE
ACFFAFAFACFFAFAFADFFB1B1AFD5B4B4B100B5B5B300B5B5B300B5B5B300B5B5
@@ -111,39 +111,39 @@ inherited CEProjectWidget: TCEProjectWidget
71FFD17B47AFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D58757D5D58351FFD17D4BFFD179
45AFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
- FF00FFFFFF00FFFFFF00FFFFFF00BB871F00BB871F00BB871E00B9841A00B67E
- 0FEAC4973BFFC79D49FFC39538FFB37904FFB47A07FFB47A07FFB47A08FFB57C
- 0AFFB67F0FFFB88114FFBA851B23BB871F00BB871F00BA861D00B7801283E4CF
- A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
- FFFFE9DABAFFEEE2C9FFB67F14BFBB871F00BB871F00B9851B00B27A09E5FFFF
- FFFFFFFFFFFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFDFFFFFFFEFFFFFF
- FFFFC69941FFECDFC2FFC19234FFBB871F00BB871E00B9831800C89E4AFFFFFF
- FFFFFFFDF7FFFFFCF5FFFFFCF4FFFEFBF4FFFEFBF3FFFFFCF4FFFFFDF6FFFFFF
- FFFFB27701FFBA851CFFBC8922FFBB871F00BB861E00B882150CCDA557FFFFFF
- FFFF96989BFFC3C1BEFFC2C0BDFFC0BFBCFFFFFBF0FF96979AFFC3C2C2FFFFFF
- FFFFAA7508D00000003300000033BB871F00BB861D00B07B1134DDC18AFFFFFF
- FFFFFFF9EBFFFFF9EAFFFEF7E9FFFDF7E9FFFEF7E9FFFFF8E9FFFFFFFAFFF0E4
- CAFFA8740CB2BA851C00BD8C2800BB871F00BA861D00AE790F73EDDDBDFFC1C4
- C7FFA8A9A9FFC2C1BAFFC0BFB9FFFBF4E1FF989A9EFFC0BFB8FFFFFFFCFFE4D0
- A4FFA2710E90BA861D00BB871E00BB871F00BA851C00AB770C9BF3E6CDFFFDF5
- E4FFFAF2DBFFFAF1DBFFF8EFDAFFF7EFD9FFFAF0DAFFF8EFD9FFFFFFFFFFD7B8
- 79FF9A6C106BBB861D00BB871F00BB871F00BA851C00B07A0BD2FFFFFFFF999D
- A4FFC0BFB8FFBFBEB8FFBEBDB7FFF6EDD4FF999BA2FFBEBCB5FFFFFFFFFFC9A0
- 4BFF90661141BB871E00BB871F00BB871E00B9841900B8821BEFFFFFFFFFF4EC
- D4FFF5ECD3FFF4EBD4FFF4EBD3FFF3EAD4FFF3E9D1FFF1E6CCFFFFFFFFFFC190
- 31FF0000000ABB871F00BB871F00B98419FFB67E0EFFB67F10FFC0902EFFBF8E
- 2AFFBF8E29FFC08E2AFFC08F2BFFC0902DFFD8BB7DFFF1E9D2FFFFFFFDFFB57C
- 0AFFBA851B00BB871F00BB871F00B78012FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
- FFFFFFFFFFFFFFFFFFFFFFFFFFFFE9D9B7FFBB861DFFF4EEDCFFF6F0E2FFB17B
- 0FE8BA851D00BB871F00BB871F00AC7A14CADCC189FFF5F0E0FFF4EDDBFFF4ED
- DBFFF4EDDBFFF4EDDBFFF5EFDDFFF7F2E3FFDFCA99FFF8F4EAFFCFAB61FF9D6F
- 1399BB861E00BB871F00BB871F0060440E44B88114FFB67E0FFFB57D0DFFB57D
- 0CFFB57D0CFFB57D0CFFB67D0DFFB67E0FFFB77F11FFB78012FFB58016EE0000
- 001ABB871F00BB871F00BB871F00000000070000003300000033000000330000
- 00330000003300000033000000330000003300000033000000330000002F0000
- 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
- FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
- FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000001C00000033000000360000
+ 0036000000360000003600000036000000360000003600000036000000200000
+ 0002FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000033F8F8F8F0FBFBFBFDFCFC
+ FCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFF8F8F8FF949494910000
+ 002000000002FFFFFF00FFFFFF00FFFFFF0000000036FBFBFBFDF4F4F4FFF5F5
+ F5FFF5F5F5FFF5F5F5FFF1F1F1FFEFEFEFFFE9E9E9FFFCFCFCFFE7E7E7FF9595
+ 95910000002000000002FFFFFF000000000100000036FCFCFCFFF7F7F7FFF9F9
+ F9FFF7F7F7FFF7F7F7FFF3F3F3FFF0F0F0FFEAEAEAFFFCFCFCFFF6F6F6FFF4F4
+ F4FF9999999100000020FFFFFF000000000100000036FCFCFCFFF9F9F9FFC0C0
+ C0FFBABABAFFB4B4B4FFAFAFAFFFAAAAAAFFA5A5A5FFFCFCFCFFFCFCFCFFFCFC
+ FCFFFCFCFCFF00000036000000010000000100000036FCFCFCFFFBFBFBFFFCFC
+ FCFFFCFCFCFFFBFBFBFFF8F8F8FFF5F5F5FFF1F1F1FFECECECFFEAEAEAFFE6E6
+ E6FFFCFCFCFF00000036000000010000000100000036FCFCFCFFFCFCFCFFC7C7
+ C7FFC2C2C2FFBEBEBEFFB8B8B8FFB4B4B4FFB1B1B1FFAEAEAEFFACACACFFEDED
+ EDFFFCFCFCFF00000036000000010000000100000036FCFCFCFFFCFCFCFFFCFC
+ FCFFFCFCFCFFFCFCFCFFFCFCFCFFFBFBFBFFF8F8F8FFF6F6F6FFF3F3F3FFF2F2
+ F2FFFCFCFCFF00000036000000010000000100000036FCFCFCFFFCFCFCFFCECE
+ CEFFCACACAFFC6C6C6FFC3C3C3FFC0C0C0FFBDBDBDFFBCBCBCFFBABABAFFF6F6
+ F6FFFCFCFCFF00000036000000010000000100000036FCFCFCFFFCFCFCFFFCFC
+ FCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFBFBFBFFF9F9F9FFF9F9F9FFF8F8
+ F8FFFCFCFCFF00000036000000010000000100000036FCFCFCFFFCFCFCFFD6D6
+ D6FFD3D3D3FFCFCFCFFFCDCDCDFFCBCBCBFFC8C8C8FFC8C8C8FFC6C6C6FFF8F8
+ F8FFFCFCFCFF00000036000000010000000100000036FCFCFCFFFCFCFCFFFCFC
+ FCFFFCFCFCFFFBFBFBFFFBFBFBFFFAFAFAFFFAFAFAFFFAFAFAFFFAFAFAFFFAFA
+ FAFFFCFCFCFF00000036000000010000000100000036FCFCFCFFFCFCFCFFDDDD
+ DDFFDBDBDBFFD9D9D9FFD7D7D7FFD5D5D5FFD4D4D4FFD4D4D4FFD4D4D4FFFBFB
+ FBFFFCFCFCFF00000036000000010000000100000036FCFCFCFEFCFCFCFFFCFC
+ FCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFC
+ FCFFFCFCFCFD00000036FFFFFF00FFFFFF0000000034F9F9F9F5FCFCFCFDFCFC
+ FCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFC
+ FCFDF9F9F9F300000033FFFFFF00FFFFFF000000001D00000034000000360000
+ 0036000000360000003600000036000000360000003600000036000000360000
+ 0036000000330000001DFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
diff --git a/src/ce_project.pas b/src/ce_project.pas
index c76b98b4..47024a02 100644
--- a/src/ce_project.pas
+++ b/src/ce_project.pas
@@ -66,13 +66,15 @@ begin
if i > -1 then
begin
fname := fProject.getAbsoluteSourceName(i);
- mainForm.openFile(fname);
+ if fileExists(fname) then
+ mainForm.openFile(fname);
end;
end
else if Tree.Selected.Parent = fConfNode then
begin
i := Tree.Selected.Index;
- fProject.ConfigurationIndex:= i;
+ fProject.ConfigurationIndex := i;
+ updateView;
end;
end;
@@ -82,10 +84,10 @@ var
itm: TTreeNode;
i: NativeInt;
begin
- if fProject = nil then exit;
- //
fConfNode.DeleteChildren;
fFileNode.DeleteChildren;
+ if fProject = nil then exit;
+ //
for src in fProject.Sources do
begin
itm := Tree.Items.AddChild(fFileNode, src);
@@ -95,6 +97,7 @@ begin
for i := 0 to fProject.OptionsCollection.Count-1 do
begin
conf := fProject.configuration[i].name;
+ if i = fProject.ConfigurationIndex then conf += ' (active)';
itm := Tree.Items.AddChild(fConfNode, conf);
itm.ImageIndex := 3;
itm.SelectedIndex:= 3;
diff --git a/src/ce_widget.lfm b/src/ce_widget.lfm
index e62c3d71..69c8d214 100644
--- a/src/ce_widget.lfm
+++ b/src/ce_widget.lfm
@@ -1,11 +1,11 @@
object CEWidget: TCEWidget
- Left = 1373
+ Left = 1264
Height = 327
- Top = 440
+ Top = 448
Width = 320
Caption = 'CEWidget'
- ClientHeight = 327
- ClientWidth = 320
+ ClientHeight = 0
+ ClientWidth = 0
LCLVersion = '1.2.2.0'
object Back: TPanel
Left = 0
diff --git a/src/ce_widget.pas b/src/ce_widget.pas
index 2b25a233..da26bb33 100644
--- a/src/ce_widget.pas
+++ b/src/ce_widget.pas
@@ -5,7 +5,7 @@ unit ce_widget;
interface
uses
- Classes, SysUtils, FileUtil, DividerBevel, Forms, Controls, ExtCtrls,
+ Classes, SysUtils, FileUtil, Forms, Controls, ExtCtrls,
ce_common, ActnList;
type
@@ -26,6 +26,7 @@ type
protected
fID: string;
fNeedUpdate: boolean;
+ fUpdating: boolean;
procedure UpdaterProc; virtual;
published
property ID: string read fID write fID;
@@ -51,6 +52,16 @@ type
property widget[index: integer]: TCEWidget read getWidget;
end;
+ TWidgetEnumerator = class
+ fList: TCEWidgetList;
+ fIndex: Integer;
+ function getCurrent: TCEWidget;
+ Function moveNext: boolean;
+ property current: TCEWidget read getCurrent;
+ end;
+
+ operator enumerator(aWidgetList: TCEWidgetList): TWidgetEnumerator;
+
implementation
{$R *.lfm}
@@ -72,8 +83,13 @@ end;
procedure TCEWidget.updaterTimer(Sender: TObject);
begin
if not fNeedUpdate then exit;
- fNeedUpdate := false;
- UpdaterProc;
+ fUpdating := true;
+ try
+ UpdaterProc;
+ finally
+ fUpdating := false;
+ fNeedUpdate := false;
+ end;
end;
procedure TCEWidget.UpdaterProc;
@@ -112,5 +128,23 @@ begin
add(Pointer(aValue));
end;
+function TWidgetEnumerator.getCurrent:TCEWidget;
+begin
+ result := fList.widget[fIndex];
+end;
+
+function TWidgetEnumerator.moveNext: boolean;
+begin
+ Inc(fIndex);
+ result := fIndex < fList.Count;
+end;
+
+operator enumerator(aWidgetList: TCEWidgetList): TWidgetEnumerator;
+begin
+ result := TWidgetEnumerator.Create;
+ result.fList := aWidgetList;
+ result.fIndex := -1;
+end;
+
end.