Commit 0870dc93 authored by Tristan Van Berkom's avatar Tristan Van Berkom

Converted pclass booleans to bitfields, now disabled property classes are


	* gladeui/glade-widget-adator.c, gladeui/glade-property-class.[ch]:
	Converted pclass booleans to bitfields, now disabled property classes
	are kept around so that we dont screw up inheritance.

	* gladeui/glade-catalog.[ch]: Fixed version types to guint16.


svn path=/trunk/; revision=2073
parent 7976e924
......@@ -6,6 +6,12 @@
* plugins/gtk+/glade-model-data.c: Added sequential editing mode option
(TODO: maybe add this to session data ?)
* gladeui/glade-widget-adator.c, gladeui/glade-property-class.[ch]:
Converted pclass booleans to bitfields, now disabled property classes
are kept around so that we dont screw up inheritance.
* gladeui/glade-catalog.[ch]: Fixed version types to guint16.
2008-12-15 Tristan Van Berkom <tvb@gnome.org>
* NEWS, configure.ac: Rolling 3.5.4
......
......@@ -35,8 +35,8 @@
struct _GladeCatalog
{
gint major_version; /* The catalog version */
gint minor_version;
guint16 major_version; /* The catalog version */
guint16 minor_version;
GList *targetable_versions; /* list of suitable version targets */
......@@ -622,7 +622,7 @@ glade_catalog_supports_gtkbuilder (GladeCatalog *catalog)
}
gint
guint16
glade_catalog_get_major_version (GladeCatalog *catalog)
{
g_return_val_if_fail (GLADE_IS_CATALOG (catalog), 0);
......@@ -630,7 +630,7 @@ glade_catalog_get_major_version (GladeCatalog *catalog)
return catalog->major_version;
}
gint
guint16
glade_catalog_get_minor_version (GladeCatalog *catalog)
{
g_return_val_if_fail (GLADE_IS_CATALOG (catalog), 0);
......
......@@ -79,8 +79,8 @@ G_CONST_RETURN gchar *glade_catalog_get_book (GladeCatalog *catalog);
GList *glade_catalog_get_targets (GladeCatalog *catalog);
gint glade_catalog_get_major_version (GladeCatalog *catalog);
gint glade_catalog_get_minor_version (GladeCatalog *catalog);
guint16 glade_catalog_get_major_version (GladeCatalog *catalog);
guint16 glade_catalog_get_minor_version (GladeCatalog *catalog);
GList *glade_catalog_get_widget_groups (GladeCatalog *catalog);
......
......@@ -1456,16 +1456,14 @@ glade_property_class_update_from_node (GladeXmlNode *node,
if (!buf)
return FALSE;
g_free (buf);
/* If Disabled="TRUE" we set *property_class to NULL, but we return TRUE.
* The caller may want to remove this property from its list.
*/
if (glade_xml_get_property_boolean (node, GLADE_TAG_DISABLED, FALSE))
{
glade_property_class_free (klass);
*property_class = NULL;
return TRUE;
/* Its easier for us to keep disabled properties around and
* only virtually disable them */
klass->ignore = TRUE;
klass->save = FALSE;
klass->visible = FALSE;
}
if ((spec_node = glade_xml_search_child (node, GLADE_TAG_SPECIFICATIONS)) != NULL)
......@@ -1515,8 +1513,7 @@ glade_property_class_update_from_node (GladeXmlNode *node,
{
/* If catalog file didn't specify a pspec function
* and this property isn't found by introspection
* we simply handle it as a property that has been
* disabled.
* we simply delete it from the list always.
*/
glade_property_class_free (klass);
*property_class = NULL;
......
......@@ -46,17 +46,12 @@ struct _GladePropertyClass
* was created for.
*/
guint16 version_since_major; /* Version in which this property was */
guint16 version_since_minor; /* introduced. */
guint16 builder_since_major; /* Version in which this property became */
guint16 builder_since_minor; /* available in GtkBuilder format */
/* For catalogs that support libglade: */
gboolean libglade_only; /* Mark special libglade virtual properties */
gboolean libglade_unsupported;/* Mark properties that are not available in libglade */
GParamSpec *pspec; /* The Parameter Specification for this property.
*/
......@@ -71,11 +66,6 @@ struct _GladePropertyClass
gchar *tooltip; /* The default tooltip for the property editor rows.
*/
gboolean virt; /* Whether this is a virtual property with its pspec supplied
* via the catalog (or hard code-paths); or FALSE if its a real
* GObject introspected property
*/
GValue *def; /* The default value for this property (this will exist
* as a copy of orig_def if not specified by the catalog)
*/
......@@ -94,95 +84,103 @@ struct _GladePropertyClass
* to be of possible use in plugin code.
*/
gint visible_lines; /* When this pspec calls for a text editor, how many
* lines should be visible in the editor.
*/
gboolean optional; /* Some properties are optional by nature like
* default width. It can be set or not set. A
* default property has a check box in the
* left that enables/disables the input
*/
/* For catalogs that support libglade: */
guint libglade_only : 1; /* Mark special libglade virtual properties */
guint libglade_unsupported : 1;/* Mark properties that are not available in libglade */
gboolean optional_default; /* For optional values, what the default is */
guint virt : 1; /* Whether this is a virtual property with its pspec supplied
* via the catalog (or hard code-paths); or FALSE if its a real
* GObject introspected property
*/
gboolean construct_only; /* Whether this property is G_PARAM_CONSTRUCT_ONLY or not */
guint optional : 1; /* Some properties are optional by nature like
* default width. It can be set or not set. A
* default property has a check box in the
* left that enables/disables the input
*/
guint optional_default : 1; /* For optional values, what the default is */
guint construct_only : 1; /* Whether this property is G_PARAM_CONSTRUCT_ONLY or not */
gboolean common; /* Common properties go in the common tab */
gboolean atk; /* Atk properties go in the atk tab */
gboolean packing; /* Packing properties go in the packing tab */
gboolean query; /* Whether we should explicitly ask the user about this property
* when instantiating a widget with this property (through a popup
* dialog).
*/
guint common : 1; /* Common properties go in the common tab */
guint atk : 1; /* Atk properties go in the atk tab */
guint packing : 1; /* Packing properties go in the packing tab */
guint query : 1; /* Whether we should explicitly ask the user about this property
* when instantiating a widget with this property (through a popup
* dialog).
*/
gboolean translatable; /* The property should be translatable, which
* means that it needs extra parameters in the
* UI.
guint translatable : 1; /* The property should be translatable, which
* means that it needs extra parameters in the
* UI.
*/
/* These three are the master switches for the glade-file output,
* property editor availability & live object updates in the glade environment.
*/
guint save : 1; /* Whether we should save to the glade file or not
* (mostly just for virtual internal glade properties,
* also used for properties with generic pspecs that
* are saved in custom ways by the plugin)
*/
guint save_always : 1; /* Used to make a special case exception and always
* save this property regardless of what the default
* value is (used for some special cases like properties
* that are assigned initial values in composite widgets
* or derived widget code).
*/
guint visible : 1; /* Whether or not to show this property in the editor &
* reset dialog.
*/
gint visible_lines; /* When this pspec calls for a text editor, how many
* lines should be visible in the editor.
guint custom_layout : 1; /* Properties marked as custom_layout will not be included
* in a base #GladeEditorTable implementation (use this
* for properties you want to layout in custom ways in
* a #GladeEditable widget
*/
guint ignore : 1; /* When true, we will not sync the object when the property
* changes, or load values from the object.
*/
/* These three are the master switches for the glade-file output,
* property editor availability & live object updates in the glade environment.
*/
gboolean save; /* Whether we should save to the glade file or not
* (mostly just for virtual internal glade properties,
* also used for properties with generic pspecs that
* are saved in custom ways by the plugin)
*/
gboolean save_always; /* Used to make a special case exception and always
* save this property regardless of what the default
* value is (used for some special cases like properties
* that are assigned initial values in composite widgets
* or derived widget code).
guint needs_sync : 1; /* Virtual properties need to be synchronized after object
* creation, some properties that are not virtual also need
* handling from the backend, if "needs-sync" is true then
* this property will by synced with virtual properties.
*/
gboolean visible; /* Whether or not to show this property in the editor &
* reset dialog.
*/
gboolean custom_layout; /* Properties marked as custom_layout will not be included
* in a base #GladeEditorTable implementation (use this
* for properties you want to layout in custom ways in
* a #GladeEditable widget
*/
guint is_modified : 1; /* If true, this property_class has been "modified" from the
* the standard property by a xml file. */
gboolean ignore; /* When true, we will not sync the object when the property
* changes, or load values from the object.
*/
gboolean needs_sync; /* Virtual properties need to be synchronized after object
* creation, some properties that are not virtual also need
* handling from the backend, if "needs-sync" is true then
* this property will by synced with virtual properties.
guint themed_icon : 1; /* Some GParamSpecString properties reffer to icon names
* in the icon theme... these need to be specified in the
* property class definition if proper editing tools are to
* be used.
*/
guint stock_icon : 1; /* String properties can also denote stock icons, including
* icons from icon factories...
*/
gboolean is_modified; /* If true, this property_class has been "modified" from the
* the standard property by a xml file. */
gboolean themed_icon; /* Some GParamSpecString properties reffer to icon names
* in the icon theme... these need to be specified in the
* property class definition if proper editing tools are to
* be used.
guint stock : 1; /* ... or a narrower list of "items" from gtk builtin stock items.
*/
gboolean stock_icon; /* String properties can also denote stock icons, including
* icons from icon factories...
*/
gboolean stock; /* ... or a narrower list of "items" from gtk builtin stock items.
*/
gboolean transfer_on_paste; /* If this is a packing prop,
* wether we should transfer it on paste.
*/
guint transfer_on_paste : 1; /* If this is a packing prop,
* wether we should transfer it on paste.
*/
guint parentless_widget : 1; /* True if this property should point to a parentless widget
* in the project
*/
gdouble weight; /* This will determine the position of this property in
* the editor.
*/
gboolean parentless_widget; /* True if this property should point to a parentless widget
* in the project
*/
gchar *create_type; /* If this is an object property and you want the option to create
* one from the object selection dialog, then set the name of the
* concrete type here.
......
......@@ -415,40 +415,17 @@ gwa_setup_introspected_props_from_pspecs (GladeWidgetAdaptor *adaptor,
for (i = 0; i < n_specs; i++)
{
GType class_type;
gboolean found;
/* Only create properties that dont exist on the adaptor yet */
for (found = FALSE, class_type = adaptor->type;
((!parent_adaptor && class_type != 0) ||
( parent_adaptor && class_type != parent_adaptor->type));
class_type = g_type_parent (class_type))
if (specs[i]->owner_type == class_type ||
(G_TYPE_IS_INTERFACE (specs[i]->owner_type) &&
glade_util_class_implements_interface (class_type, specs[i]->owner_type)))
{
found = TRUE;
break;
}
if (found &&
(property_class =
glade_property_class_new_from_spec (adaptor, specs[i])) != NULL)
list = g_list_prepend (list, property_class);
/* if (parent_adaptor == NULL || */
/* /\* Dont create it if the pspec owner is not us. *\/ */
/* (!is_packing && !glade_widget_adaptor_get_property_class (parent_adaptor, */
/* specs[i]->name)) || */
/* (is_packing && !glade_widget_adaptor_get_pack_property_class (parent_adaptor, */
/* specs[i]->name))) */
/* { */
/* if ((property_class = */
/* glade_property_class_new_from_spec (adaptor, specs[i])) != NULL) */
/* list = g_list_prepend (list, property_class); */
/* } */
if (parent_adaptor == NULL ||
/* Dont create it if it already exists */
(!is_packing && !glade_widget_adaptor_get_property_class (parent_adaptor,
specs[i]->name)) ||
(is_packing && !glade_widget_adaptor_get_pack_property_class (parent_adaptor,
specs[i]->name)))
{
if ((property_class =
glade_property_class_new_from_spec (adaptor, specs[i])) != NULL)
list = g_list_prepend (list, property_class);
}
}
if (is_packing)
......@@ -1845,7 +1822,7 @@ gwa_update_properties_from_node (GladeWidgetAdaptor *adaptor,
continue;
}
/* the property has Disabled=TRUE ... */
/* if this pointer was set to null, its a property we dont handle. */
if (!property_class)
*properties = g_list_delete_link (*properties, list);
......
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