** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: ctsim.cpp,v 1.29 2001/01/13 10:14:06 kevin Exp $
+** $Id: ctsim.cpp,v 1.36 2001/01/18 23:34:01 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
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
******************************************************************************/
+#ifdef MSVC
+#define strdup _strdup
+#endif
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#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
#include "ct.h"
#include "ctsim.h"
+#include "ctsim-map.h"
#include "docs.h"
#include "views.h"
#include "dialogs.h"
#endif
#endif
-static const char* rcsindent = "$Id: ctsim.cpp,v 1.29 2001/01/13 10:14:06 kevin Exp $";
+static const char* rcsindent = "$Id: ctsim.cpp,v 1.36 2001/01/18 23:34:01 kevin Exp $";
struct option CTSimApp::ctsimOptions[] =
{
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);
setIconForFrame (m_pFrame);
+ if (! m_pFrame->getHelpController().Initialize("ctsim"))
+ ::wxMessageBox ("Cannot initialize the help system", "Error");
+
+
return true;
}
+
+#include "./ctsim.xpm"
void
CTSimApp::setIconForFrame(wxFrame* pFrame)
{
-#if defined(__WXMSW__)
- wxIcon iconApp (wxString("ICON_APP"), wxBITMAP_TYPE_ICO_RESOURCE);
+ wxIcon iconApp (ctsim16_xpm);
+
if (iconApp.Ok())
pFrame->SetIcon (iconApp);
-#endif
}
void
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(wxID_OPEN, "&Open...");
+ 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...\tCtrl-O");
file_menu->AppendSeparator();
file_menu->Append(MAINMENU_FILE_EXIT, "E&xit");
m_pWindowMenu->UpdateUI (this);
wxMenu* help_menu = new wxMenu;
- help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents");
- help_menu->AppendSeparator();
+ help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
+ help_menu->Append(MAINMENU_HELP_TOPICS, "&Topics\tCtrl-T");
help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
wxMenuBar* menu_bar = new wxMenuBar;
m_dDefaultFilterInputScale = 1.;
m_dDefaultFilterOutputScale = 1.;
+ wxAcceleratorEntry accelEntries[14];
+ accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('O'), wxID_OPEN);
+ accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('H'), MAINMENU_HELP_TOPICS);
+ accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('P'), MAINMENU_FILE_CREATE_PHANTOM);
+ accelEntries[3].Set (wxACCEL_CTRL, static_cast<int>('F'), MAINMENU_FILE_CREATE_FILTER);
+ accelEntries[4].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS);
+ for (i = 0; i < 10; i++)
+ accelEntries[i+4].Set (wxACCEL_CTRL, static_cast<int>('0'+i), MAINMENU_WINDOW_BASE+i);
+ wxAcceleratorTable accelTable (16, accelEntries);
+ SetAcceleratorTable (accelTable);
}
void
}
void
-MainFrame::OnCreatePhantom(wxCommandEvent& WXUNUSED(event))
+MainFrame::OnCreatePhantom(wxCommandEvent& event)
{
DialogGetPhantom dialogPhantom (this, m_iDefaultPhantomID);
int dialogReturn = dialogPhantom.ShowModal();
}
void
-MainFrame::OnHelpContents(wxCommandEvent& WXUNUSED(event) )
+MainFrame::OnHelpTopics (wxCommandEvent& event)
+{
+ showHelp (event.GetId());
+}
+
+void
+MainFrame::OnHelpContents (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_CONTENTS:
+ m_help.DisplayContents ();
+ break;
+ case MAINMENU_HELP_TOPICS:
+ m_help.DisplaySection (introduction);
+ break;
+
+ default:
+ *getLog() << "Unknown help command # " << commandID << "\n";
+ break;
+ }
}
void
while (iPos < MAX_WINDOW_MENUITEMS && pNode != NULL) {
wxDocument* pDoc = static_cast<wxDocument*>(pNode->GetData());
wxString strFilename = pDoc->GetFilename();
+ if (iPos < 10) {
+ strFilename += "\tCtrl-";
+ strFilename += static_cast<char>('0' + iPos);
+ }
static_cast<wxMenuItemBase*>(m_apWindowMenuItems[iPos])->SetName (strFilename);
m_apWindowMenuData[iPos] = pDoc;
m_pWindowMenu->Enable (MAINMENU_WINDOW_BASE+iPos, true);