From 7f008cb2f657420416aef950a1576e1162c89fa4 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Sun, 9 Oct 2016 03:19:42 +0200 Subject: Added widget to to rotate (bzr r15142.1.7) --- src/widgets/desktop-widget.cpp | 46 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 3 deletions(-) (limited to 'src/widgets/desktop-widget.cpp') diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 55dc82dc0..df943b241 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -54,7 +54,7 @@ #include "ui/uxmanager.h" #include "util/ege-appear-time-tracker.h" #include "sp-root.h" - +#include "attributes.h" // We're in the "widgets" directory, so no need to explicitly prefix these: #include "button.h" #include "gimp/ruler.h" @@ -105,6 +105,7 @@ static void sp_update_guides_lock( GtkWidget *button, gpointer data ); static void cms_adjust_toggled( GtkWidget *button, gpointer data ); #endif // defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2) static void cms_adjust_set_sensitive( SPDesktopWidget *dtw, bool enabled ); +static void sp_desktop_widget_rotate_document(GtkWidget *widget, GdkEvent *eventdtw, SPDesktopWidget *dtw); static void sp_desktop_widget_adjustment_value_changed (GtkAdjustment *adj, SPDesktopWidget *dtw); static gdouble sp_dtw_zoom_value_to_display (gdouble value); @@ -1430,6 +1431,12 @@ void SPDesktopWidget::layoutWidgets() } else { gtk_widget_show_all (dtw->menubar); } + + if (!prefs->getBool(pref_root + "menu/state", true)) { + gtk_widget_hide (dtw->rotatebar); + } else { + gtk_widget_show_all (dtw->rotatebar); + } if (!prefs->getBool(pref_root + "commands/state", true)) { gtk_widget_hide (dtw->commands_toolbox); @@ -1636,8 +1643,25 @@ SPDesktopWidget* SPDesktopWidget::createInstance(SPNamedView *namedview) dtw->menubar = sp_ui_main_menubar (dtw->desktop); gtk_widget_set_name(dtw->menubar, "MenuBar"); gtk_widget_show_all (dtw->menubar); - gtk_box_pack_start (GTK_BOX (dtw->vbox), dtw->menubar, FALSE, FALSE, 0); - + SPNamedView *nv = dtw->desktop->namedview; + dtw->rotatebar = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL,0.0,360.0,45.0); + gtk_range_set_value(GTK_RANGE (dtw->rotatebar), nv->document_rotation); + gtk_widget_set_name(dtw->rotatebar, "RotateBar"); + gtk_widget_show_all (dtw->rotatebar); + GtkWidget * containermenu = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); + gtk_widget_show_all (containermenu); + GtkWidget * separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL); + gtk_widget_show_all(separator); + GtkWidget * label = gtk_label_new (_("Rotation")); + gtk_widget_show_all(label); + gtk_box_pack_start (GTK_BOX (containermenu), dtw->menubar, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (containermenu), separator, FALSE, FALSE, 10); + gtk_box_pack_start (GTK_BOX (containermenu), dtw->rotatebar, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (containermenu), label, FALSE, FALSE, 10); + gtk_box_pack_start (GTK_BOX (dtw->vbox), containermenu, TRUE, TRUE, 0); + g_signal_connect (G_OBJECT (dtw->rotatebar), "button-release-event", G_CALLBACK (sp_desktop_widget_rotate_document), dtw); + g_signal_connect (G_OBJECT (dtw->rotatebar), "key-release-event", G_CALLBACK (sp_desktop_widget_rotate_document), dtw); + dtw->layoutWidgets(); std::vector toolboxes; @@ -1729,6 +1753,22 @@ void SPDesktopWidget::namedviewModified(SPObject *obj, guint flags) } } +static void +sp_desktop_widget_rotate_document(GtkWidget *widget, GdkEvent *event, SPDesktopWidget *dtw) +{ + SPNamedView *nv = dtw->desktop->namedview; + double value = gtk_range_get_value(GTK_RANGE(widget)); + if (value != nv->document_rotation) { + sp_repr_set_svg_double(nv->getRepr(), "inkscape:document-rotation", value); + SPObject *updated = nv->document->getObjectByRepr(nv->getRepr()); + if (updated) { + updated->updateRepr(); + } + reinterpret_cast(dtw->desktop->currentLayer())->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + } +} + + static void sp_desktop_widget_adjustment_value_changed (GtkAdjustment */*adj*/, SPDesktopWidget *dtw) { -- cgit v1.2.3 From c7f5c676fa15f59f5f78c934263539981a26bbd2 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Mon, 10 Oct 2016 14:08:35 +0200 Subject: Fix some canvas problems and refactorization (bzr r15142.1.8) --- src/widgets/desktop-widget.cpp | 41 ++++++++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 11 deletions(-) (limited to 'src/widgets/desktop-widget.cpp') diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index df943b241..f648d8430 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -1645,7 +1645,6 @@ SPDesktopWidget* SPDesktopWidget::createInstance(SPNamedView *namedview) gtk_widget_show_all (dtw->menubar); SPNamedView *nv = dtw->desktop->namedview; dtw->rotatebar = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL,0.0,360.0,45.0); - gtk_range_set_value(GTK_RANGE (dtw->rotatebar), nv->document_rotation); gtk_widget_set_name(dtw->rotatebar, "RotateBar"); gtk_widget_show_all (dtw->rotatebar); GtkWidget * containermenu = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); @@ -1661,7 +1660,11 @@ SPDesktopWidget* SPDesktopWidget::createInstance(SPNamedView *namedview) gtk_box_pack_start (GTK_BOX (dtw->vbox), containermenu, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (dtw->rotatebar), "button-release-event", G_CALLBACK (sp_desktop_widget_rotate_document), dtw); g_signal_connect (G_OBJECT (dtw->rotatebar), "key-release-event", G_CALLBACK (sp_desktop_widget_rotate_document), dtw); - + gtk_range_set_value(GTK_RANGE (dtw->rotatebar), nv->document_rotation); + //TODO: Find a better way to refresh the widget + gtk_widget_set_visible (dtw->rotatebar,false); + gtk_widget_set_visible (dtw->rotatebar,true); + sp_namedview_set_document_rotation(nv); dtw->layoutWidgets(); std::vector toolboxes; @@ -1703,7 +1706,11 @@ sp_desktop_widget_update_rulers (SPDesktopWidget *dtw) void SPDesktopWidget::namedviewModified(SPObject *obj, guint flags) { SPNamedView *nv=SP_NAMEDVIEW(obj); - + gtk_range_set_value(GTK_RANGE(this->rotatebar), desktop->namedview->document_rotation); + sp_namedview_set_document_rotation(nv); + //TODO: Find a better way to refresh the widget + gtk_widget_set_visible (this->rotatebar,false); + gtk_widget_set_visible (this->rotatebar,true); if (flags & SP_OBJECT_MODIFIED_FLAG) { this->dt2r = 1. / nv->display_units->factor; this->ruler_origin = Geom::Point(0,0); //nv->gridorigin; Why was the grid origin used here? @@ -1756,15 +1763,27 @@ void SPDesktopWidget::namedviewModified(SPObject *obj, guint flags) static void sp_desktop_widget_rotate_document(GtkWidget *widget, GdkEvent *event, SPDesktopWidget *dtw) { - SPNamedView *nv = dtw->desktop->namedview; - double value = gtk_range_get_value(GTK_RANGE(widget)); - if (value != nv->document_rotation) { - sp_repr_set_svg_double(nv->getRepr(), "inkscape:document-rotation", value); - SPObject *updated = nv->document->getObjectByRepr(nv->getRepr()); - if (updated) { - updated->updateRepr(); + if (event->type == GDK_BUTTON_RELEASE || + event->key.keyval == GDK_KEY_Page_Down || + event->key.keyval == GDK_KEY_Page_Up || + event->key.keyval == GDK_KEY_End || + event->key.keyval == GDK_KEY_Begin || + event->key.keyval == GDK_KEY_Up || + event->key.keyval == GDK_KEY_Down || + event->key.keyval == GDK_KEY_Left || + event->key.keyval == GDK_KEY_Right) + { + SPNamedView *nv = dtw->desktop->namedview; + double value = gtk_range_get_value(GTK_RANGE(widget)); + if (value != nv->document_rotation) { + nv->document_rotation = value; + sp_repr_set_svg_double(nv->getRepr(), "inkscape:document-rotation", value); + SPObject *updated = SP_OBJECT(nv); + if (updated) { + updated->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + } + gtk_widget_grab_focus(dtw->rotatebar); } - reinterpret_cast(dtw->desktop->currentLayer())->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); } } -- cgit v1.2.3 From 4b43aeadc203a33bc854bcc40d986b0d1ff5f4f8 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Fri, 14 Oct 2016 22:24:30 +0200 Subject: Working with rotate widget (bzr r15142.1.11) --- src/widgets/desktop-widget.cpp | 93 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 91 insertions(+), 2 deletions(-) (limited to 'src/widgets/desktop-widget.cpp') diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index f648d8430..6d07cbfd3 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -113,6 +113,17 @@ static gdouble sp_dtw_zoom_display_to_value (gdouble value); static gint sp_dtw_zoom_input (GtkSpinButton *spin, gdouble *new_val, gpointer data); static bool sp_dtw_zoom_output (GtkSpinButton *spin, gpointer data); static void sp_dtw_zoom_value_changed (GtkSpinButton *spin, gpointer data); +static void sp_dtw_rotate_populate_popup (GtkEntry *entry, GtkMenu *menu, gpointer data); +//static void sp_dtw_rotate_menu_handler (SPDesktop *dt, gdouble factor); +//static void sp_dtw_rotate_minus_135 (GtkMenuItem *item, gpointer data); +//static void sp_dtw_rotate_minus_90 (GtkMenuItem *item, gpointer data); +//static void sp_dtw_rotate_minus_45 (GtkMenuItem *item, gpointer data); +//static void sp_dtw_rotate_0 (GtkMenuItem *item, gpointer data); +//static void sp_dtw_rotate_45 (GtkMenuItem *item, gpointer data); +//static void sp_dtw_rotate_90 (GtkMenuItem *item, gpointer data); +//static void sp_dtw_rotate_135 (GtkMenuItem *item, gpointer data); +//static void sp_dtw_rotate_180 (GtkMenuItem *item, gpointer data); + static void sp_dtw_zoom_populate_popup (GtkEntry *entry, GtkMenu *menu, gpointer data); static void sp_dtw_zoom_menu_handler (SPDesktop *dt, gdouble factor); static void sp_dtw_zoom_50 (GtkMenuItem *item, gpointer data); @@ -601,6 +612,20 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw ) g_signal_connect (G_OBJECT (dtw->zoom_status), "key-press-event", G_CALLBACK (spinbutton_keypress), dtw->zoom_status); dtw->zoom_update = g_signal_connect (G_OBJECT (dtw->zoom_status), "value_changed", G_CALLBACK (sp_dtw_zoom_value_changed), dtw); dtw->zoom_update = g_signal_connect (G_OBJECT (dtw->zoom_status), "populate_popup", G_CALLBACK (sp_dtw_zoom_populate_popup), dtw); + + // Rotate status spinbutton + dtw->rotation_status = gtk_spin_button_new_with_range (-180,180, 1.0); + gtk_widget_set_name(dtw->rotation_status, "RotationStatus"); + gtk_widget_set_tooltip_text (dtw->rotation_status, _("Rotation")); + gtk_widget_set_size_request (dtw->rotation_status, STATUS_ROTATION_WIDTH, -1); + gtk_entry_set_width_chars (GTK_ENTRY (dtw->rotation_status), 6); + gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (dtw->rotation_status), FALSE); + gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (dtw->rotation_status), GTK_UPDATE_ALWAYS); + g_object_set_data (G_OBJECT (dtw->rotation_status), "dtw", dtw->canvas); + g_signal_connect (G_OBJECT (dtw->rotation_status), "focus-in-event", G_CALLBACK (spinbutton_focus_in), dtw->rotation_status); + g_signal_connect (G_OBJECT (dtw->rotation_status), "key-press-event", G_CALLBACK (spinbutton_keypress), dtw->rotation_status); + dtw->zoom_update = g_signal_connect (G_OBJECT (dtw->rotation_status), "value_changed", G_CALLBACK (sp_desktop_widget_rotate_document), dtw); + dtw->zoom_update = g_signal_connect (G_OBJECT (dtw->rotation_status), "populate_popup", G_CALLBACK (sp_dtw_rotate_populate_popup), dtw); // Cursor coordinates dtw->coord_status = gtk_grid_new(); @@ -627,12 +652,16 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw ) auto label_z = gtk_label_new(_("Z:")); gtk_widget_set_name(label_z, "ZLabel"); + auto label_r = gtk_label_new(_("R:")); + gtk_widget_set_name(label_r, "RLabel"); gtk_widget_set_halign(dtw->coord_status_x, GTK_ALIGN_END); gtk_widget_set_halign(dtw->coord_status_y, GTK_ALIGN_END); gtk_grid_attach(GTK_GRID(dtw->coord_status), dtw->coord_status_x, 2, 0, 1, 1); gtk_grid_attach(GTK_GRID(dtw->coord_status), dtw->coord_status_y, 2, 1, 1, 1); - gtk_grid_attach(GTK_GRID(dtw->coord_status), label_z, 3, 0, 1, 2); - gtk_grid_attach(GTK_GRID(dtw->coord_status), dtw->zoom_status, 4, 0, 1, 2); + gtk_grid_attach(GTK_GRID(dtw->coord_status), label_z, 3, 0, 1, 1); + gtk_grid_attach(GTK_GRID(dtw->coord_status), label_r, 3, 1, 1, 1); + gtk_grid_attach(GTK_GRID(dtw->coord_status), dtw->zoom_status, 4, 0, 1, 1); + gtk_grid_attach(GTK_GRID(dtw->coord_status), dtw->rotation_status, 4, 1, 1, 1); sp_set_font_size_smaller (dtw->coord_status); @@ -700,6 +729,9 @@ static void sp_desktop_widget_dispose(GObject *object) g_signal_handlers_disconnect_matched (G_OBJECT (dtw->zoom_status), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, dtw->zoom_status); g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->zoom_status), (gpointer) G_CALLBACK (sp_dtw_zoom_value_changed), dtw); g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->zoom_status), (gpointer) G_CALLBACK (sp_dtw_zoom_populate_popup), dtw); + g_signal_handlers_disconnect_matched (G_OBJECT (dtw->rotation_status), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, dtw->rotation_status); + g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->rotation_status), (gpointer) G_CALLBACK (sp_desktop_widget_rotate_document), dtw); + g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->rotation_status), (gpointer) G_CALLBACK (sp_dtw_zoom_populate_popup), dtw); g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->canvas), (gpointer) G_CALLBACK (sp_desktop_widget_event), dtw); g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->canvas_tbl), (gpointer) G_CALLBACK (canvas_tbl_size_allocate), dtw); @@ -2006,6 +2038,63 @@ sp_dtw_zoom_populate_popup (GtkEntry */*entry*/, GtkMenu *menu, gpointer data) gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); } + +static void +sp_dtw_rotate_populate_popup (GtkEntry */*entry*/, GtkMenu *menu, gpointer data) +{ + GList *children, *iter; + GtkWidget *item; + SPDesktop *dt = SP_DESKTOP_WIDGET (data)->desktop; + + children = gtk_container_get_children (GTK_CONTAINER (menu)); + for ( iter = children ; iter ; iter = g_list_next (iter)) { + gtk_container_remove (GTK_CONTAINER (menu), GTK_WIDGET (iter->data)); + } + g_list_free (children); + + item = gtk_menu_item_new_with_label ("-180º"); +// g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_minus_180), dt); + gtk_widget_show (item); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + item = gtk_menu_item_new_with_label ("-135º"); +// g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_minus_135), dt); + gtk_widget_show (item); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + item = gtk_menu_item_new_with_label ("-90º"); +// g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_minus_90), dt); + gtk_widget_show (item); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + item = gtk_menu_item_new_with_label ("-45º"); +// g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_minus_45), dt); + gtk_widget_show (item); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + item = gtk_menu_item_new_with_label ("0º"); +// g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_0), dt); + gtk_widget_show (item); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + item = gtk_menu_item_new_with_label ("45º"); +// g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_45), dt); + gtk_widget_show (item); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + + item = gtk_menu_item_new_with_label ("90º"); +// g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_90), dt); + gtk_widget_show (item); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + + item = gtk_menu_item_new_with_label ("135º"); +// g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_135), dt); + gtk_widget_show (item); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); +} + static void sp_dtw_zoom_menu_handler (SPDesktop *dt, gdouble factor) { -- cgit v1.2.3 From c57802d04d26ecf8618ffe8f1f9a90c79d36ed92 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Sat, 15 Oct 2016 01:48:35 +0200 Subject: Change from slider to spin (bzr r15142.1.13) --- src/widgets/desktop-widget.cpp | 166 +++++++++++++++++++++-------------------- 1 file changed, 87 insertions(+), 79 deletions(-) (limited to 'src/widgets/desktop-widget.cpp') diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 6d07cbfd3..f8ba25191 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -105,7 +105,7 @@ static void sp_update_guides_lock( GtkWidget *button, gpointer data ); static void cms_adjust_toggled( GtkWidget *button, gpointer data ); #endif // defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2) static void cms_adjust_set_sensitive( SPDesktopWidget *dtw, bool enabled ); -static void sp_desktop_widget_rotate_document(GtkWidget *widget, GdkEvent *eventdtw, SPDesktopWidget *dtw); +static void sp_desktop_widget_rotate_document(GtkSpinButton *spin, SPDesktopWidget *dtw); static void sp_desktop_widget_adjustment_value_changed (GtkAdjustment *adj, SPDesktopWidget *dtw); static gdouble sp_dtw_zoom_value_to_display (gdouble value); @@ -113,16 +113,15 @@ static gdouble sp_dtw_zoom_display_to_value (gdouble value); static gint sp_dtw_zoom_input (GtkSpinButton *spin, gdouble *new_val, gpointer data); static bool sp_dtw_zoom_output (GtkSpinButton *spin, gpointer data); static void sp_dtw_zoom_value_changed (GtkSpinButton *spin, gpointer data); -static void sp_dtw_rotate_populate_popup (GtkEntry *entry, GtkMenu *menu, gpointer data); -//static void sp_dtw_rotate_menu_handler (SPDesktop *dt, gdouble factor); -//static void sp_dtw_rotate_minus_135 (GtkMenuItem *item, gpointer data); -//static void sp_dtw_rotate_minus_90 (GtkMenuItem *item, gpointer data); -//static void sp_dtw_rotate_minus_45 (GtkMenuItem *item, gpointer data); -//static void sp_dtw_rotate_0 (GtkMenuItem *item, gpointer data); -//static void sp_dtw_rotate_45 (GtkMenuItem *item, gpointer data); -//static void sp_dtw_rotate_90 (GtkMenuItem *item, gpointer data); -//static void sp_dtw_rotate_135 (GtkMenuItem *item, gpointer data); -//static void sp_dtw_rotate_180 (GtkMenuItem *item, gpointer data); +static void sp_dtw_rotation_populate_popup (GtkEntry *entry, GtkMenu *menu, gpointer data); +static void sp_dtw_rotate_minus_180 (GtkMenuItem *item, SPDesktopWidget * data); +static void sp_dtw_rotate_minus_135 (GtkMenuItem *item, SPDesktopWidget * data); +static void sp_dtw_rotate_minus_90 (GtkMenuItem *item, SPDesktopWidget * data); +static void sp_dtw_rotate_minus_45 (GtkMenuItem *item, SPDesktopWidget * data); +static void sp_dtw_rotate_0 (GtkMenuItem *item, SPDesktopWidget * data); +static void sp_dtw_rotate_45 (GtkMenuItem *item, SPDesktopWidget * data); +static void sp_dtw_rotate_90 (GtkMenuItem *item, SPDesktopWidget * data); +static void sp_dtw_rotate_135 (GtkMenuItem *item, SPDesktopWidget * data); static void sp_dtw_zoom_populate_popup (GtkEntry *entry, GtkMenu *menu, gpointer data); static void sp_dtw_zoom_menu_handler (SPDesktop *dt, gdouble factor); @@ -624,8 +623,8 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw ) g_object_set_data (G_OBJECT (dtw->rotation_status), "dtw", dtw->canvas); g_signal_connect (G_OBJECT (dtw->rotation_status), "focus-in-event", G_CALLBACK (spinbutton_focus_in), dtw->rotation_status); g_signal_connect (G_OBJECT (dtw->rotation_status), "key-press-event", G_CALLBACK (spinbutton_keypress), dtw->rotation_status); - dtw->zoom_update = g_signal_connect (G_OBJECT (dtw->rotation_status), "value_changed", G_CALLBACK (sp_desktop_widget_rotate_document), dtw); - dtw->zoom_update = g_signal_connect (G_OBJECT (dtw->rotation_status), "populate_popup", G_CALLBACK (sp_dtw_rotate_populate_popup), dtw); + dtw->rotation_update = g_signal_connect (G_OBJECT (dtw->rotation_status), "value_changed", G_CALLBACK (sp_desktop_widget_rotate_document), dtw); + dtw->rotation_update = g_signal_connect (G_OBJECT (dtw->rotation_status), "populate_popup", G_CALLBACK (sp_dtw_rotation_populate_popup), dtw); // Cursor coordinates dtw->coord_status = gtk_grid_new(); @@ -731,7 +730,7 @@ static void sp_desktop_widget_dispose(GObject *object) g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->zoom_status), (gpointer) G_CALLBACK (sp_dtw_zoom_populate_popup), dtw); g_signal_handlers_disconnect_matched (G_OBJECT (dtw->rotation_status), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, dtw->rotation_status); g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->rotation_status), (gpointer) G_CALLBACK (sp_desktop_widget_rotate_document), dtw); - g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->rotation_status), (gpointer) G_CALLBACK (sp_dtw_zoom_populate_popup), dtw); + g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->rotation_status), (gpointer) G_CALLBACK (sp_dtw_rotation_populate_popup), dtw); g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->canvas), (gpointer) G_CALLBACK (sp_desktop_widget_event), dtw); g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->canvas_tbl), (gpointer) G_CALLBACK (canvas_tbl_size_allocate), dtw); @@ -1464,12 +1463,6 @@ void SPDesktopWidget::layoutWidgets() gtk_widget_show_all (dtw->menubar); } - if (!prefs->getBool(pref_root + "menu/state", true)) { - gtk_widget_hide (dtw->rotatebar); - } else { - gtk_widget_show_all (dtw->rotatebar); - } - if (!prefs->getBool(pref_root + "commands/state", true)) { gtk_widget_hide (dtw->commands_toolbox); } else { @@ -1676,29 +1669,10 @@ SPDesktopWidget* SPDesktopWidget::createInstance(SPNamedView *namedview) gtk_widget_set_name(dtw->menubar, "MenuBar"); gtk_widget_show_all (dtw->menubar); SPNamedView *nv = dtw->desktop->namedview; - dtw->rotatebar = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL,0.0,360.0,45.0); - gtk_widget_set_name(dtw->rotatebar, "RotateBar"); - gtk_widget_show_all (dtw->rotatebar); - GtkWidget * containermenu = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); - gtk_widget_show_all (containermenu); - GtkWidget * separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL); - gtk_widget_show_all(separator); - GtkWidget * label = gtk_label_new (_("Rotation")); - gtk_widget_show_all(label); - gtk_box_pack_start (GTK_BOX (containermenu), dtw->menubar, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (containermenu), separator, FALSE, FALSE, 10); - gtk_box_pack_start (GTK_BOX (containermenu), dtw->rotatebar, TRUE, TRUE, 0); - gtk_box_pack_start (GTK_BOX (containermenu), label, FALSE, FALSE, 10); - gtk_box_pack_start (GTK_BOX (dtw->vbox), containermenu, TRUE, TRUE, 0); - g_signal_connect (G_OBJECT (dtw->rotatebar), "button-release-event", G_CALLBACK (sp_desktop_widget_rotate_document), dtw); - g_signal_connect (G_OBJECT (dtw->rotatebar), "key-release-event", G_CALLBACK (sp_desktop_widget_rotate_document), dtw); - gtk_range_set_value(GTK_RANGE (dtw->rotatebar), nv->document_rotation); - //TODO: Find a better way to refresh the widget - gtk_widget_set_visible (dtw->rotatebar,false); - gtk_widget_set_visible (dtw->rotatebar,true); - sp_namedview_set_document_rotation(nv); + gtk_box_pack_start (GTK_BOX (dtw->vbox), dtw->menubar, TRUE, TRUE, 0); dtw->layoutWidgets(); - + gtk_spin_button_set_value(GTK_SPIN_BUTTON (dtw->rotation_status), namedview->document_rotation); + sp_namedview_set_document_rotation(namedview); std::vector toolboxes; toolboxes.push_back(dtw->tool_toolbox); toolboxes.push_back(dtw->aux_toolbox); @@ -1738,11 +1712,9 @@ sp_desktop_widget_update_rulers (SPDesktopWidget *dtw) void SPDesktopWidget::namedviewModified(SPObject *obj, guint flags) { SPNamedView *nv=SP_NAMEDVIEW(obj); - gtk_range_set_value(GTK_RANGE(this->rotatebar), desktop->namedview->document_rotation); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(this->rotation_status), desktop->namedview->document_rotation); sp_namedview_set_document_rotation(nv); - //TODO: Find a better way to refresh the widget - gtk_widget_set_visible (this->rotatebar,false); - gtk_widget_set_visible (this->rotatebar,true); + if (flags & SP_OBJECT_MODIFIED_FLAG) { this->dt2r = 1. / nv->display_units->factor; this->ruler_origin = Geom::Point(0,0); //nv->gridorigin; Why was the grid origin used here? @@ -1793,30 +1765,19 @@ void SPDesktopWidget::namedviewModified(SPObject *obj, guint flags) } static void -sp_desktop_widget_rotate_document(GtkWidget *widget, GdkEvent *event, SPDesktopWidget *dtw) -{ - if (event->type == GDK_BUTTON_RELEASE || - event->key.keyval == GDK_KEY_Page_Down || - event->key.keyval == GDK_KEY_Page_Up || - event->key.keyval == GDK_KEY_End || - event->key.keyval == GDK_KEY_Begin || - event->key.keyval == GDK_KEY_Up || - event->key.keyval == GDK_KEY_Down || - event->key.keyval == GDK_KEY_Left || - event->key.keyval == GDK_KEY_Right) - { - SPNamedView *nv = dtw->desktop->namedview; - double value = gtk_range_get_value(GTK_RANGE(widget)); - if (value != nv->document_rotation) { - nv->document_rotation = value; - sp_repr_set_svg_double(nv->getRepr(), "inkscape:document-rotation", value); - SPObject *updated = SP_OBJECT(nv); - if (updated) { - updated->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); - } - gtk_widget_grab_focus(dtw->rotatebar); +sp_desktop_widget_rotate_document(GtkSpinButton *spin, SPDesktopWidget *dtw) +{ + SPNamedView *nv = dtw->desktop->namedview; + double value = gtk_spin_button_get_value (spin); + if (!dtw->desktop->getDocument()->getRoot()->rotated && value != nv->document_rotation) { + nv->document_rotation = value; + sp_repr_set_svg_double(nv->getRepr(), "inkscape:document-rotation", value); + SPObject *updated = SP_OBJECT(nv); + if (updated) { + updated->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); } } + spinbutton_defocus (GTK_WIDGET(spin)); } @@ -2040,12 +2001,11 @@ sp_dtw_zoom_populate_popup (GtkEntry */*entry*/, GtkMenu *menu, gpointer data) static void -sp_dtw_rotate_populate_popup (GtkEntry */*entry*/, GtkMenu *menu, gpointer data) +sp_dtw_rotation_populate_popup (GtkEntry */*entry*/, GtkMenu *menu, gpointer data) { GList *children, *iter; GtkWidget *item; - SPDesktop *dt = SP_DESKTOP_WIDGET (data)->desktop; - + SPDesktopWidget *dtw = static_cast(data); children = gtk_container_get_children (GTK_CONTAINER (menu)); for ( iter = children ; iter ; iter = g_list_next (iter)) { gtk_container_remove (GTK_CONTAINER (menu), GTK_WIDGET (iter->data)); @@ -2053,48 +2013,96 @@ sp_dtw_rotate_populate_popup (GtkEntry */*entry*/, GtkMenu *menu, gpointer data) g_list_free (children); item = gtk_menu_item_new_with_label ("-180º"); -// g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_minus_180), dt); + g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_minus_180), dtw); gtk_widget_show (item); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); item = gtk_menu_item_new_with_label ("-135º"); -// g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_minus_135), dt); + g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_minus_135), dtw); gtk_widget_show (item); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); item = gtk_menu_item_new_with_label ("-90º"); -// g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_minus_90), dt); + g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_minus_90), dtw); gtk_widget_show (item); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); item = gtk_menu_item_new_with_label ("-45º"); -// g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_minus_45), dt); + g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_minus_45), dtw); gtk_widget_show (item); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); item = gtk_menu_item_new_with_label ("0º"); -// g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_0), dt); + g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_0), dtw); gtk_widget_show (item); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); item = gtk_menu_item_new_with_label ("45º"); -// g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_45), dt); + g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_45), dtw); gtk_widget_show (item); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); item = gtk_menu_item_new_with_label ("90º"); -// g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_90), dt); + g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_90), dtw); gtk_widget_show (item); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); item = gtk_menu_item_new_with_label ("135º"); -// g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_135), dt); + g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_dtw_rotate_135), dtw); gtk_widget_show (item); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); } +static void +sp_dtw_rotate_minus_180 (GtkMenuItem */*item*/, SPDesktopWidget * data) +{ + gtk_spin_button_set_value (GTK_SPIN_BUTTON((data)->rotation_status),-180); +} + +static void +sp_dtw_rotate_minus_135 (GtkMenuItem */*item*/, SPDesktopWidget * data) +{ + gtk_spin_button_set_value (GTK_SPIN_BUTTON((data)->rotation_status), -135); +} + +static void +sp_dtw_rotate_minus_90 (GtkMenuItem */*item*/, SPDesktopWidget * data) +{ + gtk_spin_button_set_value (GTK_SPIN_BUTTON((data)->rotation_status), -90); +} + +static void +sp_dtw_rotate_minus_45 (GtkMenuItem */*item*/, SPDesktopWidget * data) +{ + gtk_spin_button_set_value (GTK_SPIN_BUTTON((data)->rotation_status), -45); +} + +static void +sp_dtw_rotate_0 (GtkMenuItem */*item*/,SPDesktopWidget * data) +{ + gtk_spin_button_set_value (GTK_SPIN_BUTTON((data)->rotation_status), 0); +} + +static void +sp_dtw_rotate_45 (GtkMenuItem */*item*/, SPDesktopWidget * data) +{ + gtk_spin_button_set_value (GTK_SPIN_BUTTON((data)->rotation_status), 45); +} + +static void +sp_dtw_rotate_90 (GtkMenuItem */*item*/, SPDesktopWidget * data) +{ + gtk_spin_button_set_value (GTK_SPIN_BUTTON((data)->rotation_status), 90); +} + +static void +sp_dtw_rotate_135 (GtkMenuItem */*item*/, SPDesktopWidget * data) +{ + gtk_spin_button_set_value (GTK_SPIN_BUTTON((data)->rotation_status), 135); +} + static void sp_dtw_zoom_menu_handler (SPDesktop *dt, gdouble factor) { -- cgit v1.2.3 From 3aa73f0b577fd25f64e0414a5cbfa74c076f57be Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Sat, 15 Oct 2016 14:27:30 +0200 Subject: Reposition widget and add degree symbol (bzr r15142.1.14) --- src/widgets/desktop-widget.cpp | 60 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 49 insertions(+), 11 deletions(-) (limited to 'src/widgets/desktop-widget.cpp') diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index f8ba25191..16d71b4d2 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -108,11 +108,8 @@ static void cms_adjust_set_sensitive( SPDesktopWidget *dtw, bool enabled ); static void sp_desktop_widget_rotate_document(GtkSpinButton *spin, SPDesktopWidget *dtw); static void sp_desktop_widget_adjustment_value_changed (GtkAdjustment *adj, SPDesktopWidget *dtw); -static gdouble sp_dtw_zoom_value_to_display (gdouble value); -static gdouble sp_dtw_zoom_display_to_value (gdouble value); -static gint sp_dtw_zoom_input (GtkSpinButton *spin, gdouble *new_val, gpointer data); -static bool sp_dtw_zoom_output (GtkSpinButton *spin, gpointer data); -static void sp_dtw_zoom_value_changed (GtkSpinButton *spin, gpointer data); +static gint sp_dtw_rotation_input (GtkSpinButton *spin, gdouble *new_val, gpointer data); +static bool sp_dtw_rotation_output (GtkSpinButton *spin, gpointer data); static void sp_dtw_rotation_populate_popup (GtkEntry *entry, GtkMenu *menu, gpointer data); static void sp_dtw_rotate_minus_180 (GtkMenuItem *item, SPDesktopWidget * data); static void sp_dtw_rotate_minus_135 (GtkMenuItem *item, SPDesktopWidget * data); @@ -122,7 +119,11 @@ static void sp_dtw_rotate_0 (GtkMenuItem *item, SPDesktopWidget * data); static void sp_dtw_rotate_45 (GtkMenuItem *item, SPDesktopWidget * data); static void sp_dtw_rotate_90 (GtkMenuItem *item, SPDesktopWidget * data); static void sp_dtw_rotate_135 (GtkMenuItem *item, SPDesktopWidget * data); - +static gdouble sp_dtw_zoom_value_to_display (gdouble value); +static gdouble sp_dtw_zoom_display_to_value (gdouble value); +static gint sp_dtw_zoom_input (GtkSpinButton *spin, gdouble *new_val, gpointer data); +static bool sp_dtw_zoom_output (GtkSpinButton *spin, gpointer data); +static void sp_dtw_zoom_value_changed (GtkSpinButton *spin, gpointer data); static void sp_dtw_zoom_populate_popup (GtkEntry *entry, GtkMenu *menu, gpointer data); static void sp_dtw_zoom_menu_handler (SPDesktop *dt, gdouble factor); static void sp_dtw_zoom_50 (GtkMenuItem *item, gpointer data); @@ -611,21 +612,34 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw ) g_signal_connect (G_OBJECT (dtw->zoom_status), "key-press-event", G_CALLBACK (spinbutton_keypress), dtw->zoom_status); dtw->zoom_update = g_signal_connect (G_OBJECT (dtw->zoom_status), "value_changed", G_CALLBACK (sp_dtw_zoom_value_changed), dtw); dtw->zoom_update = g_signal_connect (G_OBJECT (dtw->zoom_status), "populate_popup", G_CALLBACK (sp_dtw_zoom_populate_popup), dtw); + auto css_provider_spinbutton = Gtk::CssProvider::create(); + css_provider_spinbutton->load_from_data("* { padding-left: 2; padding-right: 2; padding-top: 0; padding-bottom: 0;}"); + auto zoomstat = Glib::wrap(dtw->zoom_status); + zoomstat->set_name("ZoomStatus"); + auto context_zoom = zoomstat->get_style_context(); + context_zoom->add_provider(css_provider_spinbutton, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); // Rotate status spinbutton dtw->rotation_status = gtk_spin_button_new_with_range (-180,180, 1.0); - gtk_widget_set_name(dtw->rotation_status, "RotationStatus"); gtk_widget_set_tooltip_text (dtw->rotation_status, _("Rotation")); gtk_widget_set_size_request (dtw->rotation_status, STATUS_ROTATION_WIDTH, -1); gtk_entry_set_width_chars (GTK_ENTRY (dtw->rotation_status), 6); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (dtw->rotation_status), FALSE); gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (dtw->rotation_status), GTK_UPDATE_ALWAYS); + g_signal_connect (G_OBJECT (dtw->rotation_status), "input", G_CALLBACK (sp_dtw_rotation_input), dtw); + g_signal_connect (G_OBJECT (dtw->rotation_status), "output", G_CALLBACK (sp_dtw_rotation_output), dtw); g_object_set_data (G_OBJECT (dtw->rotation_status), "dtw", dtw->canvas); g_signal_connect (G_OBJECT (dtw->rotation_status), "focus-in-event", G_CALLBACK (spinbutton_focus_in), dtw->rotation_status); g_signal_connect (G_OBJECT (dtw->rotation_status), "key-press-event", G_CALLBACK (spinbutton_keypress), dtw->rotation_status); dtw->rotation_update = g_signal_connect (G_OBJECT (dtw->rotation_status), "value_changed", G_CALLBACK (sp_desktop_widget_rotate_document), dtw); dtw->rotation_update = g_signal_connect (G_OBJECT (dtw->rotation_status), "populate_popup", G_CALLBACK (sp_dtw_rotation_populate_popup), dtw); + auto rotstat = Glib::wrap(dtw->rotation_status); + rotstat->set_name("RotationStatus"); + auto context_rotation = rotstat->get_style_context(); + context_rotation->add_provider(css_provider_spinbutton, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + + // Cursor coordinates dtw->coord_status = gtk_grid_new(); gtk_widget_set_name(dtw->coord_status, "CoordinateAndZStatus"); @@ -657,10 +671,10 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw ) gtk_widget_set_halign(dtw->coord_status_y, GTK_ALIGN_END); gtk_grid_attach(GTK_GRID(dtw->coord_status), dtw->coord_status_x, 2, 0, 1, 1); gtk_grid_attach(GTK_GRID(dtw->coord_status), dtw->coord_status_y, 2, 1, 1, 1); - gtk_grid_attach(GTK_GRID(dtw->coord_status), label_z, 3, 0, 1, 1); - gtk_grid_attach(GTK_GRID(dtw->coord_status), label_r, 3, 1, 1, 1); - gtk_grid_attach(GTK_GRID(dtw->coord_status), dtw->zoom_status, 4, 0, 1, 1); - gtk_grid_attach(GTK_GRID(dtw->coord_status), dtw->rotation_status, 4, 1, 1, 1); + gtk_grid_attach(GTK_GRID(dtw->coord_status), label_z, 3, 0, 1, 2); + gtk_grid_attach(GTK_GRID(dtw->coord_status), label_r, 5, 0, 1, 2); + gtk_grid_attach(GTK_GRID(dtw->coord_status), dtw->zoom_status, 4, 0, 1, 2); + gtk_grid_attach(GTK_GRID(dtw->coord_status), dtw->rotation_status, 6, 0, 1, 2); sp_set_font_size_smaller (dtw->coord_status); @@ -728,6 +742,8 @@ static void sp_desktop_widget_dispose(GObject *object) g_signal_handlers_disconnect_matched (G_OBJECT (dtw->zoom_status), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, dtw->zoom_status); g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->zoom_status), (gpointer) G_CALLBACK (sp_dtw_zoom_value_changed), dtw); g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->zoom_status), (gpointer) G_CALLBACK (sp_dtw_zoom_populate_popup), dtw); + g_signal_handlers_disconnect_by_func(G_OBJECT (dtw->rotation_status), (gpointer) G_CALLBACK(sp_dtw_rotation_input), dtw); + g_signal_handlers_disconnect_by_func(G_OBJECT (dtw->rotation_status), (gpointer) G_CALLBACK(sp_dtw_rotation_output), dtw); g_signal_handlers_disconnect_matched (G_OBJECT (dtw->rotation_status), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, dtw->rotation_status); g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->rotation_status), (gpointer) G_CALLBACK (sp_desktop_widget_rotate_document), dtw); g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->rotation_status), (gpointer) G_CALLBACK (sp_dtw_rotation_populate_popup), dtw); @@ -1861,6 +1877,28 @@ sp_dtw_zoom_output (GtkSpinButton *spin, gpointer /*data*/) return TRUE; } +static gint +sp_dtw_rotation_input (GtkSpinButton *spin, gdouble *new_val, gpointer /*data*/) +{ + gdouble new_scrolled = gtk_spin_button_get_value (spin); + const gchar *b = gtk_entry_get_text (GTK_ENTRY (spin)); + gdouble new_typed = atof (b); + + *new_val = new_typed; + + return TRUE; +} + +static bool +sp_dtw_rotation_output (GtkSpinButton *spin, gpointer /*data*/) +{ + gchar b[64]; + double val = gtk_spin_button_get_value (spin); + g_snprintf (b, 64, "%3.0fº", val); + gtk_entry_set_text (GTK_ENTRY (spin), b); + return TRUE; +} + static void sp_dtw_zoom_value_changed (GtkSpinButton *spin, gpointer data) { -- cgit v1.2.3 From f2d2c7740567dcf2452c41d8332380708f557157 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Wed, 19 Oct 2016 12:50:29 +0200 Subject: Working with rotate preview (bzr r15142.1.15) --- src/widgets/desktop-widget.cpp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'src/widgets/desktop-widget.cpp') diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 16d71b4d2..e868dd2d6 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -62,7 +62,6 @@ #include "spw-utilities.h" #include "toolbox.h" #include "widget-sizes.h" - #include "verbs.h" #include #include @@ -1785,15 +1784,20 @@ sp_desktop_widget_rotate_document(GtkSpinButton *spin, SPDesktopWidget *dtw) { SPNamedView *nv = dtw->desktop->namedview; double value = gtk_spin_button_get_value (spin); - if (!dtw->desktop->getDocument()->getRoot()->rotated && value != nv->document_rotation) { - nv->document_rotation = value; - sp_repr_set_svg_double(nv->getRepr(), "inkscape:document-rotation", value); - SPObject *updated = SP_OBJECT(nv); - if (updated) { - updated->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); - } - } - spinbutton_defocus (GTK_WIDGET(spin)); +// if (!dtw->desktop->getDocument()->getRoot()->rotated && value != nv->document_rotation) { +// nv->document_rotation = value; +// sp_repr_set_svg_double(nv->getRepr(), "inkscape:document-rotation", value); +// SPObject *updated = SP_OBJECT(nv); +// if (updated) { +// updated->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); +// } +// //dtw->desktop->canvas->endRotateTo(); +// } else if( value != nv->document_rotation ) { + dtw->desktop->canvas->startRotateTo(0); + dtw->desktop->canvas->rotateTo(dtw->desktop->getDrawing(),value); + if (value == 180) { dtw->desktop->canvas->endRotateTo();} +// } + spinbutton_defocus (GTK_WIDGET(spin)); } -- cgit v1.2.3 From 50c101849a9f591972b5478a7a83407558e7bff7 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Sun, 23 Oct 2016 11:03:35 +0200 Subject: Add right click attempt (bzr r15142.1.20) --- src/widgets/desktop-widget.cpp | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) (limited to 'src/widgets/desktop-widget.cpp') diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index e868dd2d6..bc08c4f58 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -619,11 +619,12 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw ) context_zoom->add_provider(css_provider_spinbutton, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); // Rotate status spinbutton - dtw->rotation_status = gtk_spin_button_new_with_range (-180,180, 1.0); + dtw->rotation_status = gtk_spin_button_new_with_range (-360.0,360.0, 1.0); gtk_widget_set_tooltip_text (dtw->rotation_status, _("Rotation")); gtk_widget_set_size_request (dtw->rotation_status, STATUS_ROTATION_WIDTH, -1); - gtk_entry_set_width_chars (GTK_ENTRY (dtw->rotation_status), 6); + gtk_entry_set_width_chars (GTK_ENTRY (dtw->rotation_status), 7); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (dtw->rotation_status), FALSE); + gtk_spin_button_set_digits (GTK_SPIN_BUTTON (dtw->rotation_status), 2); gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (dtw->rotation_status), GTK_UPDATE_ALWAYS); g_signal_connect (G_OBJECT (dtw->rotation_status), "input", G_CALLBACK (sp_dtw_rotation_input), dtw); g_signal_connect (G_OBJECT (dtw->rotation_status), "output", G_CALLBACK (sp_dtw_rotation_output), dtw); @@ -1784,20 +1785,19 @@ sp_desktop_widget_rotate_document(GtkSpinButton *spin, SPDesktopWidget *dtw) { SPNamedView *nv = dtw->desktop->namedview; double value = gtk_spin_button_get_value (spin); -// if (!dtw->desktop->getDocument()->getRoot()->rotated && value != nv->document_rotation) { -// nv->document_rotation = value; -// sp_repr_set_svg_double(nv->getRepr(), "inkscape:document-rotation", value); -// SPObject *updated = SP_OBJECT(nv); -// if (updated) { -// updated->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); -// } -// //dtw->desktop->canvas->endRotateTo(); -// } else if( value != nv->document_rotation ) { - dtw->desktop->canvas->startRotateTo(0); - dtw->desktop->canvas->rotateTo(dtw->desktop->getDrawing(),value); - if (value == 180) { dtw->desktop->canvas->endRotateTo();} -// } - spinbutton_defocus (GTK_WIDGET(spin)); + if (!dtw->desktop->getDocument()->getRoot()->rotated && value != nv->document_rotation) { + nv->document_rotation = value; + sp_repr_set_svg_double(nv->getRepr(), "inkscape:document-rotation", value); + SPObject *updated = SP_OBJECT(nv); + if (updated) { + updated->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + } + //dtw->desktop->canvas->endRotateTo(); + }// else if( value != nv->document_rotation ) { + //dtw->desktop->canvas->startRotateTo(value); + // dtw->desktop->canvas->rotateTo(dtw->desktop->getDrawing(),value); + // } + spinbutton_defocus (GTK_WIDGET(spin)); } @@ -1898,7 +1898,7 @@ sp_dtw_rotation_output (GtkSpinButton *spin, gpointer /*data*/) { gchar b[64]; double val = gtk_spin_button_get_value (spin); - g_snprintf (b, 64, "%3.0fº", val); + g_snprintf (b, 64, "%3.2fº", val); gtk_entry_set_text (GTK_ENTRY (spin), b); return TRUE; } -- cgit v1.2.3 From b65d3fdc9c15af81c5e433d8f1b714ef4ab61487 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Sun, 23 Oct 2016 21:18:11 +0200 Subject: Add right click rotation panning, some fixes (bzr r15142.1.23) --- src/widgets/desktop-widget.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src/widgets/desktop-widget.cpp') diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index bc08c4f58..477414342 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -1792,11 +1792,13 @@ sp_desktop_widget_rotate_document(GtkSpinButton *spin, SPDesktopWidget *dtw) if (updated) { updated->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); } - //dtw->desktop->canvas->endRotateTo(); - }// else if( value != nv->document_rotation ) { - //dtw->desktop->canvas->startRotateTo(value); - // dtw->desktop->canvas->rotateTo(dtw->desktop->getDrawing(),value); - // } + dtw->desktop->canvas->endRotateTo(); + } +// } else if( value != nv->document_rotation ) { +// dtw->desktop->canvas->clearRotateTo(); +// dtw->desktop->canvas->startRotateTo(value); +// dtw->desktop->canvas->rotateTo(dtw->desktop->getDrawing(),value); +// } spinbutton_defocus (GTK_WIDGET(spin)); } -- cgit v1.2.3 From fdb897947621a286ae05cd990e8663bb6c3dd907 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Sun, 23 Oct 2016 22:24:00 +0200 Subject: Fix for widget value of rotate (bzr r15142.1.24) --- src/widgets/desktop-widget.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/widgets/desktop-widget.cpp') diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 477414342..94abd23a9 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -66,6 +66,7 @@ #include #include #include +#include #if defined (SOLARIS) && (SOLARIS == 8) #include "round.h" @@ -1890,7 +1891,11 @@ sp_dtw_rotation_input (GtkSpinButton *spin, gdouble *new_val, gpointer /*data*/) const gchar *b = gtk_entry_get_text (GTK_ENTRY (spin)); gdouble new_typed = atof (b); - *new_val = new_typed; + if (new_scrolled == new_typed) { // the new value is set by scrolling + *new_val = new_scrolled; + } else { // the new value is typed in + *new_val = new_typed; + } return TRUE; } @@ -1900,8 +1905,10 @@ sp_dtw_rotation_output (GtkSpinButton *spin, gpointer /*data*/) { gchar b[64]; double val = gtk_spin_button_get_value (spin); - g_snprintf (b, 64, "%3.2fº", val); - gtk_entry_set_text (GTK_ENTRY (spin), b); + std::ostringstream s; + s.imbue(std::locale(""));; + s << std::fixed << std::setprecision(2) << val << "º"; + gtk_entry_set_text (GTK_ENTRY (spin), s.str().c_str()); return TRUE; } -- cgit v1.2.3 From 043578ee79ae7dccc1967a9e380d276c9f73ed46 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Tue, 25 Oct 2016 23:30:06 +0200 Subject: Some bug fixes and improvements (bzr r15142.1.25) --- src/widgets/desktop-widget.cpp | 11 ----------- 1 file changed, 11 deletions(-) (limited to 'src/widgets/desktop-widget.cpp') diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 94abd23a9..4f5724ac2 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -1787,19 +1787,8 @@ sp_desktop_widget_rotate_document(GtkSpinButton *spin, SPDesktopWidget *dtw) SPNamedView *nv = dtw->desktop->namedview; double value = gtk_spin_button_get_value (spin); if (!dtw->desktop->getDocument()->getRoot()->rotated && value != nv->document_rotation) { - nv->document_rotation = value; sp_repr_set_svg_double(nv->getRepr(), "inkscape:document-rotation", value); - SPObject *updated = SP_OBJECT(nv); - if (updated) { - updated->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); - } - dtw->desktop->canvas->endRotateTo(); } -// } else if( value != nv->document_rotation ) { -// dtw->desktop->canvas->clearRotateTo(); -// dtw->desktop->canvas->startRotateTo(value); -// dtw->desktop->canvas->rotateTo(dtw->desktop->getDrawing(),value); -// } spinbutton_defocus (GTK_WIDGET(spin)); } -- cgit v1.2.3 From 632c205171ef6734d166ed39b61e10a2b1566bf3 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Wed, 25 Jan 2017 10:14:59 +0100 Subject: Comented one of the shortcuts for doc rotate because bad response now interactive mode onlu fire with CTRL+MMB (bzr r15445) --- src/widgets/desktop-widget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/widgets/desktop-widget.cpp') diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 8dddb40eb..f0d0541c2 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -614,7 +614,7 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw ) // Rotate status spinbutton dtw->rotation_status = gtk_spin_button_new_with_range (-360.0,360.0, 1.0); - gtk_widget_set_tooltip_text (dtw->rotation_status, _("Rotation. Can be interactive with CTRL+SPACEBAR or CTRL+MMB")); + gtk_widget_set_tooltip_text (dtw->rotation_status, _("Rotation. Can be interactive with CTRL+MMB")); gtk_widget_set_size_request (dtw->rotation_status, STATUS_ROTATION_WIDTH, -1); gtk_entry_set_width_chars (GTK_ENTRY (dtw->rotation_status), 7); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (dtw->rotation_status), FALSE); -- cgit v1.2.3 From 72f56af551162266d648243256abbe3c97d7adaa Mon Sep 17 00:00:00 2001 From: suv-lp <> Date: Thu, 26 Jan 2017 15:10:17 +0100 Subject: [Bug #1659297] 'Theme parsing error' messages in trunk rev 15447. Fixed bugs: - https://launchpad.net/bugs/1659297 (bzr r15455) --- src/widgets/desktop-widget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/widgets/desktop-widget.cpp') diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index f0d0541c2..0dce718fd 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -606,7 +606,7 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw ) dtw->zoom_update = g_signal_connect (G_OBJECT (dtw->zoom_status), "value_changed", G_CALLBACK (sp_dtw_zoom_value_changed), dtw); dtw->zoom_update = g_signal_connect (G_OBJECT (dtw->zoom_status), "populate_popup", G_CALLBACK (sp_dtw_zoom_populate_popup), dtw); auto css_provider_spinbutton = Gtk::CssProvider::create(); - css_provider_spinbutton->load_from_data("* { padding-left: 2; padding-right: 2; padding-top: 0; padding-bottom: 0;}"); + css_provider_spinbutton->load_from_data("* { padding-left: 2px; padding-right: 2px; padding-top: 0px; padding-bottom: 0px;}"); auto zoomstat = Glib::wrap(dtw->zoom_status); zoomstat->set_name("ZoomStatus"); auto context_zoom = zoomstat->get_style_context(); -- cgit v1.2.3 From f73797cb2ed08666d22c7ce2af13b8c6d8e823bd Mon Sep 17 00:00:00 2001 From: Tobias Ellinghaus Date: Thu, 26 Jan 2017 21:48:38 +0100 Subject: Fix Bug:1659253. Thanks houz and jazzynico Fixed bugs: - https://launchpad.net/bugs/1659253 (bzr r15458) --- src/widgets/desktop-widget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/widgets/desktop-widget.cpp') diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 0dce718fd..1884a685e 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -1679,7 +1679,7 @@ SPDesktopWidget* SPDesktopWidget::createInstance(SPNamedView *namedview) gtk_widget_set_name(dtw->menubar, "MenuBar"); gtk_widget_show_all (dtw->menubar); SPNamedView *nv = dtw->desktop->namedview; - gtk_box_pack_start (GTK_BOX (dtw->vbox), dtw->menubar, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (dtw->vbox), dtw->menubar, FALSE, FALSE, 0); dtw->layoutWidgets(); gtk_spin_button_set_value(GTK_SPIN_BUTTON (dtw->rotation_status), namedview->document_rotation); sp_namedview_set_document_rotation(namedview); -- cgit v1.2.3 From f1ddd1e70dbd780b0620bb86682ac0b55db0afce Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Wed, 1 Feb 2017 21:03:54 +0100 Subject: Prevent display units from effecting 'line-height' unit. Allow relative units to be saved in preferences for 'line-height'. Fixed bugs: - https://launchpad.net/bugs/1562217 (bzr r15462) --- src/widgets/desktop-widget.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/widgets/desktop-widget.cpp') diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 1884a685e..0a43bc7b2 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -1749,9 +1749,16 @@ void SPDesktopWidget::namedviewModified(SPObject *obj, guint flags) if (GTK_IS_CONTAINER(i->data)) { GList *grch = gtk_container_get_children (GTK_CONTAINER(i->data)); for (GList *j = grch; j != NULL; j = j->next) { + if (!GTK_IS_WIDGET(j->data)) // wasn't a widget continue; + // Don't apply to text toolbar. We want to be able to + // use different units for text. (Bug 1562217) + const gchar* name = gtk_widget_get_name( (GTK_WIDGET(j->data)) ); + if (strcmp( name, "TextToolbar") == 0) + continue; + gpointer t = sp_search_by_data_recursive(GTK_WIDGET(j->data), (gpointer) "tracker"); if (t == NULL) // didn't find any tracker data continue; -- cgit v1.2.3 From 1e3e159499532a145cf09af2dbd1de2ae4d8d565 Mon Sep 17 00:00:00 2001 From: Alex Valavanis Date: Mon, 6 Feb 2017 15:34:17 +0000 Subject: Remove some unneeded < C++11 fallback code (bzr r15485) --- src/widgets/desktop-widget.cpp | 5 ----- 1 file changed, 5 deletions(-) (limited to 'src/widgets/desktop-widget.cpp') diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 0a43bc7b2..7dae5d12f 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -68,11 +68,6 @@ #include #include -#if defined (SOLARIS) && (SOLARIS == 8) -#include "round.h" -using Inkscape::round; -#endif - using Inkscape::UI::Widget::UnitTracker; using Inkscape::UI::UXManager; using Inkscape::UI::ToolboxFactory; -- cgit v1.2.3