[gthumb] Replace GtkOptionMenu with GtkComboBox, bug 575017
- From: Michael J. Chudobiak <mjc src gnome org>
- To: svn-commits-list gnome org
- Subject: [gthumb] Replace GtkOptionMenu with GtkComboBox, bug 575017
- Date: Thu, 28 May 2009 12:27:51 -0400 (EDT)
commit 37c06e13d9c0c0ee447bcfe30fb185d77c476873
Author: Marc Pavot <marc pavot gmail com>
Date: Thu May 28 12:27:15 2009 -0400
Replace GtkOptionMenu with GtkComboBox, bug 575017
---
libgthumb/dlg-save-image.c | 84 ++++++++++++++++++++++++++------------------
1 files changed, 50 insertions(+), 34 deletions(-)
diff --git a/libgthumb/dlg-save-image.c b/libgthumb/dlg-save-image.c
index 52b00d9..2a9ef1a 100644
--- a/libgthumb/dlg-save-image.c
+++ b/libgthumb/dlg-save-image.c
@@ -47,6 +47,20 @@ typedef enum {
IMAGE_TYPE_TIFF
} ImageType;
+typedef struct {
+ const char *name;
+ ImageType type;
+ const char *mime_type;
+} FileOption;
+
+static FileOption file_options[] = {
+ { N_("Determine by extension"), IMAGE_TYPE_AUTOMATIC, NULL },
+ { "JPEG" , IMAGE_TYPE_JPEG , "image/jpeg" },
+ { "PNG" , IMAGE_TYPE_PNG , "image/png" },
+ { "TGA" , IMAGE_TYPE_TGA , "image/tga" },
+ { "TIFF" , IMAGE_TYPE_TIFF , "image/tiff" },
+ { NULL }
+};
typedef struct {
ImageSavedFunc done_func;
@@ -159,9 +173,8 @@ file_save_ok_cb (GtkDialog *file_sel,
gpointer *userdata)
{
- static char *mime_types[4] = {"image/jpeg", "image/png", "image/tga", "image/tiff"};
GtkWindow *parent;
- GtkWidget *opt_menu;
+ GtkWidget *combo_box;
GdkPixbuf *pixbuf;
FileData *file = NULL;
const char *mime_type = NULL;
@@ -176,12 +189,13 @@ file_save_ok_cb (GtkDialog *file_sel,
file = file_data_new (gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (file_sel)));
- opt_menu = g_object_get_data (G_OBJECT (file_sel), "opt_menu");
- idx = gtk_option_menu_get_history (GTK_OPTION_MENU (opt_menu));
- if (idx == IMAGE_TYPE_AUTOMATIC)
+ combo_box = g_object_get_data (G_OBJECT (file_sel), "combo_box");
+ idx = gtk_combo_box_get_active (GTK_COMBO_BOX (combo_box));
+ if (idx < 0
+ || file_options[idx].type == IMAGE_TYPE_AUTOMATIC)
mime_type = get_file_mime_type (file->path, FALSE);
else
- mime_type = mime_types [idx - 2];
+ mime_type = file_options[idx].mime_type;
file->mime_type = get_static_string (mime_type);
save_image (parent, file, original_file, pixbuf, data, file_sel);
@@ -202,30 +216,35 @@ file_save_response_cb (GtkDialog *file_sel,
static GtkWidget *
-build_file_type_menu (void)
+build_file_type_combo_box (void)
{
- static char *type_name[] = { "JPEG", "PNG", "TGA", "TIFF", NULL };
- GtkWidget *menu;
- GtkWidget *item;
+ GtkWidget *combo_box;
int i;
-
- menu = gtk_menu_new ();
-
- item = gtk_menu_item_new_with_label (_("Determine by extension"));
- gtk_widget_show (item);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
-
- item = gtk_menu_item_new ();
- gtk_widget_show (item);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
-
- for (i = 0; type_name[i] != NULL; i++) {
- item = gtk_menu_item_new_with_label (type_name[i]);
- gtk_widget_show (item);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ GtkListStore *list_store;
+ GtkCellRenderer *renderer;
+ GtkTreeIter iter;
+
+ combo_box = gtk_combo_box_new ();
+ list_store = gtk_list_store_new (1, G_TYPE_STRING);
+
+ for (i = 0; file_options[i].name != NULL; ++i) {
+ gtk_list_store_append (list_store, &iter);
+ gtk_list_store_set (list_store, &iter,
+ 0, file_options[i].name,
+ -1);
}
-
- return menu;
+ gtk_combo_box_set_model (GTK_COMBO_BOX (combo_box),
+ GTK_TREE_MODEL (list_store));
+ g_object_unref (list_store);
+
+ renderer = gtk_cell_renderer_text_new ();
+ gtk_cell_layout_clear (GTK_CELL_LAYOUT (combo_box));
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), renderer, TRUE);
+ gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), renderer,
+ "text", 0, NULL);
+
+ gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), 0);
+ return combo_box;
}
@@ -241,8 +260,7 @@ dlg_save_image_as (GtkWindow *parent,
GtkWidget *file_sel;
GtkWidget *vbox;
GtkWidget *hbox;
- GtkWidget *opt_menu;
- GtkWidget *menu;
+ GtkWidget *combo_box;
g_return_if_fail (pixbuf != NULL);
@@ -269,10 +287,8 @@ dlg_save_image_as (GtkWindow *parent,
gtk_label_new (_("Image type:")),
FALSE, FALSE, 0);
- opt_menu = gtk_option_menu_new ();
- menu = build_file_type_menu ();
- gtk_option_menu_set_menu (GTK_OPTION_MENU (opt_menu), menu);
- gtk_box_pack_start (GTK_BOX (hbox), opt_menu, FALSE, FALSE, 12);
+ combo_box = build_file_type_combo_box ();
+ gtk_box_pack_start (GTK_BOX (hbox), combo_box, FALSE, FALSE, 12);
gtk_widget_show_all (vbox);
@@ -294,7 +310,7 @@ dlg_save_image_as (GtkWindow *parent,
g_object_set_data (G_OBJECT (file_sel), "parent_window", parent);
g_object_set_data (G_OBJECT (file_sel), "pixbuf", pixbuf);
g_object_set_data (G_OBJECT (file_sel), "data", data);
- g_object_set_data (G_OBJECT (file_sel), "opt_menu", opt_menu);
+ g_object_set_data (G_OBJECT (file_sel), "combo_box", combo_box);
g_object_set_data (G_OBJECT (file_sel), "uri", g_strdup (uri));
g_signal_connect (GTK_DIALOG (file_sel),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]