aboutsummaryrefslogtreecommitdiff
path: root/src/stylesheet_editor.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/stylesheet_editor.c')
-rw-r--r--src/stylesheet_editor.c224
1 files changed, 7 insertions, 217 deletions
diff --git a/src/stylesheet_editor.c b/src/stylesheet_editor.c
index 508ee6a..2b9d21e 100644
--- a/src/stylesheet_editor.c
+++ b/src/stylesheet_editor.c
@@ -38,7 +38,6 @@
G_DEFINE_TYPE_WITH_CODE(StylesheetEditor, stylesheet_editor,
GTK_TYPE_DIALOG, NULL)
-static void set_values_from_presentation(StylesheetEditor *se);
struct _sspriv
{
@@ -46,176 +45,16 @@ struct _sspriv
};
-static SCBlock *find_block(SCBlock *bl, const char *find)
-{
- while ( bl != NULL ) {
-
- const char *name = sc_block_name(bl);
- if ( (name != NULL) && (strcmp(name, find)==0) ) {
- return bl;
- }
-
- bl = sc_block_next(bl);
-
- }
-
- return NULL;
-}
-
-
-static void find_replace(SCBlock *parent, const char *find, const char *seti)
-{
- SCBlock *bl = find_block(sc_block_child(parent), find);
-
- if ( bl != NULL ) {
-
- printf("replacing '%s' with '%s'\n", sc_block_options(bl), seti);
- sc_block_set_options(bl, strdup(seti));
-
- } else {
-
- /* Block not found -> create it */
- sc_block_append_inside(parent, strdup(find), strdup(seti), NULL);
-
- }
-}
-
-
-static SCBlock *find_or_create_style(struct presentation *p, const char *style_name)
-{
- SCBlock *bl;
- const char *name;
-
- /* If no stylesheet yet, create one now */
- if ( p->stylesheet == NULL ) {
- p->stylesheet = sc_parse("\\stylesheet");
- if ( p->stylesheet == NULL ) {
- fprintf(stderr, "WARNING: Couldn't create stylesheet\n");
- return NULL;
- }
- sc_block_append_p(p->stylesheet, p->scblocks);
- p->scblocks = p->stylesheet;
- }
- bl = p->stylesheet;
-
- name = sc_block_name(bl);
- if ( (name != NULL) && (strcmp(name, "stylesheet")==0) ) {
- bl = sc_block_child(bl);
- }
-
- while ( bl != NULL ) {
-
- const char *name = sc_block_name(bl);
- const char *options = sc_block_options(bl);
- if ( (name != NULL) && (strcmp(name, "style")==0)
- && (strcmp(options, style_name)==0) )
- {
- return bl;
- }
-
- bl = sc_block_next(bl);
-
- }
-
- /* Not found -> add style */
- return sc_block_append_inside(p->stylesheet, strdup("style"),
- strdup(style_name), NULL);
-}
-
-
-static void set_ss(struct presentation *p, const char *style_name,
- const char *find, const char *seti)
-{
- SCBlock *bl = find_or_create_style(p, style_name);
- if ( bl == NULL ) {
- fprintf(stderr, "WARNING: Couldn't find style\n");
- return;
- }
- find_replace(bl, find, seti);
-}
-
-
-static void set_ss_bg_block(SCBlock *bl, GradientType bggrad,
- GdkRGBA col1, GdkRGBA col2)
-{
- char tmp[64];
-
- switch ( bggrad ) {
-
- case GRAD_NONE :
- sc_block_set_name(bl, strdup("bgcol"));
- snprintf(tmp, 63, "#%.2x%.2x%.2x",
- (int)(col1.red*255), (int)(col1.green*255), (int)(col1.blue*255));
- sc_block_set_options(bl, strdup(tmp));
- break;
-
- case GRAD_VERT :
- sc_block_set_name(bl, strdup("bggradv"));
- snprintf(tmp, 63, "#%.2x%.2x%.2x,#%.2x%.2x%.2x",
- (int)(col1.red*255), (int)(col1.green*255), (int)(col1.blue*255),
- (int)(col2.red*255), (int)(col2.green*255), (int)(col2.blue*255));
- sc_block_set_options(bl, strdup(tmp));
- break;
-
- case GRAD_HORIZ :
- sc_block_set_name(bl, strdup("bggradh"));
- snprintf(tmp, 63, "#%.2x%.2x%.2x,#%.2x%.2x%.2x",
- (int)(col1.red*255), (int)(col1.green*255), (int)(col1.blue*255),
- (int)(col2.red*255), (int)(col2.green*255), (int)(col2.blue*255));
- sc_block_set_options(bl, strdup(tmp));
- break;
-
- case GRAD_NOBG :
- printf("no bg\n");
- sc_block_set_name(bl, NULL);
- sc_block_set_options(bl, NULL);
- sc_block_set_contents(bl, NULL);
- break;
-
- }
-}
-
-
-static int try_set_block(SCBlock **parent, const char *name,
- GradientType bggrad, GdkRGBA col1, GdkRGBA col2)
+static void set_values_from_presentation(StylesheetEditor *se)
{
- SCBlock *ibl;
-
- ibl = find_block(sc_block_child(*parent), name);
- if ( ibl != NULL ) {
- if ( bggrad != GRAD_NOBG ) {
- set_ss_bg_block(ibl, bggrad, col1, col2);
- return 1;
- } else {
- sc_block_delete(parent, ibl);
- return 1;
- }
- }
-
- return 0;
+ /* FIXME: From JSON */
}
static void update_bg(struct presentation *p, const char *style_name,
GradientType bggrad, GdkRGBA col1, GdkRGBA col2)
{
- int done;
- SCBlock *bl;
-
- bl = find_or_create_style(p, style_name);
- if ( bl == NULL ) {
- fprintf(stderr, "WARNING: Couldn't find style\n");
- return;
- }
-
- /* FIXME: What if there are two of these? */
- done = try_set_block(&bl, "bgcol", bggrad, col1, col2);
- if ( !done ) done = try_set_block(&bl, "bggradv", bggrad, col1, col2);
- if ( !done ) done = try_set_block(&bl, "bggradh", bggrad, col1, col2);
- if ( !done && bggrad != GRAD_NOBG ) {
- SCBlock *ibl = sc_block_append_inside(bl, NULL, NULL, NULL);
- set_ss_bg_block(ibl, bggrad, col1, col2);
- }
+ /* FIXME: set in JSON */
}
@@ -239,9 +78,9 @@ static GradientType id_to_gradtype(const gchar *id)
static void set_font(GtkFontButton *widget, StylesheetEditor *se,
const char *style_name)
{
- const gchar *font;
- font = gtk_font_button_get_font_name(GTK_FONT_BUTTON(widget));
- set_ss(se->priv->p, style_name, "font", font);
+// const gchar *font;
+// font = gtk_font_button_get_font_name(GTK_FONT_BUTTON(widget));
+ /* FIXME: set in JSON */
set_values_from_presentation(se);
g_signal_emit_by_name(se, "changed");
}
@@ -254,7 +93,7 @@ static void set_col(GtkColorButton *widget, StylesheetEditor *se,
gchar *col;
gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(widget), &rgba);
col = gdk_rgba_to_string(&rgba);
- set_ss(se->priv->p, style_name, col_name, col);
+ /* FIXME: Set in JSON */
g_free(col);
set_values_from_presentation(se);
g_signal_emit_by_name(se, "changed");
@@ -446,55 +285,6 @@ void stylesheet_editor_class_init(StylesheetEditorClass *klass)
}
-static void set_from_interp_col(double *col, GtkWidget *w)
-{
- GdkRGBA rgba;
-
- rgba.red = col[0];
- rgba.green = col[1];
- rgba.blue = col[2];
- rgba.alpha = col[3];
- gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(w), &rgba);
-}
-
-
-static void set_from_interp_bggrad(SCInterpreter *scin, GtkWidget *w)
-{
- GradientType grad;
- const gchar *id;
-
- grad = sc_interp_get_bggrad(scin);
-
- switch ( grad ) {
- case GRAD_NONE : id = "flat"; break;
- case GRAD_HORIZ : id = "horiz"; break;
- case GRAD_VERT : id = "vert"; break;
- case GRAD_NOBG : id = "none"; break;
- default : id = NULL; break;
- }
-
- gtk_combo_box_set_active_id(GTK_COMBO_BOX(w), id);
-}
-
-
-static void set_from_interp_font(SCInterpreter *scin, GtkWidget *w)
-{
- char *fontname;
- PangoFontDescription *fontdesc;
-
- fontdesc = sc_interp_get_fontdesc(scin);
- fontname = pango_font_description_to_string(fontdesc);
- gtk_font_button_set_font_name(GTK_FONT_BUTTON(w), fontname);
- g_free(fontname);
-}
-
-
-static void set_values_from_presentation(StylesheetEditor *se)
-{
- /* FIXME: From JSON */
-}
-
-
StylesheetEditor *stylesheet_editor_new(struct presentation *p)
{
StylesheetEditor *se;