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[] = { 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)}, {"Pickup", pickup_effect, G_N_ELEMENTS(pickup_effect)},
{"Wah", gnx3k_wah_effect, G_N_ELEMENTS(gnx3k_wah_effect)}, {"Wah", gnx3k_wah_effect, G_N_ELEMENTS(gnx3k_wah_effect)},
{"Whammy/IPS", gnx3k_whammy_effect, G_N_ELEMENTS(gnx3k_whammy_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)}, {"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[] = { static Banks rp_banks[] = {
{"User Presets", PRESETS_USER}, {"User Presets", PRESETS_USER},
{"System Presets", PRESETS_SYSTEM}, {"System Presets", PRESETS_SYSTEM},
@@ -1988,12 +1991,29 @@ static Banks gnx3k_banks[] = {
{"Factory 2", PRESETS_FACTORY2}, {"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 = { static Device rp250 = {
.name = "DigiTech RP250", .name = "DigiTech RP250",
.family_id = 0x5E, .family_id = 0x5E,
.product_id = 0x02, .product_id = 0x02,
.effects = rp250_effects, .pages = rp250_pages,
.n_effects = G_N_ELEMENTS(rp250_effects), .n_pages = G_N_ELEMENTS(rp250_pages),
.banks = rp_banks, .banks = rp_banks,
.n_banks = G_N_ELEMENTS(rp_banks), .n_banks = G_N_ELEMENTS(rp_banks),
}; };
@@ -2002,8 +2022,8 @@ static Device rp500 = {
.name = "DigiTech RP500", .name = "DigiTech RP500",
.family_id = 0x5E, .family_id = 0x5E,
.product_id = 0x05, .product_id = 0x05,
.effects = rp500_effects, .pages = rp500_pages,
.n_effects = G_N_ELEMENTS(rp500_effects), .n_pages = G_N_ELEMENTS(rp500_pages),
.banks = rp_banks, .banks = rp_banks,
.n_banks = G_N_ELEMENTS(rp_banks), .n_banks = G_N_ELEMENTS(rp_banks),
}; };
@@ -2012,8 +2032,8 @@ static Device gnx4 = {
.name = "DigiTech GNX4", .name = "DigiTech GNX4",
.family_id = 0x5C, .family_id = 0x5C,
.product_id = 0x03, .product_id = 0x03,
.effects = gnx4_effects, .pages = gnx4_pages,
.n_effects = G_N_ELEMENTS(gnx4_effects), .n_pages = G_N_ELEMENTS(gnx4_pages),
.banks = gnx4_banks, .banks = gnx4_banks,
.n_banks = G_N_ELEMENTS(gnx4_banks), .n_banks = G_N_ELEMENTS(gnx4_banks),
}; };
@@ -2022,8 +2042,8 @@ static Device gnx3000 = {
.name = "DigiTech GNX3000", .name = "DigiTech GNX3000",
.family_id = 0x5C, .family_id = 0x5C,
.product_id = 0x04, .product_id = 0x04,
.effects = gnx3000_effects, .pages = gnx3000_pages,
.n_effects = G_N_ELEMENTS(gnx3000_effects), .n_pages = G_N_ELEMENTS(gnx3000_pages),
.banks = gnx3k_banks, .banks = gnx3k_banks,
.n_banks = G_N_ELEMENTS(gnx3k_banks), .n_banks = G_N_ELEMENTS(gnx3k_banks),
}; };

View File

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

28
gui.c
View File

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