@@ -15,17 +15,19 @@ TToolsMenuEventHook = class;
1515 TPythonToolsMenu = class
1616 private
1717 class var FInstance: TPythonToolsMenu;
18- class procedure Initialize ();
19- class procedure Finalize ();
2018 private
2119 FToolsMenuItems: TObjectList<TMenuItem>;
2220 FToolsMenuHook: TToolsMenuEventHook;
2321 function GetINTAServices (): INTAServices;
22+ function GetToolsMenu (): TMenuItem;
2423 function LoadPythonToolMenuImage (): integer;
2524
2625 procedure DoCreateMenuHooked (Sender: TObject);
2726 procedure DoDestroyMenu ();
2827 public
28+ class constructor Create();
29+ class destructor Destroy();
30+
2931 constructor Create();
3032 destructor Destroy(); override;
3133
@@ -79,11 +81,20 @@ TPythonToolsMenuItem = class(TMenuItem)
7981
8082{ TPythonToolsMenu }
8183
84+ class constructor TPythonToolsMenu.Create;
85+ begin
86+ FInstance := TPythonToolsMenu.Create();
87+ end ;
88+
89+ class destructor TPythonToolsMenu.Destroy;
90+ begin
91+ FInstance.Free();
92+ end ;
93+
8294constructor TPythonToolsMenu.Create;
8395begin
8496 FToolsMenuItems := TObjectList<TMenuItem>.Create();
85- FToolsMenuHook := TToolsMenuEventHook.Create(
86- GetINTAServices().MainMenu.Items.Find(' Tools' ));
97+ FToolsMenuHook := TToolsMenuEventHook.Create(GetToolsMenu());
8798end ;
8899
89100destructor TPythonToolsMenu.Destroy;
@@ -94,14 +105,15 @@ destructor TPythonToolsMenu.Destroy;
94105 inherited ;
95106end ;
96107
97- class procedure TPythonToolsMenu.Initialize ;
98- begin
99- FInstance := TPythonToolsMenu.Create();
100- end ;
101-
102- class procedure TPythonToolsMenu.Finalize ;
108+ function TPythonToolsMenu.GetToolsMenu : TMenuItem;
109+ var
110+ LMenuItem: TMenuItem;
103111begin
104- FInstance.Free();
112+ for LMenuItem in GetINTAServices().MainMenu.Items do begin
113+ if (LMenuItem.Name = sToolsMenu) then
114+ Exit(LMenuItem);
115+ end ;
116+ raise Exception.Create(' Tools menu not found.' );
105117end ;
106118
107119function TPythonToolsMenu.GetINTAServices : INTAServices;
@@ -221,7 +233,7 @@ procedure TPythonToolsMenu.DoDestroyMenu;
221233 LRoot: TMenuItem;
222234 LMenuItem: TMenuItem;
223235begin
224- LRoot := GetINTAServices().MainMenu.Items.Find( ' Tools ' );
236+ LRoot := GetToolsMenu( );
225237 if Assigned(LRoot) then begin
226238 with GetINTAServices() do begin
227239 MenuBeginUpdate();
@@ -286,10 +298,4 @@ procedure TToolsMenuEventHook.UnHook(AEvt: TNotifyEvent);
286298 FHook := nil ;
287299end ;
288300
289- initialization
290- TPythonToolsMenu.Initialize();
291-
292- finalization
293- TPythonToolsMenu.Finalize();
294-
295301end .
0 commit comments