~showard314/ubuntu/natty/qtiplot/Python2.7_fix

« back to all changes in this revision

Viewing changes to qtiplot/src/SymbolDialog.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Gudjon I. Gudjonsson
  • Date: 2007-03-25 12:06:27 UTC
  • Revision ID: james.westby@ubuntu.com-20070325120627-5pvdufddr7i0r74x
Tags: upstream-0.9~rc2
ImportĀ upstreamĀ versionĀ 0.9~rc2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************************************************
 
2
    File                 : SymbolDialog.cpp
 
3
    Project              : QtiPlot
 
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
 
8
                           
 
9
 ***************************************************************************/
 
10
 
 
11
/***************************************************************************
 
12
 *                                                                         *
 
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.                                    *
 
17
 *                                                                         *
 
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.                           *
 
22
 *                                                                         *
 
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                                           *
 
27
 *                                                                         *
 
28
 ***************************************************************************/
 
29
#include "SymbolDialog.h"
 
30
#include <QPushButton>
 
31
#include <QSizePolicy>
 
32
#include <QGroupBox>
 
33
#include <QShortcut>
 
34
#include <QHBoxLayout>
 
35
#include <QButtonGroup>
 
36
 
 
37
SymbolDialog::SymbolDialog(CharSet charSet, QWidget* parent, Qt::WFlags fl )
 
38
: QDialog( parent, fl )
 
39
{
 
40
        setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed );
 
41
        setSizeGripEnabled( false );
 
42
 
 
43
        buttons = new QButtonGroup(this);
 
44
        mainLayout = new QVBoxLayout(this);
 
45
        gridLayout = new QGridLayout();
 
46
 
 
47
        if (charSet == SymbolDialog::lowerGreek)
 
48
                initLowerGreekChars();
 
49
        else if (charSet == SymbolDialog::upperGreek)
 
50
                initUpperGreekChars();
 
51
        else if (charSet == SymbolDialog::mathSymbols)
 
52
                initMathSymbols();
 
53
        else if (charSet == SymbolDialog::arrowSymbols)
 
54
                initArrowSymbols();
 
55
        else
 
56
                initNumberSymbols();
 
57
 
 
58
        closeButton = new QPushButton(tr("&Close"), this);
 
59
        
 
60
        mainLayout->addLayout( gridLayout );
 
61
        mainLayout->addWidget( closeButton );
 
62
 
 
63
        languageChange();
 
64
 
 
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()) );
 
70
 
 
71
}
 
72
 
 
73
void SymbolDialog::initLowerGreekChars()
 
74
{
 
75
        int i, counter = 0;
 
76
        for ( i=0 ; i <= (0x3C9-0x3B1) ; i++,counter++ )
 
77
        {
 
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);
 
84
        }
 
85
        for ( i=0 ; i <= (0x3D1-0x3D1) ; i++,counter++ )
 
86
        {
 
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);
 
93
        }
 
94
        for ( i=0 ; i <= (0x3D5-0x3D5) ; i++,counter++ )
 
95
        {
 
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);
 
102
        }
 
103
        for ( i=0 ; i <= (0x3F1-0x3F0) ; i++,counter++ )
 
104
        {
 
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);
 
111
        }
 
112
        numButtons = counter;
 
113
}
 
114
 
 
115
void SymbolDialog::initUpperGreekChars()
 
116
{
 
117
        int i, counter = 0;
 
118
        for ( i=0 ; i <= (0x3A1-0x391) ; i++,counter++ )
 
119
        {
 
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);
 
126
        }
 
127
        for ( i=0 ; i <= (0x3A9-0x3A3) ; i++,counter++ )
 
128
        {
 
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);
 
135
        }
 
136
        numButtons = counter;
 
137
}
 
138
 
 
139
void SymbolDialog::initNumberSymbols()
 
140
{
 
141
        int i, counter = 0;
 
142
        for ( i=0 ; i <= (0x216B-0x2153) ; i++,counter++ )
 
143
        {
 
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);
 
150
        }
 
151
        for ( i=0 ; i <= (0x217B-0x2170) ; i++,counter++ )
 
152
        {
 
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);
 
159
        }
 
160
        numButtons = counter;
 
161
}
 
162
 
 
163
void SymbolDialog::initMathSymbols()
 
164
{
 
165
        int i, counter = 0;
 
166
        for ( i=0 ; i <= (0x220D-0x2200) ; i++,counter++ )
 
167
        {
 
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);
 
174
        }
 
