aboutsummaryrefslogtreecommitdiff
path: root/src/mainwindow.c
diff options
context:
space:
mode:
authorThomas White <taw@bitwiz.org.uk>2011-08-10 22:03:52 +0200
committerThomas White <taw@bitwiz.org.uk>2011-08-10 22:03:52 +0200
commit87d1c1c339768b8c9cde14e40b955e618ee4540f (patch)
treebae3f229a48a526f2f1d788cff3db204068e555f /src/mainwindow.c
parent394b051daacb63c661dba0a8c57ec04ad1ae73cf (diff)
Plug in style and layout stuff to UI
Diffstat (limited to 'src/mainwindow.c')
-rw-r--r--src/mainwindow.c78
1 files changed, 77 insertions, 1 deletions
diff --git a/src/mainwindow.c b/src/mainwindow.c
index d6d98f4..fe31ad4 100644
--- a/src/mainwindow.c
+++ b/src/mainwindow.c
@@ -211,6 +211,7 @@ static gint open_stylesheet_sig(GtkWidget *widget, struct presentation *p)
return FALSE;
}
+
static gint set_tool_sig(GtkWidget *widget, GtkRadioAction *action,
struct presentation *p)
{
@@ -226,9 +227,44 @@ static gint set_tool_sig(GtkWidget *widget, GtkRadioAction *action,
}
+static void layout_changed_sig(GtkComboBox *combo, struct presentation *p)
+{
+ int n;
+
+ if ( p->editing_object != NULL ) {
+ printf("Can't change layout element!\n");
+ return;
+ }
+
+ n = gtk_combo_box_get_active(GTK_COMBO_BOX(combo));
+ p->cur_layout = p->ss->layout_elements[n];
+
+
+}
+
+
+static void text_style_changed_sig(GtkComboBox *combo, struct presentation *p)
+{
+ int n;
+
+ n = gtk_combo_box_get_active(GTK_COMBO_BOX(combo));
+ p->cur_style = p->ss->text_styles[n];
+
+ if ( p->editing_object != NULL ) {
+ set_text_style(p->editing_object, p->cur_style);
+ gdk_window_invalidate_rect(p->drawingarea->window, NULL, FALSE);
+ }
+}
+
+
static void add_menu_bar(struct presentation *p, GtkWidget *vbox)
{
GError *error = NULL;
+ GtkWidget *label;
+ GtkWidget *combo;
+ GtkToolItem *titem;
+ GtkWidget *box;
+ int i;
GtkActionEntry entries[] = {
{ "FileAction", NULL, "_File", NULL, NULL, NULL },
@@ -314,6 +350,44 @@ static void add_menu_bar(struct presentation *p, GtkWidget *vbox)
gtk_ui_manager_get_accel_group(p->ui));
gtk_ui_manager_ensure_update(p->ui);
+ p->toolbar = gtk_ui_manager_get_widget(p->ui,
+ "/ui/displaywindowtoolbar");
+
+ titem = gtk_separator_tool_item_new();
+ gtk_toolbar_insert(GTK_TOOLBAR(p->toolbar), titem, -1);
+
+ box = gtk_vbox_new(FALSE, 0.0);
+ p->tbox = gtk_hbox_new(FALSE, 0.0);
+ titem = gtk_tool_item_new();
+ gtk_box_pack_start(GTK_BOX(box), p->tbox, FALSE, FALSE, 5.0);
+ gtk_container_add(GTK_CONTAINER(titem), box);
+ gtk_toolbar_insert(GTK_TOOLBAR(p->toolbar), titem, -1);
+ label = gtk_label_new("Layout element:");
+ gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5);
+ gtk_box_pack_start(GTK_BOX(p->tbox), label, FALSE, FALSE, 5.0);
+ combo = gtk_combo_box_new_text();
+ for ( i=0; i<p->ss->n_layout_elements; i++ ) {
+ gtk_combo_box_append_text(GTK_COMBO_BOX(combo),
+ p->ss->layout_elements[i]->name);
+ }
+ gtk_box_pack_start(GTK_BOX(p->tbox), combo, FALSE, FALSE, 5.0);
+ g_signal_connect(G_OBJECT(combo), "changed",
+ G_CALLBACK(layout_changed_sig), p);
+ gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0);
+
+ label = gtk_label_new("Text style:");
+ gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5);
+ gtk_box_pack_start(GTK_BOX(p->tbox), label, FALSE, FALSE, 5.0);
+ combo = gtk_combo_box_new_text();
+ for ( i=0; i<p->ss->n_text_styles; i++ ) {
+ gtk_combo_box_append_text(GTK_COMBO_BOX(combo),
+ p->ss->text_styles[i]->name);
+ }
+ gtk_box_pack_start(GTK_BOX(p->tbox), combo, FALSE, FALSE, 5.0);
+ g_signal_connect(G_OBJECT(combo), "changed",
+ G_CALLBACK(text_style_changed_sig), p);
+ gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0);
+
update_toolbar(p);
}
@@ -454,7 +528,9 @@ static gboolean button_press_sig(GtkWidget *da, GdkEventButton *event,
case TOOL_TEXT :
if ( !clicked ) {
struct object *n;
- n = add_text_object(p->view_slide, x, y);
+ n = add_text_object(p->view_slide, x, y,
+ p->cur_layout,
+ p->cur_style);
p->editing_object = n;
} else {
p->editing_object = clicked;