In addition to <property name="foo">bar</property> referring
to an object with ID bar, we now also parse
<property name="foo"><object>...
to specify a property 'inline'.
The typical UI file has a lot more <property> tags than it has
<requested> or <interface> tags, etc. so order the string comparisons
according to this expected case.
The g_print documentation explicitly says not to do this, since
g_print is meant to be redirected by applications. Instead use
g_message for logging that can be triggered via GTK_DEBUG.
Add the class and parent class name to the error message.
gtk-builder-tool will parse the error message and use the
class names for trying again to parse the file as a template.
Added GTK_BUILDER_ERROR_INVALID_PROPERTY and GTK_BUILDER_ERROR_INVALID_SIGNAL
error codes
ObjectInfo: Use a GType instead of a char * for the class name.
PropertyInfo: Use a GParamSpec instead of a char * for the property name.
SignalInfo: Use signal id and detail quark instead of a detailed signal name string.
This not only save us a few malloc in each case but lets us simplify the code
and report unknown properties and signals as a parsing error instead of just
printing a warning.
Fixed memory leaks in parse_object(), parse_template() and parse_signal() functions.
Parameters value where strduped before the last posible return and not freed.
Binding an object sensitive property with a check button active property will look like this:
<object class="GtkButton" id="button">
<property name="sensitive" bind-source="checkbutton" bind-property="active"/>
</object>
This is based on the original work done by Denis Washington for his GSoC project
This closes Bug 654417 "[GSoC] Add <binding> element to GtkBuilder syntax"
One requirement of .ui files is that each object must have an ID,
even if it is never referred to or directly loaded from the code.
This makes editing .ui files much more onerous than it has to be,
due to the frequent need to invent new IDs, while avoiding
clashes.
This commit makes IDs optional in the XML. They only need to
be provided for objects which are referred to or explictly loaded
from the code. Since GtkBuilder needs IDs for its own internal
accounting, we create IDs of the form ___object_N___ if not
specified in the XML.
https://bugzilla.gnome.org/show_bug.cgi?id=712553
Use g_string_assign to avoid issues with assigning GString's internal
buffer back to the same string. This can happen when no translations are
available and _gtk_builder_parser_translate returns back the same
pointer that was passed in.
This fixes a regression from commit e9f182e37a
that caused GtkComboBoxText <items> from GtkBuilder to show up empty if
no translations are available.
https://bugzilla.gnome.org/show_bug.cgi?id=700629
Pointed out in https://bugzilla.gnome.org/show_bug.cgi?id=699016
The fix here is slightly different. We make
_gtk_builder_parser_translate return a const char * instead of
a dup'ed string, and fix up the callers.
This adds the definition of the <template> tag with some documentation
on the variant of the format.
_gtk_builder_extend_with_template() is to be used while GtkContainer
builds from composite templates. A couple of error codes are also added
to handle a few new possible failure cases.
DTD Files gtkbuilder.rnc and gtkbuilder.rng have been updated to include
the new <template> tag and it's attributes.
Also remove the starting underscore from function names where
appropriate, as those functions are static now and not exported anymore.
This is part of a bunch of fixes for gcc complaining about
-Wmissing-declarations.
Change the format of GtkBuilder <menu> to be more in-line with the style
of the rest of GtkBuilder so that we can do translation in a consistent
way.
The format is now substantially more difficult to hand-write, but tools
should be along soon.
There is an xslt program attached to the bug to help you convert your
existing .ui files from the old format to the new one.
https://bugzilla.gnome.org/show_bug.cgi?id=668696
When parsing GMenu xml, use the facility for pick up named submenus.
Note that <section id='foo'>...</section> is _not_ a named submenu.
It is a named item with an unnamed submenu :-(
This makes GtkBuilder accept a GMenuMarkup tree at the toplevel
(ie with <menu id='foo'> being a child of <interface>) and the resulting
GMenu object can be obtained via gtk_builder_get_object (builder, "foo").
Preferrably should be made just into a local variable for libgtk like
_gdk_debug_flags for libgdk. But for now used by
gtk/tests/textbuffer.c and modules/printbackends/cups/gtkprintbackendcups.c.
Use g_*gettext functions in gdk-pixbuf instead direct gettext
calls to benefit from the maybe-dont-translate functionality
in GLib. Also, replace a hand-rolled version by g_dpgettext2
in gtkbuilderparser.c. Fixes bug 585791.
* gtk/gtkbuilderparser.c: Make gtk_builder_get_translation_domain()
useful for subparsers.
* gtk/gtkcontainer.c: Make the child property parser support
translatable child properties.
svn path=/trunk/; revision=21855
2008-07-15 Paolo Borelli <pborelli@katamail.com>
Bug 447998 - GtkBuilder does not support building parts of the xml tree
* gtk/gtkbuilder.c:
* gtk/gtkbuilder.h:
* gtk/gtkbuilderprivate.h:
* gtk/gtkbuilderparser.c:
* gtk/gtk.symbols:
Add two new functions that allow cherry picking and construct
objects from a ui description file or string.
* gtk/tests/builder.c: tests for the above.
svn path=/trunk/; revision=20845
* gtk/gtkbuilderprivate.h, gtk/gtkbuilder.h, gtk/gtkbuilderparser.c:
Added support for parsing required toolkit versions (so that ui descriptions
can target specific versions of the backend widget libraries) bug 527612.
* gtk/docs/reference/gtk/tmpl/gtkbuilder.sgml: Added documentation
for the added xml tags to the ui description.
svn path=/trunk/; revision=20152
2008-05-20 14:27:34 Tim Janik <timj@imendio.com>
* reverted recent unapproved changes by Yair Hershkovitz, regarding:
Bug 503071 - Application direction changes to right to left even if theres no translation.
svn path=/trunk/; revision=20116
2008-05-11 Yair Hershkovitz <yairhr@gmail.com>
* gtk/gtkmain.c: call g_i18n_init() in gettext_initialization(). do
gettext_initialization only once.
* gtk/gtkbuilderparser.c: use glib i18n api. removed dpgettext() as it
duplicates g_dpgettext() and added _g_dpgettext() to wrap g_dpgettext
with the extended functionality that was in the removed dpgettext().
* gtk/gtkaccellabelc:
* gtk/gtkstock.c:
* gtk/gtkimmulticontext.c:
* gtk/gtkactiongroup.c:
* gtk/gtkintl.h: use glib i18n api.
svn path=/trunk/; revision=20091
2008-04-18 Michael Natterer <mitch@imendio.com>
* gtk/gtkicontheme.h
* gtk/gtkrecentmanager.h: include <gdk/gdk.h> instead of
<gdk/gdkscreen.h>.
* gtk/gtkbuilderparser.c
* gtk/gtklinkbutton.c
* gtk/gtkpreview.c
* gtk/gtkrecentchooserdefault.c
* gtk/gtkrecentchoosermenu.c
* modules/input/gtkimcontextthai.c: remove inclusion of single
files from gdk, none of the includes was actually needed.
svn path=/trunk/; revision=20023
2008-03-07 Johan Dahlin <johan@gnome.org>
* gtk/gtkbuilder.c:
* gtk/gtkbuilderparser.c:
* gtk/gtkbuilderprivate.h:
* gtk/gtkiconfactory.c:
* tests/buildertest.c:
- Treat enums like enums and not values
- Avoid invalid free, in case of more than two sources
- Add better error messages
- Add much improved tests
(#520979, Christian Persch)
svn path=/trunk/; revision=19732
2008-02-29 Johan Dahlin <johan@gnome.org>
* demos/gtk-demo/demo.ui:
* gtk/gtkbuilderparser.c:
* gtk/gtkbuilderprivate.h:
* gtk/gtkliststore.c:
* tests/buildertest.c:
Add translatable/context and comment attributes on
<col> tags under a GtkListStore. Refactor parts of the
translation api and make it available inside gtk+ itself.
Update tests and example.
Fixes a part of #518642
svn path=/trunk/; revision=19685
2008-02-29 Johan Dahlin <johan@gnome.org>
* gtk/gtkbuilder.c:
* gtk/gtkbuilderparser.c:
* gtk/gtkbuilderprivate.h:
Do not use g_error for a few more errors, instead set
the GError sent in through add_from_file/add_from_string.
* tests/buildertest.c:
Add a couple of new parsing tests.
(#519199, Pavel Syomin)
svn path=/trunk/; revision=19681
2008-01-30 Michael Natterer <mitch@imendio.com>
* gtk/gtkbuilderparser.c (parse_custom): use the right type for
"subparser_data" and remove the (gpointer*) cast. Fixes bogus
aliasing warning.
* gtk/updateiconcache.c (add_string): cast const gchar* to
gpointer when inserting in a GHashTable.
* tests/testcalendar.c (calendar_detail_cb): remove const from
return value since it's a newly allocated string.
(calendar_update_details): free the detail.
svn path=/trunk/; revision=19431
2008-01-06 Johan Dahlin <johan@gnome.org>
* gtk/gtkbuilderparser.c (parse_interface):
Allow domains to be overridden in <interface>'s if a translation-domain
is set in the builder.
(_gtk_builder_parser_parse_buffer): Do not modify the translation-domain
of the builder, make the domain set in the <interface> apply only to strings
in that interface.
(#496831, Ryan Lortie)
svn path=/trunk/; revision=19316
2007-11-07 Ryan Lortie <desrt@desrt.ca>
* gtk/gtkbuilderprivate.h: Add GString 'text' to the property info
structure. Used to accumulate property text across multiple 'text'
calls.
* gtk/gtkbuilderparser.c: Instead of translating/copying text on each
'text' call while in <property> accumulate the text until the end and
do it all in one go. This fixes handling of <!-- --> inside
properties as well as <property/> cases.
svn path=/trunk/; revision=18970
2007-10-24 Johan Dahlin <jdahlin@async.com.br>
* gtk/gtkbuilderparser.c (end_element): Allow empty property nodes
so we can set empty strings. (#486420, Xavier Claessens)
svn path=/trunk/; revision=18943
2007-08-23 Jan Arne Petersen <jpetersen@jpetersen.org>
* gtk/gtkbuilderparser.c: (text): Duplicate the string returned by
d[n]gettext before it is potentially freed. (#461945)
svn path=/trunk/; revision=18678
2007-08-07 Johan Dahlin <jdahlin@async.com.br>
* gtk/gtkbuilderparser.c (text):
* gtk/gtkcelllayout.c (attributes_text_element):
* gtk/gtkliststore.c (list_store_text):
Do not assume that text is null-terminated as pointed out by
Christopher Fergeau
svn path=/trunk/; revision=18592
2007-08-07 Johan Dahlin <jdahlin@async.com.br>
* gtk/gtkbuilderparser.c (text): Use g_strdup on the translated
string instead of g_strndup() + the length of the untranslated
string. (#461945, Claude Paroz)
svn path=/trunk/; revision=18588
2007-06-30 Johan Dahlin <jdahlin@async.com.br>
* gtk/gtkbuilderparser.c: (_get_type_by_symbol), (parse_object),
(parse_child):
* tests/buildertest.c: (test_types):
Move type-func to <object> instead of <child>, add a test to
make sure that it works as desired, #452463
svn path=/trunk/; revision=18306
2007-06-27 Johan Dahlin <jdahlin@async.com.br>
* gtk/gtkbuilderparser.c (parse_property): Use
the attribute name in the error message instead of
the value.
svn path=/trunk/; revision=18272
* gtk/gtkbuilder.h (enum):
* gtk/gtkbuilderparser.c (end_element):
* tests/buildertest.c (test_parser):
Set an error if we encounter properties without values set
(#451303, Philip Withnall)
svn path=/trunk/; revision=18252
2007-06-16 Johan Dahlin <jdahlin@async.com.br>
* gtk/gtkbuilderparser.c (text): Swap argument order to dgettext
(#448299, Jan Arne Petersen)
svn path=/trunk/; revision=18163