common project interface - part 1

This commit is contained in:
Basile Burg 2015-06-20 15:00:16 +02:00
parent 3d74bffa3b
commit 9139d8eef7
12 changed files with 284 additions and 176 deletions

View File

@ -176,6 +176,7 @@
<ComponentName Value="CEEditorWidget"/> <ComponentName Value="CEEditorWidget"/>
<HasResources Value="True"/> <HasResources Value="True"/>
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<UnitName Value="ce_editor"/>
</Unit8> </Unit8>
<Unit9> <Unit9>
<Filename Value="..\src\ce_editoroptions.pas"/> <Filename Value="..\src\ce_editoroptions.pas"/>
@ -188,10 +189,12 @@
<Unit11> <Unit11>
<Filename Value="..\src\ce_interfaces.pas"/> <Filename Value="..\src\ce_interfaces.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="ce_interfaces"/>
</Unit11> </Unit11>
<Unit12> <Unit12>
<Filename Value="..\src\ce_libman.pas"/> <Filename Value="..\src\ce_libman.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="ce_libman"/>
</Unit12> </Unit12>
<Unit13> <Unit13>
<Filename Value="..\src\ce_libmaneditor.pas"/> <Filename Value="..\src\ce_libmaneditor.pas"/>
@ -199,6 +202,7 @@
<ComponentName Value="CELibManEditorWidget"/> <ComponentName Value="CELibManEditorWidget"/>
<HasResources Value="True"/> <HasResources Value="True"/>
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<UnitName Value="ce_libmaneditor"/>
</Unit13> </Unit13>
<Unit14> <Unit14>
<Filename Value="..\src\ce_main.pas"/> <Filename Value="..\src\ce_main.pas"/>
@ -226,6 +230,7 @@
<Unit17> <Unit17>
<Filename Value="..\src\ce_mru.pas"/> <Filename Value="..\src\ce_mru.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="ce_mru"/>
</Unit17> </Unit17>
<Unit18> <Unit18>
<Filename Value="..\src\ce_observer.pas"/> <Filename Value="..\src\ce_observer.pas"/>
@ -244,6 +249,7 @@
<ComponentName Value="CEProcInputWidget"/> <ComponentName Value="CEProcInputWidget"/>
<HasResources Value="True"/> <HasResources Value="True"/>
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<UnitName Value="ce_procinput"/>
</Unit20> </Unit20>
<Unit21> <Unit21>
<Filename Value="..\src\ce_projconf.pas"/> <Filename Value="..\src\ce_projconf.pas"/>
@ -264,6 +270,7 @@
<ComponentName Value="CEProjectInspectWidget"/> <ComponentName Value="CEProjectInspectWidget"/>
<HasResources Value="True"/> <HasResources Value="True"/>
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<UnitName Value="ce_projinspect"/>
</Unit23> </Unit23>
<Unit24> <Unit24>
<Filename Value="..\src\ce_search.pas"/> <Filename Value="..\src\ce_search.pas"/>
@ -294,10 +301,12 @@
<Unit28> <Unit28>
<Filename Value="..\src\ce_symstring.pas"/> <Filename Value="..\src\ce_symstring.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="ce_symstring"/>
</Unit28> </Unit28>
<Unit29> <Unit29>
<Filename Value="..\src\ce_synmemo.pas"/> <Filename Value="..\src\ce_synmemo.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="ce_synmemo"/>
</Unit29> </Unit29>
<Unit30> <Unit30>
<Filename Value="..\src\ce_todolist.pas"/> <Filename Value="..\src\ce_todolist.pas"/>
@ -310,7 +319,6 @@
<Unit31> <Unit31>
<Filename Value="..\src\ce_tools.pas"/> <Filename Value="..\src\ce_tools.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="ce_tools"/>
</Unit31> </Unit31>
<Unit32> <Unit32>
<Filename Value="..\src\ce_toolseditor.pas"/> <Filename Value="..\src\ce_toolseditor.pas"/>
@ -330,6 +338,7 @@
<Unit35> <Unit35>
<Filename Value="..\src\ce_sharedres.pas"/> <Filename Value="..\src\ce_sharedres.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="ce_sharedres"/>
</Unit35> </Unit35>
<Unit36> <Unit36>
<Filename Value="..\src\ce_widget.pas"/> <Filename Value="..\src\ce_widget.pas"/>
@ -337,7 +346,6 @@
<ComponentName Value="CEWidget"/> <ComponentName Value="CEWidget"/>
<HasResources Value="True"/> <HasResources Value="True"/>
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<UnitName Value="ce_widget"/>
</Unit36> </Unit36>
</Units> </Units>
</ProjectOptions> </ProjectOptions>

View File

@ -28,16 +28,16 @@ type
fClient, fServer: TProcess; fClient, fServer: TProcess;
fAvailable: boolean; fAvailable: boolean;
fDoc: TCESynMemo; fDoc: TCESynMemo;
fProj: TCEProject; fProj: TCENativeProject;
procedure killServer; procedure killServer;
procedure terminateClient; procedure terminateClient;
procedure waitClient; procedure waitClient;
// //
procedure projNew(aProject: TCEProject); procedure projNew(aProject: ICECommonProject);
procedure projChanged(aProject: TCEProject); procedure projChanged(aProject: ICECommonProject);
procedure projClosing(aProject: TCEProject); procedure projClosing(aProject: ICECommonProject);
procedure projFocused(aProject: TCEProject); procedure projFocused(aProject: ICECommonProject);
procedure projCompiling(aProject: TCEProject); procedure projCompiling(aProject: ICECommonProject);
// //
procedure docNew(aDoc: TCESynMemo); procedure docNew(aDoc: TCESynMemo);
procedure docFocused(aDoc: TCESynMemo); procedure docFocused(aDoc: TCESynMemo);
@ -112,18 +112,21 @@ end;
{$ENDREGION} {$ENDREGION}
{$REGION ICEProjectObserver ----------------------------------------------------} {$REGION ICEProjectObserver ----------------------------------------------------}
procedure TCEDcdWrapper.projNew(aProject: TCEProject); procedure TCEDcdWrapper.projNew(aProject: ICECommonProject);
begin begin
fProj := aProject; case aProject.getKind of
pkNative: fProj := TCENativeProject(aProject.getProject);
pkDub:fProj := nil;
end;
end; end;
procedure TCEDcdWrapper.projChanged(aProject: TCEProject); procedure TCEDcdWrapper.projChanged(aProject: ICECommonProject);
var var
i: Integer; i: Integer;
fold: string; fold: string;
folds: TStringList; folds: TStringList;
begin begin
if fProj <> aProject then if fProj <> aProject.getProject then
exit; exit;
if fProj = nil then if fProj = nil then
exit; exit;
@ -148,18 +151,22 @@ begin
end; end;
end; end;
procedure TCEDcdWrapper.projClosing(aProject: TCEProject); procedure TCEDcdWrapper.projClosing(aProject: ICECommonProject);
begin begin
if fProj <> aProject then exit; if fProj <> aProject.getProject then
exit;
fProj := nil; fProj := nil;
end; end;
procedure TCEDcdWrapper.projFocused(aProject: TCEProject); procedure TCEDcdWrapper.projFocused(aProject: ICECommonProject);
begin begin
fProj := aProject; case aProject.getKind of
pkNative: fProj := TCENativeProject(aProject.getProject);
pkDub:fProj := nil;
end;
end; end;
procedure TCEDcdWrapper.projCompiling(aProject: TCEProject); procedure TCEDcdWrapper.projCompiling(aProject: ICECommonProject);
begin begin
end; end;
{$ENDREGION} {$ENDREGION}

