From 8167af2182fae96b9ec97dbef3f60272245dba7d Mon Sep 17 00:00:00 2001 From: mike kowalski Date: Sat, 26 Jun 2021 17:15:34 -0700 Subject: [PATCH 1/3] narrower transform dialog --- src/ui/dialog/transformation.cpp | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/ui/dialog/transformation.cpp b/src/ui/dialog/transformation.cpp index f9adb3532a..278965d374 100644 --- a/src/ui/dialog/transformation.cpp +++ b/src/ui/dialog/transformation.cpp @@ -208,11 +208,13 @@ void Transformation::layoutPageMove() _scalar_move_horizontal.setDigits(3); _scalar_move_horizontal.setIncrements(0.1, 1.0); _scalar_move_horizontal.set_hexpand(); + _scalar_move_horizontal.setWidthChars(7); _scalar_move_vertical.initScalar(-1e6, 1e6); _scalar_move_vertical.setDigits(3); _scalar_move_vertical.setIncrements(0.1, 1.0); _scalar_move_vertical.set_hexpand(); + _scalar_move_vertical.setWidthChars(7); //_scalar_move_vertical.set_label_image( INKSCAPE_STOCK_ARROWS_HOR ); @@ -248,6 +250,7 @@ void Transformation::layoutPageScale() _scalar_scale_horizontal.setAbsoluteIsIncrement(true); _scalar_scale_horizontal.setPercentageIsIncrement(true); _scalar_scale_horizontal.set_hexpand(); + _scalar_scale_horizontal.setWidthChars(7); _scalar_scale_vertical.initScalar(-1e6, 1e6); _scalar_scale_vertical.setValue(100.0, "%"); @@ -256,6 +259,7 @@ void Transformation::layoutPageScale() _scalar_scale_vertical.setAbsoluteIsIncrement(true); _scalar_scale_vertical.setPercentageIsIncrement(true); _scalar_scale_vertical.set_hexpand(); + _scalar_scale_vertical.setWidthChars(7); _page_scale.table().attach(_scalar_scale_horizontal, 0, 0, 2, 1); @@ -303,10 +307,15 @@ void Transformation::layoutPageRotate() Gtk::RadioButton::Group group = _counterclockwise_rotate.get_group(); _clockwise_rotate.set_group(group); - _page_rotate.table().attach(_scalar_rotate, 0, 0, 2, 1); - _page_rotate.table().attach(_units_rotate, 2, 0, 1, 1); - _page_rotate.table().attach(_counterclockwise_rotate, 3, 0, 1, 1); - _page_rotate.table().attach(_clockwise_rotate, 4, 0, 1, 1); + auto box = Gtk::make_managed(); + _counterclockwise_rotate.set_halign(Gtk::ALIGN_START); + _clockwise_rotate.set_halign(Gtk::ALIGN_START); + box->pack_start(_counterclockwise_rotate); + box->pack_start(_clockwise_rotate); + + _page_rotate.table().attach(_scalar_rotate, 0, 0, 1, 1); + _page_rotate.table().attach(_units_rotate, 1, 0, 1, 1); + _page_rotate.table().attach(*box, 1, 1, 1, 1); _scalar_rotate.signal_value_changed() .connect(sigc::mem_fun(*this, &Transformation::onRotateValueChanged)); @@ -327,11 +336,13 @@ void Transformation::layoutPageSkew() _scalar_skew_horizontal.setDigits(3); _scalar_skew_horizontal.setIncrements(0.1, 1.0); _scalar_skew_horizontal.set_hexpand(); + _scalar_skew_horizontal.setWidthChars(7); _scalar_skew_vertical.initScalar(-1e6, 1e6); _scalar_skew_vertical.setDigits(3); _scalar_skew_vertical.setIncrements(0.1, 1.0); _scalar_skew_vertical.set_hexpand(); + _scalar_skew_vertical.setWidthChars(7); _page_skew.table().attach(_scalar_skew_horizontal, 0, 0, 2, 1); _page_skew.table().attach(_units_skew, 2, 0, 1, 1); @@ -351,6 +362,7 @@ void Transformation::layoutPageTransform() { _units_transform.setUnitType(UNIT_TYPE_LINEAR); _units_transform.set_tooltip_text(_("E and F units")); + _units_transform.set_halign(Gtk::ALIGN_END); _scalar_transform_a.setWidgetSizeRequest(65, -1); _scalar_transform_a.setRange(-1e10, 1e10); @@ -414,7 +426,7 @@ void Transformation::layoutPageTransform() _scalar_transform_e.setWidthChars(6); _scalar_transform_e.set_hexpand(); - _page_transform.table().attach(_scalar_transform_e, 2, 0, 1, 1); + _page_transform.table().attach(_scalar_transform_e, 0, 2, 1, 1); _scalar_transform_e.signal_value_changed() .connect(sigc::mem_fun(*this, &Transformation::onTransformValueChanged)); @@ -428,8 +440,8 @@ void Transformation::layoutPageTransform() _scalar_transform_f.setWidthChars(6); _scalar_transform_f.set_hexpand(); - _page_transform.table().attach(_scalar_transform_f, 2, 1, 1, 1); - _page_transform.table().attach(_units_transform, 2, 2, 1, 1); + _page_transform.table().attach(_scalar_transform_f, 1, 2, 1, 1); + _page_transform.table().attach(_units_transform, 1, 3, 1, 1); _scalar_transform_f.signal_value_changed() .connect(sigc::mem_fun(*this, &Transformation::onTransformValueChanged)); -- GitLab From 6eebf5c207be925397602b820b1ffccee0446f01 Mon Sep 17 00:00:00 2001 From: mike kowalski Date: Thu, 1 Jul 2021 20:12:05 -0700 Subject: [PATCH 2/3] wip matrix rearranged --- .../symbolic/actions/matrix-2d-symbolic.svg | 113 ++++++++++++++++++ src/ui/dialog/transformation.cpp | 60 +++++++--- 2 files changed, 159 insertions(+), 14 deletions(-) create mode 100644 share/icons/hicolor/symbolic/actions/matrix-2d-symbolic.svg diff --git a/share/icons/hicolor/symbolic/actions/matrix-2d-symbolic.svg b/share/icons/hicolor/symbolic/actions/matrix-2d-symbolic.svg new file mode 100644 index 0000000000..ef1ad2ecd0 --- /dev/null +++ b/share/icons/hicolor/symbolic/actions/matrix-2d-symbolic.svg @@ -0,0 +1,113 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/src/ui/dialog/transformation.cpp b/src/ui/dialog/transformation.cpp index 278965d374..f323b583bd 100644 --- a/src/ui/dialog/transformation.cpp +++ b/src/ui/dialog/transformation.cpp @@ -76,12 +76,12 @@ Transformation::Transformation() _scalar_skew_vertical (_("_Vertical:"), _("Vertical skew angle (positive = clockwise), or absolute displacement, or percentage displacement"), UNIT_TYPE_LINEAR, "", "transform-skew-vertical", &_units_skew), - _scalar_transform_a ("_A:", _("Transformation matrix element A")), - _scalar_transform_b ("_B:", _("Transformation matrix element B")), - _scalar_transform_c ("_C:", _("Transformation matrix element C")), - _scalar_transform_d ("_D:", _("Transformation matrix element D")), - _scalar_transform_e ("_E:", _("Transformation matrix element E"), UNIT_TYPE_LINEAR, "", "", &_units_transform), - _scalar_transform_f ("_F:", _("Transformation matrix element F"), UNIT_TYPE_LINEAR, "", "", &_units_transform), + _scalar_transform_a ("", _("Transformation matrix element A")), + _scalar_transform_b ("", _("Transformation matrix element B")), + _scalar_transform_c ("", _("Transformation matrix element C")), + _scalar_transform_d ("", _("Transformation matrix element D")), + _scalar_transform_e ("", _("Transformation matrix element E"), UNIT_TYPE_LINEAR, "", "", &_units_transform), + _scalar_transform_f ("", _("Transformation matrix element F"), UNIT_TYPE_LINEAR, "", "", &_units_transform), _counterclockwise_rotate (), _clockwise_rotate (), @@ -364,6 +364,14 @@ void Transformation::layoutPageTransform() _units_transform.set_tooltip_text(_("E and F units")); _units_transform.set_halign(Gtk::ALIGN_END); + UI::Widget::Scalar* labels[] = {&_scalar_transform_a, &_scalar_transform_b, &_scalar_transform_c, &_scalar_transform_d, &_scalar_transform_e, &_scalar_transform_f}; + for (auto label : labels) { + auto widget = const_cast(label->getLabel()); + widget->hide(); + widget->set_no_show_all(); + } + _page_transform.table().set_column_spacing(0); + _scalar_transform_a.setWidgetSizeRequest(65, -1); _scalar_transform_a.setRange(-1e10, 1e10); _scalar_transform_a.setDigits(3); @@ -372,7 +380,8 @@ void Transformation::layoutPageTransform() _scalar_transform_a.setWidthChars(6); _scalar_transform_a.set_hexpand(); - _page_transform.table().attach(_scalar_transform_a, 0, 0, 1, 1); + _page_transform.table().attach(*Gtk::make_managed("A:"), 0, 0, 1, 1); + _page_transform.table().attach(_scalar_transform_a, 0, 1, 1, 1); _scalar_transform_a.signal_value_changed() .connect(sigc::mem_fun(*this, &Transformation::onTransformValueChanged)); @@ -385,7 +394,8 @@ void Transformation::layoutPageTransform() _scalar_transform_b.setWidthChars(6); _scalar_transform_b.set_hexpand(); - _page_transform.table().attach(_scalar_transform_b, 0, 1, 1, 1); + _page_transform.table().attach(*Gtk::make_managed("B:"), 0, 2, 1, 1); + _page_transform.table().attach(_scalar_transform_b, 0, 3, 1, 1); _scalar_transform_b.signal_value_changed() .connect(sigc::mem_fun(*this, &Transformation::onTransformValueChanged)); @@ -398,7 +408,8 @@ void Transformation::layoutPageTransform() _scalar_transform_c.setWidthChars(6); _scalar_transform_c.set_hexpand(); - _page_transform.table().attach(_scalar_transform_c, 1, 0, 1, 1); + _page_transform.table().attach(*Gtk::make_managed("C:"), 1, 0, 1, 1); + _page_transform.table().attach(_scalar_transform_c, 1, 1, 1, 1); _scalar_transform_c.signal_value_changed() .connect(sigc::mem_fun(*this, &Transformation::onTransformValueChanged)); @@ -412,7 +423,8 @@ void Transformation::layoutPageTransform() _scalar_transform_d.setWidthChars(6); _scalar_transform_d.set_hexpand(); - _page_transform.table().attach(_scalar_transform_d, 1, 1, 1, 1); + _page_transform.table().attach(*Gtk::make_managed("D:"), 1, 2, 1, 1); + _page_transform.table().attach(_scalar_transform_d, 1, 3, 1, 1); _scalar_transform_d.signal_value_changed() .connect(sigc::mem_fun(*this, &Transformation::onTransformValueChanged)); @@ -426,7 +438,8 @@ void Transformation::layoutPageTransform() _scalar_transform_e.setWidthChars(6); _scalar_transform_e.set_hexpand(); - _page_transform.table().attach(_scalar_transform_e, 0, 2, 1, 1); + _page_transform.table().attach(*Gtk::make_managed("E:"), 2, 0, 1, 1); + _page_transform.table().attach(_scalar_transform_e, 2, 1, 1, 1); _scalar_transform_e.signal_value_changed() .connect(sigc::mem_fun(*this, &Transformation::onTransformValueChanged)); @@ -440,14 +453,33 @@ void Transformation::layoutPageTransform() _scalar_transform_f.setWidthChars(6); _scalar_transform_f.set_hexpand(); - _page_transform.table().attach(_scalar_transform_f, 1, 2, 1, 1); - _page_transform.table().attach(_units_transform, 1, 3, 1, 1); + _page_transform.table().attach(*Gtk::make_managed("F:"), 2, 2, 1, 1); + _page_transform.table().attach(_scalar_transform_f, 2, 3, 1, 1); + + auto img = Gtk::make_managed(); + img->set_from_icon_name("matrix-2d", Gtk::ICON_SIZE_BUTTON); + img->set_pixel_size(52); + _page_transform.table().attach(*img, 0, 4, 1, 1); + + auto descr = Gtk::make_managed(); + descr->set_line_wrap(); + descr->set_line_wrap_mode(Pango::WRAP_WORD); + descr->set_text( + "" + "Transformation matrix combines translation, scaling, rotation and shearing.\n" + "Elements E, F represent translation, A and D scale. Rotation angle is encoded in A, B, C, and D.\n" + "" + ); + descr->set_use_markup(); + _page_transform.table().attach(*descr, 1, 4, 2, 1); + + _page_transform.table().attach(_units_transform, 2, 5, 1, 1); _scalar_transform_f.signal_value_changed() .connect(sigc::mem_fun(*this, &Transformation::onTransformValueChanged)); // Edit existing matrix - _page_transform.table().attach(_check_replace_matrix, 0, 3, 2, 1); + _page_transform.table().attach(_check_replace_matrix, 0, 5, 2, 1); _check_replace_matrix.set_active(false); _check_replace_matrix.signal_toggled() -- GitLab From ebb634e8696e5d5eb1650729d75a860768ed7fa4 Mon Sep 17 00:00:00 2001 From: mike kowalski Date: Fri, 2 Jul 2021 19:01:23 -0700 Subject: [PATCH 3/3] matrix page improvements --- src/ui/dialog/transformation.cpp | 24 ++++++++++++++---------- src/ui/widget/scalar.cpp | 13 +++++++++++++ src/ui/widget/scalar.h | 3 +++ 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/ui/dialog/transformation.cpp b/src/ui/dialog/transformation.cpp index f323b583bd..65b17f9b74 100644 --- a/src/ui/dialog/transformation.cpp +++ b/src/ui/dialog/transformation.cpp @@ -357,20 +357,23 @@ void Transformation::layoutPageSkew() } - void Transformation::layoutPageTransform() { _units_transform.setUnitType(UNIT_TYPE_LINEAR); _units_transform.set_tooltip_text(_("E and F units")); _units_transform.set_halign(Gtk::ALIGN_END); + _units_transform.set_margin_top(3); + _units_transform.set_margin_bottom(3); UI::Widget::Scalar* labels[] = {&_scalar_transform_a, &_scalar_transform_b, &_scalar_transform_c, &_scalar_transform_d, &_scalar_transform_e, &_scalar_transform_f}; for (auto label : labels) { - auto widget = const_cast(label->getLabel()); - widget->hide(); - widget->set_no_show_all(); + label->hide_label(); + label->set_margin_start(2); + label->set_margin_end(2); } _page_transform.table().set_column_spacing(0); + _page_transform.table().set_row_spacing(1); + _page_transform.table().set_column_homogeneous(true); _scalar_transform_a.setWidgetSizeRequest(65, -1); _scalar_transform_a.setRange(-1e10, 1e10); @@ -459,27 +462,28 @@ void Transformation::layoutPageTransform() auto img = Gtk::make_managed(); img->set_from_icon_name("matrix-2d", Gtk::ICON_SIZE_BUTTON); img->set_pixel_size(52); - _page_transform.table().attach(*img, 0, 4, 1, 1); + _page_transform.table().attach(*img, 0, 5, 1, 1); auto descr = Gtk::make_managed(); descr->set_line_wrap(); descr->set_line_wrap_mode(Pango::WRAP_WORD); descr->set_text( "" - "Transformation matrix combines translation, scaling, rotation and shearing.\n" - "Elements E, F represent translation, A and D scale. Rotation angle is encoded in A, B, C, and D.\n" + "" + "2D transformation matrix that combines translation (E,F), scaling (A,D)," + " rotation (A-D) and shearing (B,C)." "" ); descr->set_use_markup(); - _page_transform.table().attach(*descr, 1, 4, 2, 1); + _page_transform.table().attach(*descr, 1, 5, 2, 1); - _page_transform.table().attach(_units_transform, 2, 5, 1, 1); + _page_transform.table().attach(_units_transform, 2, 4, 1, 1); _scalar_transform_f.signal_value_changed() .connect(sigc::mem_fun(*this, &Transformation::onTransformValueChanged)); // Edit existing matrix - _page_transform.table().attach(_check_replace_matrix, 0, 5, 2, 1); + _page_transform.table().attach(_check_replace_matrix, 0, 4, 2, 1); _check_replace_matrix.set_active(false); _check_replace_matrix.signal_toggled() diff --git a/src/ui/widget/scalar.cpp b/src/ui/widget/scalar.cpp index f4f9d3a6f6..d6766fe87d 100644 --- a/src/ui/widget/scalar.cpp +++ b/src/ui/widget/scalar.cpp @@ -156,6 +156,19 @@ Glib::SignalProxy1 Scalar::signal_button_release_event() return static_cast(_widget)->signal_button_release_event(); } +void Scalar::hide_label() { + if (auto label = const_cast(getLabel())) { + label->hide(); + label->set_no_show_all(); + label->set_hexpand(true); + } + if (_widget) { + remove(*_widget); + _widget->set_hexpand(); + this->pack_end(*_widget); + } +} + } // namespace Widget } // namespace UI diff --git a/src/ui/widget/scalar.h b/src/ui/widget/scalar.h index 29a14d15ab..0ef8d35c2b 100644 --- a/src/ui/widget/scalar.h +++ b/src/ui/widget/scalar.h @@ -168,6 +168,9 @@ public: * if a callback checks it, it must reset it back to false. */ bool setProgrammatically; + + // permanently hide label part + void hide_label(); }; } // namespace Widget -- GitLab