# HG changeset patch # User cannam # Date 1164627160 0 # Node ID c1669af82d6ea54837498790c5956c4b5d9f8e25 # Parent b30fcffc500072c543a9aa2b14062642b2980975 * Add external process action diff -r b30fcffc5000 -r c1669af82d6e host/ExternalProcessAction.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/host/ExternalProcessAction.cpp Mon Nov 27 11:32:40 2006 +0000 @@ -0,0 +1,33 @@ +/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ + +#include "ExternalProcessAction.h" + +#include + +#include + +ExternalProcessAction::ExternalProcessAction(QString processName, + QStringList args) : + m_processName(processName), + m_args(args) +{ +} + +ExternalProcessAction::~ExternalProcessAction() +{ +} + +QString +ExternalProcessAction::getName() const +{ + return QString("process: %1").arg(m_processName); +} + +void +ExternalProcessAction::fire() +{ + std::cerr << "ExternalProcessAction(\"" << getName().toStdString() << "\")::fire" + << std::endl; + QProcess::startDetached(m_processName, m_args); +} + diff -r b30fcffc5000 -r c1669af82d6e host/ExternalProcessAction.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/host/ExternalProcessAction.h Mon Nov 27 11:32:40 2006 +0000 @@ -0,0 +1,26 @@ +/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ + +#ifndef _EXTERNAL_PROCESS_ACTION_H_ +#define _EXTERNAL_PROCESS_ACTION_H_ + +#include "Action.h" + +#include + +class ExternalProcessAction : public Action +{ + Q_OBJECT + +public: + ExternalProcessAction(QString processName, QStringList args); + virtual ~ExternalProcessAction(); + + virtual QString getName() const; + virtual void fire(); + +protected: + QString m_processName; + QStringList m_args; +}; + +#endif diff -r b30fcffc5000 -r c1669af82d6e host/ImageAction.cpp --- a/host/ImageAction.cpp Mon Nov 27 11:03:52 2006 +0000 +++ b/host/ImageAction.cpp Mon Nov 27 11:32:40 2006 +0000 @@ -25,7 +25,7 @@ void ImageAction::fire() { - std::cerr << "ImageAction(\"" << getName().toStdString() << "\"::fire" + std::cerr << "ImageAction(\"" << getName().toStdString() << "\")::fire" << std::endl; emit showImage(m_imageName); } diff -r b30fcffc5000 -r c1669af82d6e host/SimpleXMLRuleLoader.cpp --- a/host/SimpleXMLRuleLoader.cpp Mon Nov 27 11:03:52 2006 +0000 +++ b/host/SimpleXMLRuleLoader.cpp Mon Nov 27 11:32:40 2006 +0000 @@ -3,6 +3,7 @@ #include "SimpleXMLRuleLoader.h" #include "Rule.h" #include "ImageAction.h" +#include "ExternalProcessAction.h" #include #include @@ -164,6 +165,12 @@ Action *action = new ImageAction(image); m_rule->setAction(action); std::cerr << "INFO: SimpleXMLRuleLoader: Added image action" << std::endl; + } else if (type == "process") { + QString process = atts.value("process").toLower(); + QStringList args = atts.value("arguments").split(','); + Action *action = new ExternalProcessAction(process, args); + m_rule->setAction(action); + std::cerr << "INFO: SimpleXMLRuleLoader: Added external process action" << std::endl; } else { std::cerr << "WARNING: SimpleXMLRuleLoader: Unknown action type \"" << type.toStdString() << "\"" << std::endl; diff -r b30fcffc5000 -r c1669af82d6e test.xml --- a/test.xml Mon Nov 27 11:03:52 2006 +0000 +++ b/test.xml Mon Nov 27 11:32:40 2006 +0000 @@ -12,6 +12,10 @@ + + + + diff -r b30fcffc5000 -r c1669af82d6e vamp-live-host.pro --- a/vamp-live-host.pro Mon Nov 27 11:03:52 2006 +0000 +++ b/vamp-live-host.pro Mon Nov 27 11:32:40 2006 +0000 @@ -24,6 +24,7 @@ audioio/AudioRecordSourceFactory.h \ audioio/BufferingAudioCallbackRecordTarget.h \ host/Action.h \ + host/ExternalProcessAction.h \ host/ImageAction.h \ host/ImageWindow.h \ host/Processor.h \ @@ -35,6 +36,7 @@ audioio/AudioRecordSourceFactory.cpp \ audioio/BufferingAudioCallbackRecordTarget.cpp \ host/host.cpp \ + host/ExternalProcessAction.cpp \ host/ImageAction.cpp \ host/ImageWindow.cpp \ host/Processor.cpp \