Replace LdLibraryToolbar with LdLibraryPane.

This commit is contained in:
2012-08-10 03:38:11 +02:00
parent a18b6d6f35
commit 00a50737f3
7 changed files with 32 additions and 934 deletions

View File

@@ -23,11 +23,13 @@ struct _LdWindowMainPrivate
GtkActionGroup *action_group;
GtkWidget *vbox;
GtkWidget *hbox;
GtkWidget *paned;
GtkWidget *menu;
GtkWidget *toolbar;
GtkWidget *library_toolbar;
GtkWidget *library_pane;
GtkWidget *pane_window;
GtkWidget *pane_viewport;
LdLibrary *library;
@@ -85,13 +87,6 @@ static gboolean may_close_diagram (LdWindowMain *self,
const gchar *dialog_message);
static gboolean may_quit (LdWindowMain *self);
static void on_symbol_selected (LdLibraryToolbar *toolbar, LdSymbol *symbol,
const gchar *klass, LdWindowMain *self);
static void on_symbol_deselected (LdLibraryToolbar *toolbar, LdSymbol *symbol,
const gchar *klass, LdWindowMain *self);
static void on_symbol_chosen (LdLibraryToolbar *toolbar, LdSymbol *symbol,
const gchar *klass, LdWindowMain *self);
static void on_action_new (GtkAction *action, LdWindowMain *self);
static void on_action_open (GtkAction *action, LdWindowMain *self);
static void on_action_save (GtkAction *action, LdWindowMain *self);
@@ -106,7 +101,7 @@ static void on_action_select_all (GtkAction *action, LdWindowMain *self);
static void on_action_main_toolbar (GtkToggleAction *action,
LdWindowMain *self);
static void on_action_library_toolbar (GtkToggleAction *action,
static void on_action_library_pane (GtkToggleAction *action,
LdWindowMain *self);
static void on_action_grid (GtkToggleAction *action, LdWindowMain *self);
@@ -183,9 +178,9 @@ static GtkToggleActionEntry wm_toggle_action_entries[] =
{"MainToolbar", NULL, N_("_Main Toolbar"), NULL,
N_("Toggle displaying of the main toolbar"),
G_CALLBACK (on_action_main_toolbar), TRUE},
{"LibraryToolbar", NULL, N_("_Library Toolbar"), NULL,
N_("Toggle displaying of the library toolbar"),
G_CALLBACK (on_action_library_toolbar), TRUE},
{"LibraryPane", NULL, N_("_Library Pane"), NULL,
N_("Toggle displaying of the library pane"),
G_CALLBACK (on_action_library_pane), TRUE},
{"ShowGrid", NULL, N_("Show _Grid"), NULL,
N_("Toggle displaying of the grid"),
G_CALLBACK (on_action_grid), TRUE}
@@ -267,11 +262,6 @@ ld_window_main_init (LdWindowMain *self)
priv->toolbar = gtk_ui_manager_get_widget (priv->ui_manager, "/Toolbar");
/* Create the remaining widgets. */
priv->library_toolbar = ld_library_toolbar_new ();
/* XXX: For GTK 2.16+, s/toolbar/orientable/ */
gtk_toolbar_set_orientation (GTK_TOOLBAR (priv->library_toolbar),
GTK_ORIENTATION_VERTICAL);
priv->library_pane = ld_library_pane_new ();
priv->view = LD_DIAGRAM_VIEW (ld_diagram_view_new ());
@@ -287,19 +277,27 @@ ld_window_main_init (LdWindowMain *self)
priv->statusbar_symbol_context_id = gtk_statusbar_get_context_id
(GTK_STATUSBAR (priv->statusbar), "symbol");
/* Pack all widgets into the window. */
priv->hbox = gtk_hbox_new (FALSE, 0);
gtk_box_pack_start (GTK_BOX (priv->hbox), priv->library_toolbar,
FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (priv->hbox), priv->scrolled_window,
TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (priv->hbox), priv->library_pane,
TRUE, TRUE, 0);
priv->pane_viewport = gtk_viewport_new (NULL, NULL);
gtk_viewport_set_shadow_type
(GTK_VIEWPORT (priv->pane_viewport), GTK_SHADOW_NONE);
gtk_container_add (GTK_CONTAINER (priv->pane_viewport), priv->library_pane);
priv->pane_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->pane_window),
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
gtk_container_add (GTK_CONTAINER (priv->pane_window), priv->pane_viewport);
priv->paned = gtk_hpaned_new ();
gtk_paned_pack1 (GTK_PANED (priv->paned),
priv->pane_window, FALSE, FALSE);
gtk_paned_pack2 (GTK_PANED (priv->paned),
priv->scrolled_window, TRUE, TRUE);
/* Pack all widgets into the window. */
priv->vbox = gtk_vbox_new (FALSE, 0);
gtk_box_pack_start (GTK_BOX (priv->vbox), priv->menu, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (priv->vbox), priv->toolbar, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (priv->vbox), priv->hbox, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (priv->vbox), priv->paned, TRUE, TRUE, 0);
gtk_box_pack_end (GTK_BOX (priv->vbox), priv->statusbar, FALSE, FALSE, 0);
gtk_container_add (GTK_CONTAINER (self), priv->vbox);
@@ -334,21 +332,9 @@ ld_window_main_init (LdWindowMain *self)
g_signal_connect (priv->view, "notify::zoom",
G_CALLBACK (on_view_zoom_changed), self);
ld_library_toolbar_set_library (LD_LIBRARY_TOOLBAR (priv->library_toolbar),
priv->library);
ld_library_toolbar_set_view (LD_LIBRARY_TOOLBAR (priv->library_toolbar),
priv->view);
ld_library_pane_set_library (LD_LIBRARY_PANE (priv->library_pane),
priv->library);
g_signal_connect_after (priv->library_toolbar, "symbol-selected",
G_CALLBACK (on_symbol_selected), self);
g_signal_connect_after (priv->library_toolbar, "symbol-deselected",
G_CALLBACK (on_symbol_deselected), self);
g_signal_connect_after (priv->library_toolbar, "symbol-chosen",
G_CALLBACK (on_symbol_chosen), self);
diagram_set_filename (self, NULL);
action_set_sensitive (self, "Undo", FALSE);
@@ -367,9 +353,9 @@ ld_window_main_init (LdWindowMain *self)
g_settings_bind (priv->settings, "show-main-toolbar",
gtk_action_group_get_action (priv->action_group,
"MainToolbar"), "active", G_SETTINGS_BIND_DEFAULT);
g_settings_bind (priv->settings, "show-library-toolbar",
g_settings_bind (priv->settings, "show-library-pane",
gtk_action_group_get_action (priv->action_group,
"LibraryToolbar"), "active", G_SETTINGS_BIND_DEFAULT);
"LibraryPane"), "active", G_SETTINGS_BIND_DEFAULT);
g_settings_bind (priv->settings, "show-grid",
gtk_action_group_get_action (priv->action_group,
"ShowGrid"), "active", G_SETTINGS_BIND_DEFAULT);
@@ -837,38 +823,6 @@ may_quit (LdWindowMain *self)
/* ===== User interface actions ============================================ */
static void
on_symbol_selected (LdLibraryToolbar *toolbar, LdSymbol *symbol,
const gchar *klass, LdWindowMain *self)
{
const gchar *symbol_name;
symbol_name = ld_symbol_get_human_name (symbol);
gtk_statusbar_push (GTK_STATUSBAR (self->priv->statusbar),
self->priv->statusbar_menu_context_id, symbol_name);
}
static void
on_symbol_deselected (LdLibraryToolbar *toolbar, LdSymbol *symbol,
const gchar *klass, LdWindowMain *self)
{
gtk_statusbar_pop (GTK_STATUSBAR (self->priv->statusbar),
self->priv->statusbar_menu_context_id);
}
static void
on_symbol_chosen (LdLibraryToolbar *toolbar, LdSymbol *symbol,
const gchar *klass, LdWindowMain *self)
{
LdDiagramSymbol *diagram_symbol;
diagram_symbol = ld_diagram_symbol_new (NULL);
ld_diagram_symbol_set_class (diagram_symbol, klass);
ld_diagram_view_add_object_begin (self->priv->view,
LD_DIAGRAM_OBJECT (diagram_symbol));
}
static void
on_view_zoom_changed (LdDiagramView *view, GParamSpec *pspec,
LdWindowMain *self)
@@ -958,9 +912,9 @@ on_action_main_toolbar (GtkToggleAction *action, LdWindowMain *self)
}
static void
on_action_library_toolbar (GtkToggleAction *action, LdWindowMain *self)
on_action_library_pane (GtkToggleAction *action, LdWindowMain *self)
{
gtk_widget_set_visible (self->priv->library_toolbar,
gtk_widget_set_visible (self->priv->pane_window,
gtk_toggle_action_get_active (action));
}