summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Schodet2011-09-01 00:12:39 +0200
committerNicolas Schodet2011-09-01 00:12:39 +0200
commit534224a85f773bc941ef8c83dc0126a0283216fd (patch)
tree061dc7488c0d67e21a982c68311dafe84501bb90
parent02d8936922cfb55a1aa0fd9bebf002200fcc5ad1 (diff)
Added snap move menu.patches-1
-rw-r--r--linux/toolbar.cpp86
1 files changed, 84 insertions, 2 deletions
diff --git a/linux/toolbar.cpp b/linux/toolbar.cpp
index bc78139..3854c3f 100644
--- a/linux/toolbar.cpp
+++ b/linux/toolbar.cpp
@@ -15,6 +15,7 @@
#include "preview.h"
#include "library.h"
#include "lc_application.h"
+#include "gtkmisc.h"
// =============================================================================
// Variables
@@ -818,9 +819,32 @@ static void statusbar_listener (int message, void *data, void *user)
}
}
+static gint statusbar_popup(GtkWidget *widget, GdkEvent *event,
+ GtkWidget *menu_widget)
+{
+ GtkMenu *menu;
+ GdkEventButton *event_button;
+ g_return_val_if_fail(widget != NULL, FALSE);
+ g_return_val_if_fail(event != NULL, FALSE);
+ g_return_val_if_fail(menu_widget != NULL, FALSE);
+ g_return_val_if_fail(GTK_IS_MENU(menu_widget), FALSE);
+ menu = GTK_MENU(menu_widget);
+ if (event->type == GDK_BUTTON_PRESS)
+ {
+ event_button = (GdkEventButton *) event;
+ if (event_button->button == 3)
+ {
+ gtk_menu_popup(menu, NULL, NULL, NULL, NULL,
+ event_button->button, event_button->time);
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
void create_statusbar(GtkWidget *window, GtkWidget *vbox)
{
- GtkWidget *hbox, *hbox1, *frame;
+ GtkWidget *hbox, *hbox1, *frame, *ebox_snap;
hbox = gtk_hbox_new (FALSE, 0);
gtk_widget_show (hbox);
@@ -867,9 +891,13 @@ void create_statusbar(GtkWidget *window, GtkWidget *vbox)
gtk_container_border_width (GTK_CONTAINER (hbox1), 0);
gtk_widget_show (hbox1);
+ ebox_snap = gtk_event_box_new();
+ gtk_widget_show(ebox_snap);
+ gtk_box_pack_start(GTK_BOX(hbox1), ebox_snap, TRUE, TRUE, 0);
+
label_snap = gtk_label_new (" ");
gtk_widget_show (label_snap);
- gtk_box_pack_start (GTK_BOX (hbox1), label_snap, TRUE, TRUE, 0);
+ gtk_container_add(GTK_CONTAINER(ebox_snap), label_snap);
frame = gtk_frame_new (NULL);
gtk_widget_show (frame);
@@ -886,4 +914,58 @@ void create_statusbar(GtkWidget *window, GtkWidget *vbox)
gtk_box_pack_start (GTK_BOX (hbox1), label_step, TRUE, TRUE, 0);
messenger->Listen (&statusbar_listener, NULL);
+
+ // Add snap popup menu
+ GtkWidget *menu, *item;
+ menu = gtk_menu_new();
+ item = gtk_menu_item_new_with_label("XY Snap");
+ gtk_widget_set_sensitive(item, FALSE);
+ gtk_menu_append(menu, item);
+ create_menu_item(menu, "None", NULL, GTK_SIGNAL_FUNC(OnCommandDirect),
+ NULL, LC_EDIT_MOVEXY_SNAP_0, NULL);
+ create_menu_item(menu, "1/20 Stud", NULL, GTK_SIGNAL_FUNC(OnCommandDirect),
+ NULL, LC_EDIT_MOVEXY_SNAP_1, NULL);
+ create_menu_item(menu, "1/4 Stud", NULL, GTK_SIGNAL_FUNC(OnCommandDirect),
+ NULL, LC_EDIT_MOVEXY_SNAP_2, NULL);
+ create_menu_item(menu, "1 Flat", NULL, GTK_SIGNAL_FUNC(OnCommandDirect),
+ NULL, LC_EDIT_MOVEXY_SNAP_3, NULL);
+ create_menu_item(menu, "1/2 Stud", NULL, GTK_SIGNAL_FUNC(OnCommandDirect),
+ NULL, LC_EDIT_MOVEXY_SNAP_4, NULL);
+ create_menu_item(menu, "1 Stud", NULL, GTK_SIGNAL_FUNC(OnCommandDirect),
+ NULL, LC_EDIT_MOVEXY_SNAP_5, NULL);
+ create_menu_item(menu, "2 Studs", NULL, GTK_SIGNAL_FUNC(OnCommandDirect),
+ NULL, LC_EDIT_MOVEXY_SNAP_6, NULL);
+ create_menu_item(menu, "3 Studs", NULL, GTK_SIGNAL_FUNC(OnCommandDirect),
+ NULL, LC_EDIT_MOVEXY_SNAP_7, NULL);
+ create_menu_item(menu, "4 Studs", NULL, GTK_SIGNAL_FUNC(OnCommandDirect),
+ NULL, LC_EDIT_MOVEXY_SNAP_8, NULL);
+ create_menu_item(menu, "8 Studs", NULL, GTK_SIGNAL_FUNC(OnCommandDirect),
+ NULL, LC_EDIT_MOVEXY_SNAP_9, NULL);
+ menu_separator(menu);
+ item = gtk_menu_item_new_with_label("Z Snap");
+ gtk_widget_set_sensitive(item, FALSE);
+ gtk_menu_append(menu, item);
+ create_menu_item(menu, "None", NULL, GTK_SIGNAL_FUNC(OnCommandDirect),
+ NULL, LC_EDIT_MOVEZ_SNAP_0, NULL);
+ create_menu_item(menu, "1/20 Stud", NULL, GTK_SIGNAL_FUNC(OnCommandDirect),
+ NULL, LC_EDIT_MOVEZ_SNAP_1, NULL);
+ create_menu_item(menu, "1/4 Stud", NULL, GTK_SIGNAL_FUNC(OnCommandDirect),
+ NULL, LC_EDIT_MOVEZ_SNAP_2, NULL);
+ create_menu_item(menu, "1 Flat", NULL, GTK_SIGNAL_FUNC(OnCommandDirect),
+ NULL, LC_EDIT_MOVEZ_SNAP_3, NULL);
+ create_menu_item(menu, "1/2 Stud", NULL, GTK_SIGNAL_FUNC(OnCommandDirect),
+ NULL, LC_EDIT_MOVEZ_SNAP_4, NULL);
+ create_menu_item(menu, "1 Stud", NULL, GTK_SIGNAL_FUNC(OnCommandDirect),
+ NULL, LC_EDIT_MOVEZ_SNAP_5, NULL);
+ create_menu_item(menu, "1 Brick", NULL, GTK_SIGNAL_FUNC(OnCommandDirect),
+ NULL, LC_EDIT_MOVEZ_SNAP_6, NULL);
+ create_menu_item(menu, "2 Bricks", NULL, GTK_SIGNAL_FUNC(OnCommandDirect),
+ NULL, LC_EDIT_MOVEZ_SNAP_7, NULL);
+ create_menu_item(menu, "4 Bricks", NULL, GTK_SIGNAL_FUNC(OnCommandDirect),
+ NULL, LC_EDIT_MOVEZ_SNAP_8, NULL);
+ create_menu_item(menu, "8 Bricks", NULL, GTK_SIGNAL_FUNC(OnCommandDirect),
+ NULL, LC_EDIT_MOVEZ_SNAP_9, NULL);
+ gtk_widget_show_all(menu);
+ gtk_signal_connect(GTK_OBJECT(ebox_snap), "button_press_event",
+ GTK_SIGNAL_FUNC(statusbar_popup), menu);
}