• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/ap/gpl/timemachine/gettext-0.17/gettext-tools/examples/hello-c++-wxwidgets/
1// Example for use of GNU gettext.
2// This file is in the public domain.
3
4// Source code of the C++ program.
5
6#include <wx/wx.h>
7#include <wx/intl.h>
8
9/* Get getpid() declaration.  */
10#if HAVE_UNISTD_H
11# include <unistd.h>
12#endif
13
14class MyApp: public wxApp
15{
16public:
17  virtual bool OnInit();
18private:
19  // wxWidgets has the concept of a "current locale". It is the one returned
20  // by wxGetLocale() and implicitly used by wxGetTranslation.
21  // But there is no way to explicitly set this current locale! Rather, it is
22  // always set to the last constructed locale(!), and is modified when a
23  // locale is destroyed. In such a way that the current locale points to
24  // invalid memory after you do
25  //    wxLocale *a = new wxLocale;
26  //    wxLocale *b = new wxLocale;
27  //    delete a;
28  //    delete b;
29  // So, to avoid problems, we use exactly one instance of wxLocale, and keep
30  // it alive for the entire application lifetime.
31  wxLocale appLocale;
32};
33
34class MyFrame: public wxFrame
35{
36public:
37  MyFrame();
38};
39
40// This defines the main() function.
41IMPLEMENT_APP(MyApp)
42
43bool MyApp::OnInit()
44{
45  // First, register the base directory where to look up .mo files.
46  wxLocale::AddCatalogLookupPathPrefix(wxT(LOCALEDIR));
47  // Second, initialize the locale and set the application-wide message domain.
48  appLocale.Init();
49  appLocale.AddCatalog(wxT("hello-c++-wxwidgets"));
50  // Now wxGetLocale() is initialized appropriately.
51
52  // Then only start building the GUI elements of the application.
53
54  // Create the main frame window.
55  MyFrame *frame = new MyFrame();
56
57  // Show the frame.
58  frame->Show(true);
59  SetTopWindow(frame);
60
61  return true;
62}
63
64MyFrame::MyFrame()
65  : wxFrame(NULL, wxID_ANY, _T("Hello example"))
66{
67  wxStaticText *label1 =
68    new wxStaticText(this, wxID_ANY, _("Hello, world!"));
69
70  wxString label2text =
71    wxString::Format(_("This program is running as process number %d."),
72                     getpid());
73  wxStaticText *label2 =
74    new wxStaticText(this, wxID_ANY, label2text);
75
76  wxBoxSizer *topSizer = new wxBoxSizer(wxVERTICAL);
77  topSizer->Add(label1);
78  topSizer->Add(label2);
79  SetSizer(topSizer);
80}
81