Add a main toolbar.

So far it has no special powers. This should change in the future.
This commit is contained in:
Přemysl Eric Janouch 2010-12-11 04:15:23 +01:00
parent fe7c270bdd
commit afacad693d
2 changed files with 30 additions and 17 deletions

View File

@ -24,5 +24,11 @@
<menuitem action="About" /> <menuitem action="About" />
</menu> </menu>
</menubar> </menubar>
<toolbar action="MainToolbar">
<toolitem action="New" />
<toolitem action="Open" />
<toolitem action="Save" />
<separator />
</toolbar>
</ui> </ui>

View File

@ -95,6 +95,7 @@ struct _LdWindowMainPrivate
GtkWidget *hbox; GtkWidget *hbox;
GtkWidget *menu; GtkWidget *menu;
GtkWidget *toolbar; GtkWidget *toolbar;
GtkWidget *library_toolbar;
LdLibrary *library; LdLibrary *library;
@ -110,14 +111,14 @@ struct _LdWindowMainPrivate
/* Define the type. */ /* Define the type. */
G_DEFINE_TYPE (LdWindowMain, ld_window_main, GTK_TYPE_WINDOW); G_DEFINE_TYPE (LdWindowMain, ld_window_main, GTK_TYPE_WINDOW);
#define TOOLBAR_ICON_WIDTH 32 #define LIBRARY_TOOLBAR_ICON_WIDTH 32
/* ===== Local functions =================================================== */ /* ===== Local functions =================================================== */
static void ld_window_main_finalize (GObject *gobject); static void ld_window_main_finalize (GObject *gobject);
static void load_toolbar (LdWindowMain *self); static void load_library_toolbar (LdWindowMain *self);
static void load_category_cb (gpointer data, gpointer user_data); static void load_category_cb (gpointer data, gpointer user_data);
static void redraw_symbol_menu (LdWindowMain *self); static void redraw_symbol_menu (LdWindowMain *self);
@ -248,26 +249,32 @@ ld_window_main_init (LdWindowMain *self)
priv->menu = gtk_ui_manager_get_widget (priv->ui_manager, "/MenuBar"); priv->menu = gtk_ui_manager_get_widget (priv->ui_manager, "/MenuBar");
gtk_box_pack_start (GTK_BOX (priv->vbox), priv->menu, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (priv->vbox), priv->menu, FALSE, FALSE, 0);
/* Add the main toolbar. */
priv->toolbar = gtk_ui_manager_get_widget (priv->ui_manager,
"/MainToolbar");
gtk_box_pack_start (GTK_BOX (priv->vbox), priv->toolbar, FALSE, FALSE, 0);
priv->hbox = gtk_hbox_new(FALSE, 0); priv->hbox = gtk_hbox_new(FALSE, 0);
gtk_box_pack_start (GTK_BOX (priv->vbox), priv->hbox, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (priv->vbox), priv->hbox, TRUE, TRUE, 0);
/* Add the symbol toolbar. */ /* Add the library toolbar. */
priv->toolbar = gtk_toolbar_new (); priv->library_toolbar = gtk_toolbar_new ();
/* NOTE: For GTK 2.16+, s/toolbar/orientable/ */ /* NOTE: For GTK 2.16+, s/toolbar/orientable/ */
gtk_toolbar_set_orientation gtk_toolbar_set_orientation
(GTK_TOOLBAR (priv->toolbar), GTK_ORIENTATION_VERTICAL); (GTK_TOOLBAR (priv->library_toolbar), GTK_ORIENTATION_VERTICAL);
gtk_toolbar_set_icon_size gtk_toolbar_set_icon_size
(GTK_TOOLBAR (priv->toolbar), GTK_ICON_SIZE_LARGE_TOOLBAR); (GTK_TOOLBAR (priv->library_toolbar), GTK_ICON_SIZE_LARGE_TOOLBAR);
gtk_toolbar_set_style gtk_toolbar_set_style
(GTK_TOOLBAR (priv->toolbar), GTK_TOOLBAR_ICONS); (GTK_TOOLBAR (priv->library_toolbar), GTK_TOOLBAR_ICONS);
gtk_box_pack_start (GTK_BOX (priv->hbox), priv->toolbar, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (priv->hbox), priv->library_toolbar,
FALSE, FALSE, 0);
/* Symbol library. */ /* Symbol library. */
priv->library = ld_library_new (); priv->library = ld_library_new ();
ld_library_load (priv->library, PROJECT_SHARE_DIR "library"); ld_library_load (priv->library, PROJECT_SHARE_DIR "library");
load_toolbar (self); load_library_toolbar (self);
/* TODO in the future: GtkHPaned */ /* TODO in the future: GtkHPaned */
@ -340,17 +347,17 @@ ld_window_main_finalize (GObject *gobject)
} }
/* /*
* load_toolbar: * load_library_toolbar:
* *
* Load symbols from the library into the toolbar. * Load symbols from the library into the library toolbar.
*/ */
static void static void
load_toolbar (LdWindowMain *self) load_library_toolbar (LdWindowMain *self)
{ {
GSList *categories; GSList *categories;
/* Clear the toolbar first, if there was already something in it. */ /* Clear the toolbar first, if there was already something in it. */
gtk_container_foreach (GTK_CONTAINER (self->priv->toolbar), gtk_container_foreach (GTK_CONTAINER (self->priv->library_toolbar),
(GtkCallback) gtk_widget_destroy, NULL); (GtkCallback) gtk_widget_destroy, NULL);
categories = (GSList *) ld_library_get_children (self->priv->library); categories = (GSList *) ld_library_get_children (self->priv->library);
@ -360,7 +367,7 @@ load_toolbar (LdWindowMain *self)
/* /*
* load_category_cb: * load_category_cb:
* *
* A foreach callback for adding categories into the toolbar. * A foreach callback for adding categories into the library toolbar.
*/ */
static void static void
load_category_cb (gpointer data, gpointer user_data) load_category_cb (gpointer data, gpointer user_data)
@ -381,8 +388,8 @@ load_category_cb (gpointer data, gpointer user_data)
human_name = ld_symbol_category_get_human_name (cat); human_name = ld_symbol_category_get_human_name (cat);
pbuf = gdk_pixbuf_new_from_file_at_size pbuf = gdk_pixbuf_new_from_file_at_size (ld_symbol_category_get_image_path
(ld_symbol_category_get_image_path (cat), TOOLBAR_ICON_WIDTH, -1, NULL); (cat), LIBRARY_TOOLBAR_ICON_WIDTH, -1, NULL);
g_return_if_fail (pbuf != NULL); g_return_if_fail (pbuf != NULL);
img = gtk_image_new_from_pixbuf (pbuf); img = gtk_image_new_from_pixbuf (pbuf);
@ -402,7 +409,7 @@ load_category_cb (gpointer data, gpointer user_data)
g_signal_connect (button, "toggled", G_CALLBACK (on_category_toggle), self); g_signal_connect (button, "toggled", G_CALLBACK (on_category_toggle), self);
gtk_tool_item_set_tooltip_text (item, human_name); gtk_tool_item_set_tooltip_text (item, human_name);
gtk_toolbar_insert (GTK_TOOLBAR (self->priv->toolbar), item, 0); gtk_toolbar_insert (GTK_TOOLBAR (self->priv->library_toolbar), item, 0);
} }
/* /*