View File

@ -6,10 +6,45 @@ interface
uses uses
Classes, SysUtils, actnList, menus, process, Classes, SysUtils, actnList, menus, process,
ce_synmemo, ce_project, ce_observer; ce_synmemo, ce_observer;
type type
// describes the project kind. Used as a hint to cast ICECommonProject.getProject()
TCEProjectKind = (pkNative, pkDub);
(**
* Common project interface
*)
ICECommonProject = interface
['ICECommonProject']
function getKind: TCEProjectKind;
// returns an untyped object that can be casted using getSpecialization()
function getProject: TObject;
//// project file
//function filename: string;
//procedure loadFromFile(const aFilename: string);
//procedure saveToFile(const aFilename: string);
//procedure save;
//
//// common project properties
//function sourceCount: integer;
//function source(index: integer): string;
//function stringImportCount: integer;
//function stringImport(index: integer): string;
//function moduleImportCount: integer;
//function moduleImport(index: integer): string;
//function configurationCount: integer;
//function configuration(index: integer): string;
//function outputFilename: string;
//
//// common actions
//function compile: boolean;
end;
(** (**
* An implementer declares some actions on demand. * An implementer declares some actions on demand.
*) *)
@ -55,15 +90,15 @@ type
ICEProjectObserver = interface ICEProjectObserver = interface
['ICEProjectObserver'] ['ICEProjectObserver']
// aProject has been created/opened // aProject has been created/opened
procedure projNew(aProject: TCEProject); procedure projNew(aProject: ICECommonProject);
// aProject has been modified: switches, source name, ... // aProject has been modified: switches, source name, ...
procedure projChanged(aProject: TCEProject); procedure projChanged(aProject: ICECommonProject);
// aProject is about to be closed. // aProject is about to be closed.
procedure projClosing(aProject: TCEProject); procedure projClosing(aProject: ICECommonProject);
// not called yet: aProject is always the same // not called yet: aProject is always the same
procedure projFocused(aProject: TCEProject); procedure projFocused(aProject: ICECommonProject);
// aProject is about to be compiled // aProject is about to be compiled
procedure projCompiling(aProject: TCEProject); procedure projCompiling(aProject: ICECommonProject);
end; end;
(** (**
* An implementer informs some ICEProjectObserver about the current project(s) * An implementer informs some ICEProjectObserver about the current project(s)
@ -258,11 +293,11 @@ type
(** (**
* TCEProjectSubject primitives. * TCEProjectSubject primitives.
*) *)
procedure subjProjNew(aSubject: TCEProjectSubject; aProj: TCEProject); {$IFDEF RELEASE}inline;{$ENDIF} procedure subjProjNew(aSubject: TCEProjectSubject; aProj: ICECommonProject); {$IFDEF RELEASE}inline;{$ENDIF}
procedure subjProjClosing(aSubject: TCEProjectSubject; aProj: TCEProject); {$IFDEF RELEASE}inline;{$ENDIF} procedure subjProjClosing(aSubject: TCEProjectSubject; aProj: ICECommonProject); {$IFDEF RELEASE}inline;{$ENDIF}
procedure subjProjFocused(aSubject: TCEProjectSubject; aProj: TCEProject); {$IFDEF RELEASE}inline;{$ENDIF} procedure subjProjFocused(aSubject: TCEProjectSubject; aProj: ICECommonProject); {$IFDEF RELEASE}inline;{$ENDIF}
procedure subjProjChanged(aSubject: TCEProjectSubject; aProj: TCEProject); {$IFDEF RELEASE}inline;{$ENDIF} procedure subjProjChanged(aSubject: TCEProjectSubject; aProj: ICECommonProject); {$IFDEF RELEASE}inline;{$ENDIF}
procedure subjProjCompiling(aSubject: TCEProjectSubject; aProj: TCEProject);{$IFDEF RELEASE}inline;{$ENDIF} procedure subjProjCompiling(aSubject: TCEProjectSubject; aProj: ICECommonProject);{$IFDEF RELEASE}inline;{$ENDIF}
{ {
@ -332,7 +367,7 @@ begin
exit(aObject is ICEProjectObserver); exit(aObject is ICEProjectObserver);
end; end;
procedure subjProjNew(aSubject: TCEProjectSubject; aProj: TCEProject); procedure subjProjNew(aSubject: TCEProjectSubject; aProj: ICECommonProject);
var var
i: Integer; i: Integer;
begin begin
@ -340,7 +375,7 @@ begin
(fObservers.Items[i] as ICEProjectObserver).ProjNew(aProj); (fObservers.Items[i] as ICEProjectObserver).ProjNew(aProj);
end; end;
procedure subjProjClosing(aSubject: TCEProjectSubject; aProj: TCEProject); procedure subjProjClosing(aSubject: TCEProjectSubject; aProj: ICECommonProject);
var var
i: Integer; i: Integer;
begin begin
@ -348,7 +383,7 @@ begin
(fObservers.Items[i] as ICEProjectObserver).projClosing(aProj); (fObservers.Items[i] as ICEProjectObserver).projClosing(aProj);
end; end;
procedure subjProjFocused(aSubject: TCEProjectSubject; aProj: TCEProject); procedure subjProjFocused(aSubject: TCEProjectSubject; aProj: ICECommonProject);
var var
i: Integer; i: Integer;
begin begin
@ -356,7 +391,7 @@ begin
(fObservers.Items[i] as ICEProjectObserver).projFocused(aProj); (fObservers.Items[i] as ICEProjectObserver).projFocused(aProj);
end; end;
procedure subjProjChanged(aSubject: TCEProjectSubject; aProj: TCEProject); procedure subjProjChanged(aSubject: TCEProjectSubject; aProj: ICECommonProject);
var var
i: Integer; i: Integer;
begin begin
@ -364,7 +399,7 @@ begin
(fObservers.Items[i] as ICEProjectObserver).projChanged(aProj); (fObservers.Items[i] as ICEProjectObserver).projChanged(aProj);
end; end;
procedure subjProjCompiling(aSubject: TCEProjectSubject; aProj: TCEProject); procedure subjProjCompiling(aSubject: TCEProjectSubject; aProj: ICECommonProject);
var var
i: Integer; i: Integer;
begin begin

View File

@ -36,13 +36,13 @@ type
procedure btnMoveDownClick(Sender: TObject); procedure btnMoveDownClick(Sender: TObject);
procedure ListEdited(Sender: TObject; Item: TListItem; var AValue: string); procedure ListEdited(Sender: TObject; Item: TListItem; var AValue: string);
private private
fProj: TCEProject; fProj: TCENativeProject;
procedure updateRegistrable; procedure updateRegistrable;
procedure projNew(aProject: TCEProject); procedure projNew(aProject: ICECommonProject);
procedure projChanged(aProject: TCEProject); procedure projChanged(aProject: ICECommonProject);
procedure projClosing(aProject: TCEProject); procedure projClosing(aProject: ICECommonProject);
procedure projFocused(aProject: TCEProject); procedure projFocused(aProject: ICECommonProject);
procedure projCompiling(aProject: TCEProject); procedure projCompiling(aProject: ICECommonProject);
// //
procedure dataToGrid; procedure dataToGrid;
procedure gridToData; procedure gridToData;
@ -99,30 +99,37 @@ begin
(FileExists(fProj.Filename)) (FileExists(fProj.Filename))
end; end;
procedure TCELibManEditorWidget.projNew(aProject: TCEProject); procedure TCELibManEditorWidget.projNew(aProject: ICECommonProject);
begin begin
fProj := aProject; if aProject.getKind <> pkNative then
exit;
fProj := TCENativeProject(aProject.getProject);
end; end;
procedure TCELibManEditorWidget.projChanged(aProject: TCEProject); procedure TCELibManEditorWidget.projChanged(aProject: ICECommonProject);
begin begin
if fProj = nil then exit;
if fProj <> aProject.getProject then exit;
//
updateRegistrable; updateRegistrable;
end; end;
procedure TCELibManEditorWidget.projClosing(aProject: TCEProject); procedure TCELibManEditorWidget.projClosing(aProject: ICECommonProject);
begin begin
if aProject <> fProj then exit; if fProj <> aProject.getProject then exit;
fProj := nil; fProj := nil;
updateRegistrable; updateRegistrable;
end; end;
procedure TCELibManEditorWidget.projFocused(aProject: TCEProject); procedure TCELibManEditorWidget.projFocused(aProject: ICECommonProject);
begin begin
fProj := aProject; if aProject.getKind <> pkNative then
exit;
fProj := TCENativeProject(aProject.getProject);
updateRegistrable; updateRegistrable;
end; end;
procedure TCELibManEditorWidget.projCompiling(aProject: TCEProject); procedure TCELibManEditorWidget.projCompiling(aProject: ICECommonProject);
begin begin
end; end;

View File

@ -189,7 +189,7 @@ type
fMultidoc: ICEMultiDocHandler; fMultidoc: ICEMultiDocHandler;
fScCollectCount: Integer; fScCollectCount: Integer;
fUpdateCount: NativeInt; fUpdateCount: NativeInt;
fProject: TCEProject; fProject: TCENativeProject;
fProjMru: TCEMRUProjectList; fProjMru: TCEMRUProjectList;
fFileMru: TCEMRUDocumentList; fFileMru: TCEMRUDocumentList;
fWidgList: TCEWidgetList; fWidgList: TCEWidgetList;
@ -1733,7 +1733,7 @@ end;
procedure TCEMainForm.newProj; procedure TCEMainForm.newProj;
begin begin
fProject := TCEProject.Create(nil); fProject := TCENativeProject.Create(nil);
fProject.Name := 'CurrentProject'; fProject.Name := 'CurrentProject';
showProjTitle; showProjTitle;
end; end;

View File

@ -83,7 +83,7 @@ type
fActCopyMsg: TAction; fActCopyMsg: TAction;
fActSelAll: TAction; fActSelAll: TAction;
fMaxMessCnt: Integer; fMaxMessCnt: Integer;
fProj: TCEProject; fProj: TCENativeProject;
fDoc: TCESynMemo; fDoc: TCESynMemo;
fCtxt: TCEAppMessageCtxt; fCtxt: TCEAppMessageCtxt;
fAutoSelect: boolean; fAutoSelect: boolean;
@ -114,11 +114,11 @@ type
procedure setColorBuble(aValue: TColor); procedure setColorBuble(aValue: TColor);
procedure setColorWarning(aValue: TColor); procedure setColorWarning(aValue: TColor);
// //
procedure projNew(aProject: TCEProject); procedure projNew(aProject: ICECommonProject);
procedure projClosing(aProject: TCEProject); procedure projClosing(aProject: ICECommonProject);
procedure projFocused(aProject: TCEProject); procedure projFocused(aProject: ICECommonProject);
procedure projChanged(aProject: TCEProject); procedure projChanged(aProject: ICECommonProject);
procedure projCompiling(aProject: TCEProject); procedure projCompiling(aProject: ICECommonProject);
// //
procedure docNew(aDoc: TCESynMemo); procedure docNew(aDoc: TCESynMemo);
procedure docClosing(aDoc: TCESynMemo); procedure docClosing(aDoc: TCESynMemo);
@ -584,34 +584,40 @@ end;
{$ENDREGION} {$ENDREGION}
{$REGION ICEProjectObserver ----------------------------------------------------} {$REGION ICEProjectObserver ----------------------------------------------------}
procedure TCEMessagesWidget.projNew(aProject: TCEProject); procedure TCEMessagesWidget.projNew(aProject: ICECommonProject);
begin begin
fProj := aProject; case aProject.getKind of
pkNative: fProj := TCENativeProject(aProject.getProject);
pkDub:fProj := nil;
end;
filterMessages(fCtxt); filterMessages(fCtxt);
end; end;
procedure TCEMessagesWidget.projClosing(aProject: TCEProject); procedure TCEMessagesWidget.projClosing(aProject: ICECommonProject);
begin begin
if fProj <> aProject then if fProj <> aProject.getProject then
exit; exit;
// //
clearbyData(aProject); clearbyData(fProj);
fProj := nil; fProj := nil;
filterMessages(fCtxt); filterMessages(fCtxt);
end; end;
procedure TCEMessagesWidget.projFocused(aProject: TCEProject); procedure TCEMessagesWidget.projFocused(aProject: ICECommonProject);
begin begin
if fProj = aProject then exit; if fProj = aProject.getProject then exit;
fProj := aProject; case aProject.getKind of
pkNative: fProj := TCENativeProject(aProject.getProject);
pkDub:fProj := nil;
end;
filterMessages(fCtxt); filterMessages(fCtxt);
end; end;
procedure TCEMessagesWidget.projChanged(aProject: TCEProject); procedure TCEMessagesWidget.projChanged(aProject: ICECommonProject);
begin begin
end; end;
procedure TCEMessagesWidget.projCompiling(aProject: TCEProject); procedure TCEMessagesWidget.projCompiling(aProject: ICECommonProject);
begin begin
end; end;
{$ENDREGION} {$ENDREGION}
@ -789,7 +795,7 @@ begin
Itm.Visible := true Itm.Visible := true
else case msgdt^.ctxt of else case msgdt^.ctxt of
amcEdit: itm.Visible := (fDoc = TCESynMemo(msgdt^.data)) and (aCtxt = amcEdit); amcEdit: itm.Visible := (fDoc = TCESynMemo(msgdt^.data)) and (aCtxt = amcEdit);
amcProj: itm.Visible := (fProj = TCEProject(msgdt^.data)) and (aCtxt = amcProj); amcProj: itm.Visible := (fProj = TCENativeProject(msgdt^.data)) and (aCtxt = amcProj);
amcApp: itm.Visible := aCtxt = amcApp; amcApp: itm.Visible := aCtxt = amcApp;
amcMisc: itm.Visible := aCtxt = amcMisc; amcMisc: itm.Visible := aCtxt = amcMisc;
end; end;

View File

@ -63,11 +63,11 @@ type
*) *)
TCEMRUProjectList = class(TCEMRUFileList, ICEProjectObserver) TCEMRUProjectList = class(TCEMRUFileList, ICEProjectObserver)
private private
procedure projNew(aProject: TCEProject); procedure projNew(aProject: ICECommonProject);
procedure projChanged(aProject: TCEProject); procedure projChanged(aProject: ICECommonProject);
procedure projClosing(aProject: TCEProject); procedure projClosing(aProject: ICECommonProject);
procedure projFocused(aProject: TCEProject); procedure projFocused(aProject: ICECommonProject);
procedure projCompiling(aProject: TCEProject); procedure projCompiling(aProject: ICECommonProject);
public public
constructor create; override; constructor create; override;
destructor destroy; override; destructor destroy; override;
@ -192,26 +192,32 @@ begin
inherited; inherited;
end; end;
procedure TCEMRUProjectList.projNew(aProject: TCEProject); procedure TCEMRUProjectList.projNew(aProject: ICECommonProject);
begin begin
end; end;
procedure TCEMRUProjectList.projFocused(aProject: TCEProject); procedure TCEMRUProjectList.projFocused(aProject: ICECommonProject);
begin begin
end; end;
procedure TCEMRUProjectList.projChanged(aProject: TCEProject); procedure TCEMRUProjectList.projChanged(aProject: ICECommonProject);
begin begin
end; end;
procedure TCEMRUProjectList.projCompiling(aProject: TCEProject); procedure TCEMRUProjectList.projCompiling(aProject: ICECommonProject);
begin begin
end; end;
procedure TCEMRUProjectList.projClosing(aProject: TCEProject); procedure TCEMRUProjectList.projClosing(aProject: ICECommonProject);
var
natProj: TCENativeProject;
begin begin
if FileExists(aProject.fileName) then if aProject.getProject is TCENativeProject then
Insert(0, aProject.fileName); begin
natProj := TCENativeProject(aProject.getProject);
if FileExists(natProj.fileName) then
Insert(0, natProj.fileName);
end;
end; end;
initialization initialization

View File

@ -35,7 +35,7 @@ type
procedure TreeChange(Sender: TObject; Node: TTreeNode); 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 private
fProj: TCEProject; fProj: TCENativeProject;
fSyncroMode: boolean; fSyncroMode: boolean;
fSynchroItem: TStringList; fSynchroItem: TStringList;
fSynchroValue: TStringList; fSynchroValue: TStringList;
@ -45,11 +45,11 @@ type
procedure syncroGetPropAsString(const ASection, Item, Value: string); procedure syncroGetPropAsString(const ASection, Item, Value: string);
property syncroMode: boolean read fSyncroMode write setSyncroMode; property syncroMode: boolean read fSyncroMode write setSyncroMode;
// //
procedure projNew(aProject: TCEProject); procedure projNew(aProject: ICECommonProject);
procedure projClosing(aProject: TCEProject); procedure projClosing(aProject: ICECommonProject);
procedure projChanged(aProject: TCEProject); procedure projChanged(aProject: ICECommonProject);
procedure projFocused(aProject: TCEProject); procedure projFocused(aProject: ICECommonProject);
procedure projCompiling(aProject: TCEProject); procedure projCompiling(aProject: ICECommonProject);
protected protected
procedure updateImperative; override; procedure updateImperative; override;
procedure SetVisible(Value: boolean); override; procedure SetVisible(Value: boolean); override;
@ -107,18 +107,21 @@ end;
{$ENDREGION --------------------------------------------------------------------} {$ENDREGION --------------------------------------------------------------------}
{$REGION ICEProjectObserver ----------------------------------------------------} {$REGION ICEProjectObserver ----------------------------------------------------}
procedure TCEProjectConfigurationWidget.projNew(aProject: TCEProject); procedure TCEProjectConfigurationWidget.projNew(aProject: ICECommonProject);
begin begin
beginImperativeUpdate; beginImperativeUpdate;
fProj := aProject; case aProject.getKind of
pkNative: fProj := TCENativeProject(aProject.getProject);
pkDub:fProj := nil;
end;
if Visible then updateImperative; if Visible then updateImperative;
syncroMode := false; syncroMode := false;
pnlToolBar.Enabled:=true; pnlToolBar.Enabled:=true;
end; end;
procedure TCEProjectConfigurationWidget.projClosing(aProject: TCEProject); procedure TCEProjectConfigurationWidget.projClosing(aProject: ICECommonProject);
begin begin
if fProj <> aProject then if fProj <> aProject.getProject then
exit; exit;
inspector.TIObject := nil; inspector.TIObject := nil;
inspector.ItemIndex := -1; inspector.ItemIndex := -1;
@ -128,21 +131,27 @@ begin
fProj := nil; fProj := nil;
end; end;
procedure TCEProjectConfigurationWidget.projChanged(aProject: TCEProject); procedure TCEProjectConfigurationWidget.projChanged(aProject: ICECommonProject);
begin begin
if fProj <> aProject then exit; if fProj <> aProject.getProject then exit;
fProj := aProject; case aProject.getKind of
pkNative: fProj := TCENativeProject(aProject.getProject);
pkDub:fProj := nil;
end;
if Visible then updateImperative; if Visible then updateImperative;
end; end;
procedure TCEProjectConfigurationWidget.projFocused(aProject: TCEProject); procedure TCEProjectConfigurationWidget.projFocused(aProject: ICECommonProject);
begin begin
fProj := aProject; case aProject.getKind of
pkNative: fProj := TCENativeProject(aProject.getProject);
pkDub: fProj := nil;
end;
pnlToolBar.Enabled:=true; pnlToolBar.Enabled:=true;
if Visible then updateImperative; if Visible then updateImperative;
end; end;
procedure TCEProjectConfigurationWidget.projCompiling(aProject: TCEProject); procedure TCEProjectConfigurationWidget.projCompiling(aProject: ICECommonProject);
begin begin
end; end;
{$ENDREGION --------------------------------------------------------------------} {$ENDREGION --------------------------------------------------------------------}

View File

@ -9,7 +9,7 @@ uses
LclProc, LclProc,
{$ENDIF} {$ENDIF}
Classes, SysUtils, process, strUtils, ce_common, ce_writableComponent, Classes, SysUtils, process, strUtils, ce_common, ce_writableComponent,
ce_dmdwrap, ce_observer; ce_dmdwrap, ce_observer, ce_interfaces;
type type
@ -21,7 +21,7 @@ type
* *
* Basically it' s designed to provide the options for the dmd process. * Basically it' s designed to provide the options for the dmd process.
*) *)
TCEProject = class(TWritableLfmTextComponent) TCENativeProject = class(TWritableLfmTextComponent, ICECommonProject)
private private
fOnChange: TNotifyEvent; fOnChange: TNotifyEvent;
fModified: boolean; fModified: boolean;
@ -51,6 +51,9 @@ type
procedure runProcOutput(sender: TObject); procedure runProcOutput(sender: TObject);
// passes compilation message as "to be guessed" // passes compilation message as "to be guessed"
procedure compProcOutput(proc: TProcess); procedure compProcOutput(proc: TProcess);
//
function getKind: TCEProjectKind;
function getProject: TObject;
protected protected
procedure beforeLoad; override; procedure beforeLoad; override;
procedure afterSave; override; procedure afterSave; override;
@ -91,9 +94,9 @@ type
implementation implementation
uses uses
ce_interfaces, controls, dialogs, ce_symstring, ce_libman, ce_dcd; controls, dialogs, ce_symstring, ce_libman, ce_dcd;
constructor TCEProject.create(aOwner: TComponent); constructor TCENativeProject.create(aOwner: TComponent);
begin begin
inherited create(aOwner); inherited create(aOwner);
// //
@ -117,7 +120,7 @@ begin
fModified := false; fModified := false;
end; end;
destructor TCEProject.destroy; destructor TCENativeProject.destroy;
begin begin
subjProjClosing(TCEProjectSubject(fProjectSubject), self); subjProjClosing(TCEProjectSubject(fProjectSubject), self);
fProjectSubject.Free; fProjectSubject.Free;
@ -131,13 +134,23 @@ begin
inherited; inherited;
end; end;
function TCEProject.addConfiguration: TCompilerConfiguration; function TCENativeProject.getKind: TCEProjectKind;
begin
exit(pkNative);
end;
function TCENativeProject.getProject: TObject;
begin
exit(Self);
end;
function TCENativeProject.addConfiguration: TCompilerConfiguration;
begin begin
result := TCompilerConfiguration(fOptsColl.Add); result := TCompilerConfiguration(fOptsColl.Add);
result.onChanged := @subMemberChanged; result.onChanged := @subMemberChanged;
end; end;
procedure TCEProject.setOptsColl(const aValue: TCollection); procedure TCENativeProject.setOptsColl(const aValue: TCollection);
var var
i: nativeInt; i: nativeInt;
begin begin
@ -146,7 +159,7 @@ begin
Configuration[i].onChanged := @subMemberChanged; Configuration[i].onChanged := @subMemberChanged;
end; end;
procedure TCEProject.addSource(const aFilename: string); procedure TCENativeProject.addSource(const aFilename: string);
var var
relSrc, absSrc, ext: string; relSrc, absSrc, ext: string;
begin begin
@ -163,7 +176,7 @@ begin
fSrcs.Add(ExtractRelativepath(fBasePath, aFilename)); fSrcs.Add(ExtractRelativepath(fBasePath, aFilename));
end; end;
procedure TCEProject.setRoot(const aValue: string); procedure TCENativeProject.setRoot(const aValue: string);
begin begin
if fRootFolder = aValue then exit; if fRootFolder = aValue then exit;
beginUpdate; beginUpdate;
@ -171,7 +184,7 @@ begin
endUpdate; endUpdate;
end; end;
procedure TCEProject.setFilename(const aValue: string); procedure TCENativeProject.setFilename(const aValue: string);
var var
oldAbs, newRel, oldBase: string; oldAbs, newRel, oldBase: string;
i: NativeInt; i: NativeInt;
@ -194,14 +207,14 @@ begin
endUpdate; endUpdate;
end; end;
procedure TCEProject.setLibAliases(const aValue: TStringList); procedure TCENativeProject.setLibAliases(const aValue: TStringList);
begin begin
beginUpdate; beginUpdate;
fLibAliases.Assign(aValue); fLibAliases.Assign(aValue);
endUpdate; endUpdate;
end; end;
procedure TCEProject.setSrcs(const aValue: TStringList); procedure TCENativeProject.setSrcs(const aValue: TStringList);
begin begin
beginUpdate; beginUpdate;
fSrcs.Assign(aValue); fSrcs.Assign(aValue);
@ -209,7 +222,7 @@ begin
endUpdate; endUpdate;
end; end;
procedure TCEProject.setConfIx(aValue: Integer); procedure TCENativeProject.setConfIx(aValue: Integer);
begin begin
beginUpdate; beginUpdate;
if aValue < 0 then aValue := 0; if aValue < 0 then aValue := 0;
@ -218,19 +231,19 @@ begin
endUpdate; endUpdate;
end; end;
procedure TCEProject.subMemberChanged(sender : TObject); procedure TCENativeProject.subMemberChanged(sender : TObject);
begin begin
beginUpdate; beginUpdate;
fModified := true; fModified := true;
endUpdate; endUpdate;
end; end;
procedure TCEProject.beginUpdate; procedure TCENativeProject.beginUpdate;
begin begin
Inc(fUpdateCount); Inc(fUpdateCount);
end; end;
procedure TCEProject.endUpdate; procedure TCENativeProject.endUpdate;
begin begin
Dec(fUpdateCount); Dec(fUpdateCount);
if fUpdateCount > 0 then if fUpdateCount > 0 then
@ -244,7 +257,7 @@ begin
doChanged; doChanged;
end; end;
procedure TCEProject.doChanged; procedure TCENativeProject.doChanged;
{$IFDEF DEBUG} {$IFDEF DEBUG}
var var
lst: TStringList; lst: TStringList;
@ -267,18 +280,18 @@ begin
{$ENDIF} {$ENDIF}
end; end;
function TCEProject.getConfig(const ix: integer): TCompilerConfiguration; function TCENativeProject.getConfig(const ix: integer): TCompilerConfiguration;
begin begin
result := TCompilerConfiguration(fOptsColl.Items[ix]); result := TCompilerConfiguration(fOptsColl.Items[ix]);
result.onChanged := @subMemberChanged; result.onChanged := @subMemberChanged;
end; end;
function TCEProject.getCurrConf: TCompilerConfiguration; function TCENativeProject.getCurrConf: TCompilerConfiguration;
begin begin
result := TCompilerConfiguration(fOptsColl.Items[fConfIx]); result := TCompilerConfiguration(fOptsColl.Items[fConfIx]);
end; end;
procedure TCEProject.addDefaults; procedure TCENativeProject.addDefaults;
begin begin
with TCompilerConfiguration(fOptsColl.Add) do with TCompilerConfiguration(fOptsColl.Add) do
begin begin
@ -303,7 +316,7 @@ begin
end; end;
end; end;
procedure TCEProject.reset; procedure TCENativeProject.reset;
var var
defConf: TCompilerConfiguration; defConf: TCompilerConfiguration;
begin begin
@ -318,7 +331,7 @@ begin
fModified := false; fModified := false;
end; end;
procedure TCEProject.getOpts(const aList: TStrings); procedure TCENativeProject.getOpts(const aList: TStrings);
var var
rel, abs: string; rel, abs: string;
i: Integer; i: Integer;
@ -363,7 +376,7 @@ begin
end; end;
end; end;
function TCEProject.isProjectSource(const aFilename: string): boolean; function TCENativeProject.isProjectSource(const aFilename: string): boolean;
var var
i: Integer; i: Integer;
begin begin
@ -373,31 +386,31 @@ begin
exit(false); exit(false);
end; end;
function TCEProject.getAbsoluteSourceName(aIndex: integer): string; function TCENativeProject.getAbsoluteSourceName(aIndex: integer): string;
begin begin
if aIndex < 0 then exit(''); if aIndex < 0 then exit('');
if aIndex > fSrcs.Count-1 then exit(''); if aIndex > fSrcs.Count-1 then exit('');
result := expandFileNameEx(fBasePath, fSrcs.Strings[aIndex]); result := expandFileNameEx(fBasePath, fSrcs.Strings[aIndex]);
end; end;
function TCEProject.getAbsoluteFilename(const aFilename: string): string; function TCENativeProject.getAbsoluteFilename(const aFilename: string): string;
begin begin
result := expandFileNameEx(fBasePath, aFilename); result := expandFileNameEx(fBasePath, aFilename);
end; end;
procedure TCEProject.afterSave; procedure TCENativeProject.afterSave;
begin begin
fModified := false; fModified := false;
updateOutFilename; updateOutFilename;
end; end;
procedure TCEProject.beforeLoad; procedure TCENativeProject.beforeLoad;
begin begin
beginUpdate; beginUpdate;
Inherited; Inherited;
end; end;
procedure TCEProject.afterLoad; procedure TCENativeProject.afterLoad;
var var
hasPatched: Boolean; hasPatched: Boolean;
// either all the source files have moved or only the project file // either all the source files have moved or only the project file
@ -499,7 +512,7 @@ begin
if not hasPatched then fModified := false; if not hasPatched then fModified := false;
end; end;
procedure TCEProject.readerPropNoFound(Reader: TReader; Instance: TPersistent; procedure TCENativeProject.readerPropNoFound(Reader: TReader; Instance: TPersistent;
var PropName: string; IsPath: Boolean; var Handled, Skip: Boolean); var PropName: string; IsPath: Boolean; var Handled, Skip: Boolean);
//var //var
//idt: string; //idt: string;
@ -532,7 +545,7 @@ begin
end; end;
end; end;
procedure TCEProject.updateOutFilename; procedure TCENativeProject.updateOutFilename;
begin begin
fOutputFilename := currentConfiguration.pathsOptions.outputFilename; fOutputFilename := currentConfiguration.pathsOptions.outputFilename;
// field is specified // field is specified
@ -573,7 +586,7 @@ begin
fCanBeRun := fileExists(fOutputFilename); fCanBeRun := fileExists(fOutputFilename);
end; end;
function TCEProject.runPrePostProcess(const processInfo: TCompileProcOptions): Boolean; function TCENativeProject.runPrePostProcess(const processInfo: TCompileProcOptions): Boolean;
var var
process: TProcess; process: TProcess;
pname: string; pname: string;
@ -608,7 +621,7 @@ begin
end; end;
end; end;
function TCEProject.compileProject: Boolean; function TCENativeProject.compileProject: Boolean;
var var
config: TCompilerConfiguration; config: TCompilerConfiguration;
compilproc: TProcess; compilproc: TProcess;
@ -672,7 +685,7 @@ begin
end; end;
end; end;
function TCEProject.runProject(const runArgs: string = ''): Boolean; function TCENativeProject.runProject(const runArgs: string = ''): Boolean;
var var
prm: string; prm: string;
i: Integer; i: Integer;
@ -715,7 +728,7 @@ begin
result := true; result := true;
end; end;
procedure TCEProject.runProcOutput(sender: TObject); procedure TCENativeProject.runProcOutput(sender: TObject);
var var
proc: TProcess; proc: TProcess;
lst: TStringList; lst: TStringList;
@ -737,7 +750,7 @@ begin
getprocInputHandler.removeProcess(proc); getprocInputHandler.removeProcess(proc);
end; end;
procedure TCEProject.compProcOutput(proc: TProcess); procedure TCENativeProject.compProcOutput(proc: TProcess);
var var
lst: TStringList; lst: TStringList;
str: string; str: string;
@ -755,5 +768,5 @@ begin
end; end;
initialization initialization
RegisterClasses([TCEProject]); RegisterClasses([TCENativeProject]);
end. end.

