Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 24 additions & 18 deletions Source/Menu/PythonTools.Menu.pas
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,19 @@ TToolsMenuEventHook = class;
TPythonToolsMenu = class
private
class var FInstance: TPythonToolsMenu;
class procedure Initialize();
class procedure Finalize();
private
FToolsMenuItems: TObjectList<TMenuItem>;
FToolsMenuHook: TToolsMenuEventHook;
function GetINTAServices(): INTAServices;
function GetToolsMenu(): TMenuItem;
function LoadPythonToolMenuImage(): integer;

procedure DoCreateMenuHooked(Sender: TObject);
procedure DoDestroyMenu();
public
class constructor Create();
class destructor Destroy();

constructor Create();
destructor Destroy(); override;

Expand Down Expand Up @@ -79,11 +81,20 @@ TPythonToolsMenuItem = class(TMenuItem)

{ TPythonToolsMenu }

class constructor TPythonToolsMenu.Create;
begin
FInstance := TPythonToolsMenu.Create();
end;

class destructor TPythonToolsMenu.Destroy;
begin
FInstance.Free();
end;

constructor TPythonToolsMenu.Create;
begin
FToolsMenuItems := TObjectList<TMenuItem>.Create();
FToolsMenuHook := TToolsMenuEventHook.Create(
GetINTAServices().MainMenu.Items.Find('Tools'));
FToolsMenuHook := TToolsMenuEventHook.Create(GetToolsMenu());
end;

destructor TPythonToolsMenu.Destroy;
Expand All @@ -94,14 +105,15 @@ destructor TPythonToolsMenu.Destroy;
inherited;
end;

class procedure TPythonToolsMenu.Initialize;
begin
FInstance := TPythonToolsMenu.Create();
end;

class procedure TPythonToolsMenu.Finalize;
function TPythonToolsMenu.GetToolsMenu: TMenuItem;
var
LMenuItem: TMenuItem;
begin
FInstance.Free();
for LMenuItem in GetINTAServices().MainMenu.Items do begin
if (LMenuItem.Name = sToolsMenu) then
Exit(LMenuItem);
end;
raise Exception.Create('Tools menu not found.');
end;

function TPythonToolsMenu.GetINTAServices: INTAServices;
Expand Down Expand Up @@ -221,7 +233,7 @@ procedure TPythonToolsMenu.DoDestroyMenu;
LRoot: TMenuItem;
LMenuItem: TMenuItem;
begin
LRoot := GetINTAServices().MainMenu.Items.Find('Tools');
LRoot := GetToolsMenu();
if Assigned(LRoot) then begin
with GetINTAServices() do begin
MenuBeginUpdate();
Expand Down Expand Up @@ -286,10 +298,4 @@ procedure TToolsMenuEventHook.UnHook(AEvt: TNotifyEvent);
FHook := nil;
end;

initialization
TPythonToolsMenu.Initialize();

finalization
TPythonToolsMenu.Finalize();

end.