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

Reply via email to