175
        for ( i=0 ; i <= (0x2211-0x220F) ; i++,counter++ )
 
176
        {
 
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);
 
183
        }
 
184
        for ( i=0 ; i <= (0x00B1-0x00B1) ; i++,counter++ )
 
185
        {
 
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);
 
192
        }
 
193
        for ( i=0 ; i <= (0x2213-0x2213) ; i++,counter++ )
 
194
        {
 
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);
 
201
        }
 
202
        for ( i=0 ; i <= (0x221E - 0x2217) ; i++,counter++ )
 
203
        {
 
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);
 
210
        }
 
211
        for ( i=0 ; i <= (0x2222-0x2222) ; i++,counter++ )
 
212
        {
 
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);
 
219
        }
 
220
        for ( i=0 ; i <= (0x2230-0x2227) ; i++,counter++ )
 
221
        {
 
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);
 
228
        }
 
229
        for ( i=0 ; i <= (0x223F-0x223F) ; i++,counter++ )
 
230
        {
 
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);
 
237
        }
 
238
        for ( i=0 ; i <= (0x2245-0x2245) ; i++,counter++ )
 
239
        {
 
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);
 
246
        }
 
247
        for ( i=0 ; i <= (0x2248-0x2248) ; i++,counter++ )
 
248
        {
 
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);
 
255
        }
 
256
        for ( i=0 ; i <= (0x2255-0x2254) ; i++,counter++ )
 
257
        {
 
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);
 
264
        }
 
265
        for ( i=0 ; i <= (0x2259-0x2259) ; i++,counter++ )
 
266
        {
 
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);
 
273
        }
 
274
        for ( i=0 ; i <= (0x2267-0x225F) ; i++,counter++ )
 
275
        {
 
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);
 
282
        }
 
283
        for ( i=0 ; i <= (0x226B-0x226A) ; i++,counter++ )
 
284
        {
 
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);
 
291
        }
 
292
        for ( i=0 ; i <= (0x2289-0x2282) ; i++,counter++ )
 
293
        {
 
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);
 
300
        }
 
301
        // h bar
 
302
        for ( i=0 ; i <= (0x210F-0x210F) ; i++,counter++ )
 
303
        {
 
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);
 
310
        }
 
311
        // angstrom
 
312
        for ( i=0 ; i <= (0x212B-0x212B) ; i++,counter++ )
 
313
        {
 
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);
 
320
        }
 
321
        numButtons = counter;
 
322
}
 
323
 
 
324
void SymbolDialog::initArrowSymbols()
 
325
{
 
326
        int i, counter = 0;
 
327
        for ( i=0 ; i <= (0x219B-0x2190) ; i++,counter++ )
 
328
        {
 
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);
 
335
        }
 
336
        for ( i=0 ; i <= (0x21A7-0x21A4) ; i++,counter++ )
 
337
        {
 
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);
 
344
        }
 
345
        for ( i=0 ; i <= (0x21D5-0x21CD) ; i++,counter++ )
 
346
        {
 
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);
 
353
        }
 
354
        for ( i=0 ; i <= (0x21E9-0x21E6) ; i++,counter++ )
 
355
        {
 
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);
 
362
        }
 
363
        numButtons = counter;
 
364
}
 
365
 
 
366
void SymbolDialog::addCurrentChar()
 
367
{
 
368
        for (int i=1; i < numButtons; i++)
 
369
        {
 
370
                QPushButton *btn = (QPushButton *) buttons->button(i);
 
371
                if (btn && btn->hasFocus())
 
372
                        emit addLetter(btn->text());
 
373
        }
 
374
}
 
375
 
 
376
void SymbolDialog::getChar(int btnIndex)
 
377
{
 
378
        QPushButton * btn = (QPushButton *)buttons->button( btnIndex );
 
379
        if(btn)
 
380
                emit addLetter(btn->text());
 
381
}
 
382
 
 
383
 
 
384
void SymbolDialog::languageChange()
 
385
{
 
386
        setWindowTitle( tr( "QtiPlot - Choose Symbol" ) );
 
387
}
 
388
 
 
389
 
 
390
SymbolDialog::~SymbolDialog()
 
391
{
 
392
}
 
393
 
 
394
 
 
395
void SymbolDialog::focusInEvent( QFocusEvent * event )
 
396
{
 
397
        Q_UNUSED(event)
 
398
        // select the first button as default (in case [return] is pressed)
 
399
        ((QPushButton *)buttons->button(1))->setFocus(Qt::TabFocusReason);
 
400
}