00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
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;
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
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
00335
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
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