]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/wx-console/wxbconfigpanel.cpp
Did not intend to leave those debugging lines there.
[bacula/bacula] / bacula / src / wx-console / wxbconfigpanel.cpp
index f743b8c79928b4342a09a892f3c1623c4f17478d..1f57dde6ae1689cd71739436c2b65fece93a2b70 100644 (file)
@@ -1,32 +1,51 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2004-2008 Free Software Foundation Europe e.V.
+
+   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 and included
+   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., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+   The licensor of Bacula is the Free Software Foundation Europe
+   (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
+   Switzerland, email:ftf@fsfeurope.org.
+*/
 /*
  *
  *   Config panel, used to specify parameters (for example clients, filesets... in restore)
  *
  *    Nicolas Boichat, April 2004
  *
+ *    Version $Id$
  */
-/*
-   Copyright (C) 2004 Kern Sibbald and John Walker
-
-   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.
 
-   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.
+/*  Windows debug builds set _DEBUG which is used by wxWidgets to select their
+ *  debug memory allocator.  Unfortunately it conflicts with Bacula's SmartAlloc.
+ * So we turn _DEBUG off since we aren't interested in things it enables.
  */
 
-#include "wxbconfigpanel.h"
+#undef _DEBUG
 
+#include "bacula.h"
+#include "wxbconfigpanel.h"
 #include <wx/arrimpl.cpp>
 
+
 WX_DEFINE_OBJARRAY(wxbConfig);
 
 /* Create a new config parameter */
@@ -64,7 +83,7 @@ wxbConfigParam::~wxbConfigParam() {
 }
   
 void wxbConfigParam::AddControl(wxWindow* parent, wxSizer* sizer) {
-   sizer->Add(new wxStaticText(parent, -1, title + ": ", wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT), 1, wxEXPAND | wxALIGN_CENTER_HORIZONTAL);
+   sizer->Add(new wxStaticText(parent, -1, title + wxT(": "), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT), 0, wxALIGN_CENTER_VERTICAL);
    switch (type) {
    case text:
       statictext = new wxStaticText(parent, -1, value, wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT);
@@ -75,7 +94,12 @@ void wxbConfigParam::AddControl(wxWindow* parent, wxSizer* sizer) {
       sizer->Add(textctrl, 1, wxEXPAND | wxADJUST_MINSIZE);
       break;
    case choice:
-      choicectrl = new wxChoice(parent, id, wxDefaultPosition, wxDefaultSize, nvalues, values);
+#if defined __WXGTK20__ /* Choices are taller under GTK+-2.0 */
+      wxSize size = wxSize(150, 25);
+#else
+      wxSize size = wxSize(150, 20);
+#endif
+      choicectrl = new wxChoice(parent, id, wxDefaultPosition, size, nvalues, values);
       sizer->Add(choicectrl, 1, wxEXPAND);
       break;
    }
@@ -88,16 +112,16 @@ wxString wxbConfigParam::GetTitle() {
 wxString wxbConfigParam::GetValue() {
    switch (type) {
    case text:
-      return (statictext) ? statictext->GetLabel() : "";
+      return (statictext != NULL) ? statictext->GetLabel() : wxString(wxT(""));
       break;
    case modifiableText:
-      return (textctrl) ? textctrl->GetValue() : "";      
+      return (textctrl != NULL) ? textctrl->GetValue() : wxString(wxT(""));      
       break;
    case choice:
-      return (choicectrl) ? choicectrl->GetStringSelection() : "";
+      return (choicectrl != NULL) ? choicectrl->GetStringSelection() : wxString(wxT(""));
       break;      
    }
-   return "";
+   return wxT("");
 }
 
 void wxbConfigParam::SetValue(wxString str) {
@@ -113,13 +137,13 @@ void wxbConfigParam::SetValue(wxString str) {
    case choice:
       if (choicectrl) {
          int k;
-         for (k = 0; k < choicectrl->GetCount(); k++) {
+         for (k = 0; k < (int)choicectrl->GetCount(); k++) {
             if (str == choicectrl->GetString(k)) {
                choicectrl->SetSelection(k);
                break;
             }
          }
-         if (k == choicectrl->GetCount()) { // Should never happen
+         if (k == (int)choicectrl->GetCount()) { // Should never happen
             choicectrl->Append(str);
             choicectrl->SetSelection(k);
          }
@@ -135,6 +159,14 @@ int wxbConfigParam::GetIndex() {
    return -1;
 }
 
+int wxbConfigParam::GetCount() {
+   if (choicectrl) {
+      return choicectrl->GetCount();
+   }
+   return -1;
+}
+   
+
 void wxbConfigParam::SetIndex(int ind) {
    if (choicectrl) {
       choicectrl->SetSelection(ind);
@@ -154,12 +186,17 @@ void wxbConfigParam::Add(wxString value) {
 }
 
 /* Creates a new config panel, config must be allocated with new */
-wxbConfigPanel::wxbConfigPanel(wxWindow* parent, wxbConfig* config,
+wxbConfigPanel::wxbConfigPanel(wxWindow* parent, wxbConfig* config, wxString title,
       wxWindowID ok, wxWindowID cancel, wxWindowID apply): wxPanel(parent) {
 
    this->config = config;
 
    wxBoxSizer* mainSizer = new wxBoxSizer(wxVERTICAL);
+   
+   mainSizer->Add(
+      new wxStaticText(this, -1, title, wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER),
+            0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5);
+
    wxFlexGridSizer* cfgSizer = new wxFlexGridSizer(config->GetCount()+1, 2, 8, 5);
    unsigned int i;
    for (i = 0; i < config->GetCount(); i++) {
@@ -169,18 +206,18 @@ wxbConfigPanel::wxbConfigPanel(wxWindow* parent, wxbConfig* config,
    
    wxBoxSizer* restoreBottomSizer = new wxBoxSizer(wxHORIZONTAL);
    
-   cfgOk = new wxButton(this, ok, "OK", wxDefaultPosition, wxSize(70, 25));
+   cfgOk = new wxButton(this, ok, _("OK"), wxDefaultPosition, wxSize(70, 25));
    restoreBottomSizer->Add(cfgOk, 1, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
 
    if (apply != -1) {
-      cfgApply = new wxButton(this, apply, "Apply", wxDefaultPosition, wxSize(70, 25));
+      cfgApply = new wxButton(this, apply, _("Apply"), wxDefaultPosition, wxSize(70, 25));
       restoreBottomSizer->Add(cfgApply, 1, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, 10);
    }
    else {
       cfgApply = NULL;
    }
 
-   cfgCancel = new wxButton(this, cancel, "Cancel", wxDefaultPosition, wxSize(70, 25));
+   cfgCancel = new wxButton(this, cancel, _("Cancel"), wxDefaultPosition, wxSize(70, 25));
    restoreBottomSizer->Add(cfgCancel, 1, wxALIGN_CENTER_VERTICAL | wxLEFT, 10);
    
    mainSizer->Add(restoreBottomSizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxALL, 5);
@@ -195,29 +232,29 @@ wxbConfigPanel::~wxbConfigPanel() {
    delete config;
 }
    
-void wxbConfigPanel::SetRowString(const char* title, wxString value) {
+void wxbConfigPanel::SetRowString(const wxChar* title, wxString value) {
    int i;
    if ((i = FindRow(title)) > -1) {
       (*config)[i].SetValue(value);
    }
 }
 
-wxString wxbConfigPanel::GetRowString(const char* title) {
+wxString wxbConfigPanel::GetRowString(const wxChar* title) {
    int i;
    if ((i = FindRow(title)) > -1) {
       return (*config)[i].GetValue();
    }
-   return "";
+   return wxT("");
 }
 
-void wxbConfigPanel::SetRowSelection(const char* title, int ind) {
+void wxbConfigPanel::SetRowSelection(const wxChar* title, int ind) {
    int i;
    if ((i = FindRow(title)) > -1) {
       (*config)[i].SetIndex(ind);
    }
 }
 
-int wxbConfigPanel::GetRowSelection(const char* title) {
+int wxbConfigPanel::GetRowSelection(const wxChar* title) {
    int i;
    if ((i = FindRow(title)) > -1) {
       return (*config)[i].GetIndex();
@@ -225,21 +262,21 @@ int wxbConfigPanel::GetRowSelection(const char* title) {
    return -1;
 }
 
-void wxbConfigPanel::ClearRowChoices(const char* title) {
+void wxbConfigPanel::ClearRowChoices(const wxChar* title) {
    int i;
    if ((i = FindRow(title)) > -1) {
-      return (*config)[i].Clear();
+      (*config)[i].Clear();
    }  
 }
 
-void wxbConfigPanel::AddRowChoice(const char* title, wxString value) {
+void wxbConfigPanel::AddRowChoice(const wxChar* title, wxString value) {
    int i;
    if ((i = FindRow(title)) > -1) {
-      return (*config)[i].Add(value);
+      (*config)[i].Add(value);
    }  
 }
 
-int wxbConfigPanel::FindRow(const char* title) {
+int wxbConfigPanel::FindRow(const wxChar* title) {
    unsigned int i;
    
    for (i = last; i < config->GetCount(); i++) {
@@ -260,6 +297,16 @@ int wxbConfigPanel::FindRow(const char* title) {
    return -1;
 }
 
+int wxbConfigPanel::GetRowCount(const wxChar* title)
+{
+   int i;
+   if ((i = FindRow(title)) > -1) {
+      return (*config)[i].GetCount();
+   }  
+
+   return -1;
+}
+
 void wxbConfigPanel::EnableApply(bool enable) {
    cfgOk->Enable(!enable);
    if (cfgApply) cfgApply->Enable(enable);