1 //////////////////////////////////////////////////////////////////////////////
3 // Purpose: STC test application
4 // Maintainer: Otto Wyss
7 // Copyright: (c) wxGuide
8 // Licence: wxWindows licence
9 //////////////////////////////////////////////////////////////////////////////
11 //----------------------------------------------------------------------------
13 //----------------------------------------------------------------------------
15 // For compilers that support precompilation, includes <wx/wx.h>.
16 #include <wx/wxprec.h>
22 // for all others, include the necessary headers (this file is usually all you
23 // need because it includes almost all 'standard' wxWindows headers)
29 #include <wx/config.h> // configuration support
30 #include <wx/filedlg.h> // file dialog support
31 #include <wx/filename.h> // filename support
32 #include <wx/notebook.h> // notebook support
33 #include <wx/settings.h> // system settings
34 #include <wx/string.h> // strings support
35 #include <wx/image.h> // images support
37 //! application headers
38 #include "defsext.h" // Additional definitions
39 #include "edit.h" // Edit module
40 #include "prefs.h" // Prefs
43 //----------------------------------------------------------------------------
45 //----------------------------------------------------------------------------
47 // the application icon (under Windows and OS/2 it is in resources)
48 #if defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXMAC__) || defined(__WXMGL__) || defined(__WXX11__)
49 #include "mondrian.xpm"
52 //============================================================================
54 //============================================================================
56 #define APP_NAME _T("STC-Test")
57 #define APP_DESCR _("See http://wxguide.sourceforge.net/")
59 #define APP_MAINT _T("Otto Wyss")
60 #define APP_VENDOR _T("wxWindows")
61 #define APP_COPYRIGTH _T("(C) 2003 Otto Wyss")
62 #define APP_LICENCE _T("wxWindows")
64 #define APP_VERSION _T("0.1.alpha")
65 #define APP_BUILD __DATE__
67 #define APP_WEBSITE _T("http://www.wxWindows.org")
68 #define APP_MAIL _T("mailto://???")
70 #define NONAME _("<untitled>")
75 //----------------------------------------------------------------------------
76 //! global application name
77 wxString
*g_appname
= NULL
;
79 //! global print data, to remember settings during the session
80 wxPrintData
*g_printData
= (wxPrintData
*) NULL
;
81 wxPageSetupData
*g_pageSetupData
= (wxPageSetupData
*) NULL
;
84 //----------------------------------------------------------------------------
85 //! application APP_VENDOR-APP_NAME.
86 class App
: public wxApp
{
87 friend class AppFrame
;
90 //! the main function called durning application start
91 virtual bool OnInit ();
93 //! application exit function
94 virtual int OnExit ();
102 // created dynamically by wxWindows
105 //----------------------------------------------------------------------------
106 //! frame of the application APP_VENDOR-APP_NAME.
107 class AppFrame
: public wxFrame
{
109 friend class AppBook
;
110 friend class AppAbout
;
114 AppFrame (const wxString
&title
);
121 void OnClose (wxCloseEvent
&event
);
122 void OnAbout (wxCommandEvent
&event
);
123 void OnExit (wxCommandEvent
&event
);
124 void OnTimerEvent (wxTimerEvent
&event
);
126 void OnFileNew (wxCommandEvent
&event
);
127 void OnFileNewFrame (wxCommandEvent
&event
);
128 void OnFileOpen (wxCommandEvent
&event
);
129 void OnFileOpenFrame (wxCommandEvent
&event
);
130 void OnFileSave (wxCommandEvent
&event
);
131 void OnFileSaveAs (wxCommandEvent
&event
);
132 void OnFileClose (wxCommandEvent
&event
);
134 void OnProperties (wxCommandEvent
&event
);
136 void OnPrintSetup (wxCommandEvent
&event
);
137 void OnPrintPreview (wxCommandEvent
&event
);
138 void OnPrint (wxCommandEvent
&event
);
140 void OnEdit (wxCommandEvent
&event
);
145 void FileOpen (wxString fname
);
147 //! creates the application menu bar
148 wxMenuBar
*m_menuBar
;
151 // print preview position and size
152 wxRect
DeterminePrintSize ();
154 DECLARE_EVENT_TABLE()
157 //----------------------------------------------------------------------------
158 //! about box of the application APP_VENDOR-APP_NAME
159 class AppAbout
: public wxDialog
{
163 AppAbout (wxWindow
*parent
,
164 int milliseconds
= 0,
171 void OnTimerEvent (wxTimerEvent
&event
);
177 DECLARE_EVENT_TABLE()
181 //============================================================================
183 //============================================================================
187 //----------------------------------------------------------------------------
189 //----------------------------------------------------------------------------
191 bool App::OnInit () {
193 wxInitAllImageHandlers();
195 // set application and vendor name
196 SetAppName (APP_NAME
);
197 SetVendorName (APP_VENDOR
);
198 g_appname
= new wxString ();
199 g_appname
->Append (APP_VENDOR
);
200 g_appname
->Append (_T("-"));
201 g_appname
->Append (APP_NAME
);
203 // initialize print data and setup
204 g_printData
= new wxPrintData
;
205 g_pageSetupData
= new wxPageSetupDialogData
;
207 // create application frame
208 m_frame
= new AppFrame (*g_appname
);
210 // open application frame
212 m_frame
->Show (true);
213 SetTopWindow (m_frame
);
220 // delete global appname
223 // delete global print data and setup
224 if (g_printData
) delete g_printData
;
225 if (g_pageSetupData
) delete g_pageSetupData
;
230 //----------------------------------------------------------------------------
232 //----------------------------------------------------------------------------
234 BEGIN_EVENT_TABLE (AppFrame
, wxFrame
)
236 EVT_CLOSE ( AppFrame::OnClose
)
238 EVT_MENU (wxID_OPEN
, AppFrame::OnFileOpen
)
239 EVT_MENU (wxID_SAVE
, AppFrame::OnFileSave
)
240 EVT_MENU (wxID_SAVEAS
, AppFrame::OnFileSaveAs
)
241 EVT_MENU (wxID_CLOSE
, AppFrame::OnFileClose
)
243 EVT_MENU (myID_PROPERTIES
, AppFrame::OnProperties
)
245 EVT_MENU (wxID_PRINT_SETUP
, AppFrame::OnPrintSetup
)
246 EVT_MENU (wxID_PREVIEW
, AppFrame::OnPrintPreview
)
247 EVT_MENU (wxID_PRINT
, AppFrame::OnPrint
)
248 EVT_MENU (wxID_EXIT
, AppFrame::OnExit
)
250 EVT_MENU (wxID_CLEAR
, AppFrame::OnEdit
)
251 EVT_MENU (wxID_CUT
, AppFrame::OnEdit
)
252 EVT_MENU (wxID_COPY
, AppFrame::OnEdit
)
253 EVT_MENU (wxID_PASTE
, AppFrame::OnEdit
)
254 EVT_MENU (myID_INDENTINC
, AppFrame::OnEdit
)
255 EVT_MENU (myID_INDENTRED
, AppFrame::OnEdit
)
256 EVT_MENU (wxID_SELECTALL
, AppFrame::OnEdit
)
257 EVT_MENU (myID_SELECTLINE
, AppFrame::OnEdit
)
258 EVT_MENU (wxID_REDO
, AppFrame::OnEdit
)
259 EVT_MENU (wxID_UNDO
, AppFrame::OnEdit
)
261 EVT_MENU (wxID_FIND
, AppFrame::OnEdit
)
262 EVT_MENU (myID_FINDNEXT
, AppFrame::OnEdit
)
263 EVT_MENU (myID_REPLACE
, AppFrame::OnEdit
)
264 EVT_MENU (myID_REPLACENEXT
, AppFrame::OnEdit
)
265 EVT_MENU (myID_BRACEMATCH
, AppFrame::OnEdit
)
266 EVT_MENU (myID_GOTO
, AppFrame::OnEdit
)
268 EVT_MENU_RANGE (myID_HILIGHTFIRST
, myID_HILIGHTLAST
,
270 EVT_MENU (myID_DISPLAYEOL
, AppFrame::OnEdit
)
271 EVT_MENU (myID_INDENTGUIDE
, AppFrame::OnEdit
)
272 EVT_MENU (myID_LINENUMBER
, AppFrame::OnEdit
)
273 EVT_MENU (myID_LONGLINEON
, AppFrame::OnEdit
)
274 EVT_MENU (myID_WHITESPACE
, AppFrame::OnEdit
)
275 EVT_MENU (myID_FOLDTOGGLE
, AppFrame::OnEdit
)
276 EVT_MENU (myID_OVERTYPE
, AppFrame::OnEdit
)
277 EVT_MENU (myID_READONLY
, AppFrame::OnEdit
)
278 EVT_MENU (myID_WRAPMODEON
, AppFrame::OnEdit
)
280 EVT_MENU (myID_CHANGELOWER
, AppFrame::OnEdit
)
281 EVT_MENU (myID_CHANGEUPPER
, AppFrame::OnEdit
)
282 EVT_MENU (myID_CONVERTCR
, AppFrame::OnEdit
)
283 EVT_MENU (myID_CONVERTCRLF
, AppFrame::OnEdit
)
284 EVT_MENU (myID_CONVERTLF
, AppFrame::OnEdit
)
285 EVT_MENU (myID_CHARSETANSI
, AppFrame::OnEdit
)
286 EVT_MENU (myID_CHARSETMAC
, AppFrame::OnEdit
)
288 EVT_MENU (wxID_ABOUT
, AppFrame::OnAbout
)
291 AppFrame::AppFrame (const wxString
&title
)
292 : wxFrame ((wxFrame
*)NULL
, -1, title
, wxDefaultPosition
, wxDefaultSize
,
293 wxDEFAULT_FRAME_STYLE
| wxNO_FULL_REPAINT_ON_RESIZE
) {
295 // intitialize important variables
298 // set icon and background
299 SetTitle (*g_appname
);
300 SetIcon (wxICON (mondrian
));
301 SetBackgroundColour (_T("WHITE"));
303 // about box shown for 1 seconds
304 AppAbout (this, 1000);
307 m_menuBar
= new wxMenuBar
;
311 m_edit
= new Edit (this, -1);
314 FileOpen (_T("stctest.cpp"));
317 AppFrame::~AppFrame () {
320 // common event handlers
321 void AppFrame::OnClose (wxCloseEvent
&event
) {
324 if (m_edit
&& m_edit
->Modified()) {
325 if (event
.CanVeto()) event
.Veto (true);
331 void AppFrame::OnAbout (wxCommandEvent
&WXUNUSED(event
)) {
335 void AppFrame::OnExit (wxCommandEvent
&WXUNUSED(event
)) {
339 // file event handlers
340 void AppFrame::OnFileOpen (wxCommandEvent
&WXUNUSED(event
)) {
343 wxFileDialog
dlg (this, _T("Open file"), _T(""), _T(""), _T("Any file (*)|*"),
344 wxOPEN
| wxFILE_MUST_EXIST
| wxCHANGE_DIR
);
345 if (dlg
.ShowModal() != wxID_OK
) return;
346 fname
= dlg
.GetPath ();
350 void AppFrame::OnFileSave (wxCommandEvent
&WXUNUSED(event
)) {
352 if (!m_edit
->Modified()) {
353 wxMessageBox (_("There is nothing to save!"), _("Save file"),
354 wxOK
| wxICON_EXCLAMATION
);
360 void AppFrame::OnFileSaveAs (wxCommandEvent
&WXUNUSED(event
)) {
362 wxString filename
= wxEmptyString
;
363 wxFileDialog
dlg (this, _T("Save file"), _T(""), _T(""), _T("Any file (*)|*"), wxSAVE
|wxOVERWRITE_PROMPT
);
364 if (dlg
.ShowModal() != wxID_OK
) return;
365 filename
= dlg
.GetPath();
366 m_edit
->SaveFile (filename
);
369 void AppFrame::OnFileClose (wxCommandEvent
&WXUNUSED(event
)) {
371 if (m_edit
->Modified()) {
372 if (wxMessageBox (_("Text is not saved, save before closing?"), _("Close"),
373 wxYES_NO
| wxICON_QUESTION
) == wxYES
) {
375 if (m_edit
->Modified()) {
376 wxMessageBox (_("Text could not be saved!"), _("Close abort"),
377 wxOK
| wxICON_EXCLAMATION
);
385 // properties event handlers
386 void AppFrame::OnProperties (wxCommandEvent
&WXUNUSED(event
)) {
388 EditProperties (m_edit
, 0);
391 // print event handlers
392 void AppFrame::OnPrintSetup (wxCommandEvent
&WXUNUSED(event
)) {
393 (*g_pageSetupData
) = * g_printData
;
394 wxPageSetupDialog
pageSetupDialog(this, g_pageSetupData
);
395 pageSetupDialog
.ShowModal();
396 (*g_printData
) = pageSetupDialog
.GetPageSetupData().GetPrintData();
397 (*g_pageSetupData
) = pageSetupDialog
.GetPageSetupData();
400 void AppFrame::OnPrintPreview (wxCommandEvent
&WXUNUSED(event
)) {
401 wxPrintDialogData
printDialogData( *g_printData
);
402 wxPrintPreview
*preview
=
403 new wxPrintPreview (new EditPrint (m_edit
),
404 new EditPrint (m_edit
),
406 if (!preview
->Ok()) {
408 wxMessageBox (_("There was a problem with previewing.\n\
409 Perhaps your current printer is not correctly?"),
410 _("Previewing"), wxOK
);
413 wxRect rect
= DeterminePrintSize();
414 wxPreviewFrame
*frame
= new wxPreviewFrame (preview
, this, _("Print Preview"));
415 frame
->SetSize (rect
);
416 frame
->Centre(wxBOTH
);
421 void AppFrame::OnPrint (wxCommandEvent
&WXUNUSED(event
)) {
422 wxPrintDialogData
printDialogData( *g_printData
);
423 wxPrinter
printer (&printDialogData
);
424 EditPrint
printout (m_edit
);
425 if (!printer
.Print (this, &printout
, true)) {
426 if (wxPrinter::GetLastError() == wxPRINTER_ERROR
) {
427 wxMessageBox (_("There was a problem with printing.\n\
428 Perhaps your current printer is not correctly?"),
429 _("Previewing"), wxOK
);
433 (*g_printData
) = printer
.GetPrintDialogData().GetPrintData();
437 void AppFrame::OnEdit (wxCommandEvent
&event
) {
438 if (m_edit
) m_edit
->ProcessEvent (event
);
442 void AppFrame::CreateMenu () {
445 wxMenu
*menuFile
= new wxMenu
;
446 menuFile
->Append (wxID_OPEN
, _("&Open ..\tCtrl+O"));
447 menuFile
->Append (wxID_SAVE
, _("&Save\tCtrl+S"));
448 menuFile
->Append (wxID_SAVEAS
, _("Save &as ..\tCtrl+Shift+S"));
449 menuFile
->Append (wxID_CLOSE
, _("&Close\tCtrl+W"));
450 menuFile
->AppendSeparator();
451 menuFile
->Append (myID_PROPERTIES
, _("Proper&ties ..\tCtrl+I"));
452 menuFile
->AppendSeparator();
453 menuFile
->Append (wxID_PRINT_SETUP
, _("Print Set&up .."));
454 menuFile
->Append (wxID_PREVIEW
, _("Print Pre&view\tCtrl+Shift+P"));
455 menuFile
->Append (wxID_PRINT
, _("&Print ..\tCtrl+P"));
456 menuFile
->AppendSeparator();
457 menuFile
->Append (wxID_EXIT
, _("&Quit\tCtrl+Q"));
460 wxMenu
*menuEdit
= new wxMenu
;
461 menuEdit
->Append (wxID_UNDO
, _("&Undo\tCtrl+Z"));
462 menuEdit
->Append (wxID_REDO
, _("&Redo\tCtrl+Shift+Z"));
463 menuEdit
->AppendSeparator();
464 menuEdit
->Append (wxID_CUT
, _("Cu&t\tCtrl+X"));
465 menuEdit
->Append (wxID_COPY
, _("&Copy\tCtrl+C"));
466 menuEdit
->Append (wxID_PASTE
, _("&Paste\tCtrl+V"));
467 menuEdit
->Append (wxID_CLEAR
, _("&Delete\tDel"));
468 menuEdit
->AppendSeparator();
469 menuEdit
->Append (wxID_FIND
, _("&Find\tCtrl+F"));
470 menuEdit
->Enable (wxID_FIND
, false);
471 menuEdit
->Append (myID_FINDNEXT
, _("Find &next\tF3"));
472 menuEdit
->Enable (myID_FINDNEXT
, false);
473 menuEdit
->Append (myID_REPLACE
, _("&Replace\tCtrl+H"));
474 menuEdit
->Enable (myID_REPLACE
, false);
475 menuEdit
->Append (myID_REPLACENEXT
, _("Replace &again\tShift+F4"));
476 menuEdit
->Enable (myID_REPLACENEXT
, false);
477 menuEdit
->AppendSeparator();
478 menuEdit
->Append (myID_BRACEMATCH
, _("&Match brace\tCtrl+M"));
479 menuEdit
->Append (myID_GOTO
, _("&Goto\tCtrl+G"));
480 menuEdit
->Enable (myID_GOTO
, false);
481 menuEdit
->AppendSeparator();
482 menuEdit
->Append (myID_INDENTINC
, _("&Indent increase\tTab"));
483 menuEdit
->Append (myID_INDENTRED
, _("I&ndent reduce\tBksp"));
484 menuEdit
->AppendSeparator();
485 menuEdit
->Append (wxID_SELECTALL
, _("&Select all\tCtrl+A"));
486 menuEdit
->Append (myID_SELECTLINE
, _("Select &line\tCtrl+L"));
489 wxMenu
*menuHilight
= new wxMenu
;
491 for (Nr
= 0; Nr
< g_LanguagePrefsSize
; Nr
++) {
492 menuHilight
->Append (myID_HILIGHTFIRST
+ Nr
,
493 g_LanguagePrefs
[Nr
].name
);
497 wxMenu
*menuCharset
= new wxMenu
;
498 menuCharset
->Append (myID_CHARSETANSI
, _("&ANSI (Windows)"));
499 menuCharset
->Append (myID_CHARSETMAC
, _("&MAC (Macintosh)"));
502 wxMenu
*menuView
= new wxMenu
;
503 menuView
->Append (myID_HILIGHTLANG
, _("&Hilight language .."), menuHilight
);
504 menuView
->AppendSeparator();
505 menuView
->AppendCheckItem (myID_FOLDTOGGLE
, _("&Toggle current fold\tCtrl+T"));
506 menuView
->AppendCheckItem (myID_OVERTYPE
, _("&Overwrite mode\tIns"));
507 menuView
->AppendCheckItem (myID_WRAPMODEON
, _("&Wrap mode\tCtrl+U"));
508 menuView
->AppendSeparator();
509 menuView
->AppendCheckItem (myID_DISPLAYEOL
, _("Show line &endings"));
510 menuView
->AppendCheckItem (myID_INDENTGUIDE
, _("Show &indent guides"));
511 menuView
->AppendCheckItem (myID_LINENUMBER
, _("Show line &numbers"));
512 menuView
->AppendCheckItem (myID_LONGLINEON
, _("Show &long line marker"));
513 menuView
->AppendCheckItem (myID_WHITESPACE
, _("Show white&space"));
514 menuView
->AppendSeparator();
515 menuView
->Append (myID_USECHARSET
, _("Use &code page of .."), menuCharset
);
517 // change case submenu
518 wxMenu
*menuChangeCase
= new wxMenu
;
519 menuChangeCase
->Append (myID_CHANGEUPPER
, _("&Upper case"));
520 menuChangeCase
->Append (myID_CHANGELOWER
, _("&Lower case"));
522 // convert EOL submenu
523 wxMenu
*menuConvertEOL
= new wxMenu
;
524 menuConvertEOL
->Append (myID_CONVERTCR
, _("CR (&Linux)"));
525 menuConvertEOL
->Append (myID_CONVERTCRLF
, _("CR+LF (&Windows)"));
526 menuConvertEOL
->Append (myID_CONVERTLF
, _("LF (&Macintosh)"));
529 wxMenu
*menuExtra
= new wxMenu
;
530 menuExtra
->AppendCheckItem (myID_READONLY
, _("&Readonly mode"));
531 menuExtra
->AppendSeparator();
532 menuExtra
->Append (myID_CHANGECASE
, _("Change &case to .."), menuChangeCase
);
533 menuExtra
->AppendSeparator();
534 menuExtra
->Append (myID_CONVERTEOL
, _("Convert line &endings to .."), menuConvertEOL
);
537 wxMenu
*menuWindow
= new wxMenu
;
538 menuWindow
->Append (myID_PAGEPREV
, _("&Previous\tCtrl+Shift+Tab"));
539 menuWindow
->Append (myID_PAGENEXT
, _("&Next\tCtrl+Tab"));
542 wxMenu
*menuHelp
= new wxMenu
;
543 menuHelp
->Append (wxID_ABOUT
, _("&About ..\tShift+F1"));
546 m_menuBar
->Append (menuFile
, _("&File"));
547 m_menuBar
->Append (menuEdit
, _("&Edit"));
548 m_menuBar
->Append (menuView
, _("&View"));
549 m_menuBar
->Append (menuExtra
, _("E&xtra"));
550 m_menuBar
->Append (menuWindow
, _("&Window"));
551 m_menuBar
->Append (menuHelp
, _("&Help"));
552 SetMenuBar (m_menuBar
);
556 void AppFrame::FileOpen (wxString fname
) {
557 wxFileName
w(fname
); w
.Normalize(); fname
= w
.GetFullPath();
558 m_edit
->LoadFile (fname
);
561 wxRect
AppFrame::DeterminePrintSize () {
563 wxSize scr
= wxGetDisplaySize();
565 // determine position and size (shifting 16 left and down)
566 wxRect rect
= GetRect();
569 rect
.width
= wxMin (rect
.width
, (scr
.x
- rect
.x
));
570 rect
.height
= wxMin (rect
.height
, (scr
.x
- rect
.y
));
576 //----------------------------------------------------------------------------
578 //----------------------------------------------------------------------------
580 BEGIN_EVENT_TABLE (AppAbout
, wxDialog
)
581 EVT_TIMER (myID_ABOUTTIMER
, AppAbout::OnTimerEvent
)
584 AppAbout::AppAbout (wxWindow
*parent
,
587 : wxDialog (parent
, -1, wxEmptyString
,
588 wxDefaultPosition
, wxDefaultSize
,
589 style
| wxDEFAULT_DIALOG_STYLE
| wxRESIZE_BORDER
) {
593 if (milliseconds
> 0) {
594 m_timer
= new wxTimer (this, myID_ABOUTTIMER
);
595 m_timer
->Start (milliseconds
, wxTIMER_ONE_SHOT
);
598 // sets the application title
599 SetTitle (_("About .."));
602 wxGridSizer
*aboutinfo
= new wxGridSizer (2, 0, 2);
603 aboutinfo
->Add (new wxStaticText(this, -1, _("Written by: ")),
605 aboutinfo
->Add (new wxStaticText(this, -1, APP_MAINT
),
606 1, wxEXPAND
| wxALIGN_LEFT
);
607 aboutinfo
->Add (new wxStaticText(this, -1, _("Version: ")),
609 aboutinfo
->Add (new wxStaticText(this, -1, APP_VERSION
),
610 1, wxEXPAND
| wxALIGN_LEFT
);
611 aboutinfo
->Add (new wxStaticText(this, -1, _("Licence type: ")),
613 aboutinfo
->Add (new wxStaticText(this, -1, APP_LICENCE
),
614 1, wxEXPAND
| wxALIGN_LEFT
);
615 aboutinfo
->Add (new wxStaticText(this, -1, _("Copyright: ")),
617 aboutinfo
->Add (new wxStaticText(this, -1, APP_COPYRIGTH
),
618 1, wxEXPAND
| wxALIGN_LEFT
);
620 // about icontitle//info
621 wxBoxSizer
*aboutpane
= new wxBoxSizer (wxHORIZONTAL
);
622 wxBitmap bitmap
= wxBitmap(wxICON (mondrian
));
623 aboutpane
->Add (new wxStaticBitmap (this, -1, bitmap
),
624 0, wxALIGN_LEFT
|wxALIGN_CENTER_VERTICAL
|wxLEFT
|wxRIGHT
, 20);
625 aboutpane
->Add (aboutinfo
, 1, wxEXPAND
);
626 aboutpane
->Add (60, 0);
629 wxBoxSizer
*totalpane
= new wxBoxSizer (wxVERTICAL
);
630 totalpane
->Add (0, 20);
631 wxStaticText
*appname
= new wxStaticText(this, -1, *g_appname
);
632 appname
->SetFont (wxFont (24, wxDEFAULT
, wxNORMAL
, wxBOLD
));
633 totalpane
->Add (appname
, 0, wxALIGN_CENTER
| wxLEFT
| wxRIGHT
, 40);
634 totalpane
->Add (0, 10);
635 totalpane
->Add (aboutpane
, 0, wxEXPAND
| wxALL
, 4);
636 totalpane
->Add (new wxStaticText(this, -1, APP_DESCR
),
637 0, wxALIGN_CENTER
| wxALL
, 10);
638 wxButton
*okButton
= new wxButton (this, wxID_OK
, _("OK"));
639 okButton
->SetDefault();
640 totalpane
->Add (okButton
, 0, wxALIGN_CENTER
| wxLEFT
| wxRIGHT
| wxBOTTOM
, 10);
642 SetSizerAndFit (totalpane
);
648 AppAbout::~AppAbout () {
655 //----------------------------------------------------------------------------
657 void AppAbout::OnTimerEvent (wxTimerEvent
&WXUNUSED(event
)) {
658 if (m_timer
) delete m_timer
;