mirror of
https://gitlab.gnome.org/GNOME/glade.git
synced 2025-09-24 00:04:33 -04:00
GtkImage support improved. Finally no more g_object_set_data() :)
* src/glade-gtk.c: GtkImage support improved. Finally no more g_object_set_data() :) * src/glade-project.c: Emit "parse-finished" after setting project's loading flag. * src/glade-property-class.[ch]: make glade_property_class_make_object_from_string () returns a missing image icon if resource file is not found. This also make glade do not forget missing files. * src/glade-gnome.c: fixed a silly warning in glade_gnome_date_edit_post_create()
This commit is contained in:
parent
5c33581869
commit
8ca884cb25
16
ChangeLog
16
ChangeLog
@ -1,3 +1,19 @@
|
||||
2006-09-08 Juan Pablo Ugarte <juanpablougarte@gmail.com>
|
||||
|
||||
* src/glade-gtk.c: GtkImage support improved. Finally no more
|
||||
g_object_set_data() :)
|
||||
|
||||
* src/glade-project.c: Emit "parse-finished" after setting project's
|
||||
loading flag.
|
||||
|
||||
* src/glade-property-class.[ch]:
|
||||
make glade_property_class_make_object_from_string () returns a missing
|
||||
image icon if resource file is not found. This also make glade do not
|
||||
forget missing files.
|
||||
|
||||
* src/glade-gnome.c: fixed a silly warning in
|
||||
glade_gnome_date_edit_post_create()
|
||||
|
||||
2006-09-08 Juan Pablo Ugarte <juanpablougarte@gmail.com>
|
||||
|
||||
* src/glade-gtk.c: added glade_gtk_combo_box_entry_get_internal_child()
|
||||
|
@ -284,6 +284,12 @@ glade_gnome_app_bar_post_create (GObject *object, GladeCreateReason reason)
|
||||
}
|
||||
|
||||
/* GnomeDateEdit */
|
||||
static void
|
||||
glade_gnome_date_edit_set_no_show_all (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
gtk_widget_set_no_show_all (widget, TRUE);
|
||||
}
|
||||
|
||||
void GLADEGNOME_API
|
||||
glade_gnome_date_edit_post_create (GObject *object, GladeCreateReason reason)
|
||||
{
|
||||
@ -294,7 +300,7 @@ glade_gnome_date_edit_post_create (GObject *object, GladeCreateReason reason)
|
||||
* gtk_widget_show_all() (its, for example, called after a paste)
|
||||
*/
|
||||
gtk_container_foreach (GTK_CONTAINER (object),
|
||||
gtk_widget_set_no_show_all, TRUE);
|
||||
glade_gnome_date_edit_set_no_show_all, NULL);
|
||||
}
|
||||
|
||||
/* GnomeDruid */
|
||||
|
@ -3336,14 +3336,10 @@ glade_gtk_image_pixel_size_changed (GladeProperty *property,
|
||||
}
|
||||
|
||||
static void
|
||||
glade_gtk_image_parse_finished (GladeProject *project,
|
||||
GladeWidget *gimage)
|
||||
glade_gtk_image_parse_finished (GladeProject *project, GladeWidget *gimage)
|
||||
{
|
||||
GObject *image = glade_widget_get_object (gimage);
|
||||
GladeProperty *property;
|
||||
gint size;
|
||||
|
||||
g_object_set_data (image, "glade-image-post-ran", GINT_TO_POINTER (1));
|
||||
|
||||
if (glade_widget_property_default (gimage, "icon-name") == FALSE)
|
||||
glade_widget_property_set (gimage, "glade-type", GLADEGTK_IMAGE_ICONTHEME);
|
||||
@ -3354,17 +3350,18 @@ glade_gtk_image_parse_finished (GladeProject *project,
|
||||
else
|
||||
glade_widget_property_reset (gimage, "glade-type");
|
||||
|
||||
if ((property = glade_widget_get_property (gimage, "pixel-size")) != NULL)
|
||||
{
|
||||
glade_widget_property_get (gimage, "pixel-size", &size);
|
||||
if (size >= 0)
|
||||
glade_widget_property_set_sensitive
|
||||
(gimage, "icon-size", FALSE,
|
||||
if ((property = glade_widget_get_property (gimage, "pixel-size")) == NULL)
|
||||
return;
|
||||
|
||||
glade_widget_property_get (gimage, "pixel-size", &size);
|
||||
|
||||
if (size >= 0)
|
||||
glade_widget_property_set_sensitive (gimage, "icon-size", FALSE,
|
||||
_("Pixel Size takes precedence over Icon size"));
|
||||
g_signal_connect (G_OBJECT (property), "value-changed",
|
||||
G_CALLBACK (glade_gtk_image_pixel_size_changed),
|
||||
gimage);
|
||||
}
|
||||
|
||||
g_signal_connect (G_OBJECT (property), "value-changed",
|
||||
G_CALLBACK (glade_gtk_image_pixel_size_changed),
|
||||
gimage);
|
||||
}
|
||||
|
||||
void GLADEGTK_API
|
||||
@ -3372,19 +3369,16 @@ glade_gtk_image_post_create (GObject *object, GladeCreateReason reason)
|
||||
{
|
||||
GladeWidget *gimage;
|
||||
|
||||
if (reason != GLADE_CREATE_LOAD) return;
|
||||
|
||||
g_return_if_fail (GTK_IS_IMAGE (object));
|
||||
gimage = glade_widget_get_from_gobject (object);
|
||||
g_return_if_fail (GLADE_IS_WIDGET (gimage));
|
||||
|
||||
if (reason == GLADE_CREATE_USER)
|
||||
g_object_set_data (object, "glade-image-post-ran",
|
||||
GINT_TO_POINTER (1));
|
||||
|
||||
if (reason == GLADE_CREATE_LOAD)
|
||||
g_signal_connect (glade_widget_get_project (gimage),
|
||||
"parse-finished",
|
||||
G_CALLBACK (glade_gtk_image_parse_finished),
|
||||
gimage);
|
||||
g_signal_connect (glade_widget_get_project (gimage),
|
||||
"parse-finished",
|
||||
G_CALLBACK (glade_gtk_image_parse_finished),
|
||||
gimage);
|
||||
}
|
||||
|
||||
void GLADEGTK_API
|
||||
@ -3407,11 +3401,10 @@ glade_gtk_image_set_icon_name (GObject *object, GValue *value)
|
||||
static void
|
||||
glade_gtk_image_refresh (GladeWidget *gwidget, const gchar *property)
|
||||
{
|
||||
gchar *val;
|
||||
|
||||
gpointer p;
|
||||
glade_widget_property_set_sensitive (gwidget, property, TRUE, NULL);
|
||||
glade_widget_property_get (gwidget, property, &val);
|
||||
glade_widget_property_set (gwidget, property, val);
|
||||
glade_widget_property_get (gwidget, property, &p);
|
||||
glade_widget_property_set (gwidget, property, p);
|
||||
}
|
||||
|
||||
void GLADEGTK_API
|
||||
@ -3425,10 +3418,8 @@ glade_gtk_image_set_type (GObject *object, GValue *value)
|
||||
g_return_if_fail (GLADE_IS_WIDGET (gwidget));
|
||||
|
||||
/* Exit if we're still loading project objects */
|
||||
if (GPOINTER_TO_INT (g_object_get_data (object,
|
||||
"glade-image-post-ran")) == 0)
|
||||
return;
|
||||
|
||||
if (glade_util_object_is_loading (object)) return;
|
||||
|
||||
switch ((type = g_value_get_enum (value)))
|
||||
{
|
||||
case GLADEGTK_IMAGE_STOCK:
|
||||
@ -3449,7 +3440,7 @@ glade_gtk_image_set_type (GObject *object, GValue *value)
|
||||
glade_gtk_image_disable_icon_name (gwidget);
|
||||
glade_gtk_image_refresh (gwidget, "pixbuf");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* This basicly just sets the virtual "glade-stock" property
|
||||
@ -3458,30 +3449,27 @@ glade_gtk_image_set_type (GObject *object, GValue *value)
|
||||
void GLADEGTK_API
|
||||
glade_gtk_image_set_stock (GObject *object, GValue *value)
|
||||
{
|
||||
GladeWidget *gwidget;
|
||||
GEnumClass *eclass;
|
||||
GEnumValue *eval;
|
||||
const gchar *str;
|
||||
gboolean loaded = FALSE;
|
||||
gint icon_size;
|
||||
GladeWidget *gwidget;
|
||||
const gchar *str;
|
||||
gint icon_size;
|
||||
|
||||
g_return_if_fail (GTK_IS_IMAGE (object));
|
||||
gwidget = glade_widget_get_from_gobject (object);
|
||||
g_return_if_fail (GLADE_IS_WIDGET (gwidget));
|
||||
|
||||
loaded = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (gwidget), "glade-loaded"));
|
||||
g_object_set_data (G_OBJECT (gwidget), "glade-loaded", GINT_TO_POINTER (TRUE));
|
||||
|
||||
if ((str = g_value_get_string (value)) && loaded == FALSE)
|
||||
if ((str = g_value_get_string (value)) &&
|
||||
glade_util_object_is_loading (object))
|
||||
{
|
||||
eclass = g_type_class_ref (GLADE_TYPE_STOCK);
|
||||
GEnumClass *eclass = g_type_class_ref (GLADE_TYPE_STOCK);
|
||||
GEnumValue *eval;
|
||||
|
||||
if ((eval = g_enum_get_value_by_nick (eclass, str)) != NULL)
|
||||
{
|
||||
g_object_set_data (G_OBJECT (gwidget), "glade-stock", GINT_TO_POINTER (eval->value));
|
||||
glade_widget_property_set (gwidget, "glade-stock", eval->value);
|
||||
}
|
||||
glade_widget_property_set (gwidget, "glade-stock",
|
||||
eval->value);
|
||||
g_type_class_unref (eclass);
|
||||
}
|
||||
|
||||
if (str == NULL && glade_widget_superuser ()) return;
|
||||
|
||||
/* Set the real property */
|
||||
glade_widget_property_get (gwidget, "icon-size", &icon_size);
|
||||
|
@ -1446,15 +1446,15 @@ glade_project_new_from_interface (GladeInterface *interface, const gchar *path)
|
||||
glade_project_add_object (project, NULL, widget->object);
|
||||
}
|
||||
|
||||
/* Emit "parse-finished" signal */
|
||||
g_signal_emit (project, glade_project_signals [PARSE_FINISHED], 0);
|
||||
|
||||
/* Reset project status here too so that you get a clean
|
||||
* slate after calling glade_project_open().
|
||||
*/
|
||||
project->changed = FALSE;
|
||||
project->loading = FALSE;
|
||||
|
||||
/* Emit "parse-finished" signal */
|
||||
g_signal_emit (project, glade_project_signals [PARSE_FINISHED], 0);
|
||||
|
||||
return project;
|
||||
}
|
||||
|
||||
|
@ -742,19 +742,26 @@ glade_property_class_make_object_from_string (GladePropertyClass *property_class
|
||||
|
||||
if (property_class->pspec->value_type == GDK_TYPE_PIXBUF && project)
|
||||
{
|
||||
static GtkWidget *widget = NULL;
|
||||
GdkPixbuf *pixbuf;
|
||||
|
||||
|
||||
fullpath = glade_project_resource_fullpath (project, string);
|
||||
|
||||
if ((pixbuf = gdk_pixbuf_new_from_file (fullpath, NULL)) != NULL)
|
||||
|
||||
if ((pixbuf = gdk_pixbuf_new_from_file (fullpath, NULL)) == NULL)
|
||||
{
|
||||
g_object_set_data_full (G_OBJECT(pixbuf),
|
||||
"GladeFileName",
|
||||
g_strdup (string),
|
||||
g_free);
|
||||
|
||||
object = G_OBJECT(pixbuf);
|
||||
if (widget == NULL) widget = gtk_label_new ("");
|
||||
pixbuf = gtk_widget_render_icon (widget,
|
||||
GTK_STOCK_MISSING_IMAGE,
|
||||
GTK_ICON_SIZE_MENU, NULL);
|
||||
}
|
||||
|
||||
if (pixbuf)
|
||||
{
|
||||
object = G_OBJECT (pixbuf);
|
||||
g_object_set_data_full (object, "GladeFileName",
|
||||
g_strdup (string), g_free);
|
||||
}
|
||||
|
||||
g_free (fullpath);
|
||||
}
|
||||
if (property_class->pspec->value_type == GTK_TYPE_ADJUSTMENT)
|
||||
|
@ -174,7 +174,9 @@ struct _GladePropertyClass
|
||||
* directory).
|
||||
*/
|
||||
|
||||
gboolean transfer_on_paste;
|
||||
gboolean transfer_on_paste; /* If this is a packing prop,
|
||||
* wether we should transfer it on paste.
|
||||
*/
|
||||
|
||||
/* Delagate to verify if this is a valid value for this property,
|
||||
* if this function exists and returns FALSE, then glade_property_set
|
||||
|
Loading…
x
Reference in New Issue
Block a user