@@ -7,25 +7,34 @@ interface
77uses
88 Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, Menus,
99 StdCtrls, DBGrids, DBCtrls, ExtCtrls, RTTIGrids, RTTICtrls, uObjects,
10- PropEdits, ObjectInspector, VirtualTrees, DB, Grids, ActnList, DBActns ;
10+ PropEdits, ObjectInspector, VirtualTrees, DB, Grids, ActnList, Buttons ;
1111
1212type
1313
1414 { TfmMain }
1515
1616 TfmMain = class (TForm)
1717 acConnect: TAction;
18- alChains: TActionList;
19- acChainInsert: TDataSetInsert;
20- acChainDelete: TDataSetDelete;
21- acChainEdit: TDataSetEdit;
22- acChainRefresh: TDataSetRefresh;
23- acChainPost: TDataSetPost;
24- acChainCancel: TDataSetCancel;
18+ acMoveTaskUp: TAction;
19+ acMoveTaskDown: TAction;
20+ acTaskDelete: TAction;
21+ acTaskAdd: TAction;
22+ acTaskEdit: TAction;
23+ acTaskPost: TAction;
24+ acTaskCancel: TAction;
25+ acTaskRefresh: TAction;
26+ acChainAdd: TAction;
27+ acChainDelete: TAction;
28+ acChainEdit: TAction;
29+ acChainPost: TAction;
30+ acChainCancel: TAction;
31+ acChainRefresh: TAction;
32+ alToolbars: TActionList;
33+ btnTaskMoveUp: TToolButton;
2534 gridTasks: TDBGrid;
2635 gridChains: TDBGrid;
27- imglNavigatorDisabled : TImageList;
28- imglNavigator : TImageList;
36+ imglToolbarsDisabled : TImageList;
37+ imglToolbars : TImageList;
2938 imglGrids: TImageList;
3039 miConnect: TMenuItem;
3140 mmLog: TMemo;
@@ -34,24 +43,43 @@ TfmMain = class(TForm)
3443 miClose: TMenuItem;
3544 miHelp: TMenuItem;
3645 miAbout: TMenuItem;
46+ pnlMainToolbar: TPanel;
3747 pnlChains: TPanel;
3848 pnlDetails: TPanel;
39- splitSidebar : TSplitter;
49+ splitChain : TSplitter;
4050 splitDetails: TSplitter;
51+ toolbarChains: TToolBar;
4152 toolbarMain: TToolBar;
4253 btnConnect: TToolButton;
43- btnChainInsert: TToolButton;
44- btnSep1: TToolButton;
54+ toolbarTasks: TToolBar;
55+ btnTaskMoveDown: TToolButton;
56+ btnTaskAdd: TToolButton;
57+ btnTaskSep1: TToolButton;
58+ btnTaskDelete: TToolButton;
59+ btnTaskEdit: TToolButton;
60+ btnTaskPost: TToolButton;
61+ btnTaskCancel: TToolButton;
62+ btnTaskRefresh: TToolButton;
63+ btnChainAdd: TToolButton;
4564 btnChainDelete: TToolButton;
4665 btnChainEdit: TToolButton;
47- btnChainRefresh: TToolButton;
4866 btnChainPost: TToolButton;
4967 btnChainCancel: TToolButton;
50- btnSep2: TToolButton;
51- procedure acConnectUpdate (Sender: TObject);
52- procedure acDisconnectExecute (Sender: TObject);
53- procedure acDisconnectUpdate (Sender: TObject);
54- procedure btnCancelClick (Sender: TObject);
68+ btnChainRefresh: TToolButton;
69+ procedure acChainAddExecute (Sender: TObject);
70+ procedure acChainCancelExecute (Sender: TObject);
71+ procedure acChainDeleteExecute (Sender: TObject);
72+ procedure acChainEditExecute (Sender: TObject);
73+ procedure acChainPostExecute (Sender: TObject);
74+ procedure acChainRefreshExecute (Sender: TObject);
75+ procedure acChainToolbarUpdate (Sender: TObject);
76+ procedure acTaskAddExecute (Sender: TObject);
77+ procedure acTaskCancelExecute (Sender: TObject);
78+ procedure acTaskDeleteExecute (Sender: TObject);
79+ procedure acTaskEditExecute (Sender: TObject);
80+ procedure acTaskPostExecute (Sender: TObject);
81+ procedure acTaskRefreshExecute (Sender: TObject);
82+ procedure acTaskToolbarUpdate (Sender: TObject);
5583 procedure acConnectClick (Sender: TObject);
5684 procedure FormCloseQuery (Sender: TObject; var CanClose: boolean);
5785 procedure gridChainsEditingDone (Sender: TObject);
@@ -88,10 +116,12 @@ procedure TfmMain.gridChainsEditingDone(Sender: TObject);
88116 F: TField;
89117begin
90118 F := gridChains.SelectedField;
91- if not Assigned(F) or (F.FieldName <> ' run_at' ) or gridChains.EditorMode then Exit;
119+ if not Assigned(F) or (F.FieldName <> ' run_at' ) or gridChains.EditorMode then
120+ Exit;
92121 S := F.AsString;
93122 if not dmPgEngine.IsCronValueValid(S) then
94- MessageDlg(' Cron Syntax Error' , ' You have error in the cron value: ' + S, mtError, [mbOK], 0 );
123+ MessageDlg(' Cron Syntax Error' , ' You have error in the cron value: ' + S,
124+ mtError, [mbOK], 0 );
95125end ;
96126
97127procedure TfmMain.gridChainsTitleClick (Column: TColumn);
@@ -178,26 +208,94 @@ procedure TfmMain.UpdateSortIndication(ACol: TColumn);
178208 FLastColumn := ACol;
179209end ;
180210
181- procedure TfmMain.btnCancelClick (Sender: TObject);
211+ procedure TfmMain.acChainToolbarUpdate (Sender: TObject);
212+ var
213+ CanModify: boolean;
214+ begin
215+ CanModify := dmPgEngine.IsConnected() and dmPgEngine.qryTasks.CanModify;
216+ acChainAdd.Enabled := CanModify;
217+ acChainDelete.Enabled := CanModify and
218+ (not (dmPgEngine.qryChains.BOF and dmPgEngine.qryChains.EOF));
219+ acChainEdit.Enabled := CanModify and not (dmPgEngine.qryChains.State in dsEditModes);
220+ acChainPost.Enabled := CanModify and (dmPgEngine.qryChains.State in dsEditModes);
221+ acChainCancel.Enabled := CanModify and (dmPgEngine.qryChains.State in dsEditModes);
222+ acChainRefresh.Enabled := CanModify;
223+ end ;
224+
225+ procedure TfmMain.acChainAddExecute (Sender: TObject);
226+ begin
227+ dmPgEngine.qryChains.Append;
228+ end ;
229+
230+ procedure TfmMain.acChainCancelExecute (Sender: TObject);
182231begin
183232 dmPgEngine.qryChains.Cancel;
184233end ;
185234
186- procedure TfmMain.acConnectUpdate (Sender: TObject);
235+ procedure TfmMain.acChainDeleteExecute (Sender: TObject);
187236begin
188- // (Sender as TAction).Enabled := not dmPgEngine.PQConn.Connected;
189- btnConnect.Down := dmPgEngine.PQConn.Connected;
190- miConnect.Checked := btnConnect.Down;
237+ dmPgEngine.qryChains.Delete;
191238end ;
192239
193- procedure TfmMain.acDisconnectExecute (Sender: TObject);
240+ procedure TfmMain.acChainEditExecute (Sender: TObject);
194241begin
195- dmPgEngine.Disconnect;
242+ dmPgEngine.qryChains.Edit;
243+ end ;
244+
245+ procedure TfmMain.acChainPostExecute (Sender: TObject);
246+ begin
247+ dmPgEngine.qryChains.Post;
248+ end ;
249+
250+ procedure TfmMain.acChainRefreshExecute (Sender: TObject);
251+ begin
252+ dmPgEngine.qryChains.Refresh;
253+ end ;
254+
255+ procedure TfmMain.acTaskAddExecute (Sender: TObject);
256+ begin
257+ dmPgEngine.qryTasks.Append;
258+ end ;
259+
260+ procedure TfmMain.acTaskCancelExecute (Sender: TObject);
261+ begin
262+ dmPgEngine.qryTasks.Cancel;
263+ end ;
264+
265+ procedure TfmMain.acTaskDeleteExecute (Sender: TObject);
266+ begin
267+ dmPgEngine.qryTasks.Delete;
268+ end ;
269+
270+ procedure TfmMain.acTaskEditExecute (Sender: TObject);
271+ begin
272+ dmPgEngine.qryTasks.Edit;
196273end ;
197274
198- procedure TfmMain.acDisconnectUpdate (Sender: TObject);
275+ procedure TfmMain.acTaskPostExecute (Sender: TObject);
199276begin
200- (Sender as TAction).Enabled := dmPgEngine.PQConn.Connected;
277+ dmPgEngine.qryTasks.Post;
278+ end ;
279+
280+ procedure TfmMain.acTaskRefreshExecute (Sender: TObject);
281+ begin
282+ dmPgEngine.qryTasks.Refresh;
283+ end ;
284+
285+ procedure TfmMain.acTaskToolbarUpdate (Sender: TObject);
286+ var
287+ CanModify: boolean;
288+ begin
289+ CanModify := dmPgEngine.IsConnected() and dmPgEngine.qryTasks.CanModify;
290+ acTaskAdd.Enabled := CanModify;
291+ acMoveTaskUp.Enabled := CanModify and not dmPgEngine.qryTasks.BOF;
292+ acMoveTaskDown.Enabled := CanModify and not dmPgEngine.qryTasks.EOF;
293+ acTaskDelete.Enabled := CanModify and
294+ (not (dmPgEngine.qryTasks.BOF and dmPgEngine.qryTasks.EOF));
295+ acTaskEdit.Enabled := CanModify and not (dmPgEngine.qryTasks.State in dsEditModes);
296+ acTaskPost.Enabled := CanModify and (dmPgEngine.qryTasks.State in dsEditModes);
297+ acTaskCancel.Enabled := CanModify and (dmPgEngine.qryTasks.State in dsEditModes);
298+ acTaskRefresh.Enabled := CanModify;
201299end ;
202300
203301procedure TfmMain.acConnectClick (Sender: TObject);
@@ -212,10 +310,10 @@ procedure TfmMain.acConnectClick(Sender: TObject);
212310 MessageDlg(' PostgreSQL Error' , E.Message, mtError, [mbOK], 0 );
213311 end
214312 else
215- begin
216- dmPgEngine.Disconnect;
217- UpdateSortIndication(nil );
218- end ;
313+ begin
314+ dmPgEngine.Disconnect;
315+ UpdateSortIndication(nil );
316+ end ;
219317end ;
220318
221319end .
0 commit comments