** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: ctsim.cpp,v 1.26 2001/01/06 15:33:15 kevin Exp $
+** $Id: ctsim.cpp,v 1.31 2001/01/17 11:00: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
#include "wx/wx.h"
#endif
+#include "wx/image.h"
+#include "wx/filesys.h"
+#include "wx/fs_zip.h"
+
#if !wxUSE_DOC_VIEW_ARCHITECTURE
#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h!
#endif
#endif
#endif
-static const char* rcsindent = "$Id: ctsim.cpp,v 1.26 2001/01/06 15:33:15 kevin Exp $";
-
-class CTSimApp* theApp = NULL;
+static const char* rcsindent = "$Id: ctsim.cpp,v 1.31 2001/01/17 11:00:18 kevin Exp $";
struct option CTSimApp::ctsimOptions[] =
{
#ifdef HAVE_SETPRIORITY
setpriority (PRIO_PROCESS, 0, 15); // set to low scheduling priority
#endif
-
+
+ g_bRunningWXWindows = true;
// process options
while (1) {
int c = getopt_long (argc, argv, "", ctsimOptions, NULL);
m_docManager = new wxDocManager;
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));
- //// Create the main frame window
+#if wxUSE_GIF
+ wxImage::AddHandler(new wxGIFHandler); // Required for images in the online documentation
+#endif
+
+#if wxUSE_STREAMS && wxUSE_ZIPSTREAM && wxUSE_ZLIB
+ wxFileSystem::AddHandler(new wxZipFSHandler); // Required for advanced HTML help
+#endif
+
+ // 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);
wxString filename = argv [i - 1];
m_docManager->CreateDocument (filename, wxDOC_SILENT);
}
-
+
+ setIconForFrame (m_pFrame);
+
+ if (! m_pFrame->getHelpController().Initialize("ctsim"))
+ ::wxMessageBox ("Cannot initialize the help system", "Error");
+
+ wxAcceleratorEntry accelEntries[3];
+ accelEntries[0].Set(wxACCEL_CTRL, WXK_F1, MAINMENU_HELP_TOPICS);
+ accelEntries[1].Set(wxACCEL_CTRL, (int) 'P', MAINMENU_FILE_CREATE_PHANTOM);
+ accelEntries[2].Set(wxACCEL_CTRL, (int) 'F', MAINMENU_FILE_CREATE_FILTER);
+ wxAcceleratorTable accelTable (2, accelEntries);
+ m_pFrame->SetAcceleratorTable (accelTable);
+
return true;
}
+
+#include "./ctsim.xpm"
+void
+CTSimApp::setIconForFrame(wxFrame* pFrame)
+{
+ wxIcon iconApp (ctsim16_xpm);
+
+ if (iconApp.Ok())
+ pFrame->SetIcon (iconApp);
+}
+
void
CTSimApp::usage(const char* program)
{
#endif
EVT_MENU(MAINMENU_HELP_ABOUT, MainFrame::OnAbout)
-EVT_MENU(MAINMENU_HELP_CONTENTS, MainFrame::OnHelpContents)
+EVT_MENU(MAINMENU_HELP_TOPICS, MainFrame::OnHelpTopics)
EVT_MENU(MAINMENU_FILE_CREATE_PHANTOM, MainFrame::OnCreatePhantom)
EVT_MENU(MAINMENU_FILE_CREATE_FILTER, MainFrame::OnCreateFilter)
EVT_MENU(MAINMENU_FILE_EXIT, MainFrame::OnExit)
//// Make a menubar
wxMenu *file_menu = new wxMenu;
- file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "Cr&eate Phantom...");
- file_menu->Append(MAINMENU_FILE_CREATE_FILTER, "Create &Filter...");
+ file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "Cr&eate Phantom...\tCtrl-P");
+ file_menu->Append(MAINMENU_FILE_CREATE_FILTER, "Create &Filter...\tCtrl-F");
file_menu->Append(wxID_OPEN, "&Open...");
file_menu->AppendSeparator();
m_pWindowMenu->UpdateUI (this);
wxMenu* help_menu = new wxMenu;
- help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents");
+ help_menu->Append(MAINMENU_HELP_TOPICS, "&Topics\tF1");
help_menu->AppendSeparator();
help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
}
void
-MainFrame::OnHelpContents(wxCommandEvent& WXUNUSED(event) )
+MainFrame::OnHelpTopics (wxCommandEvent& event)
{
- wxMessageBox("No help available, refer to man pages of command-line tools");
+ showHelp (event.GetId());
+}
+
+void
+MainFrame::showHelp (int commandID)
+{
+ m_help.LoadFile();
+
+ switch (commandID) {
+ case MAINMENU_HELP_TOPICS:
+ m_help.DisplayContents();
+ break;
+
+ default:
+ *getLog() << "Unknown help command # " << commandID << "\n";
+ break;
+ }
}
void