/* ZynAddSubFX - a software synthesizer BankView.h - View of Bank Widgets Copyright (C) 2016 Mark McCurry 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 BANKVIEW_H #define BANKVIEW_H #include "Fl_Osc_Widget.H" #include "Fl_Osc_Choice.H" #include #include #include #include "common.H" class Bank; class BankView; class Fl_Check_Button; class BankList : public Fl_Osc_Choice { public: BankList(int x,int y, int w, int h, const char *label=0); void init(std::string path); void OSC_raw(const char *msg); }; class BankSlot : public Fl_Button { public: BankSlot(int x,int y, int w, int h, const char *label=0); int handle(int event); void init(int nslot_, BankView *bv_); void update(const char *name__, const char *fname__); bool empty(void) const; const char *name(void) const; const char *filename(void) const; private: std::string name_; std::string filename_; char labelstr[128]; int nslot; BankView *bv; }; class BankViewControls: public Fl_Group { public: BankViewControls(int x,int y, int w, int h, const char *label=0); void init(BankView *bv_); int mode(void) const; void mode(int); private: Fl_Check_Button *read; Fl_Check_Button *write; Fl_Check_Button *clear; Fl_Check_Button *swap; //1 -> read //2 -> write //3 -> clear //4 -> swap int mode_; static void cb_clearbutton(Fl_Check_Button*, void*); static void cb_readbutton(Fl_Check_Button*, void*); static void cb_writebutton(Fl_Check_Button*, void*); }; class BankView: public Fl_Group, public Fl_Osc_Widget { public: BankView(int x,int y, int w, int h, const char *label=0); ~BankView(void); void init(Fl_Osc_Interface *osc_, BankViewControls *bvc_, int *npart_); void react(int event, int slot); virtual void OSC_raw(const char *msg) override; void cbwig(Fl_Widget *w); void refresh(void); private: BankViewControls *bvc; BankSlot *slots[160]; //XXX TODO locked banks... int nselected; int *npart; Fl_Widget *cbwig_; }; #endif