diff --git a/lazproj/coedit.lpi b/lazproj/coedit.lpi index a4fdb8cb..ec0441ed 100644 --- a/lazproj/coedit.lpi +++ b/lazproj/coedit.lpi @@ -55,7 +55,7 @@ +//-dUSE_DICT_LINKEDCHARMAP"/> @@ -97,7 +97,7 @@ +//-dUSE_DICT_LINKEDCHARMAP"/> @@ -252,7 +252,6 @@ - diff --git a/src/ce_common.pas b/src/ce_common.pas index 20f8329c..faeb17cc 100644 --- a/src/ce_common.pas +++ b/src/ce_common.pas @@ -71,6 +71,11 @@ type *) function dlgOkCancel(const aMsg: string): TModalResult; + (** + * Info dialog + *) + function dlgOkInfo(const aMsg: string): TModalResult; + (** * Returns an unique object identifier, based on its heap address. *) @@ -272,6 +277,13 @@ begin exit( MessageDlg('Coedit', aMsg, mtConfirmation, Btns, '')); end; +function dlgOkInfo(const aMsg: string): TModalResult; +const + Btns = [mbOK]; +begin + exit( MessageDlg('Coedit', aMsg, mtInformation, Btns, '')); +end; + function uniqueObjStr(const aObject: Tobject): string; begin {$HINTS OFF}{$WARNINGS OFF} diff --git a/src/ce_d2syn.pas b/src/ce_d2syn.pas index 421aa2fb..f1cf0885 100644 --- a/src/ce_d2syn.pas +++ b/src/ce_d2syn.pas @@ -70,11 +70,11 @@ type private fLongest, fShortest: NativeInt; fEntries: array[Byte] of TD2DictionaryEntry; - function toHash(const aValue: string): Byte; + function toHash(const aValue: string): Byte; {$IFNDEF DEBUG}inline;{$ENDIF} procedure addEntry(const aValue: string); public constructor create; - destructor destroy; + destructor destroy; // do not remove even if empty (compat with char-map version) function find(const aValue: string): boolean; end; {$ENDIF} @@ -356,7 +356,6 @@ begin end; {$ENDIF} - constructor TSynD2Syn.create(aOwner: TComponent); begin inherited create(aOwner); diff --git a/src/ce_editor.pas b/src/ce_editor.pas index aa372125..1396595f 100644 --- a/src/ce_editor.pas +++ b/src/ce_editor.pas @@ -5,7 +5,7 @@ unit ce_editor; interface uses - Classes, SysUtils, FileUtil, ExtendedNotebook, Forms, Controls, + Classes, SysUtils, FileUtil, ExtendedNotebook, Forms, Controls, lcltype, Graphics, SynEditKeyCmds, ComCtrls, SynEditHighlighter, ExtCtrls, Menus, SynEditHighlighterFoldBase, SynMacroRecorder, SynPluginSyncroEdit, SynEdit, SynHighlighterLFM, ce_widget, ce_d2syn, ce_synmemo, ce_common; @@ -26,6 +26,7 @@ type fKeyChanged: boolean; fSyncEdit: TSynPluginSyncroEdit; procedure memoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure memoKeyPress(Sender: TObject; var Key: Char); procedure memoMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure memoChange(Sender: TObject); procedure memoMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); @@ -136,6 +137,7 @@ begin memo.OnMouseDown := @memoMouseDown; memo.OnChange := @memoChange; memo.OnMouseMove := @memoMouseMove; + memo.OnKeyPress := @memoKeyPress; // pageControl.ActivePage := sheet; //http://bugs.freepascal.org/view.php?id=26320 @@ -154,9 +156,18 @@ begin end; procedure TCEEditorWidget.memoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); +begin +end; + +procedure TCEEditorWidget.memoKeyPress(Sender: TObject; var Key: Char); begin if (sender is TCESynMemo) then identifierToD2Syn(TCESynMemo(Sender)); + case Byte(Key) of + VK_UNKNOWN..VK_BACK: exit; + VK_PRIOR..VK_HELP: exit; + VK_F1..$91: exit; + end; fKeyChanged := true; beginUpdateByDelay; end; diff --git a/src/ce_main.lfm b/src/ce_main.lfm index fd68f0d9..f053778d 100644 --- a/src/ce_main.lfm +++ b/src/ce_main.lfm @@ -1,7 +1,7 @@ object CEMainForm: TCEMainForm - Left = 1158 + Left = 1152 Height = 53 - Top = 0 + Top = 23 Width = 745 AllowDropFiles = True Caption = 'Coedit' @@ -9,6 +9,7 @@ object CEMainForm: TCEMainForm DockSite = True Menu = mainMenu OnDropFiles = FormDropFiles + OnResize = FormResize OnShow = FormShow Position = poMainFormCenter ShowHint = True @@ -622,9 +623,81 @@ object CEMainForm: TCEMainForm end object MenuItem54: TMenuItem Action = actEdIndent + Bitmap.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000000000000000 + 0033000000330000003300000033000000330000003300000033000000330000 + 0033000000330000003300000033000000330000003300000000979797C0A2A2 + A2FFA0A0A0FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1A1FFA0A0 + A0FF9F9F9FFF9F9F9FFF9F9F9FFF9F9F9FFFA2A2A2FF979797C0A2A2A2FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2A2A2FF9F9F9FFFFFFF + FFFFFFFFFFFF444240FF5D5A58FF6F6D6AFF73706EFF605E5BFF484645FFFFFF + FFFFFFFFFFFFFEFEFFFFFEFEFEFFFEFEFEFFFFFFFFFF9F9F9FFF9F9F9FFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFCFCFFFFFFFFFF9F9F9FFF9F9F9FFFFFFF + FFFFFEFEFEFF413F3EFF53514FFF5D5B5AFF686663FF72706EFF767471FF6A67 + 66FF5F5D5CFF555250FF434140FFFEFEFEFFFFFFFFFF9F9F9FFF9F9F9FFFFFFF + FFFFF8F8F8FFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFBFFFFFFFFFF9F9F9FFF9F9F9FFFFFFF + FFFFF3F3F3FFF5F9FDFFD19047FFF3F5F7FFF7F9FCFFFEFEFDFF4F4D4BFF6B69 + 68FF7F7D7BFF706D6DFF54514FFFFCFBFAFFFFFFFFFF9F9F9FFF9F9F9FFFFFFF + FFFFEFF2F4FFF2FBFFFFD2862EFFD48D3AFFEEE4DAFFFAFDFEFF504E4CFF6B69 + 68FF807E7BFF706E6DFF54524FFFF8F8F7FFFFFFFFFF9F9F9FFF9F9F9FFFFFFF + FFFFEDF0F3FFDA8828FFDE943BFFDE933AFFDF9945FFF6F8FCFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFEFDFFF4F2F1FFFFFFFFFF9F9F9FFF9F9F9FFFFFFF + FFFFEAECEEFFECF5FEFFD4872FFFD79549FFEAE0D4FFF4F7F9FF504E4CFF6C69 + 69FF807E7CFF706E6DFF555250FFF2F3F2FFFFFFFFFF9F9F9FFF9F9F9FFFFFFF + FFFFE8E8E8FFEBEEF2FFD18F47FFEBEAECFFECEEF1FFF3F2F3FF514F4DFF6C6A + 69FF817E7CFF716F6EFF555351FFF0EFEEFFFFFFFFFF9F9F9FFF9F9F9FFFFFFF + FFFFE7E7E6FFECEEEFFFEFF3F5FFEFF1F2FFEEEFEFFFF0F1F0FFF6F6F5FFF8F9 + F8FFF9FAF9FFF9FAF9FFF5F5F4FFEAEAE9FFFFFFFFFF9F9F9FFFA0A0A0FFFFFF + FFFFE6E5E4FF42403FFF53514FFF5D5B5AFF696664FF73706EFF767472FF6B69 + 68FF615F5EFF575552FF464342FFE7E6E4FFFFFFFFFFA0A0A0FFA2A2A2FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2A2A2FFA5A5A5EFA2A2 + A2FFA0A0A0FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1 + A1FFA1A1A1FFA1A1A1FFA1A1A1FFA0A0A0FFA2A2A2FFA5A5A5EF + } end object MenuItem53: TMenuItem Action = actEdUnIndent + Bitmap.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000000000000000 + 0033000000330000003300000033000000330000003300000033000000330000 + 0033000000330000003300000033000000330000003300000000979797C0A2A2 + A2FFA0A0A0FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1A1FFA0A0 + A0FF9F9F9FFF9F9F9FFF9F9F9FFF9F9F9FFFA2A2A2FF979797C0A2A2A2FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2A2A2FF9F9F9FFFFFFF + FFFFFFFFFFFF444240FF5D5A58FF6F6D6AFF73706EFF605E5BFF484645FFFFFF + FFFFFFFFFFFFFEFEFFFFFEFEFEFFFEFEFEFFFFFFFFFF9F9F9FFF9F9F9FFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFCFCFFFFFFFFFF9F9F9FFF9F9F9FFFFFFF + FFFFFEFEFEFF413E3DFF52504EFF5D5B5BFF686664FF72706EFF767471FF6A67 + 66FF5F5D5CFF555250FF434140FFFEFEFEFFFFFFFFFF9F9F9FFF9F9F9FFFFFFF + FFFFF8F8F7FFFDFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFBFFFFFFFFFF9F9F9FFF9F9F9FFFFFFF + FFFFF3F3F2FFF5F7F9FFF3F5F7FFD19047FFF8FBFFFFFEFEFEFF4F4D4AFF6B69 + 68FF7F7D7BFF706D6DFF54514FFFFCFBFAFFFFFFFFFF9F9F9FFF9F9F9FFFFFFF + FFFFEFF2F4FFECE3D8FFD48D3AFFD2862EFFF4FCFFFFFAFCFEFF504E4CFF6B69 + 68FF807E7BFF706E6DFF54524FFFF8F8F7FFFFFFFFFF9F9F9FFF9F9F9FFFFFFF + FFFFEDF0F3FFDE9743FFDE933AFFDE943BFFDB8A29FFF6F8FCFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFEFDFFF4F2F1FFFFFFFFFF9F9F9FFF9F9F9FFFFFFF + FFFFEAECEEFFE7DFD2FFD79549FFD4872FFFEEF7FFFFF4F7F9FF504E4CFF6C69 + 69FF807E7CFF706E6DFF555250FFF2F3F2FFFFFFFFFF9F9F9FFF9F9F9FFFFFFF + FFFFE8E7E7FFEAECEFFFEBEAECFFD18F47FFEDF0F4FFF3F3F3FF514F4CFF6C6A + 69FF817E7CFF716F6EFF555351FFF0EFEEFFFFFFFFFF9F9F9FFF9F9F9FFFFFFF + FFFFE7E7E6FFECEDEDFFEFF1F2FFEFF2F5FFEEF0F1FFF0F1F1FFF6F6F5FFF8F9 + F8FFF9FAF9FFF9FAF9FFF5F5F4FFEAEAE9FFFFFFFFFF9F9F9FFFA0A0A0FFFFFF + FFFFE6E5E4FF42403FFF53514EFF5D5B5BFF696664FF73706EFF767472FF6B69 + 68FF615F5EFF575552FF464342FFE7E6E4FFFFFFFFFFA0A0A0FFA2A2A2FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2A2A2FFA5A5A5EFA2A2 + A2FFA0A0A0FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1A1FFA1A1 + A1FFA1A1A1FFA1A1A1FFA1A1A1FFA0A0A0FFA2A2A2FFA5A5A5EF + } end object MenuItem52: TMenuItem Caption = '-' diff --git a/src/ce_main.pas b/src/ce_main.pas index ce9aa953..90390c07 100644 --- a/src/ce_main.pas +++ b/src/ce_main.pas @@ -139,6 +139,7 @@ type procedure actProjSourceExecute(Sender: TObject); procedure actEdUnIndentExecute(Sender: TObject); procedure FormDropFiles(Sender: TObject; const FileNames: array of String); + procedure FormResize(Sender: TObject); procedure FormShow(Sender: TObject); private fUpdateCount: NativeInt; @@ -240,18 +241,23 @@ begin mnuItemWin.Add(itm); end; - newProj; - Height := 0; - DockMaster.MakeDockSite(Self, [akBottom], admrpChild, false); + DockMaster.MakeDockSite(Self, [akBottom], admrpChild, true); DockMaster.OnShowOptions := @ShowAnchorDockOptions; DockMaster.HeaderStyle := adhsPoints; DockMaster.ManualDock(DockMaster.GetAnchorSite(fEditWidg), Self, alBottom); DockMaster.ManualDock(DockMaster.GetAnchorSite(fMesgWidg), Self, alBottom); DockMaster.ManualDock(DockMaster.GetAnchorSite(fStExpWidg), Self, alLeft); + DockMaster.ManualDock(DockMaster.GetAnchorSite(fFindWidg), + DockMaster.GetAnchorSite(fStExpWidg), alBottom, fStExpWidg); width := width - fProjWidg.Width; DockMaster.ManualDock(DockMaster.GetAnchorSite(fProjWidg), Self, alRight); + DockMaster.ManualDock(DockMaster.GetAnchorSite(fPrjCfWidg), + DockMaster.GetAnchorSite(fProjWidg), alBottom, fProjWidg); DockMaster.GetAnchorSite(fEditWidg).Header.HeaderPosition := adlhpTop; + + newProj; + end; destructor TCEMainForm.destroy; @@ -367,6 +373,10 @@ end; procedure TCEMainForm.FormShow(Sender: TObject); begin end; + +procedure TCEMainForm.FormResize(Sender: TObject); +begin +end; {$ENDREGION} {$REGION file ******************************************************************} @@ -504,16 +514,16 @@ procedure TCEMainForm.actFileNewRunExecute(Sender: TObject); begin newFile; fEditWidg.currentEditor.Text := - 'module runnable;' + #13#10 + - '' + #13#10 + - 'import std.stdio;' + #13#10 + - '' + #13#10 + - 'void main(string args[])' + #13#10 + - '{' + #13#10 + - ' writeln("runnable module is just a `toy feature`");' + #13#10 + - ' writeln;' + #13#10 + - ' writeln("coedit just saves a temporary d module before compiling it and running it...");' + #13#10 + - '}' + #13#10; + 'module runnable;' + LineEnding + + '' + LineEnding + + 'import std.stdio;' + LineEnding + + '' + LineEnding + + 'void main(string args[])' + LineEnding + + '{' + LineEnding + + ' writeln("this is just a `toy feature`");' + LineEnding + + ' writeln;' + LineEnding + + ' writeln("coedit saves a temp d module before compiling it and running it...");' + LineEnding + + '}' + LineEnding; end; procedure TCEMainForm.actFileSaveAsExecute(Sender: TObject); @@ -553,7 +563,8 @@ begin then exit; // str := fEditWidg.editor[fEditWidg.editorIndex].fileName; - fProject.addSource(str); + if fileExists(str) then fProject.addSource(str) + else dlgOkInfo('the file has not been added to the project because it does not exist'); end; procedure TCEMainForm.actFileCloseExecute(Sender: TObject); diff --git a/src/ce_messages.lfm b/src/ce_messages.lfm index 32f63cdf..e3828437 100644 --- a/src/ce_messages.lfm +++ b/src/ce_messages.lfm @@ -1,5 +1,5 @@ inherited CEMessagesWidget: TCEMessagesWidget - Left = 1160 + Left = 1143 Height = 172 Top = 511 Width = 744 @@ -30,9 +30,15 @@ inherited CEMessagesWidget: TCEMessagesWidget item Width = 736 end> + Font.CharSet = ANSI_CHARSET + Font.Height = -12 + Font.Name = 'Lucida Console' + Font.Pitch = fpFixed + Font.Quality = fqDraft HideSelection = False IconOptions.WrapText = False MultiSelect = True + ParentFont = False ReadOnly = True ShowColumnHeaders = False SmallImages = imgList diff --git a/src/ce_projconf.lfm b/src/ce_projconf.lfm index c7cb2518..1b271e5a 100644 --- a/src/ce_projconf.lfm +++ b/src/ce_projconf.lfm @@ -1,27 +1,27 @@ inherited CEProjectConfigurationWidget: TCEProjectConfigurationWidget - Left = 1160 + Left = 1323 Height = 277 - Top = 722 - Width = 463 + Top = 600 + Width = 450 Caption = 'Project configuration' ClientHeight = 277 - ClientWidth = 463 + ClientWidth = 450 inherited Back: TPanel Height = 277 - Width = 463 + Width = 450 ClientHeight = 277 - ClientWidth = 463 + ClientWidth = 450 inherited Content: TPanel Height = 277 - Width = 463 + Width = 450 ClientHeight = 277 - ClientWidth = 463 + ClientWidth = 450 object Tree: TTreeView[0] Left = 4 Height = 243 Hint = 'filter configuration elements' Top = 30 - Width = 150 + Width = 125 Align = alLeft AutoExpand = True BorderSpacing.Left = 4 @@ -53,19 +53,19 @@ inherited CEProjectConfigurationWidget: TCEProjectConfigurationWidget Left = 2 Height = 24 Top = 2 - Width = 459 + Width = 446 Align = alTop BorderSpacing.Around = 2 BevelOuter = bvNone ClientHeight = 24 - ClientWidth = 459 + ClientWidth = 446 TabOrder = 1 object selConf: TComboBox Left = 0 Height = 23 Hint = 'select a configuration' Top = 1 - Width = 368 + Width = 355 Align = alClient BorderSpacing.Top = 1 BorderSpacing.Right = 1 @@ -75,7 +75,7 @@ inherited CEProjectConfigurationWidget: TCEProjectConfigurationWidget TabOrder = 0 end object btnAddConf: TSpeedButton - Left = 369 + Left = 356 Height = 24 Hint = 'add an empty configuration' Top = 0 @@ -121,7 +121,7 @@ inherited CEProjectConfigurationWidget: TCEProjectConfigurationWidget ShowCaption = False end object btnDelConf: TSpeedButton - Left = 399 + Left = 386 Height = 24 Hint = 'remove selected configuration' Top = 0 @@ -167,7 +167,7 @@ inherited CEProjectConfigurationWidget: TCEProjectConfigurationWidget ShowCaption = False end object btnCloneConf: TSpeedButton - Left = 429 + Left = 416 Height = 24 Hint = 'clone selected configuration' Top = 0 @@ -214,16 +214,16 @@ inherited CEProjectConfigurationWidget: TCEProjectConfigurationWidget end end object Splitter1: TSplitter[2] - Left = 154 + Left = 129 Height = 249 Top = 28 Width = 5 end object Grid: TTIPropertyGrid[3] - Left = 159 + Left = 134 Height = 243 Top = 30 - Width = 300 + Width = 312 Align = alClient BorderSpacing.Top = 4 BorderSpacing.Right = 4 diff --git a/src/ce_search.pas b/src/ce_search.pas index 22ece626..779d9eff 100644 --- a/src/ce_search.pas +++ b/src/ce_search.pas @@ -53,6 +53,10 @@ type // procedure docFocused(const aDoc: TCESynMemo); override; procedure docClose(const aDoc: TCESynMemo); override; + // + function contextName: string; override; + function contextActionCount: integer; override; + function contextAction(index: integer): TAction; override; end; implementation @@ -99,6 +103,26 @@ begin UpdateByEvent; end; +function TCESearchWidget.contextName: string; +begin + exit('Seach'); +end; + +function TCESearchWidget.contextActionCount: integer; +begin + exit(3); +end; + +function TCESearchWidget.contextAction(index: integer): TAction; +begin + case index of + 0: exit(fActFindNext); + 1: exit(fActReplaceNext); + 2: exit(fActReplaceAll); + else exit(nil); + end; +end; + procedure TCESearchWidget.cbToFindChange(Sender: TObject); begin if Updating then exit; @@ -134,7 +158,8 @@ begin if not chkFromCur.Checked then if chkBack.Checked then fEditor.CaretXY := Point(high(Integer), high(Integer)) else fEditor.CaretXY := Point(0,0); - fEditor.SearchReplace(fToFind, '', getOptions); + if fEditor.SearchReplace(fToFind, '', getOptions) = 0 then + dlgOkInfo('the expression cannot be found'); UpdateByEvent; end; diff --git a/src/ce_staticexplorer.lfm b/src/ce_staticexplorer.lfm index 6dd5d9c2..3f0127b2 100644 --- a/src/ce_staticexplorer.lfm +++ b/src/ce_staticexplorer.lfm @@ -1,7 +1,7 @@ inherited CEStaticExplorerWidget: TCEStaticExplorerWidget - Left = 1640 + Left = 999 Height = 276 - Top = 721 + Top = 284 Width = 261 Caption = 'Static explorer' ClientHeight = 276 @@ -37,17 +37,18 @@ inherited CEStaticExplorerWidget: TCEStaticExplorerWidget OnKeyPress = TreeKeyPress Options = [tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoReadOnly, tvoRowSelect, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw] Items.Data = { - F9FFFFFF020009000000000000000000000000000000FFFFFFFF000000000000 + F9FFFFFF02000A000000000000000000000000000000FFFFFFFF000000000000 00000005000000416C6961730100000001000000FFFFFFFFFFFFFFFF00000000 000000000007000000436C6173736573020000000200000002000000FFFFFFFF 00000000000000000005000000456E756D730300000003000000FFFFFFFFFFFF FFFF0000000000000000000800000046756E6374696F6E0400000004000000FF FFFFFFFFFFFFFF00000000000000000007000000496D706F7274730500000005 - 000000FFFFFFFFFFFFFFFF000000000000000000050000004D6978696E060000 - 0006000000FFFFFFFFFFFFFFFF00000000000000000007000000537472756374 - 730700000007000000FFFFFFFFFFFFFFFF000000000000000000090000005465 - 6D706C617465730800000008000000FFFFFFFFFFFFFFFF000000000000000000 - 080000005661726961626C65 + 000000FFFFFFFFFFFFFFFF00000000000000000009000000496E746572666163 + 650600000006000000FFFFFFFFFFFFFFFF000000000000000000050000004D69 + 78696E0700000007000000FFFFFFFFFFFFFFFF00000000000000000007000000 + 537472756374730800000008000000FFFFFFFFFFFFFFFF000000000000000000 + 0900000054656D706C617465730000000000000000FFFFFFFFFFFFFFFF000000 + 000000000000080000005661726961626C65 } TreeLineColor = 14671839 TreeLinePenStyle = psSolid diff --git a/src/ce_staticexplorer.pas b/src/ce_staticexplorer.pas index b59718ee..6d7d8d14 100644 --- a/src/ce_staticexplorer.pas +++ b/src/ce_staticexplorer.pas @@ -27,7 +27,7 @@ type fProj: TCEProject; fAutoRefresh: boolean; ndAlias, ndClass, ndEnum, ndFunc: TTreeNode; - ndImp, ndMix, ndStruct, ndTmp, ndVar: TTreeNode; + ndImp, ndIntf, ndMix, ndStruct, ndTmp, ndVar: TTreeNode; procedure Rescan; procedure TreeDblClick(Sender: TObject); procedure actRefreshExecute(Sender: TObject); @@ -39,7 +39,6 @@ type public constructor create(aOwner: TComponent); override; // - procedure docNew(const aDoc: TCESynMemo); override; procedure docFocused(const aDoc: TCESynMemo); override; procedure docChanged(const aDoc: TCESynMemo); override; procedure docClose(const aDoc: TCESynMemo); override; @@ -79,10 +78,11 @@ begin ndEnum := Tree.Items[2]; ndFunc := Tree.Items[3]; ndImp := Tree.Items[4]; - ndMix := Tree.Items[5]; - ndStruct := Tree.Items[6]; - ndTmp := Tree.Items[7]; - ndVar := Tree.Items[8]; + ndIntf := Tree.Items[5]; + ndMix := Tree.Items[6]; + ndStruct := Tree.Items[7]; + ndTmp := Tree.Items[8]; + ndVar := Tree.Items[9]; // Tree.OnDblClick := @TreeDblClick; Tree.PopupMenu := contextMenu; @@ -134,10 +134,6 @@ begin fProj := nil; end; -procedure TCEStaticExplorerWidget.docNew(const aDoc: TCESynMemo); -begin -end; - procedure TCEStaticExplorerWidget.docFocused(const aDoc: TCESynMemo); begin fDoc := aDoc; @@ -209,11 +205,23 @@ begin ndEnum.DeleteChildren; ndFunc.DeleteChildren; ndImp.DeleteChildren; + ndIntf.DeleteChildren; ndMix.DeleteChildren; ndStruct.DeleteChildren; ndTmp.DeleteChildren; ndVar.DeleteChildren; + ndAlias.Visible := false; + ndClass.Visible := false; + ndEnum.Visible := false; + ndFunc.Visible := false; + ndImp.Visible := false; + ndIntf.Visible := false; + ndMix.Visible := false; + ndStruct.Visible := false; + ndTmp.Visible := false; + ndVar.Visible := false; + if fDoc = nil then exit; if fDoc.Lines.Count = 0 then exit; subMemb := nil; @@ -292,17 +300,20 @@ begin nme := memb.Items[i].GetPath('name').AsString; case memb.Items[i].GetPath('kind').AsString of - 'alias' :ndCat := Tree.Items.AddChildObject(ndAlias, nme, ln); - 'class' :ndCat := Tree.Items.AddChildObject(ndClass, nme, ln); - 'enum' :ndCat := Tree.Items.AddChildObject(ndEnum, nme, ln); - 'function':ndCat := Tree.Items.AddChildObject(ndFunc, nme, ln); - 'import' :ndCat := Tree.Items.AddChildObject(ndImp, nme, ln); - 'mixin' :ndCat := Tree.Items.AddChildObject(ndMix, nme, ln); - 'struct' :ndCat := Tree.Items.AddChildObject(ndStruct, nme, ln); - 'template':ndCat := Tree.Items.AddChildObject(ndTmp, nme, ln); - 'variable':ndCat := Tree.Items.AddChildObject(ndVar, nme, ln); + 'alias' :ndCat := Tree.Items.AddChildObject(ndAlias, nme, ln); + 'class' :ndCat := Tree.Items.AddChildObject(ndClass, nme, ln); + 'enum' :ndCat := Tree.Items.AddChildObject(ndEnum, nme, ln); + 'function' :ndCat := Tree.Items.AddChildObject(ndFunc, nme, ln); + 'import' :ndCat := Tree.Items.AddChildObject(ndImp, nme, ln); + 'interface' :ndCat := Tree.Items.AddChildObject(ndIntf, nme, ln); + 'mixin' :ndCat := Tree.Items.AddChildObject(ndMix, nme, ln); + 'struct' :ndCat := Tree.Items.AddChildObject(ndStruct, nme, ln); + 'template' :ndCat := Tree.Items.AddChildObject(ndTmp, nme, ln); + 'variable' :ndCat := Tree.Items.AddChildObject(ndVar, nme, ln); end; + ndCat.Parent.Visible := true; + // optional item members submemb := memb.Items[i].FindPath('members'); if subMemb <> nil then for j := 0 to submemb.Count-1 do diff --git a/src/ce_widget.pas b/src/ce_widget.pas index 9882ecbc..62e36336 100644 --- a/src/ce_widget.pas +++ b/src/ce_widget.pas @@ -40,8 +40,8 @@ type procedure UpdateByEvent; virtual; // a descendant overrides to implement a delayed update event. procedure UpdateByDelay; virtual; + // May be used for appplication options published - property ID: string read fID write fID; property updaterByLoopInterval: Integer read fLoopInter write setLoopInt; property updaterByDelayDuration: Integer read fDelayDur write setDelayDur; public @@ -73,10 +73,11 @@ type function contextAction(index: integer): TAction; virtual; // returns true if one of the three updater is processing. property updating: boolean read fUpdating; + property ID: string read fID write fID; end; (** - * Holds a list of TCEWidget. + * TCEWidget list. *) TCEWidgetList = class(TList) private