code reordering, no functional changes
This commit is contained in:
226
gui.c
226
gui.c
@@ -16,34 +16,7 @@
|
|||||||
|
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#include "gdigi.h"
|
#include "gdigi.h"
|
||||||
|
#include "gui.h"
|
||||||
void value_changed_cb(GtkSpinButton *spinbutton, void (*callback)(int))
|
|
||||||
{
|
|
||||||
int val = gtk_spin_button_get_value_as_int(spinbutton);
|
|
||||||
callback(val);
|
|
||||||
}
|
|
||||||
|
|
||||||
void value_changed_option_cb(GtkSpinButton *spinbutton, void (*callback)(guint32, int))
|
|
||||||
{
|
|
||||||
int val = gtk_spin_button_get_value_as_int(spinbutton);
|
|
||||||
guint32 option = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(spinbutton), "option_id"));
|
|
||||||
callback(option, val);
|
|
||||||
}
|
|
||||||
|
|
||||||
void toggled_cb(GtkToggleButton *button, void (*callback)(gboolean))
|
|
||||||
{
|
|
||||||
gboolean val = gtk_toggle_button_get_active(button);
|
|
||||||
callback(val);
|
|
||||||
}
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
char *label;
|
|
||||||
void (*callback)(int);
|
|
||||||
void (*callback_with_option)(guint32, int);
|
|
||||||
gdouble min;
|
|
||||||
gdouble max;
|
|
||||||
guint32 option;
|
|
||||||
} SettingsWidget;
|
|
||||||
|
|
||||||
static SettingsWidget wah_widgets[] = {
|
static SettingsWidget wah_widgets[] = {
|
||||||
{"Wah min", set_wah_min, NULL, 0.0, 99.0},
|
{"Wah min", set_wah_min, NULL, 0.0, 99.0},
|
||||||
@@ -389,50 +362,6 @@ static SettingsWidget reverb_emt240_plate_widgets[] = {
|
|||||||
{"Level", NULL, set_reverb_option, 0.0, 99.0, EMT240_PLATE_LEVEL},
|
{"Level", NULL, set_reverb_option, 0.0, 99.0, EMT240_PLATE_LEVEL},
|
||||||
};
|
};
|
||||||
|
|
||||||
GtkWidget *create_table(SettingsWidget *widgets, gint amt)
|
|
||||||
{
|
|
||||||
GtkWidget *table, *label, *widget;
|
|
||||||
GtkObject *adj;
|
|
||||||
int x;
|
|
||||||
|
|
||||||
table = gtk_table_new(2, amt, FALSE);
|
|
||||||
|
|
||||||
for (x = 0; x<amt; x++) {
|
|
||||||
label = gtk_label_new(widgets[x].label);
|
|
||||||
adj = gtk_adjustment_new(0.0, widgets[x].min, widgets[x].max, 1.0, 1.0, 1.0);
|
|
||||||
widget = gtk_spin_button_new(GTK_ADJUSTMENT(adj), 1.0, 0);
|
|
||||||
if (widgets[x].callback)
|
|
||||||
g_signal_connect(G_OBJECT(widget), "value-changed", G_CALLBACK(value_changed_cb), widgets[x].callback);
|
|
||||||
|
|
||||||
if (widgets[x].callback_with_option) {
|
|
||||||
g_object_set_data(G_OBJECT(widget), "option_id", GINT_TO_POINTER(widgets[x].option));
|
|
||||||
g_signal_connect(G_OBJECT(widget), "value-changed", G_CALLBACK(value_changed_option_cb), widgets[x].callback_with_option);
|
|
||||||
}
|
|
||||||
|
|
||||||
gtk_table_attach(GTK_TABLE(table), label, 0, 1, x, x+1, GTK_SHRINK, GTK_SHRINK, 2, 2);
|
|
||||||
gtk_table_attach(GTK_TABLE(table), widget, 1, 2, x, x+1, GTK_SHRINK, GTK_SHRINK, 2, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
return table;
|
|
||||||
}
|
|
||||||
|
|
||||||
GtkWidget *create_on_off_button(const gchar *label, gboolean state, void (*callback)(int))
|
|
||||||
{
|
|
||||||
GtkWidget *button = gtk_toggle_button_new_with_label(label);
|
|
||||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), state);
|
|
||||||
g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(toggled_cb), callback);
|
|
||||||
return button;
|
|
||||||
}
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
gint id;
|
|
||||||
gchar *label;
|
|
||||||
void (*callback)(int);
|
|
||||||
SettingsWidget *widgets;
|
|
||||||
gint widgets_amt;
|
|
||||||
GtkWidget *child; /* child widget - set inside create_widget_container */
|
|
||||||
} WidgetContainer;
|
|
||||||
|
|
||||||
static WidgetContainer wah_container[] = {
|
static WidgetContainer wah_container[] = {
|
||||||
{WAH_TYPE_CRY, "Cry wah", set_wah_type, wah_widgets, G_N_ELEMENTS(wah_widgets), NULL},
|
{WAH_TYPE_CRY, "Cry wah", set_wah_type, wah_widgets, G_N_ELEMENTS(wah_widgets), NULL},
|
||||||
{WAH_TYPE_FULLRANGE, "Fullrange wah", set_wah_type, wah_widgets, G_N_ELEMENTS(wah_widgets), NULL},
|
{WAH_TYPE_FULLRANGE, "Fullrange wah", set_wah_type, wah_widgets, G_N_ELEMENTS(wah_widgets), NULL},
|
||||||
@@ -511,6 +440,103 @@ static WidgetContainer eq_container[] = {
|
|||||||
{EQ_TYPE_WARM, "Warm", set_eq_type, eq_widgets, G_N_ELEMENTS(eq_widgets), NULL},
|
{EQ_TYPE_WARM, "Warm", set_eq_type, eq_widgets, G_N_ELEMENTS(eq_widgets), NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static VBoxWidget wah_vbox[] = {
|
||||||
|
{"Wah", FALSE, set_wah_on_off, wah_container, G_N_ELEMENTS(wah_container)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static VBoxWidget comp_vbox[] = {
|
||||||
|
{"Compressor", FALSE, set_comp_on_off, comp_container, G_N_ELEMENTS(comp_container)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static VBoxWidget dist_vbox[] = {
|
||||||
|
{"Distortion", FALSE, set_dist_on_off, dist_container, G_N_ELEMENTS(dist_container)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static VBoxWidget noisegate_vbox[] = {
|
||||||
|
{"Noisegate", FALSE, set_noisegate_on_off, noisegate_container, G_N_ELEMENTS(noisegate_container)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static VBoxWidget chorusfx_vbox[] = {
|
||||||
|
{"Chorus/FX", FALSE, set_chorusfx_on_off, chorusfx_container, G_N_ELEMENTS(chorusfx_container)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static VBoxWidget delay_vbox[] = {
|
||||||
|
{"Delay", FALSE, set_delay_on_off, delay_container, G_N_ELEMENTS(delay_container)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static VBoxWidget reverb_vbox[] = {
|
||||||
|
{"Reverb", FALSE, set_reverb_on_off, reverb_container, G_N_ELEMENTS(reverb_container)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static VBoxWidget eq_vbox[] = {
|
||||||
|
{"EQ", FALSE, set_eq_on_off, eq_container, G_N_ELEMENTS(eq_container)},
|
||||||
|
};
|
||||||
|
|
||||||
|
static VBoxes vboxes[] = {
|
||||||
|
{wah_vbox, G_N_ELEMENTS(wah_vbox)},
|
||||||
|
{eq_vbox, G_N_ELEMENTS(eq_vbox)},
|
||||||
|
{comp_vbox, G_N_ELEMENTS(comp_vbox)},
|
||||||
|
{dist_vbox, G_N_ELEMENTS(dist_vbox)},
|
||||||
|
{noisegate_vbox, G_N_ELEMENTS(noisegate_vbox)},
|
||||||
|
{chorusfx_vbox, G_N_ELEMENTS(chorusfx_vbox)},
|
||||||
|
{delay_vbox, G_N_ELEMENTS(delay_vbox)},
|
||||||
|
{reverb_vbox, G_N_ELEMENTS(reverb_vbox)},
|
||||||
|
};
|
||||||
|
|
||||||
|
void value_changed_cb(GtkSpinButton *spinbutton, void (*callback)(int))
|
||||||
|
{
|
||||||
|
int val = gtk_spin_button_get_value_as_int(spinbutton);
|
||||||
|
callback(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
void value_changed_option_cb(GtkSpinButton *spinbutton, void (*callback)(guint32, int))
|
||||||
|
{
|
||||||
|
int val = gtk_spin_button_get_value_as_int(spinbutton);
|
||||||
|
guint32 option = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(spinbutton), "option_id"));
|
||||||
|
callback(option, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
void toggled_cb(GtkToggleButton *button, void (*callback)(gboolean))
|
||||||
|
{
|
||||||
|
gboolean val = gtk_toggle_button_get_active(button);
|
||||||
|
callback(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
GtkWidget *create_table(SettingsWidget *widgets, gint amt)
|
||||||
|
{
|
||||||
|
GtkWidget *table, *label, *widget;
|
||||||
|
GtkObject *adj;
|
||||||
|
int x;
|
||||||
|
|
||||||
|
table = gtk_table_new(2, amt, FALSE);
|
||||||
|
|
||||||
|
for (x = 0; x<amt; x++) {
|
||||||
|
label = gtk_label_new(widgets[x].label);
|
||||||
|
adj = gtk_adjustment_new(0.0, widgets[x].min, widgets[x].max, 1.0, 1.0, 1.0);
|
||||||
|
widget = gtk_spin_button_new(GTK_ADJUSTMENT(adj), 1.0, 0);
|
||||||
|
if (widgets[x].callback)
|
||||||
|
g_signal_connect(G_OBJECT(widget), "value-changed", G_CALLBACK(value_changed_cb), widgets[x].callback);
|
||||||
|
|
||||||
|
if (widgets[x].callback_with_option) {
|
||||||
|
g_object_set_data(G_OBJECT(widget), "option_id", GINT_TO_POINTER(widgets[x].option));
|
||||||
|
g_signal_connect(G_OBJECT(widget), "value-changed", G_CALLBACK(value_changed_option_cb), widgets[x].callback_with_option);
|
||||||
|
}
|
||||||
|
|
||||||
|
gtk_table_attach(GTK_TABLE(table), label, 0, 1, x, x+1, GTK_SHRINK, GTK_SHRINK, 2, 2);
|
||||||
|
gtk_table_attach(GTK_TABLE(table), widget, 1, 2, x, x+1, GTK_SHRINK, GTK_SHRINK, 2, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
return table;
|
||||||
|
}
|
||||||
|
|
||||||
|
GtkWidget *create_on_off_button(const gchar *label, gboolean state, void (*callback)(int))
|
||||||
|
{
|
||||||
|
GtkWidget *button = gtk_toggle_button_new_with_label(label);
|
||||||
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), state);
|
||||||
|
g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(toggled_cb), callback);
|
||||||
|
return button;
|
||||||
|
}
|
||||||
|
|
||||||
void combo_box_changed_cb(GtkComboBox *widget, WidgetContainer *widgets)
|
void combo_box_changed_cb(GtkComboBox *widget, WidgetContainer *widgets)
|
||||||
{
|
{
|
||||||
GtkWidget *child;
|
GtkWidget *child;
|
||||||
@@ -562,46 +588,6 @@ GtkWidget *create_widget_container(WidgetContainer *widgets, gint amt)
|
|||||||
return vbox;
|
return vbox;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
char *label;
|
|
||||||
gboolean value;
|
|
||||||
void (*callback)(gboolean);
|
|
||||||
WidgetContainer *widgets;
|
|
||||||
gint widgets_amt;
|
|
||||||
} VBoxWidget;
|
|
||||||
|
|
||||||
static VBoxWidget wah_vbox[] = {
|
|
||||||
{"Wah", FALSE, set_wah_on_off, wah_container, G_N_ELEMENTS(wah_container)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static VBoxWidget comp_vbox[] = {
|
|
||||||
{"Compressor", FALSE, set_comp_on_off, comp_container, G_N_ELEMENTS(comp_container)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static VBoxWidget dist_vbox[] = {
|
|
||||||
{"Distortion", FALSE, set_dist_on_off, dist_container, G_N_ELEMENTS(dist_container)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static VBoxWidget noisegate_vbox[] = {
|
|
||||||
{"Noisegate", FALSE, set_noisegate_on_off, noisegate_container, G_N_ELEMENTS(noisegate_container)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static VBoxWidget chorusfx_vbox[] = {
|
|
||||||
{"Chorus/FX", FALSE, set_chorusfx_on_off, chorusfx_container, G_N_ELEMENTS(chorusfx_container)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static VBoxWidget delay_vbox[] = {
|
|
||||||
{"Delay", FALSE, set_delay_on_off, delay_container, G_N_ELEMENTS(delay_container)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static VBoxWidget reverb_vbox[] = {
|
|
||||||
{"Reverb", FALSE, set_reverb_on_off, reverb_container, G_N_ELEMENTS(reverb_container)},
|
|
||||||
};
|
|
||||||
|
|
||||||
static VBoxWidget eq_vbox[] = {
|
|
||||||
{"EQ", FALSE, set_eq_on_off, eq_container, G_N_ELEMENTS(eq_container)},
|
|
||||||
};
|
|
||||||
|
|
||||||
GtkWidget *create_vbox(VBoxWidget *widgets, gint amt)
|
GtkWidget *create_vbox(VBoxWidget *widgets, gint amt)
|
||||||
{
|
{
|
||||||
GtkWidget *vbox;
|
GtkWidget *vbox;
|
||||||
@@ -627,22 +613,6 @@ GtkWidget *create_vbox(VBoxWidget *widgets, gint amt)
|
|||||||
return vbox;
|
return vbox;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
VBoxWidget *widget;
|
|
||||||
gint amt;
|
|
||||||
} VBoxes;
|
|
||||||
|
|
||||||
static VBoxes vboxes[] = {
|
|
||||||
{wah_vbox, G_N_ELEMENTS(wah_vbox)},
|
|
||||||
{eq_vbox, G_N_ELEMENTS(eq_vbox)},
|
|
||||||
{comp_vbox, G_N_ELEMENTS(comp_vbox)},
|
|
||||||
{dist_vbox, G_N_ELEMENTS(dist_vbox)},
|
|
||||||
{noisegate_vbox, G_N_ELEMENTS(noisegate_vbox)},
|
|
||||||
{chorusfx_vbox, G_N_ELEMENTS(chorusfx_vbox)},
|
|
||||||
{delay_vbox, G_N_ELEMENTS(delay_vbox)},
|
|
||||||
{reverb_vbox, G_N_ELEMENTS(reverb_vbox)},
|
|
||||||
};
|
|
||||||
|
|
||||||
void create_window()
|
void create_window()
|
||||||
{
|
{
|
||||||
GtkWidget *window;
|
GtkWidget *window;
|
||||||
|
|||||||
31
gui.h
31
gui.h
@@ -14,4 +14,35 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses>.
|
* along with this program. If not, see <http://www.gnu.org/licenses>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char *label;
|
||||||
|
void (*callback)(int);
|
||||||
|
void (*callback_with_option)(guint32, int);
|
||||||
|
gdouble min;
|
||||||
|
gdouble max;
|
||||||
|
guint32 option;
|
||||||
|
} SettingsWidget;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
gint id;
|
||||||
|
gchar *label;
|
||||||
|
void (*callback)(int);
|
||||||
|
SettingsWidget *widgets;
|
||||||
|
gint widgets_amt;
|
||||||
|
GtkWidget *child; /* child widget - set inside create_widget_container */
|
||||||
|
} WidgetContainer;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char *label;
|
||||||
|
gboolean value;
|
||||||
|
void (*callback)(gboolean);
|
||||||
|
WidgetContainer *widgets;
|
||||||
|
gint widgets_amt;
|
||||||
|
} VBoxWidget;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
VBoxWidget *widget;
|
||||||
|
gint amt;
|
||||||
|
} VBoxes;
|
||||||
|
|
||||||
void create_window();
|
void create_window();
|
||||||
|
|||||||
Reference in New Issue
Block a user