r520: no message
[ctsim.git] / src / ctsim.cpp
index 0aa61a081838f57bfad6f323ce964220b8838868..b08db827d2eefd8a80742ff142842a5cb8ede643 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: ctsim.cpp,v 1.67 2001/02/06 06:57:46 kevin Exp $
+**  $Id: ctsim.cpp,v 1.74 2001/02/11 04:56:38 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
@@ -43,6 +43,7 @@
 #include "wx/image.h"
 #include "wx/filesys.h"
 #include "wx/fs_zip.h"
+#include "wx/msw/helpchm.h"
 
 #if !wxUSE_DOC_VIEW_ARCHITECTURE
 #error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h!
@@ -70,7 +71,7 @@
 #endif
 #endif
 
-static const char* rcsindent = "$Id: ctsim.cpp,v 1.67 2001/02/06 06:57:46 kevin Exp $";
+static const char* rcsindent = "$Id: ctsim.cpp,v 1.74 2001/02/11 04:56:38 kevin Exp $";
 
 struct option CTSimApp::ctsimOptions[] = 
 {
@@ -82,7 +83,7 @@ struct option CTSimApp::ctsimOptions[] =
 IMPLEMENT_APP(CTSimApp)
 
 CTSimApp::CTSimApp()
-: m_docManager(NULL), m_pFrame(NULL), m_pLog(0), m_pLogDoc(0)
+: m_docManager(NULL), m_pFrame(NULL), m_pLog(0), m_pLogDoc(0), m_bAdvancedOptions(false)
 {
        theApp = this;
 }
@@ -102,7 +103,7 @@ CTSimApp::OnInit()
        setpriority (PRIO_PROCESS, 0, 15);  // set to low scheduling priority
 #endif
        
-       m_pConfig = new wxConfig("ctsim");
+       m_pConfig = new wxConfig("ctsim", _T(""), ".ctsim", "", wxCONFIG_USE_LOCAL_FILE);
        wxConfigBase::Set(m_pConfig);
        
        g_bRunningWXWindows = true;
@@ -161,16 +162,10 @@ CTSimApp::OnInit()
        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);
-       }
-       
        if (m_pConfig)
                m_docManager->FileHistoryLoad(*m_pConfig);
        
 #ifdef CTSIM_MDI
-#if 1
        m_pLogDoc = newTextDoc();
        if (m_pLogDoc) {
                m_pLog = m_pLogDoc->getTextCtrl();
@@ -183,27 +178,31 @@ CTSimApp::OnInit()
                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
        wxLog::SetActiveTarget (new wxLogTextCtrl(m_pLog));
-       
+
 #ifdef CTSIM_WINHELP
        if (! m_pFrame->getWinHelpController().Initialize("ctsim"))
                *m_pLog << "Cannot initialize the Windows Help system" << "\n";
 #endif
-       if (! m_pFrame->getHtmlHelpController().Initialize(::wxGetCwd() + "/ctsim"))
+       wxString helpDir;
+       if (! m_pConfig->Read("HelpDir", &helpDir))
+               helpDir = ::wxGetCwd();
+       if (! m_pFrame->getHtmlHelpController().Initialize(helpDir + "/ctsim") &&
+               ! m_pFrame->getHtmlHelpController().Initialize("/usr/local/man/ctsim"))
                *m_pLog << "Cannot initialize the HTML Help system" << "\n";
+       else {
+           if (::wxDirExists ("/tmp"))
+               m_pFrame->getHtmlHelpController().SetTempDir(_T("/tmp"));
+           m_pFrame->getHtmlHelpController().UseConfig (m_pConfig);
+       }
+
+       for (int i = optind + 1; i <= argc; i++) {
+               wxString filename = argv [i - 1];
+               m_docManager->CreateDocument (filename, wxDOC_SILENT);
+       }
        
        return true;
 }
@@ -232,6 +231,8 @@ CTSimApp::usage(const char* program)
 int
 CTSimApp::OnExit()
 {
+       delete m_pConfig;
+
 #ifdef HAVE_DMALLOC
        dmalloc_shutdown();
 #endif
@@ -262,6 +263,7 @@ IMPLEMENT_CLASS(MainFrame, wxDocParentFrame)
 BEGIN_EVENT_TABLE(MainFrame, wxDocParentFrame)
 #endif
 
+EVT_MENU(MAINMENU_FILE_PREFERENCES, MainFrame::OnPreferences)
 EVT_MENU(MAINMENU_HELP_ABOUT, MainFrame::OnAbout)
 EVT_MENU(MAINMENU_HELP_CONTENTS, MainFrame::OnHelpContents)
 EVT_MENU(MAINMENU_HELP_TOPICS, MainFrame::OnHelpTopics)
@@ -317,6 +319,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_FILE_PREFERENCES, "Pr&eferences...");
        file_menu->Append(MAINMENU_FILE_EXIT, "E&xit");
        
        //  history of files visited
@@ -521,12 +524,6 @@ MainFrame::OnHelpSecondary (wxCommandEvent& event)
 void
 MainFrame::showHelp (int commandID)
 {
-#ifdef CTSIM_WINHELP
-       m_winHelp.LoadFile();
-#else
-       m_htmlHelp.LoadFile();
-#endif
-       
        switch (commandID) {
                
        case MAINMENU_HELP_CONTENTS:
@@ -766,6 +763,13 @@ BitmapDialog::~BitmapDialog()
 {}
 
 
+void 
+MainFrame::OnPreferences (wxCommandEvent& WXUNUSED(event) )
+{
+  theApp->setAdvancedOptions (! theApp->getAdvancedOptions());
+}
+
+
 #include "./splash.xpm"
 void 
 MainFrame::OnAbout(wxCommandEvent& WXUNUSED(event) )