Commit 56a65fb9 authored by Tristan Van Berkom's avatar Tristan Van Berkom

* gladeui/glade-widget-adaptor.[ch], gladeui/glade-xml-utils.c, plugins/gtk+/glade-gtk.c,

	plugins/gtk+/gtk+.xml.in:
	  Removed the boolean "fixed" property for catalogs and replaced it with a "create-widget-function"
	tag that allows the backend to create a GladeWidget derived object to handle instances in
	the runtime, modified the backend appropriately to create a GladeFixed for widgets that were
	using the "fixed" property.
parent 9ca6f4cd
2010-12-30 Tristan Van Berkom <tristanvb@openismus.com>
* gladeui/glade-widget-adaptor.[ch], gladeui/glade-xml-utils.c, plugins/gtk+/glade-gtk.c,
plugins/gtk+/gtk+.xml.in:
Removed the boolean "fixed" property for catalogs and replaced it with a "create-widget-function"
tag that allows the backend to create a GladeWidget derived object to handle instances in
the runtime, modified the backend appropriately to create a GladeFixed for widgets that were
using the "fixed" property.
2010-12-29 Javier Jardón <jjardon@gnome.org>
* configure.ac: Use upstream gettext
......
......@@ -799,6 +799,14 @@ glade_widget_adaptor_real_get_property (GObject *object,
/*******************************************************************************
GladeWidgetAdaptor base class implementations
*******************************************************************************/
static GladeWidget *
glade_widget_adaptor_object_create_widget (GladeWidgetAdaptor *adaptor,
const gchar *first_property_name,
va_list var_args)
{
return (GladeWidget *)g_object_new_valist (GLADE_TYPE_WIDGET, first_property_name, var_args);
}
static GObject *
glade_widget_adaptor_object_construct_object (GladeWidgetAdaptor *adaptor,
guint n_parameters,
......@@ -1184,6 +1192,7 @@ glade_widget_adaptor_class_init (GladeWidgetAdaptorClass *adaptor_class)
object_class->get_property = glade_widget_adaptor_real_get_property;
/* Class methods */
adaptor_class->create_widget = glade_widget_adaptor_object_create_widget;
adaptor_class->construct_object = glade_widget_adaptor_object_construct_object;
adaptor_class->deep_post_create = NULL;
adaptor_class->post_create = NULL;
......@@ -1210,7 +1219,6 @@ glade_widget_adaptor_class_init (GladeWidgetAdaptorClass *adaptor_class)
adaptor_class->create_editable = glade_widget_adaptor_object_create_editable;
/* Base defaults here */
adaptor_class->fixed = FALSE;
adaptor_class->toplevel = FALSE;
adaptor_class->use_placeholders = FALSE;
adaptor_class->default_width = -1;
......@@ -1374,6 +1382,11 @@ gwa_extend_with_node_load_sym (GladeWidgetAdaptorClass *klass,
&symbol))
object_class->constructor = symbol;
if (glade_xml_load_sym_from_node (node, module,
GLADE_TAG_CREATE_WIDGET_FUNCTION,
&symbol))
klass->create_widget = symbol;
if (glade_xml_load_sym_from_node (node, module,
GLADE_TAG_CONSTRUCT_OBJECT_FUNCTION,
&symbol))
......@@ -1520,10 +1533,6 @@ gwa_derived_class_init (GladeWidgetAdaptorClass *adaptor_class,
glade_xml_get_property_boolean
(node, GLADE_TAG_DEPRECATED, adaptor_class->deprecated);
adaptor_class->fixed =
glade_xml_get_property_boolean
(node, GLADE_TAG_FIXED, adaptor_class->fixed);
adaptor_class->toplevel =
glade_xml_get_property_boolean
(node, GLADE_TAG_TOPLEVEL, adaptor_class->toplevel);
......@@ -2561,7 +2570,6 @@ glade_widget_adaptor_create_widget_real (gboolean query,
...)
{
GladeWidgetAdaptor *adaptor;
GType gwidget_type;
GladeWidget *gwidget;
va_list vl, vl_copy;
......@@ -2581,15 +2589,8 @@ glade_widget_adaptor_create_widget_real (gboolean query,
return NULL;
}
if (GWA_IS_FIXED (adaptor))
gwidget_type = GLADE_TYPE_FIXED;
else
gwidget_type = GLADE_TYPE_WIDGET;
gwidget = GLADE_WIDGET_ADAPTOR_GET_CLASS (adaptor)->create_widget (adaptor, first_property, vl_copy);
gwidget = (GladeWidget *)g_object_new_valist (gwidget_type,
first_property,
vl_copy);
va_end (vl_copy);
if (query && glade_widget_adaptor_query (adaptor))
......@@ -2849,19 +2850,6 @@ glade_widget_adaptor_construct_object (GladeWidgetAdaptor *adaptor,
{
g_return_val_if_fail (GLADE_IS_WIDGET_ADAPTOR (adaptor), NULL);
/*
if (g_type_is_a (adaptor->type, GTK_TYPE_WINDOW))
{
GParameter type = {0, };
type.name = "type";
g_value_init (&type.value, GTK_TYPE_WINDOW_TYPE);
g_value_set_enum (&type.value, GTK_WINDOW_OFFSCREEN);
n_parameters = 1;
parameters = &type;
}*/
return GLADE_WIDGET_ADAPTOR_GET_CLASS (adaptor)->construct_object (adaptor, n_parameters, parameters);
}
......
......@@ -24,16 +24,6 @@ typedef struct _GladeWidgetAdaptor GladeWidgetAdaptor;
typedef struct _GladeWidgetAdaptorPrivate GladeWidgetAdaptorPrivate;
typedef struct _GladeWidgetAdaptorClass GladeWidgetAdaptorClass;
/**
* GWA_IS_FIXED:
* @obj: A #GladeWidgetAdaptor
*
* Checks whether this widget adaptor should be handled
* as a free-form container
*/
#define GWA_IS_FIXED(obj) \
((obj) ? GLADE_WIDGET_ADAPTOR_GET_CLASS(obj)->fixed : FALSE)
/**
* GWA_DEPRECATED:
* @obj: A #GladeWidgetAdaptor
......@@ -251,6 +241,22 @@ typedef enum
#define GLADE_TYPE_CREATE_REASON (glade_create_reason_get_type())
/**
* GladeSetPropertyFunc:
* @adaptor: A #GladeWidgetAdaptor
* @first_property_name: the name of the first property
* @var_args: the value of the first property, followed optionally by more
* name/value pairs, followed by %NULL
*
* This entry point allows the backend to create a specialized GladeWidget
* derived object for handling instances in the core.
*
* Returns: A newly created #GladeWidget for the said adaptor.
*/
typedef GladeWidget * (* GladeCreateWidgetFunc) (GladeWidgetAdaptor *adaptor,
const gchar *first_property_name,
va_list var_args);
/**
* GladeSetPropertyFunc:
* @adaptor: A #GladeWidgetAdaptor
......@@ -674,9 +680,6 @@ struct _GladeWidgetAdaptorClass
guint deprecated : 1; /* If this widget is currently
* deprecated
*/
guint fixed : 1; /* If this is a Container, use free-form
* placement with drag/resize/paste at mouse...
*/
guint toplevel : 1; /* If this class is toplevel */
guint use_placeholders : 1; /* Whether or not to use placeholders
......@@ -686,6 +689,8 @@ struct _GladeWidgetAdaptorClass
gint default_width; /* Default width in GladeDesignLayout */
gint default_height; /* Default height in GladeDesignLayout */
GladeCreateWidgetFunc create_widget; /* Creates a GladeWidget for this adaptor */
GladeConstructObjectFunc construct_object; /* Object constructor
*/
......
......@@ -92,6 +92,7 @@ typedef enum {
#define GLADE_TAG_NEEDS_SYNC "needs-sync"
#define GLADE_TAG_DEFAULT_PALETTE_STATE "default-palette-state"
#define GLADE_TAG_REPLACE_CHILD_FUNCTION "replace-child-function"
#define GLADE_TAG_CREATE_WIDGET_FUNCTION "create-widget-function"
#define GLADE_TAG_CONSTRUCT_OBJECT_FUNCTION "construct-object-function"
#define GLADE_TAG_DEEP_POST_CREATE_FUNCTION "deep-post-create-function"
#define GLADE_TAG_POST_CREATE_FUNCTION "post-create-function"
......@@ -167,7 +168,6 @@ typedef enum {
#define GLADE_TAG_THEMED_ICON "themed-icon"
#define GLADE_TAG_INIT_FUNCTION "init-function"
#define GLADE_TAG_ATK_PROPERTY "atk-property"
#define GLADE_TAG_FIXED "fixed"
#define GLADE_TAG_TRANSFER_ON_PASTE "transfer-on-paste"
#define GLADE_TAG_WEIGHT "weight"
#define GLADE_TAG_GET_TYPE_FUNCTION "get-type-function"
......
......@@ -1171,12 +1171,21 @@ glade_gtk_container_get_children (GladeWidgetAdaptor *adaptor,
GladeEditable *
glade_gtk_container_create_editable (GladeWidgetAdaptor *adaptor,
GladeEditorPageType type)
GladeEditorPageType type)
{
return GWA_GET_CLASS (GTK_TYPE_CONTAINER)->create_editable (adaptor, type);;
return GWA_GET_CLASS (GTK_TYPE_CONTAINER)->create_editable (adaptor, type);
}
/* ----------------------------- GtkBox ------------------------------ */
GladeWidget *
glade_gtk_create_fixed_widget (GladeWidgetAdaptor *adaptor,
const gchar *first_property_name,
va_list var_args)
{
return (GladeWidget *)g_object_new_valist (GLADE_TYPE_FIXED, first_property_name, var_args);
}
typedef struct {
GtkWidget *widget;
gint position;
......
......@@ -280,7 +280,8 @@ embedded in another object</_tooltip>
</properties>
</glade-widget-class>
<glade-widget-class name="GtkBox" generic-name="box" _title="Box" fixed="True">
<glade-widget-class name="GtkBox" generic-name="box" _title="Box">
<create-widget-function>glade_gtk_create_fixed_widget</create-widget-function>
<post-create-function>glade_gtk_box_post_create</post-create-function>
<get-internal-child-function>glade_gtk_box_get_internal_child</get-internal-child-function>
<get-children-function>glade_gtk_box_get_children</get-children-function>
......@@ -1192,7 +1193,8 @@ embedded in another object</_tooltip>
</glade-widget-class>
<glade-widget-class name="GtkTable" generic-name="table" _title="Table" fixed="True">
<glade-widget-class name="GtkTable" generic-name="table" _title="Table">
<create-widget-function>glade_gtk_create_fixed_widget</create-widget-function>
<post-create-function>glade_gtk_table_post_create</post-create-function>
<child-set-property-function>glade_gtk_table_set_child_property</child-set-property-function>
<child-verify-function>glade_gtk_table_child_verify_property</child-verify-function>
......@@ -1475,13 +1477,15 @@ embedded in another object</_tooltip>
</properties>
</glade-widget-class>
<glade-widget-class name="GtkLayout" generic-name="layout" _title="Layout" fixed="True" use-placeholders="False">
<glade-widget-class name="GtkLayout" generic-name="layout" _title="Layout" use-placeholders="False">
<create-widget-function>glade_gtk_create_fixed_widget</create-widget-function>
<post-create-function>glade_gtk_fixed_layout_post_create</post-create-function>
<add-child-function>glade_gtk_fixed_layout_add_child</add-child-function>
<remove-child-function>glade_gtk_fixed_layout_remove_child</remove-child-function>
</glade-widget-class>
<glade-widget-class name="GtkFixed" generic-name="fixed" _title="Fixed" fixed="True" use-placeholders="False">
<glade-widget-class name="GtkFixed" generic-name="fixed" _title="Fixed" use-placeholders="False">
<create-widget-function>glade_gtk_create_fixed_widget</create-widget-function>
<post-create-function>glade_gtk_fixed_layout_post_create</post-create-function>
<add-child-function>glade_gtk_fixed_layout_add_child</add-child-function>
<remove-child-function>glade_gtk_fixed_layout_remove_child</remove-child-function>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment