1 /* SpiralPlugin 2 * Copyleft (C) 2000 David Griffiths <dave@pawfal.org> 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 */ 18 19 #include <FL/Fl.H> 20 #include <FL/Fl_Window.H> 21 #include <FL/Fl_Group.H> 22 #include <FL/Fl_Counter.H> 23 #include "Fl_Loop.h" 24 #include "Fl_Trigger.h" 25 26 #include "SpiralLoopPlugin.h" 27 #include "../SpiralPluginGUI.h" 28 #include "../Widgets/Fl_Knob.H" 29 #include "../Widgets/Fl_LED_Button.H" 30 31 #ifndef MixerGUI 32 #define MixerGUI 33 34 35 class SpiralLoopPluginGUI : public SpiralPluginGUI 36 { 37 public: 38 SpiralLoopPluginGUI(int w, int h, SpiralLoopPlugin *o,ChannelHandler *ch,const HostInfo *Info); 39 virtual void UpdateValues(SpiralPlugin *o); 40 virtual void Update(); 41 virtual const std::string GetHelpText(const std::string &loc); 42 43 private: 44 void UpdateSampleDisplay(); 45 46 Fl_LED_Button *m_Play; 47 48 Fl_Knob *m_Volume; 49 Fl_Knob *m_Speed; 50 Fl_Knob *m_Length; 51 Fl_Knob *m_WavSize; 52 53 Fl_Counter *m_Ticks; 54 55 Fl_Button *m_Rec; 56 Fl_Button *m_OverDub; 57 Fl_Button *m_Load; 58 Fl_Button *m_Save; 59 Fl_Button *m_Trig; 60 Fl_Button *m_Cut; 61 Fl_Button *m_Copy; 62 Fl_Button *m_Paste; 63 Fl_Button *m_PasteMix; 64 Fl_Button *m_ZeroR; 65 Fl_Button *m_ReverseR; 66 Fl_Button *m_SelectAll; 67 Fl_Button *m_Double; 68 Fl_Button *m_Half; 69 Fl_Button *m_Crop; 70 Fl_Button *m_Hold; 71 Fl_Button *m_Undo; 72 73 std::vector<Fl_Trigger*> m_TriggerVec; 74 75 Fl_Loop* m_LoopGUI; 76 77 char m_TextBuf[256]; 78 long m_SampleSize; 79 80 inline void cb_Play_i(Fl_LED_Button* o, void* v); 81 static void cb_Play(Fl_LED_Button* o, void* v); 82 83 inline void cb_Volume_i(Fl_Knob* o, void* v); 84 static void cb_Volume(Fl_Knob* o, void* v); 85 inline void cb_Speed_i(Fl_Knob* o, void* v); 86 static void cb_Speed(Fl_Knob* o, void* v); 87 inline void cb_Length_i(Fl_Knob* o, void* v); 88 static void cb_Length(Fl_Knob* o, void* v); 89 inline void cb_WavSize_i(Fl_Knob* o, void* v); 90 static void cb_WavSize(Fl_Knob* o, void* v); 91 92 inline void cb_Rec_i(Fl_Button* o, void* v); 93 static void cb_Rec(Fl_Button* o, void* v); 94 inline void cb_OverDub_i(Fl_Button* o, void* v); 95 static void cb_OverDub(Fl_Button* o, void* v); 96 inline void cb_Load_i(Fl_Button* o, void* v); 97 static void cb_Load(Fl_Button* o, void* v); 98 inline void cb_Save_i(Fl_Button* o, void* v); 99 static void cb_Save(Fl_Button* o, void* v); 100 inline void cb_Trig_i(Fl_Button* o, void* v); 101 static void cb_Trig(Fl_Button* o, void* v); 102 inline void cb_Cut_i(Fl_Button* o, void* v); 103 static void cb_Cut(Fl_Button* o, void* v); 104 inline void cb_Copy_i(Fl_Button* o, void* v); 105 static void cb_Copy(Fl_Button* o, void* v); 106 inline void cb_Paste_i(Fl_Button* o, void* v); 107 static void cb_Paste(Fl_Button* o, void* v); 108 inline void cb_PasteMix_i(Fl_Button* o, void* v); 109 static void cb_PasteMix(Fl_Button* o, void* v); 110 inline void cb_ZeroR_i(Fl_Button* o, void* v); 111 static void cb_ZeroR(Fl_Button* o, void* v); 112 inline void cb_ReverseR_i(Fl_Button* o, void* v); 113 static void cb_ReverseR(Fl_Button* o, void* v); 114 inline void cb_SelectAll_i(Fl_Button* o, void* v); 115 static void cb_SelectAll(Fl_Button* o, void* v); 116 inline void cb_Double_i(Fl_Button* o, void* v); 117 static void cb_Double(Fl_Button* o, void* v); 118 inline void cb_Half_i(Fl_Button* o, void* v); 119 static void cb_Half(Fl_Button* o, void* v); 120 inline void cb_Crop_i(Fl_Button* o, void* v); 121 static void cb_Crop(Fl_Button* o, void* v); 122 inline void cb_Hold_i(Fl_Button* o, void* v); 123 static void cb_Hold(Fl_Button* o, void* v); 124 inline void cb_Undo_i(Fl_Button* o, void* v); 125 static void cb_Undo(Fl_Button* o, void* v); 126 inline void cb_Trigger_i(Fl_Trigger* o, void* v); 127 static void cb_Trigger(Fl_Trigger* o, void* v); 128 inline void cb_Ticks_i(Fl_Counter* o, void* v); 129 static void cb_Ticks(Fl_Counter* o, void* v); 130 }; 131 #endif 132