static void process_widget (GType type) { GObjectClass *oclass; if (!type || !G_TYPE_IS_CLASSED (type) || !g_type_is_a (type, GTK_TYPE_WIDGET)) { return; } oclass = g_type_class_ref (type); process_properties (type, oclass); if (g_type_is_a (type, GTK_TYPE_CONTAINER) && type != GTK_TYPE_CONTAINER) { process_child_properties (type, oclass); } process_signals (type); g_print ("\n\n%1$s = element %1$s { %1$sAttrs, %1$sSignals %2$s}\n", g_type_name (type), g_type_is_a (type, GTK_TYPE_CONTAINER) ? ", (misc | widget)*" : ", misc*"); if (type != GTK_TYPE_WIDGET) { g_print ("widget |= %s\n", g_type_name (type)); } g_print ("\n"); }
static GtkSourceLanguage * process_language_node (xmlTextReaderPtr reader, const gchar *filename) { xmlChar *version; xmlChar *tmp; xmlChar *untranslated_name; GtkSourceLanguage *lang; lang = g_object_new (GTK_SOURCE_TYPE_LANGUAGE, NULL); lang->priv->lang_file_name = g_strdup (filename); tmp = xmlTextReaderGetAttribute (reader, BAD_CAST "translation-domain"); lang->priv->translation_domain = g_strdup ((gchar*) tmp); xmlFree (tmp); tmp = xmlTextReaderGetAttribute (reader, BAD_CAST "hidden"); if (tmp != NULL) lang->priv->hidden = string_to_bool ((gchar*) tmp); else lang->priv->hidden = FALSE; xmlFree (tmp); tmp = xmlTextReaderGetAttribute (reader, BAD_CAST "mimetypes"); if (tmp != NULL) g_hash_table_insert (lang->priv->properties, g_strdup ("mimetypes"), g_strdup ((char*) tmp)); xmlFree (tmp); tmp = xmlTextReaderGetAttribute (reader, BAD_CAST "globs"); if (tmp != NULL) g_hash_table_insert (lang->priv->properties, g_strdup ("globs"), g_strdup ((char*) tmp)); xmlFree (tmp); tmp = xmlTextReaderGetAttribute (reader, BAD_CAST "_name"); if (tmp == NULL) { tmp = xmlTextReaderGetAttribute (reader, BAD_CAST "name"); if (tmp == NULL) { g_warning ("Impossible to get language name from file '%s'", filename); g_object_unref (lang); return NULL; } lang->priv->name = g_strdup ((char*) tmp); untranslated_name = tmp; } else { lang->priv->name = _gtk_source_language_translate_string (lang, (gchar*) tmp); untranslated_name = tmp; } tmp = xmlTextReaderGetAttribute (reader, BAD_CAST "id"); if (tmp != NULL) { lang->priv->id = g_ascii_strdown ((gchar*) tmp, -1); } else { lang->priv->id = g_ascii_strdown ((gchar*) untranslated_name, -1); } xmlFree (tmp); xmlFree (untranslated_name); tmp = xmlTextReaderGetAttribute (reader, BAD_CAST "_section"); if (tmp == NULL) { tmp = xmlTextReaderGetAttribute (reader, BAD_CAST "section"); if (tmp == NULL) lang->priv->section = g_strdup (DEFAULT_SECTION); else lang->priv->section = g_strdup ((gchar *) tmp); xmlFree (tmp); } else { lang->priv->section = _gtk_source_language_translate_string (lang, (gchar*) tmp); xmlFree (tmp); } version = xmlTextReaderGetAttribute (reader, BAD_CAST "version"); if (version == NULL) { g_warning ("Impossible to get version number from file '%s'", filename); g_object_unref (lang); return NULL; } if (xmlStrcmp (version , BAD_CAST "1.0") == 0) { lang->priv->version = GTK_SOURCE_LANGUAGE_VERSION_1_0; } else if (xmlStrcmp (version, BAD_CAST "2.0") == 0) { lang->priv->version = GTK_SOURCE_LANGUAGE_VERSION_2_0; } else { g_warning ("Unsupported language spec version '%s' in file '%s'", (gchar*) version, filename); xmlFree (version); g_object_unref (lang); return NULL; } xmlFree (version); if (lang->priv->version == GTK_SOURCE_LANGUAGE_VERSION_2_0) process_properties (reader, lang); return lang; }