-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathform1.cpp
More file actions
273 lines (203 loc) · 6.66 KB
/
form1.cpp
File metadata and controls
273 lines (203 loc) · 6.66 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
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
/////////////////////////////////////////////////////////////////////////////
// Name: form1.cpp
// Purpose:
// Author: Talipov S.N.
// Modified by:
// Created: 22.04.2025 13:36:03
// 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
////@begin includes
#include "form2.h"
////@end includes
#include "form1.h"
#include <wx/stdpaths.h>
#include <wx/fileconf.h>
////@begin XPM images
#include "tsnsoft.xpm"
////@end XPM images
/*
* Form1 type definition
*/
IMPLEMENT_CLASS(Form1, wxFrame)
/*
* Form1 event table definition
*/
BEGIN_EVENT_TABLE(Form1, wxFrame)
////@begin Form1 event table entries
EVT_CLOSE(Form1::OnCloseWindow)
EVT_BUTTON(button1, Form1::OnButton1Click)
EVT_CHOICE(Choice_Lang, Form1::OnChoiceLangSelected)
EVT_BUTTON(ID_BUTTON, Form1::OnButtonClick)
////@end Form1 event table entries
END_EVENT_TABLE()
/*
* Form1 constructors
*/
Form1::Form1()
{
Init();
}
Form1::Form1(wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style)
{
Init();
Create(parent, id, caption, pos, size, style);
// --- Загрузить настройки из конфигурации и установить значения в визуальных компонентах ---
wxConfigBase* conf = wxConfigBase::Get(false); // Получить объект конфигурации приложения
if (conf) { // Если объект конфигурации приложения создан
wxString user_lang = (conf->Read(wxT("language"), wxT("en"))); // Прочитать значение языка из конфигурации
//wxChoice* cl = (wxChoice*)FindWindowById(Choice_Lang); // Найти компонент с выбором языка
if (cl) { // Если элемент найден
cl->SetStringSelection(user_lang); // Установить язык в компоненте
}
}
this->SetTitle(_("Multilingual program")); // Установить имя приложения на выбранном языке
// ---------------------------
}
/*
* Form1 creator
*/
bool Form1::Create(wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style)
{
////@begin Form1 creation
wxFrame::Create(parent, id, caption, pos, size, style);
CreateControls();
SetIcon(GetIconResource(wxT("tsnsoft.xpm")));
if (GetSizer())
{
GetSizer()->SetSizeHints(this);
}
Centre();
////@end Form1 creation
return true;
}
/*
* Form1 destructor
*/
Form1::~Form1()
{
////@begin Form1 destruction
////@end Form1 destruction
}
/*
* Member initialisation
*/
void Form1::Init()
{
////@begin Form1 member initialisation
cl = NULL;
////@end Form1 member initialisation
}
/*
* Control creation for Form1
*/
void Form1::CreateControls()
{
////@begin Form1 content construction
Form1* itemFrame1 = this;
wxBoxSizer* itemBoxSizer1 = new wxBoxSizer(wxVERTICAL);
itemFrame1->SetSizer(itemBoxSizer1);
wxButton* itemButton2 = new wxButton(itemFrame1, button1, _("Press me"), wxDefaultPosition, wxDefaultSize, 0);
itemBoxSizer1->Add(itemButton2, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5);
wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxHORIZONTAL);
itemBoxSizer1->Add(itemBoxSizer3, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5);
wxStaticText* itemStaticText4 = new wxStaticText(itemFrame1, StaticText1, _("Hello everyone, I'm a C++ program with wxWidgets!"), wxDefaultPosition, wxDefaultSize, 0);
itemBoxSizer3->Add(itemStaticText4, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
itemBoxSizer3->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
wxArrayString clStrings;
clStrings.Add(_("ru"));
clStrings.Add(_("en"));
clStrings.Add(_("de"));
clStrings.Add(_("ja"));
cl = new wxChoice(itemFrame1, Choice_Lang, wxDefaultPosition, wxDefaultSize, clStrings, 0);
cl->SetStringSelection(_("en"));
itemBoxSizer3->Add(cl, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
wxButton* itemButton1 = new wxButton(itemFrame1, ID_BUTTON, _("The Funny button"), wxDefaultPosition, wxDefaultSize, 0);
itemBoxSizer3->Add(itemButton1, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
////@end Form1 content construction
}
/*
* wxEVT_CLOSE_WINDOW event handler for form1
*/
void Form1::OnCloseWindow(wxCloseEvent& event)
{
// --- Сохранить настройки из визуальных компонент в конфигурацию ---
wxConfigBase* conf = wxConfigBase::Get(false); // Получить объект конфигурации приложения
if (!conf) return; // Если объект конфигурации приложения не создан, то выход
if (cl) { // Если компонент найден
conf->Write(wxT("language"), cl->GetStringSelection()); // Записать значение из компонента в конфигурацию
}
// ---------------------------
event.Skip(); // Закрыть окно
}
/*
* wxEVT_COMMAND_BUTTON_CLICKED event handler for button1
*/
void Form1::OnButton1Click(wxCommandEvent& event)
{
////@begin wxEVT_COMMAND_BUTTON_CLICKED event handler for button1 in Form1.
// Before editing this code, remove the block markers.
wxMessageBox(_("Hello"));
////@end wxEVT_COMMAND_BUTTON_CLICKED event handler for button1 in Form1.
}
/*
* wxEVT_COMMAND_CHOICE_SELECTED event handler for Choice_Lang
*/
void Form1::OnChoiceLangSelected(wxCommandEvent& event)
{
wxMessageBox(_("Restart the program")); // Выдать локализованное сообщение
}
/*
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON
*/
void Form1::OnButtonClick(wxCommandEvent& event)
{
////@begin wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON in Form1.
// Before editing this code, remove the block markers.
Form2* window = new Form2(this);
window->Show(true);
////@end wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON in Form1.
}
/*
* Should we show tooltips?
*/
bool Form1::ShowToolTips()
{
return true;
}
/*
* Get bitmap resources
*/
wxBitmap Form1::GetBitmapResource(const wxString& name)
{
// Bitmap retrieval
////@begin Form1 bitmap retrieval
wxUnusedVar(name);
return wxNullBitmap;
////@end Form1 bitmap retrieval
}
/*
* Get icon resources
*/
wxIcon Form1::GetIconResource(const wxString& name)
{
// Icon retrieval
////@begin Form1 icon retrieval
wxUnusedVar(name);
if (name == wxT("tsnsoft.xpm"))
{
wxIcon icon(tsnsoft_xpm);
return icon;
}
return wxNullIcon;
////@end Form1 icon retrieval
}