summaryrefslogtreecommitdiffstats
path: root/noatun-plugins/nexscope/noatunplugin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'noatun-plugins/nexscope/noatunplugin.cpp')
-rw-r--r--noatun-plugins/nexscope/noatunplugin.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/noatun-plugins/nexscope/noatunplugin.cpp b/noatun-plugins/nexscope/noatunplugin.cpp
new file mode 100644
index 0000000..8bbc860
--- /dev/null
+++ b/noatun-plugins/nexscope/noatunplugin.cpp
@@ -0,0 +1,49 @@
+#include "nex.h"
+#include "noatunplugin.h"
+
+#include <kprocess.h>
+#include <kmessagebox.h>
+#include <klocale.h>
+#include <kstandarddirs.h>
+
+extern "C"
+{
+Plugin *create_plugin()
+{
+ KGlobal::locale()->insertCatalogue("nexscope");
+ return new NexPlugin();
+}
+}
+
+
+NexPlugin::NexPlugin()
+{
+ connect(&process, SIGNAL(processExited(KProcess *)), this, SLOT(processExited(KProcess *)));
+}
+
+NexPlugin::~NexPlugin()
+{
+ process.kill();
+}
+
+void NexPlugin::init()
+{
+ process << KStandardDirs::findExe("nexscope.bin");
+
+ // Note that process.start() will fail if findExe fails, so there's no real need
+ // for two separate checks.
+ if(!process.start(KProcess::NotifyOnExit, (KProcess::Communication)(KProcess::Stdin | KProcess::Stdout)))
+ {
+ KMessageBox::error(0, i18n("Unable to start noatunNex. Check your installation."));
+ unload();
+ }
+
+}
+
+void NexPlugin::processExited(KProcess *)
+{
+ unload();
+}
+
+#include "noatunplugin.moc"
+