diff options
author | Jean-François Wauthy <pollux@xfce.org> | 2006-07-09 21:52:15 +0000 |
---|---|---|
committer | Jean-François Wauthy <pollux@xfce.org> | 2006-07-09 21:52:15 +0000 |
commit | 5354543fed2db5ac7e84f1bed59d7f0854fd7c4d (patch) | |
tree | 0b017a16ed09e1cb55859bf41f0eb10dbf7861cd | |
parent | 7d6e1a109dc7f03e8bc03e4991ffe9245743fac7 (diff) | |
download | xfdesktop-xfce-4.4beta2.tar.gz |
add preview widget in icon filechooserxfce-4.4beta2
(Old svn revision: 22340)
-rw-r--r-- | menueditor/menueditor-add-dialog.c | 27 | ||||
-rw-r--r-- | menueditor/menueditor-edit-dialog.c | 27 |
2 files changed, 54 insertions, 0 deletions
diff --git a/menueditor/menueditor-add-dialog.c b/menueditor/menueditor-add-dialog.c index dc39f183..32944878 100644 --- a/menueditor/menueditor-add-dialog.c +++ b/menueditor/menueditor-add-dialog.c @@ -51,6 +51,7 @@ typedef struct { static void menueditor_add_dialog_class_init (MenuEditorAddDialogClass *); static void menueditor_add_dialog_init (MenuEditorAddDialog *); +static void cb_chooser_icon_update_preview (GtkFileChooser *, GtkImage *); static void cb_browse_button_clicked (GtkButton *, MenuEditorAddDialog *); static void cb_combo_changed (GtkComboBox *, MenuEditorAddDialog *); static void cb_radio_button_themed_icon_toggled (GtkToggleButton *, MenuEditorAddDialog *); @@ -106,6 +107,7 @@ menueditor_add_dialog_init (MenuEditorAddDialog * dialog) GtkWidget *hbox; GtkWidget *button_browse; GtkFileFilter *filter; + GtkWidget *preview; GSList *radio_button_group = NULL; gtk_window_set_title (GTK_WINDOW (dialog), _("Add menu entry")); @@ -227,6 +229,12 @@ menueditor_add_dialog_init (MenuEditorAddDialog * dialog) gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (priv->chooser_icon), filter); gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (priv->chooser_icon), filter); + preview = gtk_image_new (); + gtk_widget_show (preview); + gtk_file_chooser_set_preview_widget (GTK_FILE_CHOOSER (priv->chooser_icon), preview); + gtk_file_chooser_set_preview_widget_active (GTK_FILE_CHOOSER (priv->chooser_icon), TRUE); + g_signal_connect (G_OBJECT (priv->chooser_icon), "update-preview", G_CALLBACK (cb_chooser_icon_update_preview), preview); + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (priv->chooser_icon), DATADIR "/icons"); gtk_widget_show (priv->chooser_icon); gtk_table_attach (GTK_TABLE (table), priv->chooser_icon, 1, 2, 4, 5, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 6); @@ -248,6 +256,25 @@ menueditor_add_dialog_init (MenuEditorAddDialog * dialog) /* internals */ /*************/ static void +cb_chooser_icon_update_preview (GtkFileChooser * chooser, GtkImage *preview) +{ + gchar *filename; + GdkPixbuf *pix = NULL; + + filename = gtk_file_chooser_get_filename (chooser); + if (g_file_test (filename, G_FILE_TEST_IS_REGULAR)) + pix = gdk_pixbuf_new_from_file_at_size (filename, 64, 64, NULL); + g_free (filename); + + if (G_IS_OBJECT (pix)) { + gtk_image_set_from_pixbuf (preview, pix); + g_object_unref (G_OBJECT (pix)); + } + + gtk_file_chooser_set_preview_widget_active (chooser, G_IS_OBJECT (pix)); +} + +static void cb_browse_button_clicked (GtkButton *button, MenuEditorAddDialog *dialog) { MenuEditorAddDialogPrivate *priv = MENUEDITOR_ADD_DIALOG_GET_PRIVATE (dialog); diff --git a/menueditor/menueditor-edit-dialog.c b/menueditor/menueditor-edit-dialog.c index 0a3e92f3..0e943f42 100644 --- a/menueditor/menueditor-edit-dialog.c +++ b/menueditor/menueditor-edit-dialog.c @@ -50,6 +50,7 @@ typedef struct { static void menueditor_edit_dialog_class_init (MenuEditorEditDialogClass *); static void menueditor_edit_dialog_init (MenuEditorEditDialog *); +static void cb_chooser_icon_update_preview (GtkFileChooser *, GtkImage *); static void cb_browse_button_clicked (GtkButton *, MenuEditorEditDialog *); static void cb_radio_button_themed_icon_toggled (GtkToggleButton *, MenuEditorEditDialog *); static void cb_radio_button_icon_toggled (GtkToggleButton *, MenuEditorEditDialog *); @@ -102,6 +103,7 @@ menueditor_edit_dialog_init (MenuEditorEditDialog * dialog) gchar *label_text = NULL; GtkWidget *button_browse; GtkFileFilter *filter; + GtkWidget *preview; GSList *radio_button_group = NULL; gtk_window_set_title (GTK_WINDOW (dialog), _("Edit menu entry")); @@ -203,6 +205,12 @@ menueditor_edit_dialog_init (MenuEditorEditDialog * dialog) gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (priv->chooser_icon), filter); gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (priv->chooser_icon), filter); + preview = gtk_image_new (); + gtk_widget_show (preview); + gtk_file_chooser_set_preview_widget (GTK_FILE_CHOOSER (priv->chooser_icon), preview); + gtk_file_chooser_set_preview_widget_active (GTK_FILE_CHOOSER (priv->chooser_icon), TRUE); + g_signal_connect (G_OBJECT (priv->chooser_icon), "update-preview", G_CALLBACK (cb_chooser_icon_update_preview), preview); + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (priv->chooser_icon), DATADIR "/icons"); gtk_widget_show (priv->chooser_icon); gtk_table_attach (GTK_TABLE (table), priv->chooser_icon, 1, 2, 4, 5, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 6); @@ -224,6 +232,25 @@ menueditor_edit_dialog_init (MenuEditorEditDialog * dialog) /* internals */ /*************/ static void +cb_chooser_icon_update_preview (GtkFileChooser * chooser, GtkImage *preview) +{ + gchar *filename; + GdkPixbuf *pix = NULL; + + filename = gtk_file_chooser_get_filename (chooser); + if (g_file_test (filename, G_FILE_TEST_IS_REGULAR)) + pix = gdk_pixbuf_new_from_file_at_size (filename, 64, 64, NULL); + g_free (filename); + + if (G_IS_OBJECT (pix)) { + gtk_image_set_from_pixbuf (preview, pix); + g_object_unref (G_OBJECT (pix)); + } + + gtk_file_chooser_set_preview_widget_active (chooser, G_IS_OBJECT (pix)); +} + +static void cb_browse_button_clicked (GtkButton *button, MenuEditorEditDialog *dialog) { MenuEditorEditDialogPrivate *priv = MENUEDITOR_EDIT_DIALOG_GET_PRIVATE (dialog); |