mirror of https://gitlab.com/basile.b/dexed.git
parent
4903e37542
commit
c91e8e47f8
|
|
@ -29,8 +29,8 @@ type
|
||||||
procedure completionExecute(Sender: TObject);
|
procedure completionExecute(Sender: TObject);
|
||||||
procedure PageControlChange(Sender: TObject);
|
procedure PageControlChange(Sender: TObject);
|
||||||
protected
|
protected
|
||||||
procedure UpdateByDelay; override;
|
procedure updateDelayed; override;
|
||||||
procedure UpdateByEvent; override;
|
procedure updateImperative; override;
|
||||||
private
|
private
|
||||||
fKeyChanged: boolean;
|
fKeyChanged: boolean;
|
||||||
fDoc: TCESynMemo;
|
fDoc: TCESynMemo;
|
||||||
|
|
@ -167,8 +167,8 @@ begin
|
||||||
fDoc := aDoc;
|
fDoc := aDoc;
|
||||||
pageControl.ActivePage := sheet;
|
pageControl.ActivePage := sheet;
|
||||||
focusedEditorChanged;
|
focusedEditorChanged;
|
||||||
beginUpdateByDelay;
|
beginDelayedUpdate;
|
||||||
UpdateByEvent;
|
updateImperative;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEEditorWidget.docClosing(aDoc: TCESynMemo);
|
procedure TCEEditorWidget.docClosing(aDoc: TCESynMemo);
|
||||||
|
|
@ -180,7 +180,7 @@ begin
|
||||||
fDoc.Parent := nil;
|
fDoc.Parent := nil;
|
||||||
fDoc := nil;
|
fDoc := nil;
|
||||||
if sheet <> nil then sheet.Free;
|
if sheet <> nil then sheet.Free;
|
||||||
UpdateByEvent;
|
updateImperative;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEEditorWidget.docFocused(aDoc: TCESynMemo);
|
procedure TCEEditorWidget.docFocused(aDoc: TCESynMemo);
|
||||||
|
|
@ -188,16 +188,16 @@ begin
|
||||||
if aDoc = fDoc then exit;
|
if aDoc = fDoc then exit;
|
||||||
fDoc := aDoc;
|
fDoc := aDoc;
|
||||||
focusedEditorChanged;
|
focusedEditorChanged;
|
||||||
beginUpdateByDelay;
|
beginDelayedUpdate;
|
||||||
UpdateByEvent;
|
updateImperative;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEEditorWidget.docChanged(aDoc: TCESynMemo);
|
procedure TCEEditorWidget.docChanged(aDoc: TCESynMemo);
|
||||||
begin
|
begin
|
||||||
if fDoc <> aDoc then exit;
|
if fDoc <> aDoc then exit;
|
||||||
fKeyChanged := true;
|
fKeyChanged := true;
|
||||||
beginUpdateByDelay;
|
beginDelayedUpdate;
|
||||||
UpdateByEvent;
|
updateImperative;
|
||||||
end;
|
end;
|
||||||
{$ENDREGION}
|
{$ENDREGION}
|
||||||
|
|
||||||
|
|
@ -300,13 +300,13 @@ begin
|
||||||
if (pageControl.ActivePage.Caption = '') then
|
if (pageControl.ActivePage.Caption = '') then
|
||||||
begin
|
begin
|
||||||
fKeyChanged := true;
|
fKeyChanged := true;
|
||||||
beginUpdateByDelay;
|
beginDelayedUpdate;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEEditorWidget.PageControlChange(Sender: TObject);
|
procedure TCEEditorWidget.PageControlChange(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
UpdateByEvent;
|
updateImperative;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEEditorWidget.completionExecute(Sender: TObject);
|
procedure TCEEditorWidget.completionExecute(Sender: TObject);
|
||||||
|
|
@ -325,12 +325,12 @@ end;
|
||||||
|
|
||||||
procedure TCEEditorWidget.memoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
procedure TCEEditorWidget.memoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||||
begin
|
begin
|
||||||
UpdateByEvent;
|
updateImperative;
|
||||||
case Byte(Key) of
|
case Byte(Key) of
|
||||||
VK_CLEAR,VK_RETURN,VK_BACK : fKeyChanged := true;
|
VK_CLEAR,VK_RETURN,VK_BACK : fKeyChanged := true;
|
||||||
end;
|
end;
|
||||||
if fKeyChanged then
|
if fKeyChanged then
|
||||||
beginUpdateByDelay;
|
beginDelayedUpdate;
|
||||||
//
|
//
|
||||||
if (Key = VK_UP) and (shift = [ssShift,ssCtrl]) then
|
if (Key = VK_UP) and (shift = [ssShift,ssCtrl]) then
|
||||||
getSymbolLoc;
|
getSymbolLoc;
|
||||||
|
|
@ -339,19 +339,19 @@ end;
|
||||||
procedure TCEEditorWidget.memoKeyPress(Sender: TObject; var Key: char);
|
procedure TCEEditorWidget.memoKeyPress(Sender: TObject; var Key: char);
|
||||||
begin
|
begin
|
||||||
fKeyChanged := true;
|
fKeyChanged := true;
|
||||||
beginUpdateByDelay;
|
beginDelayedUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEEditorWidget.memoMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
procedure TCEEditorWidget.memoMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||||
begin
|
begin
|
||||||
beginUpdateByDelay;
|
beginDelayedUpdate;
|
||||||
UpdateByEvent;
|
updateImperative;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEEditorWidget.memoMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
procedure TCEEditorWidget.memoMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
||||||
begin
|
begin
|
||||||
if not (ssLeft in Shift) then exit;
|
if not (ssLeft in Shift) then exit;
|
||||||
beginUpdateByDelay;
|
beginDelayedUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEEditorWidget.memoCtrlClick(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
procedure TCEEditorWidget.memoCtrlClick(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||||
|
|
@ -402,7 +402,7 @@ begin
|
||||||
DcdWrapper.getComplAtCursor(completion.ItemList);
|
DcdWrapper.getComplAtCursor(completion.ItemList);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEEditorWidget.UpdateByEvent;
|
procedure TCEEditorWidget.updateImperative;
|
||||||
const
|
const
|
||||||
modstr: array[boolean] of string = ('...', 'MODIFIED');
|
modstr: array[boolean] of string = ('...', 'MODIFIED');
|
||||||
begin
|
begin
|
||||||
|
|
@ -429,12 +429,12 @@ begin
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEEditorWidget.UpdateByDelay;
|
procedure TCEEditorWidget.updateDelayed;
|
||||||
var
|
var
|
||||||
md: string;
|
md: string;
|
||||||
begin
|
begin
|
||||||
if fDoc = nil then exit;
|
if fDoc = nil then exit;
|
||||||
UpdateByEvent;
|
updateImperative;
|
||||||
if not fKeyChanged then exit;
|
if not fKeyChanged then exit;
|
||||||
//
|
//
|
||||||
fKeyChanged := false;
|
fKeyChanged := false;
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ type
|
||||||
procedure projFocused(aProject: TCEProject);
|
procedure projFocused(aProject: TCEProject);
|
||||||
procedure projCompiling(aProject: TCEProject);
|
procedure projCompiling(aProject: TCEProject);
|
||||||
protected
|
protected
|
||||||
procedure UpdateByEvent; override;
|
procedure updateImperative; override;
|
||||||
procedure SetVisible(Value: boolean); override;
|
procedure SetVisible(Value: boolean); override;
|
||||||
public
|
public
|
||||||
constructor create(aOwner: TComponent); override;
|
constructor create(aOwner: TComponent); override;
|
||||||
|
|
@ -92,7 +92,7 @@ end;
|
||||||
procedure TCEProjectConfigurationWidget.SetVisible(Value: boolean);
|
procedure TCEProjectConfigurationWidget.SetVisible(Value: boolean);
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
if Visible then UpdateByEvent;
|
if Visible then updateImperative;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$ENDREGION --------------------------------------------------------------------}
|
{$ENDREGION --------------------------------------------------------------------}
|
||||||
|
|
@ -100,9 +100,9 @@ end;
|
||||||
{$REGION ICEProjectObserver ----------------------------------------------------}
|
{$REGION ICEProjectObserver ----------------------------------------------------}
|
||||||
procedure TCEProjectConfigurationWidget.projNew(aProject: TCEProject);
|
procedure TCEProjectConfigurationWidget.projNew(aProject: TCEProject);
|
||||||
begin
|
begin
|
||||||
beginUpdateByEvent;
|
beginImperativeUpdate;
|
||||||
fProj := aProject;
|
fProj := aProject;
|
||||||
if Visible then UpdateByEvent;
|
if Visible then updateImperative;
|
||||||
syncroMode := false;
|
syncroMode := false;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
@ -121,13 +121,13 @@ procedure TCEProjectConfigurationWidget.projChanged(aProject: TCEProject);
|
||||||
begin
|
begin
|
||||||
if fProj <> aProject then exit;
|
if fProj <> aProject then exit;
|
||||||
fProj := aProject;
|
fProj := aProject;
|
||||||
if Visible then UpdateByEvent;
|
if Visible then updateImperative;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEProjectConfigurationWidget.projFocused(aProject: TCEProject);
|
procedure TCEProjectConfigurationWidget.projFocused(aProject: TCEProject);
|
||||||
begin
|
begin
|
||||||
fProj := aProject;
|
fProj := aProject;
|
||||||
if Visible then UpdateByEvent;
|
if Visible then updateImperative;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEProjectConfigurationWidget.projCompiling(aProject: TCEProject);
|
procedure TCEProjectConfigurationWidget.projCompiling(aProject: TCEProject);
|
||||||
|
|
@ -142,9 +142,9 @@ begin
|
||||||
if Updating then exit;
|
if Updating then exit;
|
||||||
if selConf.ItemIndex = -1 then exit;
|
if selConf.ItemIndex = -1 then exit;
|
||||||
//
|
//
|
||||||
beginUpdateByEvent;
|
beginImperativeUpdate;
|
||||||
fProj.ConfigurationIndex := selConf.ItemIndex;
|
fProj.ConfigurationIndex := selConf.ItemIndex;
|
||||||
endUpdateByEvent;
|
endImperativeUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEProjectConfigurationWidget.TreeChange(Sender: TObject;
|
procedure TCEProjectConfigurationWidget.TreeChange(Sender: TObject;
|
||||||
|
|
@ -261,12 +261,12 @@ begin
|
||||||
if fProj = nil then exit;
|
if fProj = nil then exit;
|
||||||
//
|
//
|
||||||
nme := '';
|
nme := '';
|
||||||
beginUpdateByEvent;
|
beginImperativeUpdate;
|
||||||
cfg := fProj.addConfiguration;
|
cfg := fProj.addConfiguration;
|
||||||
// note: Cancel is actually related to the conf. name not to the add operation.
|
// 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;
|
fProj.ConfigurationIndex := cfg.Index;
|
||||||
endUpdateByEvent;
|
endImperativeUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEProjectConfigurationWidget.btnDelConfClick(Sender: TObject);
|
procedure TCEProjectConfigurationWidget.btnDelConfClick(Sender: TObject);
|
||||||
|
|
@ -274,13 +274,13 @@ begin
|
||||||
if fProj = nil then exit;
|
if fProj = nil then exit;
|
||||||
if fProj.OptionsCollection.Count = 1 then exit;
|
if fProj.OptionsCollection.Count = 1 then exit;
|
||||||
//
|
//
|
||||||
beginUpdateByEvent;
|
beginImperativeUpdate;
|
||||||
inspector.TIObject := nil;
|
inspector.TIObject := nil;
|
||||||
inspector.Clear;
|
inspector.Clear;
|
||||||
Invalidate;
|
Invalidate;
|
||||||
fProj.OptionsCollection.Delete(selConf.ItemIndex);
|
fProj.OptionsCollection.Delete(selConf.ItemIndex);
|
||||||
fProj.ConfigurationIndex := 0;
|
fProj.ConfigurationIndex := 0;
|
||||||
endUpdateByEvent;
|
endImperativeUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEProjectConfigurationWidget.btnCloneCurrClick(Sender: TObject);
|
procedure TCEProjectConfigurationWidget.btnCloneCurrClick(Sender: TObject);
|
||||||
|
|
@ -291,13 +291,13 @@ begin
|
||||||
if fProj = nil then exit;
|
if fProj = nil then exit;
|
||||||
//
|
//
|
||||||
nme := '';
|
nme := '';
|
||||||
beginUpdateByEvent;
|
beginImperativeUpdate;
|
||||||
src := fProj.currentConfiguration;
|
src := fProj.currentConfiguration;
|
||||||
trg := fProj.addConfiguration;
|
trg := fProj.addConfiguration;
|
||||||
trg.assign(src);
|
trg.assign(src);
|
||||||
if InputQuery('Configuration name', '', nme) then trg.name := nme;
|
if InputQuery('Configuration name', '', nme) then trg.name := nme;
|
||||||
fProj.ConfigurationIndex := trg.Index;
|
fProj.ConfigurationIndex := trg.Index;
|
||||||
endUpdateByEvent;
|
endImperativeUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEProjectConfigurationWidget.btnSyncEditClick(Sender: TObject);
|
procedure TCEProjectConfigurationWidget.btnSyncEditClick(Sender: TObject);
|
||||||
|
|
@ -365,7 +365,7 @@ begin
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEProjectConfigurationWidget.UpdateByEvent;
|
procedure TCEProjectConfigurationWidget.updateImperative;
|
||||||
var
|
var
|
||||||
i: NativeInt;
|
i: NativeInt;
|
||||||
begin
|
begin
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ type
|
||||||
procedure replaceEvent(Sender: TObject; const ASearch, AReplace:
|
procedure replaceEvent(Sender: TObject; const ASearch, AReplace:
|
||||||
string; Line, Column: integer; var ReplaceAction: TSynReplaceAction);
|
string; Line, Column: integer; var ReplaceAction: TSynReplaceAction);
|
||||||
protected
|
protected
|
||||||
procedure UpdateByEvent; override;
|
procedure updateImperative; override;
|
||||||
public
|
public
|
||||||
constructor Create(aOwner: TComponent); override;
|
constructor Create(aOwner: TComponent); override;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
|
|
@ -221,7 +221,7 @@ begin
|
||||||
fHasRestarted := false;
|
fHasRestarted := false;
|
||||||
chkFromCur.Checked := true;
|
chkFromCur.Checked := true;
|
||||||
end;
|
end;
|
||||||
UpdateByEvent;
|
updateImperative;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCESearchWidget.actReplaceNextExecute(sender: TObject);
|
procedure TCESearchWidget.actReplaceNextExecute(sender: TObject);
|
||||||
|
|
@ -249,7 +249,7 @@ begin
|
||||||
if fDoc.SearchReplace(fToFind, fReplaceWth, getOptions + [ssoReplace]) <> 0 then
|
if fDoc.SearchReplace(fToFind, fReplaceWth, getOptions + [ssoReplace]) <> 0 then
|
||||||
fHasSearched := true;
|
fHasSearched := true;
|
||||||
fDoc.OnReplaceText := nil;
|
fDoc.OnReplaceText := nil;
|
||||||
UpdateByEvent;
|
updateImperative;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCESearchWidget.actReplaceAllExecute(sender: TObject);
|
procedure TCESearchWidget.actReplaceAllExecute(sender: TObject);
|
||||||
|
|
@ -275,7 +275,7 @@ begin
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
fDoc.OnReplaceText := nil;
|
fDoc.OnReplaceText := nil;
|
||||||
UpdateByEvent;
|
updateImperative;
|
||||||
end;
|
end;
|
||||||
{$ENDREGION}
|
{$ENDREGION}
|
||||||
|
|
||||||
|
|
@ -283,20 +283,20 @@ end;
|
||||||
procedure TCESearchWidget.docNew(aDoc: TCESynMemo);
|
procedure TCESearchWidget.docNew(aDoc: TCESynMemo);
|
||||||
begin
|
begin
|
||||||
fDoc := aDoc;
|
fDoc := aDoc;
|
||||||
UpdateByEvent;
|
updateImperative;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCESearchWidget.docClosing(aDoc: TCESynMemo);
|
procedure TCESearchWidget.docClosing(aDoc: TCESynMemo);
|
||||||
begin
|
begin
|
||||||
if fDoc = aDoc then fDoc := nil;
|
if fDoc = aDoc then fDoc := nil;
|
||||||
UpdateByEvent;
|
updateImperative;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCESearchWidget.docFocused(aDoc: TCESynMemo);
|
procedure TCESearchWidget.docFocused(aDoc: TCESynMemo);
|
||||||
begin
|
begin
|
||||||
if fDoc = aDoc then exit;
|
if fDoc = aDoc then exit;
|
||||||
fDoc := aDoc;
|
fDoc := aDoc;
|
||||||
UpdateByEvent;
|
updateImperative;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCESearchWidget.docChanged(aDoc: TCESynMemo);
|
procedure TCESearchWidget.docChanged(aDoc: TCESynMemo);
|
||||||
|
|
@ -315,7 +315,7 @@ end;
|
||||||
procedure TCESearchWidget.chkEnableRepChange(Sender: TObject);
|
procedure TCESearchWidget.chkEnableRepChange(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if Updating then exit;
|
if Updating then exit;
|
||||||
UpdateByEvent;
|
updateImperative;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCESearchWidget.cbReplaceWthChange(Sender: TObject);
|
procedure TCESearchWidget.cbReplaceWthChange(Sender: TObject);
|
||||||
|
|
@ -325,7 +325,7 @@ begin
|
||||||
fHasSearched := false;
|
fHasSearched := false;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCESearchWidget.UpdateByEvent;
|
procedure TCESearchWidget.updateImperative;
|
||||||
begin
|
begin
|
||||||
fActFindNext.Enabled := fDoc <> nil;
|
fActFindNext.Enabled := fDoc <> nil;
|
||||||
fActReplaceNext.Enabled := (fDoc <> nil) and (chkEnableRep.Checked);
|
fActReplaceNext.Enabled := (fDoc <> nil) and (chkEnableRep.Checked);
|
||||||
|
|
|
||||||
|
|
@ -102,8 +102,7 @@ type
|
||||||
procedure btnRefreshClick(Sender: TObject);
|
procedure btnRefreshClick(Sender: TObject);
|
||||||
procedure TreeDeletion(Sender: TObject; Node: TTreeNode);
|
procedure TreeDeletion(Sender: TObject; Node: TTreeNode);
|
||||||
procedure TreeFilterEdit1AfterFilter(Sender: TObject);
|
procedure TreeFilterEdit1AfterFilter(Sender: TObject);
|
||||||
function TreeFilterEdit1FilterItem(Item: TObject; out Done: Boolean
|
function TreeFilterEdit1FilterItem(Item: TObject; out Done: Boolean): Boolean;
|
||||||
): Boolean;
|
|
||||||
procedure TreeFilterEdit1MouseEnter(Sender: TObject);
|
procedure TreeFilterEdit1MouseEnter(Sender: TObject);
|
||||||
procedure TreeKeyPress(Sender: TObject; var Key: char);
|
procedure TreeKeyPress(Sender: TObject; var Key: char);
|
||||||
private
|
private
|
||||||
|
|
@ -149,7 +148,7 @@ type
|
||||||
function optionedWantContainer: TPersistent;
|
function optionedWantContainer: TPersistent;
|
||||||
procedure optionedEvent(anEvent: TOptionEditorEvent);
|
procedure optionedEvent(anEvent: TOptionEditorEvent);
|
||||||
protected
|
protected
|
||||||
procedure UpdateByDelay; override;
|
procedure updateDelayed; override;
|
||||||
//
|
//
|
||||||
function contextName: string; override;
|
function contextName: string; override;
|
||||||
function contextActionCount: integer; override;
|
function contextActionCount: integer; override;
|
||||||
|
|
@ -411,17 +410,17 @@ end;
|
||||||
|
|
||||||
procedure TCESymbolListWidget.actAutoRefreshExecute(Sender: TObject);
|
procedure TCESymbolListWidget.actAutoRefreshExecute(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
autoRefresh := not autoRefresh;
|
autoRefresh := fActAutoRefresh.Checked;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCESymbolListWidget.actRefreshOnChangeExecute(Sender: TObject);
|
procedure TCESymbolListWidget.actRefreshOnChangeExecute(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
refreshOnChange := not refreshOnChange;
|
refreshOnChange := fActRefreshOnChange.Checked;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCESymbolListWidget.actRefreshOnFocusExecute(Sender: TObject);
|
procedure TCESymbolListWidget.actRefreshOnFocusExecute(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
refreshOnFocus := not refreshOnFocus;
|
refreshOnFocus := fActRefreshOnFocus.Checked;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCESymbolListWidget.actCopyIdentExecute(Sender: TObject);
|
procedure TCESymbolListWidget.actCopyIdentExecute(Sender: TObject);
|
||||||
|
|
@ -460,7 +459,7 @@ end;
|
||||||
procedure TCESymbolListWidget.docNew(aDoc: TCESynMemo);
|
procedure TCESymbolListWidget.docNew(aDoc: TCESynMemo);
|
||||||
begin
|
begin
|
||||||
fDoc := aDoc;
|
fDoc := aDoc;
|
||||||
beginUpdateByDelay;
|
beginDelayedUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCESymbolListWidget.docClosing(aDoc: TCESynMemo);
|
procedure TCESymbolListWidget.docClosing(aDoc: TCESynMemo);
|
||||||
|
|
@ -477,7 +476,7 @@ begin
|
||||||
fDoc := aDoc;
|
fDoc := aDoc;
|
||||||
if not Visible then exit;
|
if not Visible then exit;
|
||||||
//
|
//
|
||||||
if fAutoRefresh then beginUpdateByDelay
|
if fAutoRefresh then beginDelayedUpdate
|
||||||
else if fRefreshOnFocus then callToolProc;
|
else if fRefreshOnFocus then callToolProc;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
@ -486,13 +485,13 @@ begin
|
||||||
if fDoc <> aDoc then exit;
|
if fDoc <> aDoc then exit;
|
||||||
if not Visible then exit;
|
if not Visible then exit;
|
||||||
//
|
//
|
||||||
if fAutoRefresh then beginUpdateByDelay
|
if fAutoRefresh then beginDelayedUpdate
|
||||||
else if fRefreshOnChange then callToolProc;
|
else if fRefreshOnChange then callToolProc;
|
||||||
end;
|
end;
|
||||||
{$ENDREGION}
|
{$ENDREGION}
|
||||||
|
|
||||||
{$REGION Symbol-tree things ----------------------------------------------------}
|
{$REGION Symbol-tree things ----------------------------------------------------}
|
||||||
procedure TCESymbolListWidget.UpdateByDelay;
|
procedure TCESymbolListWidget.updateDelayed;
|
||||||
begin
|
begin
|
||||||
if not fAutoRefresh then exit;
|
if not fAutoRefresh then exit;
|
||||||
callToolProc;
|
callToolProc;
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,8 @@ type
|
||||||
fLoopInter: Integer;
|
fLoopInter: Integer;
|
||||||
fUpdaterAuto: TTimer;
|
fUpdaterAuto: TTimer;
|
||||||
fUpdaterDelay: TTimer;
|
fUpdaterDelay: TTimer;
|
||||||
fWidgUpdateCount: NativeInt;
|
fImperativeUpdateCount: Integer;
|
||||||
|
fLoopUpdateCount: Integer;
|
||||||
procedure setDelayDur(aValue: Integer);
|
procedure setDelayDur(aValue: Integer);
|
||||||
procedure setLoopInt(aValue: Integer);
|
procedure setLoopInt(aValue: Integer);
|
||||||
procedure updaterAutoProc(Sender: TObject);
|
procedure updaterAutoProc(Sender: TObject);
|
||||||
|
|
@ -39,11 +40,11 @@ type
|
||||||
fModal: boolean;
|
fModal: boolean;
|
||||||
fID: string;
|
fID: string;
|
||||||
// a descendant overrides to implementi a periodic update.
|
// a descendant overrides to implementi a periodic update.
|
||||||
procedure UpdateByLoop; virtual;
|
procedure updateLoop; virtual;
|
||||||
// a descendant overrides to implement an event driven update.
|
// a descendant overrides to implement an imperative update.
|
||||||
procedure UpdateByEvent; virtual;
|
procedure updateImperative; virtual;
|
||||||
// a descendant overrides to implement a delayed update event.
|
// a descendant overrides to implement a delayed update.
|
||||||
procedure UpdateByDelay; virtual;
|
procedure updateDelayed; virtual;
|
||||||
//
|
//
|
||||||
function contextName: string; virtual;
|
function contextName: string; virtual;
|
||||||
function contextActionCount: integer; virtual;
|
function contextActionCount: integer; virtual;
|
||||||
|
|
@ -63,19 +64,23 @@ type
|
||||||
// restarts the wait period to the delayed update event.
|
// restarts the wait period to the delayed update event.
|
||||||
// if not re-called during 'updaterByDelayDuration' ms then
|
// if not re-called during 'updaterByDelayDuration' ms then
|
||||||
// 'UpdateByDelay' is called once.
|
// 'UpdateByDelay' is called once.
|
||||||
procedure beginUpdateByDelay;
|
procedure beginDelayedUpdate;
|
||||||
// prevent any pending update.
|
// prevent any pending update.
|
||||||
procedure stopUpdateByDelay;
|
procedure stopDelayedUpdate;
|
||||||
// immediate call any pending update.
|
// immediate call any pending delayed update.
|
||||||
procedure endUpdatebyDelay;
|
procedure forceDelayedUpdate;
|
||||||
// increments the updates count.
|
|
||||||
procedure beginUpdateByEvent;
|
// increments the imperative updates count.
|
||||||
// decrements the update count and call 'UpdateByEvent' if the
|
procedure beginImperativeUpdate;
|
||||||
// counter value is null.
|
// decrements the imperative updates count and call updateImperative() if the
|
||||||
procedure endUpdateByEvent;
|
// counter value is equal to zero.
|
||||||
// immediate call 'UpdateByEvent'
|
procedure endImperativeUpdate;
|
||||||
procedure forceUpdateByEvent;
|
// calls updateImperative() immediatly
|
||||||
//
|
procedure forceImperativeUpdate;
|
||||||
|
|
||||||
|
// increment a flag used to indicate if updateLoop has to be called
|
||||||
|
procedure IncLoopUpdate;
|
||||||
|
|
||||||
// returns true if one of the three updater is processing.
|
// returns true if one of the three updater is processing.
|
||||||
property updating: boolean read fUpdating;
|
property updating: boolean read fUpdating;
|
||||||
// true by default, allow a widget to be docked.
|
// true by default, allow a widget to be docked.
|
||||||
|
|
@ -223,42 +228,47 @@ begin
|
||||||
fUpdaterAuto.Interval := fLoopInter;
|
fUpdaterAuto.Interval := fLoopInter;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEWidget.beginUpdateByEvent;
|
procedure TCEWidget.IncLoopUpdate;
|
||||||
begin
|
begin
|
||||||
Inc(fWidgUpdateCount);
|
inc(fLoopUpdateCount);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEWidget.endUpdateByEvent;
|
procedure TCEWidget.beginImperativeUpdate;
|
||||||
begin
|
begin
|
||||||
Dec(fWidgUpdateCount);
|
Inc(fImperativeUpdateCount);
|
||||||
if fWidgUpdateCount > 0 then exit;
|
end;
|
||||||
|
|
||||||
|
procedure TCEWidget.endImperativeUpdate;
|
||||||
|
begin
|
||||||
|
Dec(fImperativeUpdateCount);
|
||||||
|
if fImperativeUpdateCount > 0 then exit;
|
||||||
fUpdating := true;
|
fUpdating := true;
|
||||||
UpdateByEvent;
|
updateImperative;
|
||||||
fUpdating := false;
|
fUpdating := false;
|
||||||
fWidgUpdateCount := 0;
|
fImperativeUpdateCount := 0;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEWidget.forceUpdateByEvent;
|
procedure TCEWidget.forceImperativeUpdate;
|
||||||
begin
|
begin
|
||||||
fUpdating := true;
|
fUpdating := true;
|
||||||
UpdateByEvent;
|
updateImperative;
|
||||||
fUpdating := false;
|
fUpdating := false;
|
||||||
fWidgUpdateCount := 0;
|
fImperativeUpdateCount := 0;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEWidget.beginUpdateByDelay;
|
procedure TCEWidget.beginDelayedUpdate;
|
||||||
begin
|
begin
|
||||||
fUpdaterDelay.Enabled := false;
|
fUpdaterDelay.Enabled := false;
|
||||||
fUpdaterDelay.Enabled := true;
|
fUpdaterDelay.Enabled := true;
|
||||||
fUpdaterDelay.OnTimer := @updaterLatchProc;
|
fUpdaterDelay.OnTimer := @updaterLatchProc;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEWidget.stopUpdateByDelay;
|
procedure TCEWidget.stopDelayedUpdate;
|
||||||
begin
|
begin
|
||||||
fUpdaterDelay.OnTimer := nil;
|
fUpdaterDelay.OnTimer := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEWidget.endUpdateByDelay;
|
procedure TCEWidget.forceDelayedUpdate;
|
||||||
begin
|
begin
|
||||||
updaterLatchProc(nil);
|
updaterLatchProc(nil);
|
||||||
end;
|
end;
|
||||||
|
|
@ -266,27 +276,29 @@ end;
|
||||||
procedure TCEWidget.updaterAutoProc(Sender: TObject);
|
procedure TCEWidget.updaterAutoProc(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
fUpdating := true;
|
fUpdating := true;
|
||||||
UpdateByLoop;
|
if fLoopUpdateCount > 0 then
|
||||||
|
updateLoop;
|
||||||
|
fLoopUpdateCount := 0;
|
||||||
fUpdating := false;
|
fUpdating := false;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEWidget.updaterLatchProc(Sender: TObject);
|
procedure TCEWidget.updaterLatchProc(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
fUpdating := true;
|
fUpdating := true;
|
||||||
UpdateByDelay;
|
updateDelayed;
|
||||||
fUpdating := false;
|
fUpdating := false;
|
||||||
fUpdaterDelay.OnTimer := nil;
|
fUpdaterDelay.OnTimer := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEWidget.UpdateByLoop;
|
procedure TCEWidget.updateLoop;
|
||||||
begin
|
begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEWidget.UpdateByEvent;
|
procedure TCEWidget.updateImperative;
|
||||||
begin
|
begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEWidget.UpdateByDelay;
|
procedure TCEWidget.updateDelayed;
|
||||||
begin
|
begin
|
||||||
end;
|
end;
|
||||||
{$ENDREGION}
|
{$ENDREGION}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue