r570: no message
authorKevin M. Rosenberg <kevin@rosenberg.net>
Thu, 22 Feb 2001 00:56:50 +0000 (00:56 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Thu, 22 Feb 2001 00:56:50 +0000 (00:56 +0000)
14 files changed:
ChangeLog
doc/ctsim-gui.tex
doc/ctsim.prj
msvc/ctsim/ctsim.dsp
msvc/ctsim/ctsim.plg
msvc/ctsimtext/ctsimtext.dsp
src/Makefile.am
src/ctsim.cpp
src/ctsim.h
src/dialogs.cpp
src/dialogs.h
src/tips.cpp [new file with mode: 0644]
src/tips.h [new file with mode: 0644]
src/views.cpp

index ff970697105cf98812aa16fa5cae47f05d2a2042..67bcdc7dd1eb7c45db21573c738285ca654ad81a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,9 @@
 3.0.4 - Released
 
-       * ctsim: Added "Verbose Logging" option to Preferences
+       * ctsim: Added "Verbose Logging" and "Startup Tips" options 
+       to Preferences.
+
+       * ctsim: Added tips to be displayed at startup and via the help menu.
        
 3.0.3 - Released 2/20/01
 
index 240855eb8a7d4ac93e61ba4bbb70b2e26e9fe8b4..21687029c6930745d3112823540b09e83e570ea0 100644 (file)
@@ -176,6 +176,10 @@ new installations. With this option set, \ctsim\ will log more events than
 usual. There extra events are not important for viewing with typical operation of
 \ctsim.}
 
+\twocolitem{\textbf{Show startup tips}}{This option is initially turned on in
+new installations. With this option set, \ctsim\ will display
+helpful tips when \ctsim\ is started.}
+
 \end{twocollist}
 
 \subsection{File - Open}
@@ -199,6 +203,12 @@ Allows the saving of the contents of the active window to any file name.
 \subsection{Help - Contents}
 This command displays the online help.
 
+\subsection{Help - Tips}
+This command displays a dialog with tips on using \ctsim.
+
+\subsection{Help - Quick Start}
+This command displays a recommend approach to helping new users learn to use \ctsim.
+
 \subsection{Help - About}
 This command shows the version number and operating environment of \ctsim.
 
index 3293f2cfabf54bc848f70a6481c40582e5d1322f..11ca2c4874f9069bdec80f12c87b3b879da3aad5 100644 (file)
@@ -5,34 +5,34 @@
 1
 ctsim.tex
 18
-8
-4
+0
+0
 
 
 mytitle.sty
 DATA
-5243570 0 9 1 8 22 66 66 1143 653
+273679026 0 9 1 8 22 66 66 1143 653
 ctsim-textui.tex
 TeX
-12282 0 297 15 0 1 198 198 1275 785
+268447738 0 297 15 0 1 198 198 1275 785
 ctsim-install.tex
 TeX
-12282 0 34 10 42 1 110 110 1187 697
+268447738 0 34 10 42 1 110 110 1187 697
 ctsim-web.tex
 TeX
-12283 0 24 50 0 60 88 88 1165 675
-ctsim.tex
-TeX
-402665466 0 68 19 98 23 22 22 1099 609
+268447739 0 24 50 0 60 88 88 1165 675
 ctsim-appendix.tex
 TeX
-12282 0 12 1 0 1 44 44 1121 631
+268447738 0 12 1 0 1 44 44 1121 631
 ctsim-gui.tex
 TeX
-12282 0 38 28 38 69 176 176 1253 763
+268447738 0 175 7 175 8 176 176 1253 763
+ctsim.tex
+TeX
+402665466 0 25 31 27 37 22 22 1099 609
 ctsim-concepts.tex
 TeX
-12282 0 213 1 0 1 110 110 1187 697
+268447738 2 305 28 305 41 110 110 1187 697
 tex2rtf.ini
 DATA
 273777330 0 0 1 17 8 22 22 938 609
index 134933dfb7eb1ca47f414cbbc55528113bd9500c..96795534bd3e6cd8393a3b529bc21656c6d9b989 100644 (file)
@@ -43,7 +43,7 @@ RSC=rc.exe
 # PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /G6 /MT /W3 /GR /GX /O2 /I "..\..\..\fftw-2.1.3\fftw" /I "\wx2.2.5\include" /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "..\..\include" /I "..\..\getopt" /I "..\..\..\fftw-2.1.3\rfftw" /D "NDEBUG" /D "__WXWIN__" /D "__WXMSW__" /D "HAVE_SGP" /D "HAVE_PNG" /D "HAVE_WXWINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_FFTW" /D "HAVE_RFFTW" /D "HAVE_GETOPT_H" /D "MSVC" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D CTSIMVERSION=\"3.0.3\" /FR /YX /FD /c
+# ADD CPP /nologo /G6 /MT /W3 /GR /GX /O2 /I "..\..\..\fftw-2.1.3\fftw" /I "\wx2.2.5\include" /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "..\..\include" /I "..\..\getopt" /I "..\..\..\fftw-2.1.3\rfftw" /D "NDEBUG" /D "__WXWIN__" /D "__WXMSW__" /D "HAVE_SGP" /D "HAVE_PNG" /D "HAVE_WXWINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_FFTW" /D "HAVE_RFFTW" /D "HAVE_GETOPT_H" /D "MSVC" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D CTSIMVERSION=\"3.0.4\" /FR /YX /FD /c
 # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD BASE RSC /l 0x409 /d "NDEBUG"
@@ -69,7 +69,7 @@ LINK32=link.exe
 # PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /G6 /MTd /W3 /Gm /Gi /GR /GX /Zi /Od /Gy /I "\wx2.2.5\include" /I "..\..\..\fftw-2.1.3\fftw" /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "..\..\include" /I "..\..\getopt" /I "..\..\..\fftw-2.1.3\rfftw" /D VERSION=\"3.0.0beta1\" /D "_DEBUG" /D "__WXMSW__" /D "HAVE_SGP" /D "HAVE_PNG" /D "HAVE_WXWINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_FFTW" /D "HAVE_RFFTW" /D "HAVE_GETOPT_H" /D "MSVC" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D CTSIMVERSION=\"3.0.3\" /FR /YX /FD /GZ /c
+# ADD CPP /nologo /G6 /MTd /W3 /Gm /Gi /GR /GX /Zi /Od /Gy /I "\wx2.2.5\include" /I "..\..\..\fftw-2.1.3\fftw" /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "..\..\include" /I "..\..\getopt" /I "..\..\..\fftw-2.1.3\rfftw" /D VERSION=\"3.0.0beta1\" /D "_DEBUG" /D "__WXMSW__" /D "HAVE_SGP" /D "HAVE_PNG" /D "HAVE_WXWINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_FFTW" /D "HAVE_RFFTW" /D "HAVE_GETOPT_H" /D "MSVC" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D CTSIMVERSION=\"3.0.4\" /FR /YX /FD /GZ /c
 # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
 # ADD BASE RSC /l 0x409 /d "_DEBUG"
index 4eceb4da479f06ef76dc3ab26e2d7f18d371fb59..f240cfc7f8aebd2fe318790c3bd35592f3a934ef 100644 (file)
@@ -3,47 +3,55 @@
 <pre>
 <h1>Build Log</h1>
 <h3>
---------------------Configuration: ctsim - Win32 Release--------------------
+--------------------Configuration: ctsim - Win32 Debug--------------------
 </h3>
 <h3>Command Lines</h3>
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP4B.tmp" with contents
+Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPE7.tmp" with contents
 [
-/nologo /G6 /MT /W3 /GR /GX /O2 /I "..\..\..\fftw-2.1.3\fftw" /I "\wx2.2.5\include" /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "..\..\include" /I "..\..\getopt" /I "..\..\..\fftw-2.1.3\rfftw" /D "NDEBUG" /D "__WXWIN__" /D "__WXMSW__" /D "HAVE_SGP" /D "HAVE_PNG" /D "HAVE_WXWINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_FFTW" /D "HAVE_RFFTW" /D "HAVE_GETOPT_H" /D "MSVC" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D CTSIMVERSION=\"3.0.4\" /D CTSIMVERSION=\"3.0.0alpha5\" /FR"Release/" /Fp"Release/ctsim.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c 
+/nologo /G6 /MTd /W3 /Gm /Gi /GR /GX /Zi /Od /Gy /I "\wx2.2.5\include" /I "..\..\..\fftw-2.1.3\fftw" /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "..\..\include" /I "..\..\getopt" /I "..\..\..\fftw-2.1.3\rfftw" /D VERSION=\"3.0.0beta1\" /D "_DEBUG" /D "__WXMSW__" /D "HAVE_SGP" /D "HAVE_PNG" /D "HAVE_WXWINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_FFTW" /D "HAVE_RFFTW" /D "HAVE_GETOPT_H" /D "MSVC" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D CTSIMVERSION=\"3.0.4\" /D CTSIMVERSION=\"3.0.0alpha5\" /FR"Debug/" /Fp"Debug/ctsim.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c 
 "C:\ctsim\src\ctsim.cpp"
 ]
-Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP4B.tmp" 
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP4C.tmp" with contents
+Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPE7.tmp" 
+Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPE8.tmp" with contents
 [
-wsock32.lib tiff.lib jpeg.lib png.lib zlib.lib xpm.lib comctl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib htmlhelp.lib /nologo /subsystem:windows /incremental:no /pdb:"Release/ctsim.pdb" /machine:I386 /out:"Release/ctsim.exe" /libpath:"\wx2.2.5\lib" 
-.\Release\ctsim.obj
-.\Release\dialogs.obj
-.\Release\dlgprojections.obj
-.\Release\dlgreconstruct.obj
-.\Release\docs.obj
-.\Release\graph3dview.obj
-.\Release\views.obj
-.\Release\ctsim.res
-\ctsim\msvc\libctsim\Release\libctsim.lib
-"\fftw-2.1.3\Win32\FFTW2st\Release\FFTW2st.lib"
-"\fftw-2.1.3\Win32\RFFTW2st\Release\RFFTW2st.lib"
-\wx2.2.5\lib\jpeg.lib
-\wx2.2.5\lib\png.lib
-\wx2.2.5\lib\wx.lib
-\wx2.2.5\lib\xpm.lib
-\wx2.2.5\lib\zlib.lib
-\wx2.2.5\lib\tiff.lib
+/nologo /G6 /MTd /W3 /Gm /Gi /GR /GX /Zi /Od /Gy /I "\wx2.2.5\include" /I "..\..\..\fftw-2.1.3\fftw" /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "..\..\include" /I "..\..\getopt" /I "..\..\..\fftw-2.1.3\rfftw" /D VERSION=\"3.0.0beta1\" /D "_DEBUG" /D "__WXMSW__" /D "HAVE_SGP" /D "HAVE_PNG" /D "HAVE_WXWINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_FFTW" /D "HAVE_RFFTW" /D "HAVE_GETOPT_H" /D "MSVC" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D CTSIMVERSION=\"3.0.4\" /FR"Debug/" /Fp"Debug/ctsim.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c 
+"C:\ctsim\src\tips.cpp"
 ]
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP4C.tmp"
+Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPE8.tmp" 
+Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPE9.tmp" with contents
+[
+winmm.lib rpcrt4.lib ws2_32.lib ../libctsim/Debug/libctsim.lib libcmtd.lib ..\..\..\fftw-2.1.3\Win32\FFTW2st\Debug\FFTW2st.lib ..\..\..\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib wxd.lib xpmd.lib tiffd.lib zlibd.lib pngd.lib comctl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib htmlhelp.lib /nologo /subsystem:windows /incremental:yes /pdb:"Debug/ctsim.pdb" /debug /machine:I386 /out:"Debug/ctsim.exe" /pdbtype:sept /libpath:"\wx2.2.5\lib" 
+.\Debug\ctsim.obj
+.\Debug\dialogs.obj
+.\Debug\dlgprojections.obj
+.\Debug\dlgreconstruct.obj
+.\Debug\docs.obj
+.\Debug\graph3dview.obj
+.\Debug\views.obj
+.\Debug\ctsim.res
+.\Debug\tips.obj
+\ctsim\msvc\libctsim\Debug\libctsim.lib
+"\fftw-2.1.3\Win32\FFTW2st\Debug\FFTW2st.lib"
+"\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib"
+\wx2.2.5\lib\jpegd.lib
+\wx2.2.5\lib\pngd.lib
+\wx2.2.5\lib\wxd.lib
+\wx2.2.5\lib\xpmd.lib
+\wx2.2.5\lib\zlibd.lib
+\wx2.2.5\lib\tiffd.lib
+]
+Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPE9.tmp"
 <h3>Output Window</h3>
 Compiling...
 ctsim.cpp
+Compiling...
+tips.cpp
 Linking...
-LINK : warning LNK4089: all references to "WSOCK32.dll" discarded by /OPT:REF
 
 
 
 <h3>Results</h3>
-ctsim.exe - 0 error(s), 1 warning(s)
+ctsim.exe - 0 error(s), 0 warning(s)
 </pre>
 </body>
 </html>
index 998e78a981fdfbebd13568b677fa36abee842011..f220e5119d86ef68a3fe65413d07d570daa4c815 100644 (file)
@@ -42,7 +42,7 @@ RSC=rc.exe
 # PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /G6 /MT /W3 /GR /GX /O2 /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "../../include" /I "../../getopt" /I "..\..\..\fftw-2.1.3\fftw" /I "..\..\..\fftw-2.1.3\rfftw" /I "..\..\..\wx2.2.5\include" /D "NDEBUG" /D VERSION=\"3.0.3\" /D "HAVE_GETOPT_H" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "MSVC" /D "HAVE_STRING_H" /D "HAVE_PNG" /D "NO_MAIN" /D "HAVE_WXWINDOWS" /D "__WXMSW__" /YX /FD /c
+# ADD CPP /nologo /G6 /MT /W3 /GR /GX /O2 /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "../../include" /I "../../getopt" /I "..\..\..\fftw-2.1.3\fftw" /I "..\..\..\fftw-2.1.3\rfftw" /I "..\..\..\wx2.2.5\include" /D "NDEBUG" /D VERSION=\"3.0.4\" /D "HAVE_GETOPT_H" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "MSVC" /D "HAVE_STRING_H" /D "HAVE_PNG" /D "NO_MAIN" /D "HAVE_WXWINDOWS" /D "__WXMSW__" /YX /FD /c
 # ADD BASE RSC /l 0x409 /d "NDEBUG"
 # ADD RSC /l 0x409 /d "NDEBUG"
 BSC32=bscmake.exe
@@ -66,7 +66,7 @@ LINK32=link.exe
 # PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /G6 /MTd /W3 /Gm /Gi /GR /GX /Zi /Od /Gy /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "../../include" /I "../../getopt" /I "..\..\..\fftw-2.1.3\fftw" /I "..\..\..\fftw-2.1.3\rfftw" /I "..\..\..\wx2.2.5\include" /D "_DEBUG" /D VERSION=\"3.0.3\" /D "HAVE_GETOPT_H" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "MSVC" /D "HAVE_STRING_H" /D "HAVE_PNG" /D "NO_MAIN" /D "HAVE_WXWINDOWS" /D "__WXMSW__" /FR /YX /FD /GZ /c
+# ADD CPP /nologo /G6 /MTd /W3 /Gm /Gi /GR /GX /Zi /Od /Gy /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "../../include" /I "../../getopt" /I "..\..\..\fftw-2.1.3\fftw" /I "..\..\..\fftw-2.1.3\rfftw" /I "..\..\..\wx2.2.5\include" /D "_DEBUG" /D VERSION=\"3.0.4\" /D "HAVE_GETOPT_H" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "MSVC" /D "HAVE_STRING_H" /D "HAVE_PNG" /D "NO_MAIN" /D "HAVE_WXWINDOWS" /D "__WXMSW__" /FR /YX /FD /GZ /c
 # ADD BASE RSC /l 0x409 /d "_DEBUG"
 # ADD RSC /l 0x409 /d "_DEBUG"
 BSC32=bscmake.exe
index 35d6a695ef7f86354b1906afd2fab444e72199f1..be72fcfd8e6d33371522d4dffbb610cf66c42276 100644 (file)
@@ -1,6 +1,6 @@
 bin_PROGRAMS=ctsim
 
-ctsim_SOURCES=ctsim.cpp docs.cpp views.cpp dialogs.cpp ctsim.h docs.h views.h dialogs.h dlgprojections.cpp dlgprojections.h dlgreconstruct.cpp dlgreconstruct.h  graph3dview.cpp graph3dview.h ctsim-map.h ctsim.xpm splash.xpm 
+ctsim_SOURCES=ctsim.cpp docs.cpp views.cpp dialogs.cpp ctsim.h docs.h views.h dialogs.h dlgprojections.cpp dlgprojections.h dlgreconstruct.cpp dlgreconstruct.h  graph3dview.cpp graph3dview.h ctsim-map.h ctsim.xpm splash.xpm tips.cpp tips.h
 ctsim_DEPENDENCIES=../libctgraphics/libctgraphics.a ../libctsupport/libctsupport.a ../libctsim/libctsim.a ../include/ct.h
 ctsim_LDADD=-L../libctgraphics -L../libctsupport -L../libctsim @ctlibs@
 
index 45a1adc8813ae297cc865d4ac98db1e48feea782..510e2487531ca0440831ec2e76aa5cf5f8044a80 100644 (file)
@@ -7,9 +7,9 @@
 **   Date Started:  July 2000
 **
 **  This is part of the CTSim program
-**  Copyright (C) 1983-2000 Kevin Rosenberg
+**  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: ctsim.cpp,v 1.85 2001/02/21 20:13:03 kevin Exp $
+**  $Id: ctsim.cpp,v 1.86 2001/02/22 00:56:50 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
@@ -57,6 +57,7 @@
 #include "docs.h"
 #include "views.h"
 #include "dialogs.h"
+#include "tips.h"
 
 #if defined(HAVE_CONFIG_H)
 #include "config.h"
@@ -72,7 +73,7 @@
 #endif
 #endif
 
-static const char* rcsindent = "$Id: ctsim.cpp,v 1.85 2001/02/21 20:13:03 kevin Exp $";
+static const char* rcsindent = "$Id: ctsim.cpp,v 1.86 2001/02/22 00:56:50 kevin Exp $";
 
 struct option CTSimApp::ctsimOptions[] = 
 {
@@ -85,7 +86,8 @@ struct option CTSimApp::ctsimOptions[] =
 IMPLEMENT_APP(CTSimApp)
 
 CTSimApp::CTSimApp()
-:  m_bAdvancedOptions(false), m_bSetModifyNewDocs(true), m_bVerboseLogging(false),
+:  m_bAdvancedOptions(false), m_bSetModifyNewDocs(true), m_bVerboseLogging(false), m_bShowStartupTips(true),
+   m_iCurrentTip(0),
   m_docManager(NULL), m_pFrame(NULL), m_pLog(0), m_pLogDoc(0), m_pConfig(0)
 {
        theApp = this;
@@ -228,10 +230,20 @@ CTSimApp::OnInit()
     m_pFrame->AddPendingEvent(closeEvent);
   }
 
+  if (getStartupTips())
+    ShowTips();
 
   return true;
 }
 
+void
+CTSimApp::ShowTips()
+{
+    CTSimTipProvider tipProvider (m_iCurrentTip);
+    setStartupTips (::wxShowTip (m_pFrame, &tipProvider, getStartupTips()));
+    m_iCurrentTip = tipProvider.GetCurrentTip();
+}
+
 
 #include "./ctsim.xpm"
 void
@@ -277,6 +289,8 @@ CTSimApp::openConfig()
   m_pConfig->Read ("AdvancedOptions", &m_bAdvancedOptions);
   m_pConfig->Read ("SetModifyNewDocs", &m_bSetModifyNewDocs);
   m_pConfig->Read ("VerboseLogging", &m_bVerboseLogging);
+  m_pConfig->Read ("StartupTips", &m_bShowStartupTips);
+  m_pConfig->Read ("CurrentTip", &m_iCurrentTip);
 }
 
 void
@@ -285,6 +299,9 @@ CTSimApp::closeConfig()
   m_pConfig->Write ("AdvancedOptions", m_bAdvancedOptions);
   m_pConfig->Write ("SetModifyNewDocs", m_bSetModifyNewDocs);
   m_pConfig->Write ("VerboseLogging", m_bVerboseLogging);
+  m_pConfig->Write ("StartupTips", m_bShowStartupTips);
+  m_pConfig->Write ("CurrentTip", m_iCurrentTip);
+
        delete m_pConfig;
 }
 
@@ -316,6 +333,7 @@ BEGIN_EVENT_TABLE(MainFrame, wxDocParentFrame)
 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_TIPS, MainFrame::OnHelpTips)
 EVT_MENU(IDH_QUICKSTART, MainFrame::OnHelpButton)
 EVT_BUTTON(IDH_DLG_RASTERIZE, MainFrame::OnHelpButton)
 EVT_BUTTON(IDH_DLG_PROJECTIONS, MainFrame::OnHelpButton)
@@ -395,7 +413,7 @@ MainFrame::MainFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const
        
        wxMenu* help_menu = new wxMenu;
        help_menu->Append (MAINMENU_HELP_CONTENTS, "&Contents\tF1");
-
+  help_menu->Append (MAINMENU_HELP_TIPS, "&Tips");
   help_menu->Append (IDH_QUICKSTART, "&Quick Start");
 #if defined(CTSIM_WINHELP) && (defined(DEBUG) || defined(_DEBUG))
        help_menu->Append (MAINMENU_HELP_SECONDARY, "&Secondary Help");
