From f6b2c020310d387bce92e5f3886f994c63084f10 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Sun, 30 Nov 2014 04:07:08 +0100 Subject: [PATCH] updated interfaces and observers --- src/ce_interfaces.pas | 8 ++++---- src/ce_observer.pas | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/ce_interfaces.pas b/src/ce_interfaces.pas index d2b57882..c21d5c63 100644 --- a/src/ce_interfaces.pas +++ b/src/ce_interfaces.pas @@ -100,10 +100,10 @@ type *) ICEMainMenuProvider = interface ['ICEMainMenuProvider'] - // item must contain the full items tree to be added - procedure menuDeclare(out item: TMenuItem); - // the implementer can update the actions used in the menu declared previously. - procedure menuActionsUpdate; + // item is a new mainMenu entry. item must be filled with the sub-items to be added. + procedure menuDeclare(item: TMenuItem); + // item is the mainMenu entry declared previously. the sub items can be updated, deleted. + procedure menuUpdate(item: TMenuItem); end; (** * An implementer agregates its observers menus. diff --git a/src/ce_observer.pas b/src/ce_observer.pas index c5a0e58f..0ba19b56 100644 --- a/src/ce_observer.pas +++ b/src/ce_observer.pas @@ -52,6 +52,8 @@ type fObservers: TObjectList; // test for a specific interface when adding an observer. function acceptObserver(aObject: TObject): boolean; virtual; + function getObserversCount: Integer; + function getObserver(index: Integer): TObject; public constructor create; virtual; destructor destroy; override; @@ -59,6 +61,9 @@ type procedure addObserver(anObserver: TObject); procedure removeObserver(anObserver: TObject); procedure updateObservers; virtual; + // + property observersCount: Integer read getObserversCount; + property observers[index: Integer]: TObject read getObserver; end; var @@ -164,6 +169,16 @@ begin exit(false); end; +function TCECustomSubject.getObserversCount: Integer; +begin + exit(fObservers.Count); +end; + +function TCECustomSubject.getObserver(index: Integer): TObject; +begin + exit(fObservers.Items[index]); +end; + procedure TCECustomSubject.addObserver(anObserver: TObject); begin if not acceptObserver(anObserver) then