renamed widget updater identifiers

byevent->imperative
This commit is contained in:
Basile Burg 2015-03-08 14:23:02 +01:00
parent 4903e37542
commit c91e8e47f8
5 changed files with 101 additions and 90 deletions

View File

@ -29,8 +29,8 @@ type
procedure completionExecute(Sender: TObject);
procedure PageControlChange(Sender: TObject);
protected
procedure UpdateByDelay; override;
procedure UpdateByEvent; override;
procedure updateDelayed; override;
procedure updateImperative; override;
private
fKeyChanged: boolean;
fDoc: TCESynMemo;
@ -167,8 +167,8 @@ begin
fDoc := aDoc;
pageControl.ActivePage := sheet;
focusedEditorChanged;
beginUpdateByDelay;
UpdateByEvent;
beginDelayedUpdate;
updateImperative;
end;
procedure TCEEditorWidget.docClosing(aDoc: TCESynMemo);
@ -180,7 +180,7 @@ begin
fDoc.Parent := nil;
fDoc := nil;
if sheet <> nil then sheet.Free;
UpdateByEvent;
updateImperative;
end;
procedure TCEEditorWidget.docFocused(aDoc: TCESynMemo);
@ -188,16 +188,16 @@ begin
if aDoc = fDoc then exit;
fDoc := aDoc;
focusedEditorChanged;
beginUpdateByDelay;
UpdateByEvent;
beginDelayedUpdate;
updateImperative;
end;
procedure TCEEditorWidget.docChanged(aDoc: TCESynMemo);
begin
if fDoc <> aDoc then exit;
fKeyChanged := true;
beginUpdateByDelay;
UpdateByEvent;
beginDelayedUpdate;
updateImperative;
end;
{$ENDREGION}
@ -300,13 +300,13 @@ begin
if (pageControl.ActivePage.Caption = '') then
begin
fKeyChanged := true;
beginUpdateByDelay;
beginDelayedUpdate;
end;
end;
procedure TCEEditorWidget.PageControlChange(Sender: TObject);
begin
UpdateByEvent;
updateImperative;
end;
procedure TCEEditorWidget.completionExecute(Sender: TObject);
@ -325,12 +325,12 @@ end;
procedure TCEEditorWidget.memoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
UpdateByEvent;
updateImperative;
case Byte(Key) of
VK_CLEAR,VK_RETURN,VK_BACK : fKeyChanged := true;
end;
if fKeyChanged then
beginUpdateByDelay;
beginDelayedUpdate;
//
if (Key = VK_UP) and (shift = [ssShift,ssCtrl]) then
getSymbolLoc;
@ -339,19 +339,19 @@ end;
procedure TCEEditorWidget.memoKeyPress(Sender: TObject; var Key: char);
begin
fKeyChanged := true;
beginUpdateByDelay;
beginDelayedUpdate;
end;
procedure TCEEditorWidget.memoMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
beginUpdateByDelay;
UpdateByEvent;
beginDelayedUpdate;
updateImperative;
end;
procedure TCEEditorWidget.memoMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if not (ssLeft in Shift) then exit;
beginUpdateByDelay;
beginDelayedUpdate;
end;
procedure TCEEditorWidget.memoCtrlClick(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
@ -402,7 +402,7 @@ begin
DcdWrapper.getComplAtCursor(completion.ItemList);
end;
procedure TCEEditorWidget.UpdateByEvent;
procedure TCEEditorWidget.updateImperative;
const
modstr: array[boolean] of string = ('...', 'MODIFIED');
begin
@ -429,12 +429,12 @@ begin
end;
end;
procedure TCEEditorWidget.UpdateByDelay;
procedure TCEEditorWidget.updateDelayed;
var
md: string;
begin
if fDoc = nil then exit;
UpdateByEvent;
updateImperative;
if not fKeyChanged then exit;
//
fKeyChanged := false;

View File

@ -47,7 +47,7 @@ type
procedure projFocused(aProject: TCEProject);
procedure projCompiling(aProject: TCEProject);
protected
procedure UpdateByEvent; override;
procedure updateImperative; override;
procedure SetVisible(Value: boolean); override;
public
constructor create(aOwner: TComponent); override;
@ -92,7 +92,7 @@ end;
procedure TCEProjectConfigurationWidget.SetVisible(Value: boolean);
begin
inherited;
if Visible then UpdateByEvent;
if Visible then updateImperative;
end;
{$ENDREGION --------------------------------------------------------------------}
@ -100,9 +100,9 @@ end;
{$REGION ICEProjectObserver ----------------------------------------------------}
procedure TCEProjectConfigurationWidget.projNew(aProject: TCEProject);
begin
beginUpdateByEvent;
beginImperativeUpdate;
fProj := aProject;
if Visible then UpdateByEvent;
if Visible then updateImperative;
syncroMode := false;
end;
@ -121,13 +121,13 @@ procedure TCEProjectConfigurationWidget.projChanged(aProject: TCEProject);
begin
if fProj <> aProject then exit;
fProj := aProject;
if Visible then UpdateByEvent;
if Visible then updateImperative;
end;
procedure TCEProjectConfigurationWidget.projFocused(aProject: TCEProject);
begin
fProj := aProject;
if Visible then UpdateByEvent;
if Visible then updateImperative;
end;
procedure TCEProjectConfigurationWidget.projCompiling(aProject: TCEProject);
@ -142,9 +142,9 @@ begin
if Updating then exit;
if selConf.ItemIndex = -1 then exit;
//
beginUpdateByEvent;
beginImperativeUpdate;
fProj.ConfigurationIndex := selConf.ItemIndex;
endUpdateByEvent;
endImperativeUpdate;
end;
procedure TCEProjectConfigurationWidget.TreeChange(Sender: TObject;
@ -261,12 +261,12 @@ begin
if fProj = nil then exit;
//
nme := '';
beginUpdateByEvent;
beginImperativeUpdate;
cfg := fProj.addConfiguration;
// note: Cancel is actually related to the conf. name not to the add operation.
if InputQuery('Configuration name', '', nme) then cfg.name := nme;
fProj.ConfigurationIndex := cfg.Index;
endUpdateByEvent;
endImperativeUpdate;
end;
procedure TCEProjectConfigurationWidget.btnDelConfClick(Sender: TObject);
@ -274,13 +274,13 @@ begin
if fProj = nil then exit;
if fProj.OptionsCollection.Count = 1 then exit;
//
beginUpdateByEvent;
beginImperativeUpdate;
inspector.TIObject := nil;
inspector.Clear;
Invalidate;
fProj.OptionsCollection.Delete(selConf.ItemIndex);
fProj.ConfigurationIndex := 0;
endUpdateByEvent;
endImperativeUpdate;
end;
procedure TCEProjectConfigurationWidget.btnCloneCurrClick(Sender: TObject);
@ -291,13 +291,13 @@ begin
if fProj = nil then exit;
//
nme := '';
beginUpdateByEvent;
beginImperativeUpdate;
src := fProj.currentConfiguration;
trg := fProj.addConfiguration;
trg.assign(src);
if InputQuery('Configuration name', '', nme) then trg.name := nme;
fProj.ConfigurationIndex := trg.Index;
endUpdateByEvent;
endImperativeUpdate;
end;
procedure TCEProjectConfigurationWidget.btnSyncEditClick(Sender: TObject);
@ -365,7 +365,7 @@ begin
end;
end;
procedure TCEProjectConfigurationWidget.UpdateByEvent;
procedure TCEProjectConfigurationWidget.updateImperative;
var
i: NativeInt;
begin

View File

@ -51,7 +51,7 @@ type
procedure replaceEvent(Sender: TObject; const ASearch, AReplace:
string; Line, Column: integer; var ReplaceAction: TSynReplaceAction);
protected
procedure UpdateByEvent; override;
procedure updateImperative; override;
public
constructor Create(aOwner: TComponent); override;
destructor Destroy; override;
@ -221,7 +221,7 @@ begin
fHasRestarted := false;
chkFromCur.Checked := true;
end;
UpdateByEvent;
updateImperative;
end;
procedure TCESearchWidget.actReplaceNextExecute(sender: TObject);
@ -249,7 +249,7 @@ begin
if fDoc.SearchReplace(fToFind, fReplaceWth, getOptions + [ssoReplace]) <> 0 then
fHasSearched := true;
fDoc.OnReplaceText := nil;
UpdateByEvent;
updateImperative;
end;
procedure TCESearchWidget.actReplaceAllExecute(sender: TObject);
@ -275,7 +275,7 @@ begin
end;
end;
fDoc.OnReplaceText := nil;
UpdateByEvent;
updateImperative;
end;
{$ENDREGION}
@ -283,20 +283,20 @@ end;
procedure TCESearchWidget.docNew(aDoc: TCESynMemo);
begin
fDoc := aDoc;
UpdateByEvent;
updateImperative;
end;
procedure TCESearchWidget.docClosing(aDoc: TCESynMemo);
begin
if fDoc = aDoc then fDoc := nil;
UpdateByEvent;
updateImperative;
end;
procedure TCESearchWidget.docFocused(aDoc: TCESynMemo);
begin
if fDoc = aDoc then exit;
fDoc := aDoc;
UpdateByEvent;
updateImperative;
end;
procedure TCESearchWidget.docChanged(aDoc: TCESynMemo);
@ -315,7 +315,7 @@ end;
procedure TCESearchWidget.chkEnableRepChange(Sender: TObject);
begin
if Updating then exit;
UpdateByEvent;
updateImperative;
end;
procedure TCESearchWidget.cbReplaceWthChange(Sender: TObject);
@ -325,7 +325,7 @@ begin
fHasSearched := false;
end;
procedure TCESearchWidget.UpdateByEvent;
procedure TCESearchWidget.updateImperative;
begin
fActFindNext.Enabled := fDoc <> nil;
fActReplaceNext.Enabled := (fDoc <> nil) and (chkEnableRep.Checked);

View File

@ -102,8 +102,7 @@ type
procedure btnRefreshClick(Sender: TObject);
procedure TreeDeletion(Sender: TObject; Node: TTreeNode);
procedure TreeFilterEdit1AfterFilter(Sender: TObject);
function TreeFilterEdit1FilterItem(Item: TObject; out Done: Boolean
): Boolean;
function TreeFilterEdit1FilterItem(Item: TObject; out Done: Boolean): Boolean;
procedure TreeFilterEdit1MouseEnter(Sender: TObject);
procedure TreeKeyPress(Sender: TObject; var Key: char);
private
@ -149,7 +148,7 @@ type
function optionedWantContainer: TPersistent;
procedure optionedEvent(anEvent: TOptionEditorEvent);
protected
procedure UpdateByDelay; override;
procedure updateDelayed; override;
//
function contextName: string; override;
function contextActionCount: integer; override;
@ -411,17 +410,17 @@ end;
procedure TCESymbolListWidget.actAutoRefreshExecute(Sender: TObject);
begin
autoRefresh := not autoRefresh;
autoRefresh := fActAutoRefresh.Checked;
end;
procedure TCESymbolListWidget.actRefreshOnChangeExecute(Sender: TObject);
begin
refreshOnChange := not refreshOnChange;
refreshOnChange := fActRefreshOnChange.Checked;
end;
procedure TCESymbolListWidget.actRefreshOnFocusExecute(Sender: TObject);
begin
refreshOnFocus := not refreshOnFocus;
refreshOnFocus := fActRefreshOnFocus.Checked;
end;
procedure TCESymbolListWidget.actCopyIdentExecute(Sender: TObject);
@ -460,7 +459,7 @@ end;
procedure TCESymbolListWidget.docNew(aDoc: TCESynMemo);
begin
fDoc := aDoc;
beginUpdateByDelay;
beginDelayedUpdate;
end;
procedure TCESymbolListWidget.docClosing(aDoc: TCESynMemo);
@ -477,7 +476,7 @@ begin
fDoc := aDoc;
if not Visible then exit;
//
if fAutoRefresh then beginUpdateByDelay
if fAutoRefresh then beginDelayedUpdate
else if fRefreshOnFocus then callToolProc;
end;
@ -486,13 +485,13 @@ begin
if fDoc <> aDoc then exit;
if not Visible then exit;
//
if fAutoRefresh then beginUpdateByDelay
if fAutoRefresh then beginDelayedUpdate
else if fRefreshOnChange then callToolProc;
end;
{$ENDREGION}
{$REGION Symbol-tree things ----------------------------------------------------}
procedure TCESymbolListWidget.UpdateByDelay;
procedure TCESymbolListWidget.updateDelayed;
begin
if not fAutoRefresh then exit;
callToolProc;

View File

@ -24,7 +24,8 @@ type
fLoopInter: Integer;
fUpdaterAuto: TTimer;
fUpdaterDelay: TTimer;
fWidgUpdateCount: NativeInt;
fImperativeUpdateCount: Integer;
fLoopUpdateCount: Integer;
procedure setDelayDur(aValue: Integer);
procedure setLoopInt(aValue: Integer);
procedure updaterAutoProc(Sender: TObject);
@ -39,11 +40,11 @@ type
fModal: boolean;
fID: string;
// a descendant overrides to implementi a periodic update.
procedure UpdateByLoop; virtual;
// a descendant overrides to implement an event driven update.
procedure UpdateByEvent; virtual;
// a descendant overrides to implement a delayed update event.
procedure UpdateByDelay; virtual;
procedure updateLoop; virtual;
// a descendant overrides to implement an imperative update.
procedure updateImperative; virtual;
// a descendant overrides to implement a delayed update.
procedure updateDelayed; virtual;
//
function contextName: string; virtual;
function contextActionCount: integer; virtual;
@ -63,19 +64,23 @@ type
// restarts the wait period to the delayed update event.
// if not re-called during 'updaterByDelayDuration' ms then
// 'UpdateByDelay' is called once.
procedure beginUpdateByDelay;
procedure beginDelayedUpdate;
// prevent any pending update.
procedure stopUpdateByDelay;
// immediate call any pending update.
procedure endUpdatebyDelay;
// increments the updates count.
procedure beginUpdateByEvent;
// decrements the update count and call 'UpdateByEvent' if the
// counter value is null.
procedure endUpdateByEvent;
// immediate call 'UpdateByEvent'
procedure forceUpdateByEvent;
//
procedure stopDelayedUpdate;
// immediate call any pending delayed update.
procedure forceDelayedUpdate;
// increments the imperative updates count.
procedure beginImperativeUpdate;
// decrements the imperative updates count and call updateImperative() if the
// counter value is equal to zero.
procedure endImperativeUpdate;
// 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.
property updating: boolean read fUpdating;
// true by default, allow a widget to be docked.
@ -223,42 +228,47 @@ begin
fUpdaterAuto.Interval := fLoopInter;
end;
procedure TCEWidget.beginUpdateByEvent;
procedure TCEWidget.IncLoopUpdate;
begin
Inc(fWidgUpdateCount);
inc(fLoopUpdateCount);
end;
procedure TCEWidget.endUpdateByEvent;
procedure TCEWidget.beginImperativeUpdate;
begin
Dec(fWidgUpdateCount);
if fWidgUpdateCount > 0 then exit;
Inc(fImperativeUpdateCount);
end;
procedure TCEWidget.endImperativeUpdate;
begin
Dec(fImperativeUpdateCount);
if fImperativeUpdateCount > 0 then exit;
fUpdating := true;
UpdateByEvent;
updateImperative;
fUpdating := false;
fWidgUpdateCount := 0;
fImperativeUpdateCount := 0;
end;
procedure TCEWidget.forceUpdateByEvent;
procedure TCEWidget.forceImperativeUpdate;
begin
fUpdating := true;
UpdateByEvent;
updateImperative;
fUpdating := false;
fWidgUpdateCount := 0;
fImperativeUpdateCount := 0;
end;
procedure TCEWidget.beginUpdateByDelay;
procedure TCEWidget.beginDelayedUpdate;
begin
fUpdaterDelay.Enabled := false;
fUpdaterDelay.Enabled := true;
fUpdaterDelay.OnTimer := @updaterLatchProc;
end;
procedure TCEWidget.stopUpdateByDelay;
procedure TCEWidget.stopDelayedUpdate;
begin
fUpdaterDelay.OnTimer := nil;
end;
procedure TCEWidget.endUpdateByDelay;
procedure TCEWidget.forceDelayedUpdate;
begin
updaterLatchProc(nil);
end;
@ -266,27 +276,29 @@ end;
procedure TCEWidget.updaterAutoProc(Sender: TObject);
begin
fUpdating := true;
UpdateByLoop;
if fLoopUpdateCount > 0 then
updateLoop;
fLoopUpdateCount := 0;
fUpdating := false;
end;
procedure TCEWidget.updaterLatchProc(Sender: TObject);
begin
fUpdating := true;
UpdateByDelay;
updateDelayed;
fUpdating := false;
fUpdaterDelay.OnTimer := nil;
end;
procedure TCEWidget.UpdateByLoop;
procedure TCEWidget.updateLoop;
begin
end;
procedure TCEWidget.UpdateByEvent;
procedure TCEWidget.updateImperative;
begin
end;
procedure TCEWidget.UpdateByDelay;
procedure TCEWidget.updateDelayed;
begin
end;
{$ENDREGION}