display GNX3000 settings in tabs

This commit is contained in:
Tomasz Moń
2009-06-21 20:05:42 +02:00
parent 18f137636d
commit ba04930133
3 changed files with 60 additions and 21 deletions

View File

@@ -1956,9 +1956,6 @@ static EffectList gnx4_effects[] = {
};
static EffectList gnx3000_effects[] = {
{"Channel 1", gnx3k_channel_1_effect, G_N_ELEMENTS(gnx3k_channel_1_effect)},
{"Channel 2", gnx3k_channel_2_effect, G_N_ELEMENTS(gnx3k_channel_2_effect)},
{"Amp Channel", gnx3k_amp_channel_effect, G_N_ELEMENTS(gnx3k_amp_channel_effect)},
{"Pickup", pickup_effect, G_N_ELEMENTS(pickup_effect)},
{"Wah", gnx3k_wah_effect, G_N_ELEMENTS(gnx3k_wah_effect)},
{"Whammy/IPS", gnx3k_whammy_effect, G_N_ELEMENTS(gnx3k_whammy_effect)},
@@ -1971,6 +1968,12 @@ static EffectList gnx3000_effects[] = {
{"Reverb", gnx3k_reverb_effect, G_N_ELEMENTS(gnx3k_reverb_effect)},
};
static EffectList gnx3000_genetx[] = {
{"Channel 1", gnx3k_channel_1_effect, G_N_ELEMENTS(gnx3k_channel_1_effect)},
{"Channel 2", gnx3k_channel_2_effect, G_N_ELEMENTS(gnx3k_channel_2_effect)},
{"Amp Channel", gnx3k_amp_channel_effect, G_N_ELEMENTS(gnx3k_amp_channel_effect)},
};
static Banks rp_banks[] = {
{"User Presets", PRESETS_USER},
{"System Presets", PRESETS_SYSTEM},
@@ -1988,12 +1991,29 @@ static Banks gnx3k_banks[] = {
{"Factory 2", PRESETS_FACTORY2},
};
static EffectPage rp250_pages[] = {
{"Effects", rp250_effects, G_N_ELEMENTS(rp250_effects), 2},
};
static EffectPage rp500_pages[] = {
{"Effects", rp500_effects, G_N_ELEMENTS(rp500_effects), 2},
};
static EffectPage gnx4_pages[] = {
{"Effects", gnx4_effects, G_N_ELEMENTS(gnx4_effects), 2},
};
static EffectPage gnx3000_pages[] = {
{"Effects", gnx3000_effects, G_N_ELEMENTS(gnx3000_effects), 2},
{"Amp/GeNetX", gnx3000_genetx, G_N_ELEMENTS(gnx3000_genetx), 1},
};
static Device rp250 = {
.name = "DigiTech RP250",
.family_id = 0x5E,
.product_id = 0x02,
.effects = rp250_effects,
.n_effects = G_N_ELEMENTS(rp250_effects),
.pages = rp250_pages,
.n_pages = G_N_ELEMENTS(rp250_pages),
.banks = rp_banks,
.n_banks = G_N_ELEMENTS(rp_banks),
};
@@ -2002,8 +2022,8 @@ static Device rp500 = {
.name = "DigiTech RP500",
.family_id = 0x5E,
.product_id = 0x05,
.effects = rp500_effects,
.n_effects = G_N_ELEMENTS(rp500_effects),
.pages = rp500_pages,
.n_pages = G_N_ELEMENTS(rp500_pages),
.banks = rp_banks,
.n_banks = G_N_ELEMENTS(rp_banks),
};
@@ -2012,8 +2032,8 @@ static Device gnx4 = {
.name = "DigiTech GNX4",
.family_id = 0x5C,
.product_id = 0x03,
.effects = gnx4_effects,
.n_effects = G_N_ELEMENTS(gnx4_effects),
.pages = gnx4_pages,
.n_pages = G_N_ELEMENTS(gnx4_pages),
.banks = gnx4_banks,
.n_banks = G_N_ELEMENTS(gnx4_banks),
};
@@ -2022,8 +2042,8 @@ static Device gnx3000 = {
.name = "DigiTech GNX3000",
.family_id = 0x5C,
.product_id = 0x04,
.effects = gnx3000_effects,
.n_effects = G_N_ELEMENTS(gnx3000_effects),
.pages = gnx3000_pages,
.n_pages = G_N_ELEMENTS(gnx3000_pages),
.banks = gnx3k_banks,
.n_banks = G_N_ELEMENTS(gnx3k_banks),
};

View File

@@ -61,6 +61,13 @@ typedef struct {
gint group_amt;
} ModifierGroup;
typedef struct {
gchar *name;
EffectList *effects;
gint n_effects;
gint n_rows;
} EffectPage;
typedef struct {
gchar *name;
PresetBank bank;
@@ -70,8 +77,8 @@ typedef struct {
gchar *name;
unsigned char family_id;
unsigned char product_id;
EffectList *effects;
gint n_effects;
EffectPage *pages;
gint n_pages;
Banks *banks;
gint n_banks;
} Device;

28
gui.c
View File

@@ -940,8 +940,10 @@ void gui_create(Device *device)
GtkWidget *vbox;
GtkWidget *hbox;
GtkWidget *widget;
GtkWidget *notebook;
GtkWidget *sw; /* scrolled window to carry preset treeview */
gint x;
gint i;
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "gdigi");
@@ -961,8 +963,8 @@ void gui_create(Device *device)
widget = create_preset_tree(device);
gtk_container_add(GTK_CONTAINER(sw), widget);
vbox = gtk_vbox_new(FALSE, 0);
gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 2);
notebook = gtk_notebook_new();
gtk_box_pack_start(GTK_BOX(hbox), notebook, TRUE, TRUE, 2);
knob_anim = gtk_knob_animation_new_from_inline(knob_pixbuf);
@@ -971,13 +973,23 @@ void gui_create(Device *device)
NULL, /* key destroy func */
(GDestroyNotify) widget_tree_elem_free);
for (x = 0; x<device->n_effects; x++) {
if ((x % ((device->n_effects+1)/2)) == 0) {
hbox = gtk_hbox_new(FALSE, 0);
gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 2);
gtk_notebook_set_show_tabs(GTK_NOTEBOOK(notebook), device->n_pages > 1 ? TRUE : FALSE);
for (i = 0; i<device->n_pages; i++) {
GtkWidget *label = NULL;
vbox = gtk_vbox_new(FALSE, 0);
label = gtk_label_new(device->pages[i].name);
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, label);
for (x = 0; x<device->pages[i].n_effects; x++) {
if ((x % ((device->pages[i].n_effects+1)/device->pages[i].n_rows)) == 0) {
hbox = gtk_hbox_new(FALSE, 0);
gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 2);
}
widget = create_vbox(device->pages[i].effects[x].effect, device->pages[i].effects[x].amt, device->pages[i].effects[x].label);
gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 2);
}
widget = create_vbox(device->effects[x].effect, device->effects[x].amt, device->effects[x].label);
gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 2);
}
apply_current_preset();