From db5e2cbf2de582c8d3e1a909954aaac9d9744932 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Tue, 10 Mar 2015 14:52:42 +0100 Subject: [PATCH] processed with JCF --- lazproj/coedit.lpi | 2 + lazproj/coedit.lpr | 29 +- src/ce_cdbcmd.pas | 34 +- src/ce_dlang.pas | 589 +++++++++++++++++-------------- src/ce_dockoptions.pas | 28 +- src/ce_editoroptions.pas | 50 +-- src/ce_inspectors.pas | 19 +- src/ce_interfaces.pas | 102 +++--- src/ce_libmaneditor.pas | 78 +++-- src/ce_main.pas | 651 ++++++++++++++++++++--------------- src/ce_observer.pas | 44 +-- src/ce_options.pas | 12 +- src/ce_optionseditor.pas | 95 ++--- src/ce_plugin.pas | 97 +++--- src/ce_procinput.pas | 35 +- src/ce_projconf.pas | 216 +++++++----- src/ce_projinspect.pas | 157 +++++---- src/ce_search.pas | 122 ++++--- src/ce_shortcutseditor.pas | 145 ++++---- src/ce_staticmacro.pas | 90 ++--- src/ce_symlist.pas | 504 +++++++++++++++------------ src/ce_symstring.pas | 122 ++++--- src/ce_synmemo.pas | 3 + src/ce_todolist.pas | 248 +++++++------ src/ce_tools.pas | 136 ++++---- src/ce_toolseditor.pas | 29 +- src/ce_txtsyn.pas | 87 +++-- src/ce_widget.pas | 89 +++-- src/ce_writablecomponent.pas | 47 ++- 29 files changed, 2193 insertions(+), 1667 deletions(-) diff --git a/lazproj/coedit.lpi b/lazproj/coedit.lpi index 89ea15df..d27ea7bd 100644 --- a/lazproj/coedit.lpi +++ b/lazproj/coedit.lpi @@ -302,6 +302,7 @@ + @@ -321,6 +322,7 @@ + diff --git a/lazproj/coedit.lpr b/lazproj/coedit.lpr index 66bfb207..6225f8b9 100644 --- a/lazproj/coedit.lpr +++ b/lazproj/coedit.lpr @@ -2,14 +2,26 @@ program coedit; {$mode objfpc}{$H+} -uses - {$IFDEF UNIX}{$IFDEF UseCThreads} - cthreads, - {$ENDIF}{$ENDIF} - Interfaces, Forms, lazcontrols, runtimetypeinfocontrols, ce_observer, - ce_libman, ce_tools, ce_dcd, ce_main, ce_writableComponent, ce_options, - ce_symstring, ce_staticmacro, ce_inspectors, LResources, ce_editoroptions, - ce_dockoptions, ce_shortcutseditor; +uses {$IFDEF UNIX} {$IFDEF UseCThreads} + cthreads, {$ENDIF} {$ENDIF} + Interfaces, + Forms, + lazcontrols, + runtimetypeinfocontrols, + ce_observer, + ce_libman, + ce_tools, + ce_dcd, + ce_main, + ce_writableComponent, + ce_options, + ce_symstring, + ce_staticmacro, + ce_inspectors, + LResources, + ce_editoroptions, + ce_dockoptions, + ce_shortcutseditor; {$R *.res} @@ -19,4 +31,3 @@ begin Application.CreateForm(TCEMainForm, CEMainForm); Application.Run; end. - diff --git a/src/ce_cdbcmd.pas b/src/ce_cdbcmd.pas index 99f2c68f..2648a187 100644 --- a/src/ce_cdbcmd.pas +++ b/src/ce_cdbcmd.pas @@ -28,12 +28,12 @@ type private fCdbProc: TAsyncProcess; fProject: TCEProject; - procedure cdbOutput(sender: TObject); - procedure cdbTerminate(sender: TObject); + procedure cdbOutput(Sender: TObject); + procedure cdbTerminate(Sender: TObject); procedure cdbOutputToGui; public - constructor create(aOwner: TComponent); override; - destructor destroy; override; + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; // procedure projNew(aProject: TCEProject); procedure projClosing(aProject: TCEProject); @@ -43,13 +43,14 @@ type end; implementation + {$R *.lfm} uses ce_symstring; {$REGION Standard Comp/Obj------------------------------------------------------} -constructor TCECdbWidget.create(aOwner: TComponent); +constructor TCECdbWidget.Create(aOwner: TComponent); begin inherited; Enabled := exeInSysPath('cdb'); @@ -57,14 +58,16 @@ begin EntitiesConnector.addObserver(self); end; -destructor TCECdbWidget.destroy; +destructor TCECdbWidget.Destroy; begin - if Enabled then begin + if Enabled then + begin killProcess(fCdbProc); EntitiesConnector.removeObserver(self); end; inherited; end; + {$ENDREGION --------------------------------------------------------------------} {$REGION ICEProjectMonitor -----------------------------------------------------} @@ -92,6 +95,7 @@ end; procedure TCECdbWidget.projCompiling(aProject: TCEProject); begin end; + {$ENDREGION --------------------------------------------------------------------} procedure TCECdbWidget.btnStartClick(Sender: TObject); @@ -106,7 +110,7 @@ begin exit; // killProcess(fCdbProc); - fCdbProc := TAsyncProcess.create(nil); + fCdbProc := TAsyncProcess.Create(nil); fCdbProc.Executable := 'cdb'; fCdbProc.Parameters.Add('-c'); fCdbProc.Parameters.Add('"l+*;.lines"'); @@ -150,8 +154,7 @@ procedure TCECdbWidget.btnStopClick(Sender: TObject); const cmd = 'q'#13#10; begin - if fCdbProc <> nil - then + if fCdbProc <> nil then fCdbProc.Input.Write(cmd[1], length(cmd)); killProcess(fCdbProc); end; @@ -168,9 +171,9 @@ begin inp := cmd + LineEnding; fCdbProc.Input.Write(inp[1], length(inp)); // - inp := lstCdbOut.Items.Item[lstCdbOut.Items.Count-1].Caption; + inp := lstCdbOut.Items.Item[lstCdbOut.Items.Count - 1].Caption; inp += cmd; - lstCdbOut.Items.Item[lstCdbOut.Items.Count-1].Caption := inp; + lstCdbOut.Items.Item[lstCdbOut.Items.Count - 1].Caption := inp; // txtCdbCmd.Text := ''; end; @@ -188,22 +191,21 @@ begin processOutputToStrings(fCdbProc, lst); for str in lst do lstCdbOut.AddItem(str, nil); - lstCdbOut.Items[lstCdbOut.Items.Count-1].MakeVisible(true); + lstCdbOut.Items[lstCdbOut.Items.Count - 1].MakeVisible(True); finally lst.Free; end; end; -procedure TCECdbWidget.cdbOutput(sender: TObject); +procedure TCECdbWidget.cdbOutput(Sender: TObject); begin cdbOutputToGui; end; -procedure TCECdbWidget.cdbTerminate(sender: TObject); +procedure TCECdbWidget.cdbTerminate(Sender: TObject); begin cdbOutputToGui; killProcess(fCdbProc); end; end. - diff --git a/src/ce_dlang.pas b/src/ce_dlang.pas index f25464d4..9ddad516 100644 --- a/src/ce_dlang.pas +++ b/src/ce_dlang.pas @@ -10,7 +10,7 @@ uses const D2Kw: array[0..109] of string = - ( 'abstract', 'alias', 'align', 'asm', 'assert', 'auto', + ('abstract', 'alias', 'align', 'asm', 'assert', 'auto', 'body', 'bool', 'break', 'byte', 'case', 'cast', 'catch', 'cdouble', 'cent', 'cfloat', 'char', 'class', 'const', 'continue', 'creal', @@ -34,7 +34,7 @@ const 'version', 'void', 'volatile', 'wchar', 'while', 'with', '__FILE__', '__MODULE__', '__LINE__', '__FUNCTION__', '__PRETTY_FUNCTION__' - ); + ); type @@ -56,8 +56,8 @@ type function toHash(const aValue: string): Byte; {$IFNDEF DEBUG}inline;{$ENDIF} procedure addEntry(const aValue: string); public - constructor create; - destructor destroy; // do not remove even if empty (compat with char-map version) + constructor Create; + destructor Destroy; // do not remove even if empty (compat with char-map version) function find(const aValue: string): boolean; end; @@ -73,10 +73,10 @@ type fReaderHead: PChar; function getColAndLine: TPoint; public - constructor create(const aText: PChar; const aColAndLine: TPoint); + constructor Create(const aText: PChar; const aColAndLine: TPoint); procedure setReader(const aText: PChar; const aColAndLine: TPoint); // - function next: PChar; + function Next: PChar; function previous: PChar; // property AbsoluteIndex: Integer read fAbsoluteIndex; @@ -91,9 +91,9 @@ type ltkNumber, ltkOperator, ltkString, ltkSymbol); const - LexTokenKindString : array[TLexTokenKind] of string = - ( 'Illegal', 'Character', 'Comment', 'Identifier', 'Keyword', - 'Number', 'Operator', 'String', 'Symbol'); + LexTokenKindString: array[TLexTokenKind] of string = + ('Illegal', 'Character', 'Comment', 'Identifier', 'Keyword', + 'Number', 'Operator', 'String', 'Symbol'); type @@ -101,10 +101,11 @@ type * Lexer token *) PLexToken = ^TLexToken; + TLexToken = record position: TPoint; kind: TLexTokenKind; - data: string; + Data: string; end; TLexFoundEvent = procedure(const aToken: PLexToken; out doStop: boolean) of Object; @@ -116,7 +117,7 @@ type private function getToken(index: integer): TLexToken; public - procedure clear; + procedure Clear; procedure addToken(aValue: PLexToken); property token[index: integer]: TLexToken read getToken; end; @@ -133,6 +134,7 @@ type * Error record *) PLexError = ^TLexError; + TLexError = record position: TPoint; msg: string; @@ -145,7 +147,7 @@ type private function getError(index: integer): TLexError; public - procedure clear; + procedure Clear; procedure addError(aValue: PLexError); property error[index: integer]: TLexError read getError; end; @@ -158,28 +160,28 @@ type property Current: TLexError read GetCurrent; end; - operator enumerator(aTokenList: TLexTokenList): TLexTokenEnumerator; - operator enumerator(anErrorList: TLexErrorList): TLexErrorEnumerator; +operator enumerator(aTokenList: TLexTokenList): TLexTokenEnumerator; +operator enumerator(anErrorList: TLexErrorList): TLexErrorEnumerator; (***************************************************************************** * Lexes aText and fills aList with the TLexToken found. *) - procedure lex(const aText: string; aList: TLexTokenList; aCallBack: TLexFoundEvent = nil); +procedure lex(const aText: string; aList: TLexTokenList; aCallBack: TLexFoundEvent = nil); (***************************************************************************** * Detects various syntactic errors in a TLexTokenList *) - procedure checkSyntacticErrors(const aTokenList: TLexTokenList; const anErrorList: TLexErrorList); +procedure checkSyntacticErrors(const aTokenList: TLexTokenList; const anErrorList: TLexErrorList); (***************************************************************************** * Outputs the module name from a tokenized D source. *) - function getModuleName(const aTokenList: TLexTokenList):string; +function getModuleName(const aTokenList: TLexTokenList): string; (***************************************************************************** * Compares two TPoints. *) - operator = (lhs: TPoint; rhs: TPoint): boolean; +operator = (lhs: TPoint; rhs: TPoint): boolean; implementation @@ -189,12 +191,12 @@ var {$REGION TReaderHead------------------------------------------------------------} operator = (lhs: TPoint; rhs: TPoint): boolean; begin - exit( (lhs.y = rhs.y) and (lhs.x = rhs.x) ); + exit((lhs.y = rhs.y) and (lhs.x = rhs.x)); end; -constructor TReaderHead.create(const aText: PChar; const aColAndLine: TPoint); +constructor TReaderHead.Create(const aText: PChar; const aColAndLine: TPoint); begin - setReader(aText,aColAndLine); + setReader(aText, aColAndLine); end; procedure TReaderHead.setReader(const aText: PChar; const aColAndLine: TPoint); @@ -202,18 +204,20 @@ begin fLineIndex := aColAndLine.y; fColumnIndex := aColAndLine.x; fReaderHead := aText; - while (LineAnColumn <> aColAndLine) do next; + while (LineAnColumn <> aColAndLine) do + Next; // // editor not 0 based ln index - if fLineIndex = 0 then fLineIndex := 1; + if fLineIndex = 0 then + fLineIndex := 1; end; function TReaderHead.getColAndLine: TPoint; begin - exit( Point(fColumnIndex, fLineIndex) ); + exit(Point(fColumnIndex, fLineIndex)); end; -function TReaderHead.next: PChar; +function TReaderHead.Next: PChar; begin Inc(fReaderHead); Inc(fAbsoluteIndex); @@ -234,18 +238,19 @@ begin Dec(fAbsoluteIndex); exit(fReaderHead); end; + {$ENDREGION} {$REGION TD2Dictionary----------------------------------------------------------} -constructor TD2Dictionary.create; +constructor TD2Dictionary.Create; var - value: string; + Value: string; begin - for value in D2Kw do - addEntry(value); + for Value in D2Kw do + addEntry(Value); end; -destructor TD2Dictionary.destroy; +destructor TD2Dictionary.Destroy; begin end; @@ -254,19 +259,22 @@ function TD2Dictionary.toHash(const aValue: string): Byte; var i: Integer; begin - result := 0; - for i := 1 to length(aValue) do result += - (Byte(aValue[i]) shl (4 and (1-i))) xor 25; + Result := 0; + for i := 1 to length(aValue) do + Result += + (Byte(aValue[i]) shl (4 and (1 - i))) xor 25; end; + {$IFDEF DEBUG}{$R+}{$ENDIF} procedure TD2Dictionary.addEntry(const aValue: string); var hash: Byte; begin - if find(aValue) then exit; + if find(aValue) then + exit; hash := toHash(aValue); - fEntries[hash].filled := true; + fEntries[hash].filled := True; setLength(fEntries[hash].values, length(fEntries[hash].values) + 1); fEntries[hash].values[high(fEntries[hash].values)] := aValue; if fLongest <= length(aValue) then @@ -280,27 +288,33 @@ var hash: Byte; i: NativeInt; begin - result := false; - if length(aValue) > fLongest then exit; - if length(aValue) < fShortest then exit; + Result := False; + if length(aValue) > fLongest then + exit; + if length(aValue) < fShortest then + exit; hash := toHash(aValue); - if (not fEntries[hash].filled) then exit(false); - for i:= 0 to high(fEntries[hash].values) do - if fEntries[hash].values[i] = aValue then exit(true); + if (not fEntries[hash].filled) then + exit(False); + for i := 0 to high(fEntries[hash].values) do + if fEntries[hash].values[i] = aValue then + exit(True); end; + {$ENDREGION} {$REGION Lexing-----------------------------------------------------------------} function TLexTokenList.getToken(index: integer): TLexToken; begin - result := PLexToken(Items[index])^; + Result := PLexToken(Items[index])^; end; -procedure TLexTokenList.clear; +procedure TLexTokenList.Clear; begin - while Count > 0 do begin - Dispose( PLexToken(Items[Count-1]) ); - Delete(Count-1); + while Count > 0 do + begin + Dispose(PLexToken(Items[Count - 1])); + Delete(Count - 1); end; end; @@ -322,9 +336,9 @@ end; operator enumerator(aTokenList: TLexTokenList): TLexTokenEnumerator; begin - result := TLexTokenEnumerator.Create; - result.fList := aTokenList; - result.fIndex := -1; + Result := TLexTokenEnumerator.Create; + Result.fList := aTokenList; + Result.fIndex := -1; end; {$BOOLEVAL ON} @@ -345,21 +359,21 @@ var ptk := new(PLexToken); ptk^.kind := aTk; ptk^.position := reader.LineAnColumn; - ptk^.data := identifier; + ptk^.Data := identifier; aList.Add(ptk); end; function callBackDoStop: boolean; begin - result := false; + Result := False; if aCallBack <> nil then - aCallBack(PLexToken(aList.Items[aList.Count-1]), result); + aCallBack(PLexToken(aList.Items[aList.Count - 1]), Result); end; begin - reader.create(@aText[1], Point(0,0)); - while (true) do + reader.Create(@aText[1], Point(0, 0)); + while (True) do begin if isOutOfBound then @@ -370,25 +384,29 @@ begin // skip blanks while isWhite(reader.head^) do begin - reader.next; - if isOutOfBound then exit; + reader.Next; + if isOutOfBound then + exit; end; // line comment if (reader.head^ = '/') then begin - if (reader.next^ = '/') then + if (reader.Next^ = '/') then begin - if isOutOfBound then exit; + if isOutOfBound then + exit; while (reader.head^ <> #10) do begin - reader.next; + reader.Next; identifier += reader.head^; - if isOutOfBound then exit; + if isOutOfBound then + exit; end; - reader.next; + reader.Next; addToken(ltkComment); - if callBackDoStop then exit; + if callBackDoStop then + exit; continue; end else @@ -398,14 +416,17 @@ begin // block comments 1 if (reader.head^ = '/') then begin - if (reader.next^ = '*') then + if (reader.Next^ = '*') then begin - if isOutOfBound then exit; - while (reader.head^ <> '*') or (reader.next^ <> '/') do - if isOutOfBound then exit; - reader.next; + if isOutOfBound then + exit; + while (reader.head^ <> '*') or (reader.Next^ <> '/') do + if isOutOfBound then + exit; + reader.Next; addToken(ltkComment); - if callBackDoStop then exit; + if callBackDoStop then + exit; continue; end else @@ -415,14 +436,17 @@ begin // block comments 2 if (reader.head^ = '/') then begin - if (reader.next^ = '+') then + if (reader.Next^ = '+') then begin - if isOutOfBound then exit; - while (reader.head^ <> '+') or (reader.next^ <> '/') do - if isOutOfBound then exit; - reader.next; + if isOutOfBound then + exit; + while (reader.head^ <> '+') or (reader.Next^ <> '/') do + if isOutOfBound then + exit; + reader.Next; addToken(ltkComment); - if callBackDoStop then exit; + if callBackDoStop then + exit; continue; end else @@ -432,112 +456,129 @@ begin // string 1, note: same escape error as in SynD2Syn if (reader.head^ in ['r', 'x']) then begin - if not (reader.next^ = '"') then + if not (reader.Next^ = '"') then reader.previous; end; if (reader.head^ = '"') then begin - reader.next; - if isOutOfBound then exit; + reader.Next; + if isOutOfBound then + exit; if (reader.head^ = '"') then begin - reader.next; + reader.Next; addToken(ltkString); - if callBackDoStop then exit; + if callBackDoStop then + exit; continue; end; - while (true) do + while (True) do begin if reader.head^ = '\' then begin - reader.next; + reader.Next; if (reader.head^ = '"') then begin - reader.next; + reader.Next; continue; end; end; if (reader.head^ = '"') then break; identifier += reader.head^; - reader.next; - if isOutOfBound then exit; + reader.Next; + if isOutOfBound then + exit; end; - if isStringPostfix(reader.next^) then - reader.next; + if isStringPostfix(reader.Next^) then + reader.Next; addToken(ltkString); - if callBackDoStop then exit; + if callBackDoStop then + exit; continue; end; // string 2 if (reader.head^ = '`') then begin - reader.next; - if isOutOfBound then exit; + reader.Next; + if isOutOfBound then + exit; while (reader.head^ <> '`') do begin identifier += reader.head^; - reader.next; - if isOutOfBound then exit; + reader.Next; + if isOutOfBound then + exit; end; - if isStringPostfix(reader.next^) then - reader.next; - if isOutOfBound then exit; + if isStringPostfix(reader.Next^) then + reader.Next; + if isOutOfBound then + exit; addToken(ltkString); - if callBackDoStop then exit; + if callBackDoStop then + exit; continue; end; // token string - if (reader.head^ = 'q') and (reader.next^ = '{') then + if (reader.head^ = 'q') and (reader.Next^ = '{') then begin - reader.next; - if isOutOfBound then exit; + reader.Next; + if isOutOfBound then + exit; while (reader.head^ <> '}') do begin identifier += reader.head^; - reader.next; - if isOutOfBound then exit; + reader.Next; + if isOutOfBound then + exit; end; - reader.next; + reader.Next; addToken(ltkString); - if callBackDoStop then exit; + if callBackDoStop then + exit; continue; - end else reader.previous; + end + else + reader.previous; //chars, note: same escape error as in SynD2Syn if (reader.head^ = #39) then begin - reader.next; - if isOutOfBound then exit; + reader.Next; + if isOutOfBound then + exit; if (reader.head^ = #39) then begin - reader.next; + reader.Next; addToken(ltkString); - if callBackDoStop then exit; + if callBackDoStop then + exit; continue; end; - while (true) do + while (True) do begin if reader.head^ = '\' then begin - reader.next; + reader.Next; if (reader.head^ = #39) then begin - reader.next; + reader.Next; continue; end; end; if (reader.head^ = #39) then break; identifier += reader.head^; - reader.next; - if isOutOfBound then exit; + reader.Next; + if isOutOfBound then + exit; end; - reader.next; + reader.Next; addToken(ltkChar); - if callBackDoStop then exit; + if callBackDoStop then + exit; continue; end; @@ -545,16 +586,16 @@ begin if (reader.head^ = '-') then begin identifier += reader.head^; - if reader.next^ = '0' then + if reader.Next^ = '0' then begin - if reader.next^ = '.' then + if reader.Next^ = '.' then reader.previous // back to 0, get into "binary/hex numbr/float" else - begin - reader.previous; - reader.previous; // back to - - identifier := ''; - end; + begin + reader.previous; + reader.previous; // back to - + identifier := ''; + end; end else begin @@ -571,45 +612,54 @@ begin if (reader.head^ = '0') then begin identifier += reader.head^; - if (reader.next^ in ['b','B']) then + if (reader.Next^ in ['b', 'B']) then begin identifier += reader.head^; - while isBit(reader.next^) or (reader.head^ = '_') do + while isBit(reader.Next^) or (reader.head^ = '_') do begin - if isOutOfBound then exit; + if isOutOfBound then + exit; identifier += reader.head^; end; addToken(ltkNumber); - if callBackDoStop then exit; + if callBackDoStop then + exit; continue; end - else reader.previous; - if (reader.next^ in ['x','X']) then + else + reader.previous; + if (reader.Next^ in ['x', 'X']) then begin identifier += reader.head^; - while isHex(reader.next^) or (reader.head^ = '_') do + while isHex(reader.Next^) or (reader.head^ = '_') do begin - if isOutOfBound then exit; + if isOutOfBound then + exit; identifier += reader.head^; end; addToken(ltkNumber); - if callBackDoStop then exit; + if callBackDoStop then + exit; continue; end - else reader.previous; - if (reader.next^ = '.') then + else + reader.previous; + if (reader.Next^ = '.') then begin identifier += reader.head^; - while isNumber(reader.next^) do + while isNumber(reader.Next^) do begin - if isOutOfBound then exit; + if isOutOfBound then + exit; identifier += reader.head^; end; addToken(ltkNumber); - if callBackDoStop then exit; + if callBackDoStop then + exit; continue; end - else reader.previous; + else + reader.previous; identifier := ''; end; @@ -617,7 +667,7 @@ begin if (reader.head^ = '-') then begin identifier += reader.head^; - if not isNumber(reader.next^) then + if not isNumber(reader.Next^) then begin reader.previous; // back to '-' identifier := ''; @@ -628,13 +678,15 @@ begin if isNumber(reader.head^) then begin identifier += reader.head^; - while isNumber(reader.next^) or (reader.head^ = '_') do + while isNumber(reader.Next^) or (reader.head^ = '_') do begin - if isOutOfBound then exit; + if isOutOfBound then + exit; identifier += reader.head^; end; addToken(ltkNumber); - if callBackDoStop then exit; + if callBackDoStop then + exit; continue; end; @@ -642,10 +694,12 @@ begin if isSymbol(reader.head^) then begin identifier += reader.head^; - reader.next; + reader.Next; addToken(ltkSymbol); - if callBackDoStop then exit; - if isOutOfBound then exit; + if callBackDoStop then + exit; + if isOutOfBound then + exit; continue; end; @@ -653,48 +707,56 @@ begin if isOperator1(reader.head^) then begin identifier += reader.head^; - while isOperator1(reader.next^) do + while isOperator1(reader.Next^) do begin - if isOutOfBound then exit; + if isOutOfBound then + exit; identifier += reader.head^; end; case length(identifier) of - 4:begin - if (not isOperator1(reader.head^)) and - isOperator4(identifier) then - begin - addToken(ltkOperator); - if callBackDoStop then exit; - continue; - end; + 4: + begin + if (not isOperator1(reader.head^)) and + isOperator4(identifier) then + begin + addToken(ltkOperator); + if callBackDoStop then + exit; + continue; end; - 3:begin - if (not isOperator1(reader.head^)) and - isOperator3(identifier) then - begin - addToken(ltkOperator); - if callBackDoStop then exit; - continue; - end; + end; + 3: + begin + if (not isOperator1(reader.head^)) and + isOperator3(identifier) then + begin + addToken(ltkOperator); + if callBackDoStop then + exit; + continue; end; - 2:begin - if (not isOperator1(reader.head^)) and - isOperator2(identifier) then - begin - addToken(ltkOperator); - if callBackDoStop then exit; - continue; - end; + end; + 2: + begin + if (not isOperator1(reader.head^)) and + isOperator2(identifier) then + begin + addToken(ltkOperator); + if callBackDoStop then + exit; + continue; end; - 1:begin - if not isOperator1(reader.head^) - then - begin - addToken(ltkOperator); - if callBackDoStop then exit; - continue; - end; + end; + 1: + begin + if not isOperator1(reader.head^) then + begin + addToken(ltkOperator); + if callBackDoStop then + exit; + continue; end; + end; end; end; @@ -704,14 +766,16 @@ begin while isIdentifier(reader.head^) do begin identifier += reader.head^; - reader.next; - if isOutOfBound then exit; + reader.Next; + if isOutOfBound then + exit; end; if D2Dictionary.find(identifier) then addToken(ltkKeyword) else addToken(ltkIdentifier); - if callBackDoStop then exit; + if callBackDoStop then + exit; continue; end; @@ -721,20 +785,22 @@ begin end; end; + {$BOOLEVAL OFF} {$ENDREGION} {$REGION Syntactic errors} function TLexErrorList.getError(index: integer): TLexError; begin - result := PLexError(Items[index])^; + Result := PLexError(Items[index])^; end; -procedure TLexErrorList.clear; +procedure TLexErrorList.Clear; begin - while Count > 0 do begin - Dispose( PLexError(Items[Count-1]) ); - Delete(Count-1); + while Count > 0 do + begin + Dispose(PLexError(Items[Count - 1])); + Delete(Count - 1); end; end; @@ -756,9 +822,9 @@ end; operator enumerator(anErrorList: TLexErrorList): TLexErrorEnumerator; begin - result := TLexErrorEnumerator.Create; - result.fList := anErrorList; - result.fIndex := -1; + Result := TLexErrorEnumerator.Create; + Result.fList := anErrorList; + Result.fIndex := -1; end; procedure checkSyntacticErrors(const aTokenList: TLexTokenList; const anErrorList: TLexErrorList); @@ -770,13 +836,15 @@ var tkIndex: NativeInt; pareCnt, curlCnt, squaCnt: NativeInt; pareLeft, curlLeft, squaLeft: boolean; -procedure addError(const aMsg: string); -begin - err := new(PLexError); - err^.msg := errPrefix + aMsg; - err^.position := aTokenList.token[tkIndex].position; - anErrorList.addError(err); -end; + + procedure addError(const aMsg: string); + begin + err := new(PLexError); + err^.msg := errPrefix + aMsg; + err^.position := aTokenList.token[tkIndex].position; + anErrorList.addError(err); + end; + label _preSeq; begin @@ -785,12 +853,12 @@ begin pareCnt := 0; curlCnt := 0; squaCnt := 0; - pareLeft:= False; - curlLeft:= False; - squaLeft:= False; - FillByte( old1, sizeOf(TLexToken), 0); - FillByte( old2, sizeOf(TLexToken), 0); - FillByte( lastSignifiant, sizeOf(TLexToken), 0); + pareLeft := False; + curlLeft := False; + squaLeft := False; + FillByte(old1, sizeOf(TLexToken), 0); + FillByte(old2, sizeOf(TLexToken), 0); + FillByte(lastSignifiant, sizeOf(TLexToken), 0); for tk in aTokenList do begin @@ -799,34 +867,37 @@ begin // brackets count if tk.kind = ltkSymbol then begin - case tk.data of - '(': Inc(pareCnt); - '{': Inc(curlCnt); - '[': Inc(squaCnt); - ')': Dec(pareCnt); - '}': Dec(curlCnt); - ']': Dec(squaCnt); + case tk.Data of + '(': Inc(pareCnt); + '{': Inc(curlCnt); + '[': Inc(squaCnt); + ')': Dec(pareCnt); + '}': Dec(curlCnt); + ']': Dec(squaCnt); end; // only for the first occurence - if not pareLeft then if pareCnt = -1 then - begin - addError('a left parenthesis is missing'); - pareLeft := true; - end; - if not curlLeft then if curlCnt = -1 then - begin - addError('a left curly bracket is missing'); - curlLeft := true; - end; - if not squaLeft then if squaCnt = -1 then - begin - addError('a left square bracket is missing'); - squaLeft := true; - end; + if not pareLeft then + if pareCnt = -1 then + begin + addError('a left parenthesis is missing'); + pareLeft := True; + end; + if not curlLeft then + if curlCnt = -1 then + begin + addError('a left curly bracket is missing'); + curlLeft := True; + end; + if not squaLeft then + if squaCnt = -1 then + begin + addError('a left square bracket is missing'); + squaLeft := True; + end; // at the end - if (tkIndex = aTokenList.Count-1) then + if (tkIndex = aTokenList.Count - 1) then begin if pareCnt > 0 then addError('a right parenthesis is missing'); @@ -842,30 +913,31 @@ begin // lexer invalid token if tk.kind = ltkIllegal then begin - addError(tk.data); + addError(tk.Data); goto _preSeq; end; -_preSeq: + _preSeq: - // invalid sequences - if tkIndex > 0 then - begin - // empty statements: - if (tk.kind = ltkSymbol) and (tk.data = ';') then - if (lastSignifiant.kind = ltkSymbol) and (lastSignifiant.data = ';') then - addError('invalid syntax for empty statement'); - if tk.kind <> ltkComment then lastSignifiant := tk; + // invalid sequences + if tkIndex > 0 then + begin + // empty statements: + if (tk.kind = ltkSymbol) and (tk.Data = ';') then + if (lastSignifiant.kind = ltkSymbol) and (lastSignifiant.Data = ';') then + addError('invalid syntax for empty statement'); + if tk.kind <> ltkComment then + lastSignifiant := tk; - // suspicious double keywords - if (old1.kind = ltkKeyword) and (tk.kind = ltkKeyword) then - if old1.data = tk.data then - addError('keyword is duplicated'); + // suspicious double keywords + if (old1.kind = ltkKeyword) and (tk.kind = ltkKeyword) then + if old1.Data = tk.Data then + addError('keyword is duplicated'); - // suspicious double numbers - if (old1.kind = ltkNumber) and (tk.kind = ltkNumber) then - addError('symbol or operator expected after number'); - end; + // suspicious double numbers + if (old1.kind = ltkNumber) and (tk.kind = ltkNumber) then + addError('symbol or operator expected after number'); + end; if tkIndex > 1 then begin end; @@ -882,31 +954,34 @@ var ltk: TLexToken; mtok: boolean; begin - result := ''; - mtok := false; + Result := ''; + mtok := False; for ltk in aTokenList do begin - if mtok then begin + if mtok then + begin case ltk.kind of - ltkIdentifier, ltkKeyword: - result += ltk.data; - ltkSymbol: - case ltk.data of - '.': result += ltk.data; - ';': exit; - end; + ltkIdentifier, ltkKeyword: + Result += ltk.Data; + ltkSymbol: + case ltk.Data of + '.': Result += ltk.Data; + ';': exit; + end; end; end else - if ltk.kind = ltkKeyword then - if ltk.data = 'module' then - mtok := true; + if ltk.kind = ltkKeyword then + if ltk.Data = 'module' then + mtok := True; end; end; + {$ENDREGION} initialization - D2Dictionary.create; + D2Dictionary.Create; + finalization - D2Dictionary.destroy; + D2Dictionary.Destroy; end. diff --git a/src/ce_dockoptions.pas b/src/ce_dockoptions.pas index f199cd8d..8c744397 100644 --- a/src/ce_dockoptions.pas +++ b/src/ce_dockoptions.pas @@ -36,7 +36,7 @@ var constructor TDockOptionsEditor.Create(TheOwner: TComponent); begin inherited; - fBackup := TXMLConfigStorage.Create('', false); + fBackup := TXMLConfigStorage.Create('', False); Master := AnchorDocking.DockMaster; // HeaderAlignLeftTrackBar.OnChange := @doChanged; @@ -44,7 +44,7 @@ begin DragThresholdTrackBar.OnChange := @doChanged; SplitterWidthTrackBar.OnChange := @doChanged; // - HeaderStyleComboBox.OnChange:= @doChanged; + HeaderStyleComboBox.OnChange := @doChanged; // EntitiesConnector.addObserver(self); end; @@ -94,14 +94,14 @@ end; procedure TDockOptionsEditor.doChanged(Sender: TObject); begin - DragThresholdLabel.Caption:=adrsDragThreshold + - ' ('+IntToStr(DragThresholdTrackBar.Position)+')'; - HeaderAlignTopLabel.Caption:=adrsHeaderAlignTop + - ' ('+IntToStr(HeaderAlignTopTrackBar.Position) +')'; - HeaderAlignLeftLabel.Caption:=adrsHeaderAlignLeft + - ' ('+IntToStr(HeaderAlignLeftTrackBar.Position) +')'; - SplitterWidthLabel.Caption:=adrsSplitterWidth + - ' ('+IntToStr(SplitterWidthTrackBar.Position) +')'; + DragThresholdLabel.Caption := adrsDragThreshold + + ' (' + IntToStr(DragThresholdTrackBar.Position) + ')'; + HeaderAlignTopLabel.Caption := adrsHeaderAlignTop + + ' (' + IntToStr(HeaderAlignTopTrackBar.Position) + ')'; + HeaderAlignLeftLabel.Caption := adrsHeaderAlignLeft + + ' (' + IntToStr(HeaderAlignLeftTrackBar.Position) + ')'; + SplitterWidthLabel.Caption := adrsSplitterWidth + + ' (' + IntToStr(SplitterWidthTrackBar.Position) + ')'; FlattenHeaders.Enabled := adofShow_ShowHeader in Flags; FilledHeaders.Enabled := adofShow_ShowHeader in Flags; @@ -112,8 +112,8 @@ begin end; initialization - DockOptionsEditor := TDockOptionsEditor.create(nil); -finalization - DockOptionsEditor.free; -end. + DockOptionsEditor := TDockOptionsEditor.Create(nil); +finalization + DockOptionsEditor.Free; +end. diff --git a/src/ce_editoroptions.pas b/src/ce_editoroptions.pas index 1da73665..2ed26a18 100644 --- a/src/ce_editoroptions.pas +++ b/src/ce_editoroptions.pas @@ -74,7 +74,7 @@ type constructor Create(AOwner: TComponent); override; destructor Destroy; override; // - procedure assign(src: TPersistent); override; + procedure Assign(src: TPersistent); override; end; (** @@ -121,11 +121,11 @@ begin fFont.Name := 'Courier New'; fFont.Quality := fqProof; fFont.Pitch := fpFixed; - fFont.Size:= 10; + fFont.Size := 10; // - fD2Syn := TSynD2Syn.create(self); + fD2Syn := TSynD2Syn.Create(self); fD2Syn.Assign(D2Syn); - fTxtSyn := TSynTxtSyn.create(self); + fTxtSyn := TSynTxtSyn.Create(self); fTxtSyn.Assign(TxtSyn); // fSelCol := TSynSelectedColor.Create; @@ -143,8 +143,8 @@ begin fMouseLinkColor.Foreground := clNone; fMouseLinkColor.Background := clNone; // - fBracketMatchColor.Foreground:= clRed; - fBracketMatchColor.Background:= clNone; + fBracketMatchColor.Foreground := clRed; + fBracketMatchColor.Background := clNone; // rightEdge := 80; tabulationWidth := 4; @@ -172,7 +172,7 @@ begin inherited; end; -procedure TCEEditorOptionsBase.assign(src: TPersistent); +procedure TCEEditorOptionsBase.Assign(src: TPersistent); var srcopt: TCEEditorOptionsBase; begin @@ -187,18 +187,19 @@ begin fBracketMatchColor.Assign(srcopt.fBracketMatchColor); fD2Syn.Assign(srcopt.fD2Syn); fTxtSyn.Assign(srcopt.fTxtSyn); - background := srcopt.background; + background := srcopt.background; tabulationWidth := srcopt.tabulationWidth; blockIdentation := srcopt.blockIdentation; - lineSpacing := srcopt.lineSpacing; - characterSpacing:= srcopt.characterSpacing; - options1 := srcopt.options1; - options2 := srcopt.options2; - mouseOptions := srcopt.mouseOptions; - rightEdge := srcopt.rightEdge; - rightEdgeColor := srcopt.rightEdgeColor; + lineSpacing := srcopt.lineSpacing; + characterSpacing := srcopt.characterSpacing; + options1 := srcopt.options1; + options2 := srcopt.options2; + mouseOptions := srcopt.mouseOptions; + rightEdge := srcopt.rightEdge; + rightEdgeColor := srcopt.rightEdgeColor; end - else inherited; + else + inherited; end; procedure TCEEditorOptionsBase.setFont(aValue: TFont); @@ -245,7 +246,8 @@ begin EntitiesConnector.addObserver(self); // fname := getCoeditDocPath + edoptFname; - if fileExists(fname) then loadFromFile(fname); + if fileExists(fname) then + loadFromFile(fname); end; destructor TCEEditorOptions.Destroy; @@ -262,6 +264,7 @@ begin D2Syn.Assign(fD2Syn); TxtSyn.Assign(fTxtSyn); end; + {$ENDREGION} {$REGION ICEMultiDocObserver ----------------------------------------------------} @@ -281,6 +284,7 @@ end; procedure TCEEditorOptions.docClosing(aDoc: TCESynMemo); begin end; + {$ENDREGION} {$REGION ICEEditableOptions ----------------------------------------------------} @@ -309,7 +313,7 @@ begin // restores if anEvent = oeeCancel then begin - self.assign(fBackup); + self.Assign(fBackup); D2Syn.Assign(fBackup.fD2Syn); TxtSyn.Assign(fBackup.fTxtSyn); end; @@ -319,11 +323,12 @@ begin // new backup values based on accepted values. if anEvent = oeeAccept then begin - fBackup.assign(self); + fBackup.Assign(self); fBackup.fD2Syn.Assign(D2Syn); fBackup.fTxtSyn.Assign(TxtSyn); end; end; + {$ENDREGION} {$REGION ICEEditableOptions ----------------------------------------------------} @@ -333,7 +338,7 @@ var i: Integer; begin multied := getMultiDocHandler; - for i := 0 to multied.documentCount-1 do + for i := 0 to multied.documentCount - 1 do applyChangeToEditor(multied.document[i]); end; @@ -352,16 +357,17 @@ begin anEditor.Options := options1; anEditor.Options2 := options2; anEditor.MouseOptions := mouseOptions; - anEditor.Color:= background; + anEditor.Color := background; anEditor.RightEdge := rightEdge; anEditor.RightEdgeColor := rightEdgeColor; end; + {$ENDREGION} initialization EditorOptions := TCEEditorOptions.Create(nil); + finalization EditorOptions.Free; end. - diff --git a/src/ce_inspectors.pas b/src/ce_inspectors.pas index b3d58143..52c42769 100644 --- a/src/ce_inspectors.pas +++ b/src/ce_inspectors.pas @@ -37,7 +37,7 @@ implementation function TCECustomPathEditor.GetAttributes: TPropertyAttributes; begin - exit( inherited GetAttributes() + [paDialog]); + exit(inherited GetAttributes() + [paDialog]); end; procedure TCECustomPathEditor.Edit; @@ -46,13 +46,15 @@ var begin case fType of ptFile: - with TOpenDialog.create(nil) do try - InitialDir := ExtractFileName(GetValue); - FileName := GetValue; - if Execute then SetValue(FileName); - finally - free; - end; + with TOpenDialog.Create(nil) do + try + InitialDir := ExtractFileName(GetValue); + FileName := GetValue; + if Execute then + SetValue(FileName); + finally + Free; + end; ptFolder: if SelectDirectory(GetPropInfo^.Name, GetValue, newValue) then SetValue(newValue); @@ -75,4 +77,3 @@ initialization RegisterPropertyEditor(TypeInfo(TCEPathname), nil, '', TCEPathnameEditor); RegisterPropertyEditor(TypeInfo(TCEFilename), nil, '', TCEfilenameEditor); end. - diff --git a/src/ce_interfaces.pas b/src/ce_interfaces.pas index c40ec101..40c23a74 100644 --- a/src/ce_interfaces.pas +++ b/src/ce_interfaces.pas @@ -5,7 +5,7 @@ unit ce_interfaces; interface uses - Classes, SysUtils, actnList, menus, process, + Classes, SysUtils, ActnList, Menus, process, ce_synmemo, ce_project, ce_observer; type @@ -14,7 +14,7 @@ type * An implementer can save and load some stuffs when Coedit starts/quits *) ICESessionOptionsObserver = interface - ['ICESessionOptionsObserver'] + ['ICESessionOptionsObserver'] // persistent things are about to be saved. procedure sesoptBeforeSave; // persistent things can be declared to aFiler. @@ -22,6 +22,7 @@ type // persistent things have just been reloaded. procedure sesoptAfterLoad; end; + (** * An implementer gets and gives back some things *) @@ -36,7 +37,7 @@ type * An implementer declares some actions on demand. *) ICEContextualActions = interface - ['ICEContextualActions'] + ['ICEContextualActions'] // declares a context name for the actions function contextName: string; // action count, called before contextAction() @@ -51,7 +52,7 @@ type * An implementer is informed about the current file(s). *) ICEMultiDocObserver = interface - ['ICEMultiDocObserver'] + ['ICEMultiDocObserver'] // aDoc has been created (empty, runnable, project source, ...). procedure docNew(aDoc: TCESynMemo); // aDoc is the document being edited. @@ -61,6 +62,7 @@ type // aDoc is about to be closed. procedure docClosing(aDoc: TCESynMemo); end; + (** * An implementer informs some ICEMultiDocObserver about the current file(s) *) @@ -75,7 +77,7 @@ type * An implementer is informed about the current project(s). *) ICEProjectObserver = interface - ['ICEProjectObserver'] + ['ICEProjectObserver'] // aProject has been created/opened procedure projNew(aProject: TCEProject); // aProject has been modified: switches, source name, ... @@ -87,6 +89,7 @@ type // aProject is about to be compiled procedure projCompiling(aProject: TCEProject); end; + (** * An implementer informs some ICEProjectObserver about the current project(s) *) @@ -101,12 +104,13 @@ type * An implementer can add a main menu entry. *) ICEMainMenuProvider = interface - ['ICEMainMenuProvider'] + ['ICEMainMenuProvider'] // item is a new mainMenu entry. item must be filled with the sub-items to be added. procedure menuDeclare(item: TMenuItem); // item is the mainMenu entry declared previously. the sub items can be updated, deleted. procedure menuUpdate(item: TMenuItem); end; + (** * An implementer collects and updates its observers menus. *) @@ -122,7 +126,7 @@ type * whose shortcuts are automatically handled *) ICEActionProvider = interface - ['ICEActionProvider'] + ['ICEActionProvider'] // the action handler will clear the references to the actions collected previously and start collecting if result. function actHandlerWantRecollect: boolean; // the action handler starts to collect the actions if result. @@ -132,6 +136,7 @@ type // the handler update the state of a particular action. procedure actHandleUpdater(action: TCustomAction); end; + (** * An implementer handles its observers actions. *) @@ -146,7 +151,7 @@ type * An implementer can expose some customizable shortcuts to be edited in a dedicated widget. *) ICEEditableShortCut = interface - ['ICEEditableShortCut'] + ['ICEEditableShortCut'] // a TCEEditableShortCutSubject will start to collect shortcuts if result function scedWantFirst: boolean; // a TCEEditableShortCutSubject collects the information on the shortcuts while result @@ -154,6 +159,7 @@ type // a TCEEditableShortCutSubject sends the possibly modified shortcut procedure scedSendItem(const category, identifier: string; aShortcut: TShortcut); end; + (** * An implementer manages its observers shortcuts. *) @@ -173,7 +179,7 @@ type * An implementer can expose some options to be edited in a dedicated widget. *) ICEEditableOptions = interface - ['ICEEditableOptions'] + ['ICEEditableOptions'] // the widget wants the category. function optionedWantCategory(): string; // the widget wants to know if the options will use a generic editor or a custom form. @@ -183,6 +189,7 @@ type // the option editor informs that something has happened. procedure optionedEvent(anEvent: TOptionEditorEvent); end; + (** * An implementer displays its observers editable options. *) @@ -274,13 +281,13 @@ type procedure subjSesOptsAfterLoad(aSubject: TCESessionOptionsSubject); {$IFDEF RELEASE}inline;{$ENDIF} -{ - Service getters: + { + Service getters: - The first overload assign the variable only when not yet set, the second is - designed for a punctual usage, for example if a widget needs the service in - a single and rarely called method. -} + The first overload assign the variable only when not yet set, the second is + designed for a punctual usage, for example if a widget needs the service in + a single and rarely called method. + } function getMessageDisplay(var obj: ICEMessagesDisplay): ICEMessagesDisplay; overload; function getMessageDisplay: ICEMessagesDisplay; overload; @@ -303,33 +310,38 @@ procedure subjDocNew(aSubject: TCEMultiDocSubject; aDoc: TCESynMemo); var i: Integer; begin - with aSubject do for i:= 0 to fObservers.Count-1 do - (fObservers.Items[i] as ICEMultiDocObserver).docNew(aDoc); + with aSubject do + for i := 0 to fObservers.Count - 1 do + (fObservers.Items[i] as ICEMultiDocObserver).docNew(aDoc); end; procedure subjDocClosing(aSubject: TCEMultiDocSubject; aDoc: TCESynMemo); var i: Integer; begin - with aSubject do for i:= 0 to fObservers.Count-1 do - (fObservers.Items[i] as ICEMultiDocObserver).docClosing(aDoc); + with aSubject do + for i := 0 to fObservers.Count - 1 do + (fObservers.Items[i] as ICEMultiDocObserver).docClosing(aDoc); end; procedure subjDocFocused(aSubject: TCEMultiDocSubject; aDoc: TCESynMemo); var i: Integer; begin - with aSubject do for i:= 0 to fObservers.Count-1 do - (fObservers.Items[i] as ICEMultiDocObserver).docFocused(aDoc); + with aSubject do + for i := 0 to fObservers.Count - 1 do + (fObservers.Items[i] as ICEMultiDocObserver).docFocused(aDoc); end; procedure subjDocChanged(aSubject: TCEMultiDocSubject; aDoc: TCESynMemo); var i: Integer; begin - with aSubject do for i:= 0 to fObservers.Count-1 do - (fObservers.Items[i] as ICEMultiDocObserver).docChanged(aDoc); + with aSubject do + for i := 0 to fObservers.Count - 1 do + (fObservers.Items[i] as ICEMultiDocObserver).docChanged(aDoc); end; + {$ENDREGION} {$REGION TCEProjectSubject -----------------------------------------------------} @@ -342,41 +354,47 @@ procedure subjProjNew(aSubject: TCEProjectSubject; aProj: TCEProject); var i: Integer; begin - with aSubject do for i:= 0 to fObservers.Count-1 do - (fObservers.Items[i] as ICEProjectObserver).ProjNew(aProj); + with aSubject do + for i := 0 to fObservers.Count - 1 do + (fObservers.Items[i] as ICEProjectObserver).ProjNew(aProj); end; procedure subjProjClosing(aSubject: TCEProjectSubject; aProj: TCEProject); var i: Integer; begin - with aSubject do for i:= 0 to fObservers.Count-1 do - (fObservers.Items[i] as ICEProjectObserver).projClosing(aProj); + with aSubject do + for i := 0 to fObservers.Count - 1 do + (fObservers.Items[i] as ICEProjectObserver).projClosing(aProj); end; procedure subjProjFocused(aSubject: TCEProjectSubject; aProj: TCEProject); var i: Integer; begin - with aSubject do for i:= 0 to fObservers.Count-1 do - (fObservers.Items[i] as ICEProjectObserver).projFocused(aProj); + with aSubject do + for i := 0 to fObservers.Count - 1 do + (fObservers.Items[i] as ICEProjectObserver).projFocused(aProj); end; procedure subjProjChanged(aSubject: TCEProjectSubject; aProj: TCEProject); var i: Integer; begin - with aSubject do for i:= 0 to fObservers.Count-1 do - (fObservers.Items[i] as ICEProjectObserver).projChanged(aProj); + with aSubject do + for i := 0 to fObservers.Count - 1 do + (fObservers.Items[i] as ICEProjectObserver).projChanged(aProj); end; procedure subjProjCompiling(aSubject: TCEProjectSubject; aProj: TCEProject); var i: Integer; begin - with aSubject do for i:= 0 to fObservers.Count-1 do - (fObservers.Items[i] as ICEProjectObserver).projCompiling(aProj); + with aSubject do + for i := 0 to fObservers.Count - 1 do + (fObservers.Items[i] as ICEProjectObserver).projCompiling(aProj); end; + {$ENDREGION} {$REGION TCESessionOptionsSubject ----------------------------------------------} @@ -389,25 +407,29 @@ procedure subjSesOptsBeforeSave(aSubject: TCESessionOptionsSubject); var i: Integer; begin - with aSubject do for i:= 0 to fObservers.Count-1 do - (fObservers.Items[i] as ICESessionOptionsObserver).sesoptBeforeSave; + with aSubject do + for i := 0 to fObservers.Count - 1 do + (fObservers.Items[i] as ICESessionOptionsObserver).sesoptBeforeSave; end; procedure subjSesOptsDeclareProperties(aSubject: TCESessionOptionsSubject; aFiler: TFiler); var i: Integer; begin - with aSubject do for i:= 0 to fObservers.Count-1 do - (fObservers.Items[i] as ICESessionOptionsObserver).sesoptDeclareProperties(aFiler); + with aSubject do + for i := 0 to fObservers.Count - 1 do + (fObservers.Items[i] as ICESessionOptionsObserver).sesoptDeclareProperties(aFiler); end; procedure subjSesOptsAfterLoad(aSubject: TCESessionOptionsSubject); var i: Integer; begin - with aSubject do for i:= 0 to fObservers.Count-1 do - (fObservers.Items[i] as ICESessionOptionsObserver).sesoptAfterLoad; + with aSubject do + for i := 0 to fObservers.Count - 1 do + (fObservers.Items[i] as ICESessionOptionsObserver).sesoptAfterLoad; end; + {$ENDREGION} {$REGION Misc subjects ---------------------------------------------------------} @@ -430,6 +452,7 @@ function TCEActionProviderSubject.acceptObserver(aObject: TObject): boolean; begin exit(aObject is ICEActionProvider); end; + {$ENDREGION} {$REGION ICESingleService getters ----------------------------------------------} @@ -468,6 +491,7 @@ function getMultiDocHandler: ICEMultiDocHandler; begin exit(EntitiesConnector.getSingleService('ICEMultiDocHandler') as ICEMultiDocHandler); end; + {$ENDREGION} end. diff --git a/src/ce_libmaneditor.pas b/src/ce_libmaneditor.pas index e3907495..8c68f23b 100644 --- a/src/ce_libmaneditor.pas +++ b/src/ce_libmaneditor.pas @@ -36,10 +36,11 @@ type protected procedure DoShow; override; public - constructor create(aOwner: TComponent); override; + constructor Create(aOwner: TComponent); override; end; implementation + {$R *.lfm} uses @@ -48,7 +49,7 @@ uses const notav: string = '< n/a >'; -constructor TCELibManEditorWidget.create(aOwner: TComponent); +constructor TCELibManEditorWidget.Create(aOwner: TComponent); var png: TPortableNetworkGraphic; begin @@ -72,12 +73,11 @@ begin png.LoadFromLazarusResource('folder_add'); btnSelRoot.Glyph.Assign(png); finally - png.free; + png.Free; end; end; -procedure TCELibManEditorWidget.ListEdited(Sender: TObject; Item: TListItem; - var AValue: string); +procedure TCELibManEditorWidget.ListEdited(Sender: TObject; Item: TListItem; var AValue: string); begin gridToData; end; @@ -91,14 +91,15 @@ begin itm.SubItems.Add(notav); itm.SubItems.Add(notav); SetFocus; - itm.Selected := true; + itm.Selected := True; end; procedure TCELibManEditorWidget.btnEditAliasClick(Sender: TObject); var al: string; begin - if List.Selected = nil then exit; + if List.Selected = nil then + exit; al := List.Selected.Caption; if inputQuery('library alias', '', al) then List.Selected.Caption := al; @@ -107,7 +108,8 @@ end; procedure TCELibManEditorWidget.btnRemLibClick(Sender: TObject); begin - if List.Selected = nil then exit; + if List.Selected = nil then + exit; List.Items.Delete(List.Selected.Index); gridToData; end; @@ -116,7 +118,8 @@ procedure TCELibManEditorWidget.btnSelFileClick(Sender: TObject); var ini: string; begin - if List.Selected = nil then exit; + if List.Selected = nil then + exit; if List.Selected.SubItems.Count > 0 then ini := List.Selected.SubItems[0] else @@ -125,21 +128,22 @@ begin List.Selected.SubItems.Add(ini); end; with TOpenDialog.Create(nil) do - try - filename := ini; - if execute then - begin - if not fileExists(filename) then - List.Selected.SubItems[0] := extractFilePath(filename) - else begin - List.Selected.SubItems[0] := filename; - if (List.Selected.Caption = '') or (List.Selected.Caption = notav) then - List.Selected.Caption := ChangeFileExt(extractFileName(filename), ''); + try + filename := ini; + if Execute then + begin + if not fileExists(filename) then + List.Selected.SubItems[0] := extractFilePath(filename) + else + begin + List.Selected.SubItems[0] := filename; + if (List.Selected.Caption = '') or (List.Selected.Caption = notav) then + List.Selected.Caption := ChangeFileExt(extractFileName(filename), ''); + end; end; + finally + Free; end; - finally - Free; - end; gridToData; end; @@ -147,7 +151,8 @@ procedure TCELibManEditorWidget.btnSelfoldOfFilesClick(Sender: TObject); var dir, outdir: string; begin - if List.Selected = nil then exit; + if List.Selected = nil then + exit; if List.Selected.SubItems.Count > 0 then dir := List.Selected.SubItems[0] else @@ -155,7 +160,7 @@ begin dir := ''; List.Selected.SubItems.Add(dir); end; - if selectDirectory('folder of static libraries', dir, outdir, true, 0) then + if selectDirectory('folder of static libraries', dir, outdir, True, 0) then List.Selected.SubItems[0] := outdir; gridToData; end; @@ -164,7 +169,8 @@ procedure TCELibManEditorWidget.btnSelRootClick(Sender: TObject); var dir, outdir: string; begin - if List.Selected = nil then exit; + if List.Selected = nil then + exit; if List.Selected.SubItems.Count > 1 then dir := List.Selected.SubItems[1] else @@ -173,15 +179,17 @@ begin while List.Selected.SubItems.Count < 2 do List.Selected.SubItems.Add(dir); end; - if selectDirectory('sources root', dir, outdir, true, 0) then + if selectDirectory('sources root', dir, outdir, True, 0) then List.Selected.SubItems[1] := outdir; gridToData; end; procedure TCELibManEditorWidget.btnMoveUpClick(Sender: TObject); begin - if list.Selected = nil then exit; - if list.Selected.Index = 0 then exit; + if list.Selected = nil then + exit; + if list.Selected.Index = 0 then + exit; // list.Items.Exchange(list.Selected.Index, list.Selected.Index - 1); gridToData; @@ -189,8 +197,10 @@ end; procedure TCELibManEditorWidget.btnMoveDownClick(Sender: TObject); begin - if list.Selected = nil then exit; - if list.Selected.Index = list.Items.Count-1 then exit; + if list.Selected = nil then + exit; + if list.Selected.Index = list.Items.Count - 1 then + exit; // list.Items.Exchange(list.Selected.Index, list.Selected.Index + 1); gridToData; @@ -209,8 +219,9 @@ var i: NativeInt; begin List.Clear; - if LibMan = nil then exit; - for i:= 0 to LibMan.libraries.Count-1 do + if LibMan = nil then + exit; + for i := 0 to LibMan.libraries.Count - 1 do begin itm := TLibraryItem(LibMan.libraries.Items[i]); row := List.Items.Add; @@ -225,7 +236,8 @@ var itm: TLibraryItem; row: TListItem; begin - if LibMan = nil then exit; + if LibMan = nil then + exit; LibMan.libraries.Clear; for row in List.Items do begin diff --git a/src/ce_main.pas b/src/ce_main.pas index dd51a56b..9045f2e2 100644 --- a/src/ce_main.pas +++ b/src/ce_main.pas @@ -194,7 +194,7 @@ type fEditWidg: TCEEditorWidget; fProjWidg: TCEProjectInspectWidget; fPrjCfWidg: TCEProjectConfigurationWidget; - fFindWidg: TCESearchWidget; + fFindWidg: TCESearchWidget; fExplWidg: TCEMiniExplorerWidget; fLibMWidg: TCELibManEditorWidget; fTlsEdWidg: TCEToolsEditorWidget; @@ -256,13 +256,12 @@ type procedure FreeRunnableProc; // widget interfaces subroutines - procedure widgetShowFromAction(sender: TObject); + procedure widgetShowFromAction(Sender: TObject); // run & exec sub routines - procedure asyncprocOutput(sender: TObject); - procedure asyncprocTerminate(sender: TObject); - procedure compileAndRunFile(unittest: boolean = false; redirect: boolean = true; - const runArgs: string = ''); + procedure asyncprocOutput(Sender: TObject); + procedure asyncprocTerminate(Sender: TObject); + procedure compileAndRunFile(unittest: boolean = False; redirect: boolean = True; const runArgs: string = ''); // file sub routines procedure newFile; @@ -285,14 +284,14 @@ type procedure mruClearClick(Sender: TObject); // layout - procedure layoutMnuItemClick(sender: TObject); + procedure layoutMnuItemClick(Sender: TObject); procedure layoutLoadFromFile(const aFilename: string); procedure layoutSaveToFile(const aFilename: string); procedure layoutUpdateMenu; public - constructor create(aOwner: TComponent); override; - destructor destroy; override; + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; procedure UpdateDockCaption(Exclude: TControl = nil); override; end; @@ -300,17 +299,18 @@ var CEMainForm: TCEMainForm; implementation + {$R *.lfm} uses SynMacroRecorder, ce_options, ce_symstring; {$REGION Standard Comp/Obj------------------------------------------------------} -constructor TCEMainForm.create(aOwner: TComponent); +constructor TCEMainForm.Create(aOwner: TComponent); begin - inherited create(aOwner); - fMainMenuSubj := TCEMainMenuSubject.create; - fActionHandler := TCEActionProviderSubject.create; + inherited Create(aOwner); + fMainMenuSubj := TCEMainMenuSubject.Create; + fActionHandler := TCEActionProviderSubject.Create; // EntitiesConnector.addObserver(self); // @@ -327,7 +327,7 @@ begin // updateMainMenuProviders; EntitiesConnector.forceUpdate; - fInitialized := true; + fInitialized := True; end; procedure TCEMainForm.checkCompilo; @@ -338,57 +338,57 @@ begin if exeInSysPath('dmd') or exeInSysPath('dub') then exit; ce_common.dlgOkError(msg); - close; + Close; end; procedure TCEMainForm.getCMdParams; var - value: string; + Value: string; lst: TStringList; hdl: THandle; str: string; begin if application.ParamCount > 0 then begin - value := application.Params[1]; - if value <> '' then + Value := application.Params[1]; + if Value <> '' then begin setLength(str, 6); lst := TStringList.Create; try - lst.DelimitedText := value; - for value in lst do + lst.DelimitedText := Value; + for Value in lst do begin - if not fileExists(value) then + if not fileExists(Value) then continue; - hdl := FileOpen(value, fmOpenRead); + hdl := FileOpen(Value, fmOpenRead); if hdl = 0 then continue; FileRead(hdl, str[1], length(str)); FileClose(hdl); if str = 'object' then - openProj(value) + openProj(Value) else - openFile(value); + openFile(Value); end; finally lst.Free; end; end; end; - value := application.GetOptionValue('p', 'project'); - if (value <> '') and fileExists(value) then - openProj(value); - value := application.GetOptionValue('f', 'files'); - if value <> '' then + Value := application.GetOptionValue('p', 'project'); + if (Value <> '') and fileExists(Value) then + openProj(Value); + Value := application.GetOptionValue('f', 'files'); + if Value <> '' then begin lst := TStringList.Create; try - lst.DelimitedText := value; - for value in lst do + lst.DelimitedText := Value; + for Value in lst do begin - if fileExists(value) then - openFile(value); + if fileExists(Value) then + openFile(Value); end; finally lst.Free; @@ -413,23 +413,23 @@ var itm: TMenuItem; begin fWidgList := TCEWidgetList.Create; - fMesgWidg := TCEMessagesWidget.create(self); - fEditWidg := TCEEditorWidget.create(self); - fProjWidg := TCEProjectInspectWidget.create(self); - fPrjCfWidg:= TCEProjectConfigurationWidget.create(self); - fFindWidg := TCESearchWidget.create(self); - fExplWidg := TCEMiniExplorerWidget.create(self); - fLibMWidg := TCELibManEditorWidget.create(self); - fTlsEdWidg:= TCEToolsEditorWidget.create(self); - fPrInpWidg:= TCEProcInputWidget.create(self); - fTodolWidg:= TCETodoListWidget.create(self); - fOptEdWidg:= TCEOptionEditorWidget.create(self); - fSymlWidg := TCESymbolListWidget.create(self); + fMesgWidg := TCEMessagesWidget.Create(self); + fEditWidg := TCEEditorWidget.Create(self); + fProjWidg := TCEProjectInspectWidget.Create(self); + fPrjCfWidg := TCEProjectConfigurationWidget.Create(self); + fFindWidg := TCESearchWidget.Create(self); + fExplWidg := TCEMiniExplorerWidget.Create(self); + fLibMWidg := TCELibManEditorWidget.Create(self); + fTlsEdWidg := TCEToolsEditorWidget.Create(self); + fPrInpWidg := TCEProcInputWidget.Create(self); + fTodolWidg := TCETodoListWidget.Create(self); + fOptEdWidg := TCEOptionEditorWidget.Create(self); + fSymlWidg := TCESymbolListWidget.Create(self); getMessageDisplay(fMsgs); {$IFDEF WIN32} - fCdbWidg := TCECdbWidget.create(self); + fCdbWidg := TCECdbWidget.Create(self); {$ENDIF} fWidgList.addWidget(@fMesgWidg); @@ -473,26 +473,30 @@ begin DockMaster.MakeDockSite(Self, [akBottom], admrpChild); DockMaster.OnShowOptions := @ShowAnchorDockOptions; DockMaster.HeaderStyle := adhsPoints; - DockMaster.HideHeaderCaptionFloatingControl := true; + DockMaster.HideHeaderCaptionFloatingControl := True; // this is a fix copied from Laz, seems to force the space between the menu and the UI stay 0. - if DockManager is TAnchorDockManager then begin - aManager:=TAnchorDockManager(DockManager); - aManager.PreferredSiteSizeAsSiteMinimum:=false; + if DockManager is TAnchorDockManager then + begin + aManager := TAnchorDockManager(DockManager); + aManager.PreferredSiteSizeAsSiteMinimum := False; end; // makes widget dockable - for i := 0 to fWidgList.Count-1 do + for i := 0 to fWidgList.Count - 1 do begin widg := fWidgList.widget[i]; - if not widg.isDockable then continue; - DockMaster.MakeDockable(widg, true); + if not widg.isDockable then + continue; + DockMaster.MakeDockable(widg, True); DockMaster.GetAnchorSite(widg).Header.HeaderPosition := adlhpTop; end; // load existing or default docking - if FileExists(getCoeditDocPath + 'docking.xml') then LoadDocking - else begin + if FileExists(getCoeditDocPath + 'docking.xml') then + LoadDocking + else + begin Height := 0; // center DockMaster.ManualDock(DockMaster.GetAnchorSite(fEditWidg), DockMaster.GetSite(Self), alBottom); @@ -509,10 +513,11 @@ begin DockMaster.ManualDock(DockMaster.GetAnchorSite(fProjWidg), DockMaster.GetSite(fEditWidg), alRight); DockMaster.ManualDock(DockMaster.GetAnchorSite(fPrjCfWidg), DockMaster.GetAnchorSite(fProjWidg), alBottom, fProjWidg); // close remaining and header to top - for i := 0 to fWidgList.Count-1 do + for i := 0 to fWidgList.Count - 1 do begin widg := fWidgList.widget[i]; - if not widg.isDockable then continue; + if not widg.isDockable then + continue; DockMaster.GetAnchorSite(widg).Header.HeaderPosition := adlhpTop; if not DockMaster.GetAnchorSite(widg).HasParent then DockMaster.GetAnchorSite(widg).Close @@ -528,7 +533,7 @@ var begin fname1 := getCoeditDocPath + 'options2.txt'; fname2 := getCoeditDocPath + 'options2.bak'; - opts := TCEOptions.create(nil); + opts := TCEOptions.Create(nil); try if fileExists(fname1) then begin @@ -536,9 +541,9 @@ begin if opts.hasLoaded then begin if fileExists(fname2) then - sysutils.deleteFile(fname2); + SysUtils.deleteFile(fname2); if not fileExists(fname2) then - fileutil.copyFile(fname1, fname2, false); + fileutil.copyFile(fname1, fname2, False); end; end; finally @@ -552,7 +557,7 @@ var begin if not fInitialized then exit; - opts := TCEOptions.create(nil); + opts := TCEOptions.Create(nil); try forceDirectory(getCoeditDocPath); opts.saveToFile(getCoeditDocPath + 'options2.txt'); @@ -566,14 +571,18 @@ var xcfg: TXMLConfigStorage; i: NativeInt; begin - if not fInitialized then exit; - if not Visible then exit; + if not fInitialized then + exit; + if not Visible then + exit; // - if WindowState = wsMinimized then WindowState := wsNormal; + if WindowState = wsMinimized then + WindowState := wsNormal; // does not save minimized/undocked windows to prevent bugs - for i:= 0 to fWidgList.Count-1 do + for i := 0 to fWidgList.Count - 1 do begin - if not fWidgList.widget[i].isDockable then continue; + if not fWidgList.widget[i].isDockable then + continue; if DockMaster.GetAnchorSite(fWidgList.widget[i]).WindowState = wsMinimized then DockMaster.GetAnchorSite(fWidgList.widget[i]).Close else if not DockMaster.GetAnchorSite(fWidgList.widget[i]).HasParent then @@ -581,7 +590,7 @@ begin end; // forceDirectory(getCoeditDocPath); - xcfg := TXMLConfigStorage.Create(getCoeditDocPath + 'docking.xml',false); + xcfg := TXMLConfigStorage.Create(getCoeditDocPath + 'docking.xml', False); try DockMaster.SaveLayoutToConfig(xcfg); xcfg.WriteToDisk; @@ -589,7 +598,7 @@ begin xcfg.Free; end; // - xcfg := TXMLConfigStorage.Create(getCoeditDocPath + 'dockingopts.xml',false); + xcfg := TXMLConfigStorage.Create(getCoeditDocPath + 'dockingopts.xml', False); try DockMaster.SaveSettingsToConfig(xcfg); xcfg.WriteToDisk; @@ -605,10 +614,10 @@ var begin if fileExists(getCoeditDocPath + 'docking.xml') then begin - xcfg := TXMLConfigStorage.Create(getCoeditDocPath + 'docking.xml', true); + xcfg := TXMLConfigStorage.Create(getCoeditDocPath + 'docking.xml', True); try try - DockMaster.LoadLayoutFromConfig(xcfg, false); + DockMaster.LoadLayoutFromConfig(xcfg, False); except exit; end; @@ -625,7 +634,7 @@ begin end; if fileExists(getCoeditDocPath + 'dockingopts.xml') then begin - xcfg := TXMLConfigStorage.Create(getCoeditDocPath + 'dockingopts.xml', true); + xcfg := TXMLConfigStorage.Create(getCoeditDocPath + 'dockingopts.xml', True); try try DockMaster.LoadSettingsFromConfig(xcfg); @@ -653,14 +662,14 @@ begin exit; // fname := fRunProc.Executable; - if ExtractFileDir(fname) <> GetTempDir(false) then + if ExtractFileDir(fname) <> GetTempDir(False) then exit; killProcess(fRunProc); if fileExists(fname) then - sysutils.DeleteFile(fname); + SysUtils.DeleteFile(fname); end; -destructor TCEMainForm.destroy; +destructor TCEMainForm.Destroy; begin SaveSettings; // @@ -682,7 +691,7 @@ begin Caption := 'Coedit'; end; -procedure TCEMainForm.ApplicationProperties1Exception(Sender: TObject;E: Exception); +procedure TCEMainForm.ApplicationProperties1Exception(Sender: TObject; E: Exception); begin if fMesgWidg = nil then ce_common.dlgOkError(E.Message) @@ -694,14 +703,16 @@ procedure TCEMainForm.FormCloseQuery(Sender: TObject; var CanClose: boolean); var i: Integer; begin - canClose := false; - if fProject <> nil then if fProject.modified then - if ce_common.dlgOkCancel( - 'last project modifications are not saved, quit anyway ?') <> mrOK then - exit; - for i := fMultidoc.documentCount-1 downto 0 do - if not fMultidoc.closeDocument(i) then exit; - canClose := true; + canClose := False; + if fProject <> nil then + if fProject.modified then + if ce_common.dlgOkCancel( + 'last project modifications are not saved, quit anyway ?') <> mrOk then + exit; + for i := fMultidoc.documentCount - 1 downto 0 do + if not fMultidoc.closeDocument(i) then + exit; + canClose := True; // saving doesnt work when csDestroying in comp.state (in Free) SaveDocking; @@ -712,13 +723,14 @@ var hasEd: boolean; hasProj: boolean; begin - Handled := true; + Handled := True; {$IFDEF LINUX} // fixes the error raised when the update is called after docClosing () // looks like a syncro error, needs more investigation. Application.DisableIdleHandler; {$ENDIF} - if fUpdateCount > 0 then exit; + if fUpdateCount > 0 then + exit; Inc(fUpdateCount); @@ -739,38 +751,39 @@ begin actFileCompAndRunWithArgs.Enabled := fDoc.isDSource; actFileUnittest.Enabled := fDoc.isDSource; // - actEdMacPlay.Enabled := true; - actEdMacStartStop.Enabled := true; - actEdIndent.Enabled := true; - actEdUnIndent.Enabled := true; + actEdMacPlay.Enabled := True; + actEdMacStartStop.Enabled := True; + actEdIndent.Enabled := True; + actEdUnIndent.Enabled := True; // - actFileSave.Enabled := true; - actFileSaveAs.Enabled := true; - actFileClose.Enabled := true; - actFileSaveAll.Enabled := true; - actFileOpenContFold.Enabled := true; - actFileHtmlExport.Enabled := true; + actFileSave.Enabled := True; + actFileSaveAs.Enabled := True; + actFileClose.Enabled := True; + actFileSaveAll.Enabled := True; + actFileOpenContFold.Enabled := True; + actFileHtmlExport.Enabled := True; end - else begin - actEdCopy.Enabled := false; - actEdCut.Enabled := false ; - actEdPaste.Enabled := false; - actEdUndo.Enabled := false; - actEdRedo.Enabled := false; - actEdMacPlay.Enabled := false; - actEdMacStartStop.Enabled := false; - actEdIndent.Enabled := false; - actEdUnIndent.Enabled := false; + else + begin + actEdCopy.Enabled := False; + actEdCut.Enabled := False; + actEdPaste.Enabled := False; + actEdUndo.Enabled := False; + actEdRedo.Enabled := False; + actEdMacPlay.Enabled := False; + actEdMacStartStop.Enabled := False; + actEdIndent.Enabled := False; + actEdUnIndent.Enabled := False; // - actFileCompAndRun.Enabled := false; - actFileCompAndRunWithArgs.Enabled := false; - actFileUnittest.Enabled := false; - actFileSave.Enabled := false; - actFileSaveAs.Enabled := false; - actFileClose.Enabled := false; - actFileSaveAll.Enabled := false; - actFileOpenContFold.Enabled := false; - actFileHtmlExport.Enabled := false; + actFileCompAndRun.Enabled := False; + actFileCompAndRunWithArgs.Enabled := False; + actFileUnittest.Enabled := False; + actFileSave.Enabled := False; + actFileSaveAs.Enabled := False; + actFileClose.Enabled := False; + actFileSaveAll.Enabled := False; + actFileOpenContFold.Enabled := False; + actFileHtmlExport.Enabled := False; end; hasProj := fProject <> nil; actProjSave.Enabled := hasProj; @@ -802,15 +815,15 @@ var itm: TMenuItem; doneUpdate: boolean; begin - doneUpdate := false; - for j := 0 to fMainMenuSubj.observersCount-1 do + doneUpdate := False; + for j := 0 to fMainMenuSubj.observersCount - 1 do begin // try to update existing entry. - for i := 0 to mainMenu.Items.Count-1 do + for i := 0 to mainMenu.Items.Count - 1 do if PtrInt(fMainMenuSubj.observers[j]) = mainMenu.Items[i].Tag then begin (fMainMenuSubj.observers[j] as ICEMainMenuProvider).menuUpdate(mainMenu.Items[i]); - doneUpdate := true; + doneUpdate := True; break; end; if doneUpdate then @@ -818,10 +831,10 @@ begin // otherwise propose to create a new entry itm := TMenuItem.Create(Self); (fMainMenuSubj.observers[j] as ICEMainMenuProvider).menuDeclare(itm); - itm.Tag:= PtrInt(fMainMenuSubj.observers[j]); + itm.Tag := PtrInt(fMainMenuSubj.observers[j]); case itm.Count > 0 of - true: mainMenu.Items.Add(itm); - false: itm.Free; + True: mainMenu.Items.Add(itm); + False: itm.Free; end; end; end; @@ -836,11 +849,14 @@ var i: NativeInt; begin srcLst := TMruFileList(Sender); - if srcLst = nil then exit; + if srcLst = nil then + exit; trgMnu := TMenuItem(srcLst.objectTag); - if trgMnu = nil then exit; + if trgMnu = nil then + exit; - if fUpdateCount > 0 then exit; + if fUpdateCount > 0 then + exit; Inc(fUpdateCount); try if srcLst = fFileMru then @@ -850,7 +866,7 @@ begin trgMnu.Clear; - for i:= 0 to srcLst.Count-1 do + for i := 0 to srcLst.Count - 1 do begin fname := srcLst.Strings[i]; itm := TMenuItem.Create(trgMnu); @@ -877,10 +893,12 @@ var srcLst: TMruFileList; begin srcLst := TMruFileList(TmenuItem(Sender).Tag); - if srcLst = nil then exit; + if srcLst = nil then + exit; // srcLst.Clear; end; + {$ENDREGION} {$REGION ICEMultiDocMonitor ----------------------------------------------------} @@ -891,7 +909,8 @@ end; procedure TCEMainForm.docClosing(aDoc: TCESynMemo); begin - if aDoc <> fDoc then exit; + if aDoc <> fDoc then + exit; fDoc := nil; end; @@ -904,13 +923,14 @@ procedure TCEMainForm.docChanged(aDoc: TCESynMemo); begin fDoc := aDoc; end; + {$ENDREGION} {$REGION ICEEditableShortCut ---------------------------------------------------} function TCEMainForm.scedWantFirst: boolean; begin fScCollectCount := 0; - result := true; + Result := True; end; function TCEMainForm.scedWantNext(out category, identifier: string; out aShortcut: TShortcut): boolean; @@ -923,13 +943,14 @@ begin aShortcut := act.ShortCut; // fScCollectCount += 1; - result := fScCollectCount < actions.ActionCount; + Result := fScCollectCount < actions.ActionCount; end; procedure TCEMainForm.scedSendItem(const category, identifier: string; aShortcut: TShortcut); begin end; + {$ENDREGION} {$REGION TCEActionProviderHandler ----------------------------------------------} @@ -939,16 +960,19 @@ var act: TContainedAction; i, j: Integer; begin - for i:= 0 to fActionHandler.observersCount-1 do + for i := 0 to fActionHandler.observersCount - 1 do begin prov := fActionHandler[i] as ICEActionProvider; - if not prov.actHandlerWantRecollect then continue; + if not prov.actHandlerWantRecollect then + continue; // - for j := Actions.ActionCount-1 downto 0 do + for j := Actions.ActionCount - 1 downto 0 do begin act := Actions.Actions[j]; - if act.Owner = Self then continue; - if act.Tag <> PtrInt(prov) then continue; + if act.Owner = Self then + continue; + if act.Tag <> PtrInt(prov) then + continue; // act.ActionList := nil; end; @@ -961,6 +985,7 @@ var act: TCustomAction; cat: string; i: Integer; + procedure addAction; begin act.ActionList := Actions; @@ -972,10 +997,11 @@ var end; begin - for i:= 0 to fActionHandler.observersCount-1 do + for i := 0 to fActionHandler.observersCount - 1 do begin prov := fActionHandler[i] as ICEActionProvider; - if not prov.actHandlerWantFirst then continue; + if not prov.actHandlerWantFirst then + continue; // act := nil; cat := ''; @@ -984,6 +1010,7 @@ begin addAction; end; end; + {$ENDREGION} {$REGION file ------------------------------------------------------------------} @@ -996,17 +1023,18 @@ begin exp := TSynExporterHTML.Create(nil); try with TOpenDialog.Create(nil) do - try - if Execute then begin - exp.Highlighter := fDoc.Highlighter; - exp.Title := fDoc.fileName; - exp.ExportAsText:=true; - exp.ExportAll(fDoc.Lines); - exp.SaveToFile(filename); + try + if Execute then + begin + exp.Highlighter := fDoc.Highlighter; + exp.Title := fDoc.fileName; + exp.ExportAsText := True; + exp.ExportAll(fDoc.Lines); + exp.SaveToFile(filename); + end; + finally + Free; end; - finally - Free; - end; finally exp.Free; end; @@ -1038,24 +1066,27 @@ end; procedure TCEMainForm.actFileOpenExecute(Sender: TObject); begin - if fEditWidg = nil then exit; + if fEditWidg = nil then + exit; // with TOpenDialog.Create(nil) do - try - filter := DdiagFilter; - if execute then - begin - openFile(filename); + try + filter := DdiagFilter; + if Execute then + begin + openFile(filename); + end; + finally + Free; end; - finally - free; - end; end; procedure TCEMainForm.actProjOpenContFoldExecute(Sender: TObject); begin - if fProject = nil then exit; - if not fileExists(fProject.fileName) then exit; + if fProject = nil then + exit; + if not fileExists(fProject.fileName) then + exit; // DockMaster.GetAnchorSite(fExplWidg).Show; fExplWidg.expandPath(extractFilePath(fProject.fileName)); @@ -1064,70 +1095,79 @@ end; procedure TCEMainForm.actFileNewExecute(Sender: TObject); begin newFile; - fDoc.setFocus; + fDoc.SetFocus; end; procedure TCEMainForm.actFileNewRunExecute(Sender: TObject); begin newFile; fDoc.Text := - 'module runnable;' + LineEnding + - LineEnding + - 'import std.stdio;' + LineEnding + - LineEnding + - 'void main(string[] args)' + LineEnding + - '{' + LineEnding + - ' // this file can be directly executed using menu file/compile & run' + LineEnding + - ' // phobos and libman imports are allowed' + LineEnding + - ' writeln("hello runnable module");' + LineEnding + - '}'; - fDoc.setFocus; + 'module runnable;' + LineEnding + + LineEnding + + 'import std.stdio;' + LineEnding + + LineEnding + + 'void main(string[] args)' + LineEnding + + '{' + LineEnding + + ' // this file can be directly executed using menu file/compile & run' + LineEnding + + ' // phobos and libman imports are allowed' + LineEnding + + ' writeln("hello runnable module");' + LineEnding + + '}'; + fDoc.SetFocus; end; procedure TCEMainForm.actFileSaveAsExecute(Sender: TObject); begin - if fDoc = nil then exit; + if fDoc = nil then + exit; // with TSaveDialog.Create(nil) do - try - Filter := DdiagFilter; - if execute then - fDoc.saveToFile(filename); + try + Filter := DdiagFilter; + if Execute then + fDoc.saveToFile(filename); fFileMru.Insert(0, filename); - finally - free; - end; + finally + Free; + end; end; procedure TCEMainForm.actFileSaveExecute(Sender: TObject); var str: string; begin - if fDoc = nil then exit; + if fDoc = nil then + exit; // str := fDoc.fileName; if (str <> fDoc.tempFilename) and (fileExists(str)) then saveFile(fDoc) - else actFileSaveAs.Execute; + else + actFileSaveAs.Execute; end; procedure TCEMainForm.actFileAddToProjExecute(Sender: TObject); begin - if fDoc = nil then exit; - if fDoc.isProjectSource then exit; - if fProject = nil then exit; + if fDoc = nil then + exit; + if fDoc.isProjectSource then + exit; + if fProject = nil then + exit; // if fileExists(fDoc.fileName) then fProject.addSource(fDoc.fileName) - else dlgOkInfo('the file has not been added to the project because it does not exist'); + else + dlgOkInfo('the file has not been added to the project because it does not exist'); end; procedure TCEMainForm.actFileCloseExecute(Sender: TObject); begin - if fDoc = nil then exit; - if fDoc.modified then if dlgOkCancel( - 'The latest mdofifications are not saved, continue ?') = mrCancel - then exit; + if fDoc = nil then + exit; + if fDoc.modified then + if dlgOkCancel( + 'The latest mdofifications are not saved, continue ?') = mrCancel then + exit; // fDoc.Free; end; @@ -1136,17 +1176,18 @@ procedure TCEMainForm.actFileSaveAllExecute(Sender: TObject); var i: Integer; begin - for i:= 0 to fMultidoc.documentCount-1 do + for i := 0 to fMultidoc.documentCount - 1 do saveFile(fMultidoc.document[i]); end; -procedure TCEMainForm.FormDropFiles(Sender: TObject;const FileNames: array of String); +procedure TCEMainForm.FormDropFiles(Sender: TObject; const FileNames: array of String); var i: NativeInt; begin - for i:= low(FileNames) to high(FileNames) do + for i := low(FileNames) to high(FileNames) do openFile(FileNames[i]); end; + {$ENDREGION} {$REGION edit ------------------------------------------------------------------} @@ -1192,7 +1233,8 @@ begin begin if fEditWidg.macRecorder.State = msRecording then fEditWidg.macRecorder.Stop - else fEditWidg.macRecorder.RecordMacro(fDoc); + else + fEditWidg.macRecorder.RecordMacro(fDoc); end; end; @@ -1214,14 +1256,17 @@ var str: string; begin win := DockMaster.GetAnchorSite(fFindWidg); - if win = nil then exit; + if win = nil then + exit; win.Show; win.BringToFront; - if fDoc = nil then exit; + if fDoc = nil then + exit; // if fDoc.SelAvail then str := fDoc.SelText - else str := fDoc.Identifier; + else + str := fDoc.Identifier; ffindwidg.cbToFind.Text := str; ffindwidg.cbToFindChange(nil); end; @@ -1230,21 +1275,23 @@ procedure TCEMainForm.actEdFindNextExecute(Sender: TObject); begin ffindwidg.actFindNextExecute(nil); end; + {$ENDREGION} {$REGION run -------------------------------------------------------------------} -procedure TCEMainForm.asyncprocOutput(sender: TObject); +procedure TCEMainForm.asyncprocOutput(Sender: TObject); var proc: TProcess; lst: TStringList; str: string; begin - proc := TProcess(sender); + proc := TProcess(Sender); lst := TStringList.Create; try processOutputToStrings(proc, lst); - if proc = fRunProc then for str in lst do - fMsgs.message(str, fDoc, amcEdit, amkBub) + if proc = fRunProc then + for str in lst do + fMsgs.message(str, fDoc, amcEdit, amkBub) else if proc.Executable = DCompiler then for str in lst do fMsgs.message(str, fDoc, amcEdit, amkAuto); @@ -1253,14 +1300,14 @@ begin end; end; -procedure TCEMainForm.asyncprocTerminate(sender: TObject); +procedure TCEMainForm.asyncprocTerminate(Sender: TObject); var proc: TProcess; lst: TStringList; str: string; inph: TObject; begin - proc := TProcess(sender); + proc := TProcess(Sender); lst := TStringList.Create; try processOutputToStrings(proc, lst); @@ -1274,30 +1321,32 @@ begin lst.Free; end; //if proc = fPrInpWidg.process then - //fPrInpWidg.process := nil; + //fPrInpWidg.process := nil; inph := EntitiesConnector.getSingleService('ICEProcInputHandler'); - if (inph <> nil) then (inph as ICEProcInputHandler).removeProcess(proc); + if (inph <> nil) then + (inph as ICEProcInputHandler).removeProcess(proc); end; -procedure TCEMainForm.compileAndRunFile(unittest: boolean = false; redirect: boolean = true; - const runArgs: string = ''); +procedure TCEMainForm.compileAndRunFile(unittest: boolean = False; redirect: boolean = True; const runArgs: string = ''); var dmdproc: TProcess; fname: string; begin FreeRunnableProc; - if fDoc = nil then exit; + if fDoc = nil then + exit; fRunProc := TCheckedAsyncProcess.Create(nil); if redirect then begin - fRunProc.Options := [poStderrToOutPut, poUsePipes]; - fRunProc.ShowWindow := swoHIDE; - fRunProc.OnReadData := @asyncprocOutput; - fRunProc.OnTerminate:= @asyncprocTerminate; - end else + fRunProc.Options := [poStderrToOutPut, poUsePipes]; + fRunProc.ShowWindow := swoHIDE; + fRunProc.OnReadData := @asyncprocOutput; + fRunProc.OnTerminate := @asyncprocTerminate; + end + else begin {$IFDEF LINUX} fRunProc.Options := fRunProc.Options + [poNewConsole]; @@ -1310,8 +1359,10 @@ begin fMsgs.clearByData(fDoc); fMsgs.message('compiling ' + shortenPath(fDoc.fileName, 25), fDoc, amcEdit, amkInf); - if fileExists(fDoc.fileName) then fDoc.save - else fDoc.saveTempFile; + if fileExists(fDoc.fileName) then + fDoc.save + else + fDoc.saveTempFile; fname := stripFileExt(fDoc.fileName); if fRunnableSw = '' then @@ -1328,12 +1379,14 @@ begin dmdproc.Parameters.Add('-main'); dmdproc.Parameters.Add('-unittest'); end - else dmdproc.Parameters.Add('-version=runnable_module'); + else + dmdproc.Parameters.Add('-version=runnable_module'); dmdproc.Parameters.Add('-of' + fname + exeExt); LibMan.getLibFiles(nil, dmdproc.Parameters); LibMan.getLibSources(nil, dmdproc.Parameters); dmdproc.Execute; - while dmdproc.Running do asyncprocOutput(dmdProc); + while dmdproc.Running do + asyncprocOutput(dmdProc); if (dmdProc.ExitStatus = 0) then begin @@ -1344,12 +1397,13 @@ begin fRunProc.Parameters.DelimitedText := symbolExpander.get(runArgs); fRunProc.Executable := fname + exeExt; if redirect then - getprocInputHandler.addProcess(fRunProc); + getprocInputHandler.addProcess(fRunProc); fRunProc.Execute; - sysutils.DeleteFile(fname + objExt); + SysUtils.DeleteFile(fname + objExt); end - else begin - fMsgs.message(shortenPath(fDoc.fileName,25) + ' has not been compiled', + else + begin + fMsgs.message(shortenPath(fDoc.fileName, 25) + ' has not been compiled', fDoc, amcEdit, amkErr); end; @@ -1360,36 +1414,42 @@ end; procedure TCEMainForm.actFileUnittestExecute(Sender: TObject); begin - if fDoc = nil then exit; - compileAndRunFile(true); + if fDoc = nil then + exit; + compileAndRunFile(True); end; procedure TCEMainForm.actFileCompAndRunExecute(Sender: TObject); begin - if fDoc = nil then exit; - compileAndRunFile(false); + if fDoc = nil then + exit; + compileAndRunFile(False); end; procedure TCEMainForm.actFileCompileAndRunOutExecute(Sender: TObject); begin - if fDoc = nil then exit; - compileAndRunFile(false, false); + if fDoc = nil then + exit; + compileAndRunFile(False, False); end; procedure TCEMainForm.actFileCompAndRunWithArgsExecute(Sender: TObject); var runargs: string; begin - if fDoc = nil then exit; + if fDoc = nil then + exit; runargs := ''; if InputQuery('Execution arguments', '', runargs) then - compileAndRunFile(false, true, runargs); + compileAndRunFile(False, True, runargs); end; procedure TCEMainForm.actFileOpenContFoldExecute(Sender: TObject); begin - if fDoc = nil then exit; - if not fileExists(fDoc.fileName) then exit; + if fDoc = nil then + exit; + if not fileExists(fDoc.fileName) then + exit; // DockMaster.GetAnchorSite(fExplWidg).Show; fExplWidg.expandPath(extractFilePath(fDoc.fileName)); @@ -1432,15 +1492,15 @@ begin end; if not fileExists(fProject.outputFilename) then begin - if dlgOkCancel('The project output is missing, build ?') <> mrOK then + if dlgOkCancel('The project output is missing, build ?') <> mrOk then exit; goto _rbld; end; dt := fileAge(fProject.outputFilename); - for i := 0 to fProject.Sources.Count-1 do + for i := 0 to fProject.Sources.Count - 1 do begin if fileAge(fProject.getAbsoluteSourceName(i)) > dt then - if dlgOkCancel('The project sources have changed since last build, rebuild ?') = mrOK then + if dlgOkCancel('The project sources have changed since last build, rebuild ?') = mrOk then goto _rbld else break; @@ -1461,16 +1521,18 @@ begin if InputQuery('Execution arguments', '', runargs) then fProject.runProject(runargs); end; + {$ENDREGION} {$REGION view ------------------------------------------------------------------} -procedure TCEMainForm.widgetShowFromAction(sender: TObject); +procedure TCEMainForm.widgetShowFromAction(Sender: TObject); var widg: TCEWidget; win: TControl; begin - widg := TCEWidget( TComponent(sender).tag ); - if widg = nil then exit; + widg := TCEWidget(TComponent(Sender).tag); + if widg = nil then + exit; // if widg.isDockable then begin @@ -1478,8 +1540,11 @@ begin win.Show; win.BringToFront; end - else begin - if widg.isModal then widg.ShowModal else + else + begin + if widg.isModal then + widg.ShowModal + else begin widg.Show; widg.BringToFront; @@ -1494,9 +1559,9 @@ begin if not fileExists(aFilename) then exit; // - xcfg := TXMLConfigStorage.Create(aFilename, true); + xcfg := TXMLConfigStorage.Create(aFilename, True); try - DockMaster.LoadLayoutFromConfig(xcfg, false); + DockMaster.LoadLayoutFromConfig(xcfg, False); finally xcfg.Free; end; @@ -1508,9 +1573,10 @@ var i: NativeInt; begin // TODO-cbugfix: possible loading AV, xml saved after undocking some widgets, xml file abnormal size, seems to be related to Anchordocking itself, not its usage. - for i:= 0 to fWidgList.Count-1 do + for i := 0 to fWidgList.Count - 1 do begin - if not fWidgList.widget[i].isDockable then continue; + if not fWidgList.widget[i].isDockable then + continue; if DockMaster.GetAnchorSite(fWidgList.widget[i]).WindowState = wsMinimized then DockMaster.GetAnchorSite(fWidgList.widget[i]).Close else if not DockMaster.GetAnchorSite(fWidgList.widget[i]).HasParent then @@ -1518,7 +1584,7 @@ begin end; // forceDirectory(extractFilePath(aFilename)); - xcfg := TXMLConfigStorage.Create(aFilename, false); + xcfg := TXMLConfigStorage.Create(aFilename, False); try DockMaster.SaveLayoutToConfig(xcfg); xcfg.WriteToDisk; @@ -1543,7 +1609,7 @@ begin lst := TStringList.Create; try listFiles(lst, getCoeditDocPath + 'layouts' + DirectorySeparator); - for i := 0 to lst.Count-1 do + for i := 0 to lst.Count - 1 do begin itm := TMenuItem.Create(self); itm.Caption := extractFileName(lst.Strings[i]); @@ -1557,10 +1623,10 @@ begin end; end; -procedure TCEMainForm.layoutMnuItemClick(sender: TObject); +procedure TCEMainForm.layoutMnuItemClick(Sender: TObject); begin layoutLoadFromFile(getCoeditDocPath + 'layouts' + DirectorySeparator + - TMenuItem(sender).Caption + '.xml'); + TMenuItem(Sender).Caption + '.xml'); end; procedure TCEMainForm.actLayoutSaveExecute(Sender: TObject); @@ -1577,13 +1643,16 @@ begin layoutSaveToFile(getCoeditDocPath + 'layouts' + DirectorySeparator + fname); layoutUpdateMenu; end; + {$ENDREGION} {$REGION project ---------------------------------------------------------------} procedure TCEMainForm.saveProjSource(const aEditor: TCESynMemo); begin - if fProject = nil then exit; - if fProject.fileName <> aEditor.fileName then exit; + if fProject = nil then + exit; + if fProject.fileName <> aEditor.fileName then + exit; // aEditor.saveToFile(fProject.fileName); openProj(fProject.fileName); @@ -1610,7 +1679,7 @@ procedure TCEMainForm.saveProjAs(const aFilename: string); begin fProject.fileName := aFilename; fProject.saveToFile(fProject.fileName); - fProjMru.Insert(0,fProject.fileName); + fProjMru.Insert(0, fProject.fileName); end; procedure TCEMainForm.openProj(const aFilename: string); @@ -1618,69 +1687,82 @@ begin closeProj; newProj; fProject.loadFromFile(aFilename); - fProjMru.Insert(0,aFilename); + fProjMru.Insert(0, aFilename); end; procedure TCEMainForm.mruProjItemClick(Sender: TObject); begin - if fProject <> nil then if fProject.modified then if dlgOkCancel( - 'The latest mdofifications are not saved, continue ?') - = mrCancel then exit; + if fProject <> nil then + if fProject.modified then + if dlgOkCancel( + 'The latest mdofifications are not saved, continue ?') = mrCancel then + exit; openProj(TMenuItem(Sender).Hint); end; procedure TCEMainForm.actProjNewExecute(Sender: TObject); begin - if fProject <> nil then if fProject.modified then if dlgOkCancel( - 'The latest mdofifications are not saved, continue ?') - = mrCancel then exit; + if fProject <> nil then + if fProject.modified then + if dlgOkCancel( + 'The latest mdofifications are not saved, continue ?') = mrCancel then + exit; closeProj; newProj; end; procedure TCEMainForm.actProjCloseExecute(Sender: TObject); begin - if fProject = nil then exit; - if fProject.modified then if dlgOkCancel( - 'The latest mdofifications are not saved, continue ?') - = mrCancel then exit; + if fProject = nil then + exit; + if fProject.modified then + if dlgOkCancel( + 'The latest mdofifications are not saved, continue ?') = mrCancel then + exit; closeProj; end; procedure TCEMainForm.addSource(const aFilename: string); begin - if fProject.Sources.IndexOf(aFilename) >= 0 then exit; + if fProject.Sources.IndexOf(aFilename) >= 0 then + exit; fProject.addSource(aFilename); end; procedure TCEMainForm.actProjSaveAsExecute(Sender: TObject); begin with TSaveDialog.Create(nil) do - try - if execute then saveProjAs(filename); - finally - Free; - end; + try + if Execute then + saveProjAs(filename); + finally + Free; + end; end; procedure TCEMainForm.actProjSaveExecute(Sender: TObject); begin - if fProject.fileName <> '' then saveProj - else actProjSaveAs.Execute; + if fProject.fileName <> '' then + saveProj + else + actProjSaveAs.Execute; end; procedure TCEMainForm.actProjOpenExecute(Sender: TObject); begin - if fProject <> nil then if fProject.modified then if dlgOkCancel( - 'The latest mdofifications are not saved, continue ?') - = mrCancel then exit; + if fProject <> nil then + if fProject.modified then + if dlgOkCancel( + 'The latest mdofifications are not saved, continue ?') = mrCancel then + exit; with TOpenDialog.Create(nil) do - try - if execute then openProj(filename); - finally - Free; - end; + try + if Execute then + openProj(filename); + finally + Free; + end; end; procedure TCEMainForm.actProjOptsExecute(Sender: TObject); @@ -1688,15 +1770,18 @@ var win: TControl; begin win := DockMaster.GetAnchorSite(fPrjCfWidg); - if win = nil then exit; + if win = nil then + exit; win.Show; win.BringToFront; end; procedure TCEMainForm.actProjSourceExecute(Sender: TObject); begin - if fProject = nil then exit; - if not fileExists(fProject.fileName) then exit; + if fProject = nil then + exit; + if not fileExists(fProject.fileName) then + exit; // openFile(fProject.fileName); fDoc.Highlighter := LfmSyn; @@ -1714,6 +1799,7 @@ begin lst.Free; end; end; + {$ENDREGION} {$REGION ICESessionOptionsObserver ---------------------------------------------} @@ -1723,12 +1809,12 @@ end; procedure TCEMainForm.sesoptDeclareProperties(aFiler: TFiler); begin - aFiler.DefineProperty('Menu_FileMRU_Items', @optset_FileMRUItems, @optget_FileMRUItems, true); - aFiler.DefineProperty('Menu_FileMRU_Limit', @optset_FileMRULimit, @optget_FileMRULimit, true); - aFiler.DefineProperty('Menu_ProjMRU_Items', @optset_ProjMRUItems, @optget_ProjMRUItems, true); - aFiler.DefineProperty('Menu_ProjMRU_Limit', @optset_ProjMRULimit, @optget_ProjMRULimit, true); + aFiler.DefineProperty('Menu_FileMRU_Items', @optset_FileMRUItems, @optget_FileMRUItems, True); + aFiler.DefineProperty('Menu_FileMRU_Limit', @optset_FileMRULimit, @optget_FileMRULimit, True); + aFiler.DefineProperty('Menu_ProjMRU_Items', @optset_ProjMRUItems, @optget_ProjMRUItems, True); + aFiler.DefineProperty('Menu_ProjMRU_Limit', @optset_ProjMRULimit, @optget_ProjMRULimit, True); // - aFiler.DefineProperty('Runnable_Switches', @optset_RunnableSw, @optget_RunnableSw, true); + aFiler.DefineProperty('Runnable_Switches', @optset_RunnableSw, @optget_RunnableSw, True); end; procedure TCEMainForm.sesoptAfterLoad; @@ -1784,6 +1870,7 @@ procedure TCEMainForm.optget_RunnableSw(aWriter: Twriter); begin aWriter.WriteString(fRunnableSw); end; + {$ENDREGION} initialization diff --git a/src/ce_observer.pas b/src/ce_observer.pas index 1871ebdc..bdf5a1db 100644 --- a/src/ce_observer.pas +++ b/src/ce_observer.pas @@ -33,8 +33,8 @@ type procedure updateEntities; function getIsUpdating: boolean; public - constructor create; - destructor destroy; override; + constructor Create; + destructor Destroy; override; // forces the update, fixes begin/add pair error or if immediate update is needed. procedure forceUpdate; // entities will be added in bulk, must be followed by an enUpdate(). @@ -80,8 +80,8 @@ type function getObserversCount: Integer; function getObserver(index: Integer): TObject; public - constructor create; virtual; - destructor destroy; override; + constructor Create; virtual; + destructor Destroy; override; // procedure addObserver(anObserver: TObject); procedure removeObserver(anObserver: TObject); @@ -100,14 +100,14 @@ uses LCLProc; {$REGION TCEEntitiesConnector --------------------------------------------------} -constructor TCEEntitiesConnector.create; +constructor TCEEntitiesConnector.Create; begin - fObservers := TObjectList.create(false); - fSubjects := TObjectList.create(false); - fServices := TObjectList.create(false); + fObservers := TObjectList.Create(False); + fSubjects := TObjectList.Create(False); + fServices := TObjectList.Create(False); end; -destructor TCEEntitiesConnector.destroy; +destructor TCEEntitiesConnector.Destroy; begin fObservers.Free; fSubjects.Free; @@ -139,14 +139,14 @@ end; procedure TCEEntitiesConnector.updateEntities; var - i,j: Integer; + i, j: Integer; begin fUpdatesCount := 0; - for i := 0 to fSubjects.Count-1 do + for i := 0 to fSubjects.Count - 1 do begin if not (fSubjects[i] is ICESubject) then continue; - for j := 0 to fObservers.Count-1 do + for j := 0 to fObservers.Count - 1 do begin if fSubjects[i] <> fObservers[j] then (fSubjects[i] as ICESubject).addObserver(fObservers[j]); @@ -188,7 +188,7 @@ var i: Integer; begin fObservers.Remove(anObserver); - for i := 0 to fSubjects.Count-1 do + for i := 0 to fSubjects.Count - 1 do if fSubjects[i] <> nil then (fSubjects[i] as ICESubject).removeObserver(anObserver); tryUpdate; @@ -215,24 +215,25 @@ var i: Integer; serv: ICESingleService; begin - result := nil; - for i := 0 to fServices.Count-1 do + Result := nil; + for i := 0 to fServices.Count - 1 do begin serv := fServices[i] as ICESingleService; if serv.singleServiceName = aName then exit(fServices[i]); end; end; + {$ENDREGION} {$REGION TCECustomSubject ------------------------------------------------------} -constructor TCECustomSubject.create; +constructor TCECustomSubject.Create; begin - fObservers := TObjectList.create(false); + fObservers := TObjectList.Create(False); EntitiesConnector.addSubject(Self); end; -destructor TCECustomSubject.destroy; +destructor TCECustomSubject.Destroy; begin EntitiesConnector.removeSubject(Self); fObservers.Free; @@ -241,7 +242,7 @@ end; function TCECustomSubject.acceptObserver(aObject: TObject): boolean; begin - exit(false); + exit(False); end; function TCECustomSubject.getObserversCount: Integer; @@ -271,13 +272,14 @@ end; procedure TCECustomSubject.updateObservers; begin end; + {$ENDREGION} initialization - EntitiesConnector := TCEEntitiesConnector.create; + EntitiesConnector := TCEEntitiesConnector.Create; EntitiesConnector.beginUpdate; + finalization EntitiesConnector.Free; EntitiesConnector := nil; end. - diff --git a/src/ce_options.pas b/src/ce_options.pas index 6b7ef4cc..ab393da7 100644 --- a/src/ce_options.pas +++ b/src/ce_options.pas @@ -5,7 +5,7 @@ unit ce_options; interface uses - classes, sysutils, ce_common, ce_writableComponent, ce_observer; + Classes, SysUtils, ce_common, ce_writableComponent, ce_observer; type TCEOptions = class(TWritableLfmTextComponent) @@ -17,8 +17,8 @@ type procedure beforeSave; override; procedure afterLoad; override; public - constructor create(aOwner: TComponent); override; - destructor destroy; override; + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; end; implementation @@ -26,15 +26,15 @@ implementation uses ce_interfaces; -constructor TCEOptions.create(aOwner: TComponent); +constructor TCEOptions.Create(aOwner: TComponent); begin inherited; - fSubjPersObservers := TCESessionOptionsSubject.create; + fSubjPersObservers := TCESessionOptionsSubject.Create; // EntitiesConnector.addSubject(fSubjPersObservers); end; -destructor TCEOptions.destroy; +destructor TCEOptions.Destroy; begin EntitiesConnector.removeSubject(fSubjPersObservers); EntitiesConnector.endUpdate; diff --git a/src/ce_optionseditor.pas b/src/ce_optionseditor.pas index af65abb0..2fbe253d 100644 --- a/src/ce_optionseditor.pas +++ b/src/ce_optionseditor.pas @@ -14,6 +14,7 @@ type // store the information about the obsever // exposing some editable options. PCategoryData = ^TCategoryData; + TCategoryData = record kind: TOptionEditorKind; container: TPersistent; @@ -35,8 +36,7 @@ type selCat: TTreeView; procedure btnAcceptClick(Sender: TObject); procedure btnCancelClick(Sender: TObject); - procedure inspectorEditorFilter(Sender: TObject; aEditor: TPropertyEditor; - var aShow: boolean); + procedure inspectorEditorFilter(Sender: TObject; aEditor: TPropertyEditor; var aShow: boolean); procedure inspectorModified(Sender: TObject); procedure selCatDeletion(Sender: TObject; Node: TTreeNode); procedure selCatSelectionChanged(Sender: TObject); @@ -47,23 +47,24 @@ type procedure updateCategories; function sortCategories(Cat1, Cat2: TTreeNode): integer; public - constructor create(aOwner: TComponent); override; - destructor destroy; override; + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; end; implementation + {$R *.lfm} {$REGION Standard Comp/Obj------------------------------------------------------} -constructor TCEOptionEditorWidget.create(aOwner: TComponent); +constructor TCEOptionEditorWidget.Create(aOwner: TComponent); var png: TPortableNetworkGraphic; begin inherited; - fDockable := false; - fModal:= true; - fEdOptsSubj := TCEEditableOptionsSubject.create; - inspector.CheckboxForBoolean := true; + fDockable := False; + fModal := True; + fEdOptsSubj := TCEEditableOptionsSubject.Create; + inspector.CheckboxForBoolean := True; // png := TPortableNetworkGraphic.Create; try @@ -76,7 +77,7 @@ begin end; end; -destructor TCEOptionEditorWidget.destroy; +destructor TCEOptionEditorWidget.Destroy; begin fEdOptsSubj.Free; inherited; @@ -85,8 +86,10 @@ end; procedure TCEOptionEditorWidget.UpdateShowing; begin inherited; - if Visible then updateCategories; + if Visible then + updateCategories; end; + {$ENDREGION} {$REGION Option editor things --------------------------------------------------} @@ -98,7 +101,7 @@ var begin inspector.TIObject := nil; selCat.Items.Clear; - for i:= 0 to fEdOptsSubj.observersCount-1 do + for i := 0 to fEdOptsSubj.observersCount - 1 do begin dt := new(PCategoryData); ed := fEdOptsSubj.observers[i] as ICEEditableOptions; @@ -112,7 +115,7 @@ end; function TCEOptionEditorWidget.sortCategories(Cat1, Cat2: TTreeNode): integer; begin - result := CompareText(Cat1.Text, Cat2.Text); + Result := CompareText(Cat1.Text, Cat2.Text); end; procedure TCEOptionEditorWidget.selCatDeletion(Sender: TObject; Node: TTreeNode); @@ -131,37 +134,42 @@ begin if pnlEd.ControlCount > 0 then pnlEd.Controls[0].Parent := nil; // - if selCat.Selected = nil then exit; - if selCat.Selected.Data = nil then exit; + if selCat.Selected = nil then + exit; + if selCat.Selected.Data = nil then + exit; // dt := PCategoryData(selCat.Selected.Data); - if dt^.container = nil then exit; + if dt^.container = nil then + exit; case dt^.kind of oekControl: - begin - TWinControl(dt^.container).Parent := pnlEd; - TWinControl(dt^.container).Align := alClient; - end; + begin + TWinControl(dt^.container).Parent := pnlEd; + TWinControl(dt^.container).Align := alClient; + end; oekForm: - begin - TCustomForm(dt^.container).Parent := pnlEd; - TCustomForm(dt^.container).Align := alClient; - TCustomForm(dt^.container).BorderIcons:= []; - TCustomForm(dt^.container).BorderStyle:= bsNone; - end; + begin + TCustomForm(dt^.container).Parent := pnlEd; + TCustomForm(dt^.container).Align := alClient; + TCustomForm(dt^.container).BorderIcons := []; + TCustomForm(dt^.container).BorderStyle := bsNone; + end; oekGeneric: - begin - inspector.Parent := pnlEd; - inspector.Align := alClient; - inspector.TIObject := dt^.container; - end; + begin + inspector.Parent := pnlEd; + inspector.Align := alClient; + inspector.TIObject := dt^.container; + end; end; end; procedure TCEOptionEditorWidget.inspectorModified(Sender: TObject); begin - if selCat.Selected = nil then exit; - if selcat.Selected.Data = nil then exit; + if selCat.Selected = nil then + exit; + if selcat.Selected.Data = nil then + exit; // PCategoryData(selCat.Selected.Data)^ .observer @@ -170,8 +178,10 @@ end; procedure TCEOptionEditorWidget.btnCancelClick(Sender: TObject); begin - if selCat.Selected = nil then exit; - if selcat.Selected.Data = nil then exit; + if selCat.Selected = nil then + exit; + if selcat.Selected.Data = nil then + exit; // if inspector.Parent <> nil then inspector.ItemIndex := -1; @@ -180,22 +190,23 @@ begin .optionedEvent(oeeCancel); end; -procedure TCEOptionEditorWidget.inspectorEditorFilter(Sender: TObject;aEditor: - TPropertyEditor; var aShow: boolean); +procedure TCEOptionEditorWidget.inspectorEditorFilter(Sender: TObject; aEditor: TPropertyEditor; var aShow: boolean); begin if aEditor.GetComponent(0) is TComponent then begin if aEditor.GetPropInfo^.Name = 'Tag' then - aSHow := false; + aSHow := False; if aEditor.GetPropInfo^.Name = 'Name' then - aSHow := false; + aSHow := False; end; end; procedure TCEOptionEditorWidget.btnAcceptClick(Sender: TObject); begin - if selCat.Selected = nil then exit; - if selcat.Selected.Data = nil then exit; + if selCat.Selected = nil then + exit; + if selcat.Selected.Data = nil then + exit; // if inspector.Parent <> nil then inspector.ItemIndex := -1; @@ -203,7 +214,7 @@ begin .observer .optionedEvent(oeeAccept); end; + {$ENDREGION} end. - diff --git a/src/ce_plugin.pas b/src/ce_plugin.pas index ae153f82..540f530b 100644 --- a/src/ce_plugin.pas +++ b/src/ce_plugin.pas @@ -11,92 +11,93 @@ type TCEHost = type Pointer; TCEPlugin = type Pointer; + const // API version CE_PLG_API_VER = 0; -// opcodes constants -------------------------------------------------------------] + // opcodes constants -------------------------------------------------------------] - HELLO_PLUGIN = $FFFFFFFF; // hello world + HELLO_PLUGIN = $FFFFFFFF; // hello world -// Denotes the emiter and the message kind ------------------------------------- + // Denotes the emiter and the message kind ------------------------------------- /// Coedit sends an event. - HOST_EVENT = $10000000; + HOST_EVENT = $10000000; /// Coedit sends some data. - HOST_DATA = $20000000; + HOST_DATA = $20000000; /// The plug-in sends an event. - PLUG_EVENT = $30000000; + PLUG_EVENT = $30000000; /// The plug-in sends some data. - PLUG_DATA = $40000000; + PLUG_DATA = $40000000; -// Denotes the message context ------------------------------------------------- + // Denotes the message context ------------------------------------------------- /// the dispatcher call is related to the project(s) - CTXT_PROJ = $01000000; + CTXT_PROJ = $01000000; /// the dispatcher call is related to the document(s) - CTXT_DOCS = $02000000; + CTXT_DOCS = $02000000; /// the dispatcher call is related to the edition of a document. - CTXT_EDIT = $03000000; + CTXT_EDIT = $03000000; /// the dispatcher call is related to the Coedit 'Message Widget'. - CTXT_MSGS = $04000000; + CTXT_MSGS = $04000000; /// the dispatcher call is related to the Coedit dialogs. - CTXT_DLGS = $05000000; + CTXT_DLGS = $05000000; -// The events kinds ------------------------------------------------------------ + // The events kinds ------------------------------------------------------------ /// somethings's just changed. - EV_CHANGED = $00000001; + EV_CHANGED = $00000001; /// something's just been selected. - EV_FOCUSED = $00000002; + EV_FOCUSED = $00000002; /// something will be closed. - EV_CLOSE = $00000003; + EV_CLOSE = $00000003; /// something's just been created. - EV_NEW = $00000004; + EV_NEW = $00000004; /// something gonna be compiled. - EV_COMPILE = $00000005; + EV_COMPILE = $00000005; /// something gonna be executed. - EV_RUN = $00000006; + EV_RUN = $00000006; -// The data kinds -------------------------------------------------------------- + // The data kinds -------------------------------------------------------------- /// data1 is used to set/get a filename. data1 is a PChar. data0 represents an index. - DT_FNAME = $00000001; + DT_FNAME = $00000001; /// data0 represents a count. - DT_COUNT = $00000002; + DT_COUNT = $00000002; /// data1 is used to set a message. data1 is a PChar. - DT_ERR = $00000001; - DT_INF = $00000002; - DT_WARN = $00000003; + DT_ERR = $00000001; + DT_INF = $00000002; + DT_WARN = $00000003; - DATA_FNAME = $00000001; + DATA_FNAME = $00000001; -// terminal opCodes (emiter + context + event/data kind) ----------------------- + // terminal opCodes (emiter + context + event/data kind) ----------------------- /// Coedit says that the project's just been modified. HOST_PROJ_CHANGED = HOST_EVENT + CTXT_PROJ + EV_CHANGED; /// opCode for asking for a document filename. data0 must be the document index. - PLUG_WANT_DOC_NAME = PLUG_EVENT + CTXT_DOCS + DT_FNAME; + PLUG_WANT_DOC_NAME = PLUG_EVENT + CTXT_DOCS + DT_FNAME; /// opCode for getting a document filenmae. data1 is a PChar to the filename. - HOST_GIVE_DOC_NAME = HOST_DATA + CTXT_DOCS + DT_FNAME; + HOST_GIVE_DOC_NAME = HOST_DATA + CTXT_DOCS + DT_FNAME; /// opCodes for displaying a message in a dialog box. - PLUG_DLGS_ERR = PLUG_DATA + CTXT_DLGS + DT_ERR; + PLUG_DLGS_ERR = PLUG_DATA + CTXT_DLGS + DT_ERR; /// ditto. - PLUG_DLGS_WARN = PLUG_DATA + CTXT_DLGS + DT_WARN; + PLUG_DLGS_WARN = PLUG_DATA + CTXT_DLGS + DT_WARN; /// ditto. - PLUG_DLGS_INF = PLUG_DATA + CTXT_DLGS + DT_INF; + PLUG_DLGS_INF = PLUG_DATA + CTXT_DLGS + DT_INF; /// opCodes for displaying a message in the 'Message Widget'. - PLUG_MSGS_ERR = PLUG_DATA + CTXT_MSGS + DT_ERR; + PLUG_MSGS_ERR = PLUG_DATA + CTXT_MSGS + DT_ERR; /// ditto. - PLUG_MSGS_WARN = PLUG_DATA + CTXT_MSGS + DT_WARN; + PLUG_MSGS_WARN = PLUG_DATA + CTXT_MSGS + DT_WARN; /// ditto. - PLUG_MSGS_INF = PLUG_DATA + CTXT_MSGS + DT_INF; + PLUG_MSGS_INF = PLUG_DATA + CTXT_MSGS + DT_INF; // host-side prototypes -------------------------------------------------------- type @@ -109,7 +110,7 @@ type *) TPlugDispatchToHost = procedure(aPlugin: TCEPlugin; opCode: LongWord; data0: Integer; data1, data2: Pointer); cdecl; -// plugin-side prototypes ------------------------------------------------------ + // plugin-side prototypes ------------------------------------------------------ (** * Coedit initializes a plugin, the result is passed during the runtime as "aTarget". @@ -118,13 +119,13 @@ type * If the plugin is not warped in a class than the result must be set on something * that can be pointed to (e.g: a global variable). *) - THostCreatePlug = function(aHost: TPlugDispatchToHost): TCEPlugin; cdecl; + THostCreatePlug = function(aHost: TPlugDispatchToHost): TCEPlugin; cdecl; (** * Coedit closes and aTarget can be destroyed. * In the plugin implementation, it must be named 'destroyPlug'. *) - THostDestroyPlug = procedure(aTarget: TCEPlugin); cdecl; + THostDestroyPlug = procedure(aTarget: TCEPlugin); cdecl; (** * Coedit events and data are passed here. data1 and data2 can be casted according to opCode. @@ -134,9 +135,10 @@ type -// internal -------------------------------------------------------------------- + // internal -------------------------------------------------------------------- PPlugDescriptor = ^TPlugDescriptor; + TPlugDescriptor = record Handle: TLibHandle; Plugin: TCEPlugin; @@ -152,6 +154,7 @@ type procedure addPlugin(aValue: PPlugDescriptor); property plugin[index: integer]: TPlugDescriptor read getPlugin; end; + TPlugDescriptorEnumerator = class fList: TCEPlugDescriptorList; fIndex: Integer; @@ -160,13 +163,13 @@ type property current: TPlugDescriptor read getCurrent; end; - operator enumerator(aPlugDescrList: TCEPlugDescriptorList): TPlugDescriptorEnumerator; +operator enumerator(aPlugDescrList: TCEPlugDescriptorList): TPlugDescriptorEnumerator; implementation function TCEPlugDescriptorList.getPlugin(index: integer): TPlugDescriptor; begin - result := TPlugDescriptor(Items[index]^); + Result := TPlugDescriptor(Items[index]^); end; procedure TCEPlugDescriptorList.addPlugin(aValue: PPlugDescriptor); @@ -176,20 +179,20 @@ end; function TPlugDescriptorEnumerator.getCurrent: TPlugDescriptor; begin - result := fList.plugin[fIndex]; + Result := fList.plugin[fIndex]; end; function TPlugDescriptorEnumerator.moveNext: boolean; begin Inc(fIndex); - result := fIndex < fList.Count; + Result := fIndex < fList.Count; end; operator enumerator(aPlugDescrList: TCEPlugDescriptorList): TPlugDescriptorEnumerator; begin - result := TPlugDescriptorEnumerator.Create; - result.fList := aPlugDescrList; - result.fIndex := -1; + Result := TPlugDescriptorEnumerator.Create; + Result.fList := aPlugDescrList; + Result.fIndex := -1; end; end. diff --git a/src/ce_procinput.pas b/src/ce_procinput.pas index 2e3c5642..57710fb1 100644 --- a/src/ce_procinput.pas +++ b/src/ce_procinput.pas @@ -28,20 +28,21 @@ type procedure addProcess(aProcess: TProcess); procedure removeProcess(aProcess: TProcess); public - constructor create(aOwner: TComponent); override; - destructor destroy; override; + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; // procedure sesoptDeclareProperties(aFiler: TFiler); override; end; implementation + {$R *.lfm} uses ce_symstring, LCLType; {$REGION Standard Comp/Obj -----------------------------------------------------} -constructor TCEProcInputWidget.create(aOwner: TComponent); +constructor TCEProcInputWidget.Create(aOwner: TComponent); begin inherited; fMru := TMRUList.Create; @@ -49,18 +50,19 @@ begin EntitiesConnector.addSingleService(self); end; -destructor TCEProcInputWidget.destroy; +destructor TCEProcInputWidget.Destroy; begin fMru.Free; inherited; end; + {$ENDREGION --------------------------------------------------------------------} {$REGION ICESessionOptionsObserver ---------------------------------------------} procedure TCEProcInputWidget.sesoptDeclareProperties(aFiler: TFiler); begin inherited; - aFiler.DefineProperty(Name + '_inputMru', @optset_InputMru, @optget_InputMru, true); + aFiler.DefineProperty(Name + '_inputMru', @optset_InputMru, @optget_InputMru, True); end; procedure TCEProcInputWidget.optset_InputMru(aReader: TReader); @@ -72,6 +74,7 @@ procedure TCEProcInputWidget.optget_InputMru(aWriter: TWriter); begin aWriter.WriteString(fMru.DelimitedText); end; + {$ENDREGION --------------------------------------------------------------------} {$REGION ICEProcInputHandler ---------------------------------------------------} @@ -102,6 +105,7 @@ begin if fProc = aProcess then addProcess(nil); end; + {$ENDREGION} {$REGION Process input things --------------------------------------------------} @@ -109,7 +113,7 @@ procedure TCEProcInputWidget.sendInput; var inp: string; begin - fMru.Insert(0,txtInp.Text); + fMru.Insert(0, txtInp.Text); fMruPos := 0; if txtInp.Text <> '' then inp := symbolExpander.get(txtInp.Text) + lineEnding @@ -126,24 +130,29 @@ begin sendInput; end; -procedure TCEProcInputWidget.txtInpKeyDown(Sender: TObject; var Key: Word; - Shift: TShiftState); +procedure TCEProcInputWidget.txtInpKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin case Key of VK_RETURN: - if fProc <> nil then sendInput; - VK_UP: begin + if fProc <> nil then + sendInput; + VK_UP: + begin fMruPos += 1; - if fMruPos > fMru.Count-1 then fMruPos := 0; + if fMruPos > fMru.Count - 1 then + fMruPos := 0; txtInp.Text := fMru.Strings[fMruPos]; end; - VK_DOWN: begin + VK_DOWN: + begin fMruPos -= 1; - if fMruPos < 0 then fMruPos := fMru.Count-1; + if fMruPos < 0 then + fMruPos := fMru.Count - 1; txtInp.Text := fMru.Strings[fMruPos]; end; end; end; + {$ENDREGION --------------------------------------------------------------------} end. diff --git a/src/ce_projconf.pas b/src/ce_projconf.pas index 321f2361..dbae5a65 100644 --- a/src/ce_projconf.pas +++ b/src/ce_projconf.pas @@ -30,7 +30,7 @@ type procedure inspectorModified(Sender: TObject); procedure selConfChange(Sender: TObject); procedure TreeChange(Sender: TObject; Node: TTreeNode); - procedure GridFilter(Sender: TObject; aEditor: TPropertyEditor;var aShow: boolean); + procedure GridFilter(Sender: TObject; aEditor: TPropertyEditor; var aShow: boolean); private fProj: TCEProject; fSyncroMode: boolean; @@ -50,15 +50,16 @@ type procedure updateImperative; override; procedure SetVisible(Value: boolean); override; public - constructor create(aOwner: TComponent); override; - destructor destroy; override; + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; end; implementation + {$R *.lfm} {$REGION Standard Comp/Obj------------------------------------------------------} -constructor TCEProjectConfigurationWidget.create(aOwner: TComponent); +constructor TCEProjectConfigurationWidget.Create(aOwner: TComponent); var png: TPortableNetworkGraphic; begin @@ -78,12 +79,12 @@ begin end; Tree.Selected := Tree.Items.GetLastNode; inspector.OnEditorFilter := @GridFilter; - inspector.CheckboxForBoolean := true; + inspector.CheckboxForBoolean := True; // EntitiesConnector.addObserver(self); end; -destructor TCEProjectConfigurationWidget.destroy; +destructor TCEProjectConfigurationWidget.Destroy; begin EntitiesConnector.removeObserver(self); inherited; @@ -92,7 +93,8 @@ end; procedure TCEProjectConfigurationWidget.SetVisible(Value: boolean); begin inherited; - if Visible then updateImperative; + if Visible then + updateImperative; end; {$ENDREGION --------------------------------------------------------------------} @@ -102,8 +104,9 @@ procedure TCEProjectConfigurationWidget.projNew(aProject: TCEProject); begin beginImperativeUpdate; fProj := aProject; - if Visible then updateImperative; - syncroMode := false; + if Visible then + updateImperative; + syncroMode := False; end; procedure TCEProjectConfigurationWidget.projClosing(aProject: TCEProject); @@ -113,42 +116,48 @@ begin inspector.TIObject := nil; inspector.ItemIndex := -1; self.selConf.Clear; - syncroMode := false; + syncroMode := False; fProj := nil; end; procedure TCEProjectConfigurationWidget.projChanged(aProject: TCEProject); begin - if fProj <> aProject then exit; + if fProj <> aProject then + exit; fProj := aProject; - if Visible then updateImperative; + if Visible then + updateImperative; end; procedure TCEProjectConfigurationWidget.projFocused(aProject: TCEProject); begin fProj := aProject; - if Visible then updateImperative; + if Visible then + updateImperative; end; procedure TCEProjectConfigurationWidget.projCompiling(aProject: TCEProject); begin end; + {$ENDREGION --------------------------------------------------------------------} {$REGION config. things --------------------------------------------------------} procedure TCEProjectConfigurationWidget.selConfChange(Sender: TObject); begin - if fProj = nil then exit; - if Updating then exit; - if selConf.ItemIndex = -1 then exit; + if fProj = nil then + exit; + if Updating then + exit; + if selConf.ItemIndex = -1 then + exit; // beginImperativeUpdate; fProj.ConfigurationIndex := selConf.ItemIndex; endImperativeUpdate; end; -procedure TCEProjectConfigurationWidget.TreeChange(Sender: TObject; - Node: TTreeNode); +procedure TCEProjectConfigurationWidget.TreeChange(Sender: TObject; Node: TTreeNode); begin inspector.TIObject := getGridTarget; end; @@ -157,13 +166,16 @@ procedure TCEProjectConfigurationWidget.setSyncroMode(aValue: boolean); var png: TPortableNetworkGraphic; begin - if fSyncroMode = aValue then exit; + if fSyncroMode = aValue then + exit; // fSyncroMode := aValue; png := TPortableNetworkGraphic.Create; try - if fSyncroMode then png.LoadFromLazarusResource('link') - else png.LoadFromLazarusResource('link_break'); + if fSyncroMode then + png.LoadFromLazarusResource('link') + else + png.LoadFromLazarusResource('link_break'); btnSyncEdit.Glyph.Assign(png); finally png.Free; @@ -172,12 +184,12 @@ end; function TCEProjectConfigurationWidget.syncroSetPropAsString(const ASection, Item, Default: string): string; begin - result := fSyncroPropValue; + Result := fSyncroPropValue; end; procedure TCEProjectConfigurationWidget.syncroGetPropAsString(const ASection, Item, Value: string); begin - fSyncroPropValue := Value; + fSyncroPropValue := Value; end; procedure TCEProjectConfigurationWidget.inspectorModified(Sender: TObject); @@ -189,50 +201,65 @@ var trg_obj: TPersistent; i: Integer; begin - if fProj = nil then exit; - if not fSyncroMode then exit; - if inspector.TIObject = nil then exit; - if inspector.ItemIndex = -1 then exit; + if fProj = nil then + exit; + if not fSyncroMode then + exit; + if inspector.TIObject = nil then + exit; + if inspector.ItemIndex = -1 then + exit; // storage := nil; - src_prop:= nil; - trg_prop:= nil; + src_prop := nil; + trg_prop := nil; trg_obj := nil; propstr := inspector.PropertyPath(inspector.ItemIndex); storage := rttiutils.TPropsStorage.Create; storage.OnReadString := @syncroSetPropAsString; storage.OnWriteString := @syncroGetPropAsString; - src_list:= rttiutils.TPropInfoList.Create(getGridTarget, tkAny); + src_list := rttiutils.TPropInfoList.Create(getGridTarget, tkAny); fProj.beginUpdate; try src_prop := src_list.Find(propstr); - if src_prop = nil then exit; + if src_prop = nil then + exit; storage.AObject := getGridTarget; storage.StoreAnyProperty(src_prop); - for i:= 0 to fProj.OptionsCollection.Count-1 do + for i := 0 to fProj.OptionsCollection.Count - 1 do begin // skip current config - if i = fProj.ConfigurationIndex then continue; + if i = fProj.ConfigurationIndex then + continue; // find target persistent if inspector.TIObject = fProj.currentConfiguration.messagesOptions then - trg_obj := fProj.configuration[i].messagesOptions else + trg_obj := fProj.configuration[i].messagesOptions + else if inspector.TIObject = fProj.currentConfiguration.debugingOptions then - trg_obj := fProj.configuration[i].debugingOptions else + trg_obj := fProj.configuration[i].debugingOptions + else if inspector.TIObject = fProj.currentConfiguration.documentationOptions then - trg_obj := fProj.configuration[i].documentationOptions else + trg_obj := fProj.configuration[i].documentationOptions + else if inspector.TIObject = fProj.currentConfiguration.outputOptions then - trg_obj := fProj.configuration[i].outputOptions else + trg_obj := fProj.configuration[i].outputOptions + else if inspector.TIObject = fProj.currentConfiguration.otherOptions then - trg_obj := fProj.configuration[i].otherOptions else + trg_obj := fProj.configuration[i].otherOptions + else if inspector.TIObject = fProj.currentConfiguration.pathsOptions then - trg_obj := fProj.configuration[i].pathsOptions else + trg_obj := fProj.configuration[i].pathsOptions + else if inspector.TIObject = fProj.currentConfiguration.preBuildProcess then - trg_obj := fProj.configuration[i].preBuildProcess else + trg_obj := fProj.configuration[i].preBuildProcess + else if inspector.TIObject = fProj.currentConfiguration.postBuildProcess then - trg_obj := fProj.configuration[i].postBuildProcess else + trg_obj := fProj.configuration[i].postBuildProcess + else if inspector.TIObject = fProj.currentConfiguration.runOptions then - trg_obj := fProj.configuration[i].runOptions - else continue; + trg_obj := fProj.configuration[i].runOptions + else + continue; // find target property storage.AObject := trg_obj; trg_list := rttiutils.TPropInfoList.Create(trg_obj, tkAny); @@ -246,8 +273,8 @@ begin end; end; finally - storage.free; - src_list.free; + storage.Free; + src_list.Free; fProj.endUpdate; fSyncroPropValue := ''; end; @@ -258,21 +285,25 @@ var nme: string; cfg: TCompilerConfiguration; begin - if fProj = nil then exit; + if fProj = nil then + exit; // nme := ''; beginImperativeUpdate; cfg := fProj.addConfiguration; // note: Cancel is actually related to the conf. name not to the add operation. - if InputQuery('Configuration name', '', nme) then cfg.name := nme; + if InputQuery('Configuration name', '', nme) then + cfg.Name := nme; fProj.ConfigurationIndex := cfg.Index; endImperativeUpdate; end; procedure TCEProjectConfigurationWidget.btnDelConfClick(Sender: TObject); begin - if fProj = nil then exit; - if fProj.OptionsCollection.Count = 1 then exit; + if fProj = nil then + exit; + if fProj.OptionsCollection.Count = 1 then + exit; // beginImperativeUpdate; inspector.TIObject := nil; @@ -286,82 +317,89 @@ end; procedure TCEProjectConfigurationWidget.btnCloneCurrClick(Sender: TObject); var nme: string; - trg,src: TCompilerConfiguration; + trg, src: TCompilerConfiguration; begin - if fProj = nil then exit; + if fProj = nil then + exit; // nme := ''; beginImperativeUpdate; src := fProj.currentConfiguration; trg := fProj.addConfiguration; - trg.assign(src); - if InputQuery('Configuration name', '', nme) then trg.name := nme; + trg.Assign(src); + if InputQuery('Configuration name', '', nme) then + trg.Name := nme; fProj.ConfigurationIndex := trg.Index; endImperativeUpdate; end; procedure TCEProjectConfigurationWidget.btnSyncEditClick(Sender: TObject); begin - if fProj = nil then exit; + if fProj = nil then + exit; syncroMode := not syncroMode; end; -procedure TCEProjectConfigurationWidget.GridFilter(Sender: TObject; aEditor: TPropertyEditor; - var aShow: boolean); +procedure TCEProjectConfigurationWidget.GridFilter(Sender: TObject; aEditor: TPropertyEditor; var aShow: boolean); begin - if fProj = nil then exit; + if fProj = nil then + exit; // filter TComponent things. if getGridTarget = fProj then begin if aEditor.GetName = 'Name' then - aShow := false + aShow := False else if aEditor.GetName = 'Tag' then - aShow := false - else if aEditor.ClassType = TCollectionPropertyEditor then - aShow := false; + aShow := False + else if aEditor.ClassType = TCollectionPropertyEditor then + aShow := False; end; // deprecated field - if getGridTarget = fProj.currentConfiguration.pathsOptions then + if getGridTarget = fProj.currentConfiguration.pathsOptions then begin if aEditor.GetName = 'Sources' then - aShow := false + aShow := False else if aEditor.GetName = 'includes' then - aShow := false + aShow := False else if aEditor.GetName = 'imports' then - aShow := false; + aShow := False; end; - if getGridTarget = fProj.currentConfiguration.outputOptions then + if getGridTarget = fProj.currentConfiguration.outputOptions then if aEditor.GetName = 'noBoundsCheck' then - aShow := false; + aShow := False; if getGridTarget = fProj.currentConfiguration.debugingOptions then begin if aEditor.GetName = 'addCInformations' then - aShow := false + aShow := False else if aEditor.GetName = 'addDInformations' then - aShow := false; + aShow := False; end; end; function TCEProjectConfigurationWidget.getGridTarget: TPersistent; begin - if fProj = nil then exit(nil); - if fProj.ConfigurationIndex = -1 then exit(nil); - if Tree.Selected = nil then exit(nil); + if fProj = nil then + exit(nil); + if fProj.ConfigurationIndex = -1 then + exit(nil); + if Tree.Selected = nil then + exit(nil); // Warning: TTreeNode.StateIndex is usually made for the images...it's not a tag case Tree.Selected.StateIndex of - 1: exit( fProj ); - 2: exit( fProj.currentConfiguration.messagesOptions ); - 3: exit( fProj.currentConfiguration.debugingOptions ); - 4: exit( fProj.currentConfiguration.documentationOptions ); - 5: exit( fProj.currentConfiguration.outputOptions ); - 6: exit( fProj.currentConfiguration.otherOptions ); - 7: exit( fProj.currentConfiguration.pathsOptions ); - 8: exit( fProj.currentConfiguration.preBuildProcess ); - 9: exit( fProj.currentConfiguration.postBuildProcess ); - 10:exit( fProj.currentConfiguration.runOptions ); - 11:exit( fProj.currentConfiguration ); - else result := nil; + 1: exit(fProj); + 2: exit(fProj.currentConfiguration.messagesOptions); + 3: exit(fProj.currentConfiguration.debugingOptions); + 4: exit(fProj.currentConfiguration.documentationOptions); + 5: exit(fProj.currentConfiguration.outputOptions); + 6: exit(fProj.currentConfiguration.otherOptions); + 7: exit(fProj.currentConfiguration.pathsOptions); + 8: exit(fProj.currentConfiguration.preBuildProcess); + 9: exit(fProj.currentConfiguration.postBuildProcess); + 10: exit(fProj.currentConfiguration.runOptions); + 11: exit(fProj.currentConfiguration); + else + Result := nil; end; end; @@ -369,15 +407,17 @@ procedure TCEProjectConfigurationWidget.updateImperative; var i: NativeInt; begin - selConf.ItemIndex:= -1; + selConf.ItemIndex := -1; selConf.Clear; - if fProj = nil then exit; + if fProj = nil then + exit; // - for i:= 0 to fProj.OptionsCollection.Count-1 do - selConf.Items.Add(fProj.configuration[i].name); + for i := 0 to fProj.OptionsCollection.Count - 1 do + selConf.Items.Add(fProj.configuration[i].Name); selConf.ItemIndex := fProj.ConfigurationIndex; inspector.TIObject := getGridTarget; end; + {$ENDREGION --------------------------------------------------------------------} end. diff --git a/src/ce_projinspect.pas b/src/ce_projinspect.pas index 75c110b6..5175fbf5 100644 --- a/src/ce_projinspect.pas +++ b/src/ce_projinspect.pas @@ -5,7 +5,7 @@ unit ce_projinspect; interface uses - Classes, SysUtils, FileUtil, TreeFilterEdit, Forms, Controls, Graphics, actnlist, + Classes, SysUtils, FileUtil, TreeFilterEdit, Forms, Controls, Graphics, ActnList, Dialogs, ExtCtrls, ComCtrls, Menus, Buttons, lcltype, ce_project, ce_interfaces, ce_common, ce_widget, ce_observer; @@ -38,9 +38,9 @@ type fFileNode, fConfNode: TTreeNode; fImpsNode, fInclNode: TTreeNode; fXtraNode: TTreeNode; - procedure actUpdate(sender: TObject); - procedure TreeDblClick(sender: TObject); - procedure actOpenFileExecute(sender: TObject); + procedure actUpdate(Sender: TObject); + procedure TreeDblClick(Sender: TObject); + procedure actOpenFileExecute(Sender: TObject); // procedure projNew(aProject: TCEProject); procedure projClosing(aProject: TCEProject); @@ -52,18 +52,19 @@ type function contextActionCount: integer; override; function contextAction(index: integer): TAction; override; public - constructor create(aOwner: TComponent); override; - destructor destroy; override; + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; end; implementation + {$R *.lfm} uses ce_symstring; {$REGION Standard Comp/Obj------------------------------------------------------} -constructor TCEProjectInspectWidget.create(aOwner: TComponent); +constructor TCEProjectInspectWidget.Create(aOwner: TComponent); var png: TPortableNetworkGraphic; begin @@ -105,7 +106,7 @@ begin EntitiesConnector.addObserver(self); end; -destructor TCEProjectInspectWidget.destroy; +destructor TCEProjectInspectWidget.Destroy; begin EntitiesConnector.removeObserver(self); inherited; @@ -114,8 +115,10 @@ end; procedure TCEProjectInspectWidget.SetVisible(Value: boolean); begin inherited; - if Value then updateImperative; + if Value then + updateImperative; end; + {$ENDREGION} {$REGION ICEContextualActions---------------------------------------------------} @@ -134,21 +137,24 @@ begin case index of 0: exit(fActOpenFile); 1: exit(fActSelConf); - else exit(nil); + else + exit(nil); end; end; -procedure TCEProjectInspectWidget.actOpenFileExecute(sender: TObject); +procedure TCEProjectInspectWidget.actOpenFileExecute(Sender: TObject); begin - TreeDblClick(sender); + TreeDblClick(Sender); end; + {$ENDREGION} {$REGION ICEProjectMonitor -----------------------------------------------------} procedure TCEProjectInspectWidget.projNew(aProject: TCEProject); begin fProject := aProject; - if Visible then updateImperative; + if Visible then + updateImperative; end; procedure TCEProjectInspectWidget.projClosing(aProject: TCEProject); @@ -162,18 +168,22 @@ end; procedure TCEProjectInspectWidget.projFocused(aProject: TCEProject); begin fProject := aProject; - if Visible then beginDelayedUpdate; + if Visible then + beginDelayedUpdate; end; procedure TCEProjectInspectWidget.projChanged(aProject: TCEProject); begin - if fProject <> aProject then exit; - if Visible then beginDelayedUpdate; + if fProject <> aProject then + exit; + if Visible then + beginDelayedUpdate; end; procedure TCEProjectInspectWidget.projCompiling(aProject: TCEProject); begin end; + {$ENDREGION} {$REGION Inspector things -------------------------------------------------------} @@ -185,16 +195,18 @@ end; procedure TCEProjectInspectWidget.TreeSelectionChanged(Sender: TObject); begin - actUpdate(sender); + actUpdate(Sender); end; -procedure TCEProjectInspectWidget.TreeDblClick(sender: TObject); +procedure TCEProjectInspectWidget.TreeDblClick(Sender: TObject); var fname: string; i: NativeInt; begin - if fProject = nil then exit; - if Tree.Selected = nil then exit; + if fProject = nil then + exit; + if Tree.Selected = nil then + exit; // if (Tree.Selected.Parent = fFileNode) or (Tree.Selected.Parent = fXtraNode) then begin @@ -214,30 +226,33 @@ begin end; end; -procedure TCEProjectInspectWidget.actUpdate(sender: TObject); +procedure TCEProjectInspectWidget.actUpdate(Sender: TObject); begin - fActSelConf.Enabled := false; - fActOpenFile.Enabled := false; - if Tree.Selected = nil then exit; + fActSelConf.Enabled := False; + fActOpenFile.Enabled := False; + if Tree.Selected = nil then + exit; fActSelConf.Enabled := Tree.Selected.Parent = fConfNode; fActOpenFile.Enabled := Tree.Selected.Parent = fFileNode; end; procedure TCEProjectInspectWidget.btnAddFileClick(Sender: TObject); begin - if fProject = nil then exit; + if fProject = nil then + exit; // with TOpenDialog.Create(nil) do - try - filter := DdiagFilter; - if execute then begin - fProject.beginUpdate; - fProject.addSource(filename); - fProject.endUpdate; + try + filter := DdiagFilter; + if Execute then + begin + fProject.beginUpdate; + fProject.addSource(filename); + fProject.endUpdate; + end; + finally + Free; end; - finally - free; - end; end; procedure TCEProjectInspectWidget.btnAddFoldClick(Sender: TObject); @@ -246,18 +261,20 @@ var lst: TStringList; i: NativeInt; begin - if fProject = nil then exit; + if fProject = nil then + exit; // if fileExists(fProject.fileName) then dir := extractFilePath(fProject.fileName) - else dir := ''; - if selectDirectory('sources', dir, dir, true, 0) then + else + dir := ''; + if selectDirectory('sources', dir, dir, True, 0) then begin fProject.beginUpdate; lst := TStringList.Create; try - listFiles(lst, dir, true); - for i := 0 to lst.Count-1 do + listFiles(lst, dir, True); + for i := 0 to lst.Count - 1 do begin fname := lst.Strings[i]; ext := extractFileExt(fname); @@ -276,19 +293,24 @@ var dir, fname: string; i: Integer; begin - if fProject = nil then exit; - if Tree.Selected = nil then exit; - if Tree.Selected.Parent <> fFileNode then exit; + if fProject = nil then + exit; + if Tree.Selected = nil then + exit; + if Tree.Selected.Parent <> fFileNode then + exit; // fname := Tree.Selected.Text; i := fProject.Sources.IndexOf(fname); - if i = -1 then exit; + if i = -1 then + exit; fname := fProject.getAbsoluteSourceName(i); dir := extractFilePath(fname); - if not DirectoryExists(dir) then exit; + if not DirectoryExists(dir) then + exit; // fProject.beginUpdate; - for i:= fProject.Sources.Count-1 downto 0 do + for i := fProject.Sources.Count - 1 downto 0 do if extractFilePath(fProject.getAbsoluteSourceName(i)) = dir then fProject.Sources.Delete(i); fProject.endUpdate; @@ -299,14 +321,17 @@ var fname: string; i: NativeInt; begin - if fProject = nil then exit; - if Tree.Selected = nil then exit; + if fProject = nil then + exit; + if Tree.Selected = nil then + exit; // if Tree.Selected.Parent = fFileNode then begin fname := Tree.Selected.Text; i := fProject.Sources.IndexOf(fname); - if i > -1 then begin + if i > -1 then + begin fProject.beginUpdate; fProject.Sources.Delete(i); fProject.endUpdate; @@ -319,7 +344,8 @@ var fname: string; multidoc: ICEMultiDocHandler; begin - if fProject = nil then exit; + if fProject = nil then + exit; multidoc := getMultiDocHandler; for fname in Filenames do if FileExists(fname) then @@ -348,7 +374,8 @@ begin fImpsNode.DeleteChildren; fInclNode.DeleteChildren; fXtraNode.DeleteChildren; - if fProject = nil then exit; + if fProject = nil then + exit; Tree.BeginUpdate; // display main sources for src in fProject.Sources do @@ -358,13 +385,14 @@ begin itm.SelectedIndex := 2; end; // display configurations - for i := 0 to fProject.OptionsCollection.Count-1 do + for i := 0 to fProject.OptionsCollection.Count - 1 do begin - conf := fProject.configuration[i].name; - if i = fProject.ConfigurationIndex then conf += ' (active)'; + conf := fProject.configuration[i].Name; + if i = fProject.ConfigurationIndex then + conf += ' (active)'; itm := Tree.Items.AddChild(fConfNode, conf); itm.ImageIndex := 3; - itm.SelectedIndex:= 3; + itm.SelectedIndex := 3; end; // display Imports (-J) for fold in FProject.currentConfiguration.pathsOptions.importStringPaths do @@ -377,7 +405,7 @@ begin itm.ImageIndex := 5; itm.SelectedIndex := 5; end; - fImpsNode.Collapse(false); + fImpsNode.Collapse(False); // display Includes (-I) for fold in FProject.currentConfiguration.pathsOptions.importModulePaths do begin @@ -389,7 +417,7 @@ begin itm.ImageIndex := 5; itm.SelectedIndex := 5; end; - fInclNode.Collapse(false); + fInclNode.Collapse(False); // display extra sources (external .lib, *.a, *.d) for src in FProject.currentConfiguration.pathsOptions.extraSources do begin @@ -399,11 +427,15 @@ begin src := symbolExpander.get(src); lst := TStringList.Create; try - if listAsteriskPath(src, lst) then for src in lst do begin - itm := Tree.Items.AddChild(fXtraNode, src); - itm.ImageIndex := 2; - itm.SelectedIndex := 2; - end else begin + if listAsteriskPath(src, lst) then + for src in lst do + begin + itm := Tree.Items.AddChild(fXtraNode, src); + itm.ImageIndex := 2; + itm.SelectedIndex := 2; + end + else + begin itm := Tree.Items.AddChild(fXtraNode, src); itm.ImageIndex := 2; itm.SelectedIndex := 2; @@ -412,9 +444,10 @@ begin lst.Free; end; end; - fXtraNode.Collapse(false); + fXtraNode.Collapse(False); Tree.EndUpdate; end; + {$ENDREGION --------------------------------------------------------------------} end. diff --git a/src/ce_search.pas b/src/ce_search.pas index 402a25a9..3f4606e3 100644 --- a/src/ce_search.pas +++ b/src/ce_search.pas @@ -6,7 +6,7 @@ interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, - Menus, StdCtrls, actnList, Buttons, SynEdit, SynEditSearch, SynEditTypes, ce_common, + Menus, StdCtrls, ActnList, Buttons, SynEdit, SynEditSearch, SynEditTypes, ce_common, ce_widget, ce_synmemo, ce_interfaces, ce_observer, SynEditHighlighter; type @@ -47,9 +47,8 @@ type procedure optset_ReplaceMru(aReader: TReader); procedure optget_ReplaceMru(aWriter: TWriter); function getOptions: TSynSearchOptions; - procedure actReplaceAllExecute(sender: TObject); - procedure replaceEvent(Sender: TObject; const ASearch, AReplace: - string; Line, Column: integer; var ReplaceAction: TSynReplaceAction); + procedure actReplaceAllExecute(Sender: TObject); + procedure replaceEvent(Sender: TObject; const ASearch, AReplace: string; Line, Column: integer; var ReplaceAction: TSynReplaceAction); protected procedure updateImperative; override; public @@ -67,11 +66,12 @@ type // procedure sesoptDeclareProperties(aFiler: TFiler); override; // - procedure actFindNextExecute(sender: TObject); - procedure actReplaceNextExecute(sender: TObject); + procedure actFindNextExecute(Sender: TObject); + procedure actReplaceNextExecute(Sender: TObject); end; implementation + {$R *.lfm} {$REGION Standard Comp/Obj------------------------------------------------------} @@ -93,7 +93,7 @@ begin btnReplaceAll.Action := fActReplaceAll; // fSearchMru := TMruList.Create; - fReplaceMru:= TMruList.Create; + fReplaceMru := TMruList.Create; // EntitiesConnector.addObserver(self); end; @@ -105,14 +105,15 @@ begin fReplaceMru.Free; inherited; end; + {$ENDREGION} {$REGION ICESessionOptionsObserver ---------------------------------------------} procedure TCESearchWidget.sesoptDeclareProperties(aFiler: TFiler); begin inherited; - aFiler.DefineProperty(Name + '_FindMRU', @optset_SearchMru, @optget_SearchMru, true); - aFiler.DefineProperty(Name + '_ReplaceMRU', @optset_ReplaceMru, @optget_ReplaceMru, true); + aFiler.DefineProperty(Name + '_FindMRU', @optset_SearchMru, @optget_SearchMru, True); + aFiler.DefineProperty(Name + '_ReplaceMRU', @optset_ReplaceMru, @optget_ReplaceMru, True); end; procedure TCESearchWidget.optset_SearchMru(aReader: TReader); @@ -129,12 +130,14 @@ end; procedure TCESearchWidget.optset_ReplaceMru(aReader: TReader); begin fReplaceMru.DelimitedText := aReader.ReadString; - cbReplaceWth.Items.DelimitedText := fReplaceMru.DelimitedText ; + cbReplaceWth.Items.DelimitedText := fReplaceMru.DelimitedText; end; + procedure TCESearchWidget.optget_ReplaceMru(aWriter: TWriter); begin aWriter.WriteString(fReplaceMru.DelimitedText); end; + {$ENDREGION} {$REGION ICEContextualActions---------------------------------------------------} @@ -154,47 +157,53 @@ begin 0: exit(fActFindNext); 1: exit(fActReplaceNext); 2: exit(fActReplaceAll); - else exit(nil); + else + exit(nil); end; end; function TCESearchWidget.getOptions: TSynSearchOptions; begin - result := []; - if chkRegex.Checked then result += [ssoRegExpr]; - if chkWWord.Checked then result += [ssoWholeWord]; - if chkBack.Checked then result += [ssoBackwards]; - if chkCaseSens.Checked then result += [ssoMatchCase]; - if chkPrompt.Checked then result += [ssoPrompt]; + Result := []; + if chkRegex.Checked then + Result += [ssoRegExpr]; + if chkWWord.Checked then + Result += [ssoWholeWord]; + if chkBack.Checked then + Result += [ssoBackwards]; + if chkCaseSens.Checked then + Result += [ssoMatchCase]; + if chkPrompt.Checked then + Result += [ssoPrompt]; end; function dlgReplaceAll: TModalResult; const Btns = [mbYes, mbNo, mbYesToAll, mbNoToAll]; begin - exit( MessageDlg('Coedit', 'Replace this match ?', mtConfirmation, Btns, '')); + exit(MessageDlg('Coedit', 'Replace this match ?', mtConfirmation, Btns, '')); end; -procedure TCESearchWidget.replaceEvent(Sender: TObject; const ASearch, AReplace: - string; Line, Column: integer; var ReplaceAction: TSynReplaceAction); +procedure TCESearchWidget.replaceEvent(Sender: TObject; const ASearch, AReplace: string; Line, Column: integer; var ReplaceAction: TSynReplaceAction); begin case dlgReplaceAll of mrYes: ReplaceAction := raReplace; mrNo: ReplaceAction := raSkip; mrYesToAll: ReplaceAction := raReplaceAll; mrCancel, mrClose, mrNoToAll: - begin - ReplaceAction := raCancel; - fCancelAll := true; - end; + begin + ReplaceAction := raCancel; + fCancelAll := True; + end; end; end; -procedure TCESearchWidget.actFindNextExecute(sender: TObject); +procedure TCESearchWidget.actFindNextExecute(Sender: TObject); begin - if fDoc = nil then exit; + if fDoc = nil then + exit; // - fSearchMru.Insert(0,fToFind); + fSearchMru.Insert(0, fToFind); if not chkFromCur.Checked then begin if chkBack.Checked then @@ -202,8 +211,8 @@ begin else begin if not fHasRestarted then - fDoc.CaretXY := Point(0,0); - fHasRestarted := true; + fDoc.CaretXY := Point(0, 0); + fHasRestarted := True; end; end else if fHasSearched then @@ -217,16 +226,17 @@ begin dlgOkInfo('the expression cannot be found') else begin - fHasSearched := true; - fHasRestarted := false; - chkFromCur.Checked := true; + fHasSearched := True; + fHasRestarted := False; + chkFromCur.Checked := True; end; updateImperative; end; -procedure TCESearchWidget.actReplaceNextExecute(sender: TObject); +procedure TCESearchWidget.actReplaceNextExecute(Sender: TObject); begin - if fDoc = nil then exit; + if fDoc = nil then + exit; // fSearchMru.Insert(0, fToFind); fReplaceMru.Insert(0, fReplaceWth); @@ -237,7 +247,7 @@ begin if chkBack.Checked then fDoc.CaretXY := Point(high(Integer), high(Integer)) else - fDoc.CaretXY := Point(0,0); + fDoc.CaretXY := Point(0, 0); end else if fHasSearched then begin @@ -247,36 +257,39 @@ begin fDoc.CaretX := fDoc.CaretX + length(fToFind); end; if fDoc.SearchReplace(fToFind, fReplaceWth, getOptions + [ssoReplace]) <> 0 then - fHasSearched := true; + fHasSearched := True; fDoc.OnReplaceText := nil; updateImperative; end; -procedure TCESearchWidget.actReplaceAllExecute(sender: TObject); +procedure TCESearchWidget.actReplaceAllExecute(Sender: TObject); var opts: TSynSearchOptions; begin - if fDoc = nil then exit; + if fDoc = nil then + exit; opts := getOptions + [ssoReplace]; opts -= [ssoBackwards]; // fSearchMru.Insert(0, fToFind); fReplaceMru.Insert(0, fReplaceWth); - if chkPrompt.Checked then fDoc.OnReplaceText := @replaceEvent; - fDoc.CaretXY := Point(0,0); - while(true) do + if chkPrompt.Checked then + fDoc.OnReplaceText := @replaceEvent; + fDoc.CaretXY := Point(0, 0); + while (True) do begin - if fDoc.SearchReplace(fToFind, fReplaceWth, opts) = 0 - then break; + if fDoc.SearchReplace(fToFind, fReplaceWth, opts) = 0 then + break; if fCancelAll then begin - fCancelAll := false; + fCancelAll := False; break; end; end; fDoc.OnReplaceText := nil; updateImperative; end; + {$ENDREGION} {$REGION ICEMultiDocObserver ---------------------------------------------------} @@ -288,13 +301,15 @@ end; procedure TCESearchWidget.docClosing(aDoc: TCESynMemo); begin - if fDoc = aDoc then fDoc := nil; + if fDoc = aDoc then + fDoc := nil; updateImperative; end; procedure TCESearchWidget.docFocused(aDoc: TCESynMemo); begin - if fDoc = aDoc then exit; + if fDoc = aDoc then + exit; fDoc := aDoc; updateImperative; end; @@ -302,27 +317,31 @@ end; procedure TCESearchWidget.docChanged(aDoc: TCESynMemo); begin end; + {$ENDREGION} {$REGION Misc. -----------------------------------------------------------------} procedure TCESearchWidget.cbToFindChange(Sender: TObject); begin - if Updating then exit; + if Updating then + exit; fToFind := cbToFind.Text; - fHasSearched := false; + fHasSearched := False; end; procedure TCESearchWidget.chkEnableRepChange(Sender: TObject); begin - if Updating then exit; + if Updating then + exit; updateImperative; end; procedure TCESearchWidget.cbReplaceWthChange(Sender: TObject); begin - if Updating then exit; + if Updating then + exit; fReplaceWth := cbReplaceWth.Text; - fHasSearched := false; + fHasSearched := False; end; procedure TCESearchWidget.updateImperative; @@ -336,6 +355,7 @@ begin cbToFind.Items.Assign(fSearchMru); cbReplaceWth.Items.Assign(fReplaceMru); end; + {$ENDREGION} end. diff --git a/src/ce_shortcutseditor.pas b/src/ce_shortcutseditor.pas index ae2bbf7c..eac108fe 100644 --- a/src/ce_shortcutseditor.pas +++ b/src/ce_shortcutseditor.pas @@ -19,7 +19,7 @@ type property declarator: ICEEditableShortCut read fDeclarator write fDeclarator; published property identifier: string read fIdentifier write fIdentifier; - property data: TShortcut read fData write fData; + property Data: TShortcut read fData write fData; public function combination: string; end; @@ -33,13 +33,13 @@ type published property items: TCollection read fItems write setItems; public - constructor create(AOwner: TComponent); override; - destructor destroy; override; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; // function findIdentifier(const identifier: string): boolean; function findShortcut(aShortcut: Word): boolean; // - property count: Integer read getCount; + property Count: Integer read getCount; property item[index: Integer]: TShortcutItem read getItem; default; end; @@ -52,7 +52,7 @@ type btnActivate: TSpeedButton; tree: TTreeView; procedure btnActivateClick(Sender: TObject); - procedure LabeledEdit1KeyDown(Sender: TObject; var Key: Word;Shift: TShiftState); + procedure LabeledEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure shortcutCatcherExit(Sender: TObject); procedure shortcutCatcherMouseLeave(Sender: TObject); procedure treeSelectionChanged(Sender: TObject); @@ -73,11 +73,12 @@ type protected procedure UpdateShowing; override; public - constructor create(TheOwner: TComponent); override; - destructor destroy; override; + constructor Create(TheOwner: TComponent); override; + destructor Destroy; override; end; implementation + {$R *.lfm} var @@ -86,16 +87,16 @@ var {$REGION TShortCutCollection ---------------------------------------------------} function TShortcutItem.combination: string; begin - result := ShortCutToText(fData); + Result := ShortCutToText(fData); end; -constructor TShortCutCollection.create(AOwner: TComponent); +constructor TShortCutCollection.Create(AOwner: TComponent); begin inherited; fItems := TCollection.Create(TShortcutItem); end; -destructor TShortCutCollection.destroy; +destructor TShortCutCollection.Destroy; begin fItems.Free; inherited; @@ -120,35 +121,36 @@ function TShortCutCollection.findIdentifier(const identifier: string): boolean; var i: Integer; begin - result := false; - for i := 0 to count-1 do + Result := False; + for i := 0 to Count - 1 do if item[i].identifier = identifier then - exit(true); + exit(True); end; function TShortCutCollection.findShortcut(aShortcut: Word): boolean; var i: Integer; begin - result := false; - for i := 0 to count-1 do - if item[i].data = aShortcut then - exit(true); + Result := False; + for i := 0 to Count - 1 do + if item[i].Data = aShortcut then + exit(True); end; + {$ENDREGION} {$REGION Standard Comp/Object things -------------------------------------------} -constructor TCEShortcutEditor.create(TheOwner: TComponent); +constructor TCEShortcutEditor.Create(TheOwner: TComponent); begin inherited; - fObservers := TCEEditableShortCutSubject.create; - fShortcuts := TShortCutCollection.create(self); - fBackup := TShortCutCollection.create(self); + fObservers := TCEEditableShortCutSubject.Create; + fShortcuts := TShortCutCollection.Create(self); + fBackup := TShortCutCollection.Create(self); // EntitiesConnector.addObserver(self); end; -destructor TCEShortcutEditor.destroy; +destructor TCEShortcutEditor.Destroy; begin fObservers.Free; inherited; @@ -156,19 +158,21 @@ end; procedure TCEShortcutEditor.UpdateShowing; var - png : TPortableNetworkGraphic; + png: TPortableNetworkGraphic; begin inherited; - if not visible then exit; + if not Visible then + exit; // png := TPortableNetworkGraphic.Create; try png.LoadFromLazarusResource('keyboard_pencil'); btnActivate.Glyph.Assign(png); finally - png.free; + png.Free; end; end; + {$ENDREGION} {$REGION ICEEditableOptions ----------------------------------------------------} @@ -192,6 +196,7 @@ procedure TCEShortcutEditor.optionedEvent(anEvent: TOptionEditorEvent); begin // TODO-cfeature: pass new shortcut to observer end; + {$ENDREGION} {$REGION shortcut editor things ------------------------------------------------} @@ -202,21 +207,24 @@ end; procedure TCEShortcutEditor.shortcutCatcherExit(Sender: TObject); begin - shortcutCatcher.Enabled := false; + shortcutCatcher.Enabled := False; updateEditCtrls; end; procedure TCEShortcutEditor.shortcutCatcherMouseLeave(Sender: TObject); begin - shortcutCatcher.Enabled := false; + shortcutCatcher.Enabled := False; updateEditCtrls; end; procedure TCEShortcutEditor.btnActivateClick(Sender: TObject); begin - if tree.Selected = nil then exit; - if tree.Selected.Level = 0 then exit; - if tree.Selected.Data = nil then exit; + if tree.Selected = nil then + exit; + if tree.Selected.Level = 0 then + exit; + if tree.Selected.Data = nil then + exit; // shortcutCatcher.Enabled := not shortcutCatcher.Enabled; end; @@ -225,19 +233,22 @@ procedure TCEShortcutEditor.LabeledEdit1KeyDown(Sender: TObject; var Key: Word; var sh: TShortCut; begin - if tree.Selected = nil then exit; - if tree.Selected.Level = 0 then exit; - if tree.Selected.Data = nil then exit; + if tree.Selected = nil then + exit; + if tree.Selected.Level = 0 then + exit; + if tree.Selected.Data = nil then + exit; // if Key = VK_RETURN then - shortcutCatcher.Enabled := false + shortcutCatcher.Enabled := False else begin sh := Shortcut(Key, Shift); - TShortcutItem(tree.Selected.Data).data := sh; + TShortcutItem(tree.Selected.Data).Data := sh; TShortcutItem(tree.Selected.Data).declarator.scedSendItem( tree.Selected.Parent.Text, - tree.Selected.Text, sh ); + tree.Selected.Text, sh); end; // updateEditCtrls; @@ -247,9 +258,12 @@ procedure TCEShortcutEditor.updateEditCtrls; begin schrtText.Caption := ''; // - if tree.Selected = nil then exit; - if tree.Selected.Level = 0 then exit; - if tree.Selected.Data = nil then exit; + if tree.Selected = nil then + exit; + if tree.Selected.Level = 0 then + exit; + if tree.Selected.Data = nil then + exit; // schrtText.Caption := TShortcutItem(tree.Selected.Data).combination; shortcutCatcher.Text := ''; @@ -259,8 +273,8 @@ function TCEShortcutEditor.findCategory(const aName: string; aData: Pointer): TT var i: Integer; begin - result := nil; - for i:= 0 to tree.Items.Count-1 do + Result := nil; + for i := 0 to tree.Items.Count - 1 do if tree.Items[i].Text = aName then if tree.Items[i].Data = aData then exit(tree.Items[i]); @@ -268,7 +282,7 @@ end; function TCEShortcutEditor.sortCategories(Cat1, Cat2: TTreeNode): integer; begin - result := CompareText(Cat1.Text, Cat2.Text); + Result := CompareText(Cat1.Text, Cat2.Text); end; procedure TCEShortcutEditor.updateFromObservers; @@ -279,32 +293,36 @@ var sht: word; idt: string; itm: TShortcutItem; -procedure addItem(); -var - prt: TTreeNode; -begin - // root category - if cat = '' then exit; - if idt = '' then exit; - prt := findCategory(cat, obs); - if prt = nil then - prt := tree.Items.AddObject(nil, cat, obs); - // item as child - itm := TShortcutItem(fShortcuts.items.Add); - itm.identifier := idt; - itm.data:= sht; - itm.declarator := obs; - tree.Items.AddChildObject(prt, idt, itm); - cat := ''; - idt := ''; -end; + + procedure addItem(); + var + prt: TTreeNode; + begin + // root category + if cat = '' then + exit; + if idt = '' then + exit; + prt := findCategory(cat, obs); + if prt = nil then + prt := tree.Items.AddObject(nil, cat, obs); + // item as child + itm := TShortcutItem(fShortcuts.items.Add); + itm.identifier := idt; + itm.Data := sht; + itm.declarator := obs; + tree.Items.AddChildObject(prt, idt, itm); + cat := ''; + idt := ''; + end; + begin tree.Items.Clear; fShortcuts.items.Clear; fBackup.items.Clear; cat := ''; idt := ''; - for i:= 0 to fObservers.observersCount-1 do + for i := 0 to fObservers.observersCount - 1 do begin obs := fObservers.observers[i] as ICEEditableShortCut; if obs.scedWantFirst then @@ -316,11 +334,12 @@ begin end; tree.Items.SortTopLevelNodes(@sortCategories); end; + {$ENDREGION} initialization CEShortcutEditor := TCEShortcutEditor.Create(nil); + finalization CEShortcutEditor.Free; end. - diff --git a/src/ce_staticmacro.pas b/src/ce_staticmacro.pas index 00581065..fdee456d 100644 --- a/src/ce_staticmacro.pas +++ b/src/ce_staticmacro.pas @@ -5,7 +5,7 @@ unit ce_staticmacro; interface uses - Classes, Sysutils, SynEdit, SynCompletion, + Classes, SysUtils, SynEdit, SynCompletion, ce_interfaces, ce_writableComponent, ce_synmemo; type @@ -24,9 +24,9 @@ type property autoInsert: boolean read fAutoInsert write fAutoInsert; property macros: TStringList read fMacros write setMacros; property shortcut: TShortCut read fShortCut write fShortCut; - public - constructor create(aOwner: TComponent); override; - destructor destroy; override; + public + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; procedure Assign(Source: TPersistent); override; procedure AssignTo(Dest: TPersistent); override; end; @@ -71,8 +71,8 @@ type property macros: TStringList read fMacros write setMacros; property automatic: boolean read fAutomatic write fAutomatic; public - constructor create(aOwner: TComponent); override; - destructor destroy; override; + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; // execute using the editor procedure Execute; overload; // execute in aEditor, according to aToken @@ -106,17 +106,17 @@ const '$fo=for(auto i = 0; ; )', '$fe=foreach(elem; )', '$v=void (){}' - ); + ); {$REGION TStaticMacrosOptions --------------------------------------------------} -constructor TStaticMacrosOptions.create(aOwner: TComponent); +constructor TStaticMacrosOptions.Create(aOwner: TComponent); begin - inherited; + inherited; fMacros := TStringList.Create; end; -destructor TStaticMacrosOptions.destroy; +destructor TStaticMacrosOptions.Destroy; begin fMacros.Free; inherited; @@ -127,7 +127,7 @@ var edmac: TCEStaticEditorMacro; opt: TStaticMacrosOptions; begin - if Source is TCEStaticEditorMacro then + if Source is TCEStaticEditorMacro then begin edmac := TCEStaticEditorMacro(Source); // @@ -135,7 +135,7 @@ begin fMacros.Assign(edmac.fMacros); fShortCut := edmac.fCompletor.ShortCut; end - else if Source is TStaticMacrosOptions then + else if Source is TStaticMacrosOptions then begin opt := TStaticMacrosOptions(Source); // @@ -143,7 +143,8 @@ begin macros.Assign(opt.fMacros); shortcut := opt.shortcut; end - else inherited; + else + inherited; end; procedure TStaticMacrosOptions.AssignTo(Dest: TPersistent); @@ -151,7 +152,7 @@ var edmac: TCEStaticEditorMacro; opt: TStaticMacrosOptions; begin - if Dest is TCEStaticEditorMacro then + if Dest is TCEStaticEditorMacro then begin edmac := TCEStaticEditorMacro(Dest); // @@ -162,7 +163,7 @@ begin // edmac.fCompletor.ShortCut := fShortCut; end - else if Dest is TStaticMacrosOptions then + else if Dest is TStaticMacrosOptions then begin opt := TStaticMacrosOptions(Dest); // @@ -170,42 +171,45 @@ begin opt.macros.Assign(fMacros); opt.shortcut := shortcut; end - else inherited; + else + inherited; end; procedure TStaticMacrosOptions.setMacros(aValue: TStringList); begin fMacros.Assign(aValue); end; + {$ENDREGION} {$REGION Standard Comp/Obj -----------------------------------------------------} -constructor TCEStaticEditorMacro.create(aOwner: TComponent); +constructor TCEStaticEditorMacro.Create(aOwner: TComponent); var fname: string; begin inherited; - fAutomatic := true; + fAutomatic := True; fCompletor := TSynAutoComplete.Create(self); fCompletor.ShortCut := 8224; // SHIFT + SPACE fMacros := TStringList.Create; fMacros.Delimiter := '='; addDefaults; // - fOptions := TStaticMacrosOptions.create(self); - fOptionBackup := TStaticMacrosOptions.create(self); + fOptions := TStaticMacrosOptions.Create(self); + fOptionBackup := TStaticMacrosOptions.Create(self); fname := getCoeditDocPath + OptFname; if fileExists(fname) then begin fOptions.loadFromFile(fname); // old option file will create a streaming error. if fOptions.hasLoaded then - fOptions.AssignTo(self) + fOptions.AssignTo(self) else - fOptions.Assign(self); + fOptions.Assign(self); end - else fOptions.Assign(self); + else + fOptions.Assign(self); // sanitize; updateCompletor; @@ -213,7 +217,7 @@ begin EntitiesConnector.addObserver(Self); end; -destructor TCEStaticEditorMacro.destroy; +destructor TCEStaticEditorMacro.Destroy; begin fOptions.saveToFile(getCoeditDocPath + OptFname); EntitiesConnector.removeObserver(Self); @@ -229,6 +233,7 @@ begin sanitize; updateCompletor; end; + {$ENDREGION} {$REGION ICEMultiDocObserver ---------------------------------------------------} @@ -240,7 +245,8 @@ end; procedure TCEStaticEditorMacro.docFocused(aDoc: TCESynMemo); begin - if fDoc = aDoc then exit; + if fDoc = aDoc then + exit; fDoc := aDoc; fCompletor.Editor := fDoc; end; @@ -257,29 +263,30 @@ begin exit; fDoc := nil; end; + {$ENDREGION} {$REGION ICEEditableOptions ----------------------------------------------------} function TCEStaticEditorMacro.optionedWantCategory(): string; begin - exit('Static macros'); + exit('Static macros'); end; function TCEStaticEditorMacro.optionedWantEditorKind: TOptionEditorKind; begin - exit(oekGeneric); + exit(oekGeneric); end; function TCEStaticEditorMacro.optionedWantContainer: TPersistent; begin - fOptions.Assign(self); + fOptions.Assign(self); fOptionBackup.Assign(fOptions); exit(fOptions); end; procedure TCEStaticEditorMacro.optionedEvent(anEvent: TOptionEditorEvent); begin - case anEvent of + case anEvent of oeeAccept: begin fOptions.AssignTo(self); @@ -293,21 +300,22 @@ begin oeeChange: fOptions.AssignTo(self); end; end; + {$ENDREGION} {$REGION Macros things ---------------------------------------------------------} procedure TCEStaticEditorMacro.sanitize; var i: Integer; - text: string; + Text: string; macro: string; begin - for i := fMacros.Count-1 downto 0 do + for i := fMacros.Count - 1 downto 0 do begin - text := fMacros.Strings[i]; - if length(text) >= 4 then - if text[1] = '$' then - if Pos('=', text) > 2 then + Text := fMacros.Strings[i]; + if length(Text) >= 4 then + if Text[1] = '$' then + if Pos('=', Text) > 2 then begin macro := fMacros.Names[i]; if (macro[length(macro)] in ['a'..'z', 'A'..'Z', '0'..'9']) then @@ -332,7 +340,7 @@ var tok, val: string; begin fCompletor.AutoCompleteList.Clear; - for i := 0 to fMacros.Count-1 do + for i := 0 to fMacros.Count - 1 do begin tok := fMacros.Names[i]; val := fMacros.ValueFromIndex[i]; @@ -352,11 +360,13 @@ begin if aEditor <> nil then fCompletor.Execute(aToken, aEditor); end; + {$ENDREGION} initialization - StaticEditorMacro := TCEStaticEditorMacro.create(nil); -finalization - StaticEditorMacro.Free;; -end. + StaticEditorMacro := TCEStaticEditorMacro.Create(nil); +finalization + StaticEditorMacro.Free; + ; +end. diff --git a/src/ce_symlist.pas b/src/ce_symlist.pas index dd4bd721..5237553e 100644 --- a/src/ce_symlist.pas +++ b/src/ce_symlist.pas @@ -6,25 +6,25 @@ interface uses Classes, SysUtils, TreeFilterEdit, Forms, Controls, Graphics, ExtCtrls, Menus, - ComCtrls, ce_widget, jsonparser, process, actnlist, Buttons, Clipbrd, LCLProc, + ComCtrls, ce_widget, jsonparser, process, ActnList, Buttons, Clipbrd, LCLProc, ce_common, ce_observer, ce_synmemo, ce_interfaces, ce_writableComponent, EditBtn; type // Enumerates the possible symbol kind. To be kept in sync with the tool declaration. TSymbolType = ( - _alias, - _class, - _enum, - _function, - _interface, - _import, - _mixin, - _struct, - _template, - _union, - _variable - ); + _alias, + _class, + _enum, + _function, + _interface, + _import, + _mixin, + _struct, + _template, + _union, + _variable + ); TSymbolCollection = class; @@ -39,12 +39,12 @@ type published property line: Integer read fline write fLine; property col: Integer read fCol write fCol; - property name: string read fName write fName; + property Name: string read fName write fName; property symType: TSymbolType read fType write fType; property subs: TSymbolCollection read fSubs write setSubs; public constructor Create(ACollection: TCollection); override; - destructor destroy; override; + destructor Destroy; override; end; // Encapsulates a ssymbol ub symbols. @@ -52,7 +52,7 @@ type private function getSub(index: Integer): TSymbol; public - constructor create; + constructor Create; property sub[index: Integer]: TSymbol read getSub; default; end; @@ -64,8 +64,8 @@ type published property symbols: TSymbolCollection read fSymbols write setSymbols; public - constructor create(aOwner: TCOmponent); override; - destructor destroy; override; + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; // procedure LoadFromTool(str: TStream); end; @@ -135,8 +135,8 @@ type procedure clearTree; // procedure callToolProc; - procedure toolOutputData(sender: TObject); - procedure toolTerminated(sender: TObject); + procedure toolOutputData(Sender: TObject); + procedure toolTerminated(Sender: TObject); // procedure docNew(aDoc: TCESynMemo); procedure docClosing(aDoc: TCESynMemo); @@ -160,24 +160,25 @@ type property refreshOnChange: boolean read fRefreshOnChange write fRefreshOnChange; property refreshOnFocus: boolean read fRefreshOnFocus write fRefreshOnFocus; public - constructor create(aOwner: TComponent); override; - destructor destroy; override; + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; end; implementation + {$R *.lfm} const OptsFname = 'symbollist.txt'; {$REGION Serializable symbols---------------------------------------------------} -constructor TSymbol.create(ACollection: TCollection); +constructor TSymbol.Create(ACollection: TCollection); begin - inherited create(ACollection); - fSubs := TSymbolCollection.create; + inherited Create(ACollection); + fSubs := TSymbolCollection.Create; end; -destructor TSymbol.destroy; +destructor TSymbol.Destroy; begin fSubs.Free; inherited; @@ -188,9 +189,9 @@ begin fSubs.Assign(aValue); end; -constructor TSymbolCollection.create; +constructor TSymbolCollection.Create; begin - inherited create(TSymbol); + inherited Create(TSymbol); end; function TSymbolCollection.getSub(index: Integer): TSymbol; @@ -198,15 +199,15 @@ begin exit(TSymbol(self.Items[index])); end; -constructor TSymbolList.create(aOwner: TCOmponent); +constructor TSymbolList.Create(aOwner: TComponent); begin inherited; - fSymbols := TSymbolCollection.create; + fSymbols := TSymbolCollection.Create; end; -destructor TSymbolList.destroy; +destructor TSymbolList.Destroy; begin - fSymbols.free; + fSymbols.Free; inherited; end; @@ -221,23 +222,24 @@ var begin bin := TMemoryStream.Create; try - str.Position:=0; + str.Position := 0; ObjectTextToBinary(str, bin); - bin.Position:=0; + bin.Position := 0; bin.ReadComponent(self); finally bin.Free; end; end; + {$ENDREGION} {$REGION TCESymbolListOptions --------------------------------------------------} -constructor TCESymbolListOptions.Create(AOwner: TComponent); +constructor TCESymbolListOptions.Create(AOwner: TComponent); begin inherited; - fRefreshOnFocus := true; - fShowChildCategories := true; - fSmartFilter := true; + fRefreshOnFocus := True; + fShowChildCategories := True; + fSmartFilter := True; fAutoRefreshDelay := 1500; end; @@ -249,14 +251,15 @@ begin begin widg := TCESymbolListWidget(Source); // - fAutoRefreshDelay := widg.updaterByDelayDuration; - fRefreshOnFocus := widg.fRefreshOnFocus; - fRefreshOnChange := widg.fRefreshOnChange; - fAutoRefresh := widg.fAutoRefresh; - fShowChildCategories := widg.fShowChildCategories; - fSmartFilter := widg.fSmartFilter; + fAutoRefreshDelay := widg.updaterByDelayDuration; + fRefreshOnFocus := widg.fRefreshOnFocus; + fRefreshOnChange := widg.fRefreshOnChange; + fAutoRefresh := widg.fAutoRefresh; + fShowChildCategories := widg.fShowChildCategories; + fSmartFilter := widg.fSmartFilter; end - else inherited; + else + inherited; end; procedure TCESymbolListOptions.AssignTo(Dest: TPersistent); @@ -268,32 +271,34 @@ begin widg := TCESymbolListWidget(Dest); // widg.updaterByDelayDuration := fAutoRefreshDelay; - widg.fRefreshOnFocus := fRefreshOnFocus; - widg.fRefreshOnChange := fRefreshOnChange; - widg.fAutoRefresh := fAutoRefresh; - widg.fShowChildCategories := fShowChildCategories; - widg.fSmartFilter := fSmartFilter; + widg.fRefreshOnFocus := fRefreshOnFocus; + widg.fRefreshOnChange := fRefreshOnChange; + widg.fAutoRefresh := fAutoRefresh; + widg.fShowChildCategories := fShowChildCategories; + widg.fSmartFilter := fSmartFilter; // - widg.fActAutoRefresh.Checked := fAutoRefresh; - widg.fActRefreshOnChange.Checked:= fRefreshOnChange; + widg.fActAutoRefresh.Checked := fAutoRefresh; + widg.fActRefreshOnChange.Checked := fRefreshOnChange; widg.fActRefreshOnFocus.Checked := fRefreshOnFocus; end - else inherited; + else + inherited; end; + {$ENDREGIOn} {$REGION Standard Comp/Obj------------------------------------------------------} -constructor TCESymbolListWidget.create(aOwner: TComponent); +constructor TCESymbolListWidget.Create(aOwner: TComponent); var png: TPortableNetworkGraphic; fname: string; begin - fAutoRefresh := false; - fRefreshOnFocus := true; - fRefreshOnChange := false; + fAutoRefresh := False; + fRefreshOnFocus := True; + fRefreshOnChange := False; // fActCopyIdent := TAction.Create(self); - fActCopyIdent.OnExecute:=@actCopyIdentExecute; + fActCopyIdent.OnExecute := @actCopyIdentExecute; fActCopyIdent.Caption := 'Copy identifier'; fActRefresh := TAction.Create(self); fActRefresh.OnExecute := @actRefreshExecute; @@ -301,17 +306,17 @@ begin fActAutoRefresh := TAction.Create(self); fActAutoRefresh.OnExecute := @actAutoRefreshExecute; fActAutoRefresh.Caption := 'Auto-refresh'; - fActAutoRefresh.AutoCheck := true; + fActAutoRefresh.AutoCheck := True; fActAutoRefresh.Checked := fAutoRefresh; fActRefreshOnChange := TAction.Create(self); fActRefreshOnChange.OnExecute := @actRefreshOnChangeExecute; fActRefreshOnChange.Caption := 'Refresh on change'; - fActRefreshOnChange.AutoCheck := true; + fActRefreshOnChange.AutoCheck := True; fActRefreshOnChange.Checked := fRefreshOnChange; fActRefreshOnFocus := TAction.Create(self); fActRefreshOnFocus.OnExecute := @actRefreshOnFocusExecute; fActRefreshOnFocus.Caption := 'Refresh on focused'; - fActRefreshOnFocus.AutoCheck := true; + fActRefreshOnFocus.AutoCheck := True; fActRefreshOnFocus.Checked := fRefreshOnFocus; fActSelectInSource := TAction.Create(self); fActSelectInSource.OnExecute := @TreeDblClick; @@ -319,27 +324,27 @@ begin // inherited; // allow empty name if owner is nil - fSyms := TSymbolList.create(nil); - fToolOutput := TMemoryStream.create; + fSyms := TSymbolList.Create(nil); + fToolOutput := TMemoryStream.Create; // fOptions := TCESymbolListOptions.Create(self); - fOptions.Name:= 'symbolListOptions'; + fOptions.Name := 'symbolListOptions'; fname := getCoeditDocPath + OptsFname; if FileExists(fname) then - fOptions.loadFromFile(fname); + fOptions.loadFromFile(fname); fOptions.AssignTo(self); // - ndAlias := Tree.Items[0]; - ndClass := Tree.Items[1]; - ndEnum := Tree.Items[2]; - ndFunc := Tree.Items[3]; - ndImp := Tree.Items[4]; - ndIntf := Tree.Items[5]; - ndMix := Tree.Items[6]; - ndStruct := Tree.Items[7]; - ndTmp := Tree.Items[8]; - ndUni := Tree.Items[9]; - ndVar := Tree.Items[10]; + ndAlias := Tree.Items[0]; + ndClass := Tree.Items[1]; + ndEnum := Tree.Items[2]; + ndFunc := Tree.Items[3]; + ndImp := Tree.Items[4]; + ndIntf := Tree.Items[5]; + ndMix := Tree.Items[6]; + ndStruct := Tree.Items[7]; + ndTmp := Tree.Items[8]; + ndUni := Tree.Items[9]; + ndVar := Tree.Items[10]; // png := TPortableNetworkGraphic.Create; try @@ -355,12 +360,12 @@ begin EntitiesConnector.addObserver(self); end; -destructor TCESymbolListWidget.destroy; +destructor TCESymbolListWidget.Destroy; begin EntitiesConnector.removeObserver(self); // killProcess(fToolProc); - fToolOutput.free; + fToolOutput.Free; fSyms.Free; // fOptions.saveToFile(getCoeditDocPath + OptsFname); @@ -376,17 +381,18 @@ begin if Value then callToolProc; end; + {$ENDREGION} {$REGION ICEContextualActions---------------------------------------------------} function TCESymbolListWidget.contextName: string; begin - result := 'Static explorer'; + Result := 'Static explorer'; end; function TCESymbolListWidget.contextActionCount: integer; begin - result := 6; + Result := 6; end; function TCESymbolListWidget.contextAction(index: integer): TAction; @@ -398,13 +404,15 @@ begin 3: exit(fActAutoRefresh); 4: exit(fActRefreshOnChange); 5: exit(fActRefreshOnFocus); - else result := nil; + else + Result := nil; end; end; procedure TCESymbolListWidget.actRefreshExecute(Sender: TObject); begin - if Updating then exit; + if Updating then + exit; callToolProc; end; @@ -428,9 +436,11 @@ end; procedure TCESymbolListWidget.actCopyIdentExecute(Sender: TObject); begin - if Tree.Selected = nil then exit; - Clipboard.AsText:= Tree.Selected.Text; + if Tree.Selected = nil then + exit; + Clipboard.AsText := Tree.Selected.Text; end; + {$ENDREGION} {$REGION ICEEditableOptions ----------------------------------------------------} @@ -452,10 +462,12 @@ end; procedure TCESymbolListWidget.optionedEvent(anEvent: TOptionEditorEvent); begin - if anEvent <> oeeAccept then exit; + if anEvent <> oeeAccept then + exit; fOptions.AssignTo(self); callToolProc; end; + {$ENDREGION} {$REGION ICEMultiDocObserver ---------------------------------------------------} @@ -467,7 +479,8 @@ end; procedure TCESymbolListWidget.docClosing(aDoc: TCESynMemo); begin - if fDoc <> aDoc then exit; + if fDoc <> aDoc then + exit; fDoc := nil; clearTree; updateVisibleCat; @@ -475,28 +488,38 @@ end; procedure TCESymbolListWidget.docFocused(aDoc: TCESynMemo); begin - if fDoc = aDoc then exit; + if fDoc = aDoc then + exit; fDoc := aDoc; - if not Visible then exit; + if not Visible then + exit; // - if fAutoRefresh then beginDelayedUpdate - else if fRefreshOnFocus then callToolProc; + if fAutoRefresh then + beginDelayedUpdate + else if fRefreshOnFocus then + callToolProc; end; procedure TCESymbolListWidget.docChanged(aDoc: TCESynMemo); begin - if fDoc <> aDoc then exit; - if not Visible then exit; + if fDoc <> aDoc then + exit; + if not Visible then + exit; // - if fAutoRefresh then beginDelayedUpdate - else if fRefreshOnChange then callToolProc; + if fAutoRefresh then + beginDelayedUpdate + else if fRefreshOnChange then + callToolProc; end; + {$ENDREGION} {$REGION Symbol-tree things ----------------------------------------------------} procedure TCESymbolListWidget.updateDelayed; begin - if not fAutoRefresh then exit; + if not fAutoRefresh then + exit; callToolProc; end; @@ -517,28 +540,29 @@ begin begin ndAlias.Visible := ndAlias.Count > 0; ndClass.Visible := ndClass.Count > 0; - ndEnum.Visible := ndEnum.Count > 0; - ndFunc.Visible := ndFunc.Count > 0; - ndImp.Visible := ndImp.Count > 0; - ndIntf.Visible := ndIntf.Count > 0; - ndMix.Visible := ndMix.Count > 0; - ndStruct.Visible:= ndStruct.Count > 0; - ndTmp.Visible := ndTmp.Count > 0; - ndUni.Visible := ndUni.Count > 0; - ndVar.Visible := ndVar.Count > 0; - end else + ndEnum.Visible := ndEnum.Count > 0; + ndFunc.Visible := ndFunc.Count > 0; + ndImp.Visible := ndImp.Count > 0; + ndIntf.Visible := ndIntf.Count > 0; + ndMix.Visible := ndMix.Count > 0; + ndStruct.Visible := ndStruct.Count > 0; + ndTmp.Visible := ndTmp.Count > 0; + ndUni.Visible := ndUni.Count > 0; + ndVar.Visible := ndVar.Count > 0; + end + else begin - ndAlias.Visible := true; - ndClass.Visible := true; - ndEnum.Visible := true; - ndFunc.Visible := true; - ndImp.Visible := true; - ndIntf.Visible := true; - ndMix.Visible := true; - ndStruct.Visible:= true; - ndTmp.Visible := true; - ndUni.Visible := true; - ndVar.Visible := true; + ndAlias.Visible := True; + ndClass.Visible := True; + ndEnum.Visible := True; + ndFunc.Visible := True; + ndImp.Visible := True; + ndIntf.Visible := True; + ndMix.Visible := True; + ndStruct.Visible := True; + ndTmp.Visible := True; + ndUni.Visible := True; + ndVar.Visible := True; end; end; @@ -559,42 +583,48 @@ end; procedure TCESymbolListWidget.TreeFilterEdit1AfterFilter(Sender: TObject); begin - if TreeFilterEdit1.Filter ='' then + if TreeFilterEdit1.Filter = '' then updateVisibleCat; end; -function TCESymbolListWidget.TreeFilterEdit1FilterItem(Item: TObject; out - Done: Boolean): Boolean; +function TCESymbolListWidget.TreeFilterEdit1FilterItem(Item: TObject; out Done: Boolean): Boolean; begin - if not fSmartFilter then exit; + if not fSmartFilter then + exit; // if TreeFilterEdit1.Filter <> '' then tree.FullExpand else if tree.Selected = nil then tree.FullCollapse - else tree.MakeSelectionVisible; - result := false; + else + tree.MakeSelectionVisible; + Result := False; end; procedure TCESymbolListWidget.TreeFilterEdit1MouseEnter(Sender: TObject); begin - if not fSmartFilter then exit; + if not fSmartFilter then + exit; // tree.Selected := nil; end; procedure TCESymbolListWidget.TreeKeyPress(Sender: TObject; var Key: char); begin - if Key = #13 then TreeDblClick(nil); + if Key = #13 then + TreeDblClick(nil); end; procedure TCESymbolListWidget.TreeDblClick(Sender: TObject); var line: Int64; begin - if fDoc = nil then exit; - if Tree.Selected = nil then exit; - if Tree.Selected.Data = nil then exit; + if fDoc = nil then + exit; + if Tree.Selected = nil then + exit; + if Tree.Selected.Data = nil then + exit; // line := PInt64(Tree.Selected.Data)^; fDoc.CaretY := line; @@ -605,8 +635,10 @@ procedure TCESymbolListWidget.callToolProc; var srcFname: string; begin - if fDoc = nil then exit; - if fDoc.Lines.Count = 0 then exit; + if fDoc = nil then + exit; + if fDoc.Lines.Count = 0 then + exit; // standard process options killProcess(fToolProc); @@ -615,7 +647,7 @@ begin fToolProc.Options := [poUsePipes]; fToolProc.Executable := 'cesyms'; fToolProc.OnTerminate := @toolTerminated; - fToolProc.OnReadData := @toolOutputData; + fToolProc.OnReadData := @toolOutputData; fToolProc.CurrentDirectory := ExtractFileDir(Application.ExeName); // focused source @@ -628,123 +660,141 @@ begin fToolProc.Execute; end; -procedure TCESymbolListWidget.toolOutputData(sender: TObject); +procedure TCESymbolListWidget.toolOutputData(Sender: TObject); begin - processOutputToStream(TProcess(sender), fToolOutput); + processOutputToStream(TProcess(Sender), fToolOutput); end; -procedure TCESymbolListWidget.toolTerminated(sender: TObject); +procedure TCESymbolListWidget.toolTerminated(Sender: TObject); // -function getCatNode(node: TTreeNode; stype: TSymbolType ): TTreeNode; -begin - if node = nil then case stype of - _alias : exit(ndAlias); - _class : exit(ndClass); - _enum : exit(ndEnum); - _function : exit(ndFunc); - _import : exit(ndImp); - _interface: exit(ndIntf); - _mixin : exit(ndMix); - _struct : exit(ndStruct); - _template : exit(ndTmp); - _union : exit(ndUni); - _variable : exit(ndVar); - end else case stype of - _alias: - begin - result := node.FindNode('Alias'); - if result = nil then result := node.TreeNodes.AddChild(node, 'Alias'); + function getCatNode(node: TTreeNode; stype: TSymbolType): TTreeNode; + begin + if node = nil then + case stype of + _alias: exit(ndAlias); + _class: exit(ndClass); + _enum: exit(ndEnum); + _function: exit(ndFunc); + _import: exit(ndImp); + _interface: exit(ndIntf); + _mixin: exit(ndMix); + _struct: exit(ndStruct); + _template: exit(ndTmp); + _union: exit(ndUni); + _variable: exit(ndVar); + end + else + case stype of + _alias: + begin + Result := node.FindNode('Alias'); + if Result = nil then + Result := node.TreeNodes.AddChild(node, 'Alias'); + end; + _class: + begin + Result := node.FindNode('Class'); + if Result = nil then + Result := node.TreeNodes.AddChild(node, 'Class'); + end; + _enum: + begin + Result := node.FindNode('Enum'); + if Result = nil then + Result := node.TreeNodes.AddChild(node, 'Enum'); + end; + _function: + begin + Result := node.FindNode('Function'); + if Result = nil then + Result := node.TreeNodes.AddChild(node, 'Function'); + end; + _import: + begin + Result := node.FindNode('Import'); + if Result = nil then + Result := node.TreeNodes.AddChild(node, 'Import'); + end; + _interface: + begin + Result := node.FindNode('Interface'); + if Result = nil then + Result := node.TreeNodes.AddChild(node, 'Interface'); + end; + _mixin: + begin + Result := node.FindNode('Mixin'); + if Result = nil then + Result := node.TreeNodes.AddChild(node, 'Mixin'); + end; + _struct: + begin + Result := node.FindNode('Struct'); + if Result = nil then + Result := node.TreeNodes.AddChild(node, 'Struct'); + end; + _template: + begin + Result := node.FindNode('Template'); + if Result = nil then + Result := node.TreeNodes.AddChild(node, 'Template'); + end; + _union: + begin + Result := node.FindNode('Union'); + if Result = nil then + Result := node.TreeNodes.AddChild(node, 'Union'); + end; + _variable: + begin + Result := node.FindNode('Variable'); + if Result = nil then + Result := node.TreeNodes.AddChild(node, 'Variable'); + end; end; - _class: - begin - result := node.FindNode('Class'); - if result = nil then result := node.TreeNodes.AddChild(node, 'Class'); - end; - _enum: - begin - result := node.FindNode('Enum'); - if result = nil then result := node.TreeNodes.AddChild(node, 'Enum'); - end; - _function: - begin - result := node.FindNode('Function'); - if result = nil then result := node.TreeNodes.AddChild(node, 'Function'); - end; - _import: - begin - result := node.FindNode('Import'); - if result = nil then result := node.TreeNodes.AddChild(node, 'Import'); - end; - _interface: - begin - result := node.FindNode('Interface'); - if result = nil then result := node.TreeNodes.AddChild(node, 'Interface'); - end; - _mixin: - begin - result := node.FindNode('Mixin'); - if result = nil then result := node.TreeNodes.AddChild(node, 'Mixin'); - end; - _struct: - begin - result := node.FindNode('Struct'); - if result = nil then result := node.TreeNodes.AddChild(node, 'Struct'); - end; - _template: - begin - result := node.FindNode('Template'); - if result = nil then result := node.TreeNodes.AddChild(node, 'Template'); - end; - _union: - begin - result := node.FindNode('Union'); - if result = nil then result := node.TreeNodes.AddChild(node, 'Union'); - end; - _variable: - begin - result := node.FindNode('Variable'); - if result = nil then result := node.TreeNodes.AddChild(node, 'Variable'); - end; - end; -end; -// -procedure symbolToTreeNode(origin: TTreenode; sym: TSymbol); -var - data: PInt64; - cat: TTreeNode; - node: TTreeNode; - i: Integer; -begin - cat := getCatNode(origin, sym.symType); - data := new(PInt64); - data^ := sym.fline; - node := tree.Items.AddChildObject(cat, sym.name, data); - if not fShowChildCategories then node := nil; - cat.Visible:=true; - for i := 0 to sym.subs.Count-1 do - symbolToTreeNode(node, sym.subs[i]); -end; -// + end; + // + procedure symbolToTreeNode(origin: TTreenode; sym: TSymbol); + var + Data: PInt64; + cat: TTreeNode; + node: TTreeNode; + i: Integer; + begin + cat := getCatNode(origin, sym.symType); + Data := new(PInt64); + Data^ := sym.fline; + node := tree.Items.AddChildObject(cat, sym.Name, Data); + if not fShowChildCategories then + node := nil; + cat.Visible := True; + for i := 0 to sym.subs.Count - 1 do + symbolToTreeNode(node, sym.subs[i]); + end; + // var i: Integer; begin - if ndAlias = nil then exit; + if ndAlias = nil then + exit; clearTree; updateVisibleCat; - if fDoc = nil then exit; + if fDoc = nil then + exit; // - processOutputToStream(TProcess(sender), fToolOutput); + processOutputToStream(TProcess(Sender), fToolOutput); fToolOutput.Position := 0; fSyms.LoadFromTool(fToolOutput); fToolProc.OnTerminate := nil; - fToolProc.OnReadData := nil; + fToolProc.OnReadData := nil; fToolOutput.Clear; // tree.BeginUpdate; - for i := 0 to fSyms.symbols.Count-1 do + for i := 0 to fSyms.symbols.Count - 1 do symbolToTreeNode(nil, fSyms.symbols[i]); tree.EndUpdate; end; + {$ENDREGION --------------------------------------------------------------------} end. diff --git a/src/ce_symstring.pas b/src/ce_symstring.pas index bfb4f914..a83caee9 100644 --- a/src/ce_symstring.pas +++ b/src/ce_symstring.pas @@ -36,8 +36,8 @@ type procedure docFocused(aDoc: TCESynMemo); procedure docChanged(aDoc: TCESynMemo); public - constructor create; - destructor destroy; override; + constructor Create; + destructor Destroy; override; // expands the symbols contained in symString function get(const symString: string): string; end; @@ -48,19 +48,20 @@ var implementation uses - Forms, sysutils, classes; + Forms, SysUtils, Classes; {$REGION Standard Comp/Obj------------------------------------------------------} -constructor TCESymbolExpander.create; +constructor TCESymbolExpander.Create; begin EntitiesConnector.addObserver(self); end; -destructor TCESymbolExpander.destroy; +destructor TCESymbolExpander.Destroy; begin EntitiesConnector.removeObserver(self); inherited; end; + {$ENDREGION} {$REGION ICEProjectObserver ----------------------------------------------------} @@ -71,7 +72,8 @@ end; procedure TCESymbolExpander.projClosing(aProject: TCEProject); begin - if fProj <> aProject then exit; + if fProj <> aProject then + exit; fProj := nil; end; @@ -82,12 +84,14 @@ end; procedure TCESymbolExpander.projChanged(aProject: TCEProject); begin - if fProj <> aProject then exit; + if fProj <> aProject then + exit; end; procedure TCESymbolExpander.projCompiling(aProject: TCEProject); begin end; + {$ENDREGION} {$REGION ICEMultiDocObserver ---------------------------------------------------} @@ -98,7 +102,8 @@ end; procedure TCESymbolExpander.docClosing(aDoc: TCESynMemo); begin - if aDoc <> fDoc then exit; + if aDoc <> fDoc then + exit; fDoc := nil; end; @@ -109,8 +114,10 @@ end; procedure TCESymbolExpander.docChanged(aDoc: TCESynMemo); begin - if aDoc <> fDoc then exit; + if aDoc <> fDoc then + exit; end; + {$ENDREGION} {$REGION Symbol things ---------------------------------------------------------} @@ -124,40 +131,49 @@ const na = '``'; begin hasProj := fProj <> nil; - hasDoc := fDoc <> nil; + hasDoc := fDoc <> nil; // application fSymbols[CAF] := Application.ExeName; fSymbols[CAP] := ExtractFilePath(Application.ExeName); // document if hasDoc then begin - if fileExists(fDoc.fileName) then begin + if fileExists(fDoc.fileName) then + begin fSymbols[CFF] := fDoc.fileName; fSymbols[CFP] := ExtractFilePath(fDoc.fileName); end - else begin + else + begin fSymbols[CFF] := na; fSymbols[CFP] := na; end; if fDoc.Identifier <> '' then fSymbols[CI] := fDoc.Identifier - else fSymbols[CI] := na; - end else begin + else + fSymbols[CI] := na; + end + else + begin fSymbols[CFF] := na; fSymbols[CFP] := na; - fSymbols[CI ] := na; + fSymbols[CI] := na; end; // project if hasProj then begin - if fileExists(fProj.fileName) then begin + if fileExists(fProj.fileName) then + begin fSymbols[CPF] := fProj.fileName; fSymbols[CPP] := ExtractFilePath(fProj.fileName); fSymbols[CPR] := fProj.getAbsoluteFilename(fProj.RootFolder); fSymbols[CPN] := stripFileExt(extractFileName(fProj.fileName)); fSymbols[CPO] := fProj.outputFilename; - if fSymbols[CPR] = '' then fSymbols[CPR] := fSymbols[CPP]; - end else begin + if fSymbols[CPR] = '' then + fSymbols[CPR] := fSymbols[CPP]; + end + else + begin fSymbols[CPF] := na; fSymbols[CPP] := na; fSymbols[CPR] := na; @@ -165,24 +181,27 @@ begin fSymbols[CPO] := na; end; fSymbols[CPFS] := ''; - for i := 0 to fProj.Sources.Count-1 do + for i := 0 to fProj.Sources.Count - 1 do begin fname := fProj.getAbsoluteSourceName(i); if dExtList.IndexOf(ExtractFileExt(fname)) = -1 then continue; fSymbols[CPFS] += fname; if fProj.Sources.Count > 1 then - if i <> fProj.Sources.Count-1 then + if i <> fProj.Sources.Count - 1 then fSymbols[CPFS] += LineEnding; end; - if fProj.Sources.Count = 0 then fSymbols[CPFS] := na; - end else begin + if fProj.Sources.Count = 0 then + fSymbols[CPFS] := na; + end + else + begin fSymbols[CPF] := na; fSymbols[CPP] := na; fSymbols[CPR] := na; fSymbols[CPN] := na; fSymbols[CPO] := na; - fSymbols[CPFS]:= na; + fSymbols[CPFS] := na; end; end; @@ -193,8 +212,9 @@ var begs, ends: boolean; i: integer; begin - result := ''; - if symString = '' then exit; + Result := ''; + if symString = '' then + exit; updateSymbols; // elems := TStringList.Create; @@ -202,58 +222,60 @@ begin i := 0; elem := ''; repeat - inc(i); + Inc(i); if not (symString[i] in ['<', '>']) then elem += symString[i] else begin if symString[i] = '<' then - begs := true; + begs := True; ends := symString[i] = '>'; elems.Add(elem); elem := ''; if begs and ends then begin - begs := false; - ends := false; + begs := False; + ends := False; // elem.obj is a flag to diferenciate symbols from elements - elems.Objects[elems.Count-1] := Self; + elems.Objects[elems.Count - 1] := Self; end; end; until i = length(symString); elems.Add(elem); elem := ''; - for i:= 0 to elems.Count-1 do + for i := 0 to elems.Count - 1 do begin if elems.Objects[i] = nil then - result += elems.Strings[i] - else case elems.Strings[i] of - '<','>': continue; - 'CAF', 'CoeditApplicationFile':result += fSymbols[CAF]; - 'CAP', 'CoeditApplicationPath':result += fSymbols[CAP]; - // - 'CFF', 'CurrentFileFile': result += fSymbols[CFF]; - 'CFP', 'CurrentFilePath': result += fSymbols[CFP]; - 'CI', 'CurrentIdentifier': result += fSymbols[CI]; - // - 'CPF', 'CurrentProjectFile': result += fSymbols[CPF]; - 'CPFS', 'CurrentProjectFiles': result += fSymbols[CPFS]; - 'CPN', 'CurrentProjectName': result += fSymbols[CPN]; - 'CPO', 'CurrentProjectOutput': result += fSymbols[CPO]; - 'CPP', 'CurrentProjectPath': result += fSymbols[CPP]; - 'CPR', 'CurrentProjectRoot': result += fSymbols[CPR]; - end; + Result += elems.Strings[i] + else + case elems.Strings[i] of + '<', '>': continue; + 'CAF', 'CoeditApplicationFile': Result += fSymbols[CAF]; + 'CAP', 'CoeditApplicationPath': Result += fSymbols[CAP]; + // + 'CFF', 'CurrentFileFile': Result += fSymbols[CFF]; + 'CFP', 'CurrentFilePath': Result += fSymbols[CFP]; + 'CI', 'CurrentIdentifier': Result += fSymbols[CI]; + // + 'CPF', 'CurrentProjectFile': Result += fSymbols[CPF]; + 'CPFS', 'CurrentProjectFiles': Result += fSymbols[CPFS]; + 'CPN', 'CurrentProjectName': Result += fSymbols[CPN]; + 'CPO', 'CurrentProjectOutput': Result += fSymbols[CPO]; + 'CPP', 'CurrentProjectPath': Result += fSymbols[CPP]; + 'CPR', 'CurrentProjectRoot': Result += fSymbols[CPR]; + end; end; finally elems.Free; end; end; + {$ENDREGION} initialization - symbolExpander := TCESymbolExpander.create; + symbolExpander := TCESymbolExpander.Create; + finalization symbolExpander.Free; end. - diff --git a/src/ce_synmemo.pas b/src/ce_synmemo.pas index 8506cba5..b6b859a0 100644 --- a/src/ce_synmemo.pas +++ b/src/ce_synmemo.pas @@ -338,6 +338,9 @@ begin Gutter.SeparatorPart.MarkupInfo.Foreground := clGray; Gutter.CodeFoldPart.MarkupInfo.Foreground := clGray; BracketMatchColor.Foreground:=clRed; + // + self.BookMarkOptions.GlyphsVisible:= true; + self.BookMarkOptions.BookmarkImages; // MouseLinkColor.Style:= [fsUnderline]; with MouseActions.Add do begin diff --git a/src/ce_todolist.pas b/src/ce_todolist.pas index e2f654ee..a17e020e 100644 --- a/src/ce_todolist.pas +++ b/src/ce_todolist.pas @@ -38,13 +38,13 @@ type fCategory: string; fStatus: string; published - property filename:string read fFile write fFile; - property line: string read fLine write fLine; - property text: string read fText write fText; - property assignee:string read fAssignee write fAssignee; - property category:string read fCategory write fCategory; - property status: string read fStatus write fStatus; - property priority:string read fPriority write fPriority; + property filename: string read fFile write fFile; + property line: string read fLine write fLine; + property Text: string read fText write fText; + property assignee: string read fAssignee write fAssignee; + property category: string read fCategory write fCategory; + property status: string read fStatus write fStatus; + property priority: string read fPriority write fPriority; end; // encapsulates / makes serializable a collection of TODO item. @@ -59,11 +59,11 @@ type // warning, "items" must be kept in sync with... property items: TCollection read fItems write setItems; public - constructor create(AOwner: TComponent); override; - destructor destroy; override; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; // str is the output stream of the tool process. procedure loadFromTxtStream(str: TMemoryStream); - property count: integer read getCount; + property Count: integer read getCount; property item[index: integer]: TTodoItem read getItem; default; end; @@ -108,28 +108,29 @@ type function getContext: TTodoContext; procedure killToolProcess; procedure callToolProcess; - procedure toolTerminated(sender: TObject); - procedure toolOutputData(sender: TObject); - procedure procOutputDbg(sender: TObject); + procedure toolTerminated(Sender: TObject); + procedure toolOutputData(Sender: TObject); + procedure procOutputDbg(Sender: TObject); procedure clearTodoList; procedure fillTodoList; - procedure lstItemsColumnClick(Sender : TObject; Column : TListColumn); - procedure lstItemsCompare(Sender : TObject; item1, item2: TListItem;Data : Integer; var Compare : Integer); - procedure btnRefreshClick(sender: TObject); - procedure filterItems(sender: TObject); + procedure lstItemsColumnClick(Sender: TObject; Column: TListColumn); + procedure lstItemsCompare(Sender: TObject; item1, item2: TListItem; Data: Integer; var Compare: Integer); + procedure btnRefreshClick(Sender: TObject); + procedure filterItems(Sender: TObject); procedure setSingleClick(aValue: boolean); procedure setAutoRefresh(aValue: boolean); protected procedure SetVisible(Value: boolean); override; public - constructor create(aOwner: TComponent); override; - destructor destroy; override; + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; // property singleClickSelect: boolean read fSingleClick write setSingleClick; property autoRefresh: boolean read fAutoRefresh write setAutoRefresh; end; implementation + {$R *.lfm} const @@ -137,13 +138,13 @@ const OptFname = 'todolist.txt'; {$REGION TTodoItems ------------------------------------------------------------} -constructor TTodoItems.create(aOwner: TComponent); +constructor TTodoItems.Create(aOwner: TComponent); begin inherited; fItems := TCollection.Create(TTodoItem); end; -destructor TTodoItems.destroy; +destructor TTodoItems.Destroy; begin fItems.Free; inherited; @@ -156,12 +157,12 @@ end; function TTodoItems.getItem(index: Integer): TTodoItem; begin - result := TTodoItem(fItems.Items[index]); + Result := TTodoItem(fItems.Items[index]); end; function TTodoItems.getCount: integer; begin - result := fItems.Count; + Result := fItems.Count; end; procedure TTodoItems.loadFromTxtStream(str: TMemoryStream); @@ -169,12 +170,13 @@ var bin: TMemoryStream; begin // empty collection ~ length - if str.Size < 50 then exit; + if str.Size < 50 then + exit; // try bin := TMemoryStream.Create; try - str.Position:=0; + str.Position := 0; ObjectTextToBinary(str, bin); bin.Position := 0; bin.ReadComponent(self); @@ -185,10 +187,11 @@ begin fItems.Clear; end; end; + {$ENDREGIOn} {$REGION Standard Comp/Obj -----------------------------------------------------} -constructor TCETodoListWidget.create(aOwner: TComponent); +constructor TCETodoListWidget.Create(aOwner: TComponent); var png: TPortableNetworkGraphic; fname: string; @@ -197,19 +200,19 @@ begin // fToolOutput := TMemoryStream.Create; fOptions := TCETodoOptions.Create(self); - fOptions.autoRefresh := true; + fOptions.autoRefresh := True; fOptions.Name := 'todolistOptions'; // fTodos := TTodoItems.Create(self); lstItems.OnDblClick := @handleListClick; btnRefresh.OnClick := @btnRefreshClick; - lstItems.OnColumnClick:= @lstItemsColumnClick; + lstItems.OnColumnClick := @lstItemsColumnClick; lstItems.OnCompare := @lstItemsCompare; - fAutoRefresh := true; - fSingleClick := false; - mnuAutoRefresh.Checked := true; - lstfilter.OnChange:= @filterItems; - btnGo.OnClick:= @handleListClick; + fAutoRefresh := True; + fSingleClick := False; + mnuAutoRefresh.Checked := True; + lstfilter.OnChange := @filterItems; + btnGo.OnClick := @handleListClick; // png := TPortableNetworkGraphic.Create; try @@ -229,7 +232,7 @@ begin EntitiesConnector.addObserver(self); end; -destructor TCETodoListWidget.destroy; +destructor TCETodoListWidget.Destroy; begin fOptions.saveToFile(getCoeditDocPath + OptFname); killToolProcess; @@ -243,6 +246,7 @@ begin if Value and fAutoRefresh then callToolProcess; end; + {$ENDREGION} {$REGION ICEEditableOptions ----------------------------------------------------} @@ -256,7 +260,8 @@ begin widg.singleClickSelect := fSingleClick; widg.autoRefresh := fAutoRefresh; end - else inherited; + else + inherited; end; procedure TCETodoOptions.Assign(Src: TPersistent); @@ -269,7 +274,8 @@ begin fSingleClick := widg.singleClickSelect; fAutoRefresh := widg.autoRefresh; end - else inherited; + else + inherited; end; function TCETodoListWidget.optionedWantCategory(): string; @@ -290,9 +296,11 @@ end; procedure TCETodoListWidget.optionedEvent(anEvent: TOptionEditorEvent); begin - if anEvent <> oeeAccept then exit; + if anEvent <> oeeAccept then + exit; fOptions.AssignTo(self); end; + {$ENDREGION} {$REGION ICEMultiDocObserver ---------------------------------------------------} @@ -302,7 +310,8 @@ end; procedure TCETodoListWidget.docFocused(aDoc: TCESynMemo); begin - if aDoc = fDoc then exit; + if aDoc = fDoc then + exit; fDoc := aDoc; if Visible and fAutoRefresh then callToolProcess; @@ -314,11 +323,13 @@ end; procedure TCETodoListWidget.docClosing(aDoc: TCESynMemo); begin - if fDoc <> aDoc then exit; + if fDoc <> aDoc then + exit; fDoc := nil; if Visible and fAutoRefresh then callToolProcess; end; + {$ENDREGION} {$REGION ICEProjectObserver ----------------------------------------------------} @@ -329,14 +340,16 @@ end; procedure TCETodoListWidget.projChanged(aProject: TCEProject); begin - if fProj <> aProject then exit; + if fProj <> aProject then + exit; if Visible and fAutoRefresh then callToolProcess; end; procedure TCETodoListWidget.projClosing(aProject: TCEProject); begin - if fProj <> aProject then exit; + if fProj <> aProject then + exit; fProj := nil; if Visible and fAutoRefresh then callToolProcess; @@ -344,7 +357,8 @@ end; procedure TCETodoListWidget.projFocused(aProject: TCEProject); begin - if aProject = fProj then exit; + if aProject = fProj then + exit; fProj := aProject; if Visible and fAutoRefresh then callToolProcess; @@ -353,22 +367,29 @@ end; procedure TCETodoListWidget.projCompiling(aProject: TCEProject); begin end; + {$ENDREGION} {$REGION Todo list things ------------------------------------------------------} function TCETodoListWidget.getContext: TTodoContext; begin - if ((fProj = nil) and (fDoc = nil)) then exit(tcNone); - if ((fProj = nil) and (fDoc <> nil)) then exit(tcFile); - if ((fProj <> nil) and (fDoc = nil)) then exit(tcProject); + if ((fProj = nil) and (fDoc = nil)) then + exit(tcNone); + if ((fProj = nil) and (fDoc <> nil)) then + exit(tcFile); + if ((fProj <> nil) and (fDoc = nil)) then + exit(tcProject); // if fProj.isProjectSource(fDoc.fileName) then - exit(tcProject) else exit(tcFile); + exit(tcProject) + else + exit(tcFile); end; procedure TCETodoListWidget.killToolProcess; begin - if fToolProc = nil then exit; + if fToolProc = nil then + exit; // fToolProc.Terminate(0); fToolProc.Free; @@ -380,9 +401,11 @@ var ctxt: TTodoContext; begin clearTodoList; - if not exeInSysPath(ToolExeName) then exit; + if not exeInSysPath(ToolExeName) then + exit; ctxt := getContext; - if ctxt = tcNone then exit; + if ctxt = tcNone then + exit; // killToolProcess; // process parameter @@ -395,13 +418,15 @@ begin fToolProc.OnReadData := @toolOutputData; // files passed to the tool argument - if ctxt = tcProject then fToolProc.Parameters.AddText(symbolExpander.get('')) - else fToolProc.Parameters.Add(symbolExpander.get('')); + if ctxt = tcProject then + fToolProc.Parameters.AddText(symbolExpander.get('')) + else + fToolProc.Parameters.Add(symbolExpander.get('')); // fToolProc.Execute; end; -procedure TCETodoListWidget.procOutputDbg(sender: TObject); +procedure TCETodoListWidget.procOutputDbg(Sender: TObject); var str: TStringList; msg: string; @@ -412,22 +437,23 @@ begin try processOutputToStrings(fToolProc, str); ctxt := getContext; - for msg in str do case ctxt of - tcNone: fMsgs.message(msg, nil, amcMisc, amkAuto); - tcFile: fMsgs.message(msg, fDoc, amcEdit, amkAuto); - tcProject:fMsgs.message(msg, fProj, amcProj, amkAuto); - end; + for msg in str do + case ctxt of + tcNone: fMsgs.message(msg, nil, amcMisc, amkAuto); + tcFile: fMsgs.message(msg, fDoc, amcEdit, amkAuto); + tcProject: fMsgs.message(msg, fProj, amcProj, amkAuto); + end; finally str.Free; end; end; -procedure TCETodoListWidget.toolOutputData(sender: TObject); +procedure TCETodoListWidget.toolOutputData(Sender: TObject); begin processOutputToStream(fToolProc, fToolOutput); end; -procedure TCETodoListWidget.toolTerminated(sender: TObject); +procedure TCETodoListWidget.toolTerminated(Sender: TObject); begin processOutputToStream(fToolProc, fToolOutput); fToolOutput.Position := 0; @@ -454,46 +480,54 @@ var flt: string; begin lstItems.Clear; - lstItems.Column[1].Visible:=false; - lstItems.Column[2].Visible:=false; - lstItems.Column[3].Visible:=false; - lstItems.Column[4].Visible:=false; + lstItems.Column[1].Visible := False; + lstItems.Column[2].Visible := False; + lstItems.Column[3].Visible := False; + lstItems.Column[4].Visible := False; flt := lstfilter.Text; - for i:= 0 to fTodos.count -1 do begin + for i := 0 to fTodos.Count - 1 do + begin src := fTodos[i]; trg := lstItems.Items.Add; trg.Data := src; - trg.Caption := src.text; + trg.Caption := src.Text; trg.SubItems.Add(src.category); trg.SubItems.Add(src.assignee); trg.SubItems.Add(src.status); trg.SubItems.Add(src.priority); // - if flt <> '' then if flt <> '(filter)' then - if not AnsiContainsText(src.text,flt) then - if not AnsiContainsText(src.category,flt) then - if not AnsiContainsText(src.assignee,flt) then - if not AnsiContainsText(src.status,flt) then - if not AnsiContainsText(src.priority,flt) then - begin - lstItems.Items.Delete(trg.Index); - continue; - end; + if flt <> '' then + if flt <> '(filter)' then + if not AnsiContainsText(src.Text, flt) then + if not AnsiContainsText(src.category, flt) then + if not AnsiContainsText(src.assignee, flt) then + if not AnsiContainsText(src.status, flt) then + if not AnsiContainsText(src.priority, flt) then + begin + lstItems.Items.Delete(trg.Index); + continue; + end; // - if src.category <> '' then lstItems.Column[1].Visible := true; - if src.assignee <> '' then lstItems.Column[2].Visible := true; - if src.status <> '' then lstItems.Column[3].Visible := true; - if src.priority <> '' then lstItems.Column[4].Visible := true; + if src.category <> '' then + lstItems.Column[1].Visible := True; + if src.assignee <> '' then + lstItems.Column[2].Visible := True; + if src.status <> '' then + lstItems.Column[3].Visible := True; + if src.priority <> '' then + lstItems.Column[4].Visible := True; end; end; procedure TCETodoListWidget.handleListClick(Sender: TObject); var - itm : TTodoItem; - fname, ln : string; + itm: TTodoItem; + fname, ln: string; begin - if lstItems.Selected = nil then exit; - if lstItems.Selected.Data = nil then exit; + if lstItems.Selected = nil then + exit; + if lstItems.Selected.Data = nil then + exit; // the collection will be cleared if a file is opened // docFocused->callToolProcess->fTodos....clear // so line and filename must be copied @@ -502,8 +536,9 @@ begin ln := itm.line; getMultiDocHandler.openDocument(fname); // - if fDoc = nil then exit; - fDoc.CaretY := strToInt(ln); + if fDoc = nil then + exit; + fDoc.CaretY := StrToInt(ln); fDoc.SelectLine; end; @@ -513,51 +548,55 @@ begin fOptions.autoRefresh := autoRefresh; end; -procedure TCETodoListWidget.lstItemsColumnClick(Sender : TObject; Column : - TListColumn); +procedure TCETodoListWidget.lstItemsColumnClick(Sender: TObject; Column: TListColumn); var curr: TListItem; begin - if lstItems.Selected = nil then exit; + if lstItems.Selected = nil then + exit; curr := lstItems.Selected; // if lstItems.SortDirection = sdAscending then lstItems.SortDirection := sdDescending - else lstItems.SortDirection := sdAscending; + else + lstItems.SortDirection := sdAscending; lstItems.SortColumn := Column.Index; lstItems.Selected := nil; lstItems.Selected := curr; lstItems.Update; end; -procedure TCETodoListWidget.lstItemsCompare(Sender : TObject; item1, item2: - TListItem;Data : Integer; var Compare : Integer); +procedure TCETodoListWidget.lstItemsCompare(Sender: TObject; item1, item2: TListItem; Data: Integer; var Compare: Integer); var txt1, txt2: string; col: Integer; begin txt1 := ''; txt2 := ''; - col := lstItems.SortColumn; + col := lstItems.SortColumn; if col = 0 then begin txt1 := item1.Caption; txt2 := item2.Caption; - end else + end + else begin - if col < item1.SubItems.Count then txt1 := item1.SubItems.Strings[col]; - if col < item2.SubItems.Count then txt2 := item2.SubItems.Strings[col]; + if col < item1.SubItems.Count then + txt1 := item1.SubItems.Strings[col]; + if col < item2.SubItems.Count then + txt2 := item2.SubItems.Strings[col]; end; Compare := AnsiCompareStr(txt1, txt2); - if lstItems.SortDirection = sdDescending then Compare := -Compare; + if lstItems.SortDirection = sdDescending then + Compare := -Compare; end; -procedure TCETodoListWidget.btnRefreshClick(sender: TObject); +procedure TCETodoListWidget.btnRefreshClick(Sender: TObject); begin callToolProcess; end; -procedure TCETodoListWidget.filterItems(sender: TObject); +procedure TCETodoListWidget.filterItems(Sender: TObject); begin fillTodoList; end; @@ -565,10 +604,12 @@ end; procedure TCETodoListWidget.setSingleClick(aValue: boolean); begin fSingleClick := aValue; - if fSingleClick then begin + if fSingleClick then + begin lstItems.OnClick := @handleListClick; lstItems.OnDblClick := nil; - end else + end + else begin lstItems.OnClick := nil; lstItems.OnDblClick := @handleListClick; @@ -578,10 +619,11 @@ end; procedure TCETodoListWidget.setAutoRefresh(aValue: boolean); begin fAutoRefresh := aValue; - mnuAutoRefresh.Checked:= aValue; - if fAutoRefresh then callToolProcess; + mnuAutoRefresh.Checked := aValue; + if fAutoRefresh then + callToolProcess; end; + {$ENDREGION} end. - diff --git a/src/ce_tools.pas b/src/ce_tools.pas index 4773d8bf..6103c68a 100644 --- a/src/ce_tools.pas +++ b/src/ce_tools.pas @@ -5,7 +5,7 @@ unit ce_tools; interface uses - Classes, SysUtils, FileUtil, process, menus, + Classes, SysUtils, FileUtil, process, Menus, ce_common, ce_writableComponent, ce_interfaces, ce_observer, ce_inspectors; type @@ -28,8 +28,8 @@ type procedure setParameters(aValue: TStringList); procedure setChainBefore(aValue: TStringList); procedure setChainAfter(aValue: TStringList); - procedure processOutput(sender: TObject); - procedure execute; + procedure processOutput(Sender: TObject); + procedure Execute; published property toolAlias: string read fToolAlias write fToolAlias; property options: TProcessOptions read fOpts write fOpts; @@ -43,8 +43,8 @@ type property chainAfter: TStringList read fChainAfter write setChainAfter; property shortcut: TShortcut read fShortcut write fShortcut; public - constructor create(ACollection: TCollection); override; - destructor destroy; override; + constructor Create(ACollection: TCollection); override; + destructor Destroy; override; end; TCETools = class(TWritableLfmTextComponent, ICEMainMenuProvider, ICEEditableShortcut) @@ -56,7 +56,7 @@ type // procedure menuDeclare(item: TMenuItem); procedure menuUpdate(item: TMenuItem); - procedure executeToolFromMenu(sender: TObject); + procedure executeToolFromMenu(Sender: TObject); // function scedWantFirst: boolean; function scedWantNext(out category, identifier: string; out aShortcut: TShortcut): boolean; @@ -64,8 +64,8 @@ type published property tools: TCollection read fTools write setTools; public - constructor create(aOwner: TComponent); override; - destructor destroy; override; + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; // function addTool: TCEToolItem; procedure executeTool(aTool: TCEToolItem); overload; @@ -81,22 +81,22 @@ var implementation uses - ce_symstring, dialogs; + ce_symstring, Dialogs; const toolsFname = 'tools.txt'; {$REGION TCEToolItem -----------------------------------------------------------} -constructor TCEToolItem.create(ACollection: TCollection); +constructor TCEToolItem.Create(ACollection: TCollection); begin inherited; fToolAlias := format('', [ID]); - fParameters := TStringList.create; + fParameters := TStringList.Create; fChainBefore := TStringList.Create; fChainAfter := TStringList.Create; end; -destructor TCEToolItem.destroy; +destructor TCEToolItem.Destroy; begin fParameters.Free; fChainAfter.Free; @@ -130,7 +130,7 @@ begin fChainAfter.Delete(i); end; -procedure TCEToolItem.execute; +procedure TCEToolItem.Execute; var i: Integer; prms: string; @@ -141,8 +141,8 @@ begin getMessageDisplay(fMsgs).clearByContext(amcMisc); // fProcess := TCheckedAsyncProcess.Create(nil); - fProcess.OnReadData:= @processOutput; - fProcess.OnTerminate:= @processOutput; + fProcess.OnReadData := @processOutput; + fProcess.OnTerminate := @processOutput; fProcess.Options := fOpts; fProcess.Executable := symbolExpander.get(fExecutable); fProcess.ShowWindow := fShowWin; @@ -151,14 +151,15 @@ begin begin prms := ''; if InputQuery('Parameters', '', prms) then - if prms <> '' then fProcess.Parameters.DelimitedText := symbolExpander.get(prms); + if prms <> '' then + fProcess.Parameters.DelimitedText := symbolExpander.get(prms); end; - for i:= 0 to fParameters.Count-1 do - fProcess.Parameters.AddText(symbolExpander.get(fParameters.Strings[i])); + for i := 0 to fParameters.Count - 1 do + fProcess.Parameters.AddText(symbolExpander.get(fParameters.Strings[i])); fProcess.Execute; end; -procedure TCEToolItem.processOutput(sender: TObject); +procedure TCEToolItem.processOutput(Sender: TObject); var lst: TStringList; str: string; @@ -173,22 +174,24 @@ begin lst.Free; end; end; + {$ENDREGION --------------------------------------------------------------------} {$REGION Standard Comp/Obj -----------------------------------------------------} -constructor TCETools.create(aOwner: TComponent); +constructor TCETools.Create(aOwner: TComponent); var fname: string; begin inherited; fTools := TCollection.Create(TCEToolItem); fname := getCoeditDocPath + toolsFname; - if fileExists(fname) then loadFromFile(fname); + if fileExists(fname) then + loadFromFile(fname); // EntitiesConnector.addObserver(self); end; -destructor TCETools.destroy; +destructor TCETools.Destroy; begin EntitiesConnector.removeObserver(self); // @@ -197,12 +200,13 @@ begin fTools.Free; inherited; end; + {$ENDREGION} {$REGION ICEMainMenuProvider ---------------------------------------------------} -procedure TCETools.executeToolFromMenu(sender: TObject); +procedure TCETools.executeToolFromMenu(Sender: TObject); begin - executeTool(TCEToolItem(TMenuItem(sender).tag)); + executeTool(TCEToolItem(TMenuItem(Sender).tag)); end; procedure TCETools.menuDeclare(item: TMenuItem); @@ -211,16 +215,17 @@ var itm: TMenuItem; colitm: TCEToolItem; begin - if tools.Count = 0 then exit; + if tools.Count = 0 then + exit; // item.Caption := 'Custom tools'; item.Clear; - for i := 0 to tools.Count-1 do + for i := 0 to tools.Count - 1 do begin colitm := tool[i]; // itm := TMenuItem.Create(item); - itm.ShortCut:= colitm.shortcut; + itm.ShortCut := colitm.shortcut; itm.Caption := colitm.toolAlias; itm.tag := ptrInt(colitm); itm.onClick := @executeToolFromMenu; @@ -234,53 +239,59 @@ var colitm: TCEToolItem; mnuitm: TMenuItem; begin - if item = nil then exit; + if item = nil then + exit; if item.Count <> tools.Count then menuDeclare(item) - else for i:= 0 to tools.Count-1 do - begin - colitm := tool[i]; - mnuitm := item.Items[i]; - // - if mnuitm.Tag <> ptrInt(colitm) then - mnuitm.Tag := ptrInt(colitm); - if mnuitm.Caption <> colitm.toolAlias then - mnuitm.Caption := colitm.toolAlias; - if mnuitm.shortcut <> colitm.shortcut then - mnuitm.shortcut := colitm.shortcut; - end; + else + for i := 0 to tools.Count - 1 do + begin + colitm := tool[i]; + mnuitm := item.Items[i]; + // + if mnuitm.Tag <> ptrInt(colitm) then + mnuitm.Tag := ptrInt(colitm); + if mnuitm.Caption <> colitm.toolAlias then + mnuitm.Caption := colitm.toolAlias; + if mnuitm.shortcut <> colitm.shortcut then + mnuitm.shortcut := colitm.shortcut; + end; end; + {$ENDREGION} {$REGION ICEEditableShortcut ---------------------------------------------------} function TCETools.scedWantFirst: boolean; begin - result := fTools.Count > 0; + Result := fTools.Count > 0; fShctCount := 0; end; function TCETools.scedWantNext(out category, identifier: string; out aShortcut: TShortcut): boolean; begin - category := 'Tools'; - identifier:= tool[fShctCount].toolAlias; + category := 'Tools'; + identifier := tool[fShctCount].toolAlias; aShortcut := tool[fShctCount].shortcut; // fShctCount += 1; - result := fShctCount < fTools.Count; + Result := fShctCount < fTools.Count; end; procedure TCETools.scedSendItem(const category, identifier: string; aShortcut: TShortcut); var i: Integer; begin - if category <> 'Tools' then exit; - // - for i := 0 to tools.Count-1 do if tool[i].toolAlias = identifier then - begin - tool[i].shortcut := aShortcut; - break; - end; + if category <> 'Tools' then + exit; + // + for i := 0 to tools.Count - 1 do + if tool[i].toolAlias = identifier then + begin + tool[i].shortcut := aShortcut; + break; + end; end; + {$ENDREGION} {$REGION Tools things ----------------------------------------------------------} @@ -291,12 +302,12 @@ end; function TCETools.getTool(index: Integer): TCEToolItem; begin - result := TCEToolItem(fTools.Items[index]); + Result := TCEToolItem(fTools.Items[index]); end; function TCETools.addTool: TCEToolItem; begin - result := TCEToolItem(fTools.Add); + Result := TCEToolItem(fTools.Add); end; procedure TCETools.executeTool(aTool: TCEToolItem); @@ -304,7 +315,8 @@ var nme: string; chained: TCollectionItem; begin - if aTool = nil then exit; + if aTool = nil then + exit; if not exeInSysPath(aTool.executable) then if (aTool.chainAfter.Count = 0) and (aTool.chainBefore.Count = 0) then exit; @@ -312,28 +324,32 @@ begin for chained in fTools do if TCEToolItem(chained).toolAlias = nme then if TCEToolItem(chained).toolAlias <> aTool.toolAlias then - TCEToolItem(chained).execute; + TCEToolItem(chained).Execute; if exeInSysPath(aTool.executable) then - aTool.execute; + aTool.Execute; for nme in aTool.chainAfter do for chained in fTools do if TCEToolItem(chained).toolAlias = nme then if TCEToolItem(chained).toolAlias <> aTool.toolAlias then - TCEToolItem(chained).execute; + TCEToolItem(chained).Execute; end; procedure TCETools.executeTool(aToolIndex: Integer); begin - if aToolIndex < 0 then exit; - if aToolIndex > fTools.Count-1 then exit; + if aToolIndex < 0 then + exit; + if aToolIndex > fTools.Count - 1 then + exit; // executeTool(tool[aToolIndex]); end; + {$ENDREGION} initialization RegisterClasses([TCEToolItem, TCETools]); - CustomTools := TCETools.create(nil); + CustomTools := TCETools.Create(nil); + finalization CustomTools.Free; end. diff --git a/src/ce_toolseditor.pas b/src/ce_toolseditor.pas index d5e42efc..396e5f5f 100644 --- a/src/ce_toolseditor.pas +++ b/src/ce_toolseditor.pas @@ -34,18 +34,19 @@ type procedure rebuildToolList; procedure updateToolList; public - constructor create(aOwner: TComponent); override; + constructor Create(aOwner: TComponent); override; end; implementation + {$R *.lfm} -constructor TCEToolsEditorWidget.create(aOwner: TComponent); +constructor TCEToolsEditorWidget.Create(aOwner: TComponent); var png: TPortableNetworkGraphic; begin inherited; - propsEd.CheckboxForBoolean := true; + propsEd.CheckboxForBoolean := True; png := TPortableNetworkGraphic.Create; try png.LoadFromLazarusResource('arrow_up'); @@ -59,7 +60,7 @@ begin png.LoadFromLazarusResource('application_flash'); btnRun.Glyph.Assign(png); finally - png.free; + png.Free; end; rebuildToolList; end; @@ -77,7 +78,7 @@ begin clearInspector; lstTools.Clear; // - for i := 0 to CustomTools.tools.Count-1 do + for i := 0 to CustomTools.tools.Count - 1 do lstTools.AddItem(CustomTools[i].toolAlias, nil); if lstTools.Count > 0 then lstTools.ItemIndex := 0; @@ -87,12 +88,11 @@ procedure TCEToolsEditorWidget.updateToolList; var i: Integer; begin - for i := 0 to CustomTools.tools.Count-1 do + for i := 0 to CustomTools.tools.Count - 1 do lstTools.Items.Strings[i] := CustomTools[i].toolAlias; end; -procedure TCEToolsEditorWidget.lstToolsSelectionChange(Sender: TObject; - User: boolean); +procedure TCEToolsEditorWidget.lstToolsSelectionChange(Sender: TObject; User: boolean); begin if lstTools.ItemIndex = -1 then exit; @@ -124,8 +124,10 @@ end; procedure TCEToolsEditorWidget.btnMoveUpClick(Sender: TObject); begin - if lstTools.ItemIndex = -1 then exit; - if lstTools.ItemIndex = 0 then exit; + if lstTools.ItemIndex = -1 then + exit; + if lstTools.ItemIndex = 0 then + exit; // CustomTools.tools.Exchange(lstTools.ItemIndex, lstTools.ItemIndex - 1); lstTools.ItemIndex := lstTools.ItemIndex - 1; @@ -134,8 +136,10 @@ end; procedure TCEToolsEditorWidget.btnMoveDownClick(Sender: TObject); begin - if lstTools.ItemIndex = -1 then exit; - if lstTools.ItemIndex = lstTools.Items.Count-1 then exit; + if lstTools.ItemIndex = -1 then + exit; + if lstTools.ItemIndex = lstTools.Items.Count - 1 then + exit; // CustomTools.tools.Exchange(lstTools.ItemIndex, lstTools.ItemIndex + 1); lstTools.ItemIndex := lstTools.ItemIndex + 1; @@ -160,4 +164,3 @@ begin end; end. - diff --git a/src/ce_txtsyn.pas b/src/ce_txtsyn.pas index 60d3b33d..34dbb151 100644 --- a/src/ce_txtsyn.pas +++ b/src/ce_txtsyn.pas @@ -12,7 +12,7 @@ type TTokenKind = (tkSym, tkTxt, tkWhi); TSynTxtSyn = class(TSynCustomHighlighter) - private + private fSymAttribs: TSynHighlighterAttributes; fTxtAttribs: TSynHighlighterAttributes; fWhiAttribs: TSynHighlighterAttributes; @@ -30,10 +30,10 @@ type property textAttributes: TSynHighlighterAttributes read fTxtAttribs write setTxtAttribs; property whitAttributes: TSynHighlighterAttributes read fWhiAttribs write setWhiAttribs; public - constructor create(aOwner: TComponent); override; + constructor Create(aOwner: TComponent); override; // procedure setLine(const NewValue: String; LineNumber: Integer); override; - procedure next; override; + procedure Next; override; procedure GetTokenEx(out TokenStart: PChar; out TokenLength: integer); override; function GetTokenAttribute: TSynHighlighterAttributes; override; function GetDefaultAttribute(Index: integer): TSynHighlighterAttributes; override; @@ -45,7 +45,8 @@ type property CurrIdent: string read fCurrIdent write setCurrIdent; end; - const txtSym : TCharSet = [ +const + txtSym: TCharSet = [ '&', '~', '#', '"', #39, '(', '-', ')', '=', '{', '[', '|', '`', '\', '^', '@', ']', '}', '+', '$', '*', '%', @@ -56,10 +57,10 @@ implementation uses Graphics; -constructor TSynTxtSyn.create(aOwner: TComponent); +constructor TSynTxtSyn.Create(aOwner: TComponent); begin inherited; - SetSubComponent(true); + SetSubComponent(True); // fSymAttribs := TSynHighlighterAttributes.Create('Symbols', 'Symbols'); fTxtAttribs := TSynHighlighterAttributes.Create('Text', 'Text'); @@ -99,11 +100,13 @@ end; procedure TSynTxtSyn.setCurrIdent(const aValue: string); begin - if aValue = '' then exit; - if fCurrIdent = aValue then Exit; + if aValue = '' then + exit; + if fCurrIdent = aValue then + Exit; fCurrIdent := aValue; BeginUpdate; - fUpdateChange := true; + fUpdateChange := True; EndUpdate; end; @@ -112,16 +115,17 @@ begin inherited; fLineBuf := NewValue + #10; fTokStop := 1; - next; + Next; end; -procedure TSynTxtSyn.next; +procedure TSynTxtSyn.Next; begin fTokStart := fTokStop; - fTokStop := fTokStart; + fTokStop := fTokStart; // EOL - if fTokStop > length(fLineBuf) then exit; + if fTokStop > length(fLineBuf) then + exit; // spaces if (isWhite(fLineBuf[fTokStop])) then @@ -130,7 +134,8 @@ begin while isWhite(fLineBuf[fTokStop]) do begin Inc(fTokStop); - if fTokStop > length(fLineBuf) then exit; + if fTokStop > length(fLineBuf) then + exit; end; exit; end; @@ -139,10 +144,11 @@ begin if (fLineBuf[fTokStop] in txtSym) then begin fToken := tkSym; - while(fLineBuf[fTokStop] in txtSym) do + while (fLineBuf[fTokStop] in txtSym) do begin Inc(fTokStop); - if fLineBuf[fTokStop] = #10 then exit; + if fLineBuf[fTokStop] = #10 then + exit; end; exit; end; @@ -152,42 +158,45 @@ begin while not ((fLineBuf[fTokStop] in txtSym) or isWhite(fLineBuf[fTokStop])) do begin Inc(fTokStop); - if fLineBuf[fTokStop] = #10 then exit; + if fLineBuf[fTokStop] = #10 then + exit; end; - if fLineBuf[fTokStop] = #10 then exit; + if fLineBuf[fTokStop] = #10 then + exit; end; function TSynTxtSyn.GetEol: Boolean; begin - result := fTokStop > length(fLineBuf); + Result := fTokStop > length(fLineBuf); end; function TSynTxtSyn.GetTokenAttribute: TSynHighlighterAttributes; begin - result := fTokToAttri[fToken]; - result.FrameEdges := sfeNone; + Result := fTokToAttri[fToken]; + Result.FrameEdges := sfeNone; if fCurrIdent <> '' then - if GetToken = fCurrIdent then begin - result.FrameColor := result.Foreground; - result.FrameStyle := slsSolid; - result.FrameEdges := sfeAround; + if GetToken = fCurrIdent then + begin + Result.FrameColor := Result.Foreground; + Result.FrameStyle := slsSolid; + Result.FrameEdges := sfeAround; end; end; function TSynTxtSyn.GetTokenPos: Integer; begin - result := fTokStart - 1; + Result := fTokStart - 1; end; function TSynTxtSyn.GetToken: string; begin - result := copy(fLineBuf, FTokStart, fTokStop - FTokStart); + Result := copy(fLineBuf, FTokStart, fTokStop - FTokStart); end; procedure TSynTxtSyn.GetTokenEx(out TokenStart: PChar; out TokenLength: integer); begin - TokenStart := @fLineBuf[FTokStart]; + TokenStart := @fLineBuf[FTokStart]; TokenLength := fTokStop - FTokStart; end; @@ -197,21 +206,27 @@ var begin Result := SYN_ATTR_IDENTIFIER; a := GetTokenAttribute; - if a = fTxtAttribs then Result := SYN_ATTR_IDENTIFIER else - if a = fWhiAttribs then Result := SYN_ATTR_WHITESPACE else - if a = fSymAttribs then Result := SYN_ATTR_SYMBOL; + if a = fTxtAttribs then + Result := SYN_ATTR_IDENTIFIER + else + if a = fWhiAttribs then + Result := SYN_ATTR_WHITESPACE + else + if a = fSymAttribs then + Result := SYN_ATTR_SYMBOL; end; function TSynTxtSyn.GetDefaultAttribute(Index: integer): TSynHighlighterAttributes; begin case Index of - SYN_ATTR_COMMENT: Result := fTxtAttribs; + SYN_ATTR_COMMENT: Result := fTxtAttribs; SYN_ATTR_IDENTIFIER: Result := fTxtAttribs; - SYN_ATTR_KEYWORD: Result := fTxtAttribs; - SYN_ATTR_STRING: Result := fTxtAttribs; + SYN_ATTR_KEYWORD: Result := fTxtAttribs; + SYN_ATTR_STRING: Result := fTxtAttribs; SYN_ATTR_WHITESPACE: Result := fWhiAttribs; - SYN_ATTR_SYMBOL: Result := fSymAttribs; - else Result := fTxtAttribs; + SYN_ATTR_SYMBOL: Result := fSymAttribs; + else + Result := fTxtAttribs; end; end; diff --git a/src/ce_widget.pas b/src/ce_widget.pas index 731920b5..ce46a848 100644 --- a/src/ce_widget.pas +++ b/src/ce_widget.pas @@ -14,6 +14,7 @@ type * Base type for an UI module. *) PTCEWidget = ^TCEWidget; + TCEWidget = class(TForm, ICEContextualActions, ICESessionOptionsObserver) Content: TPanel; Back: TPanel; @@ -59,8 +60,8 @@ type property updaterByLoopInterval: Integer read fLoopInter write setLoopInt; property updaterByDelayDuration: Integer read fDelayDur write setDelayDur; public - constructor create(aOwner: TComponent); override; - destructor destroy; override; + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; // restarts the wait period to the delayed update event. // if not re-called during 'updaterByDelayDuration' ms then // 'UpdateByDelay' is called once. @@ -108,22 +109,23 @@ type property current: TCEWidget read getCurrent; end; - operator enumerator(aWidgetList: TCEWidgetList): TWidgetEnumerator; +operator enumerator(aWidgetList: TCEWidgetList): TWidgetEnumerator; implementation + {$R *.lfm} uses ce_observer; {$REGION Standard Comp/Obj------------------------------------------------------} -constructor TCEWidget.create(aOwner: TComponent); +constructor TCEWidget.Create(aOwner: TComponent); var i: Integer; itm: TmenuItem; begin inherited; - fDockable := true; + fDockable := True; fUpdaterAuto := TTimer.Create(self); fUpdaterAuto.Interval := 70; fUpdaterAuto.OnTimer := @updaterAutoProc; @@ -132,7 +134,7 @@ begin updaterByLoopInterval := 70; updaterByDelayDuration := 500; - for i := 0 to contextActionCount-1 do + for i := 0 to contextActionCount - 1 do begin itm := TMenuItem.Create(self); itm.Action := contextAction(i); @@ -143,7 +145,7 @@ begin EntitiesConnector.addObserver(self); end; -destructor TCEWidget.destroy; +destructor TCEWidget.Destroy; begin EntitiesConnector.removeObserver(self); inherited; @@ -151,8 +153,10 @@ end; function TCEWidget.getIfModal: boolean; begin - if isDockable then result := false - else result := fModal; + if isDockable then + Result := False + else + Result := fModal; end; {$ENDREGION} @@ -165,8 +169,8 @@ end; procedure TCEWidget.sesoptDeclareProperties(aFiler: TFiler); begin // override rules: inherited must be called. No dots in the property name, property name prefixed with the widget Name - aFiler.DefineProperty(Name + '_updaterByLoopInterval', @optset_LoopInterval, @optget_LoopInterval, true); - aFiler.DefineProperty(Name + '_updaterByDelayDuration', @optset_UpdaterDelay, @optget_UpdaterDelay, true); + aFiler.DefineProperty(Name + '_updaterByLoopInterval', @optset_LoopInterval, @optget_LoopInterval, True); + aFiler.DefineProperty(Name + '_updaterByDelayDuration', @optset_UpdaterDelay, @optget_UpdaterDelay, True); end; procedure TCEWidget.sesoptAfterLoad; @@ -192,45 +196,51 @@ procedure TCEWidget.optset_UpdaterDelay(aReader: TReader); begin updaterByDelayDuration := aReader.ReadInteger; end; + {$ENDREGION} {$REGION ICEContextualActions---------------------------------------------------} function TCEWidget.contextName: string; begin - result := ''; + Result := ''; end; function TCEWidget.contextActionCount: integer; begin - result := 0; + Result := 0; end; function TCEWidget.contextAction(index: integer): TAction; begin - result := nil; + Result := nil; end; + {$ENDREGION} {$REGION Updaters---------------------------------------------------------------} procedure TCEWidget.setDelayDur(aValue: Integer); begin - if aValue < 100 then aValue := 100; - if fDelayDur = aValue then exit; + if aValue < 100 then + aValue := 100; + if fDelayDur = aValue then + exit; fDelayDur := aValue; fUpdaterDelay.Interval := fDelayDur; end; procedure TCEWidget.setLoopInt(aValue: Integer); begin - if aValue < 30 then aValue := 30; - if fLoopInter = aValue then exit; + if aValue < 30 then + aValue := 30; + if fLoopInter = aValue then + exit; fLoopInter := aValue; fUpdaterAuto.Interval := fLoopInter; end; procedure TCEWidget.IncLoopUpdate; begin - inc(fLoopUpdateCount); + Inc(fLoopUpdateCount); end; procedure TCEWidget.beginImperativeUpdate; @@ -241,25 +251,26 @@ end; procedure TCEWidget.endImperativeUpdate; begin Dec(fImperativeUpdateCount); - if fImperativeUpdateCount > 0 then exit; - fUpdating := true; + if fImperativeUpdateCount > 0 then + exit; + fUpdating := True; updateImperative; - fUpdating := false; + fUpdating := False; fImperativeUpdateCount := 0; end; procedure TCEWidget.forceImperativeUpdate; begin - fUpdating := true; + fUpdating := True; updateImperative; - fUpdating := false; + fUpdating := False; fImperativeUpdateCount := 0; end; procedure TCEWidget.beginDelayedUpdate; begin - fUpdaterDelay.Enabled := false; - fUpdaterDelay.Enabled := true; + fUpdaterDelay.Enabled := False; + fUpdaterDelay.Enabled := True; fUpdaterDelay.OnTimer := @updaterLatchProc; end; @@ -275,18 +286,18 @@ end; procedure TCEWidget.updaterAutoProc(Sender: TObject); begin - fUpdating := true; + fUpdating := True; if fLoopUpdateCount > 0 then - updateLoop; + updateLoop; fLoopUpdateCount := 0; - fUpdating := false; + fUpdating := False; end; procedure TCEWidget.updaterLatchProc(Sender: TObject); begin - fUpdating := true; + fUpdating := True; updateDelayed; - fUpdating := false; + fUpdating := False; fUpdaterDelay.OnTimer := nil; end; @@ -301,12 +312,13 @@ end; procedure TCEWidget.updateDelayed; begin end; + {$ENDREGION} {$REGION TCEWidgetList----------------------------------------------------------} function TCEWidgetList.getWidget(index: integer): TCEWidget; begin - result := PTCEWidget(Items[index])^; + Result := PTCEWidget(Items[index])^; end; procedure TCEWidgetList.addWidget(aValue: PTCEWidget); @@ -314,23 +326,24 @@ begin add(Pointer(aValue)); end; -function TWidgetEnumerator.getCurrent:TCEWidget; +function TWidgetEnumerator.getCurrent: TCEWidget; begin - result := fList.widget[fIndex]; + Result := fList.widget[fIndex]; end; function TWidgetEnumerator.moveNext: boolean; begin Inc(fIndex); - result := fIndex < fList.Count; + Result := fIndex < fList.Count; end; operator enumerator(aWidgetList: TCEWidgetList): TWidgetEnumerator; begin - result := TWidgetEnumerator.Create; - result.fList := aWidgetList; - result.fIndex := -1; + Result := TWidgetEnumerator.Create; + Result.fList := aWidgetList; + Result.fIndex := -1; end; + {$ENDREGION} end. diff --git a/src/ce_writablecomponent.pas b/src/ce_writablecomponent.pas index 58f84c63..c552a9a6 100644 --- a/src/ce_writablecomponent.pas +++ b/src/ce_writablecomponent.pas @@ -48,10 +48,8 @@ type protected procedure customLoadFromFile(const aFilename: string); override; procedure customSaveToFile(const aFilename: string); override; - procedure readerPropNoFound(Reader: TReader; Instance: TPersistent; - var PropName: string; IsPath: boolean; var Handled, Skip: Boolean); virtual; - procedure readerError(Reader: TReader; const Message: string; - var Handled: Boolean); virtual; + procedure readerPropNoFound(Reader: TReader; Instance: TPersistent; var PropName: string; IsPath: boolean; var Handled, Skip: Boolean); virtual; + procedure readerError(Reader: TReader; const Message: string; var Handled: Boolean); virtual; end; (** @@ -61,10 +59,8 @@ type *) TWritableJsonComponent = class(TCustomWritableComponent) protected - procedure propertyError(Sender : TObject; AObject : TObject; Info : PPropInfo; - AValue : TJSONData; Error : Exception; Var doContinue : Boolean); virtual; - procedure restoreProperty(Sender : TObject; AObject : TObject; Info : PPropInfo; - AValue : TJSONData; Var Handled : Boolean); virtual; + procedure propertyError(Sender: TObject; AObject: TObject; Info: PPropInfo; AValue: TJSONData; Error: Exception; Var doContinue: Boolean); virtual; + procedure restoreProperty(Sender: TObject; AObject: TObject; Info: PPropInfo; AValue: TJSONData; Var Handled: Boolean); virtual; procedure customLoadFromFile(const aFilename: string); override; procedure customSaveToFile(const aFilename: string); override; end; @@ -95,12 +91,12 @@ end; procedure TCustomWritableComponent.saveToFile(const aFilename: string); begin - fHasSaved := true; + fHasSaved := True; beforeSave; try customSaveToFile(aFilename); except - fHasSaved := false; + fHasSaved := False; end; setFilename(aFilename); afterSave; @@ -108,12 +104,13 @@ end; procedure TCustomWritableComponent.loadFromFile(const aFilename: string); begin - fHasLoaded := true; + fHasLoaded := True; beforeLoad; setFilename(aFilename); customLoadFromFile(aFilename); afterLoad; end; + {$ENDREGION} {$REGION TWritableLfmTextComponent ---------------------------------------------} @@ -127,32 +124,29 @@ begin loadCompFromTxtFile(self, aFilename, @readerPropNoFound, @readerError); end; -procedure TWritableLfmTextComponent.readerPropNoFound(Reader: TReader; Instance: TPersistent; - var PropName: string; IsPath: boolean; var Handled, Skip: Boolean); +procedure TWritableLfmTextComponent.readerPropNoFound(Reader: TReader; Instance: TPersistent; var PropName: string; IsPath: boolean; var Handled, Skip: Boolean); begin - Handled := true; - Skip := true; + Handled := True; + Skip := True; end; -procedure TWritableLfmTextComponent.readerError(Reader: TReader; const Message: string; - var Handled: Boolean); +procedure TWritableLfmTextComponent.readerError(Reader: TReader; const Message: string; var Handled: Boolean); begin - Handled := true; - fHasLoaded := false; + Handled := True; + fHasLoaded := False; end; + {$ENDREGION} {$REGION TWritableJsonComponent ------------------------------------------------} -procedure TWritableJsonComponent.propertyError(Sender : TObject; AObject : TObject; Info : PPropInfo; - AValue : TJSONData; Error : Exception; Var doContinue : Boolean); +procedure TWritableJsonComponent.propertyError(Sender: TObject; AObject: TObject; Info: PPropInfo; AValue: TJSONData; Error: Exception; Var doContinue: Boolean); begin - doContinue := true; + doContinue := True; end; -procedure TWritableJsonComponent.restoreProperty(Sender : TObject; AObject : TObject; Info : PPropInfo; - AValue : TJSONData; Var Handled : Boolean); +procedure TWritableJsonComponent.restoreProperty(Sender: TObject; AObject: TObject; Info: PPropInfo; AValue: TJSONData; Var Handled: Boolean); begin - Handled := true; + Handled := True; end; procedure TWritableJsonComponent.customSaveToFile(const aFilename: string); @@ -182,7 +176,7 @@ begin file_str := TMemoryStream.Create; json_str := TJSONDeStreamer.Create(nil); try - json_str.OnPropertyError:= @propertyError; + json_str.OnPropertyError := @propertyError; json_str.OnRestoreProperty := @restoreProperty; file_str.LoadFromFile(aFilename); setLength(json_dat, file_str.Size); @@ -193,6 +187,7 @@ begin json_str.Free; end; end; + {$ENDREGION} initialization