Skip to content

Commit 2031753

Browse files
committed
Smart actions
1 parent baec850 commit 2031753

File tree

2 files changed

+131
-19
lines changed

2 files changed

+131
-19
lines changed

source/containers/Container.Menu.Actions.dfm

Lines changed: 64 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
object MenuActionsContainer: TMenuActionsContainer
2-
Height = 305
3-
Width = 656
4-
PixelsPerInch = 144
2+
Height = 407
3+
Width = 875
4+
PixelsPerInch = 192
55
object actlMenu: TActionList
66
Images = ImageContainer.images
77
OnUpdate = actlMenuUpdate
8-
Left = 78
9-
Top = 12
8+
Left = 104
9+
Top = 16
1010
object actUpdateEnvironment: TAction
1111
Tag = 1
1212
Category = 'Entities'
@@ -212,53 +212,98 @@ object MenuActionsContainer: TMenuActionsContainer
212212
OnExecute = actNewProjectExecute
213213
ImageIndex = 35
214214
end
215+
object actSmartDeployProject: TAction
216+
Tag = 2
217+
Category = 'Build'
218+
Text = 'Smart Deploy Project'
219+
Hint = 'Smart Deploy Project'
220+
ImageIndex = 12
221+
OnExecute = actSmartDeployProjectExecute
222+
ImageIndex = 12
223+
end
224+
object actSmartRunCurrentProject: TAction
225+
Tag = 2
226+
Category = 'Build'
227+
Text = 'Smart Run Project'
228+
Hint = 'Smart Run Project'
229+
ImageIndex = 13
230+
OnExecute = actSmartRunCurrentProjectExecute
231+
ImageIndex = 13
232+
end
233+
object actSmartDeployCurrentProjectAsync: TAction
234+
Tag = 2
235+
Category = 'BuildAsync'
236+
Text = 'Smart Deploy Project'
237+
Hint = 'Smart Deploy Project'
238+
ImageIndex = 12
239+
OnExecute = actSmartDeployCurrentProjectAsyncExecute
240+
ImageIndex = 12
241+
end
242+
object actSmartRunCurrentProjectAsync: TAction
243+
Tag = 2
244+
Category = 'BuildAsync'
245+
Text = 'Smart Run Project'
246+
Hint = 'Smart Run Project'
247+
ImageIndex = 13
248+
OnExecute = actSmartRunCurrentProjectAsyncExecute
249+
ImageIndex = 13
250+
end
251+
object actSmartDebugCurrentProjectAsync: TAction
252+
Tag = 9
253+
Category = 'Debug'
254+
Text = 'Smart Debug Project'
255+
Hint = 'Smart Debug Project'
256+
ImageIndex = 14
257+
OnExecute = actSmartDebugCurrentProjectAsyncExecute
258+
ImageIndex = 14
259+
end
215260
end
216261
object sdProject: TSaveDialog
217262
DefaultExt = '.pyfmxproj'
218263
Filter = 'Python FMX Project|*.pyfmxproj'
219264
Options = [ofOverwritePrompt, ofHideReadOnly, ofEnableSizing]
220-
Left = 78
221-
Top = 114
265+
Left = 104
266+
Top = 152
222267
end
223268
object sdModule: TSaveDialog
224269
DefaultExt = '.py'
225270
Filter = 'Python Module|*.py'
226271
Options = [ofOverwritePrompt, ofHideReadOnly, ofEnableSizing]
227-
Left = 186
228-
Top = 114
272+
Left = 248
273+
Top = 152
229274
end
230275
object odProject: TOpenDialog
231276
DefaultExt = '.pyfmxproj'
232277
Filter = 'Python FMX Project|*.pyfmxproj'
233278
Options = [ofHideReadOnly, ofFileMustExist, ofEnableSizing]
234-
Left = 78
235-
Top = 198
279+
Left = 104
280+
Top = 264
236281
end
237282
object odModule: TOpenDialog
238283
DefaultExt = '.py'
239284
Filter = 'Python Module|*.py'
240285
Options = [ofHideReadOnly, ofFileMustExist, ofEnableSizing]
241-
Left = 186
242-
Top = 198
286+
Left = 248
287+
Top = 264
243288
end
244289
object odPackage: TOpenDialog
245290
DefaultExt = '.whl'
246291
Filter = 'Zip imports|*.zip|PIP wheel|*.whl'
247292
Options = [ofHideReadOnly, ofFileMustExist, ofEnableSizing]
248-
Left = 438
249-
Top = 198
293+
Left = 584
294+
Top = 264
250295
end
251296
object odOther: TOpenDialog
252297
Filter = '*.*'
253298
Options = [ofHideReadOnly, ofFileMustExist, ofEnableSizing]
254-
Left = 540
255-
Top = 198
299+
Left = 720
300+
Top = 264
256301
end
257302
object odFMXModule: TOpenDialog
258303
DefaultExt = '.py'
259304
Filter = 'Python Module|*.py|Delphi FMX File|*.pyfmx'
260305
Options = [ofHideReadOnly, ofFileMustExist, ofEnableSizing]
261-
Left = 312
262-
Top = 198
306+
Left = 416
307+
Top = 264
263308
end
264309
end

