• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • tdeui
 

tdeui

  • tdeui
kcharselect.cpp
1 /* This file is part of the KDE libraries
2 
3  Copyright (C) 1999 Reginald Stadlbauer <reggie@kde.org>
4 
5  This library is free software; you can redistribute it and/or
6  modify it under the terms of the GNU Library General Public
7  License as published by the Free Software Foundation; either
8  version 2 of the License, or (at your option) any later version.
9 
10  This library is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  Library General Public License for more details.
14 
15  You should have received a copy of the GNU Library General Public License
16  along with this library; see the file COPYING.LIB. If not, write to
17  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18  Boston, MA 02110-1301, USA.
19 */
20 
21 #include "kcharselect.h"
22 #include "kcharselect.moc"
23 
24 #include <tqbrush.h>
25 #include <tqcolor.h>
26 #include <tqevent.h>
27 #include <tqfont.h>
28 #include <tqfontdatabase.h>
29 #include <tqhbox.h>
30 #include <tqkeycode.h>
31 #include <tqlabel.h>
32 #include <tqpainter.h>
33 #include <tqpen.h>
34 #include <tqregexp.h>
35 #include <tqstyle.h>
36 #include <tqstylesheet.h>
37 #include <tqtooltip.h>
38 #include <tqvalidator.h>
39 
40 #include <tdeapplication.h>
41 #include <kdebug.h>
42 #include <kdialog.h>
43 #include <klineedit.h>
44 #include <tdelocale.h>
45 #include <tdeunicodedata.h>
46 
47 class KCharSelectTableToolTip;
48 class KCharSelectTable::KCharSelectTablePrivate
49 {
50 public:
51  KCharSelectTableToolTip *t = nullptr;
52 };
53 
54 class KCharSelect::KCharSelectPrivate
55 {
56 public:
57  TQLineEdit *unicodeLine = nullptr;
58  TQScrollBar *scrollBar = nullptr;
59 };
60 
61 TQFontDatabase * KCharSelect::fontDataBase = 0;
62 
63 void KCharSelect::cleanupFontDatabase()
64 {
65  delete fontDataBase;
66  fontDataBase = 0;
67 }
68 
69 /******************************************************************/
70 /* Class: KCharSelectTableToolTip */
71 /******************************************************************/
72 
76 class KCharSelectTableToolTip : public TQToolTip
77 {
78 public:
79  // Note: we pass TQToolTip becuse we want to display tooltips in vieport's coordinates.
80  KCharSelectTableToolTip(KCharSelectTable * parent)
81  : TQToolTip(parent->viewport()), cst(parent) {}
82 
83 protected:
84  void maybeTip( const TQPoint &pnt) {
85  // Point in content coodrinates; since we don't move viewport in KCharSelectTableToolTip
86  // it should be exactly the same, but to be on the safe side we assume it's not
87  TQPoint cPnt = cst->viewportToContents(pnt);
88 
89  int col = cst->columnAt( cPnt.x() );
90  int row = cst->rowAt( cPnt.y() );
91  if ( col < 0 || row < 0 || col > cst->numCols()-1 || row > cst->numRows()-1 ) {
92  return;
93  }
94  TQChar ch = cst->charAt( row, col );
95  if (ch.isNull()) {
96  return;
97  }
98 
99  TDEUnicodeData *unicodeData = TDEUnicodeData::instance();
100 
101  const TDEUnicodeData::Category *category = unicodeData->findCategory(ch.unicode());
102  TQString categoryName = category ? i18n(category->name) : i18n("(unknown)");
103 
104  const TDEUnicodeData::Subcategory *subcategory = category
105  ? unicodeData->findSubcategory(category, ch.unicode())
106  : nullptr;
107  TQString subcategoryName = subcategory ? i18n(subcategory->name) : i18n("(unknown)");
108 
109  TQRect r = cst->cellGeometry( row, col );
110  r = TQRect( cst->contentsToViewport(r.topLeft()), r.size());
111 
112  TQString hex = TQString().sprintf( "%04X", ch.unicode() );
113  TQString character = TQStyleSheet::escape(ch); // Character sometimes need to be escaped
114 
115  tip(r, i18n( "Character",
116  "<qt><table>"
117  "<tr><td colspan='2'><font size=\"+4\" face=\"%1\">%2</font></td></tr>"
118  "<tr><td>Category:</td><td><b>%3</b></td></tr>"
119  "<tr><td>Subcategory:</td><td><b>%4</b></td></tr>"
120  "<tr><td>Code point:</td><td><b>U+%5</b></td></tr>"
121  "<tr><td>Decimal:</td><td><b>%6</b></td></tr>"
122  "</table></qt>").arg( cst->font() )
123  .arg( character )
124  .arg( categoryName )
125  .arg( subcategoryName )
126  .arg( hex )
127  .arg( ch.unicode() )
128  );
129  }
130 private:
131  KCharSelectTable *cst;
132 };
133 
134 
135 /******************************************************************/
136 /* Class: KCharSelectTable */
137 /******************************************************************/
138 
139 //==================================================================
140 KCharSelectTable::KCharSelectTable( TQWidget *parent, const char *name, const TQString &_font,
141  const TQChar &_chr, int _tableNum )
142  : TQGridView( parent, name, TQt::WNoAutoErase ), vFont( _font ), vChr( _chr ),
143  vTableNum( _tableNum ), vPos( 0, 0 ), focusItem( _chr ), focusPos( 0, 0 ),
144  d(new KCharSelectTable::KCharSelectTablePrivate)
145 {
146  // Note: when updating we are completely overpainting the widget to
147  // avoid flickering, hence we use TQt::WNoAutoErase.
148  setCellWidth( 20 );
149  setCellHeight( 25 );
150 
151  setNumCols( 32 );
152  setNumRows( 8 );
153 
154  updateContents();
155 
156  d->t = new KCharSelectTableToolTip(this);
157 
158  setFocusPolicy( TQWidget::StrongFocus );
159 }
160 
161 KCharSelectTable::~KCharSelectTable () {
162  delete d->t;
163  delete d;
164 }
165 
166 //==================================================================
167 void KCharSelectTable::setFont( const TQString &_font )
168 {
169  if(_font == vFont)
170  return;
171  vFont = _font;
172  updateContents();
173 }
174 
175 //==================================================================
176 void KCharSelectTable::setChar( const TQChar &_chr )
177 {
178  if(_chr == vChr)
179  return;
180  vChr = _chr;
181  updateContents();
182 }
183 
184 //==================================================================
185 void KCharSelectTable::setTableNum( int _tableNum )
186 {
187  if(_tableNum == vTableNum)
188  return;
189  focusItem = TQChar( _tableNum * 256 );
190 
191  vTableNum = _tableNum;
192  updateContents();
193 
194  emit tableNumChanged(vTableNum);
195 }
196 
197 //==================================================================
198 TQSize KCharSelectTable::sizeHint() const
199 {
200  int w = cellWidth();
201  int h = cellHeight();
202 
203  w *= numCols();
204  h *= numRows();
205 
206  return TQSize( w, h );
207 }
208 
209 //==================================================================
210 // BCI: remove me
211 void KCharSelectTable::resizeEvent( TQResizeEvent *e )
212 {
213  TQGridView::resizeEvent(e);
214 }
215 
216 //==================================================================
217 void KCharSelectTable::viewportResizeEvent( TQResizeEvent * e )
218 {
219  const int new_w = e->size().width() / numCols();
220  const int new_h = e->size().height() / numRows();
221 
222  if( new_w != cellWidth())
223  setCellWidth( new_w );
224  if( new_h != cellHeight())
225  setCellHeight( new_h );
226 
227  TQGridView::viewportResizeEvent(e);
228 }
229 
230 //==================================================================
231 void KCharSelectTable::paintCell( class TQPainter* p, int row, int col )
232 {
233  const int w = cellWidth();
234  const int h = cellHeight();
235  const int x2 = w - 1;
236  const int y2 = h - 1;
237 
238  //if( row == 0 && col == 0 ) {
239  // printf("Repaint %d\n", temp++);
240  // fflush( stdout );
241  // }
242 
243  TQFont font = TQFont( vFont );
244  font.setPixelSize( int(.7 * h) );
245 
246  unsigned short c = vTableNum * 256;
247  c += row * numCols();
248  c += col;
249 
250  if ( c == vChr.unicode() ) {
251  p->setBrush( TQBrush( colorGroup().highlight() ) );
252  p->setPen( NoPen );
253  p->drawRect( 0, 0, w, h );
254  p->setPen( colorGroup().highlightedText() );
255  vPos = TQPoint( col, row );
256  } else {
257  TQFontMetrics fm = TQFontMetrics( font );
258  if( fm.inFont( c ) )
259  p->setBrush( TQBrush( colorGroup().base() ) );
260  else
261  p->setBrush( TQBrush( colorGroup().button() ) );
262  p->setPen( NoPen );
263  p->drawRect( 0, 0, w, h );
264  p->setPen( colorGroup().text() );
265  }
266 
267  if ( c == focusItem.unicode() && hasFocus() ) {
268  style().drawPrimitive( TQStyle::PE_FocusRect, p, TQRect( 2, 2, w - 4, h - 4 ),
269  colorGroup() );
270  focusPos = TQPoint( col, row );
271  }
272 
273  p->setFont( font );
274 
275  p->drawText( 0, 0, x2, y2, AlignHCenter | AlignVCenter, TQString( TQChar( c ) ) );
276 
277  p->setPen( colorGroup().text() );
278  p->drawLine( x2, 0, x2, y2 );
279  p->drawLine( 0, y2, x2, y2 );
280 
281  if ( row == 0 )
282  p->drawLine( 0, 0, x2, 0 );
283  if ( col == 0 )
284  p->drawLine( 0, 0, 0, y2 );
285 }
286 
287 //==================================================================
288 // BCI: remove me
289 void KCharSelectTable::mouseMoveEvent( TQMouseEvent *e )
290 {
291  TQGridView::mouseMoveEvent(e);
292 }
293 
294 //==================================================================
295 void KCharSelectTable::contentsMousePressEvent( TQMouseEvent *e )
296 {
297  contentsMouseMoveEvent(e);
298 }
299 
300 //==================================================================
301 void KCharSelectTable::contentsMouseDoubleClickEvent ( TQMouseEvent *e )
302 {
303  contentsMouseMoveEvent(e);
304  emit doubleClicked();
305 }
306 
307 //==================================================================
308 void KCharSelectTable::contentsMouseReleaseEvent( TQMouseEvent *e )
309 {
310  contentsMouseMoveEvent( e );
311 
312  if( e->isAccepted() ) {
313  emit activated( chr() );
314  emit activated();
315  }
316 }
317 
318 //==================================================================
319 void KCharSelectTable::contentsMouseMoveEvent( TQMouseEvent *e )
320 {
321  const int row = rowAt( e->y() );
322  const int col = columnAt( e->x() );
323  if ( row >= 0 && row < numRows() && col >= 0 && col < numCols() ) {
324  const TQPoint oldPos = vPos;
325 
326  vPos.setX( col );
327  vPos.setY( row );
328 
329  vChr = charAt( vPos.y(), vPos.x() );
330 
331  const TQPoint oldFocus = focusPos;
332 
333  focusPos = vPos;
334  focusItem = vChr;
335 
336  updateCell( oldFocus.y(), oldFocus.x() );
337  updateCell( oldPos.y(), oldPos.x() );
338  updateCell( vPos.y(), vPos.x() );
339 
340  emit highlighted( vChr );
341  emit highlighted();
342 
343  emit focusItemChanged( focusItem );
344  emit focusItemChanged();
345 
346  e->accept();
347  } else {
348  e->ignore();
349  }
350 }
351 
352 //==================================================================
353 void KCharSelectTable::keyPressEvent( TQKeyEvent *e )
354 {
355  switch ( e->key() ) {
356  case Key_Left:
357  gotoLeft();
358  break;
359  case Key_Right:
360  gotoRight();
361  break;
362  case Key_Up:
363  gotoUp();
364  break;
365  case Key_Down:
366  gotoDown();
367  break;
368  case Key_Next:
369  if ( tableNum() < 255 ) {
370  setTableNum( tableNum() + 1 );
371  }
372  break;
373  case Key_Prior:
374  if ( tableNum() > 0 ) {
375  setTableNum( tableNum() - 1 );
376  }
377  break;
378  case Key_Space:
379  emit activated( ' ' );
380  emit activated();
381  emit highlighted( ' ' );
382  emit highlighted();
383  break;
384  case Key_Enter: case Key_Return: {
385  const TQPoint oldPos = vPos;
386 
387  vPos = focusPos;
388  vChr = focusItem;
389 
390  updateCell( oldPos.y(), oldPos.x() );
391  updateCell( vPos.y(), vPos.x() );
392 
393  emit activated( vChr );
394  emit activated();
395  emit highlighted( vChr );
396  emit highlighted();
397  } break;
398  }
399 }
400 
401 //==================================================================
402 void KCharSelectTable::gotoLeft()
403 {
404  if ( focusPos.x() > 0 ) {
405  doGoto(-1, 0);
406  }
407 }
408 
409 //==================================================================
410 void KCharSelectTable::gotoRight()
411 {
412  if ( focusPos.x() < numCols()-1 ) {
413  doGoto(1, 0);
414  }
415 }
416 
417 //==================================================================
418 void KCharSelectTable::gotoUp()
419 {
420  if ( focusPos.y() > 0 ) {
421  doGoto(0, -1);
422  } else if ( tableNum() > 0 ) {
423  emit tableNumChanged(--vTableNum);
424  doGoto(0, numRows()-1);
425  repaintContents( false );
426  }
427 }
428 
429 //==================================================================
430 void KCharSelectTable::gotoDown()
431 {
432  if ( focusPos.y() < numRows()-1 ) {
433  doGoto(0, +1);
434  } else if ( tableNum() < 255 ) {
435  emit tableNumChanged(++vTableNum);
436  doGoto(0, -(numRows()-1));
437  repaintContents( false );
438  }
439 }
440 
441 //==================================================================
442 void KCharSelectTable::doGoto(int dx, int dy)
443 {
444  TQPoint oldPos = focusPos;
445  focusPos += TQPoint(dx, dy);
446  focusItem = charAt( focusPos.y(), focusPos.x() );
447 
448  updateCell( oldPos.y(), oldPos.x() );
449  updateCell( focusPos.y(), focusPos.x() );
450 
451  emit focusItemChanged( vChr );
452  emit focusItemChanged();
453 }
454 
455 //==================================================================
456 TQChar KCharSelectTable::charAt(int row, int col) const
457 {
458  return TQChar( vTableNum * 256 + numCols() * row + col );
459 }
460 
461 /******************************************************************/
462 /* Class: KCharSelect */
463 /******************************************************************/
464 
465 //==================================================================
466 KCharSelect::KCharSelect( TQWidget *parent, const char *name, const TQString &_font, const TQChar &_chr, int _tableNum )
467  : TQVBox( parent, name ), d(new KCharSelectPrivate)
468 {
469  setSpacing( KDialog::spacingHint() );
470  TQHBox* const bar = new TQHBox( this );
471  bar->setSpacing( KDialog::spacingHint() );
472 
473  TQLabel* const lFont = new TQLabel( i18n( "Font:" ), bar );
474  lFont->resize( lFont->sizeHint() );
475  lFont->setAlignment( TQt::AlignRight | TQt::AlignVCenter );
476  lFont->setMaximumWidth( lFont->sizeHint().width() );
477 
478  fontCombo = new TQComboBox( true, bar );
479  fillFontCombo();
480  fontCombo->resize( fontCombo->sizeHint() );
481 
482  connect( fontCombo, TQ_SIGNAL( activated( const TQString & ) ), this, TQ_SLOT( fontSelected( const TQString & ) ) );
483 
484  TQLabel* const lTable = new TQLabel( i18n( "Table:" ), bar );
485  lTable->resize( lTable->sizeHint() );
486  lTable->setAlignment( TQt::AlignRight | TQt::AlignVCenter );
487  lTable->setMaximumWidth( lTable->sizeHint().width() );
488 
489  tableSpinBox = new TQSpinBox( 0, 255, 1, bar );
490  tableSpinBox->resize( tableSpinBox->sizeHint() );
491 
492  TQLabel* const lUnicode = new TQLabel( i18n( "&Unicode code point:" ), bar );
493  lUnicode->resize( lUnicode->sizeHint() );
494  lUnicode->setAlignment( TQt::AlignRight | TQt::AlignVCenter );
495  lUnicode->setMaximumWidth( lUnicode->sizeHint().width() );
496 
497  const TQRegExp rx( "[a-fA-F0-9]{1,4}" );
498  TQValidator* const validator = new TQRegExpValidator( rx, this );
499 
500  d->unicodeLine = new KLineEdit( bar );
501  d->unicodeLine->setValidator(validator);
502  lUnicode->setBuddy(d->unicodeLine);
503  d->unicodeLine->resize( d->unicodeLine->sizeHint() );
504  slotUpdateUnicode(_chr);
505 
506  connect( d->unicodeLine, TQ_SIGNAL( returnPressed() ), this, TQ_SLOT( slotUnicodeEntered() ) );
507 
508  TQHBox* const box = new TQHBox(this);
509  box->setSpacing(0);
510 
511  charTable = new KCharSelectTable( box, name, _font.isEmpty() ? TQString(TQVBox::font().family()) : _font, _chr, _tableNum );
512  const TQSize sz( charTable->contentsWidth() + 4 ,
513  charTable->contentsHeight() + 4 );
514  charTable->resize( sz );
515  //charTable->setMaximumSize( sz );
516  charTable->setMinimumSize( sz );
517  charTable->setHScrollBarMode( TQScrollView::AlwaysOff );
518  charTable->setVScrollBarMode( TQScrollView::AlwaysOff );
519  charTable->installEventFilter( this );
520 
521  d->scrollBar = new TQScrollBar(0, 255, 1, 1, 0, TQt::Vertical, box);
522 
523  setFont( _font.isEmpty() ? TQString(TQVBox::font().family()) : _font );
524  setTableNum( _tableNum );
525 
526  connect( tableSpinBox, TQ_SIGNAL( valueChanged( int ) ), this, TQ_SLOT( tableChanged( int ) ) );
527  connect( d->scrollBar, TQ_SIGNAL( valueChanged( int ) ), this, TQ_SLOT( tableChanged( int ) ) );
528  connect( charTable, TQ_SIGNAL( tableNumChanged( int ) ), this, TQ_SLOT( tableChanged( int ) ) );
529 
530  connect( charTable, TQ_SIGNAL( highlighted( const TQChar & ) ), this, TQ_SLOT( slotUpdateUnicode( const TQChar & ) ) );
531  connect( charTable, TQ_SIGNAL( highlighted( const TQChar & ) ), this, TQ_SLOT( charHighlighted( const TQChar & ) ) );
532  connect( charTable, TQ_SIGNAL( highlighted() ), this, TQ_SLOT( charHighlighted() ) );
533  connect( charTable, TQ_SIGNAL( activated( const TQChar & ) ), this, TQ_SLOT( charActivated( const TQChar & ) ) );
534  connect( charTable, TQ_SIGNAL( activated() ), this, TQ_SLOT( charActivated() ) );
535  connect( charTable, TQ_SIGNAL( focusItemChanged( const TQChar & ) ),
536  this, TQ_SLOT( charFocusItemChanged( const TQChar & ) ) );
537  connect( charTable, TQ_SIGNAL( focusItemChanged() ), this, TQ_SLOT( charFocusItemChanged() ) );
538 
539  connect( charTable, TQ_SIGNAL(doubleClicked()),this,TQ_SLOT(slotDoubleClicked()));
540 
541  setFocusPolicy( TQWidget::StrongFocus );
542  setFocusProxy( charTable );
543 }
544 
545 KCharSelect::~KCharSelect()
546 {
547  delete d;
548 }
549 
550 //==================================================================
551 TQSize KCharSelect::sizeHint() const
552 {
553  return TQVBox::sizeHint();
554 }
555 
556 //==================================================================
557 void KCharSelect::setFont( const TQString &_font )
558 {
559  const TQValueList<TQString>::Iterator it = fontList.find( _font );
560  if ( it != fontList.end() ) {
561  TQValueList<TQString>::Iterator it2 = fontList.begin();
562  int pos = 0;
563  for ( ; it != it2; ++it2, ++pos);
564  fontCombo->setCurrentItem( pos );
565  charTable->setFont( _font );
566  }
567  else
568  kdWarning() << "Can't find Font: " << _font << endl;
569 }
570 
571 //==================================================================
572 void KCharSelect::setChar( const TQChar &_chr )
573 {
574  charTable->setChar( _chr );
575  slotUpdateUnicode( _chr );
576 }
577 
578 //==================================================================
579 void KCharSelect::setTableNum( int _tableNum )
580 {
581  tableSpinBox->setValue( _tableNum );
582  d->scrollBar->setValue( _tableNum );
583  charTable->setTableNum( _tableNum );
584 }
585 
586 //==================================================================
587 void KCharSelect::fillFontCombo()
588 {
589  if ( !fontDataBase ) {
590  fontDataBase = new TQFontDatabase();
591  tqAddPostRoutine( cleanupFontDatabase );
592  }
593  fontList=fontDataBase->families();
594  fontCombo->insertStringList( fontList );
595 }
596 
597 //==================================================================
598 void KCharSelect::fontSelected( const TQString &_font )
599 {
600  charTable->setFont( _font );
601  emit fontChanged( _font );
602 }
603 
604 //==================================================================
605 void KCharSelect::tableChanged( int _value )
606 {
607  setTableNum( _value );
608 }
609 
610 //==================================================================
611 void KCharSelect::slotUnicodeEntered( )
612 {
613  const TQString s = d->unicodeLine->text();
614  if (s.isEmpty())
615  return;
616 
617  bool ok;
618  const int uc = s.toInt(&ok, 16);
619  if (!ok)
620  return;
621 
622  const int table = uc / 256;
623  charTable->setTableNum( table );
624  tableSpinBox->setValue(table);
625  d->scrollBar->setValue(table);
626  const TQChar ch(uc);
627  charTable->setChar( ch );
628  charActivated( ch );
629 }
630 
631 //==================================================================
632 void KCharSelect::slotUpdateUnicode( const TQChar &c )
633 {
634  const int uc = c.unicode();
635  TQString s;
636  s.sprintf("%04X", uc);
637  d->unicodeLine->setText(s);
638 }
639 
640 //==================================================================
641 bool KCharSelect::eventFilter( TQObject *obj, TQEvent *e )
642 {
643  if ( obj == charTable && e->type() == TQEvent::Wheel ) {
644  // just pass charTable's mouse wheel events to the scrollBar
645  return TQApplication::sendEvent( d->scrollBar, e );
646  }
647  return false;
648 }
649 
650 //==================================================================
651 void KCharSelectTable::virtual_hook( int, void*)
652 { /*BASE::virtual_hook( id, data );*/ }
653 
654 void KCharSelect::virtual_hook( int, void* )
655 { /*BASE::virtual_hook( id, data );*/ }
656 
KCharSelectTable
Character selection table.
Definition: kcharselect.h:50
KCharSelect::KCharSelect
KCharSelect(TQWidget *parent, const char *name, const TQString &font=TQString::null, const TQChar &chr=' ', int tableNum=0)
Constructor.
Definition: kcharselect.cpp:466
KCharSelect::setChar
virtual void setChar(const TQChar &chr)
Sets the currently selected character to chr.
Definition: kcharselect.cpp:572
KCharSelect::setFont
virtual void setFont(const TQString &font)
Sets the font which is displayed to font.
Definition: kcharselect.cpp:557
KCharSelect::sizeHint
virtual TQSize sizeHint() const
Reimplemented.
Definition: kcharselect.cpp:551
KCharSelect::setTableNum
virtual void setTableNum(int tableNum)
Sets the currently displayed table to tableNum.
Definition: kcharselect.cpp:579
KDialog::spacingHint
static int spacingHint()
Return the number of pixels you shall use between widgets inside a dialog according to the KDE standa...
Definition: kdialog.cpp:110
KLineEdit
An enhanced TQLineEdit widget for inputting text.
Definition: klineedit.h:146
endl
kndbgstream & endl(kndbgstream &s)
kdWarning
kdbgstream kdWarning(int area=0)
TDEStdAccel::name
TQString name(StdAccel id)
tdelocale.h

tdeui

Skip menu "tdeui"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

tdeui

Skip menu "tdeui"
  • arts
  • dcop
  • dnssd
  • interfaces
  •   kspeech
  •     interface
  •     library
  •   tdetexteditor
  • kate
  • kded
  • kdoctools
  • kimgio
  • kjs
  • libtdemid
  • libtdescreensaver
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdeioslave
  •   http
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdeui by doxygen 1.9.1
This website is maintained by Timothy Pearson.