Compare commits

...

18 Commits

Author SHA1 Message Date
Matthias Clasen 60b706e764 Add some theme information APIs
Add some APIs that help applications adapt to
theme changes.
2019-08-30 11:40:53 +03:00
Benjamin Otte 6905935fd3 Merge branch 'wip/ricotz/issue2107' into 'master'
gsk: Add missing 'transfer full' annotations of instance parameters

Closes #2107

See merge request GNOME/gtk!1065
2019-08-26 17:00:34 +00:00
Rico Tzschichholz 5504c62af9 gsk: Add missing 'transfer full' annotations of instance parameters
Fixes https://gitlab.gnome.org/GNOME/gtk/issues/2107
2019-08-26 18:05:17 +02:00
Matthias Clasen 9bb58c3eca Merge branch 'office-runner-crash' into 'master'
Fix a crash in gtk-builder-tool

See merge request GNOME/gtk!1064
2019-08-26 13:50:43 +00:00
Matthias Clasen c0b8eb30de Fix a crash in gtk-builder-tool
Crash pointed out by Bastien Nocera.

Testcase included.
2019-08-26 15:34:15 +02:00
Changwoo Ryu 8a734f947e Update Korean translation 2019-08-26 11:20:16 +00:00
Timm Bäder e4904f6644 Merge branch 'doc-typos' into 'master'
Minor typos in the Documentation (a/an)

See merge request GNOME/gtk!1061
2019-08-26 09:18:47 +00:00
Дилян Палаузов 6ded38de2b Minor typos in the Documentation (a/an) 2019-08-25 12:52:46 +00:00
Matthias Clasen 4fa1f459dd Merge branch 'gdkmonitor-x11-manufacturer' into 'master'
gdk: x11: Fill GdkMonitor manufacturer with PNP id from EDID

Closes #1765

See merge request GNOME/gtk!859
2019-08-25 11:58:02 +00:00
Balázs Úr 25644aa6b1 Update Hungarian translation 2019-08-24 20:23:45 +00:00
Anders Jonsson a3f13f9c58 Update Swedish translation 2019-08-22 09:45:38 +00:00
Emmanuele Bassi d940d801a4 Merge branch 'build-remove-xiproto-xreply-check-gtk4' into 'master'
Remove NEED_XIPROTO_H_FOR_XREPLY check

See merge request GNOME/gtk!1059
2019-08-21 19:18:17 +00:00
Christoph Reiter 7b0af75a57 Remove NEED_XIPROTO_H_FOR_XREPLY check
It was only defined in the old autotools build to support a >20 year old x11,
https://bugzilla.gnome.org/show_bug.cgi?id=148032
2019-08-21 20:46:30 +02:00
Daniel Mustieles 5329ac6d4b Updated Spanish translation 2019-08-20 12:45:23 +02:00
Daniel Șerbănescu 2b123702cc Update Romanian translation 2019-08-19 11:50:59 +00:00
Daniel Șerbănescu 56c2431ed1 Update Romanian translation 2019-08-19 11:09:45 +00:00
Aurimas Černius 0ed5f939e9 Updated Lithuanian translation 2019-08-18 21:41:16 +03:00
Priit Laes f43d344aa3 gdk: x11: Fill GdkMonitor manufacturer with PNP id from EDID
Previously, the manufacturer property of the GdkMonitor was NULL,
and having at least PNP id at GdkMonitor.manufacturer makes it
possible to distinguish between different monitors programmatically.
2019-08-06 09:16:01 +03:00
54 changed files with 16428 additions and 14537 deletions
-3
View File
@@ -185,9 +185,6 @@
/* Define to the sub-directory where libtool stores uninstalled libraries. */
#mesondefine LT_OBJDIR
/* Define if <X11/extensions/XIproto.h> needed for xReply */
#mesondefine NEED_XIPROTO_H_FOR_XREPLY
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
#mesondefine NO_MINUS_C_MINUS_O
+1 -1
View File
@@ -378,7 +378,7 @@
378|GTK+ and friends|GTKtoolkit|#GNUStep gets #GTK+ theming http://is.gd/95vHl more at http://is.gd/95wt8|1267029498|0||0|1
379|GTK+ and friends|GTKtoolkit|GTK+ 2.19.6 released: http://mail.gnome.org/archives/gtk-devel-list/2010-February/msg00050.html #gtk|1266966985|0||0|0
380|GTK+ and friends|GTKtoolkit|Did you know that #GTK+ is the official toolkit for the #LiMo software stack? http://bit.ly/cuEdHx|1266925406|0||0|0
381|GTK+ and friends|GTKtoolkit|@lmedinas publishes a #javascript #example on how to put an status icon with #Gtk+ http://bit.ly/9py1uC Thanks a lot Luis!|1266886644|0||1|1
381|GTK+ and friends|GTKtoolkit|@lmedinas publishes a #javascript #example on how to put a status icon with #Gtk+ http://bit.ly/9py1uC Thanks a lot Luis!|1266886644|0||1|1
382|GTK+ and friends|GTKtoolkit|♺ @ebassi: I should really finish up the GDom API as well|1266880653|0||0|0
383|GTK+ and friends|GTKtoolkit|♺ @ebassi: I hope to work on this for the next GIO release, and the GTK+ side for 3.0|1266880641|0||0|0
384|GTK+ and friends|GTKtoolkit|♺ @ebassi: just updated the ApplicationClass design wiki page with the stuff @Cwiiis did for Mx - http://bit.ly/cfAOJk|1266880559|0||0|0
+1 -1
View File
@@ -6,7 +6,7 @@
* GTK uses for videos. This allows treating the icon like a
* regular video, so we can for example attach controls to it.
*
* After all, what good is an media_stream if one cannot pause
* After all, what good is a media_stream if one cannot pause
* it.
*/
+1 -1
View File
@@ -285,7 +285,7 @@ user-trash=The icon for the user's “Trash” place in the file system
user-trash-full=The icon for the user's “Trash” in the file system, when there are items in the “Trash” waiting for disposal or recovery
emblem-system=The icon used as an emblem for directories that contain system libraries, settings, and data
avatar-default=The generic avatar icon, which is used to represent a user that doesn't have a personalized avatar
emblem-synchronizing=The icon used as an emblem to indicate that a a synchronizing operation is in process
emblem-synchronizing=The icon used as an emblem to indicate that a synchronizing operation is in process
emblem-shared=The icon used as an emblem for files and directories that are shared to other users
help-browser=The icon used for the desktop's help browsing application
+7
View File
@@ -4815,6 +4815,13 @@ gtk_get_event_target
gtk_get_event_target_with_type
gtk_propagate_event
<SUBSECTION>
gtk_set_supported_themes
gtk_set_unsupported_themes
gtk_set_prefer_dark_theme
gtk_get_current_theme
gtk_theme_is_dark
<SUBSECTION Private>
gtk_init_abi_check
gtk_init_check_abi_check
@@ -49,7 +49,7 @@
files for icon themes.
</para>
<para>
It expects to be given the <replaceable>PATH</replaceable> to a icon theme
It expects to be given the <replaceable>PATH</replaceable> to an icon theme
directory containing an <filename>index.theme</filename>, e.g.
<filename>/usr/share/icons/hicolor</filename>, and writes a
<filename>icon-theme.cache</filename> containing cached information about
+1 -1
View File
@@ -6,7 +6,7 @@ anyone who hopes to work with the code in the future.
HOW THE GTKTREEVIEW CALCULATES SIZE:
====================================
When the view is given a new model, the first thing it does is walk
through the model at the top level, creating an GtkRBNode for each
through the model at the top level, creating a GtkRBNode for each
element of the model. Each node has a height of 0. The RBTree is kept
updated as the models structure changes. Additionally, the user can
expand, collapse, and select rows at this stage. The RBTree is accurate
+1 -1
View File
@@ -1312,7 +1312,7 @@ gdk_event_get_scroll_deltas (const GdkEvent *event,
* stop scroll event is the signal that a widget may trigger kinetic
* scrolling based on the current velocity.
*
* Stop scroll events always have a a delta of 0/0.
* Stop scroll events always have a delta of 0/0.
*
* Returns: %TRUE if the event is a scroll stop event
*/
+1 -1
View File
@@ -770,7 +770,7 @@ gdk_gl_context_set_is_legacy (GdkGLContext *context,
* @use_es: whether the context should use OpenGL ES instead of OpenGL,
* or -1 to allow auto-detection
*
* Requests that GDK create a OpenGL ES context instead of an OpenGL one,
* Requests that GDK create an OpenGL ES context instead of an OpenGL one,
* if the platform and windowing system allows it.
*
* The @context must not have been realized.
+6 -1
View File
@@ -401,7 +401,12 @@ gdk_monitor_get_connector (GdkMonitor *monitor)
* gdk_monitor_get_manufacturer:
* @monitor: a #GdkMonitor
*
* Gets the name of the monitor's manufacturer, if available.
* Gets the name or PNP ID of the monitor's manufacturer, if available.
*
* Note that this value might also vary depending on actual
* display backend.
*
* PNP ID registry is located at https://uefi.org/pnp_id_list
*
* Returns: (transfer none) (nullable): the name of the manufacturer, or %NULL
*/
+1 -1
View File
@@ -28,7 +28,7 @@
/**
* SECTION:gdkseat
* @Short_description: Object representing an user seat
* @Short_description: Object representing a user seat
* @Title: GdkSeat
* @See_also: #GdkDisplay, #GdkDevice
*
+1 -1
View File
@@ -65,7 +65,7 @@ gdk_text_property_to_utf8_list_for_display (GdkDisplay *display,
* gdk_utf8_to_string_target:
* @str: a UTF-8 string
*
* Converts an UTF-8 string into the best possible representation
* Converts a UTF-8 string into the best possible representation
* as a STRING. The representation of characters not in STRING
* is not specified; it may be as pseudo-escape sequences
* \x{ABCD}, or it may be in some other form of approximation.
+1 -1
View File
@@ -749,7 +749,7 @@ update_keymap (GdkKeymap *gdk_keymap)
/* First, handle those virtual keys that we always want
* as special GDK_* keysyms, even if ToAsciiEx might
* turn some them into a ASCII character (like TAB and
* turn some them into an ASCII character (like TAB and
* ESC).
*/
handle_special (vk, ksymp, level);
+2 -2
View File
@@ -824,7 +824,7 @@ show_window_internal (GdkSurface *window,
_gdk_win32_surface_state_to_string (window->state),
(deiconify ? " deiconify" : "")));
/* If asked to show (not deiconify) an withdrawn and iconified
/* If asked to show (not deiconify) a withdrawn and iconified
* window, do that.
*/
if (!deiconify &&
@@ -1962,7 +1962,7 @@ gdk_win32_surface_set_icon_name (GdkSurface *window,
{
/* In case I manage to confuse this again (or somebody else does):
* Please note that "icon name" here really *does* mean the name or
* title of an window minimized as an icon on the desktop, or in the
* title of a window minimized as an icon on the desktop, or in the
* taskbar. It has nothing to do with the freedesktop.org icon
* naming stuff.
*/
+1 -1
View File
@@ -180,7 +180,7 @@ struct _GdkW32DragMoveResizeContext
*
* For drag-move: If it's FALSE,
* then the pointer have not yet hit a trigger, even if it is
* already within a edge region.
* already within an edge region.
* If it's TRUE, then the pointer did hit a trigger within an
* edge region, and have not yet left an edge region
* (passing from one edge region into another doesn't count).
-4
View File
@@ -47,10 +47,6 @@ in this Software without prior written authorization from The Open Group.
#include "gdkprivate-x11.h"
#include "gdkdisplay-x11.h"
#ifdef NEED_XIPROTO_H_FOR_XREPLY
#include <X11/extensions/XIproto.h>
#endif
#include <X11/Xlibint.h>
+1 -1
View File
@@ -1363,7 +1363,7 @@ scroll_valuators_changed (GdkX11DeviceXI2 *device,
}
/* We only care about focus events that indicate that _this_
* surface (not a ancestor or child) got or lost the focus
* surface (not an ancestor or child) got or lost the focus
*/
static void
_gdk_device_manager_xi2_handle_focus (GdkSurface *surface,
+1 -1
View File
@@ -676,7 +676,7 @@ gdk_x11_gl_context_realize (GdkGLContext *context,
/* Ensure that any other context is created with a legacy bit set */
gdk_gl_context_set_is_legacy (context, legacy_bit);
/* Ensure that any other context is created with a ES bit set */
/* Ensure that any other context is created with an ES bit set */
gdk_gl_context_set_use_es (context, es_bit);
xvisinfo = find_xvisinfo_for_fbconfig (display, context_x11->glx_config);
+47
View File
@@ -354,6 +354,7 @@ init_randr15 (GdkX11Screen *x11_screen, gboolean *changed)
GdkRectangle geometry;
GdkRectangle newgeo;
char *name;
char *manufacturer = NULL;
int refresh_rate = 0;
gdk_x11_display_error_trap_push (display);
@@ -405,6 +406,50 @@ init_randr15 (GdkX11Screen *x11_screen, gboolean *changed)
g_ptr_array_add (x11_display->monitors, monitor);
}
/* Fetch minimal manufacturer information (PNP ID) from EDID */
{
#define EDID_LENGTH 128
Atom actual_type, edid_atom;
char tmp[3];
int actual_format;
unsigned char *prop;
unsigned long nbytes, bytes_left;
Display *disp = GDK_DISPLAY_XDISPLAY (x11_display);
edid_atom = XInternAtom (disp, RR_PROPERTY_RANDR_EDID, FALSE);
XRRGetOutputProperty (disp, output,
edid_atom,
0,
EDID_LENGTH,
FALSE,
FALSE,
AnyPropertyType,
&actual_type,
&actual_format,
&nbytes,
&bytes_left,
&prop);
// Check partial EDID header (whole header: 00 ff ff ff ff ff ff 00)
if (nbytes >= EDID_LENGTH && prop[0] == 0x00 && prop[1] == 0xff)
{
/* decode the Vendor ID from three 5 bit words packed into 2 bytes
* /--08--\/--09--\
* 7654321076543210
* |\---/\---/\---/
* R C1 C2 C3 */
tmp[0] = 'A' + ((prop[8] & 0x7c) / 4) - 1;
tmp[1] = 'A' + ((prop[8] & 0x3) * 8) + ((prop[9] & 0xe0) / 32) - 1;
tmp[2] = 'A' + (prop[9] & 0x1f) - 1;
manufacturer = g_strndup (tmp, sizeof (tmp));
}
XFree(prop);
#undef EDID_LENGTH
}
gdk_monitor_get_geometry (GDK_MONITOR (monitor), &geometry);
name = g_strndup (output_info->name, output_info->nameLen);
@@ -433,6 +478,8 @@ init_randr15 (GdkX11Screen *x11_screen, gboolean *changed)
gdk_monitor_set_scale_factor (GDK_MONITOR (monitor), x11_screen->surface_scale);
gdk_monitor_set_model (GDK_MONITOR (monitor), name);
gdk_monitor_set_connector (GDK_MONITOR (monitor), name);
gdk_monitor_set_manufacturer (GDK_MONITOR (monitor), manufacturer);
g_free (manufacturer);
g_free (name);
if (rr_monitors[i].primary)
+1 -1
View File
@@ -2284,7 +2284,7 @@ gsk_opacity_node_new (GskRenderNode *child,
/**
* gsk_opacity_node_get_child:
* @node: a opacity @GskRenderNode
* @node: an opacity @GskRenderNode
*
* Gets the child node that is getting opacityed by the given @node.
*
+9 -9
View File
@@ -106,7 +106,7 @@ gsk_transform_has_class (GskTransform *self,
* @transform_class: class structure for this self
* @category: The category of this transform. Will be used to initialize
* the result's category together with &next's category
* @next: (transfer full) Next matrix to multiply with or %NULL if none
* @next: (transfer full): Next matrix to multiply with or %NULL if none
*
* Returns: (transfer full): the newly created #GskTransform
*/
@@ -461,7 +461,7 @@ gsk_transform_matrix_with_category (GskTransform *next,
/**
* gsk_transform_matrix:
* @next: (allow-none): the next transform
* @next: (allow-none) (transfer full): the next transform
* @matrix: the matrix to multiply @next with
*
* Multiplies @next with the given @matrix.
@@ -612,7 +612,7 @@ static const GskTransformClass GSK_TRANSLATE_TRANSFORM_CLASS =
/**
* gsk_transform_translate:
* @next: (allow-none): the next transform
* @next: (allow-none) (transfer full): the next transform
* @point: the point to translate the matrix by
*
* Translates @next in 2dimensional space by @point.
@@ -632,7 +632,7 @@ gsk_transform_translate (GskTransform *next,
/**
* gsk_transform_translate_3d:
* @next: (allow-none): the next transform
* @next: (allow-none) (transfer full): the next transform
* @point: the point to translate the matrix by
*
* Translates @next by @point.
@@ -787,7 +787,7 @@ static const GskTransformClass GSK_ROTATE_TRANSFORM_CLASS =
/**
* gsk_transform_rotate:
* @next: (allow-none): the next transform
* @next: (allow-none) (transfer full): the next transform
* @angle: the rotation angle, in degrees (clockwise)
*
* Rotates @next @angle degrees in 2D - or in 3Dspeak, around the z axis.
@@ -911,7 +911,7 @@ static const GskTransformClass GSK_ROTATE3D_TRANSFORM_CLASS =
/**
* gsk_transform_rotate_3d:
* @next: (allow-none): the next transform
* @next: (allow-none) (transfer full): the next transform
* @angle: the rotation angle, in degrees (clockwise)
* @axis: The rotation axis
*
@@ -1084,7 +1084,7 @@ static const GskTransformClass GSK_SCALE_TRANSFORM_CLASS =
/**
* gsk_transform_scale:
* @next: (allow-none): the next transform
* @next: (allow-none) (transfer full): the next transform
* @factor_x: scaling factor on the X axis
* @factor_y: scaling factor on the Y axis
*
@@ -1103,7 +1103,7 @@ gsk_transform_scale (GskTransform *next,
/**
* gsk_transform_scale_3d:
* @next: (allow-none): the next transform
* @next: (allow-none) (transfer full): the next transform
* @factor_x: scaling factor on the X axis
* @factor_y: scaling factor on the Y axis
* @factor_z: scaling factor on the Z axis
@@ -1232,7 +1232,7 @@ static const GskTransformClass GSK_PERSPECTIVE_TRANSFORM_CLASS =
/**
* gsk_transform_perspective:
* @next: (allow-none): the next transform
* @next: (allow-none) (transfer full): the next transform
* @depth: distance of the z=0 plane. Lower values give a more
* flattened pyramid and therefore a more pronounced
* perspective effect.
+1 -1
View File
@@ -396,7 +396,7 @@ add_cb (GtkContainer *container,
GtkAssistantPrivate *priv = gtk_assistant_get_instance_private (assistant);
if (priv->use_header_bar)
g_warning ("Content added to the action area of a assistant using header bars");
g_warning ("Content added to the action area of an assistant using header bars");
gtk_widget_show (GTK_WIDGET (container));
}
+1 -1
View File
@@ -226,7 +226,7 @@ gtk_buildable_construct_child (GtkBuildable *buildable,
*
* This is called for each unknown element under <child>.
*
* Returns: %TRUE if a object has a custom implementation, %FALSE
* Returns: %TRUE if an object has a custom implementation, %FALSE
* if it doesn't.
**/
gboolean
+1 -1
View File
@@ -934,7 +934,7 @@ gtk_button_grab_notify (GtkWidget *widget,
/**
* gtk_button_set_icon_name:
* @button: A #GtkButton
* @icon_name: A icon name
* @icon_name: An icon name
*
* Adds a #GtkImage with the given icon name as a child. If @button already
* contains a child widget, that child widget will be removed and replaced
+3
View File
@@ -1390,6 +1390,7 @@ gtk_css_provider_load_named (GtkCssProvider *provider,
{
gtk_css_provider_load_from_resource (provider, resource_path);
g_free (resource_path);
gtk_set_current_theme (name, variant);
return;
}
g_free (resource_path);
@@ -1417,6 +1418,8 @@ gtk_css_provider_load_named (GtkCssProvider *provider,
priv->path = dir;
g_free (path);
gtk_set_current_theme (name, variant);
}
else
{
+1 -1
View File
@@ -1836,7 +1836,7 @@ _gtk_css_selector_tree_match_all (const GtkCssSelectorTree *tree,
/* When checking for changes via the tree we need to know if a rule further
down the tree matched, because if so we need to add "our bit" to the
Change. For instance in a a match like *.class:active we'll
Change. For instance in a match like *.class:active we'll
get a tree that first checks :active, if that matches we continue down
to the tree, and if we get a match we add CHANGE_CLASS. However, the
end of the tree where we have a match is an ANY which doesn't actually
+1 -1
View File
@@ -2382,7 +2382,7 @@ add_size (gpointer key,
* that the icon is available in a scalable format. The array
* is zero-terminated.
*
* Returns: (array zero-terminated=1) (transfer full): An newly
* Returns: (array zero-terminated=1) (transfer full): A newly
* allocated array describing the sizes at which the icon is
* available. The array should be freed with g_free() when it is no
* longer needed.
+2 -2
View File
@@ -2237,7 +2237,7 @@ gtk_icon_view_button_press (GtkGestureClick *gesture,
x, y);
}
/* don't draw keyboard focus around an clicked-on item */
/* don't draw keyboard focus around a clicked-on item */
icon_view->priv->draw_focus = FALSE;
}
@@ -4380,7 +4380,7 @@ gtk_icon_view_set_tooltip_cell (GtkIconView *icon_view,
* @model, @path and @iter which have been provided will be set to point to
* that row and the corresponding model.
*
* Returns: whether or not the given tooltip context points to a item
* Returns: whether or not the given tooltip context points to an item
*/
gboolean
gtk_icon_view_get_tooltip_context (GtkIconView *icon_view,
+1 -1
View File
@@ -58,7 +58,7 @@
* #GtkInfoBar is a widget that can be used to show messages to
* the user without showing a dialog. It is often temporarily shown
* at the top or bottom of a document. In contrast to #GtkDialog, which
* has a action area at the bottom, #GtkInfoBar has an action area
* has an action area at the bottom, #GtkInfoBar has an action area
* at the side.
*
* The API of #GtkInfoBar is very similar to #GtkDialog, allowing you
+2 -2
View File
@@ -2004,7 +2004,7 @@ label_mnemonic_widget_weak_notify (gpointer data,
* @label: a #GtkLabel
* @widget: (nullable): the target #GtkWidget, or %NULL to unset
*
* If the label has been set so that it has an mnemonic key (using
* If the label has been set so that it has a mnemonic key (using
* i.e. gtk_label_set_markup_with_mnemonic(),
* gtk_label_set_text_with_mnemonic(), gtk_label_new_with_mnemonic()
* or the use_underline property) the label can be associated with a
@@ -2073,7 +2073,7 @@ gtk_label_get_mnemonic_widget (GtkLabel *label)
* gtk_label_get_mnemonic_keyval:
* @label: a #GtkLabel
*
* If the label has been set so that it has an mnemonic key this function
* If the label has been set so that it has a mnemonic key this function
* returns the keyval used for the mnemonic accelerator. If there is no
* mnemonic set up it returns #GDK_KEY_VoidSymbol.
*
+1 -1
View File
@@ -1,5 +1,5 @@
/* GTK - The GIMP Toolkit
* gtklinkbutton.c - an hyperlink-enabled button
* gtklinkbutton.c - a hyperlink-enabled button
*
* Copyright (C) 2006 Emmanuele Bassi <ebassi@gmail.com>
* All rights reserved.
+1 -1
View File
@@ -1,5 +1,5 @@
/* GTK - The GIMP Toolkit
* gtklinkbutton.h - an hyperlink-enabled button
* gtklinkbutton.h - a hyperlink-enabled button
*
* Copyright (C) 2005 Emmanuele Bassi <ebassi@gmail.com>
* All rights reserved.
+125
View File
@@ -2677,3 +2677,128 @@ gtk_propagate_event (GtkWidget *widget,
gtk_propagate_event_internal (widget, event, topmost);
}
static char **supported_themes;
static char **unsupported_themes;
static char *current_theme_name;
/**
* gtk_set_supported_themes:
* @themes: a %NULL-terminated array of theme names
*
* Sets a list of theme names that are supported
* by the application. You should mark a theme as supported
* if the application has been tested with this theme.
*
* Marking a theme as supported is mainly informational;
* GTK may warn the user if a theme is not supported.
*/
void
gtk_set_supported_themes (const char **themes)
{
g_strfreev (supported_themes);
supported_themes = g_strdupv (themes);
}
/**
* gtk_set_unsupported_themes:
* @themes: a %NULL-terminated array of theme names
*
* Sets a list of theme names that are unsupported
* by the application. You should mark a theme as unsupported
* if the application is known to have problems with this
* theme.
*
* Marking a theme as unsupported is mainly informational;
* GTK may warn the user if a theme is unsupported.
*/
void
gtk_set_unsupported_themes (const char **themes)
{
g_strfreev (unsupported_themes);
unsupported_themes = g_strdupv (themes);
}
/**
* gtk_set_prefer_dark_theme:
* @prefer_dark: whether a dark theme variant is preferred
* by the application
*
* A convenience wrapper for the #GtkSettings:gtk-application-prefer-dark
* setting.
*/
void
gtk_set_prefer_dark_theme (gboolean prefer_dark)
{
GtkSettings *settings;
settings = gtk_settings_get_default ();
g_object_set (settings, "gtk-application-prefer-dark", prefer_dark, NULL);
}
/**
* gtk_get_current_theme:
*
* Gets the name of the theme that the application is using.
*
* This may be different from the #GtkSettings:gtk-theme-name
* setting. If the theme is a dark variant, the "-dark" suffix
* will be included in the name.
*
* If you use this function, you probably want to listen for
* changes of the #GtkSettings:gtk-theme-name and #GtkSettings:gtk-application-prefer-dark
* properties.
*
* Returns: the name of theme that is used
*/
const char *
gtk_get_current_theme (void)
{
return current_theme_name;
}
void
gtk_set_current_theme (const char *name,
const char *variant)
{
char *theme;
if (variant)
theme = g_strconcat (name, "-", variant, NULL);
else
theme = g_strdup (name);
if (unsupported_themes != NULL &&
g_strv_contains (unsupported_themes, theme))
g_warning ("Theme %s is unsupported with this application", theme);
else if (supported_themes != NULL &&
!g_strv_contains (supported_themes, theme))
g_info ("Theme %s is untested with this application", theme);
g_free (current_theme_name);
current_theme_name = theme;
}
/**
* gtk_theme_is_dark:
*
* Returns whether the current theme is a dark theme.
*
* This information can be used to adapt custom drawing
* to light or dark surroundings.
*
* If you use this function, you probably want to listen for
* changes of the #GtkSettings:gtk-theme-name and #GtkSettings:gtk-application-prefer-dark
* properties.
*
* Returns: %TRUE if the current theme is dark
*/
gboolean
gtk_theme_is_dark (void)
{
if (current_theme_name)
return g_str_has_suffix (current_theme_name, "-dark");
return FALSE;
}
+13
View File
@@ -103,6 +103,19 @@ gboolean gtk_init_check_abi_check (int num_checks,
#endif
GDK_AVAILABLE_IN_ALL
void gtk_set_supported_themes (const char **themes);
GDK_AVAILABLE_IN_ALL
void gtk_set_unsupported_themes (const char **themes);
GDK_AVAILABLE_IN_ALL
void gtk_set_prefer_dark_theme (gboolean prefer_dark);
GDK_AVAILABLE_IN_ALL
const char * gtk_get_current_theme (void);
GDK_AVAILABLE_IN_ALL
gboolean gtk_theme_is_dark (void);
GDK_AVAILABLE_IN_ALL
void gtk_disable_setlocale (void);
GDK_AVAILABLE_IN_ALL
+2 -2
View File
@@ -3879,7 +3879,7 @@ list_box_sort_func (GtkListBoxRow *row1,
retval = index_1 - index_2;
}
/* We order the bookmarks sections based on the bookmark index that we
* set on the row as a order-index property, but we have to deal with
* set on the row as an order-index property, but we have to deal with
* the placeholder row wanted to be between two consecutive bookmarks,
* with two consecutive order-index values which is the usual case.
* For that, in the list box sort func we give priority to the placeholder row,
@@ -4480,7 +4480,7 @@ gtk_places_sidebar_class_init (GtkPlacesSidebarClass *class)
* @sidebar: the object which received the signal.
*
* The places sidebar emits this signal when it needs the calling
* application to present an way to directly enter a location.
* application to present a way to directly enter a location.
* For example, the application may bring up a dialog box asking for
* a URL like "http://http.example.com".
*/
+3
View File
@@ -137,6 +137,9 @@ gboolean gtk_get_any_display_debug_flag_set (void);
#endif /* G_ENABLE_DEBUG */
void gtk_set_current_theme (const char *name,
const char *variant);
G_END_DECLS
#endif /* __GTK_PRIVATE_H__ */
+1 -1
View File
@@ -123,7 +123,7 @@ static void
gtk_separator_tool_item_add (GtkContainer *container,
GtkWidget *child)
{
g_warning ("attempt to add a child to an GtkSeparatorToolItem");
g_warning ("attempt to add a child to a GtkSeparatorToolItem");
}
static gboolean
+2 -2
View File
@@ -401,7 +401,7 @@ struct _GtkStyleContextClass
/**
* GTK_STYLE_CLASS_SCROLLBARS_JUNCTION:
*
* A CSS class to match the junction area between an horizontal
* A CSS class to match the junction area between a horizontal
* and vertical scrollbar, when theyre both shown.
*
* Refer to individual widget documentation for used style classes.
@@ -525,7 +525,7 @@ struct _GtkStyleContextClass
/**
* GTK_STYLE_CLASS_SPINBUTTON:
*
* A CSS class defining an spinbutton.
* A CSS class defining a spinbutton.
*
* Refer to individual widget documentation for used style classes.
*/
+1 -1
View File
@@ -1980,7 +1980,7 @@ convert_color (GdkRGBA *result,
/* This function is used to convert the preedit string attributes, which are
* standard PangoAttributes, into the custom attributes used by the text
* widget and insert them into a attr list with a given offset.
* widget and insert them into an attr list with a given offset.
*/
static void
add_preedit_attrs (GtkTextLayout *layout,
+1 -1
View File
@@ -633,7 +633,7 @@ gtk_tooltip_position (GtkTooltip *tooltip,
* If the anchor rectangle is too tall (meaning if we'd be constrained
* and flip, it'd flip too far away), rely only on the pointer position
* to position the tooltip. The approximate pointer cursorrectangle is
* used as a anchor rectantgle.
* used as an anchor rectantgle.
*
* If the anchor rectangle isn't to tall, make sure the tooltip isn't too
* far away from the pointer position.
+4 -4
View File
@@ -1199,7 +1199,7 @@ _gtk_tree_menu_new_with_area (GtkCellArea *area)
/*
* _gtk_tree_menu_new_full:
* @area: (allow-none): the #GtkCellArea to use to render cells in the menu, or %NULL.
* @model: (allow-none): the #GtkTreeModel to build the menu heirarchy from, or %NULL.
* @model: (allow-none): the #GtkTreeModel to build the menu hierarchy from, or %NULL.
* @root: (allow-none): the #GtkTreePath indicating the root row for this menu, or %NULL.
*
* Creates a new #GtkTreeMenu hierarchy from the provided @model and @root using @area to render its cells.
@@ -1223,7 +1223,7 @@ _gtk_tree_menu_new_full (GtkCellArea *area,
* @menu: a #GtkTreeMenu
* @model: (allow-none): the #GtkTreeModel to build the menu hierarchy from, or %NULL.
*
* Sets @model to be used to build the menu heirarhcy.
* Sets @model to be used to build the menu hierarhcy.
*/
void
_gtk_tree_menu_set_model (GtkTreeMenu *menu,
@@ -1241,7 +1241,7 @@ _gtk_tree_menu_set_model (GtkTreeMenu *menu,
* _gtk_tree_menu_get_model:
* @menu: a #GtkTreeMenu
*
* Gets the @model currently used for the menu heirarhcy.
* Gets the @model currently used for the menu hierarhcy.
*
* Returns: (transfer none): the #GtkTreeModel which is used
* for @menus hierarchy.
@@ -1293,7 +1293,7 @@ _gtk_tree_menu_set_root (GtkTreeMenu *menu,
* @menu: a #GtkTreeMenu
*
* Gets the @root path for @menus hierarchy, or returns %NULL if @menu
* has no model or is building a heirarchy for the entire model. *
* has no model or is building a hierarchy for the entire model. *
*
* Returns: (transfer full) (allow-none): A newly created #GtkTreePath
* pointing to the root of @menu which must be freed with gtk_tree_path_free().
+1 -1
View File
@@ -2145,7 +2145,7 @@ gtk_tree_row_ref_deleted (RowRefList *refs,
return;
/* This function corrects the path stored in the reference to
* account for an deletion. Note that it's called _after_ the
* account for a deletion. Note that it's called _after_ the
* deletion with the old path of the just-deleted row. Which means
* that the deleted path is the same now-defunct "coordinate system"
* as the path saved in the reference, which is what we want to fix.
+3 -3
View File
@@ -5291,7 +5291,7 @@ event_surface_is_still_viewable (const GdkEvent *event)
#endif
default:
/* Remaining events would make sense on an not-viewable window,
/* Remaining events would make sense on a not-viewable window,
* or don't have an associated window.
*/
return TRUE;
@@ -5640,7 +5640,7 @@ gtk_widget_real_keynav_failed (GtkWidget *widget,
*
* Note that having @can_focus be %TRUE is only one of the
* necessary conditions for being focusable. A widget must
* also be sensitive and not have a ancestor that is marked
* also be sensitive and not have an ancestor that is marked
* as not child-focusable in order to receive input focus.
*
* See gtk_widget_grab_focus() for actually setting the input
@@ -8859,7 +8859,7 @@ gtk_widget_real_get_accessible (GtkWidget *widget)
}
/*
* Initialize a AtkImplementorIface instances virtual pointers as
* Initialize an AtkImplementorIface instances virtual pointers as
* appropriate to this implementors class (GtkWidget).
*/
static void
+5
View File
@@ -793,6 +793,7 @@ rewrite_stack_child (Element *child, MyParserData *data)
new_object->attribute_values = g_new0 (char *, 2);
new_object->attribute_values[0] = g_strdup ("GtkStackPage");
new_object->children = packing->children;
new_object->parent = child;
packing->children = NULL;
prop = g_new0 (Element, 1);
@@ -802,6 +803,7 @@ rewrite_stack_child (Element *child, MyParserData *data)
prop->attribute_values = g_new0 (char *, 2);
prop->attribute_values[0] = g_strdup ("child");
prop->children = g_list_append (prop->children, object);
prop->parent = new_object;
new_object->children = g_list_append (new_object->children, prop);
g_list_free (child->children);
@@ -940,6 +942,7 @@ rewrite_notebook_page (Element *child, Element *tab, MyParserData *data)
new_object->attribute_names[0] = g_strdup ("class");
new_object->attribute_values = g_new0 (char *, 2);
new_object->attribute_values[0] = g_strdup ("GtkNotebookPage");
new_object->parent = child;
if (packing)
{
new_object->children = packing->children;
@@ -953,6 +956,7 @@ rewrite_notebook_page (Element *child, Element *tab, MyParserData *data)
prop->attribute_values = g_new0 (char *, 2);
prop->attribute_values[0] = g_strdup ("child");
prop->children = g_list_append (prop->children, object);
prop->parent = new_object;
new_object->children = g_list_append (new_object->children, prop);
if (tab_obj)
@@ -964,6 +968,7 @@ rewrite_notebook_page (Element *child, Element *tab, MyParserData *data)
prop->attribute_values = g_new0 (char *, 2);
prop->attribute_values[0] = g_strdup ("tab");
prop->children = g_list_append (prop->children, tab_obj);
prop->parent = new_object;
new_object->children = g_list_append (new_object->children, prop);
}
+262 -274
View File
File diff suppressed because it is too large Load Diff
+4189 -3621
View File
File diff suppressed because it is too large Load Diff
+176 -277
View File
File diff suppressed because it is too large Load Diff
+5090 -4922
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -108,7 +108,7 @@ msgstr "Leverantörs-ID"
msgid "Product ID"
msgstr "Produkt-ID"
# The GdkSeat object represents a collection of input devices that belong to an user.
# The GdkSeat object represents a collection of input devices that belong to a user.
#: gdk/gdkdevice.c:289 gdk/gdkdevice.c:290
msgid "Seat"
msgstr "Säte"
+428 -351
View File
File diff suppressed because it is too large Load Diff
+2752 -2522
View File
File diff suppressed because it is too large Load Diff
+2776 -2509
View File
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,207 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<object class="GtkWindow" id="window1">
<property name="border_width">12</property>
<property name="title" translatable="yes">Office Runner</property>
<property name="resizable">0</property>
<property name="window_position">center</property>
<child>
<object class="GtkBox" id="box1">
<property name="margin_left">12</property>
<property name="margin_right">12</property>
<property name="margin_bottom">12</property>
<property name="orientation">vertical</property>
<property name="spacing">12</property>
<child>
<object class="GtkNotebook" id="notebook1">
<property name="show_tabs">0</property>
<property name="show_border">0</property>
<child>
<object class="GtkNotebookPage">
<property name="child">
<object class="GtkGrid" id="grid1">
<property name="row_spacing">12</property>
<property name="column_spacing">12</property>
<child>
<object class="GtkImage" id="run_image">
<property name="vexpand">1</property>
</object>
</child>
<child>
<object class="GtkLabel" id="label5">
<property name="valign">start</property>
<property name="hexpand">1</property>
<property name="xalign">0</property>
<property name="label" translatable="yes"> • Click the &quot;Run!&quot; button, and then dash to your desk or meeting.
• You are allowed to close your laptop lid to run faster
</property>
<property name="use_markup">1</property>
<layout>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="label7">
<property name="label" translatable="yes">Rules</property>
<attributes>
<attribute name="scale" value="2"></attribute>
</attributes>
<layout>
<property name="left_attach">1</property>
</layout>
</object>
</child>
<child>
<placeholder/>
</child>
</object>
</property>
<property name="tab">
<object class="GtkLabel" id="label1">
<property name="label" translatable="no">page 1</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkNotebookPage">
<property name="position">1</property>
<property name="child">
<object class="GtkGrid" id="grid2">
<property name="row_spacing">12</property>
<property name="column_spacing">12</property>
<child>
<object class="GtkImage" id="time_image">
<property name="vexpand">1</property>
<layout>
<property name="left_attach">1</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="time_label">
<property name="hexpand">1</property>
<property name="vexpand">1</property>
<property name="label" translatable="no">00:00.00</property>
<attributes>
<attribute name="scale" value="10"></attribute>
<attribute name="font-features" value="tnum 1"></attribute>
</attributes>
</object>
</child>
</object>
</property>
<property name="tab">
<object class="GtkLabel" id="label2">
<property name="label" translatable="no">page 2</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkNotebookPage">
<property name="position">2</property>
<property name="child">
<object class="GtkGrid" id="grid3">
<property name="hexpand">1</property>
<property name="row_spacing">12</property>
<property name="column_spacing">12</property>
<child>
<object class="GtkImage" id="trophy_image"/>
</child>
<child>
<object class="GtkBox" id="box2">
<property name="valign">center</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="result_label">
<property name="valign">start</property>
<property name="xalign">0</property>
<property name="label" translatable="no">Silver Trophy!</property>
<property name="use_markup">1</property>
<style>
<class name="dim-label"/>
</style>
<attributes>
<attribute name="weight" value="bold"></attribute>
<attribute name="scale" value="1.5"></attribute>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="current_time_label">
<property name="valign">start</property>
<property name="xalign">0</property>
<property name="label" translatable="no">You managed to finish the route with the 2nd best time ever, &lt;b&gt;48.15 seconds!&lt;/b&gt; </property>
<property name="use_markup">1</property>
<property name="wrap">1</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="better_time_label">
<property name="valign">start</property>
<property name="xalign">0</property>
<property name="label" translatable="no">Only &lt;b&gt;3.75 seconds&lt;/b&gt; separate you from the gold trophy!</property>
<property name="use_markup">1</property>
<property name="wrap">1</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
<layout>
<property name="left_attach">1</property>
</layout>
</object>
</child>
</object>
</property>
<property name="tab">
<object class="GtkLabel" id="label3">
<property name="label" translatable="no">page 3</property>
</object>
</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<object class="GtkButton" id="run_button">
<property name="can_focus">1</property>
<property name="receives_default">1</property>
<property name="hexpand">1</property>
<property name="vexpand">1</property>
<property name="use_action_appearance">False</property>
<child>
<object class="GtkLabel" id="run_button_label">
<property name="label" translatable="yes">Run!</property>
<attributes>
<attribute name="scale" value="3"></attribute>
</attributes>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
</object>
</child>
</object>
</interface>
@@ -0,0 +1,286 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
<object class="GtkWindow" id="window1">
<property name="can_focus">False</property>
<property name="border_width">12</property>
<property name="title" translatable="yes">Office Runner</property>
<property name="resizable">False</property>
<property name="window_position">center</property>
<child>
<object class="GtkBox" id="box1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">12</property>
<property name="margin_right">12</property>
<property name="margin_bottom">12</property>
<property name="orientation">vertical</property>
<property name="spacing">12</property>
<child>
<object class="GtkNotebook" id="notebook1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="show_tabs">False</property>
<property name="show_border">False</property>
<child>
<object class="GtkGrid" id="grid1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="row_spacing">12</property>
<property name="column_spacing">12</property>
<child>
<object class="GtkImage" id="run_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="vexpand">True</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label5">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">start</property>
<property name="hexpand">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes"> • Click the "Run!" button, and then dash to your desk or meeting.
• You are allowed to close your laptop lid to run faster
</property>
<property name="use_markup">True</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label7">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Rules</property>
<attributes>
<attribute name="scale" value="2"/>
</attributes>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object>
</child>
<child type="tab">
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="no">page 1</property>
</object>
<packing>
<property name="tab_fill">False</property>
</packing>
</child>
<child>
<object class="GtkGrid" id="grid2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="row_spacing">12</property>
<property name="column_spacing">12</property>
<child>
<object class="GtkImage" id="time_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="vexpand">True</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="time_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="label" translatable="no">00:00.00</property>
<attributes>
<attribute name="scale" value="10"/>
<attribute name="font-features" value="tnum 1"/>
</attributes>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child type="tab">
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="no">page 2</property>
</object>
<packing>
<property name="position">1</property>
<property name="tab_fill">False</property>
</packing>
</child>
<child>
<object class="GtkGrid" id="grid3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="row_spacing">12</property>
<property name="column_spacing">12</property>
<child>
<object class="GtkImage" id="trophy_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkBox" id="box2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">center</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="result_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">start</property>
<property name="xalign">0</property>
<property name="label" translatable="no">Silver Trophy!</property>
<property name="use_markup">True</property>
<style>
<class name="dim-label"/>
</style>
<attributes>
<attribute name="weight" value="bold"/>
<attribute name="scale" value="1.5"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="current_time_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">start</property>
<property name="xalign">0</property>
<property name="label" translatable="no">You managed to finish the route with the 2nd best time ever, &lt;b&gt;48.15 seconds!&lt;/b&gt; </property>
<property name="use_markup">True</property>
<property name="wrap">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="better_time_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">start</property>
<property name="xalign">0</property>
<property name="label" translatable="no">Only &lt;b&gt;3.75 seconds&lt;/b&gt; separate you from the gold trophy!</property>
<property name="use_markup">True</property>
<property name="wrap">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
<packing>
<property name="position">2</property>
</packing>
</child>
<child type="tab">
<object class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="no">page 3</property>
</object>
<packing>
<property name="position">2</property>
<property name="tab_fill">False</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="run_button">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="use_action_appearance">False</property>
<child>
<object class="GtkLabel" id="run_button_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Run!</property>
<attributes>
<attribute name="scale" value="3"/>
</attributes>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</interface>