From bdf29bf57b24d8fa758d128937977489201c3ad0 Mon Sep 17 00:00:00 2001 From: Dorota Czaplejewicz Date: Thu, 1 Aug 2019 19:59:34 +0000 Subject: [PATCH 1/2] symbol: forget serializing --- eek/eek-symbol.c | 46 +--------------------------------------------- 1 file changed, 1 insertion(+), 45 deletions(-) diff --git a/eek/eek-symbol.c b/eek/eek-symbol.c index 8352b11d..5e4be1a5 100644 --- a/eek/eek-symbol.c +++ b/eek/eek-symbol.c @@ -28,7 +28,6 @@ #include "config.h" #include "eek-symbol.h" -#include "eek-serializable.h" #include "eek-enumtypes.h" enum { @@ -52,54 +51,11 @@ typedef struct _EekSymbolPrivate gchar *tooltip; } EekSymbolPrivate; -static void eek_serializable_iface_init (EekSerializableIface *iface); - G_DEFINE_TYPE_EXTENDED (EekSymbol, eek_symbol, G_TYPE_OBJECT, 0, /* GTypeFlags */ - G_ADD_PRIVATE (EekSymbol) - G_IMPLEMENT_INTERFACE (EEK_TYPE_SERIALIZABLE, - eek_serializable_iface_init)) - -static void -eek_symbol_real_serialize (EekSerializable *self, - GVariantBuilder *builder) -{ - EekSymbolPrivate *priv = eek_symbol_get_instance_private (EEK_SYMBOL (self)); -#define NOTNULL(s) ((s) != NULL ? (s) : "") - g_variant_builder_add (builder, "s", NOTNULL(priv->name)); - g_variant_builder_add (builder, "s", NOTNULL(priv->label)); - g_variant_builder_add (builder, "u", priv->category); - g_variant_builder_add (builder, "u", priv->modifier_mask); - g_variant_builder_add (builder, "s", NOTNULL(priv->icon_name)); - g_variant_builder_add (builder, "s", NOTNULL(priv->tooltip)); -#undef NOTNULL -} - -static gsize -eek_symbol_real_deserialize (EekSerializable *self, - GVariant *variant, - gsize index) -{ - EekSymbolPrivate *priv = eek_symbol_get_instance_private (EEK_SYMBOL (self)); - - g_variant_get_child (variant, index++, "s", &priv->name); - g_variant_get_child (variant, index++, "s", &priv->label); - g_variant_get_child (variant, index++, "u", &priv->category); - g_variant_get_child (variant, index++, "u", &priv->modifier_mask); - g_variant_get_child (variant, index++, "s", &priv->icon_name); - g_variant_get_child (variant, index++, "s", &priv->tooltip); - - return index; -} - -static void -eek_serializable_iface_init (EekSerializableIface *iface) -{ - iface->serialize = eek_symbol_real_serialize; - iface->deserialize = eek_symbol_real_deserialize; -} + G_ADD_PRIVATE (EekSymbol)) static void eek_symbol_set_property (GObject *object, From d8b26040f992ae0939b2865df3c38d4985bbdb1b Mon Sep 17 00:00:00 2001 From: Dorota Czaplejewicz Date: Thu, 1 Aug 2019 20:08:24 +0000 Subject: [PATCH 2/2] symbolclass: Remove with surroundings Collaterals: Enabled strict checking of initializers, fixed scripts generating keycode mappings. --- eek/eek-gtk-keyboard.c | 1 - eek/eek-keysym.c | 10 ----- eek/eek-renderer.c | 38 +---------------- eek/eek-serializable.c | 6 +-- eek/eek-symbol.c | 90 +-------------------------------------- eek/eek-symbol.h | 35 --------------- eek/eek-text.c | 1 - eek/eek-xml-layout.c | 9 ---- eek/gen-keysym-entries.py | 6 +-- meson.build | 2 +- 10 files changed, 9 insertions(+), 189 deletions(-) diff --git a/eek/eek-gtk-keyboard.c b/eek/eek-gtk-keyboard.c index 9fcdf537..36fc74be 100644 --- a/eek/eek-gtk-keyboard.c +++ b/eek/eek-gtk-keyboard.c @@ -542,7 +542,6 @@ render_released_key (GtkWidget *widget, { EekGtkKeyboard *self = EEK_GTK_KEYBOARD (widget); EekGtkKeyboardPrivate *priv = eek_gtk_keyboard_get_instance_private (self); - EekBounds bounds, large_bounds; GdkWindow *window = gtk_widget_get_window (widget); cairo_region_t *region = gdk_window_get_clip_region (window); diff --git a/eek/eek-keysym.c b/eek/eek-keysym.c index f02a309e..a02cb3b4 100644 --- a/eek/eek-keysym.c +++ b/eek/eek-keysym.c @@ -56,7 +56,6 @@ typedef struct _EekKeysymPrivate struct _EekKeysymEntry { guint xkeysym; const gchar *name; - EekSymbolCategory category; }; typedef struct _EekKeysymEntry EekKeysymEntry; @@ -226,7 +225,6 @@ eek_keysym_new_with_modifier (guint xkeysym, EekKeysymEntry *special_entry, *xkeysym_entry, *unicode_entry, *unichar_entry; gchar *name, *label; - EekSymbolCategory category; gunichar uc; special_entry = @@ -246,23 +244,17 @@ eek_keysym_new_with_modifier (guint xkeysym, unichar_entry = g_slice_new (EekKeysymEntry); unichar_entry->xkeysym = xkeysym; unichar_entry->name = unichar_to_utf8 (uc); - unichar_entry->category = EEK_SYMBOL_CATEGORY_LETTER; } - /* name and category */ name = NULL; if (xkeysym_entry) { name = g_strdup (xkeysym_entry->name); - category = xkeysym_entry->category; } else if (unichar_entry) { name = g_strdup (unichar_entry->name); - category = unichar_entry->category; } else if (unicode_entry) { name = g_strdup (unicode_entry->name); - category = unicode_entry->category; } else { name = g_strdup (""); - category = EEK_SYMBOL_CATEGORY_UNKNOWN; } /* label */ @@ -278,7 +270,6 @@ eek_keysym_new_with_modifier (guint xkeysym, keysym = g_object_new (EEK_TYPE_KEYSYM, "name", name, "label", label, - "category", category, "modifier-mask", modifier_mask, NULL); g_free (name); @@ -326,7 +317,6 @@ eek_keysym_new_from_name (const gchar *name) return g_object_new (EEK_TYPE_KEYSYM, "name", name, "label", name, - "category", EEK_SYMBOL_CATEGORY_UNKNOWN, "modifier-mask", 0, NULL); } diff --git a/eek/eek-renderer.c b/eek/eek-renderer.c index 7cecd713..5e4aeba8 100644 --- a/eek/eek-renderer.c +++ b/eek/eek-renderer.c @@ -68,14 +68,6 @@ G_DEFINE_TYPE_WITH_PRIVATE (EekRenderer, eek_renderer, G_TYPE_OBJECT) static const EekColor DEFAULT_FOREGROUND_COLOR = {0.3, 0.3, 0.3, 1.0}; static const EekColor DEFAULT_BACKGROUND_COLOR = {1.0, 1.0, 1.0, 1.0}; -struct _TextProperty { - gint category; - gboolean ascii; - gdouble scale; - gboolean ellipses; -}; -typedef struct _TextProperty TextProperty; - /* eek-keyboard-drawing.c */ extern void _eek_rounded_polygon (cairo_t *cr, gdouble radius, @@ -481,22 +473,6 @@ eek_renderer_apply_transformation_for_key (EekRenderer *self, } } -static const TextProperty * -get_text_property_for_category (EekSymbolCategory category) -{ - static const TextProperty props[EEK_SYMBOL_CATEGORY_LAST] = { - { EEK_SYMBOL_CATEGORY_LETTER, FALSE, 1.0, FALSE }, - { EEK_SYMBOL_CATEGORY_FUNCTION, TRUE, 0.5, FALSE }, - { EEK_SYMBOL_CATEGORY_KEYNAME, TRUE, 0.5, TRUE } - }; - - for (uint i = 0; i < G_N_ELEMENTS(props); i++) - if (props[i].category == category) - return &props[i]; - - g_return_val_if_reached (NULL); -} - static void eek_renderer_real_render_key_label (EekRenderer *self, PangoLayout *layout, @@ -504,10 +480,8 @@ eek_renderer_real_render_key_label (EekRenderer *self, { EekRendererPrivate *priv = eek_renderer_get_instance_private (self); EekSymbol *symbol; - EekSymbolCategory category; const gchar *label; EekBounds bounds; - const TextProperty *prop; PangoFontDescription *font; PangoLayoutLine *line; gdouble scale; @@ -546,15 +520,9 @@ eek_renderer_real_render_key_label (EekRenderer *self, scale = MIN((bounds.width - priv->border_width) / bounds.width, (bounds.height - priv->border_width) / bounds.height); - category = eek_symbol_get_category (symbol); - prop = get_text_property_for_category (category); - - font = pango_font_description_copy (prop->ascii ? - priv->ascii_font : - priv->font); + font = pango_font_description_copy (priv->font); pango_font_description_set_size (font, - (gint)round(pango_font_description_get_size (font) * - prop->scale * scale)); + (gint)round(pango_font_description_get_size (font) * scale)); pango_layout_set_font_description (layout, font); pango_font_description_free (font); @@ -564,8 +532,6 @@ eek_renderer_real_render_key_label (EekRenderer *self, pango_layout_set_alignment (layout, PANGO_ALIGN_RIGHT); pango_layout_set_width (layout, PANGO_SCALE * bounds.width * scale); - if (prop->ellipses) - pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_END); } static void diff --git a/eek/eek-serializable.c b/eek/eek-serializable.c index 82fea1ec..fed00ae0 100644 --- a/eek/eek-serializable.c +++ b/eek/eek-serializable.c @@ -36,10 +36,8 @@ eek_serializable_get_type (void) { static GType iface_type = 0; if (iface_type == 0) { - static const GTypeInfo info = { - sizeof (EekSerializableIface), - NULL, - NULL, + static GTypeInfo info = { + .class_size = sizeof (EekSerializableIface) }; iface_type = g_type_register_static (G_TYPE_INTERFACE, "EekSerializable", diff --git a/eek/eek-symbol.c b/eek/eek-symbol.c index 5e4be1a5..aff84d67 100644 --- a/eek/eek-symbol.c +++ b/eek/eek-symbol.c @@ -34,7 +34,6 @@ enum { PROP_0, PROP_NAME, PROP_LABEL, - PROP_CATEGORY, PROP_MODIFIER_MASK, PROP_ICON_NAME, PROP_TOOLTIP, @@ -45,7 +44,6 @@ typedef struct _EekSymbolPrivate { gchar *name; gchar *label; - EekSymbolCategory category; EekModifierType modifier_mask; gchar *icon_name; gchar *tooltip; @@ -70,9 +68,6 @@ eek_symbol_set_property (GObject *object, case PROP_LABEL: eek_symbol_set_label (EEK_SYMBOL(object), g_value_get_string (value)); break; - case PROP_CATEGORY: - eek_symbol_set_category (EEK_SYMBOL(object), g_value_get_enum (value)); - break; case PROP_MODIFIER_MASK: eek_symbol_set_modifier_mask (EEK_SYMBOL(object), g_value_get_flags (value)); @@ -104,9 +99,6 @@ eek_symbol_get_property (GObject *object, case PROP_LABEL: g_value_set_string (value, eek_symbol_get_label (EEK_SYMBOL(object))); break; - case PROP_CATEGORY: - g_value_set_enum (value, eek_symbol_get_category (EEK_SYMBOL(object))); - break; case PROP_MODIFIER_MASK: g_value_set_flags (value, eek_symbol_get_modifier_mask (EEK_SYMBOL(object))); @@ -162,14 +154,6 @@ eek_symbol_class_init (EekSymbolClass *klass) G_PARAM_CONSTRUCT | G_PARAM_READWRITE); g_object_class_install_property (gobject_class, PROP_LABEL, pspec); - pspec = g_param_spec_enum ("category", - "Category", - "Category of the symbol", - EEK_TYPE_SYMBOL_CATEGORY, - EEK_SYMBOL_CATEGORY_UNKNOWN, - G_PARAM_CONSTRUCT | G_PARAM_READWRITE); - g_object_class_install_property (gobject_class, PROP_CATEGORY, pspec); - pspec = g_param_spec_flags ("modifier-mask", "Modifier mask", "Modifier mask of the symbol", @@ -195,11 +179,7 @@ eek_symbol_class_init (EekSymbolClass *klass) static void eek_symbol_init (EekSymbol *self) -{ - EekSymbolPrivate *priv = eek_symbol_get_instance_private (self); - - priv->category = EEK_SYMBOL_CATEGORY_UNKNOWN; -} +{} /** * eek_symbol_new: @@ -287,40 +267,6 @@ eek_symbol_get_label (EekSymbol *symbol) return priv->label; } -/** - * eek_symbol_set_category: - * @symbol: an #EekSymbol - * @category: an #EekSymbolCategory - * - * Set symbol category of @symbol to @category. - */ -void -eek_symbol_set_category (EekSymbol *symbol, - EekSymbolCategory category) -{ - g_return_if_fail (EEK_IS_SYMBOL(symbol)); - - EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol); - - priv->category = category; -} - -/** - * eek_symbol_get_category: - * @symbol: an #EekSymbol - * - * Get symbol category of @symbol. - */ -EekSymbolCategory -eek_symbol_get_category (EekSymbol *symbol) -{ - g_return_val_if_fail (EEK_IS_SYMBOL(symbol), EEK_SYMBOL_CATEGORY_UNKNOWN); - - EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol); - - return priv->category; -} - /** * eek_symbol_set_modifier_mask: * @symbol: an #EekSymbol @@ -442,37 +388,3 @@ eek_symbol_get_tooltip (EekSymbol *symbol) return priv->tooltip; } -static const struct { - EekSymbolCategory category; - gchar *name; -} category_names[] = { - { EEK_SYMBOL_CATEGORY_LETTER, "letter" }, - { EEK_SYMBOL_CATEGORY_FUNCTION, "function" }, - { EEK_SYMBOL_CATEGORY_KEYNAME, "keyname" }, - { EEK_SYMBOL_CATEGORY_USER0, "user0" }, - { EEK_SYMBOL_CATEGORY_USER1, "user1" }, - { EEK_SYMBOL_CATEGORY_USER2, "user2" }, - { EEK_SYMBOL_CATEGORY_USER3, "user3" }, - { EEK_SYMBOL_CATEGORY_USER4, "user4" }, - { EEK_SYMBOL_CATEGORY_UNKNOWN, NULL } -}; - -const gchar * -eek_symbol_category_get_name (EekSymbolCategory category) -{ - gint i; - for (i = 0; i < G_N_ELEMENTS(category_names); i++) - if (category_names[i].category == category) - return category_names[i].name; - return NULL; -} - -EekSymbolCategory -eek_symbol_category_from_name (const gchar *name) -{ - gint i; - for (i = 0; i < G_N_ELEMENTS(category_names); i++) - if (g_strcmp0 (category_names[i].name, name) == 0) - return category_names[i].category; - return EEK_SYMBOL_CATEGORY_UNKNOWN; -} diff --git a/eek/eek-symbol.h b/eek/eek-symbol.h index 88ac8f0f..eaf84d77 100644 --- a/eek/eek-symbol.h +++ b/eek/eek-symbol.h @@ -29,35 +29,6 @@ G_BEGIN_DECLS -/** - * EekSymbolCategory: - * @EEK_SYMBOL_CATEGORY_LETTER: the symbol represents an alphabet letter - * @EEK_SYMBOL_CATEGORY_FUNCTION: the symbol represents a function - * @EEK_SYMBOL_CATEGORY_KEYNAME: the symbol does not have meaning but - * have a name - * @EEK_SYMBOL_CATEGORY_USER0: reserved for future use - * @EEK_SYMBOL_CATEGORY_USER1: reserved for future use - * @EEK_SYMBOL_CATEGORY_USER2: reserved for future use - * @EEK_SYMBOL_CATEGORY_USER3: reserved for future use - * @EEK_SYMBOL_CATEGORY_USER4: reserved for future use - * @EEK_SYMBOL_CATEGORY_UNKNOWN: used for error reporting - * @EEK_SYMBOL_CATEGORY_LAST: the last symbol category - * - * Category of the key symbols. - */ -typedef enum { - EEK_SYMBOL_CATEGORY_LETTER, - EEK_SYMBOL_CATEGORY_FUNCTION, - EEK_SYMBOL_CATEGORY_KEYNAME, - EEK_SYMBOL_CATEGORY_USER0, - EEK_SYMBOL_CATEGORY_USER1, - EEK_SYMBOL_CATEGORY_USER2, - EEK_SYMBOL_CATEGORY_USER3, - EEK_SYMBOL_CATEGORY_USER4, - EEK_SYMBOL_CATEGORY_UNKNOWN, - EEK_SYMBOL_CATEGORY_LAST = EEK_SYMBOL_CATEGORY_UNKNOWN -} EekSymbolCategory; - #define EEK_TYPE_SYMBOL (eek_symbol_get_type()) G_DECLARE_DERIVABLE_TYPE(EekSymbol, eek_symbol, EEK, SYMBOL, GObject) @@ -78,9 +49,6 @@ const gchar *eek_symbol_get_name (EekSymbol *symbol); void eek_symbol_set_label (EekSymbol *symbol, const gchar *label); const gchar *eek_symbol_get_label (EekSymbol *symbol); -void eek_symbol_set_category (EekSymbol *symbol, - EekSymbolCategory category); -EekSymbolCategory eek_symbol_get_category (EekSymbol *symbol); EekModifierType eek_symbol_get_modifier_mask (EekSymbol *symbol); void eek_symbol_set_modifier_mask (EekSymbol *symbol, EekModifierType mask); @@ -92,9 +60,6 @@ void eek_symbol_set_tooltip (EekSymbol *symbol, const gchar *tooltip); const gchar * eek_symbol_get_tooltip (EekSymbol *symbol); -const gchar *eek_symbol_category_get_name (EekSymbolCategory category); -EekSymbolCategory eek_symbol_category_from_name (const gchar *name); - G_END_DECLS #endif /* EEK_SYMBOL_H */ diff --git a/eek/eek-text.c b/eek/eek-text.c index 6ef1ed4f..d05d6949 100644 --- a/eek/eek-text.c +++ b/eek/eek-text.c @@ -165,7 +165,6 @@ eek_text_new (const gchar *text) { return g_object_new (EEK_TYPE_TEXT, "label", text, - "category", EEK_SYMBOL_CATEGORY_FUNCTION, "text", text, NULL); } diff --git a/eek/eek-xml-layout.c b/eek/eek-xml-layout.c index 404d6834..d6539804 100644 --- a/eek/eek-xml-layout.c +++ b/eek/eek-xml-layout.c @@ -568,7 +568,6 @@ struct _SymbolsParseData { gchar *label; gchar *icon; gchar *tooltip; - EekSymbolCategory category; guint keyval; gint groups; }; @@ -681,13 +680,6 @@ symbols_start_element_callback (GMarkupParseContext *pcontext, "tooltip"); if (attribute != NULL) data->tooltip = g_strdup (attribute); - - attribute = get_attribute (attribute_names, attribute_values, - "category"); - if (attribute != NULL) - data->category = strtoul (attribute, NULL, 10); - else - data->category = EEK_SYMBOL_CATEGORY_KEYNAME; } out: @@ -755,7 +747,6 @@ symbols_end_element_callback (GMarkupParseContext *pcontext, symbol = EEK_SYMBOL(eek_text_new (text)); } else { symbol = eek_symbol_new (text); - eek_symbol_set_category (symbol, EEK_SYMBOL_CATEGORY_KEYNAME); } if (data->label) { diff --git a/eek/gen-keysym-entries.py b/eek/gen-keysym-entries.py index 61792591..3553cae3 100755 --- a/eek/gen-keysym-entries.py +++ b/eek/gen-keysym-entries.py @@ -33,7 +33,7 @@ else: table = dict() for line in in_stream: - match = re.match(r'\s*(0x[0-9A-F]+)\s+(\S*)\s+(\S*)', line, re.I) + match = re.match(r'\s*(0x[0-9A-F]+)\s+"(.*)"\s+(\S*)', line, re.I) if match: table[int(match.group(1), 16)] = (match.group(2), match.group(3)) @@ -42,8 +42,8 @@ sys.stdout.write("static const EekKeysymEntry %s[] = {\n" % for index, (keysym, (l, c)) in enumerate([(keysym, table[keysym]) for keysym in sorted(table.keys())]): - sys.stdout.write(" { 0x%X, %s, %s }" % - (keysym, l, c)) + sys.stdout.write(" { 0x%X, \"%s\" }" % + (keysym, l)) if index < len(table) - 1: sys.stdout.write(",") sys.stdout.write("\n") diff --git a/meson.build b/meson.build index 5c74b5ae..41729bc8 100644 --- a/meson.build +++ b/meson.build @@ -16,7 +16,7 @@ add_project_arguments( '-Werror=implicit-function-declaration', '-Werror=implicit-fallthrough=3', '-Werror=maybe-uninitialized', -# '-Werror=missing-field-initializers', // fix eek-unicode-keysym-entries first + '-Werror=missing-field-initializers', ], language: 'c' )