summaryrefslogtreecommitdiffstats
path: root/src/kile/kilelauncher.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/kile/kilelauncher.h')
-rw-r--r--src/kile/kilelauncher.h154
1 files changed, 154 insertions, 0 deletions
diff --git a/src/kile/kilelauncher.h b/src/kile/kilelauncher.h
new file mode 100644
index 0000000..866ba2c
--- /dev/null
+++ b/src/kile/kilelauncher.h
@@ -0,0 +1,154 @@
+/***************************************************************************
+ begin : mon 3-11 20:40:00 CEST 2003
+ copyright : (C) 2003 by Jeroen Wijnhout
+ email : Jeroen.Wijnhout@kdemail.net
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KILE_LAUNCHER
+#define KILE_LAUNCHER
+
+#include <qobject.h>
+#include <qdict.h>
+#include <qstringlist.h>
+
+class QWidgetStack;
+
+
+class KProcess;
+class KShellProcess;
+class KileInfo;
+namespace KParts { class ReadOnlyPart; class PartManager; }
+
+namespace KileTool
+{
+ class Base;
+
+ /**
+ * This class represents a way to launch a tool. This could be a commandline tool
+ * running in a Konsole, running as a separate process, it could even be responsible
+ * for starting a KPart.
+ *
+ * @author Jeroen Wijnhout
+ **/
+ class Launcher : public QObject
+ {
+ Q_OBJECT
+
+ public:
+ Launcher();
+ ~Launcher();
+
+ public slots:
+ virtual bool launch() = 0;
+ virtual bool kill() = 0;
+ virtual bool selfCheck() = 0;
+
+ public:
+ virtual void setWorkingDirectory(const QString &) {}
+
+ void setTool(Base *tool) { m_tool = tool; }
+ Base* tool() { return m_tool; }
+
+ signals:
+ void message(int, const QString & );
+ void output(const QString &);
+
+ void exitedWith(int);
+ void abnormalExit();
+
+ void done(int);
+
+ private:
+ //QDict<QString> *m_pdictParams;
+ Base *m_tool;
+ };
+
+ class ProcessLauncher : public Launcher
+ {
+ Q_OBJECT
+
+ public:
+ ProcessLauncher(const char * shellname =0);
+ ~ProcessLauncher();
+
+ public:
+ void setWorkingDirectory(const QString &wd);
+ void changeToWorkingDirectory(bool change) { m_changeTo = change; }
+ void setCommand(const QString & cmd) { m_cmd = cmd; }
+ void setOptions(const QString & opt) { m_options = opt; }
+
+ public slots:
+ bool launch();
+ bool kill();
+ bool selfCheck();
+
+ private slots:
+ void slotProcessOutput(KProcess*, char*, int );
+ void slotProcessExited(KProcess*);
+
+ private:
+ QString m_wd, m_cmd, m_options, m_texinputs, m_bibinputs, m_bstinputs;
+ KShellProcess *m_proc;
+ bool m_changeTo;
+ };
+
+ class KonsoleLauncher : public ProcessLauncher
+ {
+ Q_OBJECT
+
+ public:
+ KonsoleLauncher(const char * shellname =0);
+
+ public slots:
+ bool launch();
+ };
+
+ class PartLauncher : public Launcher
+ {
+ Q_OBJECT
+
+ public:
+ PartLauncher(const char * = 0);
+ ~PartLauncher();
+
+ void setLibrary(const char *lib) { m_libName = lib; }
+ void setClass(const char *clas) { m_className = clas; }
+ void setOptions(QString & options) { m_options = options; }
+
+ public slots:
+ bool launch();
+ bool kill();
+ bool selfCheck() { return true; } //no additional self-checks, all of them are done in launch()
+
+ KParts::ReadOnlyPart* part() { return m_part; }
+
+ protected:
+ KParts::ReadOnlyPart *m_part;
+
+ QString m_state;
+ const char *m_name, *m_libName, *m_className;
+ QString m_options;
+ };
+
+ class DocPartLauncher : public PartLauncher
+ {
+ Q_OBJECT
+
+ public:
+ DocPartLauncher(const char * name = 0) : PartLauncher(name) {}
+
+ public slots:
+ bool launch();
+ };
+}
+
+#endif