/** * gtk_accel_map_load_scanner: * @scanner: a #GScanner which has already been provided with an input file * * #GScanner variant of gtk_accel_map_load(). */ void gtk_accel_map_load_scanner (GScanner *scanner) { gboolean skip_comment_single; gboolean symbol_2_token; gchar *cpair_comment_single; gpointer saved_symbol; g_return_if_fail (scanner != NULL); /* configure scanner */ skip_comment_single = scanner->config->skip_comment_single; scanner->config->skip_comment_single = TRUE; cpair_comment_single = scanner->config->cpair_comment_single; scanner->config->cpair_comment_single = ";\n"; symbol_2_token = scanner->config->symbol_2_token; scanner->config->symbol_2_token = FALSE; saved_symbol = g_scanner_lookup_symbol (scanner, "gtk_accel_path"); g_scanner_scope_add_symbol (scanner, 0, "gtk_accel_path", accel_map_parse_accel_path); /* outer parsing loop */ g_scanner_peek_next_token (scanner); while (scanner->next_token == '(') { g_scanner_get_next_token (scanner); accel_map_parse_statement (scanner); g_scanner_peek_next_token (scanner); } /* restore config */ scanner->config->skip_comment_single = skip_comment_single; scanner->config->cpair_comment_single = cpair_comment_single; scanner->config->symbol_2_token = symbol_2_token; g_scanner_scope_remove_symbol (scanner, 0, "gtk_accel_path"); if (saved_symbol) g_scanner_scope_add_symbol (scanner, 0, "gtk_accel_path", saved_symbol); }
guint theme_parse_rc_style (GScanner *scanner, GtkRcStyle *rc_style) { ThemeRcData *theme_data; guint scope_id; guint old_scope; guint token; if (!scope_id) scope_id = g_quark_from_string("theme_engine"); old_scope = g_scanner_set_scope (scanner, scope_id); #if 0 if (!g_scanner_lookup_symbol(scanner, theme_symbols[0].name)) { g_scanner_freeze_symbol_table(scanner); for (i = 0; i < n_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); } #endif token = g_scanner_peek_next_token (scanner); while (token != G_TOKEN_RIGHT_CURLY) { token = g_scanner_peek_next_token (scanner); } g_scanner_get_next_token (scanner); g_scanner_set_scope (scanner, old_scope); theme_data = g_new0 (ThemeRcData, 1); rc_style->engine_data = theme_data; return G_TOKEN_NONE; }
static guint rsvg_rc_style_parse (GtkRcStyle *rc_style, GtkSettings *settings, GScanner *scanner) { static GQuark scope_id = 0; RsvgRcStyle *rsvg_style = RSVG_RC_STYLE (rc_style); guint old_scope; guint token; guint i; ThemeImage *img; /* Set up a new scope in this scanner. */ if (!scope_id) scope_id = g_quark_from_string("rsvg_theme_engine"); /* If we bail out due to errors, we *don't* reset the scope, so the * error messaging code can make sense of our tokens. */ old_scope = g_scanner_set_scope(scanner, scope_id); /* Now check if we already added our symbols to this scope * (in some previous call to theme_parse_rc_style for the * same scanner. */ if (!g_scanner_lookup_symbol(scanner, theme_symbols[0].name)) { 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)); } /* We're ready to go, now parse the top level */ token = g_scanner_peek_next_token(scanner); while (token != G_TOKEN_RIGHT_CURLY) { switch (token) { case TOKEN_IMAGE: img = NULL; token = theme_parse_image(settings, scanner, rsvg_style, &img); break; default: g_scanner_get_next_token(scanner); token = G_TOKEN_RIGHT_CURLY; break; } if (token != G_TOKEN_NONE) return token; else rsvg_style->img_list = g_list_append(rsvg_style->img_list, img); token = g_scanner_peek_next_token(scanner); } g_scanner_get_next_token(scanner); g_scanner_set_scope(scanner, old_scope); return G_TOKEN_NONE; }
static guint mgicchikn_rc_style_parse (GtkRcStyle * rc_style, GtkSettings * settings, GScanner * scanner) { MgicChiknRcStyle *style; static GQuark scope = 0; GQuark old_scope; guint token; gint i; g_return_val_if_fail (rc_style != NULL, G_TOKEN_NONE); g_return_val_if_fail (MGICCHIKN_IS_RC_STYLE (rc_style), G_TOKEN_NONE); style = MGICCHIKN_RC_STYLE (rc_style); if (!scope) scope = g_quark_from_string ("theme_engine"); old_scope = g_scanner_set_scope (scanner, scope); /* If we don't have the symbol table inside scanner, put it in there */ if (!g_scanner_lookup_symbol (scanner, symbols[0].name)) { for (i = 0; i < G_N_ELEMENTS (symbols); i++) { g_scanner_scope_add_symbol (scanner, scope, symbols[i].name, GUINT_TO_POINTER (symbols[i].token)); } } token = g_scanner_peek_next_token (scanner); while (token != G_TOKEN_RIGHT_CURLY) { switch (token) { case MGICCHIKN_TOKEN_STOCK_IMAGE_TRANSPARENCY: token = mgicchikn_rc_parse_stock_image_transparency (style, scanner); break; case MGICCHIKN_TOKEN_STOCK_IMAGE_SATURATION: token = mgicchikn_rc_parse_stock_image_saturation (style, scanner); break; case MGICCHIKN_TOKEN_STOCK_IMAGE_BRIGHTNESS: token = mgicchikn_rc_parse_stock_image_brightness (style, scanner); break; case MGICCHIKN_TOKEN_SHADOW: token = mgicchikn_rc_parse_shadow (style, scanner); break; case MGICCHIKN_TOKEN_SHADOW_WIDTH: token = mgicchikn_rc_parse_shadow_width (style, scanner); break; case MGICCHIKN_TOKEN_GRIPPY_STYLE: token = mgicchikn_rc_parse_grippy_style (style, scanner); break; case MGICCHIKN_TOKEN_FONT_SHADOW: token = mgicchikn_rc_parse_font_shadow (style, scanner); break; case MGICCHIKN_TOKEN_FONT_UNDERLINE: token = mgicchikn_rc_parse_font_underline (style, scanner); break; case MGICCHIKN_TOKEN_CHECK_IMAGE: token = mgicchikn_rc_parse_check_image (style, settings, scanner); break; case MGICCHIKN_TOKEN_RADIO_IMAGE: token = mgicchikn_rc_parse_radio_image (style, settings, scanner); break; default: break; } if (token != G_TOKEN_NONE) return token; token = g_scanner_peek_next_token (scanner); } g_scanner_get_next_token (scanner); g_scanner_set_scope (scanner, old_scope); return G_TOKEN_NONE; }
static guint dawati_rc_style_parse (GtkRcStyle *rc_style, GtkSettings *settings, GScanner *scanner) { GTokenType token; static GQuark scope_id; guint old_scope; int i; DawatiRcStyle *mb_style = DAWATI_RC_STYLE (rc_style); if (!scope_id) scope_id = g_quark_from_string ("dawati-gtk-engine"); /* set the new scope and store the old scope id */ old_scope = g_scanner_set_scope (scanner, scope_id); /* register the symbols if we haven't already done so */ if (!g_scanner_lookup_symbol (scanner, dawati_rc_symbols[0].name)) { for (i = 0; dawati_rc_symbols[i].name; i++) { g_scanner_scope_add_symbol (scanner, scope_id, dawati_rc_symbols[i].name, GINT_TO_POINTER (dawati_rc_symbols[i]. token)); } } token = g_scanner_peek_next_token (scanner); while (token != G_TOKEN_RIGHT_CURLY) { switch (token) { case TOKEN_BORDER_COLOR: token = dawati_parse_border_color (scanner, mb_style); break; case TOKEN_RADIUS: g_scanner_get_next_token (scanner); token = dawati_get_token (scanner, G_TOKEN_EQUAL_SIGN); if (token != G_TOKEN_NONE) break; token = dawati_get_token (scanner, G_TOKEN_INT); if (token != G_TOKEN_NONE) break; mb_style->radius = scanner->value.v_int; break; case TOKEN_SHADOW: g_scanner_get_next_token (scanner); token = dawati_get_token (scanner, G_TOKEN_EQUAL_SIGN); if (token != G_TOKEN_NONE) break; token = dawati_get_token (scanner, G_TOKEN_FLOAT); if (token != G_TOKEN_NONE) break; mb_style->shadow = scanner->value.v_float; mb_style->shadow_set = TRUE; break; default: g_scanner_get_next_token (scanner); token = G_TOKEN_RIGHT_CURLY; break; } if (token != G_TOKEN_NONE) { return token; } token = g_scanner_peek_next_token (scanner); } g_scanner_get_next_token (scanner); g_scanner_set_scope (scanner, old_scope); return G_TOKEN_NONE; }
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; }
static guint clearlooks_rc_style_parse (GtkRcStyle *rc_style, GtkSettings *settings, GScanner *scanner) { static GQuark scope_id = 0; ClearlooksRcStyle *clearlooks_style = CLEARLOOKS_RC_STYLE (rc_style); guint old_scope; guint token; /* Set up a new scope in this scanner. */ if (!scope_id) scope_id = g_quark_from_string("clearlooks_theme_engine"); /* If we bail out due to errors, we *don't* reset the scope, so the * error messaging code can make sense of our tokens. */ old_scope = g_scanner_set_scope(scanner, scope_id); /* Now check if we already added our symbols to this scope * (in some previous call to clearlooks_rc_style_parse for the * same scanner. */ if (!g_scanner_lookup_symbol(scanner, clearlooks_rc_symbols)) { gchar *current_symbol = clearlooks_rc_symbols; gint i = G_TOKEN_LAST + 1; /* Add our symbols */ while ((current_symbol[0] != '\0') && (i < TOKEN_LAST)) { g_scanner_scope_add_symbol(scanner, scope_id, current_symbol, GINT_TO_POINTER (i)); current_symbol += strlen(current_symbol) + 1; i++; } g_assert (i == TOKEN_LAST && current_symbol[0] == '\0'); } /* We're ready to go, now parse the top level */ token = g_scanner_peek_next_token(scanner); while (token != G_TOKEN_RIGHT_CURLY) { switch (token) { case TOKEN_FOCUSCOLOR: token = clearlooks_gtk2_rc_parse_color (settings, scanner, rc_style, &clearlooks_style->focus_color); clearlooks_style->flags |= CL_FLAG_FOCUS_COLOR; break; case TOKEN_SCROLLBARCOLOR: token = clearlooks_gtk2_rc_parse_color (settings, scanner, rc_style, &clearlooks_style->scrollbar_color); clearlooks_style->flags |= CL_FLAG_SCROLLBAR_COLOR; break; case TOKEN_COLORIZESCROLLBAR: token = clearlooks_gtk2_rc_parse_boolean (settings, scanner, &clearlooks_style->colorize_scrollbar); clearlooks_style->flags |= CL_FLAG_COLORIZE_SCROLLBAR; break; case TOKEN_CONTRAST: token = clearlooks_gtk2_rc_parse_double (settings, scanner, &clearlooks_style->contrast); clearlooks_style->flags |= CL_FLAG_CONTRAST; break; case TOKEN_RELIEFSTYLE: token = clearlooks_gtk2_rc_parse_int (settings, scanner, &clearlooks_style->reliefstyle); clearlooks_style->flags |= CL_FLAG_RELIEFSTYLE; break; case TOKEN_MENUBARSTYLE: token = clearlooks_gtk2_rc_parse_int (settings, scanner, &clearlooks_style->menubarstyle); clearlooks_style->flags |= CL_FLAG_MENUBARSTYLE; break; case TOKEN_TOOLBARSTYLE: token = clearlooks_gtk2_rc_parse_int (settings, scanner, &clearlooks_style->toolbarstyle); clearlooks_style->flags |= CL_FLAG_TOOLBARSTYLE; break; case TOKEN_ANIMATION: token = clearlooks_gtk2_rc_parse_boolean (settings, scanner, &clearlooks_style->animation); clearlooks_style->flags |= CL_FLAG_ANIMATION; break; case TOKEN_STYLE: token = clearlooks_gtk2_rc_parse_style (settings, scanner, &clearlooks_style->style); clearlooks_style->flags |= CL_FLAG_STYLE; break; case TOKEN_RADIUS: token = clearlooks_gtk2_rc_parse_double (settings, scanner, &clearlooks_style->radius); clearlooks_style->flags |= CL_FLAG_RADIUS; break; case TOKEN_HINT: token = ge_rc_parse_hint (scanner, &clearlooks_style->hint); clearlooks_style->flags |= CL_FLAG_HINT; break; case TOKEN_DISABLE_FOCUS: token = clearlooks_gtk2_rc_parse_boolean (settings, scanner, &clearlooks_style->disable_focus); clearlooks_style->flags |= CL_FLAG_DISABLE_FOCUS; break; /* stuff to ignore */ case TOKEN_SUNKENMENU: token = clearlooks_gtk2_rc_parse_dummy (settings, scanner, "sunkenmenu"); break; case TOKEN_PROGRESSBARSTYLE: token = clearlooks_gtk2_rc_parse_dummy (settings, scanner, "progressbarstyle"); break; case TOKEN_MENUITEMSTYLE: token = clearlooks_gtk2_rc_parse_dummy (settings, scanner, "menuitemstyle"); break; case TOKEN_LISTVIEWITEMSTYLE: token = clearlooks_gtk2_rc_parse_dummy (settings, scanner, "listviewitemstyle"); break; default: g_scanner_get_next_token(scanner); token = G_TOKEN_RIGHT_CURLY; break; } if (token != G_TOKEN_NONE) return token; token = g_scanner_peek_next_token(scanner); } g_scanner_get_next_token(scanner); g_scanner_set_scope(scanner, old_scope); return G_TOKEN_NONE; }
static guint thinice_rc_style_parse (GtkRcStyle *rc_style, GtkSettings *settings, GScanner *scanner) { static GQuark scope_id = 0; ThiniceRcStyle *theme_data = THINICE_RC_STYLE (rc_style); guint old_scope; guint token; guint i; /* Set up a new scope in this scanner. */ /* g_print("theme_parse_rc_style(\"%s\")\n", rc_style->name); */ if (!scope_id) scope_id = g_quark_from_string("theme_engine"); /* If we bail out due to errors, we *don't* reset the scope, so the * error messaging code can make sense of our tokens. */ old_scope = g_scanner_set_scope(scanner, scope_id); /* Now check if we already added our symbols to this scope * (in some previous call to theme_parse_rc_style for the * same scanner. */ if (!g_scanner_lookup_symbol(scanner, theme_symbols[0].name)) { g_scanner_freeze_symbol_table(scanner); for (i = 0; i < n_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); } /* We're ready to go, now parse the top level */ /* theme_data = g_new0(ThiniceRcStyle, 1); */ theme_data->scrollbar_type = DEFAULT_SCROLLSHAPE; theme_data->scrollbar_marks = DEFAULT_SCROLLBARMARKS; theme_data->scroll_button_marks = DEFAULT_SCROLLBUTTONMARKS; theme_data->handlebox_marks = DEFAULT_HANDLEBOXMARKS; theme_data->mark_type1 = DEFAULT_MARKTYPE1; theme_data->mark_type2 = DEFAULT_MARKTYPE2; token = g_scanner_peek_next_token(scanner); while (token != G_TOKEN_RIGHT_CURLY) { switch (token) { case TOKEN_RECTSCROLLBAR: token = theme_parse_boolean(scanner, TOKEN_RECTSCROLLBAR, &i); if (token != G_TOKEN_NONE) break; if (i == FALSE) theme_data->scrollbar_type = SCROLL_SHAPED; else theme_data->scrollbar_type = SCROLL_RECT; break; case TOKEN_SCROLLBUTTONMARKS: token = theme_parse_boolean(scanner, TOKEN_SCROLLBUTTONMARKS, &i); if (token != G_TOKEN_NONE) break; if (i == TRUE) theme_data->mark_type2 = MARKS_SLASH; else theme_data->mark_type2 = MARKS_NOTHING; /* if (i == TRUE) theme_data->scroll_button_marks = MARKS_ON; else theme_data->scroll_button_marks = MARKS_OFF; */ break; case TOKEN_SCROLLBARMARKS: token = theme_parse_boolean(scanner, TOKEN_SCROLLBARMARKS, &i); if (token != G_TOKEN_NONE) break; if (i == TRUE) theme_data->mark_type1 = MARKS_SLASH; else theme_data->mark_type1 = MARKS_NOTHING; /* if (i == TRUE) theme_data->scrollbar_marks = MARKS_ON; else theme_data->scrollbar_marks = MARKS_OFF; */ break; case TOKEN_HANDLEBOXMARKS: token = theme_parse_boolean(scanner, TOKEN_HANDLEBOXMARKS, &i); if (token != G_TOKEN_NONE) break; if (i == TRUE) theme_data->handlebox_marks = MARKS_ON; else theme_data->handlebox_marks = MARKS_OFF; break; case TOKEN_MARKTYPE1: token = theme_parse_marktype(scanner, TOKEN_MARKTYPE1, &i); if (token != G_TOKEN_NONE) break; theme_data->mark_type1 = i; break; case TOKEN_MARKTYPE2: token = theme_parse_marktype(scanner, TOKEN_MARKTYPE2, &i); if (token != G_TOKEN_NONE) break; theme_data->mark_type2 = i; break; case TOKEN_PANEDDOTS: token = theme_parse_paned(scanner, TOKEN_PANEDDOTS, &i); if (token != G_TOKEN_NONE) break; theme_data->paned_dots = i; 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); } g_scanner_get_next_token(scanner); g_scanner_set_scope(scanner, old_scope); return G_TOKEN_NONE; }