@@ -45,6 +45,7 @@ HEADERS = MousePlugin.h \ | |||
../../ChannelHandler.h \ | |||
../../Sample.h \ | |||
scratch.h \ | |||
../Widgets/Fl_LED_Button.H \ | |||
../../../GUI/Widgets/SpiralGUI.H | |||
SOURCES = MousePlugin.C \ | |||
MousePluginGUI.C \ | |||
@@ -53,6 +54,7 @@ SOURCES = MousePlugin.C \ | |||
../../ChannelHandler.C \ | |||
../../Sample.C \ | |||
scratch.C \ | |||
../Widgets/Fl_LED_Button.cxx \ | |||
../../../GUI/Widgets/SpiralGUI.C | |||
OBJECTS = MousePlugin.o \ | |||
MousePluginGUI.o \ | |||
@@ -61,6 +63,7 @@ OBJECTS = MousePlugin.o \ | |||
../../ChannelHandler.o \ | |||
../../Sample.o \ | |||
scratch.o \ | |||
../Widgets/Fl_LED_Button.o \ | |||
../../../GUI/Widgets/SpiralGUI.o | |||
INTERFACES = | |||
UICDECLS = | |||
@@ -128,6 +131,9 @@ install: | |||
../../ChannelHandler.h \ | |||
../../../GUI/Widgets/SpiralGUI.H | |||
../Widgets/Fl_LED_Button.o: ../Widgets/Fl_LED_Button.cxx \ | |||
../Widgets/Fl_LED_Button.H | |||
../../../GUI/Widgets/SpiralGUI.o: ../../../GUI/Widgets/SpiralGUI.C \ | |||
../../../GUI/Widgets/SpiralGUI.H | |||
@@ -148,6 +154,7 @@ MousePluginGUI.o: MousePluginGUI.C \ | |||
MousePlugin.h \ | |||
../SpiralPluginGUI.h \ | |||
../SpiralPlugin.h \ | |||
../Widgets/Fl_LED_Button.H \ | |||
../../../GUI/Widgets/SpiralGUI.H \ | |||
../../Sample.h \ | |||
scratch.h | |||
@@ -18,7 +18,7 @@ | |||
*/ | |||
#define SCRATCH_DEVICE "/dev/ttyS1" | |||
#define SCRATCH_DEVICE "/dev/ttyS0" | |||
#include "MousePlugin.h" | |||
#include "MousePluginGUI.h" | |||
@@ -38,37 +38,34 @@ string SpiralPlugin_GetGroupName() { return "InputOutput"; } | |||
/////////////////////////////////////////////////////// | |||
//static const HostInfo* host; | |||
MousePluginSingleton* MousePluginSingleton::m_Singleton = NULL; | |||
int MousePlugin::m_RefCount=0; | |||
/////////////////////////////////////////////////////// | |||
MousePluginSingleton::MousePluginSingleton() { | |||
scr = new scratch(SCRATCH_DEVICE); // create scratch object | |||
} | |||
MousePluginSingleton::~MousePluginSingleton() { | |||
if (scr!=NULL) { | |||
delete scr; | |||
} | |||
if (scr!=NULL) delete scr; | |||
} | |||
/////////////////////////////////////////////////////// | |||
MousePlugin::MousePlugin(): | |||
m_Port ('0'), | |||
m_Data (0.0) | |||
{ | |||
m_RefCount++; | |||
m_PluginInfo.Name = "Mouse"; | |||
m_PluginInfo.Width = 70; | |||
m_PluginInfo.Height = 125; | |||
m_PluginInfo.Width = 200; | |||
m_PluginInfo.Height = 400; | |||
m_PluginInfo.NumInputs = 1; | |||
m_PluginInfo.NumOutputs = 1; | |||
m_PluginInfo.PortTips.push_back ("Trigger"); | |||
m_PluginInfo.PortTips.push_back ("Output"); | |||
m_AudioCH->Register ("Port", &m_Port); | |||
m_Version = 1; | |||
} | |||
MousePlugin::~MousePlugin() { | |||
@@ -88,6 +85,15 @@ SpiralGUIType *MousePlugin::CreateGUI() { | |||
return new MousePluginGUI (m_PluginInfo.Width, m_PluginInfo.Height, this, m_AudioCH, m_HostInfo); | |||
} | |||
void MousePlugin::ExecuteCommands () { | |||
if (m_AudioCH->IsCommandWaiting ()) { | |||
switch (m_AudioCH->GetCommand()) { | |||
case (SETPORT) : // do something | |||
break; | |||
} | |||
} | |||
} | |||
void MousePlugin::Execute() { | |||
float trigger = 1.0; | |||
if (GetOutputBuf(0)) { | |||
@@ -15,7 +15,7 @@ | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
*/ | |||
#ifndef MousePlugin_H | |||
#define MousePlugin_H | |||
@@ -51,11 +51,13 @@ class MousePlugin : public SpiralPlugin { | |||
virtual PluginInfo& Initialise (const HostInfo *Host); | |||
virtual SpiralGUIType* CreateGUI(); | |||
virtual void Execute(); | |||
virtual void ExecuteCommands(); | |||
virtual void StreamOut (ostream &s); | |||
virtual void StreamIn (istream &s); | |||
//float getData() { return data; } | |||
enum GUICommands {NONE, SETPORT}; | |||
private: | |||
static int m_RefCount; | |||
char m_Port; | |||
float m_Data; | |||
friend istream &operator>> (istream &s, MousePlugin &o); | |||
friend ostream &operator<< (ostream &s, MousePlugin &o); | |||
@@ -21,24 +21,18 @@ | |||
#include <FL/fl_draw.h> | |||
#include <FL/fl_draw.H> | |||
static const int GUI_COLOUR = 154; | |||
static const int GUIBG_COLOUR = 144; | |||
static const int GUIBG2_COLOUR = 145; | |||
ScratchWidget::ScratchWidget (int x, int y, int w, int h, const char *l, int BUFSIZE) : | |||
ScratchWidget::ScratchWidget (int x, int y, int w, int h, const char *l) : | |||
Fl_Widget (x, y, w, h, l), | |||
m_Data (0.0), | |||
m_Channels (1), | |||
m_Bufsize (BUFSIZE) | |||
m_Data (0.0) | |||
{ | |||
} | |||
void ScratchWidget::draw() { | |||
fl_color (GUIBG_COLOUR); | |||
fl_color (color ()); | |||
fl_rectf (x(), y(), w(), h()); | |||
fl_push_clip (x(), y(), w(), h()); | |||
int val = (int)(((m_Data * -1) + 1) * (h() / 2.0)); | |||
fl_color (FL_WHITE); | |||
fl_color (selection_color ()); | |||
fl_rectf (x(), y() + val, w(), h()); | |||
fl_pop_clip(); | |||
} | |||
@@ -48,7 +42,23 @@ void ScratchWidget::draw() { | |||
MousePluginGUI::MousePluginGUI (int w, int h, MousePlugin *o, ChannelHandler *ch, const HostInfo *Info) : | |||
SpiralPluginGUI (w, h, o, ch) | |||
{ | |||
m_Scope = new ScratchWidget (5, 20, 60, 100, "Scratch", Info->BUFSIZE); | |||
m_Port0 = new Fl_LED_Button (0, 10, 23, 23); | |||
m_Port0->type (FL_RADIO_BUTTON); | |||
m_Port0->labelsize (10); | |||
m_Port0->label ("ttyS0"); | |||
m_Port0->set(); | |||
m_Port0->callback ((Fl_Callback*)cb_Port0); | |||
m_Port1 = new Fl_LED_Button (50, 10, 23, 23); | |||
m_Port1->type (FL_RADIO_BUTTON); | |||
m_Port1->labelsize (10); | |||
m_Port1->label ("ttyS1"); | |||
m_Port1->callback ((Fl_Callback*)cb_Port1); | |||
m_Scope = new ScratchWidget (5, 40, 60, 100, "Scratch"); | |||
m_Scope->color(Info->SCOPE_BG_COLOUR); | |||
m_Scope->selection_color(Info->SCOPE_FG_COLOUR); | |||
end(); | |||
} | |||
@@ -61,6 +71,24 @@ void MousePluginGUI::Update () { | |||
void MousePluginGUI::UpdateValues (SpiralPlugin* o) { | |||
} | |||
inline void MousePluginGUI::cb_Port0_i (Fl_LED_Button* o, void* v) { | |||
m_GUICH->Set("Port", '0'); | |||
m_GUICH->SetCommand (MousePlugin::SETPORT); | |||
} | |||
void MousePluginGUI::cb_Port0 (Fl_LED_Button* o, void* v) { | |||
((MousePluginGUI*)(o->parent ()))->cb_Port0 (o, v); | |||
} | |||
inline void MousePluginGUI::cb_Port1_i (Fl_LED_Button* o, void* v) { | |||
m_GUICH->Set("Port", '1'); | |||
m_GUICH->SetCommand (MousePlugin::SETPORT); | |||
} | |||
void MousePluginGUI::cb_Port1 (Fl_LED_Button* o, void* v) { | |||
((MousePluginGUI*)(o->parent ()))->cb_Port1 (o, v); | |||
} | |||
const string MousePluginGUI::GetHelpText (const string &loc) { | |||
return string("") | |||
+ "\n" | |||
@@ -23,18 +23,13 @@ | |||
#include <FL/Fl.H> | |||
#include "MousePlugin.h" | |||
#include "../SpiralPluginGUI.h" | |||
#include "../Widgets/Fl_LED_Button.H" | |||
class ScratchWidget : public Fl_Widget { | |||
public: | |||
ScratchWidget (int x, int y, int w, int h, const char *l, int BUFSIZE); | |||
ScratchWidget (int x, int y, int w, int h, const char *l); | |||
void draw(); | |||
void SetNumChannels (int s) { m_Channels = s; } | |||
float m_Data; | |||
int m_Channels; | |||
private: | |||
int m_GUIColour; | |||
int m_GUIBGColour; | |||
int m_Bufsize; | |||
}; | |||
class MousePluginGUI : public SpiralPluginGUI { | |||
@@ -45,11 +40,12 @@ class MousePluginGUI : public SpiralPluginGUI { | |||
protected: | |||
const string GetHelpText (const string &loc); | |||
private: | |||
// virtual void draw(); | |||
// void Display(float data); | |||
// virtual SpiralPlugin* GetPlugin() { return m_Plugin; } | |||
// MousePlugin *m_Plugin; | |||
ScratchWidget *m_Scope; | |||
Fl_LED_Button *m_Port0, *m_Port1; | |||
inline void cb_Port0_i (Fl_LED_Button *o, void *v); | |||
static void cb_Port0 (Fl_LED_Button *o, void *v); | |||
inline void cb_Port1_i (Fl_LED_Button *o, void *v); | |||
static void cb_Port1 (Fl_LED_Button *o, void *v); | |||
}; | |||
#endif |
@@ -15,7 +15,7 @@ | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
*/ | |||
#ifndef SCRATCH_H | |||
#define SCRATCH_H | |||
@@ -29,26 +29,21 @@ | |||
#include <iostream.h> | |||
#include <pthread.h> | |||
class scratch | |||
{ | |||
public: | |||
scratch(char *dev); | |||
~scratch(); | |||
void setData(char c); | |||
char getData(); | |||
void stop(); | |||
private: | |||
pthread_t scratch_thread; | |||
pthread_mutex_t mutex; | |||
char data; | |||
class scratch { | |||
public: | |||
scratch (char *dev); | |||
~scratch(); | |||
void setData(char c); | |||
char getData(); | |||
void stop(); | |||
private: | |||
pthread_t scratch_thread; | |||
pthread_mutex_t mutex; | |||
char data; | |||
}; | |||
void openSerialPort(char *dev); | |||
void openSerialPort (char *dev); | |||
void closeSerialPort(); | |||
void listen(scratch *scr); | |||
void listen (scratch *scr); | |||
#endif |
@@ -1402,7 +1402,7 @@ inline void SynthModular::cb_Connection_i(Fl_Canvas* o, void* v) | |||
} | |||
if (!di->second->m_Device->SetInput(Wire->InputPort,(const Sample*)sample)) | |||
{ | |||
{ | |||
char num[32]; | |||
sprintf(num,"%d,%d",Wire->InputID,Wire->InputPort); | |||
SpiralInfo::Alert("Warning: Connection problem - can't find source input "+string(num)); | |||
@@ -1455,12 +1455,12 @@ void SynthModular::LoadPatch(const char *fn) | |||
{ | |||
ifstream in(fn); | |||
if (in) | |||
{ | |||
if (in) | |||
{ | |||
fstream inf; | |||
inf.open(fn, std::ios::in); | |||
m_FilePath=fn; | |||
m_FilePath=fn; | |||
ClearUp(); | |||
inf>>*this; | |||