]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/docview.cpp
static wxFile::Access() added
[wxWidgets.git] / src / common / docview.cpp
index 851c909b21a5f5dd81fbf16c3ef621219e4c7836..bcf1f64bb3055788a48e65a1ba1a7620d5d35e8e 100644 (file)
 #include "wx/menu.h"
 #include "wx/list.h"
 #include "wx/filedlg.h"
 #include "wx/menu.h"
 #include "wx/list.h"
 #include "wx/filedlg.h"
+#include <wx/intl.h>
+#endif
+
+#ifdef __WXGTK__
+#include "wx/mdi.h"
 #endif
 
 #include "wx/msgdlg.h"
 #endif
 
 #include "wx/msgdlg.h"
@@ -190,18 +195,30 @@ bool wxDocument::SaveAs(void)
   if (!docTemplate)
     return FALSE;
   
   if (!docTemplate)
     return FALSE;
   
-  char *tmp = wxFileSelector("Save as", docTemplate->GetDirectory(), GetFilename(),
+  char *tmp = wxFileSelector(_("Save as"), docTemplate->GetDirectory(), GetFilename(),
     docTemplate->GetDefaultExtension(), docTemplate->GetFileFilter(),
     docTemplate->GetDefaultExtension(), docTemplate->GetFileFilter(),
-    0, GetDocumentWindow());
+    wxSAVE|wxOVERWRITE_PROMPT, GetDocumentWindow());
     
   if (!tmp)
     return FALSE;
   else
   {
     
   if (!tmp)
     return FALSE;
   else
   {
-    SetFilename(tmp);
-    SetTitle(wxFileNameFromPath(tmp));
+    wxString fileName(tmp);
+    wxString path("");
+    wxString name("");
+    wxString ext("");
+    wxSplitPath(fileName, & path, & name, & ext);
+
+    if (ext.IsEmpty() || ext == "")
+    {
+        fileName += ".";
+        fileName += docTemplate->GetDefaultExtension();
+    }
+
+    SetFilename(fileName);
+    SetTitle(wxFileNameFromPath(fileName));
     
     
-    GetDocumentManager()->AddFileToHistory(tmp);
+    GetDocumentManager()->AddFileToHistory(fileName);
 
     // Notify the views that the filename has changed
     wxNode *node = m_documentViews.First();
 
     // Notify the views that the filename has changed
     wxNode *node = m_documentViews.First();
@@ -224,19 +241,19 @@ bool wxDocument::OnSaveDocument(const wxString& file)
   if (wxTheApp->GetAppName() != "")
     msgTitle = wxTheApp->GetAppName();
   else
   if (wxTheApp->GetAppName() != "")
     msgTitle = wxTheApp->GetAppName();
   else
-    msgTitle = wxString("File error");
+    msgTitle = wxString(_("File error"));
 
   ofstream store(file);
   if (store.fail() || store.bad())
   {
 
   ofstream store(file);
   if (store.fail() || store.bad())
   {
-    (void)wxMessageBox("Sorry, could not open this file for saving.", msgTitle, wxOK | wxICON_EXCLAMATION,
+    (void)wxMessageBox(_("Sorry, could not open this file for saving."), msgTitle, wxOK | wxICON_EXCLAMATION,
       GetDocumentWindow());
     // Saving error
     return FALSE;
   }
   if (SaveObject(store)==FALSE)
   {
       GetDocumentWindow());
     // Saving error
     return FALSE;
   }
   if (SaveObject(store)==FALSE)
   {
-    (void)wxMessageBox("Sorry, could not save this file.", msgTitle, wxOK | wxICON_EXCLAMATION,
+    (void)wxMessageBox(_("Sorry, could not save this file."), msgTitle, wxOK | wxICON_EXCLAMATION,
       GetDocumentWindow());
     // Saving error
     return FALSE;
       GetDocumentWindow());
     // Saving error
     return FALSE;
@@ -255,18 +272,18 @@ bool wxDocument::OnOpenDocument(const wxString& file)
   if (wxTheApp->GetAppName() != "")
     msgTitle = wxTheApp->GetAppName();
   else
   if (wxTheApp->GetAppName() != "")
     msgTitle = wxTheApp->GetAppName();
   else
-    msgTitle = wxString("File error");
+    msgTitle = wxString(_("File error"));
 
   ifstream store(file);
   if (store.fail() || store.bad())
   {
 
   ifstream store(file);
   if (store.fail() || store.bad())
   {
-    (void)wxMessageBox("Sorry, could not open this file.", msgTitle, wxOK|wxICON_EXCLAMATION,
+    (void)wxMessageBox(_("Sorry, could not open this file."), msgTitle, wxOK|wxICON_EXCLAMATION,
      GetDocumentWindow());
     return FALSE;
   }
   if (LoadObject(store)==FALSE)
   {
      GetDocumentWindow());
     return FALSE;
   }
   if (LoadObject(store)==FALSE)
   {
-    (void)wxMessageBox("Sorry, could not open this file.", msgTitle, wxOK|wxICON_EXCLAMATION,
+    (void)wxMessageBox(_("Sorry, could not open this file."), msgTitle, wxOK|wxICON_EXCLAMATION,
       GetDocumentWindow());
     return FALSE;
   }
       GetDocumentWindow());
     return FALSE;
   }
@@ -313,7 +330,7 @@ bool wxDocument::GetPrintableName(wxString& buf) const
   }
   else
   {
   }
   else
   {
-    buf = "unnamed";
+    buf = _("unnamed");
     return TRUE;
   }
 }
     return TRUE;
   }
 }
