use GtkGrid instead of GtkTable

This commit is contained in:
Tomasz Moń
2011-10-15 16:24:57 +02:00
parent 2c921df204
commit fd0369dc7c

65
gui.c
View File

@@ -377,25 +377,27 @@ gboolean apply_current_preset_to_gui(gpointer data)
/** /**
* \param settings effect parameters * \param settings effect parameters
* \param amt amount of effect parameters * \param amt amount of effect parameters
* \param widget_table hash table matching settings pointer with created table (may be NULL) * \param widget_table hash table matching settings pointer with created grid (may be NULL)
* *
* Creates knobs that allow user to set effect parameters. * Creates knobs that allow user to set effect parameters.
* *
* \return GtkTable containing necessary widgets to set effect parameters. * \return GtkGrid containing necessary widgets to set effect parameters.
**/ **/
GtkWidget *create_table(EffectSettings *settings, gint amt, GHashTable *widget_table) GtkWidget *create_grid(EffectSettings *settings, gint amt, GHashTable *widget_table)
{ {
GtkWidget *table, *label, *widget, *knob; GtkWidget *grid, *label, *widget, *knob;
GtkAdjustment *adj; GtkAdjustment *adj;
int x; int x;
if (widget_table != NULL) { if (widget_table != NULL) {
table = g_hash_table_lookup(widget_table, settings); grid = g_hash_table_lookup(widget_table, settings);
if (table != NULL) if (grid != NULL)
return table; return grid;
} }
table = gtk_table_new(3, amt, FALSE); grid = gtk_grid_new();
gtk_grid_set_row_spacing(GTK_GRID(grid), 2);
gtk_grid_set_column_spacing(GTK_GRID(grid), 2);
for (x = 0; x<amt; x++) { for (x = 0; x<amt; x++) {
gdouble min, max; gdouble min, max;
@@ -413,6 +415,7 @@ GtkWidget *create_table(EffectSettings *settings, gint amt, GHashTable *widget_t
widget = gtk_spin_button_new(GTK_ADJUSTMENT(adj), 1.0, 0); widget = gtk_spin_button_new(GTK_ADJUSTMENT(adj), 1.0, 0);
gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(widget), FALSE); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(widget), FALSE);
gtk_spin_button_set_update_policy(GTK_SPIN_BUTTON(widget), GTK_UPDATE_IF_VALID); gtk_spin_button_set_update_policy(GTK_SPIN_BUTTON(widget), GTK_UPDATE_IF_VALID);
if (custom == TRUE) { if (custom == TRUE) {
g_signal_connect(G_OBJECT(widget), "input", G_CALLBACK(custom_value_input_cb), settings[x].values); g_signal_connect(G_OBJECT(widget), "input", G_CALLBACK(custom_value_input_cb), settings[x].values);
g_signal_connect(G_OBJECT(widget), "output", G_CALLBACK(custom_value_output_cb), settings[x].values); g_signal_connect(G_OBJECT(widget), "output", G_CALLBACK(custom_value_output_cb), settings[x].values);
@@ -420,18 +423,18 @@ GtkWidget *create_table(EffectSettings *settings, gint amt, GHashTable *widget_t
widget_tree_add(G_OBJECT(adj), settings[x].id, widget_tree_add(G_OBJECT(adj), settings[x].id,
settings[x].position, -1, -1); settings[x].position, -1, -1);
gtk_table_attach(GTK_TABLE(table), label, 0, 1, x, x+1, GTK_SHRINK, GTK_SHRINK, 2, 2); gtk_grid_attach(GTK_GRID(grid), label, 0, x, 1, 1);
gtk_table_attach(GTK_TABLE(table), knob, 1, 2, x, x+1, GTK_SHRINK, GTK_SHRINK, 2, 2); gtk_grid_attach(GTK_GRID(grid), knob, 1, x, 1, 1);
gtk_table_attach(GTK_TABLE(table), widget, 2, 3, x, x+1, GTK_SHRINK, GTK_SHRINK, 2, 2); gtk_grid_attach(GTK_GRID(grid), widget, 2, x, 1, 1);
g_signal_connect(G_OBJECT(adj), "value-changed", G_CALLBACK(value_changed_option_cb), &settings[x]); g_signal_connect(G_OBJECT(adj), "value-changed", G_CALLBACK(value_changed_option_cb), &settings[x]);
if (widget_table != NULL) { if (widget_table != NULL) {
g_hash_table_insert(widget_table, settings, table); g_hash_table_insert(widget_table, settings, grid);
} }
} }
return table; return grid;
} }
/** /**
@@ -550,7 +553,7 @@ GtkWidget *create_widget_container(EffectGroup *group, gint amt, gint id, gint p
if (group[x].label) { if (group[x].label) {
if (combo_box == NULL) { if (combo_box == NULL) {
combo_box = gtk_combo_box_text_new(); combo_box = gtk_combo_box_text_new();
gtk_container_add(GTK_CONTAINER(vbox), combo_box); gtk_box_pack_end(GTK_BOX(vbox), combo_box, FALSE, TRUE, 0);
g_signal_connect(G_OBJECT(combo_box), "changed", G_CALLBACK(combo_box_changed_cb), group); g_signal_connect(G_OBJECT(combo_box), "changed", G_CALLBACK(combo_box_changed_cb), group);
g_object_set_data(G_OBJECT(combo_box), "vbox", vbox); g_object_set_data(G_OBJECT(combo_box), "vbox", vbox);
} }
@@ -559,7 +562,7 @@ GtkWidget *create_widget_container(EffectGroup *group, gint amt, gint id, gint p
cmbox_no++; cmbox_no++;
if ((group[x].settings != NULL) && (group[x].settings_amt > 0)) { if ((group[x].settings != NULL) && (group[x].settings_amt > 0)) {
widget = create_table(group[x].settings, group[x].settings_amt, widget_table); widget = create_grid(group[x].settings, group[x].settings_amt, widget_table);
g_object_ref_sink(widget); g_object_ref_sink(widget);
} else } else
widget = NULL; widget = NULL;
@@ -577,8 +580,8 @@ GtkWidget *create_widget_container(EffectGroup *group, gint amt, gint id, gint p
g_free(name); g_free(name);
} else { } else {
if ((group[x].settings != NULL) && (group[x].settings_amt > 0)) { if ((group[x].settings != NULL) && (group[x].settings_amt > 0)) {
widget = create_table(group[x].settings, group[x].settings_amt, widget_table); widget = create_grid(group[x].settings, group[x].settings_amt, widget_table);
gtk_container_add(GTK_CONTAINER(vbox), widget); gtk_box_pack_end(GTK_BOX(vbox), widget, FALSE, TRUE, 0);
} }
} }
} }
@@ -601,7 +604,7 @@ GtkWidget *create_vbox(Effect *widgets, gint amt, gchar *label)
{ {
GtkWidget *vbox; GtkWidget *vbox;
GtkWidget *widget; GtkWidget *widget;
GtkWidget *table; GtkWidget *grid;
GtkWidget *container; GtkWidget *container;
GtkWidget *frame; GtkWidget *frame;
int x; int x;
@@ -611,13 +614,13 @@ GtkWidget *create_vbox(Effect *widgets, gint amt, gchar *label)
vbox = gtk_vbox_new(FALSE, 0); vbox = gtk_vbox_new(FALSE, 0);
table = gtk_table_new(2, amt, FALSE); grid = gtk_grid_new();
gtk_table_set_col_spacings(GTK_TABLE(table), 2); gtk_grid_set_column_spacing(GTK_GRID(grid), 2);
for (x = 0; x<amt; x++) { for (x = 0; x<amt; x++) {
if ((widgets[x].id != -1) && (widgets[x].position != -1)) { if ((widgets[x].id != -1) && (widgets[x].position != -1)) {
widget = create_on_off_button(&widgets[x]); widget = create_on_off_button(&widgets[x]);
gtk_table_attach_defaults(GTK_TABLE(table), widget, 0, 1, x, x+1); gtk_grid_attach(GTK_GRID(grid), widget, 0, x, 1, 1);
if (widgets[x].label) if (widgets[x].label)
y = 1; y = 1;
@@ -626,7 +629,7 @@ GtkWidget *create_vbox(Effect *widgets, gint amt, gchar *label)
} else if (widgets[x].label) { } else if (widgets[x].label) {
widget = gtk_label_new(widgets[x].label); widget = gtk_label_new(widgets[x].label);
gtk_table_attach_defaults(GTK_TABLE(table), widget, 0, 1, x, x+1); gtk_grid_attach(GTK_GRID(grid), widget, 0, x, 1, 1);
y = 0; y = 0;
} else { } else {
/* Default to 1 */ /* Default to 1 */
@@ -635,9 +638,9 @@ GtkWidget *create_vbox(Effect *widgets, gint amt, gchar *label)
} }
container = create_widget_container(widgets[x].group, widgets[x].group_amt, widgets[x].type, widgets[x].position); container = create_widget_container(widgets[x].group, widgets[x].group_amt, widgets[x].type, widgets[x].position);
gtk_table_attach_defaults(GTK_TABLE(table), container, 1-y, 2-y, x+y, x+y+1); gtk_grid_attach(GTK_GRID(grid), container, 1-y, x+y, 1, 1);
} }
gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 2); gtk_box_pack_start(GTK_BOX(vbox), grid, FALSE, FALSE, 2);
gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_add(GTK_CONTAINER(frame), vbox);
return frame; return frame;
@@ -769,7 +772,7 @@ GtkWidget *create_preset_tree(Device *device)
**/ **/
static void show_store_preset_window(GtkWidget *window, gchar *default_name) static void show_store_preset_window(GtkWidget *window, gchar *default_name)
{ {
GtkWidget *dialog, *cmbox, *entry, *table, *label, *vbox; GtkWidget *dialog, *cmbox, *entry, *grid, *label, *vbox;
GStrv names; GStrv names;
int x; int x;
@@ -782,8 +785,8 @@ static void show_store_preset_window(GtkWidget *window, gchar *default_name)
vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog));
table = gtk_table_new(2, 2, FALSE); grid = gtk_grid_new();
gtk_container_add(GTK_CONTAINER(vbox), table); gtk_container_add(GTK_CONTAINER(vbox), grid);
cmbox = gtk_combo_box_text_new(); cmbox = gtk_combo_box_text_new();
names = query_preset_names(PRESETS_USER); names = query_preset_names(PRESETS_USER);
@@ -793,18 +796,18 @@ static void show_store_preset_window(GtkWidget *window, gchar *default_name)
g_free(title); g_free(title);
} }
g_strfreev(names); g_strfreev(names);
gtk_table_attach_defaults(GTK_TABLE(table), cmbox, 1, 2, 0, 1); gtk_grid_attach(GTK_GRID(grid), cmbox, 1, 0, 1, 1);
entry = gtk_entry_new(); entry = gtk_entry_new();
if (default_name != NULL) if (default_name != NULL)
gtk_entry_set_text(GTK_ENTRY(entry), default_name); gtk_entry_set_text(GTK_ENTRY(entry), default_name);
gtk_table_attach_defaults(GTK_TABLE(table), entry, 1, 2, 1, 2); gtk_grid_attach(GTK_GRID(grid), entry, 1, 1, 1, 1);
label = gtk_label_new("Preset slot:"); label = gtk_label_new("Preset slot:");
gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1); gtk_grid_attach(GTK_GRID(grid), label, 0, 0, 1, 1);
label = gtk_label_new("Preset name:"); label = gtk_label_new("Preset name:");
gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2); gtk_grid_attach(GTK_GRID(grid), label, 0, 1, 1, 1);
gtk_widget_show_all(vbox); gtk_widget_show_all(vbox);
if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {