text: Implement Scriptable interface for font-description
This makes ClutterText implement the Scriptable interface so that we can have a custom property parser and setter for the font-description property. This works by simply passing the string description through to clutter_text_set_font_name. Reviewed-by: Emmanuele Bassi <ebassi@linux.intel.com>
This commit is contained in:
parent
98b3834d55
commit
397fe1b5b6
@ -60,6 +60,7 @@
|
||||
#include "clutter-profile.h"
|
||||
#include "clutter-units.h"
|
||||
#include "clutter-paint-volume-private.h"
|
||||
#include "clutter-scriptable.h"
|
||||
|
||||
/* cursor width in pixels */
|
||||
#define DEFAULT_CURSOR_SIZE 2
|
||||
@ -85,7 +86,13 @@ static const ClutterColor default_selection_color = { 0, 0, 0, 255 };
|
||||
static const ClutterColor default_text_color = { 0, 0, 0, 255 };
|
||||
static const ClutterColor default_selected_text_color = { 0, 0, 0, 255 };
|
||||
|
||||
G_DEFINE_TYPE (ClutterText, clutter_text, CLUTTER_TYPE_ACTOR);
|
||||
static void clutter_scriptable_iface_init (ClutterScriptableIface *iface);
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE (ClutterText,
|
||||
clutter_text,
|
||||
CLUTTER_TYPE_ACTOR,
|
||||
G_IMPLEMENT_INTERFACE (CLUTTER_TYPE_SCRIPTABLE,
|
||||
clutter_scriptable_iface_init));
|
||||
|
||||
struct _LayoutCache
|
||||
{
|
||||
@ -2757,6 +2764,48 @@ clutter_text_add_move_binding (ClutterBindingPool *pool,
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
clutter_text_parse_custom_node (ClutterScriptable *scriptable,
|
||||
ClutterScript *script,
|
||||
GValue *value,
|
||||
const gchar *name,
|
||||
JsonNode *node)
|
||||
{
|
||||
if (strncmp (name, "font-description", 16) == 0)
|
||||
{
|
||||
g_value_init (value, G_TYPE_STRING);
|
||||
g_value_set_string (value, json_node_get_string (node));
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
clutter_text_set_custom_property (ClutterScriptable *scriptable,
|
||||
ClutterScript *script,
|
||||
const gchar *name,
|
||||
const GValue *value)
|
||||
{
|
||||
if (strncmp (name, "font-description", 16) == 0)
|
||||
{
|
||||
g_assert (G_VALUE_HOLDS (value, G_TYPE_STRING));
|
||||
if (g_value_get_string (value) != NULL)
|
||||
clutter_text_set_font_name (CLUTTER_TEXT (scriptable),
|
||||
g_value_get_string (value));
|
||||
}
|
||||
else
|
||||
g_object_set_property (G_OBJECT (scriptable), name, value);
|
||||
}
|
||||
|
||||
static void
|
||||
clutter_scriptable_iface_init (ClutterScriptableIface *iface)
|
||||
{
|
||||
iface->parse_custom_node = clutter_text_parse_custom_node;
|
||||
iface->set_custom_property = clutter_text_set_custom_property;
|
||||
}
|
||||
|
||||
static void
|
||||
clutter_text_class_init (ClutterTextClass *klass)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user