summaryrefslogtreecommitdiffstats
path: root/src/ui/widget
diff options
context:
space:
mode:
authorJabier Arraiza <jabier.arraiza@marker.es>2017-11-16 21:32:16 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2017-11-16 21:32:16 +0000
commitdc4161332ffa97e75b5d2deecf2a47eb62e38c8f (patch)
tree2ad76f2101e86efeaf07f4aea62c84c3e70e45da /src/ui/widget
parentSome improvements to redraw (diff)
parentAdd label (diff)
downloadinkscape-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.cpp7
-rw-r--r--src/ui/widget/imagetoggler.cpp11
-rw-r--r--src/ui/widget/page-sizer.cpp53
-rw-r--r--src/ui/widget/page-sizer.h22
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;