@@ -345,9 +362,9 @@ bool wxDocument::OnSaveModified(void)
     if (wxTheApp->GetAppName() != "")
       msgTitle = wxTheApp->GetAppName();
     else
     if (wxTheApp->GetAppName() != "")
       msgTitle = wxTheApp->GetAppName();
     else
-      msgTitle = wxString("Warning");
+      msgTitle = wxString(_("Warning"));
 
 
-    sprintf(buf, "Do you want to save changes to document %s?", (const char *)title);
+    sprintf(buf, _("Do you want to save changes to document %s?"), (const char *)title);
     int res = wxMessageBox(buf, msgTitle, wxYES_NO|wxCANCEL|wxICON_QUESTION,
       GetDocumentWindow());
     if (res == wxNO)
     int res = wxMessageBox(buf, msgTitle, wxYES_NO|wxCANCEL|wxICON_QUESTION,
       GetDocumentWindow());
     if (res == wxNO)
@@ -482,28 +499,7 @@ void wxView::OnChangeFilename(void)
     wxString name;
     GetDocument()->GetPrintableName(name);
 
     wxString name;
     GetDocument()->GetPrintableName(name);
 
-    // If the frame is an MDI child, just set the title
-    // to the name.
-    // Otherwise, append the document name to the name of the application
-#ifdef __WXMSW__
-    if (GetFrame()->IsKindOf(CLASSINFO(wxMDIChildFrame)))
-#else
-    if (FALSE)
-#endif
-    {
-      GetFrame()->SetTitle(name);
-    }
-    else
-    {
-      if (wxTheApp->GetAppName() != "")
-      {
-        char buf[400];
-        sprintf(buf, "%s - %s", (const char *)wxTheApp->GetAppName(), (const char *)name);
-        GetFrame()->SetTitle(buf);
-      }
-      else
-        GetFrame()->SetTitle(name);
-    }
+    GetFrame()->SetTitle(name);
   }
 }
 
   }
 }
 
@@ -807,7 +803,7 @@ void wxDocManager::OnPreview(wxCommandEvent& WXUNUSED(event))
 #endif
        preview = new wxPostScriptPrintPreview(printout, view->OnCreatePrintout());
 
 #endif
        preview = new wxPostScriptPrintPreview(printout, view->OnCreatePrintout());
 
-    wxPreviewFrame *frame = new wxPreviewFrame(preview, (wxFrame *)wxTheApp->GetTopWindow(), "Print Preview",
+    wxPreviewFrame *frame = new wxPreviewFrame(preview, (wxFrame *)wxTheApp->GetTopWindow(), _("Print Preview"),
                wxPoint(100, 100), wxSize(600, 650));
     frame->Centre(wxBOTH);
     frame->Initialize();
                wxPoint(100, 100), wxSize(600, 650));
     frame->Centre(wxBOTH);
     frame->Initialize();