View File

@ -34,7 +34,7 @@ type
private private
fActOpenFile: TAction; fActOpenFile: TAction;
fActSelConf: TAction; fActSelConf: TAction;
fProject: TCEProject; fProject: TCENativeProject;
fFileNode, fConfNode: TTreeNode; fFileNode, fConfNode: TTreeNode;
fImpsNode, fInclNode: TTreeNode; fImpsNode, fInclNode: TTreeNode;
fXtraNode: TTreeNode; fXtraNode: TTreeNode;
@ -43,11 +43,11 @@ type
procedure TreeDblClick(sender: TObject); procedure TreeDblClick(sender: TObject);
procedure actOpenFileExecute(sender: TObject); procedure actOpenFileExecute(sender: TObject);
// //
procedure projNew(aProject: TCEProject); procedure projNew(aProject: ICECommonProject);
procedure projClosing(aProject: TCEProject); procedure projClosing(aProject: ICECommonProject);
procedure projFocused(aProject: TCEProject); procedure projFocused(aProject: ICECommonProject);
procedure projChanged(aProject: TCEProject); procedure projChanged(aProject: ICECommonProject);
procedure projCompiling(aProject: TCEProject); procedure projCompiling(aProject: ICECommonProject);
protected protected
function contextName: string; override; function contextName: string; override;
function contextActionCount: integer; override; function contextActionCount: integer; override;
@ -146,35 +146,41 @@ end;
{$ENDREGION} {$ENDREGION}
{$REGION ICEProjectMonitor -----------------------------------------------------} {$REGION ICEProjectMonitor -----------------------------------------------------}
procedure TCEProjectInspectWidget.projNew(aProject: TCEProject); procedure TCEProjectInspectWidget.projNew(aProject: ICECommonProject);
begin begin
fProject := aProject; case aProject.getKind of
pkNative: fProject := TCENativeProject(aProject.getProject);
pkDub:fProject := nil;
end;
fLastFileOrFolder := ''; fLastFileOrFolder := '';
if Visible then updateImperative; if Visible then updateImperative;
end; end;
procedure TCEProjectInspectWidget.projClosing(aProject: TCEProject); procedure TCEProjectInspectWidget.projClosing(aProject: ICECommonProject);
begin begin
if fProject <> aProject then if fProject <> aProject.getProject then
exit; exit;
fProject := nil; fProject := nil;
fLastFileOrFolder := ''; fLastFileOrFolder := '';
updateImperative; updateImperative;
end; end;
procedure TCEProjectInspectWidget.projFocused(aProject: TCEProject); procedure TCEProjectInspectWidget.projFocused(aProject: ICECommonProject);
begin begin
fProject := aProject; case aProject.getKind of
pkNative: fProject := TCENativeProject(aProject.getProject);
pkDub:fProject := nil;
end;
if Visible then beginDelayedUpdate; if Visible then beginDelayedUpdate;
end; end;
procedure TCEProjectInspectWidget.projChanged(aProject: TCEProject); procedure TCEProjectInspectWidget.projChanged(aProject: ICECommonProject);
begin begin
if fProject <> aProject then exit; if fProject <> aProject.getProject then exit;
if Visible then beginDelayedUpdate; if Visible then beginDelayedUpdate;
end; end;
procedure TCEProjectInspectWidget.projCompiling(aProject: TCEProject); procedure TCEProjectInspectWidget.projCompiling(aProject: ICECommonProject);
begin begin
end; end;
{$ENDREGION} {$ENDREGION}

