-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDialogBlocksWinAppMLapp.cpp
More file actions
180 lines (136 loc) · 6.06 KB
/
DialogBlocksWinAppMLapp.cpp
File metadata and controls
180 lines (136 loc) · 6.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
/////////////////////////////////////////////////////////////////////////////
// Name: DialogBlocksWinAppMLapp.cpp
// Purpose:
// Author: Talipov S.N.
// Modified by:
// Created: 22.04.2025 13:00:38
// RCS-ID:
// Copyright: Talipov S.N.
// Licence:
/////////////////////////////////////////////////////////////////////////////
// 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 <wx/fileconf.h>
#include <wx/stdpaths.h>
#include <wx/config.h>
////@begin includes
////@end includes
#include "DialogBlocksWinAppMLapp.h"
////@begin XPM images
////@end XPM images
/*
* Application instance implementation
*/
////@begin implement app
IMPLEMENT_APP(DialogBlocksWinAppMLApp)
////@end implement app
/*
* DialogBlocksWinAppMLApp type definition
*/
IMPLEMENT_CLASS(DialogBlocksWinAppMLApp, wxApp)
/*
* DialogBlocksWinAppMLApp event table definition
*/
BEGIN_EVENT_TABLE(DialogBlocksWinAppMLApp, wxApp)
////@begin DialogBlocksWinAppMLApp event table entries
////@end DialogBlocksWinAppMLApp event table entries
END_EVENT_TABLE()
// --- Объявление указателя на объект конфигурации ---
wxFileConfig* m_fileconfig;
// -------
/*
* Constructor for DialogBlocksWinAppMLApp
*/
DialogBlocksWinAppMLApp::DialogBlocksWinAppMLApp()
{
Init();
}
/*
* Member initialisation
*/
void DialogBlocksWinAppMLApp::Init()
{
// --- ЛОКАЛИЗАЦИЯ ПРИЛОЖЕНИЯ, ЧТЕНИЕ ИЗ ФАЙЛА НАСТРОЕК ---
// Добавить путь к каталогу с переводами в список поиска каталогов с переводами
m_locale.AddCatalogLookupPathPrefix(wxT("locale"));
// Создать имя для файла конфигурации приложения
wxFileName fn = wxFileName(wxPathOnly(wxStandardPaths::Get().GetExecutablePath()), GetAppName(), wxT("ini"));
// Создать объект конфигурации приложения
m_fileconfig = new wxFileConfig(wxEmptyString, wxEmptyString, fn.GetFullPath(), wxEmptyString,
wxCONFIG_USE_LOCAL_FILE | wxCONFIG_USE_NO_ESCAPE_CHARACTERS);
wxConfigBase::Set(m_fileconfig); // Установить объект конфигурации приложения
wxString user_lang; // Объявить переменную для хранения языка пользователя
if (m_fileconfig) { // Если объект конфигурации приложения создан
user_lang = (m_fileconfig->Read(wxT("language"), wxT("en"))); // Прочитать язык пользователя из конфигурации
if (user_lang == L"ru") // Если язык пользователя русский
{
setlocale(LC_ALL, "ru_RU.UTF-8"); // Установить локаль по умолчанию для Linux на русский язык
m_locale.Init(wxLANGUAGE_RUSSIAN); // Установить локализацию приложения на русский язык
m_locale.AddCatalog(wxT("ru")); // Добавить каталог с переводами на русский язык
}
else if (user_lang == L"de") // Если язык пользователя немецкий
{
setlocale(LC_ALL, "de_DE.UTF-8"); // Установить локаль по умолчанию для Linux на немецкий язык
m_locale.Init(wxLANGUAGE_GERMAN); // Установить локализацию приложения на немецкий язык
m_locale.AddCatalog(wxT("de")); // Добавить каталог с переводами на немецкий язык
}
else if (user_lang == L"ja") // Если язык пользователя японский
{
setlocale(LC_ALL, "ja_JP.UTF-8"); // Установить локаль по умолчанию для Linux на японский язык
m_locale.Init(wxLANGUAGE_JAPANESE); // Установить локализацию приложения на японский язык
m_locale.AddCatalog(wxT("ja")); // Добавить каталог с переводами на японский язык
}
else
{
setlocale(LC_ALL, "en_US.UTF-8"); // Установить локаль по умолчанию для Linux на английский язык
m_locale.Init(wxLANGUAGE_ENGLISH); // Установить локализацию приложения на английский язык
}
}
// -------------------------------
}
/*
* Initialisation for DialogBlocksWinAppMLApp
*/
bool DialogBlocksWinAppMLApp::OnInit()
{
////@begin DialogBlocksWinAppMLApp initialisation
// Remove the comment markers above and below this block
// to make permanent changes to the code.
#if wxUSE_XPM
wxImage::AddHandler(new wxXPMHandler);
#endif
#if wxUSE_LIBPNG
wxImage::AddHandler(new wxPNGHandler);
#endif
#if wxUSE_LIBJPEG
wxImage::AddHandler(new wxJPEGHandler);
#endif
#if wxUSE_GIF
wxImage::AddHandler(new wxGIFHandler);
#endif
Form1* mainWindow = new Form1(NULL);
mainWindow->Show(true);
////@end DialogBlocksWinAppMLApp initialisation
return true;
}
/*
* Cleanup for DialogBlocksWinAppMLApp
*/
int DialogBlocksWinAppMLApp::OnExit()
{
// --- СОХРАНИТЬ НАСТРОЙКИ В ФАЙЛ КОНФИГУРАЦИИ ПРИ ВЫХОДЕ ИЗ ПРОГРАММЫ ---
if (m_fileconfig) { // Если объект конфигурации приложения создан
m_fileconfig->Flush(); // Сохранить настройки в файл
delete m_fileconfig; // Удалить объект конфигурации приложения
m_fileconfig = NULL; // Установить указатель на объект конфигурации приложения в NULL
}
wxConfigBase::Set(NULL); // Установить объект конфигурации приложения в NULL
// ------------------------------------------------------------------
return wxApp::OnExit(); // Вызвать функцию OnExit() базового класса
}