glade3 r2086 - in trunk: . gladeui
- From: tvb svn gnome org
- To: svn-commits-list gnome org
- Subject: glade3 r2086 - in trunk: . gladeui
- Date: Thu, 15 Jan 2009 17:01:37 +0000 (UTC)
Author: tvb
Date: Thu Jan 15 17:01:37 2009
New Revision: 2086
URL: http://svn.gnome.org/viewvc/glade3?rev=2086&view=rev
Log:
* gladeui/glade-editor-property.[ch]: Added file chooser dialog
to pixbuf properties (bug 567817).
Modified:
trunk/ChangeLog
trunk/gladeui/glade-editor-property.c
trunk/gladeui/glade-editor-property.h
Modified: trunk/gladeui/glade-editor-property.c
==============================================================================
--- trunk/gladeui/glade-editor-property.c (original)
+++ trunk/gladeui/glade-editor-property.c Thu Jan 15 17:01:37 2009
@@ -1923,6 +1923,79 @@
}
}
+gboolean
+glade_editor_property_show_resource_dialog (GladeProject *project, GtkWidget *parent, gchar **filename)
+{
+
+ GtkWidget *dialog;
+ gchar *folder;
+
+ g_return_val_if_fail (filename != NULL, FALSE);
+
+ dialog = gtk_file_chooser_dialog_new (_("Select a file from the project resource directory"),
+ parent ? GTK_WINDOW (gtk_widget_get_toplevel (parent)) : NULL,
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OPEN, GTK_RESPONSE_OK,
+ NULL);
+
+ gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
+ gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
+
+ gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog),
+ GTK_RESPONSE_OK,
+ GTK_RESPONSE_CANCEL,
+ -1);
+
+ /* HIG spacings */
+ gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
+ gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 2); /* 2 * 5 + 2 = 12 */
+ gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->action_area), 5);
+ gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->action_area), 6);
+
+ folder = glade_project_resource_fullpath (project, ".");
+ gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), folder);
+ g_free (folder);
+
+ if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK)
+ {
+ gchar *name;
+
+ name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
+
+ *filename = name ? g_path_get_basename (name) : NULL;
+
+ g_free (name);
+ gtk_widget_destroy (dialog);
+ return TRUE;
+ }
+
+ gtk_widget_destroy (dialog);
+
+ return FALSE;
+}
+
+static void
+glade_eprop_text_show_resource_dialog (GtkWidget *entry,
+ GladeEditorProperty *eprop)
+{
+ GladeProject *project;
+ GladeProjectFormat fmt;
+ gchar *text = NULL;
+
+ project = eprop->property->widget->project;
+ fmt = glade_project_get_format (project);
+
+ if (glade_editor_property_show_resource_dialog (project, entry, &text))
+ {
+ glade_eprop_text_changed_common (eprop, text, eprop->use_command);
+
+ glade_editor_property_load (eprop, eprop->property);
+
+ g_free (text);
+ }
+}
+
enum {
COMBO_COLUMN_TEXT = 0,
COMBO_COLUMN_PIXBUF,
@@ -2065,10 +2138,23 @@
g_signal_connect (G_OBJECT (eprop_text->text_entry), "changed",
G_CALLBACK (glade_eprop_text_changed),
eprop);
+
+ if (klass->pspec->value_type == GDK_TYPE_PIXBUF)
+ {
+ GtkWidget *image = gtk_image_new_from_stock (GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU);
+ GtkWidget *button = gtk_button_new ();
+ gtk_container_add (GTK_CONTAINER (button), image);
+
+ g_signal_connect (button, "clicked",
+ G_CALLBACK (glade_eprop_text_show_resource_dialog),
+ eprop);
+
+ gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
+ }
}
if (klass->translatable) {
- GtkWidget *button = gtk_button_new_with_label ("...");
+ GtkWidget *button = gtk_button_new_with_label ("\342\200\246");
gtk_widget_show (button);
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
g_signal_connect (button, "clicked",
Modified: trunk/gladeui/glade-editor-property.h
==============================================================================
--- trunk/gladeui/glade-editor-property.h (original)
+++ trunk/gladeui/glade-editor-property.h Thu Jan 15 17:01:37 2009
@@ -152,6 +152,9 @@
gchar **comment,
gboolean *has_context,
gboolean *translatable);
+gboolean glade_editor_property_show_resource_dialog (GladeProject *project,
+ GtkWidget *parent,
+ gchar **filename);
/* Generic eprops */
#define GLADE_TYPE_EPROP_NUMERIC (glade_eprop_numeric_get_type())
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]