You've already forked lazarus-ccr
tvplanit: In VpNavBar component editor, update properties changed by object inspector (caption, icon index).
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6373 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -108,20 +108,26 @@ type
|
||||
|
||||
private
|
||||
FBar: TVpNavBar;
|
||||
FDesigner: TComponentEditorDesigner;
|
||||
RefreshTimer: TTimer;
|
||||
FSelImgIndex: Integer;
|
||||
function FindBtnIndex(APersistent: TPersistent): Integer;
|
||||
function FindFolderIndex(APersistent: TPersistent): Integer;
|
||||
procedure OnGetSelection(const ASelection: TPersistentSelectionList);
|
||||
procedure OnPersistentAdded(APersistent: TPersistent; Select: boolean);
|
||||
procedure OnPersistentDeleting(APersistent: TPersistent);
|
||||
procedure OnSetSelection(const ASelection: TPersistentSelectionList);
|
||||
function GetFolderDisplayName(AFolder: TVpNavFolder): String;
|
||||
function GetItemDisplayName(AItem: TVpNavBtnItem): String;
|
||||
procedure OnTimer(Sender: TObject);
|
||||
procedure SelectionChanged(AOrderChanged: Boolean = false);
|
||||
procedure SelectList(SelList: TPersistentSelectionList);
|
||||
procedure UpdateBtnState;
|
||||
|
||||
private
|
||||
FDesigner: TComponentEditorDesigner;
|
||||
procedure AddDesignHookHandlers;
|
||||
procedure OnGetSelection(const ASelection: TPersistentSelectionList);
|
||||
procedure OnObjectPropertyChanged(Sender: TObject; ANewObject: TPersistent);
|
||||
procedure OnPersistentAdded(APersistent: TPersistent; Select: boolean);
|
||||
procedure OnPersistentDeleting(APersistent: TPersistent);
|
||||
procedure OnSetSelection(const ASelection: TPersistentSelectionList);
|
||||
|
||||
public
|
||||
{ Public declarations }
|
||||
constructor Create(AOwner: TComponent; ABar: TVpNavBar;
|
||||
@ -142,36 +148,49 @@ implementation
|
||||
{$R *.lfm}
|
||||
|
||||
uses
|
||||
PropEditUtils,
|
||||
PropEditUtils, StrUtils,
|
||||
VpMisc;
|
||||
|
||||
const
|
||||
ITEMS_MARGIN = 2;
|
||||
IMG_MARGIN = 4;
|
||||
|
||||
(*
|
||||
procedure EditNavBar(ADesigner: TComponentEditorDesigner; ABar: TVpNavBar);
|
||||
var
|
||||
editor: TObject;
|
||||
begin
|
||||
editor := FindEditorForm(ABar);
|
||||
if editor = nil then begin
|
||||
DebugLn('EditorForm not found');
|
||||
editor := TfrmNavBarEd.Create(Application, ABar, ADesigner);
|
||||
//RegisterEditorForm(editor, ABar); -- wp
|
||||
RegisterEditorForm(editor, ABar);
|
||||
end;
|
||||
if editor <> nil then
|
||||
with TfrmNavBarEd(editor) do begin
|
||||
//ComponentEditor := Self;
|
||||
ShowOnTop;
|
||||
end;
|
||||
end;
|
||||
|
||||
*)
|
||||
|
||||
{*** TVpNavBarEditor ***}
|
||||
|
||||
procedure TVpNavBarEditor.ExecuteVerb(Index : Integer);
|
||||
var
|
||||
bar: TVpNavBar;
|
||||
editor: TObject;
|
||||
begin
|
||||
if Index = 0 then
|
||||
EditNavBar(Designer, (Component as TVpNavBar));
|
||||
if Index = 0 then begin
|
||||
bar := Component as TVpNavBar;
|
||||
editor := FindEditorForm(bar);
|
||||
if editor = nil then begin
|
||||
DebugLn('EditorForm not found.');
|
||||
editor := TfrmNavBarEd.Create(Application, bar, Designer);
|
||||
RegisterEditorForm(editor, bar);
|
||||
end else
|
||||
TfrmNavBarEd(editor).SetData(Designer, bar);
|
||||
if editor <> nil then
|
||||
TfrmNavBarEd(editor).ShowOnTop;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TVpNavBarEditor.GetVerb(Index : Integer) : string;
|
||||
@ -212,26 +231,36 @@ begin
|
||||
end;
|
||||
FSelImgIndex := -1;
|
||||
|
||||
if Assigned(GlobalDesignHook) then
|
||||
begin
|
||||
// GlobalDesignHook.AddHandlerComponentRenamed(OnComponentRenamed);
|
||||
GlobalDesignHook.AddHandlerPersistentDeleting(OnPersistentDeleting);
|
||||
GlobalDesignHook.AddHandlerGetSelection(OnGetSelection);
|
||||
GlobalDesignHook.AddHandlerSetSelection(OnSetSelection);
|
||||
GlobalDesignHook.AddHandlerPersistentAdded(OnPersistentAdded);
|
||||
end;
|
||||
AddDesignHookHandlers;
|
||||
SelectionChanged;
|
||||
end;
|
||||
|
||||
destructor TfrmNavBarEd.Destroy;
|
||||
begin
|
||||
//UnregisterEditorForm(Self); -- wp
|
||||
UnregisterEditorForm(Self);
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TfrmNavBarEd.AddDesignHookHandlers;
|
||||
begin
|
||||
if GlobalDesignHook <> nil then
|
||||
begin
|
||||
GlobalDesignHook.RemoveAllHandlersForObject(Self);
|
||||
if FBar <> nil then
|
||||
begin
|
||||
GlobalDesignHook.AddHandlerObjectPropertyChanged(OnObjectPropertyChanged);
|
||||
GlobalDesignHook.AddHandlerPersistentAdded(OnPersistentAdded);
|
||||
GlobalDesignHook.AddHandlerPersistentDeleting(OnPersistentDeleting);
|
||||
GlobalDesignHook.AddHandlerGetSelection(OnGetSelection);
|
||||
GlobalDesignHook.AddHandlerSetSelection(OnSetSelection);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmNavBarEd.FormClose(Sender: TObject;
|
||||
var Action: TCloseAction);
|
||||
begin
|
||||
UnregisterEditorForm(Self);
|
||||
Action := caFree;
|
||||
end;
|
||||
|
||||
@ -303,6 +332,16 @@ begin
|
||||
Result := -1;
|
||||
end;
|
||||
|
||||
function TfrmNavBarEd.GetFolderDisplayName(AFolder: TVpNavFolder): String;
|
||||
begin
|
||||
Result := IfThen(AFolder.Caption <> '', AFolder.Caption, AFolder.Name);
|
||||
end;
|
||||
|
||||
function TfrmNavBarEd.GetItemDisplayName(AItem: TVpNavBtnItem): String;
|
||||
begin
|
||||
Result := IfThen(AItem.Caption <> '', AItem.Caption, AItem.Name);
|
||||
end;
|
||||
|
||||
procedure TfrmNavBarEd.OnGetSelection(const ASelection: TPersistentSelectionList);
|
||||
var
|
||||
i: Integer;
|
||||
@ -324,6 +363,26 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmNavBarEd.OnObjectPropertyChanged(Sender: TObject; ANewObject: TPersistent);
|
||||
var
|
||||
i: integer;
|
||||
item: TVpNavBtnItem;
|
||||
folder: TVpNavFolder;
|
||||
begin
|
||||
if ANewObject is TVpNavBtnItem then begin
|
||||
item := TVpNavBtnItem(ANewObject);
|
||||
i := FindBtnIndex(item);
|
||||
if i > -1 then
|
||||
lbItems.Items[i] := GetItemDisplayName(item);
|
||||
end else
|
||||
if ANewObject is TVpNavFolder then begin
|
||||
folder := TVpNavFolder(ANewObject);
|
||||
i := FindFolderIndex(folder);
|
||||
if i > -1 then
|
||||
lbFolders.Items[i] := GetFolderDisplayName(folder);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmNavBarEd.OnPersistentAdded(APersistent: TPersistent; Select: boolean);
|
||||
var
|
||||
i: Integer;
|
||||
@ -407,9 +466,7 @@ var
|
||||
begin
|
||||
lbFolders.Clear;
|
||||
for I := 0 to Pred(Bar.FolderCount) do begin
|
||||
S := Bar.Folders[I].Caption;
|
||||
if S = '' then
|
||||
S := Bar.Folders[I].Name;
|
||||
S := GetFolderDisplayName(Bar.Folders[I]);
|
||||
lbFolders.Items.AddObject(S, Bar.Folders[I]);
|
||||
end;
|
||||
end;
|
||||
@ -423,9 +480,7 @@ begin
|
||||
if lbFolders.ItemIndex = -1 then exit;
|
||||
with Bar.Folders[lbFolders.ItemIndex] do
|
||||
for I := 0 to pred(ItemCount) do begin
|
||||
S := Items[I].Caption;
|
||||
if S = '' then
|
||||
S := Items[I].Name;
|
||||
S := GetItemDisplayName(Items[I]);
|
||||
lbItems.Items.AddObject(S,Items[i]);
|
||||
end;
|
||||
end;
|
||||
@ -458,17 +513,7 @@ begin
|
||||
end;
|
||||
FSelImgIndex := -1;
|
||||
|
||||
if GlobalDesignHook <> nil then
|
||||
begin
|
||||
GlobalDesignHook.RemoveAllHandlersForObject(Self);
|
||||
if FBar <> nil then
|
||||
begin
|
||||
GlobalDesignHook.AddHandlerPersistentAdded(OnPersistentAdded);
|
||||
GlobalDesignHook.AddHandlerPersistentDeleting(OnPersistentDeleting);
|
||||
GlobalDesignHook.AddHandlerGetSelection(OnGetSelection);
|
||||
GlobalDesignHook.AddHandlerSetSelection(OnSetSelection);
|
||||
end;
|
||||
end;
|
||||
AddDesignHookHandlers;
|
||||
end;
|
||||
|
||||
procedure TfrmNavBarEd.lbFoldersClick(Sender: TObject);
|
||||
|
Reference in New Issue
Block a user