@@ -1032,7 +1028,7 @@ wxDocument *wxDocManager::GetCurrentDocument(void) const
 bool wxDocManager::MakeDefaultName(wxString& name)
 {
   char buf[256];
 bool wxDocManager::MakeDefaultName(wxString& name)
 {
   char buf[256];
-  sprintf(buf, "unnamed%d", m_defaultDocumentNameCounter);
+  sprintf(buf, _("unnamed%d"), m_defaultDocumentNameCounter);
   m_defaultDocumentNameCounter ++;
   name = buf;
   return TRUE;
   m_defaultDocumentNameCounter ++;
   name = buf;
   return TRUE;
@@ -1166,7 +1162,7 @@ wxDocTemplate *wxDocManager::SelectDocumentPath(wxDocTemplate **templates,
     // Omit final "|"
     descrBuf[len-1] = 0;
 
     // Omit final "|"
     descrBuf[len-1] = 0;
 
-  char *pathTmp = wxFileSelector("Select a file", "", "", "", descrBuf, 0, wxTheApp->GetTopWindow());
+  char *pathTmp = wxFileSelector(_("Select a file"), "", "", "", descrBuf, 0, wxTheApp->GetTopWindow());
   delete[] descrBuf;
   if (pathTmp)
   {
   delete[] descrBuf;
   if (pathTmp)
   {
@@ -1195,7 +1191,7 @@ wxDocTemplate *wxDocManager::SelectDocumentPath(wxDocTemplate **templates,
   if (!temp)
     return NULL;
 
   if (!temp)
     return NULL;
 
-  char *pathTmp = wxFileSelector("Select a file", "", "",
+  char *pathTmp = wxFileSelector(_("Select a file"), "", "",
      temp->GetDefaultExtension(),
      temp->GetFileFilter(),
      0, wxTheApp->GetTopWindow());
      temp->GetDefaultExtension(),
      temp->GetFileFilter(),
      0, wxTheApp->GetTopWindow());
@@ -1240,7 +1236,7 @@ wxDocTemplate *wxDocManager::SelectDocumentType(wxDocTemplate **templates,
     return temp;
   }
   
     return temp;
   }
   
-  wxDocTemplate *theTemplate = (wxDocTemplate *)wxGetSingleChoiceData("Select a document template", "Templates", n,
+  wxDocTemplate *theTemplate = (wxDocTemplate *)wxGetSingleChoiceData(_("Select a document template"), _("Templates"), n,
     strings, data);
   delete[] strings;
   delete[] data;
     strings, data);
   delete[] strings;
   delete[] data;
@@ -1263,7 +1259,7 @@ wxDocTemplate *wxDocManager::SelectViewType(wxDocTemplate **templates,
       n ++;
     }
   }
       n ++;
     }
   }
-  wxDocTemplate *theTemplate = (wxDocTemplate *)wxGetSingleChoiceData("Select a document view", "Views", n,
+  wxDocTemplate *theTemplate = (wxDocTemplate *)wxGetSingleChoiceData(_("Select a document view"), _("Views"), n,
     strings, data);
   delete[] strings;
   delete[] data;
     strings, data);
   delete[] strings;
   delete[] data;
@@ -1391,7 +1387,7 @@ bool wxDocChildFrame::OnClose(void)
 
 BEGIN_EVENT_TABLE(wxDocParentFrame, wxFrame)
     EVT_MENU(wxID_EXIT, wxDocParentFrame::OnExit)
 
 BEGIN_EVENT_TABLE(wxDocParentFrame, wxFrame)
     EVT_MENU(wxID_EXIT, wxDocParentFrame::OnExit)
-    EVT_MENU_RANGE(wxID_FILE1, wxID_FILE2, wxDocParentFrame::OnMRUFile)
+    EVT_MENU_RANGE(wxID_FILE1, wxID_FILE9, wxDocParentFrame::OnMRUFile)
 END_EVENT_TABLE()
 
 wxDocParentFrame::wxDocParentFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title,
 END_EVENT_TABLE()
 
 wxDocParentFrame::wxDocParentFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title,
@@ -1635,12 +1631,12 @@ void wxCommandProcessor::SetMenuStrings(void)
     {
       wxCommand *command = (wxCommand *)m_currentCommand->Data();
       wxString commandName(command->GetName());
     {
       wxCommand *command = (wxCommand *)m_currentCommand->Data();
       wxString commandName(command->GetName());
-      if (commandName == "") commandName = "Unnamed command";
+      if (commandName == "") commandName = _("Unnamed command");
       bool canUndo = command->CanUndo();
       if (canUndo)
       bool canUndo = command->CanUndo();
       if (canUndo)
-        buf = wxString("&Undo ") + commandName;
+        buf = wxString(_("&Undo ")) + commandName;
       else
       else
-        buf = wxString("Can't &Undo ") + commandName;
+        buf = wxString(_("Can't &Undo ")) + commandName;
         
       m_commandEditMenu->SetLabel(wxID_UNDO, buf);
       m_commandEditMenu->Enable(wxID_UNDO, canUndo);
         
       m_commandEditMenu->SetLabel(wxID_UNDO, buf);
       m_commandEditMenu->Enable(wxID_UNDO, canUndo);
@@ -1650,25 +1646,25 @@ void wxCommandProcessor::SetMenuStrings(void)
       {
         wxCommand *redoCommand = (wxCommand *)m_currentCommand->Next()->Data();
         wxString redoCommandName(redoCommand->GetName());
       {
         wxCommand *redoCommand = (wxCommand *)m_currentCommand->Next()->Data();
         wxString redoCommandName(redoCommand->GetName());
-        if (redoCommandName == "") redoCommandName = "Unnamed command";
-        buf = wxString("&Redo ") + redoCommandName;
+        if (redoCommandName == "") redoCommandName = _("Unnamed command");
+        buf = wxString(_("&Redo ")) + redoCommandName;
         m_commandEditMenu->SetLabel(wxID_REDO, buf);
         m_commandEditMenu->Enable(wxID_REDO, TRUE);
       }
       else
       {
         m_commandEditMenu->SetLabel(wxID_REDO, buf);
         m_commandEditMenu->Enable(wxID_REDO, TRUE);
       }
       else
       {
-        m_commandEditMenu->SetLabel(wxID_REDO, "&Redo");
+        m_commandEditMenu->SetLabel(wxID_REDO, _("&Redo"));
         m_commandEditMenu->Enable(wxID_REDO, FALSE);
       }
     }
     else
     {
         m_commandEditMenu->Enable(wxID_REDO, FALSE);
       }
     }
     else
     {
-      m_commandEditMenu->SetLabel(wxID_UNDO, "&Undo");
+      m_commandEditMenu->SetLabel(wxID_UNDO, _("&Undo"));
       m_commandEditMenu->Enable(wxID_UNDO, FALSE);
 
       if (m_commands.Number() == 0)
       {
       m_commandEditMenu->Enable(wxID_UNDO, FALSE);
 
       if (m_commands.Number() == 0)
       {
-        m_commandEditMenu->SetLabel(wxID_REDO, "&Redo");
+        m_commandEditMenu->SetLabel(wxID_REDO, _("&Redo"));
         m_commandEditMenu->Enable(wxID_REDO, FALSE);
       }
       else
         m_commandEditMenu->Enable(wxID_REDO, FALSE);
       }
       else
@@ -1677,8 +1673,8 @@ void wxCommandProcessor::SetMenuStrings(void)
         // we've undone to the start of the list, but can redo the first.
         wxCommand *redoCommand = (wxCommand *)m_commands.First()->Data();
         wxString redoCommandName(redoCommand->GetName());
         // we've undone to the start of the list, but can redo the first.
         wxCommand *redoCommand = (wxCommand *)m_commands.First()->Data();
         wxString redoCommandName(redoCommand->GetName());
-        if (!redoCommandName) redoCommandName = "Unnamed command";
-        buf = wxString("&Redo ") + redoCommandName;
+        if (!redoCommandName) redoCommandName = _("Unnamed command");
+        buf = wxString(_("&Redo ")) + redoCommandName;
         m_commandEditMenu->SetLabel(wxID_REDO, buf);
         m_commandEditMenu->Enable(wxID_REDO, TRUE);
       }
         m_commandEditMenu->SetLabel(wxID_REDO, buf);
         m_commandEditMenu->Enable(wxID_REDO, TRUE);
       }
@@ -1748,7 +1744,7 @@ void wxFileHistory::AddFileToHistory(const wxString& file)
   {
     if (m_fileHistoryN == 0)
       m_fileMenu->AppendSeparator();
   {
     if (m_fileHistoryN == 0)
       m_fileMenu->AppendSeparator();
-    m_fileMenu->Append(wxID_FILE1+m_fileHistoryN, "[EMPTY]");
+    m_fileMenu->Append(wxID_FILE1+m_fileHistoryN, _("[EMPTY]"));
     m_fileHistoryN ++;
   }
   // Shuffle filenames down
     m_fileHistoryN ++;
   }
   // Shuffle filenames down