]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/wx-console/wxbconfigfileeditor.cpp
Fix some trivial errors and implemented the restore of IRIX xattrs.
[bacula/bacula] / bacula / src / wx-console / wxbconfigfileeditor.cpp
index e02702787bae1ee6cd73febda3008cb83e3d102f..97b570d307abd5378e166504c94550ed8f3030ac 100644 (file)
@@ -4,30 +4,49 @@
  *
  *    Nicolas Boichat, May 2004
  *
+ *    Version $Id$
  */
 /*
-   Copyright (C) 2004 Kern Sibbald and John Walker
+   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 three of the GNU Affero General Public
+   License as published by the Free Software Foundation and included
+   in the file LICENSE.
 
-   You should have received a copy of the GNU General Public 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 Affero 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 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.
+*/
+
+/*  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 "wxbconfigfileeditor.h"
+#undef _DEBUG
 
+#include "bacula.h"
+#include "wxbconfigfileeditor.h"
 #include <wx/file.h>
 #include <wx/filename.h>
 
+
 enum
 {
    Save = 1,
@@ -37,75 +56,94 @@ enum
 BEGIN_EVENT_TABLE(wxbConfigFileEditor, wxDialog)
    EVT_BUTTON(Save, wxbConfigFileEditor::OnSave)
    EVT_BUTTON(Quit, wxbConfigFileEditor::OnQuit)
+#ifdef HAVE_WIN32
+   EVT_PAINT (      wxbConfigFileEditor::OnPaint)
+#endif
 END_EVENT_TABLE()
 
 wxbConfigFileEditor::wxbConfigFileEditor(wxWindow* parent, wxString filename):
-      wxDialog(parent, -1, "Config file editor", wxDefaultPosition, wxSize(500, 300),
+      wxDialog(parent, -1, _("Config file editor"), wxDefaultPosition, wxSize(500, 300),
                    wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) {
    this->filename = filename;
    
-   textCtrl = new wxTextCtrl(this,-1,"",wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_RICH | wxTE_DONTWRAP);
+   wxString strbuf;
+
+   wxFileName filen(filename);
+   
+   if (!filen.FileExists()) {
+      strbuf << wxT("#\n");
+      strbuf << _("# Bacula bwx-console Configuration File\n");
+      strbuf << wxT("#\n");
+      strbuf << wxT("\n");
+      strbuf << wxT("Director {\n");
+      strbuf << wxT("  Name = <hostname>-dir\n");
+      strbuf << wxT("  DIRport = 9101\n");
+      strbuf << wxT("  address = <hostname>\n");
+      strbuf << wxT("  Password = \"<dir_password>\"\n");
+      strbuf << wxT("}\n");
+   }
+   else {
+      wxFile file(filename);
+      char buffer[2049];
+      off_t len;
+      while ((len = file.Read(buffer, 2048)) > -1) {
+         buffer[len] = 0;
+         strbuf << wxString(buffer,wxConvUTF8);
+         if (file.Eof())
+            break;
+      }
+      file.Close();
+   }
+
+   textCtrl = new wxTextCtrl(this,-1,strbuf,wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_RICH2 | wxTE_DONTWRAP);
    wxFont font(10, wxMODERN, wxNORMAL, wxNORMAL);
 #if defined __WXGTK12__ && !defined __WXGTK20__ // Fix for "chinese" fonts under gtk+ 1.2
    font.SetDefaultEncoding(wxFONTENCODING_ISO8859_1);
 #endif
    textCtrl->SetDefaultStyle(wxTextAttr(*wxBLACK, wxNullColour, font));
+   textCtrl->SetStyle(0, textCtrl->GetLastPosition(), wxTextAttr(*wxBLACK, wxNullColour, font));
 
    wxFlexGridSizer *mainSizer = new wxFlexGridSizer(2, 1, 0, 0);
    mainSizer->AddGrowableCol(0);
    mainSizer->AddGrowableRow(0);
    
    wxBoxSizer *bottomsizer = new wxBoxSizer(wxHORIZONTAL);
-   bottomsizer->Add(new wxButton(this, Save, "Save and close"), 0, wxALL, 10);
-   bottomsizer->Add(new wxButton(this, Quit, "Close without saving"), 0, wxALL, 10);
+   bottomsizer->Add(new wxButton(this, Save, _("Save and close")), 0, wxALL, 10);
+   bottomsizer->Add(new wxButton(this, Quit, _("Close without saving")), 0, wxALL, 10);
    
    mainSizer->Add(textCtrl, 1, wxEXPAND);
    mainSizer->Add(bottomsizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL);
    
    this->SetSizer(mainSizer);
-   
-   wxFileName filen(filename);
-   
-   if (!filen.FileExists()) {
-      (*textCtrl) << "#\n";
-      (*textCtrl) << "# Bacula wx-console Configuration File\n";
-      (*textCtrl) << "#\n";
-      (*textCtrl) << "\n";
-      (*textCtrl) << "Director {\n";
-      (*textCtrl) << "  Name = <hostname>-dir\n";
-      (*textCtrl) << "  DIRport = 9101\n";
-      (*textCtrl) << "  address = <hostname>\n";
-      (*textCtrl) << "  Password = \"<dir_password>\"\n";
-      (*textCtrl) << "}\n";
-   }
-   else {
-      wxFile file(filename);
-      wxChar buffer[2049];
-      off_t len;
-      while ((len = file.Read(buffer, 2048)) > -1) {
-         buffer[len] = (wxChar)0;
-         (*textCtrl) << buffer;
-         if (file.Eof())
-            break;
-      }
-      file.Close();
-   }
+
+   firstpaint = true;
 }
 
 wxbConfigFileEditor::~wxbConfigFileEditor() {
    
 }
 
+/* Kludge for Win32, so the text control is not completely selected. */
+void wxbConfigFileEditor::OnPaint(wxPaintEvent& event) {
+   wxPaintDC dc(this);
+
+   if (firstpaint) {
+      firstpaint = false;
+      textCtrl->SetSelection(0, 0);
+   }
+}
+
 void wxbConfigFileEditor::OnSave(wxCommandEvent& event) {
    wxFile file(filename, wxFile::write);
    if (!file.IsOpened()) {
-      wxMessageBox(wxString("Unable to write to ") << filename << "\n", "Error while saving",
+      wxMessageBox(wxString::Format(_("Unable to write to %s\n"), filename.c_str()),
+                        _("Error while saving"),
                         wxOK | wxICON_ERROR, this);
       EndModal(wxCANCEL);
       return;
    }
    
-   file.Write(textCtrl->GetValue());
+   file.Write(textCtrl->GetValue(),wxConvLocal);
    
    file.Flush();
    file.Close();