@@ -496,7 +514,8 @@ MainFrame::OnCreatePhantom(wxCommandEvent& event)
        int dialogReturn = dialogPhantom.ShowModal();
        if (dialogReturn == wxID_OK) {
                wxString selection (dialogPhantom.getPhantom());
-               *theApp->getLog() << "Selected phantom " << selection.c_str() << "\n";
+    if (theApp->getVerboseLogging())
+               *theApp->getLog() << "Selected phantom " << selection.c_str() << "\n";
                wxString filename = selection + ".phm";
                m_iDefaultPhantomID = Phantom::convertNameToPhantomID (selection.c_str());
                theApp->getDocManager()->CreateDocument (filename, wxDOC_SILENT);
@@ -564,6 +583,12 @@ CTSimApp::getCompatibleImages (const ImageFileDocument* pIFDoc, std::vector<Imag
 }
 
 
+void
+MainFrame::OnHelpTips (wxCommandEvent& event)
+{
+  theApp->ShowTips();
+}
+
 void 
 MainFrame::OnHelpContents (wxCommandEvent& event)
 {
@@ -827,11 +852,12 @@ void
 MainFrame::OnPreferences (wxCommandEvent& WXUNUSED(event) )
 {
   DialogPreferences dlg (this, "CTSim Preferences", theApp->getAdvancedOptions(), 
-    theApp->getAskDeleteNewDocs(), theApp->getVerboseLogging());
+    theApp->getAskDeleteNewDocs(), theApp->getVerboseLogging(), theApp->getStartupTips());
   if (dlg.ShowModal() == wxID_OK) {
     theApp->setAdvancedOptions (dlg.getAdvancedOptions());
     theApp->setAskDeleteNewDocs (dlg.getAskDeleteNewDocs());
     theApp->setVerboseLogging (dlg.getVerboseLogging());
+    theApp->setStartupTips (dlg.getStartupTips());
   }
 }
 
index ff8588c2edf5e87407fd52604eedacf5a52fd1d4..a2c2afa8f0ffbdca845197b330dde5d9a38d3629 100644 (file)
@@ -1,15 +1,15 @@
 /*****************************************************************************
 ** FILE IDENTIFICATION
 **
-**   Name:          ctsim.cpp
-**   Purpose:       Top-level routines for CTSim program
+**   Name:          ctsim.h
+**   Purpose:       Header file for CTSim
 **   Programmer:    Kevin Rosenberg
 **   Date Started:  July 2000
 **
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: ctsim.h,v 1.49 2001/02/21 20:13:03 kevin Exp $
+**  $Id: ctsim.h,v 1.50 2001/02/22 00:56:50 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
@@ -136,6 +136,7 @@ public:
 
   void OnAbout (wxCommandEvent& event);
   void OnHelpContents (wxCommandEvent& event);
+  void OnHelpTips (wxCommandEvent& event);
   void OnCreatePhantom (wxCommandEvent& event);
   void OnPreferences (wxCommandEvent& event);
 
@@ -187,6 +188,8 @@ private:
   bool m_bAdvancedOptions;
   bool m_bSetModifyNewDocs;
   bool m_bVerboseLogging;
+  bool m_bShowStartupTips;
+  long m_iCurrentTip;
 
   wxDocManager* m_docManager;
   MainFrame* m_pFrame;
@@ -230,6 +233,10 @@ public:
   void setAdvancedOptions (bool bAdv) { m_bAdvancedOptions = bAdv; }
   bool getVerboseLogging() const { return m_bVerboseLogging; }
   void setVerboseLogging (bool bVerbose) { m_bVerboseLogging = bVerbose; }
+  bool getStartupTips() const { return m_bShowStartupTips; }
+  void setStartupTips(bool bTips) { m_bShowStartupTips = bTips; }
+
+  void ShowTips();
 
   void setIconForFrame (wxFrame* pFrame);
   wxConfig* getConfig()
@@ -265,6 +272,7 @@ enum {
     MAINMENU_WINDOW_BASE = 500,
     MAINMENU_HELP_ABOUT = 600,
     MAINMENU_HELP_CONTENTS,
+    MAINMENU_HELP_TIPS,
 #if defined(CTSIM_WINHELP) && (defined(DEBUG) || defined(_DEBUG))
     MAINMENU_HELP_SECONDARY,
 #endif
index 2fadb35695214e41ca02d7215b73dbe271185fac..9915a34d8765959e2b8974f17889224fec72dfa2 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: dialogs.cpp,v 1.38 2001/02/21 20:13:03 kevin Exp $
+**  $Id: dialogs.cpp,v 1.39 2001/02/22 00:56:50 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
@@ -222,7 +222,7 @@ DialogGetComparisonImage::getMakeDifferenceImage()
 /////////////////////////////////////////////////////////////////////
 
 DialogPreferences::DialogPreferences (wxWindow* pParent, const char* const pszTitle, 
-                                      bool bAdvancedOptions, bool bAskDeleteNewDocs, bool bVerboseLogging)
+                   bool bAdvancedOptions, bool bAskDeleteNewDocs, bool bVerboseLogging, bool bStartupTips)
 : wxDialog (pParent, -1, pszTitle, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
 {
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
@@ -243,6 +243,10 @@ DialogPreferences::DialogPreferences (wxWindow* pParent, const char* const pszTi
   m_pCBVerboseLogging->SetValue (bVerboseLogging);
   pTopSizer->Add (m_pCBVerboseLogging, 0, wxALIGN_CENTER_VERTICAL);
 
+  m_pCBStartupTips = new wxCheckBox (this, -1, "Show Tips at Start", wxDefaultPosition, wxSize(250, 25), 0);
+  m_pCBStartupTips->SetValue (bStartupTips);
+  pTopSizer->Add (m_pCBStartupTips, 0, wxALIGN_CENTER_VERTICAL);
+
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
   
   wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
@@ -284,6 +288,12 @@ DialogPreferences::getVerboseLogging ()
   return static_cast<bool>(m_pCBVerboseLogging->GetValue());
 }
 
+bool
+DialogPreferences::getStartupTips ()
+{
+  return static_cast<bool>(m_pCBStartupTips->GetValue());
+}
+
 
 /////////////////////////////////////////////////////////////////////
 // CLASS DiaglogGetMinMax Implementation
index 726ea932c507957b7bd5d04c6631e3ce0029aece..2497562355365f6658ca533d7dfe6a82df08f467 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: dialogs.h,v 1.28 2001/02/21 20:13:03 kevin Exp $
+**  $Id: dialogs.h,v 1.29 2001/02/22 00:56:50 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
@@ -113,17 +113,19 @@ class DialogPreferences : public wxDialog
 {
  public:
     DialogPreferences (wxWindow* pParent, const char* const pszTitle, bool bAdvanced, bool bAskNewDocs,
-      bool bVerboseLogging);
+      bool bVerboseLogging, bool bStartupTips);
     virtual ~DialogPreferences ();
 
     bool getAdvancedOptions ();
     bool getAskDeleteNewDocs ();
     bool getVerboseLogging ();
+    bool getStartupTips ();
 
  private:
     wxCheckBox* m_pCBAdvancedOptions;
     wxCheckBox* m_pCBAskDeleteNewDocs;
     wxCheckBox* m_pCBVerboseLogging;
+    wxCheckBox* m_pCBStartupTips;
 };
 
 
diff --git a/src/tips.cpp b/src/tips.cpp
new file mode 100644 (file)
index 0000000..c263b48
--- /dev/null
@@ -0,0 +1,106 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          tips.cpp
+**   Purpose:       User tips for CTSim
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  February 2001
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2001 Kevin Rosenberg
+**
+**  $Id: tips.cpp,v 1.1 2001/02/22 00:56:50 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
+**  published by the Free Software Foundation.
+**
+**  This program is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+**  GNU General Public License for more details.
+**
+**  You should have received a copy of the GNU General Public License
+**  along with this program; if not, write to the Free Software
+**  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"
+
+#ifdef __BORLANDC__
+#pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+
+
+#include "tips.h"
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+
+const char* const CTSimTipProvider::s_aszTips[] = {
+  {"You can create a geometric phantom using the \"File - Create Phantom\" menu command."},
+  {"You can create a gray-scale, rasterized image of a phantom by using the \"Process - Rasterize\" menu command on a geometric phantom."},
+  {"You can simulate the x-ray process by using the \"Process - Projections\" menu command on a geometric phantom."},
+  {"You can simulate first, second, and third-fourth-fifth generation CT scanners by using different scanner geometries."},
+  {"You can reconstruct an image from the x-ray data by using the \"Reconstruction\" menu on a projection file."},
+  {"You can specify different levels of smoothing by using different filters in the \"Reconstruction\" dialog."},
+  {"You can select a row and column of an image by left-mouse button clicking on an image."},
+  {"You can plot a column or row of an image by using the \"Analyze - Plot\" command."},
+  {"You can save your plots to a disk file by using the \"File - Save\" command."},
+  {"You can create your own phantoms using a text editor. Please see the manual for the simple file format."},
+  {"You can perform 2-dimension Fourier transform of images using the \"Filter\" menu commands."},
+  {"You can create an image of a filter by using the \"File - Create Filter\" menu command."},
+  {"You can add two images by using the \"Image - Add\" menu command."},
+  {"You can display the value of a pixel in an image by right-mouse button clicking on an image."},
+  {"You can view a 3-dimensional view of an image using the \"Image - 3D\" menu command."},
+  {"You can scale an image to any size using the \"Image - Scale Size\" menu command."},
+  {"You can display context-sensitive help by using the \"Help\" button on dialog boxes."},
+  {"You can compare two images by using the \"Analyze - Compare Images\" menu command."},
+  {"You can display these tips at any time by using the \"Help - Tips\" menu command."},
+  {"You can control CTSim's operation using the \"File - Preferences\" menu command."},
+};
+
+const int CTSimTipProvider::s_iNumTips = sizeof(s_aszTips) / sizeof(const char *);
+
+
+CTSimTipProvider::CTSimTipProvider (size_t iCurrentTip)
+: wxTipProvider (iCurrentTip)
+{
+  if (iCurrentTip >= s_iNumTips)
+    iCurrentTip = 0;
+
+  m_iCurrentTip = iCurrentTip;
+}
+
+wxString
+CTSimTipProvider::GetTip()
+{
+  if (m_iCurrentTip >= s_iNumTips)
+    m_iCurrentTip = 0;
+
+  size_t iThisTip = m_iCurrentTip;
+  ++m_iCurrentTip;
+
+  return wxString (s_aszTips[iThisTip]);
+}
+
+size_t
+CTSimTipProvider::GetCurrentTip()
+{
+  if (m_iCurrentTip >= s_iNumTips)
+    m_iCurrentTip = 0;
+
+  return m_iCurrentTip;
+}
+
diff --git a/src/tips.h b/src/tips.h
new file mode 100644 (file)
index 0000000..39d264d
--- /dev/null
@@ -0,0 +1,45 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          tips.h
+**   Purpose:       Header file for user tips
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  February 2001
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2001 Kevin Rosenberg
+**
+**  $Id: tips.h,v 1.1 2001/02/22 00:56:50 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
+**  published by the Free Software Foundation.
+**
+**  This program is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+**  GNU General Public License for more details.
+**
+**  You should have received a copy of the GNU General Public License
+**  along with this program; if not, write to the Free Software
+**  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+
+#include <wx/tipdlg.h>
+
+
+class CTSimTipProvider : public wxTipProvider
+{
+private:
+  static const char* const s_aszTips[];
+  static const int s_iNumTips;
+
+  size_t m_iCurrentTip;
+
+public:
+  CTSimTipProvider(size_t currentTip);
+
+  virtual wxString GetTip();
+  size_t GetCurrentTip();
+};
index 25abfbf151ab12eca4de005b89e86c69c1bf87b9..c20009dbf38813fec99bc18711f64237e2527678 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: views.cpp,v 1.110 2001/02/20 18:10:45 kevin Exp $
+**  $Id: views.cpp,v 1.111 2001/02/22 00:56:50 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
@@ -911,6 +911,7 @@ ImageFileView::CreateChildFrame(wxDocument *doc, wxView *view)
   
   wxMenu *help_menu = new wxMenu;
   help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
+  help_menu->Append (MAINMENU_HELP_TIPS, "&Tips");
   help_menu->Append (IDH_QUICKSTART, "&Quick Start");
   help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
   
@@ -2084,6 +2085,7 @@ PhantomFileView::CreateChildFrame(wxDocument *doc, wxView *view)
   
   wxMenu *help_menu = new wxMenu;
   help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
+  help_menu->Append (MAINMENU_HELP_TIPS, "&Tips");
   help_menu->Append (IDH_QUICKSTART, "&Quick Start");
   help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
   
@@ -2511,6 +2513,7 @@ ProjectionFileView::CreateChildFrame(wxDocument *doc, wxView *view)
   
   wxMenu *help_menu = new wxMenu;
   help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
+  help_menu->Append (MAINMENU_HELP_TIPS, "&Tips");
   help_menu->Append (IDH_QUICKSTART, "&Quick Start");
   help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
   
@@ -2831,6 +2834,7 @@ PlotFileView::CreateChildFrame(wxDocument *doc, wxView *view)
   
   wxMenu *help_menu = new wxMenu;
   help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
+  help_menu->Append (MAINMENU_HELP_TIPS, "&Tips");
   help_menu->Append (IDH_QUICKSTART, "&Quick Start");
   help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
   
@@ -3077,6 +3081,7 @@ TextFileView::CreateChildFrame (wxDocument *doc, wxView *view)
   
   wxMenu *help_menu = new wxMenu;
   help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
+  help_menu->Append (MAINMENU_HELP_TIPS, "&Tips");
   help_menu->Append (IDH_QUICKSTART, "&Quick Start");
   help_menu->Append(MAINMENU_HELP_ABOUT, "&About");