From d004529a2b71770ef7f68de81ce2ac3efd7d8686 Mon Sep 17 00:00:00 2001 From: Alex Merry Date: Fri, 7 Dec 2012 13:41:55 +0000 Subject: Add config widgets to toolbox --- tikzit/src/gtk/ToolBox.h | 2 ++ tikzit/src/gtk/ToolBox.m | 44 +++++++++++++++++++++++++++++++++++++++----- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/tikzit/src/gtk/ToolBox.h b/tikzit/src/gtk/ToolBox.h index 1d8020f..547da1a 100644 --- a/tikzit/src/gtk/ToolBox.h +++ b/tikzit/src/gtk/ToolBox.h @@ -24,6 +24,8 @@ @interface ToolBox : NSObject { GtkWidget *window; GtkToolItemGroup *toolGroup; + GtkWidget *configWidgetContainer; + GtkWidget *configWidget; } @property (assign) id selectedTool; diff --git a/tikzit/src/gtk/ToolBox.m b/tikzit/src/gtk/ToolBox.m index d7c991d..c9cdd0b 100644 --- a/tikzit/src/gtk/ToolBox.m +++ b/tikzit/src/gtk/ToolBox.m @@ -47,13 +47,17 @@ static void unretain (gpointer data); gtk_window_set_default_size (GTK_WINDOW (window), 200, 500); gtk_window_set_deletable (GTK_WINDOW (window), FALSE); - GtkBox *mainLayout = GTK_BOX (gtk_vbox_new (FALSE, 0)); - gtk_widget_show (GTK_WIDGET (mainLayout)); - gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (mainLayout)); + GtkWidget *mainLayout = gtk_vbox_new (FALSE, 5); + gtk_widget_show (mainLayout); + gtk_container_add (GTK_CONTAINER (window), mainLayout); GtkWidget *toolPalette = gtk_tool_palette_new (); gtk_widget_show (toolPalette); - gtk_container_add (GTK_CONTAINER (mainLayout), toolPalette); + gtk_box_pack_start (GTK_BOX (mainLayout), + toolPalette, + FALSE, + FALSE, + 0); toolGroup = GTK_TOOL_ITEM_GROUP (gtk_tool_item_group_new ("Tools")); g_object_ref_sink (G_OBJECT (toolGroup)); @@ -90,6 +94,15 @@ static void unretain (gpointer data); self); } + configWidgetContainer = gtk_frame_new (""); + g_object_ref_sink (configWidgetContainer); + gtk_widget_show (configWidgetContainer); + gtk_box_pack_start (GTK_BOX (mainLayout), + configWidgetContainer, + TRUE, + TRUE, + 0); + gtk_widget_show (window); } @@ -99,6 +112,9 @@ static void unretain (gpointer data); - (void) dealloc { if (window) { g_object_unref (G_OBJECT (toolGroup)); + g_object_unref (G_OBJECT (configWidgetContainer)); + if (configWidget) + g_object_unref (G_OBJECT (configWidget)); gtk_widget_destroy (window); g_object_unref (G_OBJECT (window)); } @@ -117,6 +133,21 @@ static void unretain (gpointer data); return nil; } +- (void) _setToolWidget:(GtkWidget*)widget { + if (configWidget) { + gtk_container_remove (GTK_CONTAINER (configWidgetContainer), + configWidget); + g_object_unref (configWidget); + } + configWidget = widget; + if (configWidget) { + g_object_ref (configWidget); + gtk_container_add (GTK_CONTAINER (configWidgetContainer), + configWidget); + gtk_widget_show (configWidget); + } +} + - (void) setSelectedTool:(id)tool { guint count = gtk_tool_item_group_get_n_items (toolGroup); for (guint i = 0; i < count; ++i) { @@ -126,9 +157,12 @@ static void unretain (gpointer data); gtk_toggle_tool_button_set_active ( GTK_TOGGLE_TOOL_BUTTON (item), TRUE); - return; + break; } } + gtk_frame_set_label (GTK_FRAME (configWidgetContainer), + [[tool name] UTF8String]); + [self _setToolWidget:[tool configurationWidget]]; } - (void) loadConfiguration:(Configuration*)config { -- cgit v1.2.3