Add a main toolbar.
So far it has no special powers. This should change in the future.
This commit is contained in:
parent
fe7c270bdd
commit
afacad693d
|
@ -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>
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue