Break out symbol handling into Rust

This commit is contained in:
Dorota Czaplejewicz
2019-07-31 16:05:12 +00:00
parent c1482c2377
commit 38f81e45f4
14 changed files with 355 additions and 121 deletions

View File

@ -33,6 +33,7 @@
#include "eek-key.h"
#include "eek-keysym.h"
#include "eek-text.h"
#include "src/symbol.h"
#include "squeekboard-resources.h"
@ -732,38 +733,25 @@ symbols_end_element_callback (GMarkupParseContext *pcontext,
if (g_strcmp0 (element_name, "symbol") == 0 ||
g_strcmp0 (element_name, "keysym") == 0 ||
g_strcmp0 (element_name, "text") == 0) {
EekSymbol *symbol;
if (g_strcmp0 (element_name, "keysym") == 0) {
EekSymbol *keysym;
if (data->keyval != EEK_INVALID_KEYSYM)
keysym = eek_keysym_new (data->keyval);
else
keysym = eek_keysym_new_from_name (text);
symbol = keysym;
} else if (g_strcmp0 (element_name, "text") == 0) {
symbol = eek_text_new (text);
} else {
symbol = eek_symbol_new (text);
}
if (data->label) {
eek_symbol_set_label (symbol, data->label);
g_free (data->label);
data->label = NULL;
}
if (data->icon) {
eek_symbol_set_icon_name (symbol, data->icon);
g_free (data->icon);
data->icon = NULL;
}
if (data->tooltip) {
eek_symbol_set_tooltip (symbol, data->tooltip);
g_free (data->tooltip);
data->tooltip = NULL;
}
data->symbols = g_slist_prepend (data->symbols, symbol);
data->symbols = g_slist_prepend (
data->symbols,
squeek_symbol_new(
element_name,
text,
data->keyval,
data->label,
data->icon,
data->tooltip
)
);
data->keyval = 0;
g_free(data->label);
data->label = NULL;
g_free(data->icon);
data->icon = NULL;
g_free(data->tooltip);
data->tooltip = NULL;
goto out;
}