Version 5.1.3
[ctsim.git] / src / ctsim.cpp
index 7053981728305fe5e96dbc6e354efe34840b4c7a..9befa24c35cbc67c036c3e0d36df8b51d6adf6a5 100644 (file)
@@ -1063,36 +1063,40 @@ MainFrame::OnAbout(wxCommandEvent& WXUNUSED(event) )
 
 // Create new documents
 
-ProjectionFileDocument*
-CTSimApp::newProjectionDoc()
-{
-  wxString fname;
-  m_docManager->MakeDefaultName(fname);
-  fname += _T(".pj");
-  ProjectionFileDocument* newDoc = dynamic_cast<ProjectionFileDocument*>(m_pDocTemplProjection->CreateDocument (fname));
+wxDocument* 
+CTSimApp::newDocumentHelper (wxDocTemplate* tmpl) {
+  wxDocument* newDoc = tmpl->CreateDocument (_T(""));
   if (newDoc) {
-    newDoc->SetDocumentName (m_pDocTemplProjection->GetDocumentName());
-    newDoc->SetDocumentTemplate (m_pDocTemplProjection);
+    newDoc->SetDocumentTemplate (tmpl);
     newDoc->OnNewDocument();
-    newDoc->SetFilename(fname);
+    wxString fname = newDoc->GetFilename();
+    fname += _T(".");
+    fname += tmpl->GetDefaultExtension();
+    newDoc->SetDocumentName(fname);
+    newDoc->SetTitle(fname);
+    newDoc->SetFilename(fname, true);
   }
 
   return newDoc;
 }
 
+ProjectionFileDocument*
+CTSimApp::newProjectionDoc()
+{
+  ProjectionFileDocument* newDoc = dynamic_cast<ProjectionFileDocument*>
+    (newDocumentHelper(m_pDocTemplProjection));
+  if (newDoc)
+    newDoc->getView()->getFrame()->SetTitle(newDoc->GetDocumentName());
+  return newDoc;
+}
+
 ImageFileDocument*
 CTSimApp::newImageDoc()
 {
-  wxString fname;
-  m_docManager->MakeDefaultName(fname);
-  fname += _T(".if");
-  ImageFileDocument* newDoc = dynamic_cast<ImageFileDocument*>(m_pDocTemplImage->CreateDocument (fname));
-  if (newDoc) {
-    newDoc->SetDocumentName (m_pDocTemplImage->GetDocumentName());
-    newDoc->SetDocumentTemplate (m_pDocTemplImage);
-    newDoc->OnNewDocument();
-    newDoc->SetFilename(fname);
-  }
+  ImageFileDocument* newDoc = dynamic_cast<ImageFileDocument*>
+    (newDocumentHelper(m_pDocTemplImage));
+  if (newDoc)
+    newDoc->getView()->getFrame()->SetTitle(newDoc->GetDocumentName());
 
   return newDoc;
 }
@@ -1100,16 +1104,10 @@ CTSimApp::newImageDoc()
 PlotFileDocument*
 CTSimApp::newPlotDoc()
 {
-  wxString fname;
-  m_docManager->MakeDefaultName(fname);
-  fname += _T(".plt");
-  PlotFileDocument* newDoc = dynamic_cast<PlotFileDocument*>(m_pDocTemplPlot->CreateDocument (fname));
-  if (newDoc) {
-    newDoc->SetDocumentName (m_pDocTemplPlot->GetDocumentName());
-    newDoc->SetDocumentTemplate (m_pDocTemplPlot);
-    newDoc->OnNewDocument();
-    newDoc->SetFilename(fname);
-  }
+  PlotFileDocument* newDoc = dynamic_cast<PlotFileDocument*>
+    (newDocumentHelper(m_pDocTemplPlot));
+  if (newDoc)
+    newDoc->getView()->getFrame()->SetTitle(newDoc->GetDocumentName());
 
   return newDoc;
 }
@@ -1118,17 +1116,10 @@ CTSimApp::newPlotDoc()
 TextFileDocument*
 CTSimApp::newTextDoc()
 {
-  wxString fname;
-  m_docManager->MakeDefaultName(fname);
-  fname += _T(".txt");
-
-  TextFileDocument* newDoc = dynamic_cast<TextFileDocument*>(m_pDocTemplText->CreateDocument (fname));
-  if (newDoc) {
-    newDoc->SetDocumentName (m_pDocTemplText->GetDocumentName());
-    newDoc->SetDocumentTemplate (m_pDocTemplText);
-    newDoc->OnNewDocument();
-    newDoc->SetFilename (fname);
-  }
+  TextFileDocument* newDoc = dynamic_cast<TextFileDocument*>
+    (newDocumentHelper(m_pDocTemplText));
+  if (newDoc)
+    newDoc->getView()->getFrame()->SetTitle(newDoc->GetDocumentName());
 
   return newDoc;
 }
@@ -1137,16 +1128,10 @@ CTSimApp::newTextDoc()
 PhantomFileDocument*
 CTSimApp::newPhantomDoc()
 {
-  wxString fname;
-  m_docManager->MakeDefaultName(fname);
-  fname += _T(".phm");
-  PhantomFileDocument* newDoc = dynamic_cast<PhantomFileDocument*>(m_pDocTemplPhantom->CreateDocument (fname));
-  if (newDoc) {
-    newDoc->SetDocumentName (m_pDocTemplPhantom->GetDocumentName());
-    newDoc->SetDocumentTemplate (m_pDocTemplPhantom);
-    newDoc->OnNewDocument();
-    newDoc->SetFilename(fname);
-  }
+  PhantomFileDocument* newDoc = dynamic_cast<PhantomFileDocument*>
+    (newDocumentHelper(m_pDocTemplPhantom));
+  if (newDoc)
+    newDoc->getView()->getFrame()->SetTitle(newDoc->GetDocumentName());
 
   return newDoc;
 }
@@ -1156,16 +1141,10 @@ CTSimApp::newPhantomDoc()
 Graph3dFileDocument*
 CTSimApp::newGraph3dDoc()
 {
-  wxString fname;
-  m_docManager->MakeDefaultName(fname);
-  fname += _T(".g3d");
-  Graph3dFileDocument* newDoc = dynamic_cast<Graph3dFileDocument*>(m_pDocTemplGraph3d->CreateDocument (fname));
-  if (newDoc) {
-    newDoc->SetDocumentName (m_pDocTemplGraph3d->GetDocumentName());
-    newDoc->SetDocumentTemplate (m_pDocTemplGraph3d);
-    newDoc->OnNewDocument();
-    newDoc->SetFilename(fname);
-  }
+  Graph3dFileDocument* newDoc = dynamic_cast<Graph3dFileDocument*>
+    (newDocumentHelper(m_pDocTemplGraph3d));
+  if (newDoc)
+    newDoc->getView()->getFrame()->SetTitle(newDoc->GetDocumentName());
 
   return newDoc;
 }