View File

@ -20,17 +20,17 @@ type
*) *)
TCESymbolExpander = class(ICEMultiDocObserver, ICEProjectObserver) TCESymbolExpander = class(ICEMultiDocObserver, ICEProjectObserver)
private private
fProj: TCEProject; fProj: TCENativeProject;
fDoc: TCESynMemo; fDoc: TCESynMemo;
fNeedUpdate: boolean; fNeedUpdate: boolean;
fSymbols: array[TCESymbol] of string; fSymbols: array[TCESymbol] of string;
procedure updateSymbols; procedure updateSymbols;
// //
procedure projNew(aProject: TCEProject); procedure projNew(aProject: ICECommonProject);
procedure projClosing(aProject: TCEProject); procedure projClosing(aProject: ICECommonProject);
procedure projFocused(aProject: TCEProject); procedure projFocused(aProject: ICECommonProject);
procedure projChanged(aProject: TCEProject); procedure projChanged(aProject: ICECommonProject);
procedure projCompiling(aProject: TCEProject); procedure projCompiling(aProject: ICECommonProject);
// //
procedure docNew(aDoc: TCESynMemo); procedure docNew(aDoc: TCESynMemo);
procedure docClosing(aDoc: TCESynMemo); procedure docClosing(aDoc: TCESynMemo);
@ -68,34 +68,40 @@ end;
{$ENDREGION} {$ENDREGION}
{$REGION ICEProjectObserver ----------------------------------------------------} {$REGION ICEProjectObserver ----------------------------------------------------}
procedure TCESymbolExpander.projNew(aProject: TCEProject); procedure TCESymbolExpander.projNew(aProject: ICECommonProject);
begin begin
fProj := aProject; case aProject.getKind of
pkNative: fProj := TCENativeProject(aProject.getProject);
pkDub:fProj := nil;
end;
fNeedUpdate := true; fNeedUpdate := true;
end; end;
procedure TCESymbolExpander.projClosing(aProject: TCEProject); procedure TCESymbolExpander.projClosing(aProject: ICECommonProject);
begin begin
if fProj <> aProject then if fProj <> aProject.getProject then
exit; exit;
fProj := nil; fProj := nil;
fNeedUpdate := true; fNeedUpdate := true;
end; end;
procedure TCESymbolExpander.projFocused(aProject: TCEProject); procedure TCESymbolExpander.projFocused(aProject: ICECommonProject);
begin begin
fProj := aProject; case aProject.getKind of
pkNative: fProj := TCENativeProject(aProject.getProject);
pkDub:fProj := nil;
end;
fNeedUpdate := true; fNeedUpdate := true;
end; end;
procedure TCESymbolExpander.projChanged(aProject: TCEProject); procedure TCESymbolExpander.projChanged(aProject: ICECommonProject);
begin begin
if fProj <> aProject then if fProj <> aProject.getProject then
exit; exit;
fNeedUpdate := true; fNeedUpdate := true;
end; end;
procedure TCESymbolExpander.projCompiling(aProject: TCEProject); procedure TCESymbolExpander.projCompiling(aProject: ICECommonProject);
begin begin
end; end;

