diff options
| author | Jabier Arraiza <jabier.arraiza@marker.es> | 2017-11-16 21:32:16 +0000 |
|---|---|---|
| committer | Jabier Arraiza <jabier.arraiza@marker.es> | 2017-11-16 21:32:16 +0000 |
| commit | dc4161332ffa97e75b5d2deecf2a47eb62e38c8f (patch) | |
| tree | 2ad76f2101e86efeaf07f4aea62c84c3e70e45da /src/ui/widget | |
| parent | Some improvements to redraw (diff) | |
| parent | Add label (diff) | |
| download | inkscape-dc4161332ffa97e75b5d2deecf2a47eb62e38c8f.tar.gz inkscape-dc4161332ffa97e75b5d2deecf2a47eb62e38c8f.zip | |
Merge branch 'master' into powerpencilII
Diffstat (limited to 'src/ui/widget')
| -rw-r--r-- | src/ui/widget/dock-item.cpp | 7 | ||||
| -rw-r--r-- | src/ui/widget/imagetoggler.cpp | 11 | ||||
| -rw-r--r-- | src/ui/widget/page-sizer.cpp | 53 | ||||
| -rw-r--r-- | src/ui/widget/page-sizer.h | 22 |
4 files changed, 71 insertions, 22 deletions
diff --git a/src/ui/widget/dock-item.cpp b/src/ui/widget/dock-item.cpp index 18ab70eb4..4a06163e1 100644 --- a/src/ui/widget/dock-item.cpp +++ b/src/ui/widget/dock-item.cpp @@ -45,7 +45,12 @@ DockItem::DockItem(Dock& dock, const Glib::ustring& name, const Glib::ustring& l int width = 0; int height = 0; Gtk::IconSize::lookup(Gtk::ICON_SIZE_MENU, width, height); - _icon_pixbuf = iconTheme->load_icon(icon_name, width); + try { + _icon_pixbuf = iconTheme->load_icon(icon_name, width); + } + catch (const Gtk::IconThemeError& e) { + std::cerr << "DocItem::DocItem(): " << e.what() << std::endl; + } } if ( _icon_pixbuf ) { diff --git a/src/ui/widget/imagetoggler.cpp b/src/ui/widget/imagetoggler.cpp index a2783ecb1..38c84ca51 100644 --- a/src/ui/widget/imagetoggler.cpp +++ b/src/ui/widget/imagetoggler.cpp @@ -16,6 +16,8 @@ #include "widgets/toolbox.h" #include "ui/icon-names.h" +#include <iostream> + namespace Inkscape { namespace UI { namespace Widget { @@ -37,8 +39,13 @@ ImageToggler::ImageToggler( char const* on, char const* off) : int phys = width; Glib::RefPtr<Gtk::IconTheme> icon_theme = Gtk::IconTheme::get_default(); - _property_pixbuf_on = icon_theme->load_icon(_pixOnName, phys, (Gtk::IconLookupFlags)0); - _property_pixbuf_off = icon_theme->load_icon(_pixOffName, phys, (Gtk::IconLookupFlags)0); + try { + _property_pixbuf_on = icon_theme->load_icon(_pixOnName, phys, (Gtk::IconLookupFlags)0); + _property_pixbuf_off = icon_theme->load_icon(_pixOffName, phys, (Gtk::IconLookupFlags)0); + } + catch (const Gtk::IconThemeError& e) { + std::cerr << "ImageToggler::ImageToggler(): " << e.what() << std::endl; + } property_pixbuf() = _property_pixbuf_off.get_value(); } diff --git a/src/ui/widget/page-sizer.cpp b/src/ui/widget/page-sizer.cpp index 06d54b682..7a3909975 100644 --- a/src/ui/widget/page-sizer.cpp +++ b/src/ui/widget/page-sizer.cpp @@ -219,7 +219,8 @@ PageSizer::PageSizer(Registry & _wr) _dimensionUnits( _("U_nits:"), "units", _wr ), _dimensionWidth( _("_Width:"), _("Width of paper"), "width", _dimensionUnits, _wr ), _dimensionHeight( _("_Height:"), _("Height of paper"), "height", _dimensionUnits, _wr ), - _marginLock( _("L_ock"), _("Lock margins"), "lock-margins", _wr ), + _marginLock( _("Loc_k margins"), _("Lock margins"), "lock-margins", _wr, false, NULL, NULL), + _lock_icon(), _marginTop( _("T_op margin:"), _("Top margin"), "fit-margin-top", _wr ), _marginLeft( _("L_eft:"), _("Left margin"), "fit-margin-left", _wr), _marginRight( _("Ri_ght:"), _("Right margin"), "fit-margin-right", _wr), @@ -249,7 +250,6 @@ PageSizer::PageSizer(Registry & _wr) _viewboxY.setDigits(2); _viewboxW.setDigits(2); _viewboxH.setDigits(2); - _dimensionWidth.setRange( 0.00001, 10000000 ); _dimensionHeight.setRange( 0.00001, 10000000 ); _scaleX.setRange( 0.00001, 100000 ); @@ -370,7 +370,6 @@ PageSizer::PageSizer(Registry & _wr) //## Set up margin settings _marginTable.set_border_width(4); - _marginTable.set_row_spacing(4); _marginTable.set_column_spacing(4); @@ -384,10 +383,19 @@ PageSizer::PageSizer(Registry & _wr) _marginLeft.set_hexpand(); _marginLeft.set_vexpand(); _marginTable.attach(_marginLeft, 0, 1, 1, 1); - + + _marginLock.set_active(false); _marginLock.set_halign(Gtk::ALIGN_CENTER); _marginLock.set_hexpand(); _marginLock.set_vexpand(); + + //_lock_icon = new Gtk::Image(); + _lock_icon.set_halign(Gtk::ALIGN_CENTER); + _lock_icon.set_valign(Gtk::ALIGN_START); + _lock_icon.set_from_icon_name("object-unlocked", Gtk::ICON_SIZE_LARGE_TOOLBAR); + _lock_icon.show(); + _marginLock.add(_lock_icon); + _marginTable.attach(_marginLock, 1, 1, 1, 1); _marginRight.set_halign(Gtk::ALIGN_CENTER); @@ -481,6 +489,7 @@ PageSizer::init () _changedvy_connection = _viewboxY.signal_value_changed().connect (sigc::mem_fun (*this, &PageSizer::on_viewbox_changed)); _changedvw_connection = _viewboxW.signal_value_changed().connect (sigc::mem_fun (*this, &PageSizer::on_viewbox_changed)); _changedvh_connection = _viewboxH.signal_value_changed().connect (sigc::mem_fun (*this, &PageSizer::on_viewbox_changed)); + _changedlk_connection = _marginLock.signal_toggled().connect (sigc::mem_fun (*this, &PageSizer::on_margin_lock_changed)); _changedmt_connection = _marginTop.signal_value_changed().connect (sigc::bind<RegisteredScalar*>(sigc::mem_fun (*this, &PageSizer::on_margin_changed), &_marginTop)); _changedmb_connection = _marginBottom.signal_value_changed().connect (sigc::bind<RegisteredScalar*>(sigc::mem_fun (*this, &PageSizer::on_margin_changed), &_marginBottom)); _changedml_connection = _marginLeft.signal_value_changed().connect (sigc::bind<RegisteredScalar*>(sigc::mem_fun (*this, &PageSizer::on_margin_changed), &_marginLeft)); @@ -903,21 +912,45 @@ PageSizer::on_viewbox_changed() } } -/** - * Callback for viewbox widgets - */ +void +PageSizer::on_margin_lock_changed() +{ + if (_marginLock.get_active()) { + _lock_icon.set_from_icon_name("object-locked", Gtk::ICON_SIZE_LARGE_TOOLBAR); + double left = _marginLeft.getValue(); + double right = _marginRight.getValue(); + double top = _marginTop.getValue(); + double bottom = _marginBottom.getValue(); + if (Geom::are_near(left,right)) { + if (Geom::are_near(left, top)) { + on_margin_changed(&_marginBottom); + } else { + on_margin_changed(&_marginTop); + } + } else { + if (Geom::are_near(left, top)) { + on_margin_changed(&_marginRight); + } else { + on_margin_changed(&_marginLeft); + } + } + } else { + _lock_icon.set_from_icon_name("object-unlocked", Gtk::ICON_SIZE_LARGE_TOOLBAR); + } +} + void PageSizer::on_margin_changed(RegisteredScalar* widg) { double value = widg->getValue(); if (_widgetRegistry->isUpdating()) return; - if (_marginLock.get_active() && !_marginLocked) { - _marginLocked = true; + if (_marginLock.get_active() && !_lockMarginUpdate) { + _lockMarginUpdate = true; _marginLeft.setValue(value); _marginRight.setValue(value); _marginTop.setValue(value); _marginBottom.setValue(value); - _marginLocked = false; + _lockMarginUpdate = false; } } diff --git a/src/ui/widget/page-sizer.h b/src/ui/widget/page-sizer.h index 7cf8bacfd..29cd204b9 100644 --- a/src/ui/widget/page-sizer.h +++ b/src/ui/widget/page-sizer.h @@ -166,6 +166,9 @@ public: * Updates the margin widgets. If lock widget is active */ void on_margin_changed(RegisteredScalar* widg); + + void on_margin_lock_changed(); + /** * Updates the scale widgets. (Just changes the values of the ui widgets.) */ @@ -229,15 +232,15 @@ protected: //### Fit Page options Gtk::Expander _fitPageMarginExpander; - Gtk::Grid _marginTable; - RegisteredCheckButton _marginLock; - RegisteredScalar _marginTop; - RegisteredScalar _marginLeft; - RegisteredScalar _marginRight; - RegisteredScalar _marginBottom; - Gtk::Button _fitPageButton; - bool _lockMarginUpdate; - bool _marginLocked; + Gtk::Grid _marginTable; + RegisteredToggleButton _marginLock; + Gtk::Image _lock_icon; + RegisteredScalar _marginTop; + RegisteredScalar _marginLeft; + RegisteredScalar _marginRight; + RegisteredScalar _marginBottom; + Gtk::Button _fitPageButton; + bool _lockMarginUpdate; // Document scale Gtk::Frame _scaleFrame; @@ -271,6 +274,7 @@ protected: sigc::connection _changedvy_connection; sigc::connection _changedvw_connection; sigc::connection _changedvh_connection; + sigc::connection _changedlk_connection; sigc::connection _changedmt_connection; sigc::connection _changedmb_connection; sigc::connection _changedml_connection; |
