From 966669d1389ca7f829350d9e68265107c2cca63a Mon Sep 17 00:00:00 2001 From: loesje_ Date: Thu, 14 Feb 2013 23:23:03 +0000 Subject: [PATCH] * Do not show components that are not usable on the component-palette git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2684 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/iosdesigner/iosnibdesigner.pas | 90 +++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/components/iosdesigner/iosnibdesigner.pas b/components/iosdesigner/iosnibdesigner.pas index b3aa88a0d..32c1e8d44 100644 --- a/components/iosdesigner/iosnibdesigner.pas +++ b/components/iosdesigner/iosnibdesigner.pas @@ -104,6 +104,25 @@ implementation uses ObjInspStrConsts; +type + + { TiOSEventHandlers } + + TiOSEventHandlers = class + private + FUpdateVisibleHandlerSet: boolean; + FUpdateVisibleHandlerDesignerSet: boolean; + public + constructor create; + destructor destroy; + procedure ChangeLookupRoot; + procedure HandlerUpdateVisible(AComponent: TRegisteredComponent; var VoteVisible: integer); + procedure HandlerUpdateVisibleDesigner(AComponent: TRegisteredComponent; var VoteVisible: integer); + end; + +var + GiOSEventHandlers: TiOSEventHandlers = nil; + procedure Register; procedure SetFakeUnitname(AClass: TClass); @@ -130,6 +149,8 @@ begin FormEditingHook.RegisterDesignerMediator(TUIResponderDesignerMediator); RegisterComponents('iOS',[UIWindow,UINavigationController,UIButton,UILabel,UITextField,UITableView,UISearchBar,UIView,UIViewController, UIProgressView]); + GiOSEventHandlers := TiOSEventHandlers.Create; + RegisterClass(UINavigationItem); RegisterClass(UIViewController); RegisterClass(UINavigationBar); @@ -151,6 +172,75 @@ begin SetFakeUnitname(UIProgressView); end; +{ TiOSEventHandlers } + +constructor TiOSEventHandlers.create; +begin + GlobalDesignHook.AddHandlerChangeLookupRoot(@ChangeLookupRoot); +end; + +destructor TiOSEventHandlers.destroy; +begin + GlobalDesignHook.RemoveAllHandlersForObject(self); +end; + +procedure TiOSEventHandlers.ChangeLookupRoot; +begin + if GlobalDesignHook.LookupRoot is tiOSFakeComponent then + begin + if not FUpdateVisibleHandlerDesignerSet then + begin + IDEComponentPalette.AddHandlerUpdateVisible(@GiOSEventHandlers.HandlerUpdateVisibleDesigner); + FUpdateVisibleHandlerDesignerSet := true; + end; + if FUpdateVisibleHandlerSet then + begin + IDEComponentPalette.RemoveHandlerUpdateVisible(@GiOSEventHandlers.HandlerUpdateVisible); + FUpdateVisibleHandlerSet := false; + end; + end + else if assigned(GlobalDesignHook.LookupRoot) then + begin + if FUpdateVisibleHandlerDesignerSet then + begin + IDEComponentPalette.RemoveHandlerUpdateVisible(@GiOSEventHandlers.HandlerUpdateVisibleDesigner); + FUpdateVisibleHandlerDesignerSet := False; + end; + if not FUpdateVisibleHandlerSet then + begin + IDEComponentPalette.AddHandlerUpdateVisible(@GiOSEventHandlers.HandlerUpdateVisible); + FUpdateVisibleHandlerSet := true; + end; + end + else + begin + if FUpdateVisibleHandlerDesignerSet then + begin + IDEComponentPalette.RemoveHandlerUpdateVisible(@GiOSEventHandlers.HandlerUpdateVisibleDesigner); + FUpdateVisibleHandlerDesignerSet := False; + end; + if FUpdateVisibleHandlerSet then + begin + IDEComponentPalette.RemoveHandlerUpdateVisible(@GiOSEventHandlers.HandlerUpdateVisible); + FUpdateVisibleHandlerSet := false; + end; + end; +end; + +procedure TiOSEventHandlers.HandlerUpdateVisible( + AComponent: TRegisteredComponent; var VoteVisible: integer); +begin + if assigned(AComponent) and assigned(AComponent.ComponentClass) and AComponent.ComponentClass.InheritsFrom(tiOSFakeComponent) then + dec(VoteVisible); +end; + +procedure TiOSEventHandlers.HandlerUpdateVisibleDesigner( + AComponent: TRegisteredComponent; var VoteVisible: integer); +begin + if not AComponent.ComponentClass.InheritsFrom(tiOSFakeComponent) then + dec(VoteVisible); +end; + { TiOSMethodPropertyEditor } procedure TiOSMethodPropertyEditor.GetValues(Proc: TGetStrProc);