diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mainwindow.c | 21 | ||||
-rw-r--r-- | src/objects.c | 3 | ||||
-rw-r--r-- | src/presentation.h | 3 | ||||
-rw-r--r-- | src/tool_image.c | 9 | ||||
-rw-r--r-- | src/tool_select.c | 12 | ||||
-rw-r--r-- | src/tool_text.c | 10 |
6 files changed, 46 insertions, 12 deletions
diff --git a/src/mainwindow.c b/src/mainwindow.c index 9b17f52..b3104f7 100644 --- a/src/mainwindow.c +++ b/src/mainwindow.c @@ -436,6 +436,12 @@ static gint set_tool_sig(GtkWidget *widget, GtkRadioAction *action, case TOOL_IMAGE : p->cur_tool = p->image_tool; break; } + if ( p->cur_tbox != NULL ) { + gtk_container_remove(GTK_CONTAINER(p->tbox), p->cur_tbox); + } + p->cur_tbox = p->cur_tool->tbox; + gtk_container_add(GTK_CONTAINER(p->tbox), p->cur_tbox); + if ( p->editing_object != NULL ) { if ( p->cur_tool->valid_object(p->editing_object) ) { p->cur_tool->select(p->editing_object, p->cur_tool); @@ -479,7 +485,6 @@ static gint add_furniture(GtkWidget *widget, struct presentation *p) static void add_menu_bar(struct presentation *p, GtkWidget *vbox) { GError *error = NULL; - GtkToolItem *titem; GtkWidget *toolbar; GtkWidget *menu; GtkWidget *item; @@ -576,13 +581,11 @@ static void add_menu_bar(struct presentation *p, GtkWidget *vbox) gtk_ui_manager_ensure_update(p->ui); toolbar = gtk_ui_manager_get_widget(p->ui, "/displaywindowtoolbar"); - titem = gtk_separator_tool_item_new(); - gtk_toolbar_insert(GTK_TOOLBAR(toolbar), titem, -1); + gtk_toolbar_insert(GTK_TOOLBAR(toolbar), + gtk_separator_tool_item_new(), -1); - p->tbox = gtk_hbox_new(FALSE, 0.0); - titem = gtk_tool_item_new(); - gtk_container_add(GTK_CONTAINER(titem), p->tbox); - gtk_toolbar_insert(GTK_TOOLBAR(toolbar), titem, -1); + p->tbox = GTK_WIDGET(gtk_tool_item_new()); + gtk_toolbar_insert(GTK_TOOLBAR(toolbar), GTK_TOOL_ITEM(p->tbox), -1); /* Add the styles to the "Insert" menu */ menu = gtk_ui_manager_get_widget(p->ui, "/displaywindow/insert"); @@ -1157,7 +1160,6 @@ int open_mainwindow(struct presentation *p) vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(window), vbox); - add_menu_bar(p, vbox); p->drawingarea = gtk_drawing_area_new(); sw = gtk_scrolled_window_new(NULL, NULL); @@ -1166,12 +1168,13 @@ int open_mainwindow(struct presentation *p) GTK_POLICY_AUTOMATIC); gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), p->drawingarea); - gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); gtk_widget_set_size_request(GTK_WIDGET(p->drawingarea), p->slide_width + 20, p->slide_height + 20); realise_everything(p); + add_menu_bar(p, vbox); + gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); gtk_widget_set_can_focus(GTK_WIDGET(p->drawingarea), TRUE); gtk_widget_add_events(GTK_WIDGET(p->drawingarea), diff --git a/src/objects.c b/src/objects.c index 36e7419..80b57a7 100644 --- a/src/objects.c +++ b/src/objects.c @@ -195,7 +195,10 @@ void realise_everything(struct presentation *p) { int i; + /* Realise all the tools */ + p->select_tool->realise(p->select_tool, p->drawingarea); p->text_tool->realise(p->text_tool, p->drawingarea); + p->image_tool->realise(p->image_tool, p->drawingarea); for ( i=0; i<p->num_slides; i++ ) { diff --git a/src/presentation.h b/src/presentation.h index d766a6d..228d886 100644 --- a/src/presentation.h +++ b/src/presentation.h @@ -68,6 +68,8 @@ enum drag_status struct toolinfo { + GtkWidget *tbox; + void (*click_select)(struct presentation *p, struct toolinfo *tip, double x, double y, GdkEventButton *event, enum drag_status *drag_status, @@ -117,6 +119,7 @@ struct presentation GtkActionGroup *action_group; GtkIMContext *im_context; GtkWidget *tbox; + GtkWidget *cur_tbox; /* Pointers to the current "editing" and "projection" slides */ struct slide *cur_edit_slide; diff --git a/src/tool_image.c b/src/tool_image.c index e41a285..0187ad4 100644 --- a/src/tool_image.c +++ b/src/tool_image.c @@ -467,6 +467,14 @@ static struct object *deserialize(struct presentation *p, struct ds_node *root, } +static void realise(struct toolinfo *ti, GtkWidget *w) +{ + ti->tbox = gtk_label_new("Image tool"); + g_object_ref(ti->tbox); + gtk_widget_show(ti->tbox); +} + + struct toolinfo *initialise_image_tool() { struct image_toolinfo *ti; @@ -485,6 +493,7 @@ struct toolinfo *initialise_image_tool() ti->base.im_commit = im_commit; ti->base.valid_object = valid_object; ti->base.deserialize = deserialize; + ti->base.realise = realise; return (struct toolinfo *)ti; } diff --git a/src/tool_select.c b/src/tool_select.c index d522000..e473149 100644 --- a/src/tool_select.c +++ b/src/tool_select.c @@ -180,6 +180,17 @@ static int valid_object(struct object *o) } +static void realise(struct toolinfo *ti, GtkWidget *w) +{ + GtkWidget *hbox; + + hbox = gtk_hbox_new(FALSE, 0.0); + ti->tbox = hbox; + g_object_ref(ti->tbox); + gtk_widget_show(ti->tbox); +} + + struct toolinfo *initialise_select_tool() { struct select_toolinfo *ti; @@ -199,6 +210,7 @@ struct toolinfo *initialise_select_tool() ti->base.key_pressed = key_pressed; ti->base.im_commit = im_commit; ti->base.valid_object = valid_object; + ti->base.realise = realise; return (struct toolinfo *)ti; } diff --git a/src/tool_text.c b/src/tool_text.c index 7b9d377..d011c49 100644 --- a/src/tool_text.c +++ b/src/tool_text.c @@ -732,10 +732,14 @@ static int valid_object(struct object *o) } -static void realise(struct toolinfo *tip, GtkWidget *w) +static void realise(struct toolinfo *ti, GtkWidget *w) { - struct text_toolinfo *ti = (struct text_toolinfo *)tip; - ti->pc = gtk_widget_get_pango_context(w); + struct text_toolinfo *tip = (struct text_toolinfo *)ti; + tip->pc = gtk_widget_get_pango_context(w); + + ti->tbox = gtk_label_new("Text tool"); + g_object_ref(ti->tbox); + gtk_widget_show(ti->tbox); } |