X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=src%2Fctsim.cpp;h=ee7b4a8ab62285de8560f3d6e53e6322d73ee2f9;hp=906112df640364bf41b5f11d955b30358f5953f5;hb=a5d437cb4228b07f8c005eaca497c317b8c19d14;hpb=01ed72399d433ce45a0195f8acaea349a421461e diff --git a/src/ctsim.cpp b/src/ctsim.cpp index 906112d..ee7b4a8 100644 --- a/src/ctsim.cpp +++ b/src/ctsim.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: ctsim.cpp,v 1.39 2001/01/20 08:10:33 kevin Exp $ +** $Id: ctsim.cpp,v 1.40 2001/01/20 17:43:41 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 @@ -70,7 +70,7 @@ #endif #endif -static const char* rcsindent = "$Id: ctsim.cpp,v 1.39 2001/01/20 08:10:33 kevin Exp $"; +static const char* rcsindent = "$Id: ctsim.cpp,v 1.40 2001/01/20 17:43:41 kevin Exp $"; struct option CTSimApp::ctsimOptions[] = { @@ -82,7 +82,7 @@ struct option CTSimApp::ctsimOptions[] = IMPLEMENT_APP(CTSimApp) CTSimApp::CTSimApp() -: m_docManager(NULL), m_pFrame(NULL) +: m_docManager(NULL), m_pFrame(NULL), m_pLog(0) { theApp = this; } @@ -101,7 +101,10 @@ CTSimApp::OnInit() #ifdef HAVE_SETPRIORITY setpriority (PRIO_PROCESS, 0, 15); // set to low scheduling priority #endif - + + m_pConfig = new wxConfig("ctsim"); + wxConfigBase::Set(m_pConfig); + g_bRunningWXWindows = true; // process options while (1) { @@ -130,10 +133,11 @@ CTSimApp::OnInit() m_docManager = new wxDocManager (wxDEFAULT_DOCMAN_FLAGS, true); - new wxDocTemplate (m_docManager, "ImageFile", "*.if", "", "if", "ImageFile doc", "ImageFile View", CLASSINFO(ImageFileDocument), CLASSINFO(ImageFileView)); - new wxDocTemplate (m_docManager, "ProjectionFile", "*.pj", "", "pj", "ProjectionFile doc", "ProjectionFile View", CLASSINFO(ProjectionFileDocument), CLASSINFO(ProjectionFileView)); - new wxDocTemplate (m_docManager, "PhantomFile", "*.phm", "", "phm", "Phantom doc", "Phantom View", CLASSINFO(PhantomDocument), CLASSINFO(PhantomView)); - new wxDocTemplate (m_docManager, "PlotFile", "*.plt", "", "plt", "Plot doc", "Plot View", CLASSINFO(PlotFileDocument), CLASSINFO(PlotFileView)); + new wxDocTemplate (m_docManager, "ImageFile", "*.if", "", "if", "ImageFile", "ImageView", CLASSINFO(ImageFileDocument), CLASSINFO(ImageFileView)); + new wxDocTemplate (m_docManager, "ProjectionFile", "*.pj", "", "pj", "ProjectionFile", "ProjectionView", CLASSINFO(ProjectionFileDocument), CLASSINFO(ProjectionFileView)); + new wxDocTemplate (m_docManager, "PhantomFile", "*.phm", "", "phm", "PhantomFile", "PhantomView", CLASSINFO(PhantomDocument), CLASSINFO(PhantomView)); + new wxDocTemplate (m_docManager, "PlotFile", "*.plt", "", "plt", "PlotFile", "PlotView", CLASSINFO(PlotFileDocument), CLASSINFO(PlotFileView)); + new wxDocTemplate (m_docManager, "TextEdit", "*.txt", "", "txt", "TextFile", "TextView", CLASSINFO(TextEditDocument), CLASSINFO(TextEditView), wxTEMPLATE_INVISIBLE); #if wxUSE_GIF wxImage::AddHandler(new wxGIFHandler); // Required for images in the online documentation @@ -146,25 +150,36 @@ CTSimApp::OnInit() // Create the main frame window m_pFrame = new MainFrame(m_docManager, (wxFrame *) NULL, -1, "CTSim", wxPoint(0, 0), wxSize(500, 400), wxDEFAULT_FRAME_STYLE); - SetTopWindow (m_pFrame); + setIconForFrame (m_pFrame); m_pFrame->Centre(wxBOTH); - - m_pFrame->Show(true); - + m_pFrame->Show(true); + SetTopWindow (m_pFrame); + for (int i = optind + 1; i <= argc; i++) { wxString filename = argv [i - 1]; m_docManager->CreateDocument (filename, wxDOC_SILENT); } - setIconForFrame (m_pFrame); - + if (m_pConfig) + m_docManager->FileHistoryLoad(*m_pConfig); + #ifdef CTSIM_WINHELP if (! m_pFrame->getWinHelpController().Initialize("ctsim")) ::wxMessageBox ("Cannot initialize the help system", "Error"); #endif if (! m_pFrame->getHtmlHelpController().Initialize(::wxGetCwd() + "/ctsim")) ::wxMessageBox ("Cannot initialize the help system", "Error"); - + +#ifdef CTSIM_MDI + TextEditDocument* pLogDoc = dynamic_cast(m_docManager->CreateDocument("Log.txt", wxDOC_SILENT)); + if (pLogDoc) { + m_pLog = pLogDoc->getTextCtrl(); + } else +#else + m_pLog = new wxTextCtrl (m_pFrame, -1, "Log Window\n", wxPoint(0, 0), wxSize(0,0), wxTE_MULTILINE | wxTE_READONLY); +#endif + wxLog::SetActiveTarget (new wxLogTextCtrl(m_pLog)); + return true; } @@ -192,7 +207,6 @@ CTSimApp::usage(const char* program) int CTSimApp::OnExit() { - delete m_docManager; #ifdef HAVE_DMALLOC dmalloc_shutdown(); #endif @@ -262,22 +276,12 @@ END_EVENT_TABLE() #if CTSIM_MDI MainFrame::MainFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long type) -: wxMDIParentFrame(NULL, id, title, pos, size, type), m_pLog(NULL) +: wxDocMDIParentFrame(manager, NULL, id, title, pos, size, type, "MainFrame") #else MainFrame::MainFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long type) -: wxDocParentFrame(manager, frame, id, title, pos, size, type), m_pLog(NULL) +: wxDocParentFrame(manager, frame, id, title, pos, size, type, "MainFrame") #endif { -#if 0 -//#if CTSIM_MDI - m_pLog = new wxLogWindow (this, "Log"); - //std::cout = new ostream (m_pLog->GetTextCtrl()); - wxLog::SetActiveTarget(m_pLog); -#else - m_pLog = new wxTextCtrl (this, -1, "Log Window\n", wxPoint(0, 0), wxSize(0,0), wxTE_MULTILINE | wxTE_READONLY); - wxLog::SetActiveTarget (new wxLogTextCtrl(m_pLog)); -#endif - //// Make a menubar wxMenu *file_menu = new wxMenu; @@ -316,7 +320,7 @@ MainFrame::MainFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const #ifndef CTSIM_MDI for (int i = 0; i < MAX_WINDOW_MENUITEMS; i++) { - m_apWindowMenuItems[i] = new wxMenuItem (m_pWindowMenu, MAINMENU_WINDOW_BASE+i, wxString("")); + m_apWindowMenuItems[i] = new wxMenuItem (m_pWindowMenu, MAINMENU_WINDOW_BASE+i, wxString("[EMPTY]")); m_pWindowMenu->Append (m_apWindowMenuItems[i]); m_pWindowMenu->Enable (MAINMENU_WINDOW_BASE+i, false); } @@ -349,6 +353,13 @@ MainFrame::MainFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const SetAcceleratorTable (accelTable); } +MainFrame::~MainFrame() +{ + if (theApp->getConfig()) + theApp->getDocManager()->FileHistorySave (*theApp->getConfig()); + delete theApp->getDocManager(); +} + void MainFrame::OnSize (wxSizeEvent& event) { @@ -365,8 +376,12 @@ MainFrame::OnSize (wxSizeEvent& event) sizeClient.y -= sizeLog.y; // m_pLog->SetSize (0, sizeClient.y, sizeLog.x, sizeLog.y); // GetClientWindow()->SetSize (0, 0, sizeClient.x, sizeClient.y); -// GetClientWindow()->Refresh(); - wxMDIParentFrame::OnSize (event); +// GetClientWindow()->Refresh(); +#if CTSIM_MDI + wxDocMDIParentFrame::OnSize (event); +#else + wxDocParentFrame::OnSize (event); +#endif } void @@ -489,7 +504,7 @@ MainFrame::showHelp (int commandID) break; default: - *getLog() << "Unknown help command # " << commandID << "\n"; + *theApp->getLog() << "Unknown help command # " << commandID << "\n"; break; } } @@ -521,18 +536,21 @@ MainFrame::OnUpdateUI (wxUpdateUIEvent& rEvent) } for (int i = iPos; i < MAX_WINDOW_MENUITEMS; i++) { m_pWindowMenu->Enable (MAINMENU_WINDOW_BASE+i, false); - static_cast(m_apWindowMenuItems[i])->SetName (wxString("")); + static_cast(m_apWindowMenuItems[i])->SetName (wxString("[EMPTY]")); m_apWindowMenuData[i] = NULL; } } -void MainFrame::OnMRUFile(wxCommandEvent& event) +#ifdef CTSIM_CUSTOM_MRU +void +MainFrame::OnMRUFile (wxCommandEvent& event) { wxString fileName (theApp->getDocManager()->GetHistoryFile(event.GetSelection())); if (fileName != "") theApp->getDocManager()->CreateDocument(fileName, wxDOC_SILENT); } +#endif void MainFrame::DoWindowMenu (int iMenuPosition, wxCommandEvent& event)