summaryrefslogtreecommitdiff
path: root/tikzit/src/gtk/SelectTool.m
diff options
context:
space:
mode:
authorAlex Merry <alex.merry@cs.ox.ac.uk>2013-02-13 13:31:08 +0000
committerAlex Merry <alex.merry@cs.ox.ac.uk>2013-02-13 14:57:11 +0000
commit814372e88b23ce7956b2322d6f382742e2277ea5 (patch)
treec92167f83e2bfee10206c9b1fcf0494584cf92a8 /tikzit/src/gtk/SelectTool.m
parent0a7223674204a6e8ee311e226b2b5ddef88803a3 (diff)
GTK: Add shortcuts for changing selection mode
Now when the graph has focus, shift+n will choose node selection, shift+e edge selection and shift+b both.
Diffstat (limited to 'tikzit/src/gtk/SelectTool.m')
-rw-r--r--tikzit/src/gtk/SelectTool.m18
1 files changed, 15 insertions, 3 deletions
diff --git a/tikzit/src/gtk/SelectTool.m b/tikzit/src/gtk/SelectTool.m
index 6f3ceeb..d5c482f 100644
--- a/tikzit/src/gtk/SelectTool.m
+++ b/tikzit/src/gtk/SelectTool.m
@@ -23,6 +23,8 @@
#import "TikzDocument.h"
#import "tzstockitems.h"
+#import <gdk/gdkkeysyms.h>
+
#define DRAG_SELECT_MODE_KEY "tikzit-drag-select-mode"
static const InputMask unionSelectMask = ShiftMask;
@@ -73,7 +75,7 @@ static void drag_select_mode_cb (GtkToggleButton *button, SelectTool *tool);
FALSE,
0);
- GtkWidget *nodeOpt = gtk_radio_button_new_with_label (NULL, "nodes");
+ GtkWidget *nodeOpt = gtk_radio_button_new_with_label (NULL, "nodes (N)");
g_object_set_data (G_OBJECT (nodeOpt),
DRAG_SELECT_MODE_KEY,
(gpointer)DragSelectsNodes);
@@ -89,7 +91,7 @@ static void drag_select_mode_cb (GtkToggleButton *button, SelectTool *tool);
GtkWidget *edgeOpt = gtk_radio_button_new_with_label (
gtk_radio_button_get_group (GTK_RADIO_BUTTON (nodeOpt)),
- "edges");
+ "edges (E)");
g_object_set_data (G_OBJECT (edgeOpt),
DRAG_SELECT_MODE_KEY,
(gpointer)DragSelectsEdges);
@@ -105,7 +107,7 @@ static void drag_select_mode_cb (GtkToggleButton *button, SelectTool *tool);
GtkWidget *bothOpt = gtk_radio_button_new_with_label (
gtk_radio_button_get_group (GTK_RADIO_BUTTON (edgeOpt)),
- "both");
+ "both (B)");
g_object_set_data (G_OBJECT (bothOpt),
DRAG_SELECT_MODE_KEY,
(gpointer)DragSelectsBoth);
@@ -359,6 +361,16 @@ static void drag_select_mode_cb (GtkToggleButton *button, SelectTool *tool);
}
}
+- (void) keyPressed:(unsigned int)keyVal withMask:(InputMask)mask {
+ if (keyVal == GDK_KEY_N && mask == ShiftMask) {
+ [self setDragSelectMode:DragSelectsNodes];
+ } else if (keyVal == GDK_KEY_E && mask == ShiftMask) {
+ [self setDragSelectMode:DragSelectsEdges];
+ } else if (keyVal == GDK_KEY_B && mask == ShiftMask) {
+ [self setDragSelectMode:DragSelectsBoth];
+ }
+}
+
- (void) renderWithContext:(id<RenderContext>)context onSurface:(id<Surface>)surface {
if (!NSIsEmptyRect (selectionBox)) {
[context saveState];