]> 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 2cba2fdcc584e8ea76d4eaafeadd9a2bc9699af0..97b570d307abd5378e166504c94550ed8f3030ac 100644 (file)
@@ -7,25 +7,46 @@
  *    Version $Id$
  */
 /*
-   Copyright (C) 2004-2005 Kern Sibbald
+   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
-   version 2 as amended with additional clauses defined in the
-   file LICENSE in the main source directory.
+   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 
-   the file LICENSE for additional 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.
 
+   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., 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,
@@ -35,46 +56,31 @@ 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, wxT(_("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,wxT(""),wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_RICH | 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));
+   wxString strbuf;
 
-   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, wxT(_("Save and close"))), 0, wxALL, 10);
-   bottomsizer->Add(new wxButton(this, Quit, wxT(_("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) << wxT("#\n");
-      (*textCtrl) << wxT(_("# Bacula wx-console Configuration File\n"));
-      (*textCtrl) << wxT("#\n");
-      (*textCtrl) << wxT("\n");
-      (*textCtrl) << wxT("Director {\n");
-      (*textCtrl) << wxT("  Name = <hostname>-dir\n");
-      (*textCtrl) << wxT("  DIRport = 9101\n");
-      (*textCtrl) << wxT("  address = <hostname>\n");
-      (*textCtrl) << wxT("  Password = \"<dir_password>\"\n");
-      (*textCtrl) << wxT("}\n");
+      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);
@@ -82,23 +88,56 @@ wxbConfigFileEditor::wxbConfigFileEditor(wxWindow* parent, wxString filename):
       off_t len;
       while ((len = file.Read(buffer, 2048)) > -1) {
          buffer[len] = 0;
-         (*textCtrl) << wxString(buffer,wxConvLocal);
+         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);
+   
+   mainSizer->Add(textCtrl, 1, wxEXPAND);
+   mainSizer->Add(bottomsizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL);
+   
+   this->SetSizer(mainSizer);
+
+   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::Format(wxT(_("Unable to write to %s\n")), filename.c_str()),
-                        wxT(_("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;