diff options
| author | Johan B. C. Engelen <jbc.engelen@swissonline.ch> | 2007-11-29 23:31:22 +0000 |
|---|---|---|
| committer | johanengelen <johanengelen@users.sourceforge.net> | 2007-11-29 23:31:22 +0000 |
| commit | 66a8a882b6c4c013560363f725ae317a648f9f39 (patch) | |
| tree | a1891403e077d0a15049acdfab99614b8b6a5bb1 /src/display/canvas-grid.cpp | |
| parent | show gridtype name in document properties (diff) | |
| download | inkscape-66a8a882b6c4c013560363f725ae317a648f9f39.tar.gz inkscape-66a8a882b6c4c013560363f725ae317a648f9f39.zip | |
add visibility and snap_enabled checkbuttons for grids.
visibility already works, snap_enabled not yet.
(bzr r4146)
Diffstat (limited to 'src/display/canvas-grid.cpp')
| -rw-r--r-- | src/display/canvas-grid.cpp | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/src/display/canvas-grid.cpp b/src/display/canvas-grid.cpp index 92e0c5096..de9afbfc1 100644 --- a/src/display/canvas-grid.cpp +++ b/src/display/canvas-grid.cpp @@ -7,6 +7,12 @@ * */ +/* As a general comment, I am not exactly proud of how things are done. + * (for example the 'enable' widget and readRepr things) + * It does seem to work however. I intend to clean up and sort things out later, but that can take forever... + * Don't be shy to correct things. + */ + #include "sp-canvas-util.h" #include "display-forward.h" @@ -112,9 +118,10 @@ grid_canvasitem_render (SPCanvasItem * item, SPCanvasBuf * buf) { GridCanvasItem *gridcanvasitem = INKSCAPE_GRID_CANVASITEM (item); - sp_canvas_prepare_buffer (buf); - - if (gridcanvasitem->grid) gridcanvasitem->grid->Render(buf); + if ( gridcanvasitem->grid && gridcanvasitem->grid->isVisible() ) { + sp_canvas_prepare_buffer (buf); + gridcanvasitem->grid->Render(buf); + } } static void @@ -151,7 +158,7 @@ grid_canvasitem_update (SPCanvasItem *item, NR::Matrix const &affine, unsigned i }; CanvasGrid::CanvasGrid(SPNamedView * nv, Inkscape::XML::Node * in_repr, SPDocument *in_doc, GridType type) - : namelabel("", Gtk::ALIGN_LEFT), gridtype(type) + : namelabel("", Gtk::ALIGN_LEFT), gridtype(type), visible(true), snap_enabled(true) { repr = in_repr; doc = in_doc; @@ -166,7 +173,17 @@ CanvasGrid::CanvasGrid(SPNamedView * nv, Inkscape::XML::Node * in_repr, SPDocume str += getName(); str += "</b>"; namelabel.set_markup(str); - vbox.pack_start(namelabel,true,true); + vbox.pack_start(namelabel, true, true); + + _rcb_visible.init ( _("_Visible"), + _("Determines whether the grid is displayed or not. Objects are still snapped to invisible grids."), + "visible", _wr, false, repr, doc); + vbox.pack_start(*dynamic_cast<Gtk::Widget*>(_rcb_visible._button), true, true); + + _rcb_snap_enabled.init ( _("_Snapping enabled"), + _("Determines whether to snap to this grid or not. Can be 'on' for invisible grids."), + "snap_enabled", _wr, false, repr, doc); + vbox.pack_start(*dynamic_cast<Gtk::Widget*>(_rcb_snap_enabled._button), true, true); } CanvasGrid::~CanvasGrid() @@ -319,7 +336,6 @@ CanvasGrid::on_repr_attr_changed(Inkscape::XML::Node *repr, gchar const *key, gc } - // ########################################################## // CanvasXYGrid @@ -577,8 +593,8 @@ CanvasXYGrid::readRepr() if ( (value = repr->attribute("originx")) ) { sp_nv_read_length(value, SP_UNIT_ABSOLUTE | SP_UNIT_DEVICE, &origin[NR::X], &gridunit); origin[NR::X] = sp_units_get_pixels(origin[NR::X], *(gridunit)); - } + if ( (value = repr->attribute("originy")) ) { sp_nv_read_length(value, SP_UNIT_ABSOLUTE | SP_UNIT_DEVICE, &origin[NR::Y], &gridunit); origin[NR::Y] = sp_units_get_pixels(origin[NR::Y], *(gridunit)); @@ -624,6 +640,10 @@ CanvasXYGrid::readRepr() render_dotted = (strcmp(value,"true") == 0); } + if ( (value = repr->attribute("visible")) ) { + visible = (strcmp(value,"true") == 0); + } + for (GSList *l = canvasitems; l != NULL; l = l->next) { sp_canvas_item_request_update ( SP_CANVAS_ITEM(l->data) ); } @@ -663,6 +683,9 @@ CanvasXYGrid::updateWidgets() _wr.setUpdating (true); + _rcb_visible.setActive(visible); + _rcb_snap_enabled.setActive(snap_enabled); + _rumg.setUnit (gridunit); gdouble val; @@ -683,6 +706,8 @@ CanvasXYGrid::updateWidgets() _rcp_gmcol.setRgba32 (empcolor); _rsi.setValue (empspacing); + _rcb_dotted.setActive(render_dotted); + _wr.setUpdating (false); return; |
