2 Copyright (C) 2004 Kern Sibbald and John Walker
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.
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.
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.
19 #ifndef WXBRESTOREPANEL_H
20 #define WXBRESTOREPANEL_H
22 #include "wx/wxprec.h"
28 #include "wxbtableparser.h"
30 #include <wx/thread.h>
31 #include <wx/listctrl.h>
32 #include <wx/treectrl.h>
37 #include "wxbtreectrl.h"
38 #include "wxblistctrl.h"
41 * wxbPanel for restoring files
43 class wxbRestorePanel : public wxbPanel
46 wxbRestorePanel(wxWindow* parent);
49 /* wxbPanel overloadings */
50 virtual wxString GetTitle();
51 virtual void EnablePanel(bool enable = true);
54 /* Commands called by events handler */
56 /* The main button has been clicked */
59 /* List jobs for a specified client */
62 /* List files and directories for a specified tree item */
63 void CmdList(wxTreeItemId item);
65 /* Mark a treeitem (directory) or a listitem (file or directory) */
66 void CmdMark(wxTreeItemId treeitem, long listitem);
68 /* General functions and variables */
69 bool ended; /* The last command send has finished */
71 long filemessages; /* When restoring, number of files restored */
72 long totfilemessages; /* When restoring, number of files to be restored */
74 /* Parse a table in tableParser */
75 wxbTableParser* CreateAndWaitForParser(wxString cmd);
77 /* Run a command, and waits until result is fully received,
78 * if keepresults is true, returns a valid pointer to a wxbDataTokenizer
79 * containing the data. */
80 wxbDataTokenizer* WaitForEnd(wxString cmd, bool keepresults = false);
82 /* Run a dir command, and waits until result is fully received. */
83 void UpdateTreeItem(wxTreeItemId item, bool updatelist);
85 /* Parse dir command results. */
86 wxString* ParseList(wxString line);
88 /* Sets a list item state, and update its parents and children if it is a directory */
89 void SetListItemState(long listitem, int newstate);
91 /* Sets a tree item state, and update its children, parents and list (if necessary) */
92 void SetTreeItemState(wxTreeItemId item, int newstate);
94 /* Update a tree item parents' state */
95 void UpdateTreeItemState(wxTreeItemId item);
97 /* Refresh a tree item, and all its children. */
98 void RefreshTree(wxTreeItemId item);
103 disabled, // The panel is not activatable
104 activable, // The panel is activable, but not activated
105 entered, // The panel is activated
106 choosing, // The user is choosing files to restore
107 listing, // Dir listing is in progress
108 restoring, // Bacula is restoring files
109 finished // Retore done (state will change in activable)
114 /* Set current status by enabling/disabling components */
115 void SetStatus(status_enum newstatus);
118 bool working; // A command is running, discard GUI events
119 wxTreeItemId currentTreeItem; // Currently selected tree item
122 void OnStart(wxEvent& WXUNUSED(event));
123 void OnTreeChanging(wxTreeEvent& event);
124 void OnTreeExpanding(wxTreeEvent& event);
125 void OnTreeChanged(wxTreeEvent& event);
126 void OnTreeMarked(wxbTreeMarkedEvent& event);
127 void OnListMarked(wxbListMarkedEvent& event);
128 void OnListActivated(wxListEvent& event);
129 void OnClientChoiceChanged(wxCommandEvent& event);
132 wxImageList* imagelist; //image list for tree and list
135 wxChoice* clientChoice;
141 DECLARE_EVENT_TABLE();
144 #endif // WXBRESTOREPANEL_H