allow choosing language from the command line; small cleanup

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19066 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2003-02-02 14:09:36 +00:00
parent fb6e5b179a
commit 017fcf32be

View File

@ -9,10 +9,13 @@
// Licence: wxWindows license // Licence: wxWindows license
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#if defined(__GNUG__) && !defined(__APPLE__) // ============================================================================
#pragma implementation // declarations
#pragma interface // ============================================================================
#endif
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
// For compilers that support precompilation, includes "wx/wx.h". // For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h" #include "wx/wxprec.h"
@ -33,6 +36,10 @@
#include "mondrian.xpm" #include "mondrian.xpm"
#endif #endif
// ----------------------------------------------------------------------------
// private classes
// ----------------------------------------------------------------------------
// Define a new application type // Define a new application type
class MyApp: public wxApp class MyApp: public wxApp
{ {
@ -47,8 +54,7 @@ protected:
class MyFrame: public wxFrame class MyFrame: public wxFrame
{ {
public: public:
MyFrame(wxFrame *frame, const wxChar *title, MyFrame(wxLocale& m_locale);
const wxPoint& pos, const wxSize& size, wxLocale& m_locale);
public: public:
void OnQuit(wxCommandEvent& event); void OnQuit(wxCommandEvent& event);
@ -61,28 +67,53 @@ public:
wxLocale& m_locale; wxLocale& m_locale;
}; };
// ----------------------------------------------------------------------------
// constants
// ----------------------------------------------------------------------------
// ID for the menu commands // ID for the menu commands
enum enum
{ {
MINIMAL_QUIT = 1, INTERNAT_QUIT = 1,
MINIMAL_TEXT, INTERNAT_TEXT,
MINIMAL_TEST, INTERNAT_TEST,
MINIMAL_OPEN INTERNAT_OPEN
}; };
// ----------------------------------------------------------------------------
// wxWindows macros
// ----------------------------------------------------------------------------
BEGIN_EVENT_TABLE(MyFrame, wxFrame) BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(MINIMAL_QUIT, MyFrame::OnQuit) EVT_MENU(INTERNAT_QUIT, MyFrame::OnQuit)
EVT_MENU(wxID_ABOUT, MyFrame::OnAbout) EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
EVT_MENU(MINIMAL_TEST, MyFrame::OnPlay) EVT_MENU(INTERNAT_TEST, MyFrame::OnPlay)
EVT_MENU(MINIMAL_OPEN, MyFrame::OnOpen) EVT_MENU(INTERNAT_OPEN, MyFrame::OnOpen)
END_EVENT_TABLE() END_EVENT_TABLE()
IMPLEMENT_APP(MyApp) IMPLEMENT_APP(MyApp)
// ============================================================================
// implementation
// ============================================================================
// ----------------------------------------------------------------------------
// MyApp
// ----------------------------------------------------------------------------
// `Main program' equivalent, creating windows and returning main app frame // `Main program' equivalent, creating windows and returning main app frame
bool MyApp::OnInit() bool MyApp::OnInit()
{ {
long lng = -1;
if ( argc == 2 )
{
// the parameter must be the lang index
wxString(argv[1]).ToLong(&lng);
}
if ( lng == -1 )
{
const wxString langs[] = const wxString langs[] =
{ {
_T("(System default)"), _T("(System default)"),
@ -93,12 +124,16 @@ bool MyApp::OnInit()
_T("English (U.S.)") _T("English (U.S.)")
}; };
SetExitOnFrameDelete(FALSE); lng = wxGetSingleChoiceIndex
int lng = wxGetSingleChoiceIndex(_T("Please choose language:"), _T("Language"), (
WXSIZEOF(langs), langs); _T("Please choose language:"),
SetExitOnFrameDelete(TRUE); _T("Language"),
WXSIZEOF(langs),
langs
);
}
switch (lng) switch ( lng )
{ {
case 0 : m_locale.Init(wxLANGUAGE_DEFAULT); break; case 0 : m_locale.Init(wxLANGUAGE_DEFAULT); break;
case 1 : m_locale.Init(wxLANGUAGE_FRENCH); break; case 1 : m_locale.Init(wxLANGUAGE_FRENCH); break;
@ -109,25 +144,23 @@ bool MyApp::OnInit()
case 5 : m_locale.Init(wxLANGUAGE_ENGLISH_US); break; case 5 : m_locale.Init(wxLANGUAGE_ENGLISH_US); break;
} }
// Initialize the catalogs we'll be using // Initialize the catalogs we'll be using
/* not needed any more, done in wxLocale ctor m_locale.AddCatalog(wxT("internat"));
m_locale.AddCatalog("wxstd"); // 1) for library messages
*/ // this catalog is installed in standard location on Linux systems and
m_locale.AddCatalog(wxT("internat")); // 2) our private one // shows that you may make use of the standard message catalogs as well
/* this catalog is installed in standard location on Linux systems, //
it might not be installed on yours - just ignore the errrors // if it's not installed on your system, it is just silently ignored
or comment out this line then */
#ifdef __LINUX__ #ifdef __LINUX__
{ {
wxLogNull noLog; wxLogNull noLog;
m_locale.AddCatalog(_T("fileutils")); // 3) and another just for testing m_locale.AddCatalog(_T("fileutils"));
} }
#endif #endif
// Create the main frame window // Create the main frame window
MyFrame *frame = new MyFrame( (wxFrame *) NULL, MyFrame *frame = new MyFrame(m_locale);
_("International wxWindows App"), wxPoint(50, 50), wxSize(350, 60),
m_locale);
// Give it an icon // Give it an icon
frame->SetIcon(wxICON(mondrian)); frame->SetIcon(wxICON(mondrian));
@ -136,11 +169,11 @@ bool MyApp::OnInit()
wxMenu *file_menu = new wxMenu; wxMenu *file_menu = new wxMenu;
file_menu->Append(wxID_ABOUT, _("&About...")); file_menu->Append(wxID_ABOUT, _("&About..."));
file_menu->AppendSeparator(); file_menu->AppendSeparator();
file_menu->Append(MINIMAL_QUIT, _("E&xit")); file_menu->Append(INTERNAT_QUIT, _("E&xit"));
wxMenu *test_menu = new wxMenu; wxMenu *test_menu = new wxMenu;
test_menu->Append(MINIMAL_OPEN, _("&Open bogus file")); test_menu->Append(INTERNAT_OPEN, _("&Open bogus file"));
test_menu->Append(MINIMAL_TEST, _("&Play a game")); test_menu->Append(INTERNAT_TEST, _("&Play a game"));
wxMenuBar *menu_bar = new wxMenuBar; wxMenuBar *menu_bar = new wxMenuBar;
menu_bar->Append(file_menu, _("&File")); menu_bar->Append(file_menu, _("&File"));
@ -154,11 +187,18 @@ bool MyApp::OnInit()
return TRUE; return TRUE;
} }
// My frame constructor // ----------------------------------------------------------------------------
MyFrame::MyFrame(wxFrame *frame, const wxChar *title, // MyFrame
const wxPoint& pos, const wxSize& size, wxLocale& l) // ----------------------------------------------------------------------------
: wxFrame(frame, -1, title, pos, size),
m_locale(l) // main frame constructor
MyFrame::MyFrame(wxLocale& locale)
: wxFrame(NULL,
-1,
_("International wxWindows App"),
wxPoint(50, 50),
wxSize(350, 60)),
m_locale(locale)
{ {
// Empty // Empty
} }