Handle Edit menu actions (Delete, Select All).

This commit is contained in:
Přemysl Eric Janouch 2011-01-16 15:39:11 +01:00
parent 60a00e3551
commit 81f116ed12
1 changed files with 30 additions and 3 deletions

View File

@ -127,6 +127,9 @@ static void update_title (LdWindowMain *self);
static void action_set_sensitive (LdWindowMain *self, const gchar *name, static void action_set_sensitive (LdWindowMain *self, const gchar *name,
gboolean sensitive); gboolean sensitive);
static void on_diagram_selection_changed (LdDiagram *diagram,
LdWindowMain *self);
static gchar *diagram_get_name (LdWindowMain *self); static gchar *diagram_get_name (LdWindowMain *self);
static void diagram_set_filename (LdWindowMain *self, gchar *filename); static void diagram_set_filename (LdWindowMain *self, gchar *filename);
static void diagram_new (LdWindowMain *self); static void diagram_new (LdWindowMain *self);
@ -147,6 +150,9 @@ static void on_action_save_as (GtkAction *action, LdWindowMain *self);
static void on_action_quit (GtkAction *action, LdWindowMain *self); static void on_action_quit (GtkAction *action, LdWindowMain *self);
static void on_action_about (GtkAction *action, LdWindowMain *self); static void on_action_about (GtkAction *action, LdWindowMain *self);
static void on_action_delete (GtkAction *action, LdWindowMain *self);
static void on_action_select_all (GtkAction *action, LdWindowMain *self);
/* ===== Local variables =================================================== */ /* ===== Local variables =================================================== */
@ -182,10 +188,10 @@ static GtkActionEntry wm_action_entries[] =
*/ */
{"Delete", GTK_STOCK_DELETE, Q_("_Delete"), "Delete", {"Delete", GTK_STOCK_DELETE, Q_("_Delete"), "Delete",
Q_("Delete the contents of the selection"), Q_("Delete the contents of the selection"),
NULL}, G_CALLBACK (on_action_delete)},
{"SelectAll", GTK_STOCK_SELECT_ALL, Q_("Select _All"), "<Ctrl>A", {"SelectAll", GTK_STOCK_SELECT_ALL, Q_("Select _All"), "<Ctrl>A",
Q_("Select all objects in the diagram"), Q_("Select all objects in the diagram"),
NULL}, G_CALLBACK (on_action_select_all)},
{"ViewMenu", NULL, Q_("_View"), NULL, NULL, NULL}, {"ViewMenu", NULL, Q_("_View"), NULL, NULL, NULL},
{"ZoomIn", GTK_STOCK_ZOOM_IN, Q_("_Zoom In"), "<Ctrl>plus", {"ZoomIn", GTK_STOCK_ZOOM_IN, Q_("_Zoom In"), "<Ctrl>plus",
@ -342,6 +348,8 @@ ld_window_main_init (LdWindowMain *self)
g_signal_connect_data (priv->diagram, "changed", g_signal_connect_data (priv->diagram, "changed",
G_CALLBACK (update_title), self, G_CALLBACK (update_title), self,
NULL, G_CONNECT_AFTER | G_CONNECT_SWAPPED); NULL, G_CONNECT_AFTER | G_CONNECT_SWAPPED);
g_signal_connect_after (priv->diagram, "selection-changed",
G_CALLBACK (on_diagram_selection_changed), self);
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");
@ -354,7 +362,6 @@ ld_window_main_init (LdWindowMain *self)
action_set_sensitive (self, "Export", FALSE); action_set_sensitive (self, "Export", FALSE);
action_set_sensitive (self, "Delete", FALSE); action_set_sensitive (self, "Delete", FALSE);
action_set_sensitive (self, "SelectAll", FALSE);
action_set_sensitive (self, "ZoomIn", FALSE); action_set_sensitive (self, "ZoomIn", FALSE);
action_set_sensitive (self, "ZoomOut", FALSE); action_set_sensitive (self, "ZoomOut", FALSE);
action_set_sensitive (self, "NormalSize", FALSE); action_set_sensitive (self, "NormalSize", FALSE);
@ -914,6 +921,15 @@ on_menu_item_deselected (GtkItem *item, LdWindowMain *window)
/* ===== Diagram handling ================================================== */ /* ===== Diagram handling ================================================== */
static void
on_diagram_selection_changed (LdDiagram *diagram, LdWindowMain *self)
{
gboolean selection_empty;
selection_empty = !ld_diagram_get_selection (diagram);
action_set_sensitive (self, "Delete", !selection_empty);
}
/* /*
* diagram_get_name: * diagram_get_name:
* *
@ -1240,3 +1256,14 @@ on_action_about (GtkAction *action, LdWindowMain *self)
NULL); NULL);
} }
static void
on_action_delete (GtkAction *action, LdWindowMain *self)
{
ld_diagram_remove_selection (self->priv->diagram);
}
static void
on_action_select_all (GtkAction *action, LdWindowMain *self)
{
ld_diagram_select_all (self->priv->diagram);
}