]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/wx-console/wxbrestorepanel.h
c6aa33e70d0f9b300e58e46e069ddc8fcbb80005
[bacula/bacula] / bacula / src / wx-console / wxbrestorepanel.h
1 /*
2    Copyright (C) 2004 Kern Sibbald and John Walker
3
4    This program is free software; you can redistribute it and/or
5    modify it under the terms of the GNU General Public License
6    as published by the Free Software Foundation; either version 2
7    of the License, or (at your option) any later version.
8
9    This program is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12    GNU General Public License for more details.
13
14    You should have received a copy of the GNU General Public License
15    along with this program; if not, write to the Free Software
16    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
17  */
18
19 #ifndef WXBRESTOREPANEL_H
20 #define WXBRESTOREPANEL_H
21
22 #include "wx/wxprec.h"
23
24 #ifndef WX_PRECOMP
25    #include "wx/wx.h"
26 #endif
27
28 #include "wxbtableparser.h"
29
30 #include <wx/thread.h>
31 #include <wx/listctrl.h>
32 #include <wx/treectrl.h>
33 #include <wx/gauge.h>
34 #include <wx/stattext.h>
35
36 #include "wxbutils.h"
37
38 #include "wxbtreectrl.h"
39 #include "wxblistctrl.h"
40
41 class wxbTreeListPanel;
42
43 /*
44  * wxbPanel for restoring files
45  */
46 class wxbRestorePanel : public wxbPanel
47 {
48    public:
49       wxbRestorePanel(wxWindow* parent);
50       ~wxbRestorePanel();
51
52       /* wxbPanel overloadings */
53       virtual wxString GetTitle();
54       virtual void EnablePanel(bool enable = true);
55
56    private:
57 /* Commands called by events handler */
58
59       /* The main button has been clicked */
60       void CmdStart();
61
62       /* Apply configuration changes */
63       void CmdConfigApply();
64
65       /* Cancel restore */
66       void CmdConfigCancel();
67
68        /* List jobs for a specified client */
69       void CmdListJobs();
70
71       /* List files and directories for a specified tree item */
72       void CmdList(wxTreeItemId item);
73
74       /* Mark a treeitem (directory) or a listitem (file or directory) */
75       void CmdMark(wxTreeItemId treeitem, long listitem);
76
77 /* General functions and variables */
78       bool ended; /* The last command send has finished */
79
80       long filemessages; /* When restoring, number of files restored */
81       long totfilemessages; /* When restoring, number of files to be restored */
82
83       /* Parse a table in tableParser */
84       wxbTableParser* CreateAndWaitForParser(wxString cmd);
85
86       /* Run a command, and waits until result is fully received,
87        * if keepresults is true, returns a valid pointer to a wxbDataTokenizer
88        * containing the data. */
89       wxbDataTokenizer* WaitForEnd(wxString cmd, bool keepresults = false, bool linebyline = true);
90
91       /* Run a command, and waits until prompt result is fully received,
92        * if keepresults is true, returns a valid pointer to a wxbPromptParser
93        * containing the data. */
94       wxbPromptParser* WaitForPrompt(wxString cmd, bool keepresults = false);
95
96       /* Run a dir command, and waits until result is fully received. */
97       void UpdateTreeItem(wxTreeItemId item, bool updatelist);
98
99       /* Parse dir command results. */
100       wxString* ParseList(wxString line);
101
102       /* Sets a list item state, and update its parents and children if it is a directory */
103       void SetListItemState(long listitem, int newstate);
104
105       /* Sets a tree item state, and update its children, parents and list (if necessary) */
106       void SetTreeItemState(wxTreeItemId item, int newstate);
107       
108       /* Update a tree item parents' state */
109       void UpdateTreeItemState(wxTreeItemId item);
110
111       /* Refresh a tree item, and all its children. */
112       void RefreshTree(wxTreeItemId item);
113       
114       /* Update config */
115       bool UpdateConfig(wxbDataTokenizer* dt);
116       
117 /* Status related */
118       enum status_enum
119       {
120          disabled,    // The panel is not activatable
121          activable,   // The panel is activable, but not activated
122          entered,     // The panel is activated
123          choosing,    // The user is choosing files to restore
124          listing,     // Dir listing is in progress
125          configuring, // The user is configuring restore process
126          restoring,   // Bacula is restoring files
127          finished     // Retore done (state will change in activable)
128       };
129
130       status_enum status;
131
132       /* Set current status by enabling/disabling components */
133       void SetStatus(status_enum newstatus);
134
135 /* UI related */
136       bool working; // A command is running, discard GUI events
137       bool markWhenListingDone;
138       wxTreeItemId currentTreeItem; // Currently selected tree item
139
140       /* Enable or disable config controls status */
141       void EnableConfig(bool enable);
142
143 /* Event handling */
144       void OnStart(wxEvent& WXUNUSED(event));
145       void OnTreeChanging(wxTreeEvent& event);
146       void OnTreeExpanding(wxTreeEvent& event);
147       void OnTreeChanged(wxTreeEvent& event);
148       void OnTreeMarked(wxbTreeMarkedEvent& event);
149       void OnListMarked(wxbListMarkedEvent& event);
150       void OnListActivated(wxListEvent& event);
151       void OnClientChoiceChanged(wxCommandEvent& event);
152       void OnConfigUpdated(wxCommandEvent& event);
153       void OnConfigOk(wxEvent& WXUNUSED(event));
154       void OnConfigApply(wxEvent& WXUNUSED(event));
155       void OnConfigCancel(wxEvent& WXUNUSED(event));
156
157 /* Components */
158       wxBoxSizer *centerSizer; /* Center sizer */
159       wxbTreeListPanel *treelistPanel; /* Panel which contains tree and list */
160       wxPanel *restorePanel; /* Panel which contains restore options */
161
162       wxImageList* imagelist; //image list for tree and list
163
164       wxButton* start;
165       wxChoice* clientChoice;
166       wxChoice* jobChoice;
167       wxbTreeCtrl* tree;
168       wxbListCtrl* list;
169       wxGauge* gauge;
170
171       wxButton*     cfgOk;
172       wxButton*     cfgApply;
173       wxButton*     cfgCancel;
174       
175       long cfgUpdated; //keeps which config fields are updated
176       
177       wxStaticText* cfgJobname;
178       wxStaticText* cfgBootstrap;
179       wxTextCtrl*   cfgWhere;
180       wxChoice*     cfgReplace;
181       wxChoice*     cfgFileset;
182       wxChoice*     cfgClient;
183       wxStaticText* cfgStorage;
184       wxTextCtrl*   cfgWhen;
185       wxTextCtrl*   cfgPriority;
186
187       friend class wxbTreeListPanel;
188
189       DECLARE_EVENT_TABLE();    
190 };
191
192 class wxbTreeListPanel: public wxPanel {
193 public:
194      wxbTreeListPanel(wxbRestorePanel* parent);
195 private:
196      void OnTreeMarked(wxbTreeMarkedEvent& event);
197      void OnListMarked(wxbListMarkedEvent& event);
198      DECLARE_EVENT_TABLE(); 
199      wxbRestorePanel* parent;
200 };
201
202 #endif // WXBRESTOREPANEL_H
203