Author: pollux Date: 2006-07-09 21:52:15 +0000 (Sun, 09 Jul 2006) New Revision: 22340
Modified: xfdesktop/trunk/menueditor/menueditor-add-dialog.c xfdesktop/trunk/menueditor/menueditor-edit-dialog.c Log: add preview widget in icon filechooser Modified: xfdesktop/trunk/menueditor/menueditor-add-dialog.c =================================================================== --- xfdesktop/trunk/menueditor/menueditor-add-dialog.c 2006-07-09 21:34:36 UTC (rev 22339) +++ xfdesktop/trunk/menueditor/menueditor-add-dialog.c 2006-07-09 21:52:15 UTC (rev 22340) @@ -51,6 +51,7 @@ 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 @@ 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 @@ 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 @@ /* 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); Modified: xfdesktop/trunk/menueditor/menueditor-edit-dialog.c =================================================================== --- xfdesktop/trunk/menueditor/menueditor-edit-dialog.c 2006-07-09 21:34:36 UTC (rev 22339) +++ xfdesktop/trunk/menueditor/menueditor-edit-dialog.c 2006-07-09 21:52:15 UTC (rev 22340) @@ -50,6 +50,7 @@ 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 @@ 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 @@ 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 @@ /* 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); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits