Code

Add option to align & distribute dialog to treat the selection as a group (closes...
[inkscape.git] / src / ui / dialog / document-properties.cpp
index acf76f034bb288005fddf96d5c8708502d53c937..a2d5b50ed163f61a01b154b37437de56eba62fba 100644 (file)
@@ -82,7 +82,7 @@ DocumentProperties::getInstance()
 
 DocumentProperties::DocumentProperties()
     : UI::Widget::Panel ("", "dialogs.documentoptions", SP_VERB_DIALOG_NAMEDVIEW),
-      _page_page(1, 1), _page_guides(1, 1),
+      _page_page(1, 1, true, true), _page_guides(1, 1),
       _page_snap(1, 1), _page_snap_dtls(1, 1),
     //---------------------------------------------------------------
       _rcb_canb(_("Show page _border"), _("If set, rectangular page border is shown"), "showborder", _wr, false),
@@ -100,7 +100,8 @@ DocumentProperties::DocumentProperties()
       _rcp_gui(_("Guide co_lor:"), _("Guideline color"), _("Color of guidelines"), "guidecolor", "guideopacity", _wr),
       _rcp_hgui(_("_Highlight color:"), _("Highlighted guideline color"), _("Color of a guideline when it is under mouse"), "guidehicolor", "guidehiopacity", _wr),
     //---------------------------------------------------------------
-      _rcbsg(_("_Enable snapping"), _("Toggle snapping on or off"), "inkscape:snap-global", _wr),
+      _rcbs(_("_Enable snapping"), _("Toggle snapping on or off"), "inkscape:snap-global", _wr),
+      _rcbsi(_("_Enable snap indicator"), _("After snapping, a symbol is drawn at the point that has snapped"), "inkscape:snap-indicator", _wr),
       _rcbsnbb(_("_Bounding box corners"), _("Only available in the selector tool: snap bounding box corners to guides, to grids, and to other bounding boxes (but not to nodes or paths)"),
                   "inkscape:snap-bbox", _wr),
       _rcbsnn(_("_Nodes"), _("Snap nodes (e.g. path nodes, special points in shapes, gradient handles, text base points, transformation origins, etc.) to guides, to grids, to paths and to other nodes"),
@@ -115,8 +116,8 @@ DocumentProperties::DocumentProperties()
        //Applies to both nodes and guides, but not to bboxes, that's why its located here
       _rcbic( _("Rotation _center"), _("Consider the rotation center of an object when snapping"), "inkscape:snap-center", _wr),
       _rcbsigg(_("_Grid with guides"), _("Snap to grid-guide intersections"), "inkscape:snap-intersection-grid-guide", _wr),
-      _rcbsils(_("_Line segments"), _("Snap to intersections of line segments ('snap to paths' must be enabled, see the previous tab)"),
-                "inkscape:snap-intersection-line-segments", _wr),
+      _rcbsils(_("_Paths"), _("Snap to intersections of paths ('snap to paths' must be enabled, see the previous tab)"),
+                "inkscape:snap-intersection-paths", _wr),
     //---------------------------------------------------------------
       _grids_label_crea("", Gtk::ALIGN_LEFT),
       //TRANSLATORS: In Grid|_New translate only the word _New. It ref to grid
@@ -195,9 +196,15 @@ attach_all(Gtk::Table &table, Gtk::Widget *const arr[], unsigned const n, int st
         }
         else
         {
-            if (arr[i+1])
+            if (arr[i+1]) {
+                Gtk::AttachOptions yoptions = (Gtk::AttachOptions)0;
+                if (dynamic_cast<Inkscape::UI::Widget::PageSizer*>(arr[i+1])) {
+                    // only the PageSizer in Document Properties|Page should be stretched vertically
+                    yoptions = Gtk::FILL|Gtk::EXPAND;
+                }
                 table.attach(*arr[i+1], 1, 3, r, r+1,
-                      Gtk::FILL|Gtk::EXPAND, (Gtk::AttachOptions)0,0,0);
+                      Gtk::FILL|Gtk::EXPAND, yoptions, 0,0);
+            }
             else if (arr[i])
             {
                 Gtk::Label& label = reinterpret_cast<Gtk::Label&>(*arr[i]);
@@ -274,20 +281,20 @@ DocumentProperties::build_snap()
 {
     _page_snap.show();
 
-    _rsu_sno.init (_("Snap _distance"), _("Snap only when _closer than:"),
-                  _("Snapping distance, in screen pixels, for snapping to objects"),
+    _rsu_sno.init (_("Snap _distance"), _("Snap only when _closer than:"), _("Always snap"),
+                  _("Snapping distance, in screen pixels, for snapping to objects"), _("Always snap to objects, regardless of their distance"),
                   _("If set, objects only snap to another object when it's within the range specified below"),
                   "objecttolerance", _wr);
 
     //Options for snapping to grids
-    _rsu_sn.init (_("Snap d_istance"), _("Snap only when c_loser than:"),
-                  _("Snapping distance, in screen pixels, for snapping to grid"),
+    _rsu_sn.init (_("Snap d_istance"), _("Snap only when c_loser than:"), _("Always snap"),
+                  _("Snapping distance, in screen pixels, for snapping to grid"), _("Always snap to grids, regardless of the distance"),
                   _("If set, objects only snap to a grid line when it's within the range specified below"),
                   "gridtolerance", _wr);
 
     //Options for snapping to guides
-    _rsu_gusn.init (_("Snap dist_ance"), _("Snap only when close_r than:"),
-                _("Snapping distance, in screen pixels, for snapping to guides"),
+    _rsu_gusn.init (_("Snap dist_ance"), _("Snap only when close_r than:"), _("Always snap"),
+                _("Snapping distance, in screen pixels, for snapping to guides"), _("Always snap to guides, regardless of the distance"),
                 _("If set, objects only snap to a guide when it's within the range specified below"),
                 "guidetolerance", _wr);
 
@@ -306,8 +313,9 @@ DocumentProperties::build_snap()
     slaves.clear();
     slaves.push_back(&_rcbsnn);
     slaves.push_back(&_rcbsnbb);
+    slaves.push_back(&_rcbsi);
 
-    _rcbsg.setSlaveWidgets(slaves);
+    _rcbs.setSlaveWidgets(slaves);
 
     Gtk::Label *label_g = manage (new Gtk::Label);
     label_g->set_markup (_("<b>Snapping</b>"));
@@ -323,7 +331,8 @@ DocumentProperties::build_snap()
     Gtk::Widget *const array[] =
     {
         label_g,            0,
-        0,                  &_rcbsg,
+        0,                  &_rcbs,
+        0,                  &_rcbsi,
         0,                  0,
         label_w,            0,
         0,                  &_rcbsnn,
@@ -357,7 +366,7 @@ DocumentProperties::build_snap_dtls()
     Gtk::Label *label_i= manage (new Gtk::Label);
     label_i->set_markup (_("<b>Snapping to intersections of</b>"));
     Gtk::Label *label_m = manage (new Gtk::Label);
-    label_m->set_markup (_("<b>Snapping to special nodes</b>"));
+    label_m->set_markup (_("<b>Special points to consider</b>"));
 
     Gtk::Widget *const array[] =
     {
@@ -492,7 +501,7 @@ DocumentProperties::update()
     _rcbsng.setActive (nv->snap_manager.getSnapModeGuide());
     _rcbic.setActive (nv->snap_manager.getIncludeItemCenter());
     _rcbsigg.setActive (nv->snap_manager.getSnapIntersectionGG());
-    _rcbsils.setActive (nv->snap_manager.getSnapIntersectionLS());
+    _rcbsils.setActive (nv->snap_manager.getSnapIntersectionCS());
     _rcbsnop.setActive(nv->snap_manager.object.getSnapToItemPath());
     _rcbsnon.setActive(nv->snap_manager.object.getSnapToItemNode());
     _rcbsnbbp.setActive(nv->snap_manager.object.getSnapToBBoxPath());
@@ -504,7 +513,8 @@ DocumentProperties::update()
 
     _rsu_gusn.setValue (nv->guidetolerance);
 
-    _rcbsg.setActive (nv->snap_manager.getSnapEnabledGlobally());
+    _rcbs.setActive (nv->snap_manager.getSnapEnabledGlobally());
+    _rcbsi.setActive (nv->snapindicator);
 
     //-----------------------------------------------------------grids page