mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-06 00:46:01 +02:00
fixed removing deleted mainmenus from menu editor
git-svn-id: trunk@4481 -
This commit is contained in:
parent
f98120ba94
commit
e04775ee8e
@ -136,7 +136,7 @@ type
|
|||||||
procedure SaveAsTemplateClick(Sender: TObject);
|
procedure SaveAsTemplateClick(Sender: TObject);
|
||||||
procedure DeleteFromTemplateClick(Sender: TObject);
|
procedure DeleteFromTemplateClick(Sender: TObject);
|
||||||
procedure OnComponentModified(Sender: TComponent);
|
procedure OnComponentModified(Sender: TComponent);
|
||||||
|
|
||||||
// Functions for editing menus
|
// Functions for editing menus
|
||||||
function AddNewItemBefore(MenuItem: PDesignerMenuItem; Ident: string): PDesignerMenuItem;
|
function AddNewItemBefore(MenuItem: PDesignerMenuItem; Ident: string): PDesignerMenuItem;
|
||||||
function AddNewItemAfter(MenuItem: PDesignerMenuItem; Ident: string): PDesignerMenuItem;
|
function AddNewItemAfter(MenuItem: PDesignerMenuItem; Ident: string): PDesignerMenuItem;
|
||||||
@ -266,7 +266,7 @@ begin
|
|||||||
DesignerPopupMenu.Items.Add(PopupMenuItem);
|
DesignerPopupMenu.Items.Add(PopupMenuItem);
|
||||||
|
|
||||||
//Handle for renaming a caption in the OI for some menuitem to rename also a
|
//Handle for renaming a caption in the OI for some menuitem to rename also a
|
||||||
// propriet designermenuitem
|
// designermenuitem
|
||||||
GlobalDesignHook.AddHandlerModified(@OnComponentModified);
|
GlobalDesignHook.AddHandlerModified(@OnComponentModified);
|
||||||
|
|
||||||
new(Root);
|
new(Root);
|
||||||
|
@ -38,10 +38,9 @@ interface
|
|||||||
uses
|
uses
|
||||||
Classes, SysUtils, LCLProc, Forms, Controls, Graphics, Dialogs, LResources,
|
Classes, SysUtils, LCLProc, Forms, Controls, Graphics, Dialogs, LResources,
|
||||||
StdCtrls, Buttons, ExtCtrls, LMessages, DesignerMenu, Menus, GraphType,
|
StdCtrls, Buttons, ExtCtrls, LMessages, DesignerMenu, Menus, GraphType,
|
||||||
ComponentEditors, Designer, LazarusIDEStrConsts;
|
ComponentEditors, Designer, LazarusIDEStrConsts, PropEdits;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
TMainMenuEditorForm = class(TForm)
|
TMainMenuEditorForm = class(TForm)
|
||||||
private
|
private
|
||||||
fDesignerMainMenu: TDesignerMainMenu;
|
fDesignerMainMenu: TDesignerMainMenu;
|
||||||
@ -53,6 +52,7 @@ type
|
|||||||
Label_menus: TLabel;
|
Label_menus: TLabel;
|
||||||
//DesignerPopupMenu: TPopupMenu;
|
//DesignerPopupMenu: TPopupMenu;
|
||||||
// fEditor: TComponentEditor;
|
// fEditor: TComponentEditor;
|
||||||
|
procedure OnComponentDeleting(AComponent: TComponent);
|
||||||
public
|
public
|
||||||
constructor CreateWithMenu(aOwner: TComponent; aMenu: TMenu; aEditor: TComponentEditor; aDesigner: TDesigner);
|
constructor CreateWithMenu(aOwner: TComponent; aMenu: TMenu; aEditor: TComponentEditor; aDesigner: TDesigner);
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
@ -72,21 +72,33 @@ type
|
|||||||
protected
|
protected
|
||||||
public
|
public
|
||||||
constructor Create(AComponent: TComponent; ADesigner: TComponentEditorDesigner); override;
|
constructor Create(AComponent: TComponent; ADesigner: TComponentEditorDesigner); override;
|
||||||
|
destructor Destroy; override;
|
||||||
procedure Edit; override;
|
procedure Edit; override;
|
||||||
property Menu: TMainMenu read fMenu write fMenu;
|
property Menu: TMainMenu read fMenu write fMenu;
|
||||||
|
|
||||||
// function Menu: TMenu;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
MainMenuEditorForm: TMainMenuEditorForm;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
{ TMainMenuEditorForm }
|
{ TMainMenuEditorForm }
|
||||||
|
|
||||||
|
procedure TMainMenuEditorForm.OnComponentDeleting(AComponent: TComponent);
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
if FindRootDesigner(AComponent)<>fDesigner then exit;
|
||||||
|
i:=List_menus.Items.IndexOf(AComponent.Name);
|
||||||
|
if i>=0 then List_menus.Items.Delete(i);
|
||||||
|
end;
|
||||||
|
|
||||||
constructor TMainMenuEditorForm.CreateWithMenu(aOwner: TComponent; aMenu: TMenu; aEditor: TComponentEditor; aDesigner: TDesigner);
|
constructor TMainMenuEditorForm.CreateWithMenu(aOwner: TComponent; aMenu: TMenu; aEditor: TComponentEditor; aDesigner: TDesigner);
|
||||||
var
|
var
|
||||||
Cmp: TPanel;
|
Cmp: TPanel;
|
||||||
Cmp2: TScrollBox;
|
Cmp2: TScrollBox;
|
||||||
i: Integer;
|
i: Integer;
|
||||||
|
CurComponent: TComponent;
|
||||||
begin
|
begin
|
||||||
inherited Create(AOwner);
|
inherited Create(AOwner);
|
||||||
|
|
||||||
@ -133,7 +145,6 @@ begin
|
|||||||
Top:=10;
|
Top:=10;
|
||||||
Width:=180;
|
Width:=180;
|
||||||
Height:=20;
|
Height:=20;
|
||||||
// content of "Text" is generated from LazarusIDEStrConsts
|
|
||||||
Text:=lisMenuEditorSelectMenu;
|
Text:=lisMenuEditorSelectMenu;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -145,23 +156,22 @@ begin
|
|||||||
Top:=30;
|
Top:=30;
|
||||||
Width:=180;
|
Width:=180;
|
||||||
Height:=180;
|
Height:=180;
|
||||||
OnCLick:=@SelectMenuClick;
|
OnClick:=@SelectMenuClick;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
for i:=0 to aDesigner.Form.ComponentCount - 1 do
|
for i:=0 to aDesigner.Form.ComponentCount - 1 do
|
||||||
begin
|
begin
|
||||||
if (aDesigner.Form.Components[i] is TMainMenu) or (aDesigner.Form.Components[i] is TPopupMenu) then
|
CurComponent:=aDesigner.Form.Components[i];
|
||||||
|
if (CurComponent is TMainMenu) or (CurComponent is TPopupMenu) then
|
||||||
begin
|
begin
|
||||||
List_menus.Items.Add(aDesigner.Form.Components[i].Name);
|
List_menus.Items.Add(CurComponent.Name);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
for i:=0 to List_menus.Items.Count - 1 do
|
for i:=0 to List_menus.Items.Count - 1 do
|
||||||
begin
|
begin
|
||||||
//writeln(aMenu.Name,' --- ',List_menus.Items[i]);
|
|
||||||
if (aMenu.Name = List_menus.Items[i]) then
|
if (aMenu.Name = List_menus.Items[i]) then
|
||||||
begin
|
begin
|
||||||
List_menus.Selected[i]:=true;
|
List_menus.Selected[i]:=true;
|
||||||
//writeln('Mam ho .....');
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -174,10 +184,14 @@ begin
|
|||||||
LoadMainMenu;
|
LoadMainMenu;
|
||||||
SetCoordinates(10,10,0,DesignerMainMenu.Root);
|
SetCoordinates(10,10,0,DesignerMainMenu.Root);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
GlobalDesignHook.AddHandlerComponentDeleting(@OnComponentDeleting);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TMainMenuEditorForm.Destroy;
|
destructor TMainMenuEditorForm.Destroy;
|
||||||
begin
|
begin
|
||||||
|
if GlobalDesignHook<>nil then
|
||||||
|
GlobalDesignHook.RemoveAllHandlersForObject(Self);
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -231,12 +245,20 @@ begin
|
|||||||
fDesigner:=TDesigner(aDesigner);
|
fDesigner:=TDesigner(aDesigner);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
destructor TMainMenuComponentEditor.Destroy;
|
||||||
|
begin
|
||||||
|
if MainMenuEditorForm.DesignerMainMenu.Editor=Self then begin
|
||||||
|
FreeThenNil(MainMenuEditorForm);
|
||||||
|
end;
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TMainMenuComponentEditor.Edit;
|
procedure TMainMenuComponentEditor.Edit;
|
||||||
var
|
|
||||||
MainMenuEditorForm: TMainMenuEditorForm;
|
|
||||||
begin
|
begin
|
||||||
//if Menu=nil then RaiseGDBException('TMainMenuComponentEditor.Edit Menu=nil');
|
//if Menu=nil then RaiseGDBException('TMainMenuComponentEditor.Edit Menu=nil');
|
||||||
MainMenuEditorForm:=TMainMenuEditorForm.CreateWithMenu(Application, TMenu(GetComponent), Self, fDesigner);
|
if MainMenuEditorForm=nil then
|
||||||
|
MainMenuEditorForm:=TMainMenuEditorForm.CreateWithMenu(Application,
|
||||||
|
TMenu(GetComponent), Self, fDesigner);
|
||||||
MainMenuEditorForm.Show;
|
MainMenuEditorForm.Show;
|
||||||
//MainMenuEditorForm.Free;
|
//MainMenuEditorForm.Free;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user