/*
 * 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;
}
Beispiel #2
0
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;
}
Beispiel #3
0
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;
}