1
/***************************************************************************
2
File : SymbolDialog.cpp
4
--------------------------------------------------------------------
5
Copyright : (C) 2006 by Ion Vasilief, Tilman Hoener zu Siederdissen
6
Email (use @ for *) : ion_vasilief*yahoo.fr, thzs*gmx.net
7
Description : Tool window to select special text characters
9
***************************************************************************/
11
/***************************************************************************
13
* This program is free software; you can redistribute it and/or modify *
14
* it under the terms of the GNU General Public License as published by *
15
* the Free Software Foundation; either version 2 of the License, or *
16
* (at your option) any later version. *
18
* This program is distributed in the hope that it will be useful, *
19
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
20
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
21
* GNU General Public License for more details. *
23
* You should have received a copy of the GNU General Public License *
24
* along with this program; if not, write to the Free Software *
25
* Foundation, Inc., 51 Franklin Street, Fifth Floor, *
26
* Boston, MA 02110-1301 USA *
28
***************************************************************************/
29
#include "SymbolDialog.h"
30
#include <QPushButton>
31
#include <QSizePolicy>
34
#include <QHBoxLayout>
35
#include <QButtonGroup>
37
SymbolDialog::SymbolDialog(CharSet charSet, QWidget* parent, Qt::WFlags fl )
38
: QDialog( parent, fl )
40
setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed );
41
setSizeGripEnabled( false );
43
buttons = new QButtonGroup(this);
44
mainLayout = new QVBoxLayout(this);
45
gridLayout = new QGridLayout();
47
if (charSet == SymbolDialog::lowerGreek)
48
initLowerGreekChars();
49
else if (charSet == SymbolDialog::upperGreek)
50
initUpperGreekChars();
51
else if (charSet == SymbolDialog::mathSymbols)
53
else if (charSet == SymbolDialog::arrowSymbols)
58
closeButton = new QPushButton(tr("&Close"), this);
60
mainLayout->addLayout( gridLayout );
61
mainLayout->addWidget( closeButton );
65
connect(buttons, SIGNAL(buttonClicked(int)), this, SLOT(getChar(int)));
66
connect(closeButton, SIGNAL(clicked()), this, SLOT(close()));
67
QShortcut *shortcut = new QShortcut(Qt::Key_Return, this);
68
connect( shortcut , SIGNAL(activated()),
69
this, SLOT(addCurrentChar()) );
73
void SymbolDialog::initLowerGreekChars()
76
for ( i=0 ; i <= (0x3C9-0x3B1) ; i++,counter++ )
78
QPushButton *btn = new QPushButton(QString(QChar(i+0x3B1)));
79
btn->setMaximumWidth(40);
80
btn->setFlat ( true );
81
btn->setAutoDefault (false);
82
buttons->addButton(btn,counter+1);
83
gridLayout->addWidget(btn,counter/5,counter%5);
85
for ( i=0 ; i <= (0x3D1-0x3D1) ; i++,counter++ )
87
QPushButton *btn = new QPushButton(QString(QChar(i+0x3D1)));
88
btn->setMaximumWidth(40);
89
btn->setFlat ( true );
90
btn->setAutoDefault (false);
91
buttons->addButton(btn,counter+1);
92
gridLayout->addWidget(btn,counter/5,counter%5);
94
for ( i=0 ; i <= (0x3D5-0x3D5) ; i++,counter++ )
96
QPushButton *btn = new QPushButton(QString(QChar(i+0x3D5)));
97
btn->setMaximumWidth(40);
98
btn->setFlat ( true );
99
btn->setAutoDefault (false);
100
buttons->addButton(btn,counter+1);
101
gridLayout->addWidget(btn,counter/5,counter%5);
103
for ( i=0 ; i <= (0x3F1-0x3F0) ; i++,counter++ )
105
QPushButton *btn = new QPushButton(QString(QChar(i+0x3F0)));
106
btn->setMaximumWidth(40);
107
btn->setFlat ( true );
108
btn->setAutoDefault (false);
109
buttons->addButton(btn,counter+1);
110
gridLayout->addWidget(btn,counter/5,counter%5);
112
numButtons = counter;
115
void SymbolDialog::initUpperGreekChars()
118
for ( i=0 ; i <= (0x3A1-0x391) ; i++,counter++ )
120
QPushButton *btn = new QPushButton(QString(QChar(i+0x391)));
121
btn->setMaximumWidth(40);
122
btn->setFlat ( true );
123
btn->setAutoDefault (false);
124
buttons->addButton(btn,counter+1);
125
gridLayout->addWidget(btn,counter/5,counter%5);
127
for ( i=0 ; i <= (0x3A9-0x3A3) ; i++,counter++ )
129
QPushButton *btn = new QPushButton(QString(QChar(i+0x3A3)));
130
btn->setMaximumWidth(40);
131
btn->setFlat ( true );
132
btn->setAutoDefault (false);
133
buttons->addButton(btn,counter+1);
134
gridLayout->addWidget(btn,counter/5,counter%5);
136
numButtons = counter;
139
void SymbolDialog::initNumberSymbols()
142
for ( i=0 ; i <= (0x216B-0x2153) ; i++,counter++ )
144
QPushButton *btn = new QPushButton(QString(QChar(i+0x2153)));
145
btn->setMaximumWidth(40);
146
btn->setFlat ( true );
147
btn->setAutoDefault (false);
148
buttons->addButton(btn,counter+1);
149
gridLayout->addWidget(btn,counter/8,counter%8);
151
for ( i=0 ; i <= (0x217B-0x2170) ; i++,counter++ )
153
QPushButton *btn = new QPushButton(QString(QChar(i+0x2170)));
154
btn->setMaximumWidth(40);
155
btn->setFlat ( true );
156
btn->setAutoDefault (false);
157
buttons->addButton(btn,counter+1);
158
gridLayout->addWidget(btn,counter/8,counter%8);
160
numButtons = counter;
163
void SymbolDialog::initMathSymbols()
166
for ( i=0 ; i <= (0x220D-0x2200) ; i++,counter++ )
168
QPushButton *btn = new QPushButton(QString(QChar(i+0x2200)));
169
btn->setMaximumWidth(40);
170
btn->setFlat ( true );
171
btn->setAutoDefault (false);
172
buttons->addButton(btn,counter+1);
173
gridLayout->addWidget(btn,counter/8,counter%8);
175
for ( i=0 ; i <= (0x2211-0x220F) ; i++,counter++ )
177
QPushButton *btn = new QPushButton(QString(QChar(i+0x220F)));
178
btn->setMaximumWidth(40);
179
btn->setFlat ( true );
180
btn->setAutoDefault (false);
181
buttons->addButton(btn,counter+1);
182
gridLayout->addWidget(btn,counter/8,counter%8);
184
for ( i=0 ; i <= (0x00B1-0x00B1) ; i++,counter++ )
186
QPushButton *btn = new QPushButton(QString(QChar(i+0x00B1)));
187
btn->setMaximumWidth(40);
188
btn->setFlat ( true );
189
btn->setAutoDefault (false);
190
buttons->addButton(btn,counter+1);
191
gridLayout->addWidget(btn,counter/8,counter%8);
193
for ( i=0 ; i <= (0x2213-0x2213) ; i++,counter++ )
195
QPushButton *btn = new QPushButton(QString(QChar(i+0x2213)));
196
btn->setMaximumWidth(40);
197
btn->setFlat ( true );
198
btn->setAutoDefault (false);
199
buttons->addButton(btn,counter+1);
200
gridLayout->addWidget(btn,counter/8,counter%8);
202
for ( i=0 ; i <= (0x221E - 0x2217) ; i++,counter++ )
204
QPushButton *btn = new QPushButton(QString(QChar(i+0x2217)));
205
btn->setMaximumWidth(40);
206
btn->setFlat ( true );
207
btn->setAutoDefault (false);
208
buttons->addButton(btn,counter+1);
209
gridLayout->addWidget(btn,counter/8,counter%8);
211
for ( i=0 ; i <= (0x2222-0x2222) ; i++,counter++ )
213
QPushButton *btn = new QPushButton(QString(QChar(i+0x2222)));
214
btn->setMaximumWidth(40);
215
btn->setFlat ( true );
216
btn->setAutoDefault (false);
217
buttons->addButton(btn,counter+1);
218
gridLayout->addWidget(btn,counter/8,counter%8);
220
for ( i=0 ; i <= (0x2230-0x2227) ; i++,counter++ )
222
QPushButton *btn = new QPushButton(QString(QChar(i+0x2227)));
223
btn->setMaximumWidth(40);
224
btn->setFlat ( true );
225
btn->setAutoDefault (false);
226
buttons->addButton(btn,counter+1);
227
gridLayout->addWidget(btn,counter/8,counter%8);
229
for ( i=0 ; i <= (0x223F-0x223F) ; i++,counter++ )
231
QPushButton *btn = new QPushButton(QString(QChar(i+0x223F)));
232
btn->setMaximumWidth(40);
233
btn->setFlat ( true );
234
btn->setAutoDefault (false);
235
buttons->addButton(btn,counter+1);
236
gridLayout->addWidget(btn,counter/8,counter%8);
238
for ( i=0 ; i <= (0x2245-0x2245) ; i++,counter++ )
240
QPushButton *btn = new QPushButton(QString(QChar(i+0x2245)));
241
btn->setMaximumWidth(40);
242
btn->setFlat ( true );
243
btn->setAutoDefault (false);
244
buttons->addButton(btn,counter+1);
245
gridLayout->addWidget(btn,counter/8,counter%8);
247
for ( i=0 ; i <= (0x2248-0x2248) ; i++,counter++ )
249
QPushButton *btn = new QPushButton(QString(QChar(i+0x2248)));
250
btn->setMaximumWidth(40);
251
btn->setFlat ( true );
252
btn->setAutoDefault (false);
253
buttons->addButton(btn,counter+1);
254
gridLayout->addWidget(btn,counter/8,counter%8);
256
for ( i=0 ; i <= (0x2255-0x2254) ; i++,counter++ )
258
QPushButton *btn = new QPushButton(QString(QChar(i+0x2254)));
259
btn->setMaximumWidth(40);
260
btn->setFlat ( true );
261
btn->setAutoDefault (false);
262
buttons->addButton(btn,counter+1);
263
gridLayout->addWidget(btn,counter/8,counter%8);
265
for ( i=0 ; i <= (0x2259-0x2259) ; i++,counter++ )
267
QPushButton *btn = new QPushButton(QString(QChar(i+0x2259)));
268
btn->setMaximumWidth(40);
269
btn->setFlat ( true );
270
btn->setAutoDefault (false);
271
buttons->addButton(btn,counter+1);
272
gridLayout->addWidget(btn,counter/8,counter%8);
274
for ( i=0 ; i <= (0x2267-0x225F) ; i++,counter++ )
276
QPushButton *btn = new QPushButton(QString(QChar(i+0x225F)));
277
btn->setMaximumWidth(40);
278
btn->setFlat ( true );
279
btn->setAutoDefault (false);
280
buttons->addButton(btn,counter+1);
281
gridLayout->addWidget(btn,counter/8,counter%8);
283
for ( i=0 ; i <= (0x226B-0x226A) ; i++,counter++ )
285
QPushButton *btn = new QPushButton(QString(QChar(i+0x226A)));
286
btn->setMaximumWidth(40);
287
btn->setFlat ( true );
288
btn->setAutoDefault (false);
289
buttons->addButton(btn,counter+1);
290
gridLayout->addWidget(btn,counter/8,counter%8);
292
for ( i=0 ; i <= (0x2289-0x2282) ; i++,counter++ )
294
QPushButton *btn = new QPushButton(QString(QChar(i+0x2282)));
295
btn->setMaximumWidth(40);
296
btn->setFlat ( true );
297
btn->setAutoDefault (false);
298
buttons->addButton(btn,counter+1);
299
gridLayout->addWidget(btn,counter/8,counter%8);
302
for ( i=0 ; i <= (0x210F-0x210F) ; i++,counter++ )
304
QPushButton *btn = new QPushButton(QString(QChar(i+0x210F)));
305
btn->setMaximumWidth(40);
306
btn->setFlat ( true );
307
btn->setAutoDefault (false);
308
buttons->addButton(btn,counter+1);
309
gridLayout->addWidget(btn,counter/8,counter%8);
312
for ( i=0 ; i <= (0x212B-0x212B) ; i++,counter++ )
314
QPushButton *btn = new QPushButton(QString(QChar(i+0x212B)));
315
btn->setMaximumWidth(40);
316
btn->setFlat ( true );
317
btn->setAutoDefault (false);
318
buttons->addButton(btn,counter+1);
319
gridLayout->addWidget(btn,counter/8,counter%8);
321
numButtons = counter;
324
void SymbolDialog::initArrowSymbols()
327
for ( i=0 ; i <= (0x219B-0x2190) ; i++,counter++ )
329
QPushButton *btn = new QPushButton(QString(QChar(i+0x2190)));
330
btn->setMaximumWidth(40);
331
btn->setFlat ( true );
332
btn->setAutoDefault (false);
333
buttons->addButton(btn,counter+1);
334
gridLayout->addWidget(btn,counter/6,counter%6);
336
for ( i=0 ; i <= (0x21A7-0x21A4) ; i++,counter++ )
338
QPushButton *btn = new QPushButton(QString(QChar(i+0x21A4)));
339
btn->setMaximumWidth(40);
340
btn->setFlat ( true );
341
btn->setAutoDefault (false);
342
buttons->addButton(btn,counter+1);
343
gridLayout->addWidget(btn,counter/6,counter%6);
345
for ( i=0 ; i <= (0x21D5-0x21CD) ; i++,counter++ )
347
QPushButton *btn = new QPushButton(QString(QChar(i+0x21CD)));
348
btn->setMaximumWidth(40);
349
btn->setFlat ( true );
350
btn->setAutoDefault (false);
351
buttons->addButton(btn,counter+1);
352
gridLayout->addWidget(btn,counter/6,counter%6);
354
for ( i=0 ; i <= (0x21E9-0x21E6) ; i++,counter++ )
356
QPushButton *btn = new QPushButton(QString(QChar(i+0x21E6)));
357
btn->setMaximumWidth(40);
358
btn->setFlat ( true );
359
btn->setAutoDefault (false);
360
buttons->addButton(btn,counter+1);
361
gridLayout->addWidget(btn,counter/6,counter%6);
363
numButtons = counter;
366
void SymbolDialog::addCurrentChar()
368
for (int i=1; i < numButtons; i++)
370
QPushButton *btn = (QPushButton *) buttons->button(i);
371
if (btn && btn->hasFocus())
372
emit addLetter(btn->text());
376
void SymbolDialog::getChar(int btnIndex)
378
QPushButton * btn = (QPushButton *)buttons->button( btnIndex );
380
emit addLetter(btn->text());
384
void SymbolDialog::languageChange()
386
setWindowTitle( tr( "QtiPlot - Choose Symbol" ) );
390
SymbolDialog::~SymbolDialog()
395
void SymbolDialog::focusInEvent( QFocusEvent * event )
398
// select the first button as default (in case [return] is pressed)
399
((QPushButton *)buttons->button(1))->setFocus(Qt::TabFocusReason);