=== modified file 'src/attributes.cpp' --- src/attributes.cpp 2010-07-09 05:02:03 +0000 +++ src/attributes.cpp 2010-09-23 15:35:59 +0000 @@ -111,6 +111,7 @@ {SP_ATTR_INKSCAPE_SNAP_PAGE, "inkscape:snap-page"}, {SP_ATTR_INKSCAPE_CURRENT_LAYER, "inkscape:current-layer"}, {SP_ATTR_INKSCAPE_DOCUMENT_UNITS, "inkscape:document-units"}, + {SP_ATTR_UNITS, "units"}, {SP_ATTR_INKSCAPE_CONNECTOR_SPACING, "inkscape:connector-spacing"}, /* SPColorProfile */ {SP_ATTR_LOCAL, "local"}, === modified file 'src/attributes.h' --- src/attributes.h 2010-07-09 05:02:03 +0000 +++ src/attributes.h 2010-09-23 15:36:12 +0000 @@ -112,6 +112,7 @@ SP_ATTR_INKSCAPE_SNAP_PAGE, SP_ATTR_INKSCAPE_CURRENT_LAYER, SP_ATTR_INKSCAPE_DOCUMENT_UNITS, + SP_ATTR_UNITS, SP_ATTR_INKSCAPE_CONNECTOR_SPACING, /* SPColorProfile */ SP_ATTR_LOCAL, === modified file 'src/sp-namedview.cpp' --- src/sp-namedview.cpp 2010-03-02 06:10:16 +0000 +++ src/sp-namedview.cpp 2010-09-23 15:36:26 +0000 @@ -218,6 +218,7 @@ } sp_object_read_attr(object, "inkscape:document-units"); + sp_object_read_attr(object, "units"); sp_object_read_attr(object, "viewonly"); sp_object_read_attr(object, "showguides"); sp_object_read_attr(object, "showgrid"); @@ -572,6 +573,30 @@ object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; } + case SP_ATTR_UNITS: { + SPUnit const *new_unit = NULL; + + if (value) { + SPUnit const *const req_unit = sp_unit_get_by_abbreviation(value); + if ( req_unit == NULL ) { + g_warning("Unrecognized unit `%s'", value); + /* fixme: Document errors should be reported in the status bar or + * the like (e.g. as per + * http://www.w3.org/TR/SVG11/implnote.html#ErrorProcessing); g_log + * should be only for programmer errors. */ + } else if ( req_unit->base == SP_UNIT_ABSOLUTE || + req_unit->base == SP_UNIT_DEVICE ) { + new_unit = req_unit; + } else { + g_warning("Document units must be absolute like `mm', `pt' or `px', but found `%s'", + value); + /* fixme: Don't use g_log (see above). */ + } + } + nv->units = new_unit; + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + } default: if (((SPObjectClass *) (parent_class))->set) { ((SPObjectClass *) (parent_class))->set(object, key, value); === modified file 'src/sp-namedview.h' --- src/sp-namedview.h 2009-08-06 14:17:17 +0000 +++ src/sp-namedview.h 2010-09-23 15:36:43 +0000 @@ -54,7 +54,8 @@ bool grids_visible; SPUnit const *doc_units; - + SPUnit const *units; + GQuark default_layer_id; double connector_spacing; === modified file 'src/ui/widget/page-sizer.cpp' --- src/ui/widget/page-sizer.cpp 2010-06-01 03:34:51 +0000 +++ src/ui/widget/page-sizer.cpp 2010-09-23 15:37:14 +0000 @@ -297,6 +297,15 @@ _portraitButton.set_group (group); _portraitButton.set_active (true); + // Setting default custom unit to document unit + SPDesktop *dt = SP_ACTIVE_DESKTOP; + SPNamedView *nv = sp_desktop_namedview(dt); + if (nv->units) { + _dimensionUnits.setUnit(nv->units); + } else if (nv->doc_units) { + _dimensionUnits.setUnit(nv->doc_units); + } + //## Set up custom size frame _customFrame.set_label(_("Custom size")); pack_start (_customFrame, false, false, 0);