From 87d1c1c339768b8c9cde14e40b955e618ee4540f Mon Sep 17 00:00:00 2001 From: Thomas White Date: Wed, 10 Aug 2011 22:03:52 +0200 Subject: Plug in style and layout stuff to UI --- src/mainwindow.c | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 77 insertions(+), 1 deletion(-) (limited to 'src/mainwindow.c') 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; iss->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; iss->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; -- cgit v1.2.3