@@ -15,17 +15,19 @@ TToolsMenuEventHook = class;
15
15
TPythonToolsMenu = class
16
16
private
17
17
class var FInstance: TPythonToolsMenu;
18
- class procedure Initialize ();
19
- class procedure Finalize ();
20
18
private
21
19
FToolsMenuItems: TObjectList<TMenuItem>;
22
20
FToolsMenuHook: TToolsMenuEventHook;
23
21
function GetINTAServices (): INTAServices;
22
+ function GetToolsMenu (): TMenuItem;
24
23
function LoadPythonToolMenuImage (): integer;
25
24
26
25
procedure DoCreateMenuHooked (Sender: TObject);
27
26
procedure DoDestroyMenu ();
28
27
public
28
+ class constructor Create();
29
+ class destructor Destroy();
30
+
29
31
constructor Create();
30
32
destructor Destroy(); override;
31
33
@@ -79,11 +81,20 @@ TPythonToolsMenuItem = class(TMenuItem)
79
81
80
82
{ TPythonToolsMenu }
81
83
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
+
82
94
constructor TPythonToolsMenu.Create;
83
95
begin
84
96
FToolsMenuItems := TObjectList<TMenuItem>.Create();
85
- FToolsMenuHook := TToolsMenuEventHook.Create(
86
- GetINTAServices().MainMenu.Items.Find(' Tools' ));
97
+ FToolsMenuHook := TToolsMenuEventHook.Create(GetToolsMenu());
87
98
end ;
88
99
89
100
destructor TPythonToolsMenu.Destroy;
@@ -94,14 +105,15 @@ destructor TPythonToolsMenu.Destroy;
94
105
inherited ;
95
106
end ;
96
107
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;
103
111
begin
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.' );
105
117
end ;
106
118
107
119
function TPythonToolsMenu.GetINTAServices : INTAServices;
@@ -221,7 +233,7 @@ procedure TPythonToolsMenu.DoDestroyMenu;
221
233
LRoot: TMenuItem;
222
234
LMenuItem: TMenuItem;
223
235
begin
224
- LRoot := GetINTAServices().MainMenu.Items.Find( ' Tools ' );
236
+ LRoot := GetToolsMenu( );
225
237
if Assigned(LRoot) then begin
226
238
with GetINTAServices() do begin
227
239
MenuBeginUpdate();
@@ -286,10 +298,4 @@ procedure TToolsMenuEventHook.UnHook(AEvt: TNotifyEvent);
286
298
FHook := nil ;
287
299
end ;
288
300
289
- initialization
290
- TPythonToolsMenu.Initialize();
291
-
292
- finalization
293
- TPythonToolsMenu.Finalize();
294
-
295
301
end .
0 commit comments