kdeui Library API Documentation

kxmlguiclient.h

00001 /* This file is part of the KDE libraries 00002 Copyright (C) 2000 Simon Hausmann <hausmann@kde.org> 00003 Copyright (C) 2000 Kurt Granroth <granroth@kde.org> 00004 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Library General Public 00007 License version 2 as published by the Free Software Foundation. 00008 00009 This library is distributed in the hope that it will be useful, 00010 but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 Library General Public License for more details. 00013 00014 You should have received a copy of the GNU Library General Public License 00015 along with this library; see the file COPYING.LIB. If not, write to 00016 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00017 Boston, MA 02111-1307, USA. 00018 */ 00019 #ifndef _KXMLGUICLIENT_H 00020 #define _KXMLGUICLIENT_H 00021 00022 #include <qdom.h> 00023 #include <qptrlist.h> 00024 #include <qmap.h> 00025 #include <qstringlist.h> 00026 00027 #include <kdelibs_export.h> 00028 00029 class QWidget; 00030 class KAction; 00031 class KActionCollection; 00032 class KInstance; 00033 class KXMLGUIClientPrivate; 00034 class KXMLGUIFactory; 00035 class KXMLGUIBuilder; 00036 00043 class KDEUI_EXPORT KXMLGUIClient 00044 { 00045 friend class KEditToolbarWidget; // for setXMLFile(3 args) 00046 public: 00052 KXMLGUIClient(); 00053 00065 KXMLGUIClient( KXMLGUIClient *parent ); 00066 00070 virtual ~KXMLGUIClient(); 00071 00077 KAction* action( const char* name ) const; 00078 00084 virtual KAction *action( const QDomElement &element ) const; 00085 00095 virtual KActionCollection* actionCollection() const; 00096 00100 virtual KInstance *instance() const; 00101 00107 virtual QDomDocument domDocument() const; 00108 00122 virtual QString xmlFile() const; 00123 00124 virtual QString localXMLFile() const; 00125 00129 void setXMLGUIBuildDocument( const QDomDocument &doc ); 00133 QDomDocument xmlguiBuildDocument() const; 00134 00139 void setFactory( KXMLGUIFactory *factory ); 00145 KXMLGUIFactory *factory() const; 00146 00152 KXMLGUIClient *parentClient() const; 00153 00160 void insertChildClient( KXMLGUIClient *child ); 00161 00165 void removeChildClient( KXMLGUIClient *child ); 00166 00170 const QPtrList<KXMLGUIClient> *childClients(); 00171 00180 void setClientBuilder( KXMLGUIBuilder *builder ); 00181 00186 KXMLGUIBuilder *clientBuilder() const; 00187 00195 void reloadXML(); 00196 00237 void plugActionList( const QString &name, const QPtrList<KAction> &actionList ); 00238 00242 void unplugActionList( const QString &name ); 00243 00244 static QString findMostRecentXMLFile( const QStringList &files, QString &doc ); 00245 00246 void addStateActionEnabled(const QString& state, const QString& action); 00247 00248 void addStateActionDisabled(const QString& state, const QString& action); 00249 00250 enum ReverseStateChange { StateNoReverse, StateReverse }; 00251 struct StateChange 00252 { 00253 QStringList actionsToEnable; 00254 QStringList actionsToDisable; 00255 }; 00256 00257 StateChange getActionsToChangeForState(const QString& state); 00258 00260 void beginXMLPlug( QWidget * ); 00262 void endXMLPlug(); 00264 void prepareXMLUnplug( QWidget * ); 00265 00266 protected: 00271 //bool addSuperClient( KXMLGUIClient * ); 00272 00279 virtual void setInstance( KInstance *instance ); 00280 00294 virtual void setXMLFile( const QString& file, bool merge = false, bool setXMLDoc = true ); 00295 00296 virtual void setLocalXMLFile( const QString &file ); 00297 00304 virtual void setXML( const QString &document, bool merge = false ); 00305 00312 virtual void setDOMDocument( const QDomDocument &document, bool merge = false ); 00313 00319 virtual void conserveMemory(); 00320 00332 virtual void stateChanged(const QString &newstate, ReverseStateChange reverse = StateNoReverse); 00333 00334 // Use this one for KDE 4.0 00335 //virtual void stateChanged(const QString &newstate, bool reverse = false); 00336 00337 private: 00338 struct DocStruct 00339 { 00340 QString file; 00341 QString data; 00342 }; 00343 00344 bool mergeXML( QDomElement &base, const QDomElement &additive, 00345 KActionCollection *actionCollection ); 00346 00347 QDomElement findMatchingElement( const QDomElement &base, 00348 const QDomElement &additive ); 00349 00350 typedef QMap<QString, QMap<QString, QString> > ActionPropertiesMap; 00351 00352 static ActionPropertiesMap extractActionProperties( const QDomDocument &doc ); 00353 00354 static void storeActionProperties( QDomDocument &doc, const ActionPropertiesMap &properties ); 00355 00356 static QString findVersionNumber( const QString &_xml ); 00357 00358 // Actions to enable/disable on a state change 00359 QMap<QString,StateChange> m_actionsStateMap; 00360 00361 protected: 00362 virtual void virtual_hook( int id, void* data ); 00363 private: 00364 KXMLGUIClientPrivate *d; 00365 }; 00366 00367 #endif
KDE Logo
This file is part of the documentation for kdeui Library Version 3.4.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Apr 12 22:56:34 2005 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003