author | brad <brad> | 2004-03-21 12:42:10 (UTC) |
---|---|---|
committer | brad <brad> | 2004-03-21 12:42:10 (UTC) |
commit | de722623b49574659f6ef5b065076cb1609f81dd (patch) (unidiff) | |
tree | 0d2ca78cfe42c71787a3e160b245285e18d900d3 /inputmethods | |
parent | 2560326d09f90f0afce24577cafbfd4c1f5e4b23 (diff) | |
download | opie-de722623b49574659f6ef5b065076cb1609f81dd.zip opie-de722623b49574659f6ef5b065076cb1609f81dd.tar.gz opie-de722623b49574659f6ef5b065076cb1609f81dd.tar.bz2 |
Fixes for graffiti handling. Contains a dirty hack that will be rectified when I commit the Graffiti charset.
-rw-r--r-- | inputmethods/handwriting/qimpenchar.h | 2 | ||||
-rw-r--r-- | inputmethods/handwriting/qimpenprofile.cpp | 3 | ||||
-rw-r--r-- | inputmethods/handwriting/qimpensetup.cpp | 17 | ||||
-rw-r--r-- | inputmethods/handwriting/qimpensetup.h | 1 |
4 files changed, 19 insertions, 4 deletions
diff --git a/inputmethods/handwriting/qimpenchar.h b/inputmethods/handwriting/qimpenchar.h index e4e7645..92ee2c1 100644 --- a/inputmethods/handwriting/qimpenchar.h +++ b/inputmethods/handwriting/qimpenchar.h | |||
@@ -88,65 +88,65 @@ QDataStream & operator>> (QDataStream & s, QIMPenChar &ws); | |||
88 | struct QIMPenCharMatch | 88 | struct QIMPenCharMatch |
89 | { | 89 | { |
90 | int error; | 90 | int error; |
91 | QIMPenChar *penChar; | 91 | QIMPenChar *penChar; |
92 | 92 | ||
93 | bool operator>( const QIMPenCharMatch &m ); | 93 | bool operator>( const QIMPenCharMatch &m ); |
94 | bool operator<( const QIMPenCharMatch &m ); | 94 | bool operator<( const QIMPenCharMatch &m ); |
95 | bool operator<=( const QIMPenCharMatch &m ); | 95 | bool operator<=( const QIMPenCharMatch &m ); |
96 | }; | 96 | }; |
97 | 97 | ||
98 | typedef QValueList<QIMPenCharMatch> QIMPenCharMatchList; | 98 | typedef QValueList<QIMPenCharMatch> QIMPenCharMatchList; |
99 | 99 | ||
100 | 100 | ||
101 | class QIMPenCharSet | 101 | class QIMPenCharSet |
102 | { | 102 | { |
103 | public: | 103 | public: |
104 | QIMPenCharSet(); | 104 | QIMPenCharSet(); |
105 | QIMPenCharSet( const QString &fn ); | 105 | QIMPenCharSet( const QString &fn ); |
106 | 106 | ||
107 | bool isEmpty() const { return chars.isEmpty(); } | 107 | bool isEmpty() const { return chars.isEmpty(); } |
108 | unsigned int count() const { return chars.count(); } | 108 | unsigned int count() const { return chars.count(); } |
109 | void clear() { chars.clear(); } | 109 | void clear() { chars.clear(); } |
110 | 110 | ||
111 | void setDescription( const QString &d ) { desc = d; } | 111 | void setDescription( const QString &d ) { desc = d; } |
112 | QString description() const { return desc; } | 112 | QString description() const { return desc; } |
113 | void setTitle( const QString &t ) { csTitle = t; } | 113 | void setTitle( const QString &t ) { csTitle = t; } |
114 | QString title() const { return csTitle; } | 114 | QString title() const { return csTitle; } |
115 | 115 | ||
116 | QIMPenCharMatchList match( QIMPenChar *ch ); | 116 | QIMPenCharMatchList match( QIMPenChar *ch ); |
117 | void addChar( QIMPenChar *ch ); | 117 | void addChar( QIMPenChar *ch ); |
118 | void removeChar( QIMPenChar *ch ); | 118 | void removeChar( QIMPenChar *ch ); |
119 | QIMPenChar *at( int i ); | 119 | QIMPenChar *at( int i ); |
120 | void setHidden ( const bool &b ) { phidden = &b; } | 120 | void setHidden ( const bool &b ) { phidden = b; } |
121 | bool hidden() const { return phidden; } | 121 | bool hidden() const { return phidden; } |
122 | 122 | ||
123 | unsigned maximumStrokes() const { return maxStrokes; } | 123 | unsigned maximumStrokes() const { return maxStrokes; } |
124 | 124 | ||
125 | void up( QIMPenChar *ch ); | 125 | void up( QIMPenChar *ch ); |
126 | void down( QIMPenChar *ch ); | 126 | void down( QIMPenChar *ch ); |
127 | 127 | ||
128 | enum Domain { System, User }; | 128 | enum Domain { System, User }; |
129 | enum Type { Unknown=0x00, Lower=0x01, Upper=0x02, Combining=0x04, | 129 | enum Type { Unknown=0x00, Lower=0x01, Upper=0x02, Combining=0x04, |
130 | Numeric=0x08, Punctuation=0x10, Symbol=0x20, Shortcut=0x40 }; | 130 | Numeric=0x08, Punctuation=0x10, Symbol=0x20, Shortcut=0x40 }; |
131 | 131 | ||
132 | const QIMPenCharList &characters() const { return chars; } | 132 | const QIMPenCharList &characters() const { return chars; } |
133 | 133 | ||
134 | void setType( Type t ) { csType = t; } | 134 | void setType( Type t ) { csType = t; } |
135 | Type type() const { return csType; } | 135 | Type type() const { return csType; } |
136 | 136 | ||
137 | const QString &filename( Domain d ) const; | 137 | const QString &filename( Domain d ) const; |
138 | void setFilename( const QString &fn, Domain d=System ); | 138 | void setFilename( const QString &fn, Domain d=System ); |
139 | bool load( const QString &fn, Domain d=System ); | 139 | bool load( const QString &fn, Domain d=System ); |
140 | bool save( Domain d=System ); | 140 | bool save( Domain d=System ); |
141 | 141 | ||
142 | protected: | 142 | protected: |
143 | void markDeleted( uint ch ); | 143 | void markDeleted( uint ch ); |
144 | 144 | ||
145 | protected: | 145 | protected: |
146 | QString csTitle; | 146 | QString csTitle; |
147 | QString desc; | 147 | QString desc; |
148 | QString sysFilename; | 148 | QString sysFilename; |
149 | QString userFilename; | 149 | QString userFilename; |
150 | Type csType; | 150 | Type csType; |
151 | unsigned maxStrokes; | 151 | unsigned maxStrokes; |
152 | QIMPenCharList chars; | 152 | QIMPenCharList chars; |
diff --git a/inputmethods/handwriting/qimpenprofile.cpp b/inputmethods/handwriting/qimpenprofile.cpp index b1a6592..67343c3 100644 --- a/inputmethods/handwriting/qimpenprofile.cpp +++ b/inputmethods/handwriting/qimpenprofile.cpp | |||
@@ -113,81 +113,84 @@ void QIMPenProfile::loadData() | |||
113 | QIMPenCombining *combining = 0; | 113 | QIMPenCombining *combining = 0; |
114 | QString s = config.readEntry( "Combining" ); | 114 | QString s = config.readEntry( "Combining" ); |
115 | if ( !s.isEmpty() ) { | 115 | if ( !s.isEmpty() ) { |
116 | combining = new QIMPenCombining( baseDir + "qimpen/" + s ); | 116 | combining = new QIMPenCombining( baseDir + "qimpen/" + s ); |
117 | if ( combining->isEmpty() ) { | 117 | if ( combining->isEmpty() ) { |
118 | delete combining; | 118 | delete combining; |
119 | combining = 0; | 119 | combining = 0; |
120 | } | 120 | } |
121 | } | 121 | } |
122 | // uppercase latin1 | 122 | // uppercase latin1 |
123 | QIMPenCharSet *cs = 0; | 123 | QIMPenCharSet *cs = 0; |
124 | s = config.readEntry( "Uppercase" ); | 124 | s = config.readEntry( "Uppercase" ); |
125 | if ( !s.isEmpty() && !mono() ) { | 125 | if ( !s.isEmpty() && !mono() ) { |
126 | cs = new QIMPenCharSet( baseDir + "qimpen/" + s ); | 126 | cs = new QIMPenCharSet( baseDir + "qimpen/" + s ); |
127 | cs->load( Global::applicationFileName("qimpen",s), QIMPenCharSet::User ); | 127 | cs->load( Global::applicationFileName("qimpen",s), QIMPenCharSet::User ); |
128 | if ( !cs->isEmpty() ) { | 128 | if ( !cs->isEmpty() ) { |
129 | if ( combining ) | 129 | if ( combining ) |
130 | combining->addCombined( cs ); | 130 | combining->addCombined( cs ); |
131 | sets.append( cs ); | 131 | sets.append( cs ); |
132 | } else { | 132 | } else { |
133 | delete cs; | 133 | delete cs; |
134 | } | 134 | } |
135 | } | 135 | } |
136 | // lowercase latin1 | 136 | // lowercase latin1 |
137 | s = config.readEntry( "Lowercase" ); | 137 | s = config.readEntry( "Lowercase" ); |
138 | if ( !s.isEmpty() ) { | 138 | if ( !s.isEmpty() ) { |
139 | if ( mono() ) { | 139 | if ( mono() ) { |
140 | cs = new QIMPenCharSet ( baseDir + "qimpen/" + s ); | 140 | cs = new QIMPenCharSet ( baseDir + "qimpen/" + s ); |
141 | cs->load( Global::applicationFileName("qimpen",s), QIMPenCharSet::User ); | 141 | cs->load( Global::applicationFileName("qimpen",s), QIMPenCharSet::User ); |
142 | if ( !cs->isEmpty() ) { | 142 | if ( !cs->isEmpty() ) { |
143 | cs->setTitle( cs->title().upper() ); | 143 | cs->setTitle( cs->title().upper() ); |
144 | cs->setType( QIMPenCharSet::Upper ); | 144 | cs->setType( QIMPenCharSet::Upper ); |
145 | cs->setDescription( "Hidden uppercase" ); | ||
145 | cs->setHidden ( true ); | 146 | cs->setHidden ( true ); |
146 | QIMPenCharIterator it( cs->characters() ); | 147 | QIMPenCharIterator it( cs->characters() ); |
147 | for ( ; it.current(); ++it ) { | 148 | for ( ; it.current(); ++it ) { |
148 | uint ch = it.current()->character(); | 149 | uint ch = it.current()->character(); |
149 | if ( ch >= 'a' && ch <= 'z' ) | 150 | if ( ch >= 'a' && ch <= 'z' ) |
150 | it.current()->setCharacter( QChar(ch).upper() ); | 151 | it.current()->setCharacter( QChar(ch).upper() ); |
151 | } | 152 | } |
152 | if ( combining ) | 153 | if ( combining ) |
153 | combining->addCombined( cs ); | 154 | combining->addCombined( cs ); |
154 | sets.append( cs ); | 155 | sets.append( cs ); |
155 | } else { | 156 | } else { |
156 | delete cs; | 157 | delete cs; |
157 | } | 158 | } |
158 | } | 159 | } |
159 | cs = new QIMPenCharSet( baseDir + "qimpen/" + s ); | 160 | cs = new QIMPenCharSet( baseDir + "qimpen/" + s ); |
160 | cs->load( Global::applicationFileName("qimpen",s), QIMPenCharSet::User ); | 161 | cs->load( Global::applicationFileName("qimpen",s), QIMPenCharSet::User ); |
161 | if ( !cs->isEmpty() ) { | 162 | if ( !cs->isEmpty() ) { |
163 | if ( mono () ) | ||
164 | cs->setDescription( "Latin Characters" ); | ||
162 | if ( combining ) | 165 | if ( combining ) |
163 | combining->addCombined( cs ); | 166 | combining->addCombined( cs ); |
164 | sets.append( cs ); | 167 | sets.append( cs ); |
165 | } else { | 168 | } else { |
166 | delete cs; | 169 | delete cs; |
167 | } | 170 | } |
168 | } | 171 | } |
169 | // numeric (may comtain punctuation and symbols) | 172 | // numeric (may comtain punctuation and symbols) |
170 | s = config.readEntry( "Numeric" ); | 173 | s = config.readEntry( "Numeric" ); |
171 | if ( !s.isEmpty() ) { | 174 | if ( !s.isEmpty() ) { |
172 | cs = new QIMPenCharSet( baseDir + "qimpen/" + s ); | 175 | cs = new QIMPenCharSet( baseDir + "qimpen/" + s ); |
173 | cs->load( Global::applicationFileName("qimpen",s), QIMPenCharSet::User ); | 176 | cs->load( Global::applicationFileName("qimpen",s), QIMPenCharSet::User ); |
174 | if ( !cs->isEmpty() ) { | 177 | if ( !cs->isEmpty() ) { |
175 | sets.append( cs ); | 178 | sets.append( cs ); |
176 | } else { | 179 | } else { |
177 | delete cs; | 180 | delete cs; |
178 | } | 181 | } |
179 | } | 182 | } |
180 | // punctuation | 183 | // punctuation |
181 | s = config.readEntry( "Punctuation" ); | 184 | s = config.readEntry( "Punctuation" ); |
182 | if ( !s.isEmpty() ) { | 185 | if ( !s.isEmpty() ) { |
183 | cs = new QIMPenCharSet( baseDir + "qimpen/" + s ); | 186 | cs = new QIMPenCharSet( baseDir + "qimpen/" + s ); |
184 | cs->load( Global::applicationFileName("qimpen",s), QIMPenCharSet::User ); | 187 | cs->load( Global::applicationFileName("qimpen",s), QIMPenCharSet::User ); |
185 | if ( !cs->isEmpty() ) { | 188 | if ( !cs->isEmpty() ) { |
186 | sets.append( cs ); | 189 | sets.append( cs ); |
187 | } else { | 190 | } else { |
188 | delete cs; | 191 | delete cs; |
189 | } | 192 | } |
190 | } | 193 | } |
191 | // symbol | 194 | // symbol |
192 | s = config.readEntry( "Symbol" ); | 195 | s = config.readEntry( "Symbol" ); |
193 | if ( !s.isEmpty() ) { | 196 | if ( !s.isEmpty() ) { |
diff --git a/inputmethods/handwriting/qimpensetup.cpp b/inputmethods/handwriting/qimpensetup.cpp index d1297a9..3f4841d 100644 --- a/inputmethods/handwriting/qimpensetup.cpp +++ b/inputmethods/handwriting/qimpensetup.cpp | |||
@@ -297,143 +297,143 @@ public: | |||
297 | } | 297 | } |
298 | 298 | ||
299 | uint code() const { return _code; } | 299 | uint code() const { return _code; } |
300 | 300 | ||
301 | protected: | 301 | protected: |
302 | uint _code; | 302 | uint _code; |
303 | }; | 303 | }; |
304 | 304 | ||
305 | /*! | 305 | /*! |
306 | \class QIMPenEdit qimpensetup.h | 306 | \class QIMPenEdit qimpensetup.h |
307 | 307 | ||
308 | Class to allow users to input totally useless character definitions | 308 | Class to allow users to input totally useless character definitions |
309 | which could match any number of the default set. | 309 | which could match any number of the default set. |
310 | */ | 310 | */ |
311 | 311 | ||
312 | QIMPenEdit::QIMPenEdit( QIMPenProfile *p, QWidget *parent, | 312 | QIMPenEdit::QIMPenEdit( QIMPenProfile *p, QWidget *parent, |
313 | const char *name ) | 313 | const char *name ) |
314 | : QWidget( parent, name ), profile(p) | 314 | : QWidget( parent, name ), profile(p) |
315 | { | 315 | { |
316 | currentChar = 0; | 316 | currentChar = 0; |
317 | currentCode = 0; | 317 | currentCode = 0; |
318 | inputChar = new QIMPenChar(); | 318 | inputChar = new QIMPenChar(); |
319 | 319 | ||
320 | QVBoxLayout *tvb = new QVBoxLayout( this, 5 ); | 320 | QVBoxLayout *tvb = new QVBoxLayout( this, 5 ); |
321 | 321 | ||
322 | QGridLayout *gl = new QGridLayout( tvb, 4, 2 ); | 322 | QGridLayout *gl = new QGridLayout( tvb, 4, 2 ); |
323 | gl->setRowStretch( 1, 1 ); | 323 | gl->setRowStretch( 1, 1 ); |
324 | gl->addRowSpacing( 2, 35 ); | 324 | gl->addRowSpacing( 2, 35 ); |
325 | gl->addRowSpacing( 3, 35 ); | 325 | gl->addRowSpacing( 3, 35 ); |
326 | 326 | ||
327 | charSetCombo = new QComboBox( this ); | 327 | charSetCombo = new QComboBox( this ); |
328 | gl->addMultiCellWidget( charSetCombo, 0, 0, 0, 1 ); | 328 | gl->addMultiCellWidget( charSetCombo, 0, 0, 0, 1 ); |
329 | connect( charSetCombo, SIGNAL(activated(int)), SLOT(selectCharSet(int))); | 329 | connect( charSetCombo, SIGNAL(activated(int)), SLOT(selectCharSetVisible(int))); |
330 | QIMPenCharSetIterator it( profile->charSets() ); | 330 | QIMPenCharSetIterator it( profile->charSets() ); |
331 | for ( ; it.current(); ++it ) { | 331 | for ( ; it.current(); ++it ) { |
332 | charSetCombo->insertItem( it.current()->description() ); | 332 | charSetCombo->insertItem( it.current()->description() ); |
333 | } | 333 | } |
334 | 334 | ||
335 | charList = new QListBox( this ); | 335 | charList = new QListBox( this ); |
336 | charList->setMinimumHeight( charList->sizeHint().height() ); | 336 | charList->setMinimumHeight( charList->sizeHint().height() ); |
337 | connect( charList, SIGNAL(highlighted(int)), SLOT(selectChar(int)) ); | 337 | connect( charList, SIGNAL(highlighted(int)), SLOT(selectChar(int)) ); |
338 | gl->addWidget( charList, 1, 0 ); | 338 | gl->addWidget( charList, 1, 0 ); |
339 | 339 | ||
340 | pw = new QIMPenWidget( this ); | 340 | pw = new QIMPenWidget( this ); |
341 | pw->setFixedHeight( 75 ); | 341 | pw->setFixedHeight( 75 ); |
342 | gl->addMultiCellWidget( pw, 2, 3, 0, 0 ); | 342 | gl->addMultiCellWidget( pw, 2, 3, 0, 0 ); |
343 | connect( pw, SIGNAL(stroke(QIMPenStroke*)), | 343 | connect( pw, SIGNAL(stroke(QIMPenStroke*)), |
344 | SLOT(newStroke(QIMPenStroke*)) ); | 344 | SLOT(newStroke(QIMPenStroke*)) ); |
345 | 345 | ||
346 | QVBoxLayout *vb = new QVBoxLayout(); | 346 | QVBoxLayout *vb = new QVBoxLayout(); |
347 | gl->addLayout( vb, 1, 1 ); | 347 | gl->addLayout( vb, 1, 1 ); |
348 | newBtn = new QPushButton( tr("New..."), this ); | 348 | newBtn = new QPushButton( tr("New..."), this ); |
349 | connect( newBtn, SIGNAL(clicked()), SLOT(addNewChar()) ); | 349 | connect( newBtn, SIGNAL(clicked()), SLOT(addNewChar()) ); |
350 | vb->addWidget( newBtn ); | 350 | vb->addWidget( newBtn ); |
351 | 351 | ||
352 | addBtn = new QPushButton( tr("Add"), this ); | 352 | addBtn = new QPushButton( tr("Add"), this ); |
353 | connect( addBtn, SIGNAL(clicked()), SLOT(addChar()) ); | 353 | connect( addBtn, SIGNAL(clicked()), SLOT(addChar()) ); |
354 | vb->addWidget( addBtn ); | 354 | vb->addWidget( addBtn ); |
355 | 355 | ||
356 | removeBtn = new QPushButton( tr("Remove"), this ); | 356 | removeBtn = new QPushButton( tr("Remove"), this ); |
357 | connect( removeBtn, SIGNAL(clicked()), SLOT(removeChar()) ); | 357 | connect( removeBtn, SIGNAL(clicked()), SLOT(removeChar()) ); |
358 | vb->addWidget( removeBtn ); | 358 | vb->addWidget( removeBtn ); |
359 | 359 | ||
360 | QPushButton *pb = new QPushButton( tr("Default"), this ); | 360 | QPushButton *pb = new QPushButton( tr("Default"), this ); |
361 | connect( pb, SIGNAL(clicked()), SLOT(defaultChars()) ); | 361 | connect( pb, SIGNAL(clicked()), SLOT(defaultChars()) ); |
362 | vb->addWidget( pb ); | 362 | vb->addWidget( pb ); |
363 | 363 | ||
364 | QHBoxLayout *hb = new QHBoxLayout(); | 364 | QHBoxLayout *hb = new QHBoxLayout(); |
365 | gl->addLayout( hb, 2, 1 ); | 365 | gl->addLayout( hb, 2, 1 ); |
366 | prevBtn = new QPushButton( this ); | 366 | prevBtn = new QPushButton( this ); |
367 | prevBtn->setPixmap( QPixmap( (const char **)left_xpm ) ); | 367 | prevBtn->setPixmap( QPixmap( (const char **)left_xpm ) ); |
368 | connect( prevBtn, SIGNAL(clicked()), SLOT(prevChar())); | 368 | connect( prevBtn, SIGNAL(clicked()), SLOT(prevChar())); |
369 | hb->addWidget( prevBtn ); | 369 | hb->addWidget( prevBtn ); |
370 | 370 | ||
371 | nextBtn = new QPushButton( this ); | 371 | nextBtn = new QPushButton( this ); |
372 | nextBtn->setPixmap( QPixmap( (const char **)right_xpm ) ); | 372 | nextBtn->setPixmap( QPixmap( (const char **)right_xpm ) ); |
373 | connect( nextBtn, SIGNAL(clicked()), SLOT(nextChar())); | 373 | connect( nextBtn, SIGNAL(clicked()), SLOT(nextChar())); |
374 | hb->addWidget( nextBtn ); | 374 | hb->addWidget( nextBtn ); |
375 | 375 | ||
376 | pb = new QPushButton( tr("Clear"), this ); | 376 | pb = new QPushButton( tr("Clear"), this ); |
377 | connect( pb, SIGNAL(clicked()), SLOT(clearChar()) ); | 377 | connect( pb, SIGNAL(clicked()), SLOT(clearChar()) ); |
378 | gl->addWidget( pb, 3, 1 ); | 378 | gl->addWidget( pb, 3, 1 ); |
379 | 379 | ||
380 | //-- | 380 | //-- |
381 | #if !defined(Q_WS_QWS) | 381 | #if !defined(Q_WS_QWS) |
382 | hb = new QHBoxLayout( tvb ); | 382 | hb = new QHBoxLayout( tvb ); |
383 | pb = new QPushButton( tr("OK"), this ); | 383 | pb = new QPushButton( tr("OK"), this ); |
384 | connect( pb, SIGNAL(clicked()), SLOT(accept()) ); | 384 | connect( pb, SIGNAL(clicked()), SLOT(accept()) ); |
385 | hb->addWidget( pb ); | 385 | hb->addWidget( pb ); |
386 | 386 | ||
387 | pb = new QPushButton( tr("Cancel"), this ); | 387 | pb = new QPushButton( tr("Cancel"), this ); |
388 | connect( pb, SIGNAL(clicked()), SLOT(reject()) ); | 388 | connect( pb, SIGNAL(clicked()), SLOT(reject()) ); |
389 | hb->addWidget( pb ); | 389 | hb->addWidget( pb ); |
390 | #endif | 390 | #endif |
391 | selectCharSet( 0 ); | 391 | selectCharSetVisible( 0 ); |
392 | charList->setFocus(); | 392 | charList->setFocus(); |
393 | 393 | ||
394 | resize( minimumSize() ); | 394 | resize( minimumSize() ); |
395 | enableButtons(); | 395 | enableButtons(); |
396 | } | 396 | } |
397 | 397 | ||
398 | void QIMPenEdit::setProfile( QIMPenProfile *p ) | 398 | void QIMPenEdit::setProfile( QIMPenProfile *p ) |
399 | { | 399 | { |
400 | profile = p; | 400 | profile = p; |
401 | charSetCombo->clear(); | 401 | charSetCombo->clear(); |
402 | QIMPenCharSetIterator it( profile->charSets() ); | 402 | QIMPenCharSetIterator it( profile->charSets() ); |
403 | for ( ; it.current(); ++it ) { | 403 | for ( ; it.current(); ++it ) { |
404 | if ( ! it.current()->hidden() ) | 404 | if ( ! it.current()->hidden() ) |
405 | charSetCombo->insertItem( it.current()->description() ); | 405 | charSetCombo->insertItem( it.current()->description() ); |
406 | } | 406 | } |
407 | selectCharSet( 0 ); | 407 | selectCharSetVisible( 0 ); |
408 | charList->setFocus(); | 408 | charList->setFocus(); |
409 | enableButtons(); | 409 | enableButtons(); |
410 | } | 410 | } |
411 | 411 | ||
412 | void QIMPenEdit::selectCharSet( QIMPenCharSet *c ) | 412 | void QIMPenEdit::selectCharSet( QIMPenCharSet *c ) |
413 | { | 413 | { |
414 | int i = 0; | 414 | int i = 0; |
415 | QIMPenCharSetIterator it( profile->charSets() ); | 415 | QIMPenCharSetIterator it( profile->charSets() ); |
416 | for ( ; it.current(); ++it, i++ ) { | 416 | for ( ; it.current(); ++it, i++ ) { |
417 | if ( it.current() == c ) { | 417 | if ( it.current() == c ) { |
418 | charSetCombo->setCurrentItem( i ); | 418 | charSetCombo->setCurrentItem( i ); |
419 | selectCharSet( i ); | 419 | selectCharSet( i ); |
420 | } | 420 | } |
421 | } | 421 | } |
422 | } | 422 | } |
423 | 423 | ||
424 | 424 | ||
425 | /*! | 425 | /*! |
426 | Fill the character list box with the characters. Duplicates are not | 426 | Fill the character list box with the characters. Duplicates are not |
427 | inserted. | 427 | inserted. |
428 | */ | 428 | */ |
429 | void QIMPenEdit::fillCharList() | 429 | void QIMPenEdit::fillCharList() |
430 | { | 430 | { |
431 | charList->clear(); | 431 | charList->clear(); |
432 | QIMPenCharIterator it( currentSet->characters() ); | 432 | QIMPenCharIterator it( currentSet->characters() ); |
433 | CharListItem *li = 0; | 433 | CharListItem *li = 0; |
434 | for ( ; it.current(); ++it ) { | 434 | for ( ; it.current(); ++it ) { |
435 | uint ch = it.current()->character(); | 435 | uint ch = it.current()->character(); |
436 | QString n = it.current()->name(); | 436 | QString n = it.current()->name(); |
437 | if ( !n.isEmpty() ) | 437 | if ( !n.isEmpty() ) |
438 | li = new CharListItem( n, ch ); | 438 | li = new CharListItem( n, ch ); |
439 | if ( li ) { | 439 | if ( li ) { |
@@ -520,64 +520,75 @@ void QIMPenEdit::prevChar() | |||
520 | 520 | ||
521 | void QIMPenEdit::nextChar() | 521 | void QIMPenEdit::nextChar() |
522 | { | 522 | { |
523 | QIMPenChar *pc = findNext(); | 523 | QIMPenChar *pc = findNext(); |
524 | if ( pc ) | 524 | if ( pc ) |
525 | setCurrentChar( pc ); | 525 | setCurrentChar( pc ); |
526 | } | 526 | } |
527 | 527 | ||
528 | void QIMPenEdit::clearChar() | 528 | void QIMPenEdit::clearChar() |
529 | { | 529 | { |
530 | inputChar->clear(); | 530 | inputChar->clear(); |
531 | pw->clear(); | 531 | pw->clear(); |
532 | enableButtons(); | 532 | enableButtons(); |
533 | } | 533 | } |
534 | 534 | ||
535 | void QIMPenEdit::selectChar( int i ) | 535 | void QIMPenEdit::selectChar( int i ) |
536 | { | 536 | { |
537 | currentChar = 0; | 537 | currentChar = 0; |
538 | currentCode = ((CharListItem *)charList->item(i))->code(); | 538 | currentCode = ((CharListItem *)charList->item(i))->code(); |
539 | QIMPenCharIterator it(currentSet->characters() ); | 539 | QIMPenCharIterator it(currentSet->characters() ); |
540 | for ( ; it.current(); ++it ) { | 540 | for ( ; it.current(); ++it ) { |
541 | if ( it.current()->character() == currentCode && | 541 | if ( it.current()->character() == currentCode && |
542 | !it.current()->testFlag( QIMPenChar::Deleted ) ) { | 542 | !it.current()->testFlag( QIMPenChar::Deleted ) ) { |
543 | setCurrentChar( it.current() ); | 543 | setCurrentChar( it.current() ); |
544 | break; | 544 | break; |
545 | } | 545 | } |
546 | } | 546 | } |
547 | if ( !it.current() ) | 547 | if ( !it.current() ) |
548 | setCurrentChar( 0 ); | 548 | setCurrentChar( 0 ); |
549 | inputChar->clear(); | 549 | inputChar->clear(); |
550 | } | 550 | } |
551 | 551 | ||
552 | void QIMPenEdit::selectCharSetVisible( int c ) | ||
553 | { | ||
554 | int i = 0; | ||
555 | QIMPenCharSetIterator it( profile->charSets() ); | ||
556 | for ( ; it.current(); ++it, i++ ) { | ||
557 | if ( charSetCombo->text( c ) == it.current()->description() ) { | ||
558 | selectCharSet( i ); | ||
559 | } | ||
560 | } | ||
561 | } | ||
562 | |||
552 | void QIMPenEdit::selectCharSet( int i ) | 563 | void QIMPenEdit::selectCharSet( int i ) |
553 | { | 564 | { |
554 | if ( currentSet ) | 565 | if ( currentSet ) |
555 | pw->removeCharSet( 0 ); | 566 | pw->removeCharSet( 0 ); |
556 | currentSet = profile->charSets().at( i ); | 567 | currentSet = profile->charSets().at( i ); |
557 | fillCharList(); | 568 | fillCharList(); |
558 | pw->insertCharSet( currentSet ); | 569 | pw->insertCharSet( currentSet ); |
559 | inputChar->clear(); | 570 | inputChar->clear(); |
560 | if ( charList->count() ) { | 571 | if ( charList->count() ) { |
561 | charList->setSelected( 0, TRUE ); | 572 | charList->setSelected( 0, TRUE ); |
562 | selectChar(0); | 573 | selectChar(0); |
563 | } | 574 | } |
564 | } | 575 | } |
565 | 576 | ||
566 | void QIMPenEdit::addChar() | 577 | void QIMPenEdit::addChar() |
567 | { | 578 | { |
568 | if ( !inputChar->isEmpty() ) { | 579 | if ( !inputChar->isEmpty() ) { |
569 | QIMPenChar *pc = new QIMPenChar( *inputChar ); | 580 | QIMPenChar *pc = new QIMPenChar( *inputChar ); |
570 | pc->setCharacter( currentCode ); | 581 | pc->setCharacter( currentCode ); |
571 | 582 | ||
572 | // User characters override all matching system characters. | 583 | // User characters override all matching system characters. |
573 | // Copy and mark deleted identical system characters. | 584 | // Copy and mark deleted identical system characters. |
574 | 585 | ||
575 | QIMPenCharIterator it(currentSet->characters() ); | 586 | QIMPenCharIterator it(currentSet->characters() ); |
576 | QIMPenChar *sc = 0; | 587 | QIMPenChar *sc = 0; |
577 | while ( (sc = it.current()) != 0 ) { | 588 | while ( (sc = it.current()) != 0 ) { |
578 | ++it; | 589 | ++it; |
579 | if ( sc->character() == currentCode && | 590 | if ( sc->character() == currentCode && |
580 | sc->testFlag( QIMPenChar::System ) && | 591 | sc->testFlag( QIMPenChar::System ) && |
581 | !sc->testFlag( QIMPenChar::Deleted ) ) { | 592 | !sc->testFlag( QIMPenChar::Deleted ) ) { |
582 | QIMPenChar *cc = new QIMPenChar( *sc ); | 593 | QIMPenChar *cc = new QIMPenChar( *sc ); |
583 | cc->clearFlag( QIMPenChar::System ); | 594 | cc->clearFlag( QIMPenChar::System ); |
diff --git a/inputmethods/handwriting/qimpensetup.h b/inputmethods/handwriting/qimpensetup.h index 5d3064b..93b981b 100644 --- a/inputmethods/handwriting/qimpensetup.h +++ b/inputmethods/handwriting/qimpensetup.h | |||
@@ -71,54 +71,55 @@ protected: | |||
71 | 71 | ||
72 | protected slots: | 72 | protected slots: |
73 | void setSpecial( int sp ); | 73 | void setSpecial( int sp ); |
74 | void setCharacter( const QString &string ); | 74 | void setCharacter( const QString &string ); |
75 | 75 | ||
76 | protected: | 76 | protected: |
77 | uint uni; | 77 | uint uni; |
78 | }; | 78 | }; |
79 | 79 | ||
80 | class QIMPenEdit : public QWidget | 80 | class QIMPenEdit : public QWidget |
81 | { | 81 | { |
82 | Q_OBJECT | 82 | Q_OBJECT |
83 | public: | 83 | public: |
84 | QIMPenEdit( QIMPenProfile *p, QWidget *parent=0, | 84 | QIMPenEdit( QIMPenProfile *p, QWidget *parent=0, |
85 | const char *name=0 ); | 85 | const char *name=0 ); |
86 | 86 | ||
87 | void setProfile( QIMPenProfile *p ); | 87 | void setProfile( QIMPenProfile *p ); |
88 | void selectCharSet( QIMPenCharSet *c ); | 88 | void selectCharSet( QIMPenCharSet *c ); |
89 | 89 | ||
90 | protected: | 90 | protected: |
91 | void fillCharList(); | 91 | void fillCharList(); |
92 | void enableButtons(); | 92 | void enableButtons(); |
93 | QIMPenChar *findPrev(); | 93 | QIMPenChar *findPrev(); |
94 | QIMPenChar *findNext(); | 94 | QIMPenChar *findNext(); |
95 | void setCurrentChar( QIMPenChar * ); | 95 | void setCurrentChar( QIMPenChar * ); |
96 | 96 | ||
97 | protected slots: | 97 | protected slots: |
98 | void prevChar(); | 98 | void prevChar(); |
99 | void nextChar(); | 99 | void nextChar(); |
100 | void clearChar(); | 100 | void clearChar(); |
101 | void selectChar( int ); | 101 | void selectChar( int ); |
102 | void selectCharSet( int ); | 102 | void selectCharSet( int ); |
103 | void selectCharSetVisible( int ); | ||
103 | void addChar(); | 104 | void addChar(); |
104 | void addNewChar(); | 105 | void addNewChar(); |
105 | void removeChar(); | 106 | void removeChar(); |
106 | void defaultChars(); | 107 | void defaultChars(); |
107 | void newStroke( QIMPenStroke * ); | 108 | void newStroke( QIMPenStroke * ); |
108 | 109 | ||
109 | protected: | 110 | protected: |
110 | QIMPenWidget *pw; | 111 | QIMPenWidget *pw; |
111 | QComboBox *charSetCombo; | 112 | QComboBox *charSetCombo; |
112 | QListBox *charList; | 113 | QListBox *charList; |
113 | QPushButton *newBtn; | 114 | QPushButton *newBtn; |
114 | QPushButton *addBtn; | 115 | QPushButton *addBtn; |
115 | QPushButton *removeBtn; | 116 | QPushButton *removeBtn; |
116 | QPushButton *prevBtn; | 117 | QPushButton *prevBtn; |
117 | QPushButton *nextBtn; | 118 | QPushButton *nextBtn; |
118 | uint currentCode; | 119 | uint currentCode; |
119 | QIMPenChar *currentChar; | 120 | QIMPenChar *currentChar; |
120 | QIMPenChar *inputChar; | 121 | QIMPenChar *inputChar; |
121 | QIMPenCharSet *currentSet; | 122 | QIMPenCharSet *currentSet; |
122 | QIMPenProfile *profile; | 123 | QIMPenProfile *profile; |
123 | }; | 124 | }; |
124 | 125 | ||