X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=src%2Fctsim.cpp;h=9d7e87052cd0b9ab9fc7adb10525ee52f7eaff22;hp=26a57b33984ada0195523c3cdc9bc73696a54fb5;hb=3ea498d51ce4597e9649cd21f155b51175ea0bea;hpb=52f2fdc3424cd6b5b77ad1497243e1e06739ffe6 diff --git a/src/ctsim.cpp b/src/ctsim.cpp index 26a57b3..9d7e870 100644 --- a/src/ctsim.cpp +++ b/src/ctsim.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (c) 1983-2001 Kevin Rosenberg ** -** $Id: ctsim.cpp,v 1.92 2001/03/02 21:11:50 kevin Exp $ +** $Id: ctsim.cpp,v 1.99 2001/03/21 21:45:31 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 @@ -48,6 +48,7 @@ #include "ct.h" +#include "ctndicom.h" #include "ctsim.h" #include "docs.h" #include "views.h" @@ -69,7 +70,7 @@ #endif #endif -static const char* rcsindent = "$Id: ctsim.cpp,v 1.92 2001/03/02 21:11:50 kevin Exp $"; +static const char* rcsindent = "$Id: ctsim.cpp,v 1.99 2001/03/21 21:45:31 kevin Exp $"; struct option CTSimApp::ctsimOptions[] = { @@ -84,7 +85,7 @@ IMPLEMENT_APP(CTSimApp) CTSimApp::CTSimApp() : m_bAdvancedOptions(false), m_bSetModifyNewDocs(true), m_bVerboseLogging(false), m_bShowStartupTips(true), m_iCurrentTip(0), m_bUseBackgroundTasks(false), -m_docManager(NULL), m_pFrame(NULL), m_pLog(0), m_pLogDoc(0), m_pConfig(0) +m_docManager(NULL), m_pFrame(NULL), m_pConfig(0), m_pLog(0), m_pLogDoc(0) { theApp = this; } @@ -229,7 +230,10 @@ CTSimApp::OnInit() if (getStartupTips()) ShowTips(); +#ifdef HAVE_WXTHREADS m_pBackgroundMgr = new BackgroundManager; +#endif + return true; } @@ -289,6 +293,12 @@ CTSimApp::openConfig() m_pConfig->Read ("StartupTips", &m_bShowStartupTips); m_pConfig->Read ("CurrentTip", &m_iCurrentTip); m_pConfig->Read ("UseBackgroundTasks", &m_bUseBackgroundTasks); +#ifdef HAVE_FFTW + wxString strFftwWisdom; + m_pConfig->Read ("FftwWisdom", strFftwWisdom); + if (strFftwWisdom.size() > 0) + fftw_import_wisdom_from_string (strFftwWisdom.c_str()); +#endif } void @@ -300,7 +310,13 @@ CTSimApp::closeConfig() m_pConfig->Write ("StartupTips", m_bShowStartupTips); m_pConfig->Write ("CurrentTip", m_iCurrentTip); m_pConfig->Write ("UseBackgroundTasks", m_bUseBackgroundTasks); - +#ifdef HAVE_FFTW + const char* const pszWisdom = fftw_export_wisdom_to_string(); + wxString strFftwWisdom (pszWisdom); + fftw_free ((void*) pszWisdom); + m_pConfig->Write ("FftwWisdom", strFftwWisdom); +#endif + delete m_pConfig; } @@ -336,6 +352,8 @@ EVT_MENU(MAINMENU_HELP_TIPS, MainFrame::OnHelpTips) EVT_MENU(MAINMENU_IMPORT, MainFrame::OnImport) EVT_MENU(IDH_QUICKSTART, MainFrame::OnHelpButton) EVT_MENU(MAINMENU_LOG_EVENT, MainFrame::OnLogEvent) +EVT_MENU(NEW_IMAGEFILE_EVENT, MainFrame::OnNewImageFile) +EVT_MENU(NEW_PROJECTIONFILE_EVENT, MainFrame::OnNewProjectionFile) EVT_BUTTON(IDH_DLG_RASTERIZE, MainFrame::OnHelpButton) EVT_BUTTON(IDH_DLG_PROJECTIONS, MainFrame::OnHelpButton) EVT_BUTTON(IDH_DLG_RECONSTRUCTION, MainFrame::OnHelpButton) @@ -400,7 +418,7 @@ MainFrame::MainFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const file_menu->Append(wxID_OPEN, "&Open...\tCtrl-O"); file_menu->AppendSeparator(); - file_menu->Append (MAINMENU_IMPORT, "&Import...\tCtrl-I"); + file_menu->Append (MAINMENU_IMPORT, "&Import...\tCtrl-M"); file_menu->Append (MAINMENU_FILE_PREFERENCES, "Prefere&nces..."); file_menu->Append(MAINMENU_FILE_EXIT, "E&xit"); @@ -451,13 +469,13 @@ MainFrame::MainFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const m_dDefaultFilterBandwidth = 1.; m_dDefaultFilterInputScale = 1.; m_dDefaultFilterOutputScale = 1.; - m_iDefaultImportFormat = ImageFile::IMPORT_FORMAT_PPM; + m_iDefaultImportFormat = ImageFile::IMPORT_FORMAT_PNG; wxAcceleratorEntry accelEntries[15]; accelEntries[0].Set (wxACCEL_CTRL, static_cast('O'), wxID_OPEN); accelEntries[1].Set (wxACCEL_CTRL, static_cast('P'), MAINMENU_FILE_CREATE_PHANTOM); accelEntries[2].Set (wxACCEL_CTRL, static_cast('F'), MAINMENU_FILE_CREATE_FILTER); - accelEntries[3].Set (wxACCEL_CTRL, static_cast('I'), MAINMENU_IMPORT); + accelEntries[3].Set (wxACCEL_CTRL, static_cast('M'), MAINMENU_IMPORT); accelEntries[4].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS); #ifndef CTSIM_MDI for (i = 0; i < 10; i++) @@ -589,6 +607,49 @@ CTSimApp::getCompatibleImages (const ImageFileDocument* pIFDoc, std::vector(event.GetClientData()); + + ImageFileDocument* pImageDoc = theApp->newImageDoc(); + if (! pImageDoc) { + sys_error (ERR_SEVERE, "Unable to create image file"); + return; + } + pImageDoc->setImageFile (pImageFile); + pImageDoc->UpdateAllViews (NULL); + if (ImageFileView* imageView = pImageDoc->getView()) { + imageView->OnUpdate (imageView, NULL); + imageView->getFrame()->SetFocus(); + imageView->getFrame()->Show(true); + } + if (theApp->getAskDeleteNewDocs()) + pImageDoc->Modify (true); + +} + +void +MainFrame::OnNewProjectionFile (wxCommandEvent& event) +{ + Projections* pProjections = reinterpret_cast(event.GetClientData()); + ProjectionFileDocument* pProjDoc = theApp->newProjectionDoc(); + if (! pProjDoc) { + sys_error (ERR_SEVERE, "Unable to create projection file"); + return; + } + pProjDoc->setProjections (pProjections); + pProjDoc->UpdateAllViews (NULL); + if (ProjectionFileView* projView = pProjDoc->getView()) { + projView->OnUpdate (projView, NULL); + projView->getFrame()->SetFocus(); + projView->getFrame()->Show(true); + } + + if (theApp->getAskDeleteNewDocs()) + pProjDoc->Modify (true); +} + void MainFrame::OnLogEvent (wxCommandEvent& event) {