static ArCardThemeInfo * ar_card_theme_preimage_class_get_theme_info (ArCardThemeClass *klass, const char *path, const char *filename) { #ifdef HAVE_RSVG ArCardThemeInfo *info; char *display_name; if (!g_str_has_suffix (filename, ".svgz")) return NULL; display_name = ar_filename_to_display_name (filename); info = _ar_card_theme_info_new (G_OBJECT_CLASS_TYPE (klass), path, filename, display_name /* adopts */, NULL /* filled in by the derived classes */, TRUE /* scalable */, NULL, NULL); return info; #else return NULL; #endif }
static ArCardThemeInfo * ar_card_theme_sliced_class_get_theme_info (ArCardThemeClass *klass, const char *path, const char *filename) { ArCardThemeInfo *info; char *name, *display_name, *pref_name; info = AR_CARD_THEME_CLASS (ar_card_theme_sliced_parent_class)->get_theme_info (klass, path, filename); if (info) { g_assert (info->pref_name == NULL); info->pref_name = g_strdup_printf ("sliced:%s", filename); return info; } /* This class also supports the old-style PNG format */ if (!g_str_has_suffix (filename, ".png")) return NULL; name = games_filename_to_display_name (filename); display_name = g_strdup_printf ("%s (Ugly)", name); pref_name = g_strdup_printf ("sliced:%s", filename); info = _ar_card_theme_info_new (G_OBJECT_CLASS_TYPE (klass), path, filename, display_name /* adopts */, pref_name /* adopts */, NULL, NULL); g_free (name); return info; }
static ArCardThemeInfo * ar_card_theme_kde_class_get_theme_info (ArCardThemeClass *klass, const char *path, const char *filename) { ArCardThemeInfo *info = NULL; char *base_path = NULL, *key_file_path = NULL; char *back_name; GKeyFile *key_file = NULL; char *svg_filename = NULL, *name = NULL, *display_name, *pref_name; if (get_is_blacklisted (filename)) { ar_debug_print (AR_DEBUG_CARD_THEME, "KDE card theme %s is blacklisted\n", filename); return NULL; } base_path = g_build_filename (path, filename, NULL); if (!g_file_test (path, G_FILE_TEST_IS_DIR)) goto out; key_file_path = g_build_filename (base_path, KDE_BACKDECK_FILENAME, NULL); key_file = g_key_file_new (); if (!g_key_file_load_from_file (key_file, key_file_path, 0, NULL)) goto out; if (!g_key_file_has_group (key_file, KDE_BACKDECK_GROUP)) goto out; name = g_key_file_get_locale_string (key_file, KDE_BACKDECK_GROUP, KDE_BACKDECK_NAME_KEY, NULL, NULL); svg_filename = g_key_file_get_string (key_file, KDE_BACKDECK_GROUP, KDE_BACKDECK_SVG_KEY, NULL); if (!name || !name[0] || !svg_filename || !svg_filename[0]) goto out; back_name = g_key_file_get_string (key_file, KDE_BACKDECK_GROUP, KDE_BACKDECK_BACK_KEY, NULL); display_name = g_strdup_printf ("%s (KDE)", name); pref_name = g_strdup_printf ("kde:%s", filename); info = _ar_card_theme_info_new (G_OBJECT_CLASS_TYPE (klass), base_path, svg_filename, display_name /* adopts */, pref_name /* adopts */, TRUE /* scalable */, back_name, g_free); out: g_free (base_path); g_free (key_file_path); g_free (name); g_free (svg_filename); if (key_file) { g_key_file_free (key_file); } return info; }