summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorleo2011-09-01 19:04:17 +0000
committerleo2011-09-01 19:04:17 +0000
commit3b0e7077ffacb03cb2c75ff552637ce1a7154b9c (patch)
treed9cd90ff45565226704aaad66408e34732e6841d
parentc0c37e54a521b8d8da8d1d3c07451e483e41491f (diff)
Linux GUI patches by Nicolas Schodet:
Fixed select none menu entry. Fixed snap settings display. Updated interface at startup. Do not force statusbar item size. Removed toolbar borders. Added snap move menu. git-svn-id: http://svn.leocad.org/branches/leocad-0.75@982 c7d43263-9d01-0410-8a33-9dba5d9f93d6
-rw-r--r--linux/main.cpp1
-rw-r--r--linux/system.cpp19
-rw-r--r--linux/toolbar.cpp93
3 files changed, 95 insertions, 18 deletions
diff --git a/linux/main.cpp b/linux/main.cpp
index 7720d92..c0c8a74 100644
--- a/linux/main.cpp
+++ b/linux/main.cpp
@@ -659,6 +659,7 @@ int main (int argc, char* argv[])
#include "pixmaps/icon32.xpm"
+ lcGetActiveProject()->UpdateInterface();
main_window->UpdateMRU ();
GdkPixmap *gdkpixmap;
diff --git a/linux/system.cpp b/linux/system.cpp
index cdf9921..b4f726e 100644
--- a/linux/system.cpp
+++ b/linux/system.cpp
@@ -15,6 +15,7 @@
#include "toolbar.h"
#include "dialogs.h"
#include "globals.h"
+#include "lc_application.h"
// =============================================================================
// Cursor functions
@@ -487,16 +488,16 @@ void SystemUpdateAnimation(bool bAnimation, bool bAddKeys)
void SystemUpdateSnap(unsigned short move_snap, unsigned short RotateSnap)
{
- if (!label_snap)
- return;
+ if (!label_snap)
+ return;
- char text[11];
- if (move_snap)
- sprintf (text, "Move x%i", move_snap);
- else
- strcpy (text, "Move /2");
+ char Text[256], xy[32], z[32];
- gtk_label_set (GTK_LABEL (label_snap), text);
+ lcGetActiveProject()->GetSnapDistanceText(xy, z);
+
+ sprintf(Text, " M: %s %s R: %d ", xy, z, RotateSnap);
+
+ gtk_label_set (GTK_LABEL (label_snap), Text);
}
void SystemUpdateSelected(unsigned long flags, int SelectedCount, Object* Focus)
@@ -511,7 +512,7 @@ void SystemUpdateSelected(unsigned long flags, int SelectedCount, Object* Focus)
gtk_widget_set_sensitive (item, (flags & LC_SEL_UNSELECTED) != 0);
item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (((GtkWidget*)(*main_window))), "menu_edit_select_none"));
- gtk_widget_set_sensitive (item, flags & (LC_SEL_PIECE|LC_SEL_CAMERA|LC_SEL_LIGHT) != 0);
+ gtk_widget_set_sensitive (item, (flags & (LC_SEL_PIECE|LC_SEL_CAMERA|LC_SEL_LIGHT)) != 0);
item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (((GtkWidget*)(*main_window))), "menu_edit_select_invert"));
gtk_widget_set_sensitive (item, (flags & LC_SEL_NO_PIECES) == 0);
item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (((GtkWidget*)(*main_window))), "menu_edit_select_byname"));
diff --git a/linux/toolbar.cpp b/linux/toolbar.cpp
index 431fffb..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
@@ -89,7 +90,6 @@ void create_toolbars(GtkWidget *window, GtkWidget *vbox)
gtk_container_add (GTK_CONTAINER (main_toolbar.handle_box), main_toolbar.toolbar);
gtk_widget_show (main_toolbar.toolbar);
- gtk_container_border_width (GTK_CONTAINER (main_toolbar.toolbar), 2);
// gtk_toolbar_set_button_relief (GTK_TOOLBAR (main_toolbar.toolbar), GTK_RELIEF_NONE);
// gtk_toolbar_set_space_style (GTK_TOOLBAR (main_toolbar.toolbar), GTK_TOOLBAR_SPACE_LINE);
// gtk_toolbar_set_space_size (GTK_TOOLBAR (main_toolbar.toolbar), 10);
@@ -151,7 +151,6 @@ void create_toolbars(GtkWidget *window, GtkWidget *vbox)
gtk_container_add (GTK_CONTAINER (tool_toolbar.handle_box), tool_toolbar.toolbar);
gtk_widget_show (tool_toolbar.toolbar);
- gtk_container_border_width (GTK_CONTAINER (tool_toolbar.toolbar), 2);
// gtk_toolbar_set_button_relief (GTK_TOOLBAR (tool_toolbar.toolbar), GTK_RELIEF_NONE);
tool_toolbar.brick = button = gtk_toolbar_append_element (GTK_TOOLBAR (tool_toolbar.toolbar),
@@ -216,7 +215,6 @@ void create_toolbars(GtkWidget *window, GtkWidget *vbox)
gtk_container_add (GTK_CONTAINER (anim_toolbar.handle_box), anim_toolbar.toolbar);
gtk_widget_show (anim_toolbar.toolbar);
- gtk_container_border_width (GTK_CONTAINER (anim_toolbar.toolbar), 2);
// gtk_toolbar_set_button_relief (GTK_TOOLBAR (anim_toolbar.toolbar), GTK_RELIEF_NONE);
anim_toolbar.first = gtk_toolbar_append_item (GTK_TOOLBAR (anim_toolbar.toolbar),
@@ -821,13 +819,35 @@ 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);
- gtk_widget_set_usize (hbox, -1, 24);
gtk_container_border_width (GTK_CONTAINER (hbox), 1);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 2);
@@ -851,7 +871,6 @@ void create_statusbar(GtkWidget *window, GtkWidget *vbox)
gtk_widget_show (frame);
gtk_box_pack_start (GTK_BOX (hbox), frame, FALSE, TRUE, 0);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
- gtk_widget_set_usize (frame, 150, -1);
hbox1 = gtk_hbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (frame), hbox1);
@@ -866,22 +885,24 @@ void create_statusbar(GtkWidget *window, GtkWidget *vbox)
gtk_widget_show (frame);
gtk_box_pack_start (GTK_BOX (hbox), frame, FALSE, TRUE, 0);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
- gtk_widget_set_usize (frame, 70, -1);
hbox1 = gtk_hbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (frame), hbox1);
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);
gtk_box_pack_start (GTK_BOX (hbox), frame, FALSE, TRUE, 0);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
- gtk_widget_set_usize (frame, 70, -1);
hbox1 = gtk_hbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (frame), hbox1);
@@ -893,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);
}