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;
}
Example #3
0
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;
}