X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fwx-console%2Fwxbrestorepanel.h;h=4f6bae9d83763798f1771297c6ce7c5f24f84d72;hb=b8224aab234012c2d127b84eceb160e99dd4a14d;hp=64f97cd960098071a2571ac911a0635c80136109;hpb=23dadd052a2ef4defea0a2a95787ff645dd421dc;p=bacula%2Fbacula diff --git a/bacula/src/wx-console/wxbrestorepanel.h b/bacula/src/wx-console/wxbrestorepanel.h index 64f97cd960..4f6bae9d83 100644 --- a/bacula/src/wx-console/wxbrestorepanel.h +++ b/bacula/src/wx-console/wxbrestorepanel.h @@ -1,20 +1,38 @@ /* - Copyright (C) 2004 Kern Sibbald and John Walker + * + * wxbPanel for restoring files + * + * Nicolas Boichat, April-May 2004 + * + * Version $Id$ + */ +/* + Bacula® - The Network Backup Solution - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. + Copyright (C) 2004-2006 Free Software Foundation Europe e.V. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + The main author of Bacula is Kern Sibbald, with contributions from + many others, a complete list can be found in the file AUTHORS. + This program is Free Software; you can redistribute it and/or + modify it under the terms of version two of the GNU General Public + License as published by the Free Software Foundation plus additions + that are listed in the file LICENSE. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. + + Bacula® is a registered trademark of John Walker. + The licensor of Bacula is the Free Software Foundation Europe + (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, + Switzerland, email:ftf@fsfeurope.org. +*/ #ifndef WXBRESTOREPANEL_H #define WXBRESTOREPANEL_H @@ -32,13 +50,29 @@ #include #include #include +#include #include "wxbutils.h" +#include "wxbconfigpanel.h" #include "wxbtreectrl.h" #include "wxblistctrl.h" -class wxbTreeListPanel; +WX_DECLARE_LIST(wxEvent, wxbEventList); + +/* Class for storing directory entries (results from dir commands). */ +class wxbDirEntry { +public: + wxString perm; + wxString nlink; + wxString user; + wxString group; + wxString size; + wxString date; + int marked; /* 0 - Not Marked, 1 - Marked, 2 - Some file under is marked */ + wxString fullname; /* full name with path */ + wxString filename; /* only filename, no path */ +}; /* * wxbPanel for restoring files @@ -59,6 +93,9 @@ class wxbRestorePanel : public wxbPanel /* The main button has been clicked */ void CmdStart(); + /* The cancel button has been clicked */ + void CmdCancel(); + /* Apply configuration changes */ void CmdConfigApply(); @@ -71,43 +108,44 @@ class wxbRestorePanel : public wxbPanel /* List files and directories for a specified tree item */ void CmdList(wxTreeItemId item); - /* Mark a treeitem (directory) or a listitem (file or directory) */ - void CmdMark(wxTreeItemId treeitem, long listitem); + /* Mark a treeitem (directory) or several listitems (file or directory), + * state defines if it should mark (1), unmark (0), or switch state (-1) */ + void CmdMark(wxTreeItemId treeitem, long* listitems, int listsize, int state = -1); /* General functions and variables */ - bool ended; /* The last command send has finished */ + //bool ended; /* The last command send has finished */ - long filemessages; /* When restoring, number of files restored */ + //long filemessages; /* When restoring, number of files restored */ long totfilemessages; /* When restoring, number of files to be restored */ + wxString jobid; - /* Parse a table in tableParser */ - wxbTableParser* CreateAndWaitForParser(wxString cmd); - - /* Run a command, and waits until result is fully received, - * if keepresults is true, returns a valid pointer to a wxbDataTokenizer - * containing the data. */ - wxbDataTokenizer* WaitForEnd(wxString cmd, bool keepresults = false); - - /* Run a dir command, and waits until result is fully received. */ - void UpdateTreeItem(wxTreeItemId item, bool updatelist); + /* Run a dir command, and waits until result is fully received. + * If recurse is true, update the children too. */ + void UpdateTreeItem(wxTreeItemId item, bool updatelist, bool recurse); /* Parse dir command results. */ - wxString* ParseList(wxString line); + int ParseList(wxString line, wxbDirEntry* entry); /* Sets a list item state, and update its parents and children if it is a directory */ void SetListItemState(long listitem, int newstate); /* Sets a tree item state, and update its children, parents and list (if necessary) */ void SetTreeItemState(wxTreeItemId item, int newstate); - + /* Update a tree item parents' state */ void UpdateTreeItemState(wxTreeItemId item); - /* Refresh a tree item, and all its children. */ - void RefreshTree(wxTreeItemId item); - - /* Update config */ - bool UpdateConfig(wxbDataTokenizer* dt); + /* Refresh the whole tree. */ + void RefreshTree(); + + /* Refresh file list */ + void RefreshList(); + + /* Update first config, adapting settings to the job name selected */ + void UpdateFirstConfig(); + + /* Update second config */ + bool UpdateSecondConfig(wxbDataTokenizer* dt); /* Status related */ enum status_enum @@ -124,71 +162,83 @@ class wxbRestorePanel : public wxbPanel status_enum status; + /* Cancelled status : + * - 0 - !cancelled + * - 1 - will be cancelled + * - 2 - has been cancelled */ + int cancelled; + /* Set current status by enabling/disabling components */ void SetStatus(status_enum newstatus); /* UI related */ bool working; // A command is running, discard GUI events + void SetWorking(bool working); + bool IsWorking(); + bool markWhenCommandDone; //If an item should be (un)marked after the current listing/marking is done wxTreeItemId currentTreeItem; // Currently selected tree item + /* Enable or disable config controls status */ + void EnableConfig(bool enable); + /* Event handling */ - void OnStart(wxEvent& WXUNUSED(event)); +// wxbEventList* pendingEvents; /* Stores event sent while working */ //EVTQUEUE +// bool processing; /* True if pendingEvents is being processed */ //EVTQUEUE + +// virtual void AddPendingEvent(wxEvent& event); +// virtual bool ProcessEvent(wxEvent& event); //EVTQUEUE + + void OnStart(wxCommandEvent& event); + void OnCancel(wxCommandEvent& event); + void OnTreeChanging(wxTreeEvent& event); void OnTreeExpanding(wxTreeEvent& event); void OnTreeChanged(wxTreeEvent& event); void OnTreeMarked(wxbTreeMarkedEvent& event); + void OnTreeAdd(wxCommandEvent& event); + void OnTreeRemove(wxCommandEvent& event); + void OnTreeRefresh(wxCommandEvent& event); + void OnListMarked(wxbListMarkedEvent& event); void OnListActivated(wxListEvent& event); - void OnClientChoiceChanged(wxCommandEvent& event); + void OnListChanged(wxListEvent& event); + void OnListAdd(wxCommandEvent& event); + void OnListRemove(wxCommandEvent& event); + void OnListRefresh(wxCommandEvent& event); + void OnConfigUpdated(wxCommandEvent& event); - void OnConfigOk(wxEvent& WXUNUSED(event)); - void OnConfigApply(wxEvent& WXUNUSED(event)); - void OnConfigCancel(wxEvent& WXUNUSED(event)); + void OnConfigOk(wxCommandEvent& WXUNUSED(event)); + void OnConfigApply(wxCommandEvent& WXUNUSED(event)); + void OnConfigCancel(wxCommandEvent& WXUNUSED(event)); /* Components */ wxBoxSizer *centerSizer; /* Center sizer */ - wxbTreeListPanel *treelistPanel; /* Panel which contains tree and list */ - wxPanel *restorePanel; /* Panel which contains restore options */ + wxSplitterWindow *treelistPanel; /* Panel which contains tree and list */ + wxbConfigPanel *configPanel; /* Panel which contains initial restore options */ + wxbConfigPanel *restorePanel; /* Panel which contains final restore options */ wxImageList* imagelist; //image list for tree and list wxButton* start; - wxChoice* clientChoice; - wxChoice* jobChoice; + wxButton* cancel; + wxbTreeCtrl* tree; + wxButton* treeadd; + wxButton* treeremove; + wxButton* treerefresh; + wxbListCtrl* list; + wxButton* listadd; + wxButton* listremove; + wxButton* listrefresh; + wxGauge* gauge; - wxButton* cfgOk; - wxButton* cfgApply; - wxButton* cfgCancel; - - long cfgUpdated; //keeps which config fields are updated - - wxStaticText* cfgJobname; - wxStaticText* cfgBootstrap; - wxTextCtrl* cfgWhere; - wxChoice* cfgReplace; - wxStaticText* cfgFileset; - wxStaticText* cfgClient; - wxStaticText* cfgStorage; - wxTextCtrl* cfgWhen; - wxTextCtrl* cfgPriority; - - friend class wxbTreeListPanel; - - DECLARE_EVENT_TABLE(); -}; + long cfgUpdated; //keeps which config fields have been updated -class wxbTreeListPanel: public wxPanel { -public: - wxbTreeListPanel(wxbRestorePanel* parent); -private: - void OnTreeMarked(wxbTreeMarkedEvent& event); - void OnListMarked(wxbListMarkedEvent& event); - DECLARE_EVENT_TABLE(); - wxbRestorePanel* parent; + friend class wxbSplitterWindow; + + DECLARE_EVENT_TABLE(); }; #endif // WXBRESTOREPANEL_H -