View File

@ -82,7 +82,7 @@ type
fToolOutput: TMemoryStream; fToolOutput: TMemoryStream;
fAutoRefresh: Boolean; fAutoRefresh: Boolean;
fSingleClick: Boolean; fSingleClick: Boolean;
fProj: TCEProject; fProj: TCENativeProject;
fDoc: TCESynMemo; fDoc: TCESynMemo;
fToolProc: TCheckedAsyncProcess; fToolProc: TCheckedAsyncProcess;
fTodos: TTodoItems; fTodos: TTodoItems;
@ -94,11 +94,11 @@ type
procedure docChanged(aDoc: TCESynMemo); procedure docChanged(aDoc: TCESynMemo);
procedure docClosing(aDoc: TCESynMemo); procedure docClosing(aDoc: TCESynMemo);
// ICEProjectObserver // ICEProjectObserver
procedure projNew(aProject: TCEProject); procedure projNew(aProject: ICECommonProject);
procedure projChanged(aProject: TCEProject); procedure projChanged(aProject: ICECommonProject);
procedure projClosing(aProject: TCEProject); procedure projClosing(aProject: ICECommonProject);
procedure projFocused(aProject: TCEProject); procedure projFocused(aProject: ICECommonProject);
procedure projCompiling(aProject: TCEProject); procedure projCompiling(aProject: ICECommonProject);
// ICEEditableOptions // ICEEditableOptions
function optionedWantCategory(): string; function optionedWantCategory(): string;
function optionedWantEditorKind: TOptionEditorKind; function optionedWantEditorKind: TOptionEditorKind;
@ -338,38 +338,43 @@ end;
{$ENDREGION} {$ENDREGION}
{$REGION ICEProjectObserver ----------------------------------------------------} {$REGION ICEProjectObserver ----------------------------------------------------}
procedure TCETodoListWidget.projNew(aProject: TCEProject); procedure TCETodoListWidget.projNew(aProject: ICECommonProject);
begin begin
fProj := aProject; if aProject.getKind <> pkNative then
exit;
fProj := TCENativeProject(aProject.getProject);
end; end;
procedure TCETodoListWidget.projChanged(aProject: TCEProject); procedure TCETodoListWidget.projChanged(aProject: ICECommonProject);
begin begin
if fProj <> aProject then if fProj <> aProject.getProject then
exit; exit;
if Visible and fAutoRefresh then if Visible and fAutoRefresh then
callToolProcess; callToolProcess;
end; end;
procedure TCETodoListWidget.projClosing(aProject: TCEProject); procedure TCETodoListWidget.projClosing(aProject: ICECommonProject);
begin begin
if fProj <> aProject then if fProj <> aProject.getProject then
exit; exit;
fProj := nil; fProj := nil;
if Visible and fAutoRefresh then if Visible and fAutoRefresh then
callToolProcess; callToolProcess;
end; end;
procedure TCETodoListWidget.projFocused(aProject: TCEProject); procedure TCETodoListWidget.projFocused(aProject: ICECommonProject);
begin begin
if aProject = fProj then if aProject.getProject = fProj then
exit; exit;
fProj := aProject; if aProject.getKind <> pkNative then
exit;
fProj := TCENativeProject(aProject.getProject);
if Visible and fAutoRefresh then if Visible and fAutoRefresh then
callToolProcess; callToolProcess;
end; end;
procedure TCETodoListWidget.projCompiling(aProject: TCEProject); procedure TCETodoListWidget.projCompiling(aProject: ICECommonProject);
begin begin
end; end;