/* * FIXME: make this bullet proof wrt uri scheme. */ static char * url (GSList const *args, void *user_data) { char *resolved_path; char *ret; #ifdef CCSS_WITH_SOUP char *given_path; SoupURI *uri; g_return_val_if_fail (args, NULL); given_path = g_strdup_printf ("file:///%s", (char const *) args->data); uri = soup_uri_new (given_path); g_free (given_path), given_path = NULL; resolved_path = gtk_rc_find_pixmap_in_path (gtk_settings_get_default (), NULL, uri->path); soup_uri_set_path (uri, resolved_path); g_free (resolved_path), resolved_path = NULL; ret = soup_uri_to_string (uri, false); soup_uri_free (uri), uri = NULL; #else char const *given_path; g_return_val_if_fail (args, NULL); given_path = (char const *) args->data; resolved_path = gtk_rc_find_pixmap_in_path (gtk_settings_get_default (), NULL, given_path); ret = g_strdup_printf ("file:///%s", resolved_path); g_free (resolved_path), resolved_path = NULL; #endif return ret; }
static guint theme_parse_file(GtkSettings *settings, GScanner *scanner, ThemePixbuf **theme_pb) { guint token; gchar *pixmap; /* Skip 'blah_file' */ token = g_scanner_get_next_token(scanner); token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_EQUAL_SIGN) return G_TOKEN_EQUAL_SIGN; token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_STRING) return G_TOKEN_STRING; if (!*theme_pb) *theme_pb = theme_pixbuf_new (); pixmap = gtk_rc_find_pixmap_in_path(settings, scanner, scanner->value.v_string); if (pixmap) { theme_pixbuf_set_filename (*theme_pb, pixmap); g_free (pixmap); } return G_TOKEN_NONE; }
static guint mgicchikn_rc_parse_check_image (MgicChiknRcStyle * rc_style, GtkSettings * settings, GScanner * scanner) { guint token; gchar *value = NULL; gboolean state_mask[GTK_STATE_LAST] = { 0 }, shadow_mask[MGICCHIKN_SHADOW_LAST] = { 0 }; gint i, i2; token = mgicchikn_rc_parse_state_shadow_equals (scanner, state_mask, shadow_mask); if (token != G_TOKEN_NONE) return token; token = g_scanner_get_next_token (scanner); if (token != G_TOKEN_STRING) return G_TOKEN_STRING; value = gtk_rc_find_pixmap_in_path (settings, scanner, scanner->value.v_string); if (value != NULL) { g_cache_insert (MGICCHIKN_RC_STYLE_GET_CLASS (rc_style)->raw_pixbufs, value); for (i = 0; i < GTK_STATE_LAST; i++) { if (state_mask[i] == TRUE) { for (i2 = 0; i2 < MGICCHIKN_SHADOW_LAST; i++) { if (shadow_mask[i] == TRUE) { rc_style->check_image[i][i2] = value; } } } } } return G_TOKEN_NONE; }