Guitarix
gx_sequencer_settings.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2017 Hermann Meyer, Andreas Degert
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17 */
18
19#pragma once
20
21#ifndef SRC_HEADERS_GX_SEQUENCER_SETTINGS_H_
22#define SRC_HEADERS_GX_SEQUENCER_SETTINGS_H_
23
24
25#include <string>
26
27namespace gx_seq {
28
29class Drums {
30 public:
32 Gtk::Box* box;
34 : p(pa) {}
35 ~Drums() {}
36};
37
38class UPresetListStore: public Gtk::ListStore {
39 public:
40 class UPresetListColumns : public Gtk::TreeModel::ColumnRecord {
41 public:
42 Gtk::TreeModelColumn<Glib::ustring> name;
44 } col;
45 private:
46 UPresetListStore(): Gtk::ListStore(), col() {
47 set_column_types(col);
48 }
49 public:
50 static Glib::RefPtr<UPresetListStore> create() {
51 return Glib::RefPtr<UPresetListStore>(new UPresetListStore);
52 }
53};
54
55/****************************************************************
56 ** PluginPresetConnectWindow
57 */
58
59class PluginPresetConnectWindow: public Gtk::Window {
60 private:
61 Glib::RefPtr<UPresetListStore> upresetliststore;
63 Gtk::TreeView *treeview;
64 Gtk::Button *connectbutton;
65 void on_connect();
67 virtual bool on_key_press_event(GdkEventKey *event);
69 BaseObjectType* cobject, Glib::RefPtr<gx_gui::GxBuilder> bld,
71 PluginPresetConnectWindow(BaseObjectType* cobject,
72 Glib::RefPtr<gx_gui::GxBuilder> bld, gx_engine::GxMachineBase& machine);
73 public:
76 void run();
77};
78
79/****************************************************************
80 ** Sequencer Parameter Window
81 */
82
83class SEQWindow: public sigc::trackable {
84private:
86 Glib::RefPtr<gx_gui::GxBuilder> builder;
87 std::vector<Drums> drums;
95
96 // widget pointers
97 Gtk::Window* gtk_window;
98 Gtk::Viewport *vp;
99 Gtk::Label *preset_label;
100 Gtk::Box *preset_button;
101 Gxw::Switch *add_button;
102 Gxw::Regler *seq_pos;
103 Gxw::Regler *seq_count;
104 Gxw::Regler *seq_tact;
105 Gxw::Switch *next_preset;
106 Gxw::Switch *previus_preset;
107 Gxw::Switch *set_step;
108 Gxw::Switch *set_fstep;
109 Gxw::Switch *set_sync;
110 Gxw::Switch *reset_step;
111 Gtk::Label *step_label;
112 Gxw::ValueDisplay *step_value;
113
114 // signal functions
117 void on_selection_done(Gtk::Menu *presetMenu);
118 bool get_sequencer_pos(Gxw::Regler * regler, const std::string id);
119 bool on_key_press_event(GdkEventKey *event);
121 void seq_changed(const gx_engine::GxSeqSettings* seqc, Gtk::Box *box);
122 void make_state(gx_engine::GxSeqSettings& seqc, std::vector<int> seq);
125 void on_sec_length_changed(bool update);
127 void append_seq_block(Gtk::Box * box, gx_engine::SeqParameter *p, int r, int r_save);
128 void remove_seq_block(Gtk::Box * box, int r);
129 void reset_control(Glib::ustring id, float value);
130 int append_sequence(const gx_engine::GxSeqSettings* seqc, gx_engine::SeqParameter *p, std::vector<int> *sequence);
131 void make_preset_button(Gtk::Box *box);
132 void scroll_playhead(float value);
133 void append_plugin_preset(Glib::ustring name);
134 void append_plugin_preset_set(Glib::ustring name);
146 void init_sequences(gx_engine::SeqParameter *p, Gtk::Box* _box);
147 SEQWindow(const Glib::RefPtr<gx_gui::GxBuilder>& builder, gx_engine::SeqParameter *tomp_,
151
152public:
154 static SEQWindow *create(const std::string& unit_id, gx_engine::GxMachineBase& machine);
156};
157
158} /* end of gx_seq namespace*/
159#endif // SRC_HEADERS_GX_SEQUENCER_SETTINGS_H_
Drums(gx_engine::SeqParameter *pa)
gx_engine::SeqParameter * p
Glib::RefPtr< UPresetListStore > upresetliststore
gx_engine::GxMachineBase & machine
virtual bool on_key_press_event(GdkEventKey *event)
PluginPresetConnectWindow(BaseObjectType *cobject, Glib::RefPtr< gx_gui::GxBuilder > bld, gx_engine::GxMachineBase &machine)
static PluginPresetConnectWindow * create(gx_engine::GxMachineBase &machine)
static PluginPresetConnectWindow * create_from_builder(BaseObjectType *cobject, Glib::RefPtr< gx_gui::GxBuilder > bld, gx_engine::GxMachineBase &machine)
void append_plugin_preset_set(Glib::ustring name)
void check_preset_label()
Gxw::ValueDisplay * step_value
void remove_seq_block(Gtk::Box *box, int r)
Gxw::Switch * previus_preset
SEQWindow(const Glib::RefPtr< gx_gui::GxBuilder > &builder, gx_engine::SeqParameter *tomp_, gx_engine::SeqParameter *tomp1_, gx_engine::SeqParameter *tomp2_, gx_engine::SeqParameter *kickp_, gx_engine::SeqParameter *snarep_, gx_engine::SeqParameter *hatp_, gx_engine::GxMachineBase &machine_)
void on_preset_popup_clicked()
void on_previus_preset()
void append_plugin_preset(Glib::ustring name)
void on_previus_preset_set()
void append_seq_block(Gtk::Box *box, gx_engine::SeqParameter *p, int r, int r_save)
std::vector< Drums > drums
void make_preset_button(Gtk::Box *box)
static SEQWindow * create(const std::string &unit_id, gx_engine::GxMachineBase &machine)
void on_sec_tact_changed()
void on_sec_length_changed(bool update)
void reset_control(Glib::ustring id, float value)
void on_next_preset_set()
void scroll_playhead(float value)
void make_state(gx_engine::GxSeqSettings &seqc, std::vector< int > seq)
int append_sequence(const gx_engine::GxSeqSettings *seqc, gx_engine::SeqParameter *p, std::vector< int > *sequence)
Glib::RefPtr< gx_gui::GxBuilder > builder
bool on_key_press_event(GdkEventKey *event)
void on_selection_done(Gtk::Menu *presetMenu)
void on_seq_button_clicked(Gtk::Box *box, gx_engine::SeqParameter *p)
void seq_changed(const gx_engine::GxSeqSettings *seqc, Gtk::Box *box)
void init_sequences(gx_engine::SeqParameter *p, Gtk::Box *_box)
void on_preset_add_clicked()
void on_seq_button_clicked_set(Gtk::Box *box, gx_engine::SeqParameter *p)
gx_engine::GxMachineBase & machine
bool get_sequencer_pos(Gxw::Regler *regler, const std::string id)
Gtk::TreeModelColumn< Glib::ustring > name
static Glib::RefPtr< UPresetListStore > create()
gx_seq::UPresetListStore::UPresetListColumns col