38 #include "widgets_helper.h"
40 static guint _wh_add_row_to_table();
41 static GtkWidget *_wh_put_in_new_hbox_with_margin(GtkWidget *widget, gint margin);
42 static void _wh_attach_to_table(GtkWidget *table, GtkWidget *widget,
43 guint start_column, guint end_column, guint row,
int expand);
44 static void _wh_add_in_table_with_label(GtkWidget *table,
const gchar *label_text,
45 GtkWidget *widget,
int expand);
58 GtkWidget *vbox = gtk_vbox_new(FALSE, 0);
60 GtkWidget *label = gtk_label_new(NULL);
61 gtk_label_set_markup(GTK_LABEL(label), title);
63 GtkWidget *label_hbox = gtk_hbox_new(FALSE, 0);
64 gtk_box_pack_start(GTK_BOX(label_hbox), label, FALSE, FALSE, 0);
65 gtk_box_pack_start(GTK_BOX(vbox), label_hbox, FALSE, FALSE, 5);
67 GtkWidget *hbox = gtk_hbox_new(FALSE, 0);
68 gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 16);
70 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
75 GtkWidget *wh_new_table()
77 GtkWidget *table = gtk_table_new(1, 2, FALSE);
78 gtk_table_set_col_spacing(GTK_TABLE(table), 0, 0);
79 gtk_table_set_col_spacing(GTK_TABLE(table), 1, 5);
83 void wh_add_in_table(GtkWidget *table, GtkWidget *widget)
85 guint last_row = _wh_add_row_to_table(table);
87 _wh_attach_to_table(table, widget, 1, 3, last_row, TRUE);
90 void wh_add_in_table_with_label_expand(GtkWidget *table,
const gchar *label_text, GtkWidget *widget)
92 _wh_add_in_table_with_label(table, label_text, widget, TRUE);
95 void wh_add_in_table_with_label(GtkWidget *table,
const gchar *label_text, GtkWidget *widget)
97 _wh_add_in_table_with_label(table, label_text, widget, FALSE);
100 GtkWidget *wh_put_in_new_hbox_with_margin_level(GtkWidget *widget, gint margin_level)
102 return _wh_put_in_new_hbox_with_margin(widget, 6 * margin_level);
105 GtkWidget *wh_new_entry(
void *callback)
107 GtkWidget *
entry = gtk_entry_new();
108 gtk_editable_set_editable(GTK_EDITABLE(entry), TRUE);
112 g_signal_connect(G_OBJECT(entry),
"changed", G_CALLBACK(callback), NULL);
118 GtkWidget *wh_new_button(
const gchar *button_label)
120 return gtk_button_new_with_mnemonic(button_label);
123 void wh_get_widget_size(GtkWidget *widget, gint *width, gint *height)
125 #if GTK_MAJOR_VERSION <= 2
126 GtkAllocation allocation;
127 gtk_widget_get_allocation(widget, &allocation);
131 *width = allocation.width;
136 *height= allocation.height;
141 *width = gtk_widget_get_allocated_width(widget);
146 *height = gtk_widget_get_allocated_height(widget);
151 static void _wh_folder_changed_event(GtkFileChooser *chooser, gpointer data)
154 ui_set_browser_directory(ui, gtk_file_chooser_get_current_folder(chooser));
157 void wh_set_browser_directory_handler(
ui_state *ui, GtkWidget* dialog)
159 const gchar *browser_dir = ui_get_browser_directory(ui);
162 gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), browser_dir);
165 g_signal_connect(GTK_FILE_CHOOSER(dialog),
"current-folder-changed",
166 G_CALLBACK(_wh_folder_changed_event), ui);
169 static guint _wh_add_row_to_table(GtkWidget *table)
174 g_object_get(G_OBJECT(table),
176 "n-columns", &columns,
179 guint new_rows = rows + 1;
181 gtk_table_resize(GTK_TABLE(table), new_rows, columns);
182 gtk_table_set_row_spacing(GTK_TABLE(table), new_rows - 1, 4);
187 static GtkWidget *_wh_put_in_new_hbox_with_margin(GtkWidget *widget, gint margin)
189 GtkWidget *hbox = gtk_hbox_new(FALSE, 0);
190 gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, margin);
194 static void _wh_add_in_table_with_label(GtkWidget *table,
const gchar *label_text,
195 GtkWidget *widget,
int expand)
197 guint last_row = _wh_add_row_to_table(table);
199 GtkWidget *label = gtk_label_new(label_text);
200 gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
202 _wh_attach_to_table(table, label, 1, 2, last_row, FALSE);
203 _wh_attach_to_table(table, widget, 2, 3, last_row, expand);
206 static void _wh_attach_to_table(GtkWidget *table, GtkWidget *widget,
207 guint start_column, guint end_column, guint row,
int expand)
209 GtkWidget *my_widget = widget;
212 GtkAttachOptions xoptions = GTK_FILL;
215 xoptions |= GTK_EXPAND;
219 hbox = gtk_hbox_new(FALSE, 0);
220 gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, FALSE, 0);
224 gtk_table_attach(GTK_TABLE(table), my_widget,
225 start_column, end_column, row-1, row,
226 xoptions, GTK_FILL | GTK_EXPAND,