- for (int i = 0; i < 64; i++)
- {
- GdkColor col;
- col.red = g_palette[i*3 + 0] << 8;
- col.green = g_palette[i*3 + 1] << 8;
- col.blue = g_palette[i*3 + 2] << 8;
- col.pixel = 0;
-
- gdk_color_alloc( cmap, &col );
- }
-
- gtk_widget_push_colormap( cmap );
-
- gtk_widget_set_default_colormap( cmap );
+bool wxApp::Initialize(int& argc, wxChar **argv)
+{
+ bool init_result;
+
+#if wxUSE_THREADS
+ if (!g_thread_supported())
+ g_thread_init(NULL);
+#endif // wxUSE_THREADS
+
+ gtk_set_locale();
+
+ // We should have the wxUSE_WCHAR_T test on the _outside_
+#if wxUSE_WCHAR_T
+ // gtk+ 2.0 supports Unicode through UTF-8 strings
+ wxConvCurrent = &wxConvUTF8;
+#else // !wxUSE_WCHAR_T
+ if (!wxOKlibc())
+ wxConvCurrent = (wxMBConv*) NULL;
+#endif // wxUSE_WCHAR_T/!wxUSE_WCHAR_T
+
+ // decide which conversion to use for the file names
+
+ // (1) this variable exists for the sole purpose of specifying the encoding
+ // of the filenames for GTK+ programs, so use it if it is set
+ wxString encName(wxGetenv(_T("G_FILENAME_ENCODING")));
+ encName = encName.BeforeFirst(_T(','));
+ if (encName == _T("@locale"))
+ encName.clear();
+ encName.MakeUpper();
+#if wxUSE_INTL
+ if (encName.empty())
+ {
+ // (2) if a non default locale is set, assume that the user wants his
+ // filenames in this locale too
+ encName = wxLocale::GetSystemEncodingName().Upper();
+ // (3) finally use UTF-8 by default
+ if (encName.empty() || encName == _T("US-ASCII"))
+ encName = _T("UTF-8");
+ wxSetEnv(_T("G_FILENAME_ENCODING"), encName);
+ }
+#else
+ if (encName.empty())
+ encName = _T("UTF-8");
+#endif // wxUSE_INTL
+ static wxConvBrokenFileNames fileconv(encName);
+ wxConvFileName = &fileconv;
+
+#if wxUSE_UNICODE
+ // gtk_init() wants UTF-8, not wchar_t, so convert
+ int i;
+ char **argvGTK = new char *[argc + 1];
+ for ( i = 0; i < argc; i++ )
+ {
+ argvGTK[i] = wxStrdupA(wxConvUTF8.cWX2MB(argv[i]));
+ }