kxmlcommand.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef KXMLCOMMAND_H
00021 #define KXMLCOMMAND_H
00022
00023 #include <qdom.h>
00024 #include <qmap.h>
00025 #include <qobject.h>
00026
00027 #include <kdelibs_export.h>
00028
00029 class DrMain;
00030 class DrGroup;
00031 class DrBase;
00032
00033 class KDEPRINT_EXPORT KXmlCommand : public QObject
00034 {
00035 friend class KXmlCommandManager;
00036
00037 public:
00038 ~KXmlCommand();
00039
00040 QString name() const;
00041 void setName(const QString&);
00042 QString command();
00043 void setCommand(const QString&);
00044 DrMain* driver();
00045 DrMain* takeDriver();
00046 void setDriver(DrMain*);
00047 QString io(bool io_input = true, bool io_pipe = false);
00048 void setIo(const QString&, bool io_input = true, bool io_pipe = false);
00049 QString description();
00050 void setDescription(const QString&);
00051 QString mimeType();
00052 void setMimeType(const QString&);
00053 bool acceptMimeType(const QString&);
00054 QStringList inputMimeTypes();
00055 void setInputMimeTypes(const QStringList&);
00056 QStringList requirements();
00057 void setRequirements(const QStringList&);
00058 QString comment();
00059 void setComment( const QString& );
00060 bool isValid();
00061
00062 QString buildCommand(const QMap<QString,QString>& opts, bool pipein = true, bool pipeout = true);
00063 void setOptions(const QMap<QString,QString>& opts);
00064 void getOptions(QMap<QString,QString>& opts, bool incldef = false);
00065
00066 protected:
00067 void init();
00068 void loadXml();
00069 void saveXml();
00070 void loadDesktop();
00071 void saveDesktop();
00072 void check(bool use_xml = false);
00073 DrGroup* parseGroup(const QDomElement& e, DrGroup *grp = 0);
00074 DrBase* parseArgument(const QDomElement& e);
00075 void parseIO(const QDomElement& e, int n);
00076 QDomElement createIO(QDomDocument&, int, const QString&);
00077 QDomElement createGroup(QDomDocument&, DrGroup*);
00078 QDomElement createElement(QDomDocument&, DrBase*);
00079
00080
00081
00082 KXmlCommand(const QString& xmlId = QString::null);
00083
00084 private:
00085 class KXmlCommandPrivate;
00086 KXmlCommandPrivate *d;
00087 };
00088
00089 class KDEPRINT_EXPORT KXmlCommandManager : public QObject
00090 {
00091 public:
00092 enum IO_CheckType { None = 0, Basic, Advanced };
00093
00094 KXmlCommandManager();
00095 ~KXmlCommandManager();
00096
00097 KXmlCommand* loadCommand(const QString& xmlId, bool check = false);
00098 void saveCommand(KXmlCommand *xmlCmd);
00099 QStringList commandList();
00100 QStringList commandListWithDescription();
00101 QString selectCommand(QWidget *parent = 0);
00102
00103 QStringList autoConvert(const QString& mimesrc, const QString& mimedest);
00104 int insertCommand(QStringList& list, const QString& filtername, bool defaultToStart = true);
00105 bool checkCommand(const QString&, int inputCheck = Advanced, int outputCheck = Advanced, QString *msg = 0);
00106 bool configure(KXmlCommand*, QWidget *parent = 0);
00107 void cleanUp();
00108
00109 static KXmlCommandManager* self();
00110
00111 protected:
00112 void preload();
00113 KXmlCommand* command(const QString&) const;
00114
00115 private:
00116 class KXmlCommandManagerPrivate;
00117 KXmlCommandManagerPrivate *d;
00118 static KXmlCommandManager *m_self;
00119 };
00120
00121 #endif
|