static void item_start_element (GMarkupParseContext *context, const gchar *element_name, const gchar **names, const gchar **values, gpointer user_data, GError **error) { ItemParserData *data = (ItemParserData*)user_data; guint i; if (strcmp (element_name, "item") == 0) { data->is_text = TRUE; for (i = 0; names[i]; i++) { if (strcmp (names[i], "translatable") == 0) { gboolean bval; if (!_gtk_builder_boolean_from_string (values[i], &bval, error)) return; data->translatable = bval; } else if (strcmp (names[i], "comments") == 0) { /* do nothing, comments are for translators */ } else if (strcmp (names[i], "context") == 0) data->context = g_strdup (values[i]); else if (strcmp (names[i], "id") == 0) data->id = g_strdup (values[i]); else g_warning ("Unknown custom combo box item attribute: %s", names[i]); } } }
static void cell_packing_start_element (GMarkupParseContext *context, const gchar *element_name, const gchar **names, const gchar **values, gpointer user_data, GError **error) { CellPackingSubParserData *parser_data = (CellPackingSubParserData*)user_data; guint i; if (strcmp (element_name, "property") == 0) { for (i = 0; names[i]; i++) if (strcmp (names[i], "name") == 0) parser_data->cell_prop_name = g_strdup (values[i]); else if (strcmp (names[i], "translatable") == 0) { if (!_gtk_builder_boolean_from_string (values[i], &parser_data->translatable, error)) return; } else if (strcmp (names[i], "comments") == 0) ; /* for translators */ else if (strcmp (names[i], "context") == 0) parser_data->context = g_strdup (values[i]); else g_warning ("Unsupported attribute for GtkCellLayout Cell " "property: %s\n", names[i]); } else if (strcmp (element_name, "cell-packing") == 0) return; else g_warning ("Unsupported tag for GtkCellLayout: %s\n", element_name); }
static void parse_signal (ParserData *data, const gchar *element_name, const gchar **names, const gchar **values, GError **error) { SignalInfo *info; gchar *name = NULL; gchar *handler = NULL; gchar *object = NULL; gboolean after = FALSE; gboolean swapped = FALSE; gboolean swapped_set = FALSE; ObjectInfo *object_info; int i; object_info = state_peek_info (data, ObjectInfo); if (!object_info || strcmp (object_info->tag.name, "object") != 0) { error_invalid_tag (data, element_name, NULL, error); return; } for (i = 0; names[i] != NULL; i++) { if (strcmp (names[i], "name") == 0) name = g_strdup (values[i]); else if (strcmp (names[i], "handler") == 0) handler = g_strdup (values[i]); else if (strcmp (names[i], "after") == 0) { if (!_gtk_builder_boolean_from_string (values[i], &after, error)) return; } else if (strcmp (names[i], "swapped") == 0) { if (!_gtk_builder_boolean_from_string (values[i], &swapped, error)) return; swapped_set = TRUE; } else if (strcmp (names[i], "object") == 0) object = g_strdup (values[i]); else if (strcmp (names[i], "last_modification_time") == 0) /* parse but ignore */ ; else { error_invalid_attribute (data, element_name, names[i], error); return; } } if (!name) { error_missing_attribute (data, element_name, "name", error); return; } else if (!handler) { error_missing_attribute (data, element_name, "handler", error); return; } /* Swapped defaults to FALSE except when object is set */ if (object && !swapped_set) swapped = TRUE; info = g_slice_new0 (SignalInfo); info->name = name; info->handler = handler; if (after) info->flags |= G_CONNECT_AFTER; if (swapped) info->flags |= G_CONNECT_SWAPPED; info->connect_object_name = object; state_push (data, info); info->tag.name = element_name; }
static void parse_property (ParserData *data, const gchar *element_name, const gchar **names, const gchar **values, GError **error) { PropertyInfo *info; gchar *name = NULL; gchar *context = NULL; gboolean translatable = FALSE; ObjectInfo *object_info; int i; object_info = state_peek_info (data, ObjectInfo); if (!object_info || strcmp (object_info->tag.name, "object") != 0) { error_invalid_tag (data, element_name, NULL, error); return; } for (i = 0; names[i] != NULL; i++) { if (strcmp (names[i], "name") == 0) name = g_strdelimit (g_strdup (values[i]), "_", '-'); else if (strcmp (names[i], "translatable") == 0) { if (!_gtk_builder_boolean_from_string (values[i], &translatable, error)) return; } else if (strcmp (names[i], "comments") == 0) { /* do nothing, comments are for translators */ } else if (strcmp (names[i], "context") == 0) { context = g_strdup (values[i]); } else { error_invalid_attribute (data, element_name, names[i], error); return; } } if (!name) { error_missing_attribute (data, element_name, "name", error); return; } info = g_slice_new0 (PropertyInfo); info->name = name; info->translatable = translatable; info->context = context; info->text = g_string_new (""); state_push (data, info); info->tag.name = element_name; }