static guint clearlooks_gtk2_rc_parse_color(GtkSettings *settings, GScanner *scanner, GdkColor *color) { guint token; (void) settings; /* Skip 'blah_color' */ 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; return gtk_rc_parse_color (scanner, color); }
static guint dwerg_rc_style_parse(GtkRcStyle *rc_style, GtkSettings *settings, GScanner* scanner) { static GQuark scope_id = 0; DwergRcStyle *theme_data = DWERG_RC_STYLE(rc_style); theme_data->shadow_color_from = malloc(sizeof(GdkColor)); theme_data->shadow_color_to = malloc(sizeof(GdkColor)); guint old_scope; guint token; guint i; /* setup scope, safe old_scope for crash, define tokens */ if (!scope_id) scope_id = g_quark_from_string("dwerg_theme_engine"); old_scope = g_scanner_set_scope(scanner, scope_id); if (!g_scanner_lookup_symbol(scanner, theme_symbols[0].name)) { g_scanner_freeze_symbol_table(scanner); for (i = 0; i < G_N_ELEMENTS(theme_symbols); i++) g_scanner_scope_add_symbol(scanner, scope_id, theme_symbols[i].name, GINT_TO_POINTER(theme_symbols[i].token)); g_scanner_thaw_symbol_table(scanner); } token = g_scanner_peek_next_token(scanner); while (token != G_TOKEN_RIGHT_CURLY) { switch(token) { case TOKEN_SHADOW_COLOR_FROM: g_print("vla\n"); token = g_scanner_get_next_token(scanner); if (token != TOKEN_SHADOW_COLOR_FROM) return token; token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_EQUAL_SIGN) return token; token = gtk_rc_parse_color(scanner, theme_data->shadow_color_from); g_print("ja lekker\n"); break; case TOKEN_SHADOW_COLOR_TO: token = g_scanner_get_next_token(scanner); if (token != TOKEN_SHADOW_COLOR_TO) return token; token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_EQUAL_SIGN) return token; token = gtk_rc_parse_color(scanner, theme_data->shadow_color_to); break; default: g_scanner_get_next_token(scanner); token = G_TOKEN_RIGHT_CURLY; break; } if (token != G_TOKEN_NONE) { g_free(theme_data); return token; } token = g_scanner_peek_next_token(scanner); } /* on no error reset the scope */ g_scanner_get_next_token(scanner); g_scanner_set_scope(scanner, old_scope); return G_TOKEN_NONE; }