diff options
Diffstat (limited to 'src/stylesheet-editor.c')
-rw-r--r-- | src/stylesheet-editor.c | 328 |
1 files changed, 0 insertions, 328 deletions
diff --git a/src/stylesheet-editor.c b/src/stylesheet-editor.c deleted file mode 100644 index c08271c..0000000 --- a/src/stylesheet-editor.c +++ /dev/null @@ -1,328 +0,0 @@ -/* - * stylesheet-editor.c - * - * Colloquium - A tiny presentation program - * - * Copyright (c) 2011 Thomas White <taw@bitwiz.org.uk> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <stdlib.h> -#include <string.h> -#include <gtk/gtk.h> -#include <assert.h> - -#include "presentation.h" -#include "stylesheet.h" -#include "objects.h" -#include "loadsave.h" -#include "storycode.h" - - -struct _stylesheetwindow -{ - struct presentation *p; /* Presentation to update when user alters - * something in this window */ - GtkWidget *window; - StyleSheet *ss; /* Style sheet this window corresponds to */ - - GtkWidget *margin_left; - GtkWidget *margin_right; - GtkWidget *margin_top; - GtkWidget *margin_bottom; - - GtkWidget *text_font; - GtkWidget *text_colour; - - char *font; - char *colour; - double alpha; - - struct slide_template *cur_slide_template; - struct frame_class *cur_frame_class; -}; - - -static void text_font_set_sig(GtkFontButton *widget, - struct _stylesheetwindow *s) -{ - const gchar *font; - - font = gtk_font_button_get_font_name(widget); - free(s->font); - s->font = strdup(font); - -// notify_style_update(s->p, s->cur_frame_class); -} - - -static void text_colour_set_sig(GtkColorButton *widget, - struct _stylesheetwindow *s) -{ - GdkColor col; - guint16 al; - - gtk_color_button_get_color(widget, &col); - free(s->colour); - s->colour = gdk_color_to_string(&col); - al = gtk_color_button_get_alpha(widget); - s->alpha = (double)al / 65535.0; - -// notify_style_update(s->p, s->cur_frame_class); -} - - -static void margin_left_changed_sig(GtkSpinButton *spin, - struct _stylesheetwindow *s) -{ - s->cur_frame_class->margin_left = gtk_spin_button_get_value(spin); -// notify_style_update(s->p, s->cur_frame_class); -} - - -static void margin_right_changed_sig(GtkSpinButton *spin, - struct _stylesheetwindow *s) -{ - s->cur_frame_class->margin_right = gtk_spin_button_get_value(spin); -// notify_style_update(s->p, s->cur_frame_class); -} - - -static void margin_top_changed_sig(GtkSpinButton *spin, - struct _stylesheetwindow *s) -{ - s->cur_frame_class->margin_top = gtk_spin_button_get_value(spin); -// notify_style_update(s->p, s->cur_frame_class); -} - - -static void margin_bottom_changed_sig(GtkSpinButton *spin, - struct _stylesheetwindow *s) -{ - s->cur_frame_class->margin_bottom = gtk_spin_button_get_value(spin); -// notify_style_update(s->p, s->cur_frame_class); -} - - -static void frame_class_changed_sig(GtkComboBox *combo, - struct _stylesheetwindow *s) -{ - int n; - GdkColor col; - char *font; - - n = gtk_combo_box_get_active(GTK_COMBO_BOX(combo)); - s->cur_frame_class = s->cur_slide_template->frame_classes[n]; - - gtk_spin_button_set_value(GTK_SPIN_BUTTON(s->margin_left), - s->cur_frame_class->margin_left); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(s->margin_right), - s->cur_frame_class->margin_right); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(s->margin_bottom), - s->cur_frame_class->margin_bottom); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(s->margin_top), - s->cur_frame_class->margin_top); - - font = sc_get_final_font(s->cur_frame_class->sc_prologue); - gtk_font_button_set_font_name(GTK_FONT_BUTTON(s->text_font), font); - - s->colour = sc_get_final_text_colour(s->cur_frame_class->sc_prologue); - gdk_color_parse(s->colour, &col); - gtk_color_button_set_color(GTK_COLOR_BUTTON(s->text_colour), &col); -} - - -static void slide_template_changed_sig(GtkComboBox *combo, - struct _stylesheetwindow *s) -{ - for ( i=0; i<s->ss->n_styles; i++ ) { - gtk_combo_box_append_text(GTK_COMBO_BOX(combo), - s->ss->styles[i]->name); - } - gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0); -} - - -static void do_layout(struct _stylesheetwindow *s, GtkWidget *b) -{ - GtkWidget *table; - GtkWidget *line; - GtkWidget *label; - GtkWidget *combo; - GtkWidget *box; - GtkWidget *vbox; - int i; - - box = gtk_hbox_new(FALSE, 5); - gtk_box_pack_start(GTK_BOX(b), box, FALSE, FALSE, 5); - label = gtk_label_new("Top-level frame:"); - gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); - gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0); - combo = gtk_combo_box_new_text(); - g_signal_connect(G_OBJECT(combo), "changed", - G_CALLBACK(style_changed_sig), s); - gtk_box_pack_start(GTK_BOX(box), combo, TRUE, TRUE, 0); - - line = gtk_hseparator_new(); - gtk_box_pack_start(GTK_BOX(b), line, FALSE, FALSE, 5); - - box = gtk_hbox_new(TRUE, 30); - gtk_box_pack_start(GTK_BOX(b), box, FALSE, FALSE, 5); - - vbox = gtk_vbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(box), vbox, FALSE, FALSE, 0); - label = gtk_label_new("Margins:"); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 5); - table = gtk_table_new(3, 3, TRUE); - gtk_table_set_row_spacings(GTK_TABLE(table), 5.0); - gtk_table_set_col_spacings(GTK_TABLE(table), 5.0); - gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, TRUE, 0); - - /* Left */ - s->margin_left = gtk_spin_button_new_with_range(0.0, 1024.0, 1.0); - gtk_table_attach_defaults(GTK_TABLE(table), s->margin_left, - 0, 1, 1, 2); - g_signal_connect(G_OBJECT(s->margin_left), "value-changed", - G_CALLBACK(margin_left_changed_sig), s); - - /* Up */ - s->margin_top = gtk_spin_button_new_with_range(0.0, 1024.0, 1.0); - gtk_table_attach_defaults(GTK_TABLE(table), s->margin_top, - 1, 2, 0, 1); - g_signal_connect(G_OBJECT(s->margin_top), "value-changed", - G_CALLBACK(margin_top_changed_sig), s); - - /* Right */ - s->margin_right = gtk_spin_button_new_with_range(0.0, 1024.0, 1.0); - gtk_table_attach_defaults(GTK_TABLE(table), s->margin_right, - 2, 3, 1, 2); - g_signal_connect(G_OBJECT(s->margin_right), "value-changed", - G_CALLBACK(margin_right_changed_sig), s); - - /* Down */ - s->margin_bottom = gtk_spin_button_new_with_range(0.0, 1024.0, 1.0); - gtk_table_attach_defaults(GTK_TABLE(table), s->margin_bottom, - 1, 2, 2, 3); - g_signal_connect(G_OBJECT(s->margin_bottom), "value-changed", - G_CALLBACK(margin_bottom_changed_sig), s); - - /* Font/colour stuff */ - label = gtk_label_new("Font:"); - gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); - gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 3, 4); - s->text_font = gtk_font_button_new_with_font("Sans 12"); - box = gtk_hbox_new(FALSE, 0); - gtk_table_attach_defaults(GTK_TABLE(table), box, 1, 2, 3, 4); - gtk_box_pack_start(GTK_BOX(box), s->text_font, FALSE, FALSE, 0); - g_signal_connect(G_OBJECT(s->text_font), "font-set", - G_CALLBACK(text_font_set_sig), s); - - label = gtk_label_new("Colour:"); - gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); - gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 4, 5); - s->text_colour = gtk_color_button_new(); - box = gtk_hbox_new(FALSE, 0); - gtk_table_attach_defaults(GTK_TABLE(table), box, 1, 2, 4, 5); - gtk_box_pack_start(GTK_BOX(box), s->text_colour, FALSE, FALSE, 0); - g_signal_connect(G_OBJECT(s->text_colour), "color-set", - G_CALLBACK(text_colour_set_sig), s); - - /* Force first update */ - frame_class_changed_sig(GTK_COMBO_BOX(combo), s); -} - - - -static gint destroy_stylesheet_sig(GtkWidget *w, struct _stylesheetwindow *s) -{ - s->p->stylesheetwindow = NULL; - free(s); - return FALSE; -} - - -StylesheetWindow *open_stylesheet(struct presentation *p) -{ - struct _stylesheetwindow *s; - GtkWidget *nb; - GtkWidget *text_box; - GtkWidget *background_box; - GtkWidget *box; - GtkWidget *label; - GtkWidget *combo; - - s = malloc(sizeof(*s)); - if ( s == NULL ) return NULL; - - s->p = p; - s->ss = p->ss; - s->cur_slide_template = NULL; - s->cur_frame_class = NULL; - - s->window = gtk_dialog_new_with_buttons("Stylesheet", - GTK_WINDOW(p->window), 0, - GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT, - NULL); - gtk_dialog_set_has_separator(GTK_DIALOG(s->window), TRUE); - - box = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(s->window)->vbox), box, - TRUE, TRUE, 0); - - label = gtk_label_new("Slide template:"); - gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); - gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0); - combo = gtk_combo_box_new_text(); -// for ( i=0; i<s->ss->n_styles; i++ ) { -// gtk_combo_box_append_text(GTK_COMBO_BOX(combo), -// s->ss->styles[i]->name); -// } - gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0); -// g_signal_connect(G_OBJECT(combo), "changed", -// G_CALLBACK(template_changed_sig), s); - gtk_box_pack_start(GTK_BOX(box), combo, TRUE, TRUE, 0); - - nb = gtk_notebook_new(); - gtk_notebook_set_tab_pos(GTK_NOTEBOOK(nb), GTK_POS_TOP); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(s->window)->vbox), nb, - TRUE, TRUE, 0); - - text_box = gtk_vbox_new(FALSE, 0); - gtk_container_set_border_width(GTK_CONTAINER(text_box), 12); - gtk_notebook_append_page(GTK_NOTEBOOK(nb), text_box, - gtk_label_new("Top Level Frames")); - do_layout(s, text_box); - - background_box = gtk_vbox_new(FALSE, 0); - gtk_container_set_border_width(GTK_CONTAINER(background_box), 12); - gtk_notebook_append_page(GTK_NOTEBOOK(nb), background_box, - gtk_label_new("Background")); - - g_signal_connect(G_OBJECT(s->window), "destroy", - G_CALLBACK(destroy_stylesheet_sig), s); - g_signal_connect(G_OBJECT(s->window), "response", - G_CALLBACK(gtk_widget_destroy), NULL); - - gtk_widget_show_all(s->window); - - return s; -} |