source/containers/Container.Menu.Actions.pas

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ TMenuActionsContainer = class(TDataModule)
5555
odFMXModule: TOpenDialog;
5656
actNewBlankProject: TAction;
5757
actNewProject: TAction;
58+
actSmartDeployProject: TAction;
59+
actSmartRunCurrentProject: TAction;
60+
actSmartDeployCurrentProjectAsync: TAction;
61+
actSmartRunCurrentProjectAsync: TAction;
62+
actSmartDebugCurrentProjectAsync: TAction;
5863
procedure actUpdateEnvironmentExecute(Sender: TObject);
5964
procedure actUpdateCurrentProjectExecute(Sender: TObject);
6065
procedure actBuildCurrentProjectExecute(Sender: TObject);
@@ -77,6 +82,11 @@ TMenuActionsContainer = class(TDataModule)
7782
procedure actSaveAllStateExecute(Sender: TObject);
7883
procedure actNewBlankProjectExecute(Sender: TObject);
7984
procedure actNewProjectExecute(Sender: TObject);
85+
procedure actSmartDeployProjectExecute(Sender: TObject);
86+
procedure actSmartRunCurrentProjectExecute(Sender: TObject);
87+
procedure actSmartDeployCurrentProjectAsyncExecute(Sender: TObject);
88+
procedure actSmartRunCurrentProjectAsyncExecute(Sender: TObject);
89+
procedure actSmartDebugCurrentProjectAsyncExecute(Sender: TObject);
8090
private
8191
//Async control
8292
FLoadingProject: integer;
@@ -317,6 +327,63 @@ procedure TMenuActionsContainer.actSaveStateExecute(Sender: TObject);
317327
TSaveStateEvent.Create(TSaveState.Save));
318328
end;
319329

330+
procedure TMenuActionsContainer.actSmartDebugCurrentProjectAsyncExecute(
331+
Sender: TObject);
332+
begin
333+
TMessagery.BroadcastEventAsync(TMessageEvent.Create(true));
334+
FBuilderServices.RunAsync(procedure(AProxy: IBuilderTasks) begin
335+
FProjectServices.GetActiveProject().Debugger := TDebugger.DebugPy;
336+
AProxy.SmartBuildActiveProject();
337+
AProxy.SmartDeployActiveProject();
338+
AProxy.DebugActiveProject(FDebuggerServices);
339+
end);
340+
end;
341+
342+
procedure TMenuActionsContainer.actSmartDeployCurrentProjectAsyncExecute(
343+
Sender: TObject);
344+
begin
345+
TMessagery.BroadcastEventAsync(TMessageEvent.Create(true));
346+
FBuilderServices.RunAsync(procedure(AProxy: IBuilderTasks) begin
347+
FProjectServices.GetActiveProject().Debugger := TDebugger.None;
348+
AProxy.SmartBuildActiveProject();
349+
AProxy.SmartDeployActiveProject();
350+
end);
351+
end;
352+
353+
procedure TMenuActionsContainer.actSmartDeployProjectExecute(Sender: TObject);
354+
begin
355+
TMessagery.BroadcastEventAsync(TMessageEvent.Create(true));
356+
FBuilderServices.Run(procedure(AProxy: IBuilderTasks) begin
357+
FProjectServices.GetActiveProject().Debugger := TDebugger.None;
358+
AProxy.SmartBuildActiveProject();
359+
AProxy.SmartDeployActiveProject();
360+
end);
361+
end;
362+
363+
procedure TMenuActionsContainer.actSmartRunCurrentProjectAsyncExecute(
364+
Sender: TObject);
365+
begin
366+
TMessagery.BroadcastEventAsync(TMessageEvent.Create(true));
367+
FBuilderServices.RunAsync(procedure(AProxy: IBuilderTasks) begin
368+
FProjectServices.GetActiveProject().Debugger := TDebugger.DebugPy;
369+
AProxy.SmartBuildActiveProject();
370+
AProxy.SmartDeployActiveProject();
371+
AProxy.RunActiveProject();
372+
end);
373+
end;
374+
375+
procedure TMenuActionsContainer.actSmartRunCurrentProjectExecute(
376+
Sender: TObject);
377+
begin
378+
TMessagery.BroadcastEventAsync(TMessageEvent.Create(true));
379+
FBuilderServices.Run(procedure(AProxy: IBuilderTasks) begin
380+
FProjectServices.GetActiveProject().Debugger := TDebugger.None;
381+
AProxy.SmartBuildActiveProject();
382+
AProxy.SmartDeployActiveProject();
383+
AProxy.RunActiveProject();
384+
end);
385+
end;
386+
320387
procedure TMenuActionsContainer.actStepInExecute(Sender: TObject);
321388
begin
322389
FDebuggerServices.StepIn();

0 commit comments

Comments
 (0)