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

tdeui

  • tdeui
kxmlguifactory.cpp
1/* This file is part of the KDE libraries
2 Copyright (C) 1999,2000 Simon Hausmann <hausmann@kde.org>
3 Copyright (C) 2000 Kurt Granroth <granroth@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 "kxmlguifactory.h"
22#include "kxmlguifactory_p.h"
23#include "kxmlguiclient.h"
24#include "kxmlguibuilder.h"
25
26#include <assert.h>
27
28#include <tqdir.h>
29#include <tqfile.h>
30#include <tqtextstream.h>
31#include <tqwidget.h>
32#include <tqdatetime.h>
33#include <tqvariant.h>
34
35#include <tdeaction.h>
36#include <kdebug.h>
37#include <kinstance.h>
38#include <tdeglobal.h>
39#include <tdeshortcut.h>
40#include <tdestandarddirs.h>
41#include <kkeydialog.h>
42
43using namespace KXMLGUI;
44
45/*
46 * TODO: - make more use of TQValueList instead of QPtrList
47 */
48
49class KXMLGUIFactoryPrivate : public BuildState
50{
51public:
52 KXMLGUIFactoryPrivate()
53 {
54 static const TQString &defaultMergingName = TDEGlobal::staticQString( "<default>" );
55 static const TQString &actionList = TDEGlobal::staticQString( "actionlist" );
56 static const TQString &name = TDEGlobal::staticQString( "name" );
57
58 m_rootNode = new ContainerNode( 0L, TQString::null, 0L );
59 m_defaultMergingName = defaultMergingName;
60 tagActionList = actionList;
61 attrName = name;
62 }
63 ~KXMLGUIFactoryPrivate()
64 {
65 delete m_rootNode;
66 }
67
68 void pushState()
69 {
70 m_stateStack.push( *this );
71 }
72
73 void popState()
74 {
75 BuildState::operator=( m_stateStack.pop() );
76 }
77
78 ContainerNode *m_rootNode;
79
80 TQString m_defaultMergingName;
81
82 /*
83 * Contains the container which is searched for in ::container .
84 */
85 TQString m_containerName;
86
87 /*
88 * List of all clients
89 */
90 TQPtrList<KXMLGUIClient> m_clients;
91
92 TQString tagActionList;
93
94 TQString attrName;
95
96 BuildStateStack m_stateStack;
97};
98
99TQString KXMLGUIFactory::readConfigFile( const TQString &filename, const TDEInstance *instance )
100{
101 return readConfigFile( filename, false, instance );
102}
103
104TQString KXMLGUIFactory::readConfigFile( const TQString &filename, bool never_null, const TDEInstance *_instance )
105{
106 const TDEInstance *instance = _instance ? _instance : TDEGlobal::instance();
107 TQString xml_file;
108
109 if (!TQDir::isRelativePath(filename))
110 xml_file = filename;
111 else
112 {
113 xml_file = locate("data", TQString::fromLatin1(instance->instanceName() + '/' ) + filename);
114 if ( !TQFile::exists( xml_file ) )
115 xml_file = locate( "data", filename );
116 }
117
118 TQFile file( xml_file );
119 if ( !file.open( IO_ReadOnly ) )
120 {
121 kdError(240) << "No such XML file " << filename << endl;
122 if ( never_null )
123 return TQString::fromLatin1( "<!DOCTYPE kpartgui>\n<kpartgui name=\"empty\">\n</kpartgui>" );
124 else
125 return TQString::null;
126 }
127
128#if TQT_VERSION <= 0x030302
129 // Work around bug in TQString::fromUtf8 (which calls strlen).
130 TQByteArray buffer(file.size() + 1);
131 buffer = file.readAll();
132 if(!buffer.isEmpty())
133 buffer[ buffer.size() - 1 ] = '\0';
134 else
135 return TQString::null;
136#else
137 TQByteArray buffer(file.readAll());
138#endif
139 return TQString::fromUtf8(buffer.data(), buffer.size());
140}
141
142bool KXMLGUIFactory::saveConfigFile( const TQDomDocument& doc,
143 const TQString& filename, const TDEInstance *_instance )
144{
145 const TDEInstance *instance = _instance ? _instance : TDEGlobal::instance();
146 TQString xml_file(filename);
147
148 if (TQDir::isRelativePath(xml_file))
149 xml_file = locateLocal("data", TQString::fromLatin1( instance->instanceName() + '/' )
150 + filename);
151
152 TQFile file( xml_file );
153 if ( !file.open( IO_WriteOnly ) )
154 {
155 kdError(240) << "Could not write to " << filename << endl;
156 return false;
157 }
158
159 // write out our document
160 TQTextStream ts(&file);
161 ts.setEncoding( TQTextStream::UnicodeUTF8 );
162 ts << doc;
163
164 file.close();
165 return true;
166}
167
168TQString KXMLGUIFactory::documentToXML( const TQDomDocument& doc )
169{
170 TQString str;
171 TQTextStream ts(&str, IO_WriteOnly);
172 ts.setEncoding( TQTextStream::UnicodeUTF8 );
173 ts << doc;
174 return str;
175}
176
177TQString KXMLGUIFactory::elementToXML( const TQDomElement& elem )
178{
179 TQString str;
180 TQTextStream ts(&str, IO_WriteOnly);
181 ts.setEncoding( TQTextStream::UnicodeUTF8 );
182 ts << elem;
183 return str;
184}
185
186void KXMLGUIFactory::removeDOMComments( TQDomNode &node )
187{
188 TQDomNode n = node.firstChild();
189 while ( !n.isNull() )
190 {
191 if ( n.nodeType() == TQDomNode::CommentNode )
192 {
193 TQDomNode tmp = n;
194 n = n.nextSibling();
195 node.removeChild( tmp );
196 }
197 else
198 {
199 TQDomNode tmp = n;
200 n = n.nextSibling();
201 removeDOMComments( tmp );
202 }
203 }
204}
205
206KXMLGUIFactory::KXMLGUIFactory( KXMLGUIBuilder *builder, TQObject *parent, const char *name )
207 : TQObject( parent, name )
208{
209 d = new KXMLGUIFactoryPrivate;
210 d->builder = builder;
211 d->guiClient = 0;
212 if ( d->builder )
213 {
214 d->builderContainerTags = d->builder->containerTags();
215 d->builderCustomTags = d->builder->customTags();
216 }
217}
218
219KXMLGUIFactory::~KXMLGUIFactory()
220{
221 delete d;
222}
223
224void KXMLGUIFactory::addClient( KXMLGUIClient *client )
225{
226 kdDebug(1002) << "KXMLGUIFactory::addClient( " << client << " )" << endl; // ellis
227 static const TQString &actionPropElementName = TDEGlobal::staticQString( "ActionProperties" );
228
229 if ( client->factory() ) {
230 if ( client->factory() == this )
231 return;
232 else
233 client->factory()->removeClient( client ); //just in case someone does stupid things ;-)
234 }
235
236 d->pushState();
237
238// TQTime dt; dt.start();
239
240 d->guiClient = client;
241
242 // add this client to our client list
243 if ( !d->m_clients.containsRef( client ) )
244 d->m_clients.append( client );
245 else
246 kdDebug(1002) << "XMLGUI client already added " << client << endl;
247
248 // Tell the client that plugging in is process and
249 // let it know what builder widget its mainwindow shortcuts
250 // should be attached to.
251 client->beginXMLPlug( d->builder->widget() );
252
253 // try to use the build document for building the client's GUI, as the build document
254 // contains the correct container state information (like toolbar positions, sizes, etc.) .
255 // if there is non available, then use the "real" document.
256 TQDomDocument doc = client->xmlguiBuildDocument();
257 if ( doc.documentElement().isNull() )
258 doc = client->domDocument();
259
260 TQDomElement docElement = doc.documentElement();
261
262 d->m_rootNode->index = -1;
263
264 // cache some variables
265
266 d->clientName = docElement.attribute( d->attrName );
267 d->clientBuilder = client->clientBuilder();
268
269 if ( d->clientBuilder )
270 {
271 d->clientBuilderContainerTags = d->clientBuilder->containerTags();
272 d->clientBuilderCustomTags = d->clientBuilder->customTags();
273 }
274 else
275 {
276 d->clientBuilderContainerTags.clear();
277 d->clientBuilderCustomTags.clear();
278 }
279
280 // process a possibly existing actionproperties section
281
282 TQDomElement actionPropElement = docElement.namedItem( actionPropElementName ).toElement();
283 if ( actionPropElement.isNull() )
284 actionPropElement = docElement.namedItem( actionPropElementName.lower() ).toElement();
285
286 if ( !actionPropElement.isNull() )
287 applyActionProperties( actionPropElement );
288
289 BuildHelper( *d, d->m_rootNode ).build( docElement );
290
291 // let the client know that we built its GUI.
292 client->setFactory( this );
293
294 // call the finalizeGUI method, to fix up the positions of toolbars for example.
295 // ### FIXME : obey client builder
296 // --- Well, toolbars have a bool "positioned", so it doesn't really matter,
297 // if we call positionYourself on all of them each time. (David)
298 d->builder->finalizeGUI( d->guiClient );
299
300 // reset some variables, for safety
301 d->BuildState::reset();
302
303 client->endXMLPlug();
304
305 d->popState();
306
307 emit clientAdded( client );
308
309 // build child clients
310 if ( client->childClients()->count() > 0 )
311 {
312 const TQPtrList<KXMLGUIClient> *children = client->childClients();
313 TQPtrListIterator<KXMLGUIClient> childIt( *children );
314 for (; childIt.current(); ++childIt )
315 addClient( childIt.current() );
316 }
317
318// kdDebug() << "addClient took " << dt.elapsed() << endl;
319}
320
321void KXMLGUIFactory::removeClient( KXMLGUIClient *client )
322{
323 kdDebug(1002) << "KXMLGUIFactory::removeClient( " << client << " )" << endl; // ellis
324
325 // don't try to remove the client's GUI if we didn't build it
326 if ( !client || client->factory() != this )
327 return;
328
329 // remove this client from our client list
330 d->m_clients.removeRef( client );
331
332 // remove child clients first
333 if ( client->childClients()->count() > 0 )
334 {
335 const TQPtrList<KXMLGUIClient> *children = client->childClients();
336 TQPtrListIterator<KXMLGUIClient> childIt( *children );
337 childIt.toLast();
338 for (; childIt.current(); --childIt )
339 removeClient( childIt.current() );
340 }
341
342 kdDebug(1002) << "KXMLGUIFactory::removeServant, calling removeRecursive" << endl;
343
344 d->pushState();
345
346 // cache some variables
347
348 d->guiClient = client;
349 d->clientName = client->domDocument().documentElement().attribute( d->attrName );
350 d->clientBuilder = client->clientBuilder();
351
352 client->setFactory( 0L );
353
354 // if we don't have a build document for that client, yet, then create one by
355 // cloning the original document, so that saving container information in the
356 // DOM tree does not touch the original document.
357 TQDomDocument doc = client->xmlguiBuildDocument();
358 if ( doc.documentElement().isNull() )
359 {
360 doc = client->domDocument().cloneNode( true ).toDocument();
361 client->setXMLGUIBuildDocument( doc );
362 }
363
364 d->m_rootNode->destruct( doc.documentElement(), *d );
365
366 d->builder->finalizeGUI( d->guiClient ); //JoWenn
367
368 // reset some variables
369 d->BuildState::reset();
370
371 // This will destruct the TDEAccel object built around the given widget.
372 client->prepareXMLUnplug( d->builder->widget() );
373
374 d->popState();
375
376 emit clientRemoved( client );
377}
378
379TQPtrList<KXMLGUIClient> KXMLGUIFactory::clients() const
380{
381 return d->m_clients;
382}
383
384TQWidget *KXMLGUIFactory::container( const TQString &containerName, KXMLGUIClient *client,
385 bool useTagName )
386{
387 d->pushState();
388 d->m_containerName = containerName;
389 d->guiClient = client;
390
391 TQWidget *result = findRecursive( d->m_rootNode, useTagName );
392
393 d->guiClient = 0L;
394 d->m_containerName = TQString::null;
395
396 d->popState();
397
398 return result;
399}
400
401TQPtrList<TQWidget> KXMLGUIFactory::containers( const TQString &tagName )
402{
403 return findRecursive( d->m_rootNode, tagName );
404}
405
406void KXMLGUIFactory::reset()
407{
408 d->m_rootNode->reset();
409
410 d->m_rootNode->clearChildren();
411}
412
413void KXMLGUIFactory::resetContainer( const TQString &containerName, bool useTagName )
414{
415 if ( containerName.isEmpty() )
416 return;
417
418 ContainerNode *container = d->m_rootNode->findContainer( containerName, useTagName );
419
420 if ( !container )
421 return;
422
423 ContainerNode *parent = container->parent;
424 if ( !parent )
425 return;
426
427 // resetInternal( container );
428
429 parent->removeChild( container );
430}
431
432TQWidget *KXMLGUIFactory::findRecursive( KXMLGUI::ContainerNode *node, bool tag )
433{
434 if ( ( ( !tag && node->name == d->m_containerName ) ||
435 ( tag && node->tagName == d->m_containerName ) ) &&
436 ( !d->guiClient || node->client == d->guiClient ) )
437 return node->container;
438
439 TQPtrListIterator<ContainerNode> it( node->children );
440 for (; it.current(); ++it )
441 {
442 TQWidget *cont = findRecursive( it.current(), tag );
443 if ( cont )
444 return cont;
445 }
446
447 return 0L;
448}
449
450TQPtrList<TQWidget> KXMLGUIFactory::findRecursive( KXMLGUI::ContainerNode *node,
451 const TQString &tagName )
452{
453 TQPtrList<TQWidget> res;
454
455 if ( node->tagName == tagName.lower() )
456 res.append( node->container );
457
458 TQPtrListIterator<KXMLGUI::ContainerNode> it( node->children );
459 for (; it.current(); ++it )
460 {
461 TQPtrList<TQWidget> lst = findRecursive( it.current(), tagName );
462 TQPtrListIterator<TQWidget> wit( lst );
463 for (; wit.current(); ++wit )
464 res.append( wit.current() );
465 }
466
467 return res;
468}
469
470void KXMLGUIFactory::plugActionList( KXMLGUIClient *client, const TQString &name,
471 const TQPtrList<TDEAction> &actionList )
472{
473 d->pushState();
474 d->guiClient = client;
475 d->actionListName = name;
476 d->actionList = actionList;
477 d->clientName = client->domDocument().documentElement().attribute( d->attrName );
478
479 d->m_rootNode->plugActionList( *d );
480
481 d->BuildState::reset();
482 d->popState();
483}
484
485void KXMLGUIFactory::unplugActionList( KXMLGUIClient *client, const TQString &name )
486{
487 d->pushState();
488 d->guiClient = client;
489 d->actionListName = name;
490 d->clientName = client->domDocument().documentElement().attribute( d->attrName );
491
492 d->m_rootNode->unplugActionList( *d );
493
494 d->BuildState::reset();
495 d->popState();
496}
497
498void KXMLGUIFactory::applyActionProperties( const TQDomElement &actionPropElement )
499{
500 static const TQString &tagAction = TDEGlobal::staticQString( "action" );
501
502 for (TQDomNode n = actionPropElement.firstChild();
503 !n.isNull(); n = n.nextSibling() )
504 {
505 TQDomElement e = n.toElement();
506 if ( e.tagName().lower() != tagAction )
507 continue;
508
509 TDEAction *action = d->guiClient->action( e );
510 if ( !action )
511 continue;
512
513 configureAction( action, e.attributes() );
514 }
515}
516
517void KXMLGUIFactory::configureAction( TDEAction *action, const TQDomNamedNodeMap &attributes )
518{
519 for ( uint i = 0; i < attributes.length(); i++ )
520 {
521 TQDomAttr attr = attributes.item( i ).toAttr();
522 if ( attr.isNull() )
523 continue;
524
525 configureAction( action, attr );
526 }
527}
528
529void KXMLGUIFactory::configureAction( TDEAction *action, const TQDomAttr &attribute )
530{
531 static const TQString &attrShortcut = TDEGlobal::staticQString( "shortcut" );
532
533 TQString attrName = attribute.name();
534 // If the attribute is a deprecated "accel", change to "shortcut".
535 if ( attrName.lower() == "accel" )
536 attrName = attrShortcut;
537
538 TQVariant propertyValue;
539
540 TQVariant::Type propertyType = action->property( attrName.latin1() ).type();
541
542 if ( propertyType == TQVariant::Int )
543 propertyValue = TQVariant( attribute.value().toInt() );
544 else if ( propertyType == TQVariant::UInt )
545 propertyValue = TQVariant( attribute.value().toUInt() );
546 else
547 propertyValue = TQVariant( attribute.value() );
548
549 action->setProperty( attrName.latin1(), propertyValue );
550}
551
552
553int KXMLGUIFactory::configureShortcuts(bool bAllowLetterShortcuts , bool bSaveSettings )
554{
555 KKeyDialog dlg( bAllowLetterShortcuts, dynamic_cast<TQWidget*>(parent()) );
556 TQPtrListIterator<KXMLGUIClient> it( d->m_clients );
557 KXMLGUIClient *client;
558 while( (client=it.current()) !=0 )
559 {
560 ++it;
561 if(!client->xmlFile().isEmpty())
562 dlg.insert( client->actionCollection() );
563 }
564 return dlg.configure(bSaveSettings);
565}
566
567TQDomElement KXMLGUIFactory::actionPropertiesElement( TQDomDocument& doc )
568{
569 const TQString tagActionProp = TQString::fromLatin1("ActionProperties");
570 // first, lets see if we have existing properties
571 TQDomElement elem;
572 TQDomNode it = doc.documentElement().firstChild();
573 for( ; !it.isNull(); it = it.nextSibling() ) {
574 TQDomElement e = it.toElement();
575 if( e.tagName() == tagActionProp ) {
576 elem = e;
577 break;
578 }
579 }
580
581 // if there was none, create one
582 if( elem.isNull() ) {
583 elem = doc.createElement( tagActionProp );
584 doc.documentElement().appendChild( elem );
585 }
586 return elem;
587}
588
589TQDomElement KXMLGUIFactory::findActionByName( TQDomElement& elem, const TQString& sName, bool create )
590{
591 static const TQString& attrName = TDEGlobal::staticQString( "name" );
592 static const TQString& tagAction = TDEGlobal::staticQString( "Action" );
593 for( TQDomNode it = elem.firstChild(); !it.isNull(); it = it.nextSibling() ) {
594 TQDomElement e = it.toElement();
595 if( e.attribute( attrName ) == sName )
596 return e;
597 }
598
599 if( create ) {
600 TQDomElement act_elem = elem.ownerDocument().createElement( tagAction );
601 act_elem.setAttribute( attrName, sName );
602 elem.appendChild( act_elem );
603 return act_elem;
604 }
605 return TQDomElement();
606}
607
608void KXMLGUIFactory::virtual_hook( int, void* )
609{ /*BASE::virtual_hook( id, data );*/ }
610
611#include "kxmlguifactory.moc"
KKeyDialog
Dialog for configuration of TDEActionCollection, TDEAccel, and TDEGlobalAccel.
Definition: kkeydialog.h:275
KKeyDialog::configure
bool configure(bool bSaveSettings=true)
Run the dialog and call commitChanges() if bSaveSettings is true.
Definition: kkeydialog.cpp:1130
KKeyDialog::insert
bool insert(TDEActionCollection *)
Insert an action collection, i.e.
Definition: kkeydialog.cpp:1120
KXMLGUIBuilder
Abstract interface for a "GUI builder", used by the GUIFactory This interface is implemented by TDEMa...
Definition: kxmlguibuilder.h:40
KXMLGUIClient
A KXMLGUIClient can be used with KXMLGUIFactory to create a GUI from actions and an XML document,...
Definition: kxmlguiclient.h:44
KXMLGUIClient::xmlFile
virtual TQString xmlFile() const
This will return the name of the XML file as set by setXMLFile().
Definition: kxmlguiclient.cpp:133
KXMLGUIClient::xmlguiBuildDocument
TQDomDocument xmlguiBuildDocument() const
Definition: kxmlguiclient.cpp:545
KXMLGUIClient::setXMLGUIBuildDocument
void setXMLGUIBuildDocument(const TQDomDocument &doc)
Definition: kxmlguiclient.cpp:540
KXMLGUIClient::endXMLPlug
void endXMLPlug()
Definition: kxmlguiclient.cpp:934
KXMLGUIClient::factory
KXMLGUIFactory * factory() const
Retrieves a pointer to the KXMLGUIFactory this client is associated with (will return 0L if the clien...
Definition: kxmlguiclient.cpp:555
KXMLGUIClient::prepareXMLUnplug
void prepareXMLUnplug(TQWidget *)
Definition: kxmlguiclient.cpp:942
KXMLGUIClient::beginXMLPlug
void beginXMLPlug(TQWidget *)
Definition: kxmlguiclient.cpp:926
KXMLGUIClient::setFactory
void setFactory(KXMLGUIFactory *factory)
This method is called by the KXMLGUIFactory as soon as the client is added to the KXMLGUIFactory's GU...
Definition: kxmlguiclient.cpp:550
KXMLGUIClient::clientBuilder
KXMLGUIBuilder * clientBuilder() const
Retrieves the client's GUI builder or 0L if no client specific builder has been assigned via setClien...
Definition: kxmlguiclient.cpp:600
KXMLGUIClient::childClients
const TQPtrList< KXMLGUIClient > * childClients()
Retrieves a list of all child clients.
Definition: kxmlguiclient.cpp:588
KXMLGUIClient::actionCollection
virtual TDEActionCollection * actionCollection() const
Retrieves the entire action collection for the GUI client.
Definition: kxmlguiclient.cpp:107
KXMLGUIClient::domDocument
virtual TQDomDocument domDocument() const
Definition: kxmlguiclient.cpp:128
KXMLGUIFactory::findActionByName
static TQDomElement findActionByName(TQDomElement &elem, const TQString &sName, bool create)
Definition: kxmlguifactory.cpp:589
KXMLGUIFactory::~KXMLGUIFactory
~KXMLGUIFactory()
Destructor.
Definition: kxmlguifactory.cpp:219
KXMLGUIFactory::removeClient
void removeClient(KXMLGUIClient *client)
Removes the GUI described by the client, by unplugging all provided actions and removing all owned co...
Definition: kxmlguifactory.cpp:321
KXMLGUIFactory::addClient
void addClient(KXMLGUIClient *client)
Creates the GUI described by the TQDomDocument of the client, using the client's actions,...
Definition: kxmlguifactory.cpp:224
KXMLGUIFactory::resetContainer
void resetContainer(const TQString &containerName, bool useTagName=false)
Use this method to free all memory allocated by the KXMLGUIFactory for a specific container,...
Definition: kxmlguifactory.cpp:413
KXMLGUIFactory::clients
TQPtrList< KXMLGUIClient > clients() const
Returns a list of all clients currently added to this factory.
Definition: kxmlguifactory.cpp:379
KXMLGUIFactory::configureShortcuts
int configureShortcuts(bool bAllowLetterShortcuts=true, bool bSaveSettings=true)
Show a standard configure shortcut for every action in this factory.
Definition: kxmlguifactory.cpp:553
KXMLGUIFactory::reset
void reset()
Use this method to free all memory allocated by the KXMLGUIFactory.
Definition: kxmlguifactory.cpp:406
KXMLGUIFactory::container
TQWidget * container(const TQString &containerName, KXMLGUIClient *client, bool useTagName=false)
Use this method to get access to a container widget with the name specified with containerName and wh...
Definition: kxmlguifactory.cpp:384
KXMLGUIFactory::actionPropertiesElement
static TQDomElement actionPropertiesElement(TQDomDocument &doc)
Definition: kxmlguifactory.cpp:567
KXMLGUIFactory::removeDOMComments
static void removeDOMComments(TQDomNode &node)
Removes all TQDomComment objects from the specified node and all its children.
Definition: kxmlguifactory.cpp:186
KXMLGUIFactory::KXMLGUIFactory
KXMLGUIFactory(KXMLGUIBuilder *builder, TQObject *parent=0, const char *name=0)
Constructs a KXMLGUIFactory.
Definition: kxmlguifactory.cpp:206
TDEAction
Class to encapsulate user-driven action or event.
Definition: tdeaction.h:203
TDEGlobal::instance
static TDEInstance * instance()
TDEGlobal::staticQString
static const TQString & staticQString(const char *str)
TDEInstance
TDEInstance::instanceName
TQCString instanceName() const
kdError
kdbgstream kdError(int area=0)
endl
kndbgstream & endl(kndbgstream &s)
kdDebug
kdbgstream kdDebug(int area=0)
locate
TQString locate(const char *type, const TQString &filename, const TDEInstance *instance=TDEGlobal::instance())
locateLocal
TQString locateLocal(const char *type, const TQString &filename, const TDEInstance *instance=TDEGlobal::instance())
KNotifyClient::instance
TDEInstance * instance()
TDEStdAccel::name
TQString name(StdAccel id)
TDEStdAccel::action
TQString action(StdAccel id)

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.4
This website is maintained by Timothy Pearson.