project inspector use updateDelayed()

This commit is contained in:
Basile Burg 2015-03-08 14:26:28 +01:00
parent bd9cc5cbdf
commit f6fe94fe62
1 changed files with 25 additions and 12 deletions

View File

@ -28,7 +28,8 @@ type
procedure TreeKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure TreeKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure TreeSelectionChanged(Sender: TObject); procedure TreeSelectionChanged(Sender: TObject);
protected protected
procedure UpdateByEvent; override; procedure updateImperative; override;
procedure updateDelayed; override;
procedure SetVisible(Value: boolean); override; procedure SetVisible(Value: boolean); override;
private private
fActOpenFile: TAction; fActOpenFile: TAction;
@ -113,7 +114,7 @@ end;
procedure TCEProjectInspectWidget.SetVisible(Value: boolean); procedure TCEProjectInspectWidget.SetVisible(Value: boolean);
begin begin
inherited; inherited;
if Value then UpdateByEvent; if Value then updateImperative;
end; end;
{$ENDREGION} {$ENDREGION}
@ -147,7 +148,7 @@ end;
procedure TCEProjectInspectWidget.projNew(aProject: TCEProject); procedure TCEProjectInspectWidget.projNew(aProject: TCEProject);
begin begin
fProject := aProject; fProject := aProject;
if Visible then UpdateByEvent; if Visible then updateImperative;
end; end;
procedure TCEProjectInspectWidget.projClosing(aProject: TCEProject); procedure TCEProjectInspectWidget.projClosing(aProject: TCEProject);
@ -155,19 +156,19 @@ begin
if fProject <> aProject then if fProject <> aProject then
exit; exit;
fProject := nil; fProject := nil;
UpdateByEvent; updateImperative;
end; end;
procedure TCEProjectInspectWidget.projFocused(aProject: TCEProject); procedure TCEProjectInspectWidget.projFocused(aProject: TCEProject);
begin begin
fProject := aProject; fProject := aProject;
if Visible then UpdateByEvent; if Visible then beginDelayedUpdate;
end; end;
procedure TCEProjectInspectWidget.projChanged(aProject: TCEProject); procedure TCEProjectInspectWidget.projChanged(aProject: TCEProject);
begin begin
if fProject <> aProject then exit; if fProject <> aProject then exit;
if Visible then UpdateByEvent; if Visible then beginDelayedUpdate;
end; end;
procedure TCEProjectInspectWidget.projCompiling(aProject: TCEProject); procedure TCEProjectInspectWidget.projCompiling(aProject: TCEProject);
@ -209,7 +210,7 @@ begin
begin begin
i := Tree.Selected.Index; i := Tree.Selected.Index;
fProject.ConfigurationIndex := i; fProject.ConfigurationIndex := i;
UpdateByEvent; beginDelayedUpdate;
end; end;
end; end;
@ -229,8 +230,11 @@ begin
with TOpenDialog.Create(nil) do with TOpenDialog.Create(nil) do
try try
filter := DdiagFilter; filter := DdiagFilter;
if execute then if execute then begin
fProject.beginUpdate;
fProject.addSource(filename); fProject.addSource(filename);
fProject.endUpdate;
end;
finally finally
free; free;
end; end;
@ -288,7 +292,6 @@ begin
if extractFilePath(fProject.getAbsoluteSourceName(i)) = dir then if extractFilePath(fProject.getAbsoluteSourceName(i)) = dir then
fProject.Sources.Delete(i); fProject.Sources.Delete(i);
fProject.endUpdate; fProject.endUpdate;
UpdateByEvent;
end; end;
procedure TCEProjectInspectWidget.btnRemFileClick(Sender: TObject); procedure TCEProjectInspectWidget.btnRemFileClick(Sender: TObject);
@ -303,8 +306,11 @@ begin
begin begin
fname := Tree.Selected.Text; fname := Tree.Selected.Text;
i := fProject.Sources.IndexOf(fname); i := fProject.Sources.IndexOf(fname);
if i > -1 then fProject.Sources.Delete(i); if i > -1 then begin
UpdateByEvent; fProject.beginUpdate;
fProject.Sources.Delete(i);
fProject.endUpdate;
end;
end; end;
end; end;
@ -319,11 +325,18 @@ begin
if FileExists(fname) then if FileExists(fname) then
begin begin
multidoc.openDocument(fname); multidoc.openDocument(fname);
fProject.beginUpdate;
fProject.addSource(fname); fProject.addSource(fname);
fProject.endUpdate;
end; end;
end; end;
procedure TCEProjectInspectWidget.UpdateByEvent; procedure TCEProjectInspectWidget.updateDelayed;
begin
updateImperative;
end;
procedure TCEProjectInspectWidget.updateImperative;
var var
src, fold, conf: string; src, fold, conf: string;
lst: TStringList; lst: TStringList;