** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: ctsim.cpp,v 1.59 2001/01/30 01:21:37 kevin Exp $
+** $Id: ctsim.cpp,v 1.65 2001/02/02 21:50:18 kevin Exp $
**
** 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
#endif
#endif
-static const char* rcsindent = "$Id: ctsim.cpp,v 1.59 2001/01/30 01:21:37 kevin Exp $";
+static const char* rcsindent = "$Id: ctsim.cpp,v 1.65 2001/02/02 21:50:18 kevin Exp $";
struct option CTSimApp::ctsimOptions[] =
{
m_pDocTemplPhantom = new wxDocTemplate (m_docManager, "PhantomFile", "*.phm", "", "phm", "PhantomFile", "PhantomView", CLASSINFO(PhantomFileDocument), CLASSINFO(PhantomFileView));
m_pDocTemplPlot = new wxDocTemplate (m_docManager, "PlotFile", "*.plt", "", "plt", "PlotFile", "PlotView", CLASSINFO(PlotFileDocument), CLASSINFO(PlotFileView));
m_pDocTemplText = new wxDocTemplate (m_docManager, "TextFile", "*.txt", "", "txt", "TextFile", "TextView", CLASSINFO(TextFileDocument), CLASSINFO(TextFileView), wxTEMPLATE_INVISIBLE);
-
+#if wxUSE_GLCANVAS
+ m_pDocTemplGraph3d = new wxDocTemplate (m_docManager, "Graph3dFile", "*.g3d", "", "g3d", "Graph3dFile", "Graph3dView", CLASSINFO(Graph3dFileDocument), CLASSINFO(Graph3dFileView), wxTEMPLATE_INVISIBLE);
+#endif
+
#if wxUSE_GIF
wxImage::AddHandler(new wxGIFHandler); // Required for images in the online documentation
#endif
m_docManager->FileHistoryLoad(*m_pConfig);
#ifdef CTSIM_MDI
+#if 1
m_pLogDoc = newTextDoc();
if (m_pLogDoc) {
m_pLog = m_pLogDoc->getTextCtrl();
m_pLogDoc->getView()->getFrame()->SetTitle("Log");
int xSize, ySize;
m_pFrame->GetClientSize(&xSize, &ySize);
- int yLogSize = ySize / 3;
+ int yLogSize = ySize / 4;
m_pLogDoc->getView()->getFrame()->SetSize (0, ySize - yLogSize, xSize, yLogSize);
m_pLogDoc->getView()->getFrame()->Show (true);
} else
+#else
+// wxMDIChildFrame *pLogFrame = new wxMDIChildFrame (m_pFrame, -1, "Log", wxDefaultPosition, wxSize(0,0), wxTHICK_FRAME, "Log");
+ m_pLog = new wxTextCtrl(m_pFrame->GetClientWindow(), -1, "", wxPoint(0,0), wxSize(0,0), wxTE_MULTILINE | wxTE_READONLY);
+ int xSize, ySize;
+ m_pFrame->GetClientSize(&xSize, &ySize);
+ int yLogSize = ySize / 5;
+ m_pLog->SetSize (0, ySize - yLogSize, xSize, yLogSize);
+ m_pLog->Show (true);
+ m_pLog->Enable (true);
+#endif
#else
m_pLog = new wxTextCtrl (m_pFrame, -1, "Log Window\n", wxPoint(0, 0), wxSize(0,0), wxTE_MULTILINE | wxTE_READONLY);
#endif
: wxDocParentFrame(manager, frame, id, title, pos, size, type, "MainFrame")
#endif
{
+ m_bShuttingDown = false;
+
//// Make a menubar
wxMenu *file_menu = new wxMenu;
MainFrame::~MainFrame()
{
+ m_bShuttingDown = true; // Currently used so that Log Window will close
+
+ // delete all non-modified documents
+ wxList& rListDocs = theApp->getDocManager()->GetDocuments();
+ for (wxNode* pNode = rListDocs.GetFirst(); pNode != NULL; pNode = pNode->GetNext()) {
+ wxDocument* pDoc = static_cast<wxDocument*>(pNode->GetData());
+ if (! pDoc->IsModified()) {
+ GetDocumentManager()->RemoveDocument(pDoc);
+ delete pDoc;
+ }
+ }
+ ::wxYield();
if (theApp->getConfig())
- theApp->getDocManager()->FileHistorySave (*theApp->getConfig());
- delete theApp->getDocManager();
-
+ GetDocumentManager()->FileHistorySave (*theApp->getConfig());
+ ::wxYield();
+ delete theApp->getDocManager();
}
void
MainFrame::OnSize (wxSizeEvent& event)
{
#ifdef CTSIM_MDI
- int xSize, ySize;
- wxMDIParentFrame::GetClientSize(&xSize, &ySize);
-
- if (theApp->getLogDoc()) {
+ if (theApp->getLogDoc()) {
+ int xSize, ySize;
GetClientSize(&xSize, &ySize);
- int yLogSize = ySize / 3;
- theApp->getLogDoc()->getView()->getFrame()->SetSize (0, ySize - yLogSize, xSize, yLogSize);
- theApp->getLogDoc()->getView()->getFrame()->Show (true);
- }
- //GetClientWindow()->SetSize (0, 0, sizeClient.x, sizeClient.y);
- //GetClientWindow()->Refresh();
+ int yLogSize = ySize / 4;
+ theApp->getLogDoc()->getView()->getFrame()->SetSize (0, ySize - yLogSize, xSize, yLogSize);
+ theApp->getLogDoc()->getView()->getFrame()->Show (true);
+ }
#endif
#if CTSIM_MDI
*theApp->getLog() << os.str().c_str() << "\n";
wxString filename = "untitled.if";
ImageFileDocument* pFilterDoc = theApp->newImageDoc();
+ pFilterDoc->setBadFileOpen();
if (! pFilterDoc) {
sys_error (ERR_SEVERE, "Unable to create filter image");
return;
pFrame->Show (false);
}
}
+ newDoc->SetDocumentName (m_pDocTemplProjection->GetDocumentName());
+ newDoc->SetDocumentTemplate (m_pDocTemplProjection);
+ newDoc->OnNewDocument();
}
return newDoc;
pFrame->Show (false);
}
}
+ newDoc->SetDocumentName (m_pDocTemplImage->GetDocumentName());
+ newDoc->SetDocumentTemplate (m_pDocTemplImage);
+ newDoc->OnNewDocument();
}
return newDoc;
pFrame->Show (false);
}
}
+ newDoc->SetDocumentName (m_pDocTemplPlot->GetDocumentName());
+ newDoc->SetDocumentTemplate (m_pDocTemplPlot);
+ newDoc->OnNewDocument();
}
return newDoc;
pFrame->Show (false);
}
}
+ newDoc->SetDocumentName (m_pDocTemplText->GetDocumentName());
+ newDoc->SetDocumentTemplate (m_pDocTemplText);
+ newDoc->OnNewDocument();
}
return newDoc;
if (pFrame)
pFrame->SetSize (0,0);
}
+ newDoc->SetDocumentName (m_pDocTemplPhantom->GetDocumentName());
+ newDoc->SetDocumentTemplate (m_pDocTemplPhantom);
+ newDoc->OnNewDocument();
}
return newDoc;
}
+
+#if wxUSE_GLCANVAS
+
+Graph3dFileDocument*
+CTSimApp::newGraph3dDoc()
+{
+ Graph3dFileDocument* newDoc = dynamic_cast<Graph3dFileDocument*>(m_pDocTemplGraph3d->CreateDocument (""));
+ if (newDoc) {
+ Graph3dFileView* pView = newDoc->getView();
+ if (pView) {
+ wxFrame* pFrame = pView->getFrame();
+ if (pFrame)
+ pFrame->SetSize (0,0);
+ }
+ newDoc->SetDocumentName (m_pDocTemplGraph3d->GetDocumentName());
+ newDoc->SetDocumentTemplate (m_pDocTemplGraph3d);
+ newDoc->OnNewDocument();
+ }
+
+ return newDoc;
+}
+#endif