diff options
| author | Denis Declara <declara91@gmail.com> | 2012-03-20 10:09:49 +0000 |
|---|---|---|
| committer | Denis Declara <declara91@gmail.com> | 2012-03-20 10:09:49 +0000 |
| commit | 1cd9c8450500b945614a12a762e06c057ee85bbe (patch) | |
| tree | 9973553a223ef7d6c5f9d18c35766fb3e7296e57 /share | |
| parent | Fix deprecated Gtk::Widget flags (diff) | |
| parent | desktop cutting plotter dxf output. ignore orphaned clones (Bug 957086) (diff) | |
| download | inkscape-1cd9c8450500b945614a12a762e06c057ee85bbe.tar.gz inkscape-1cd9c8450500b945614a12a762e06c057ee85bbe.zip | |
Merged with trunk
(bzr r11073.1.1)
Diffstat (limited to 'share')
| -rw-r--r-- | share/extensions/Makefile.am | 1 | ||||
| -rwxr-xr-x | share/extensions/dxf_outlines.py | 13 | ||||
| -rw-r--r-- | share/extensions/embedselectedimages.inx | 14 | ||||
| -rw-r--r-- | share/extensions/measure.inx | 22 | ||||
| -rwxr-xr-x | share/extensions/measure.py | 37 |
5 files changed, 69 insertions, 18 deletions
diff --git a/share/extensions/Makefile.am b/share/extensions/Makefile.am index eab9a9c6c..238653b9a 100644 --- a/share/extensions/Makefile.am +++ b/share/extensions/Makefile.am @@ -229,6 +229,7 @@ modules = \ dxf_output.inx \ edge3d.inx \ embedimage.inx \ + embedselectedimages.inx \ eps_input.inx \ eqtexsvg.inx \ export_gimp_palette.inx \ diff --git a/share/extensions/dxf_outlines.py b/share/extensions/dxf_outlines.py index d93e1ff2f..3f5f15b4d 100755 --- a/share/extensions/dxf_outlines.py +++ b/share/extensions/dxf_outlines.py @@ -235,12 +235,13 @@ class MyEffect(inkex.Effect): # get referenced node refid = node.get(inkex.addNS('href','xlink')) refnode = self.getElementById(refid[1:]) - if refnode.tag == inkex.addNS('g','svg'): - self.process_group(refnode) - elif refnode.tag == inkex.addNS('use', 'svg'): - self.process_clone(refnode) - else: - self.process_shape(refnode, self.groupmat[-1]) + if refnode is not None: + if refnode.tag == inkex.addNS('g','svg'): + self.process_group(refnode) + elif refnode.tag == inkex.addNS('use', 'svg'): + self.process_clone(refnode) + else: + self.process_shape(refnode, self.groupmat[-1]) # pop transform if trans or x or y: self.groupmat.pop() diff --git a/share/extensions/embedselectedimages.inx b/share/extensions/embedselectedimages.inx new file mode 100644 index 000000000..06d4c927f --- /dev/null +++ b/share/extensions/embedselectedimages.inx @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> + <_name>Embed Selected Images</_name> + <id>org.ekips.filter.embedselectedimages</id> + <dependency type="executable" location="extensions">embedimage.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + <param name="selectedonly" type="boolean" gui-hidden="true" _gui-text="Embed only selected images">true</param> + <effect needs-live-preview="false"> + <object-type>all</object-type> + </effect> + <script> + <command reldir="extensions" interpreter="python">embedimage.py</command> + </script> +</inkscape-extension> diff --git a/share/extensions/measure.inx b/share/extensions/measure.inx index 63a919806..67d44616f 100644 --- a/share/extensions/measure.inx +++ b/share/extensions/measure.inx @@ -10,6 +10,25 @@ <_item value="length">Length</_item> <_item msgctxt="measure extension" value="area">Area</_item> </param> + <param name="format" type="enum" _gui-text="Display Format: "> + <_item value="textonpath">Text On Path</_item> + <_item value="0">Angle 0</_item> + <_item value="30">Angle 30</_item> + <_item value="45">Angle 45</_item> + <_item value="60">Angle 60</_item> + <_item value="90">Angle 90</_item> + <_item value="120">Angle 120</_item> + <_item value="135">Angle 135</_item> + <_item value="150">Angle 150</_item> + <_item value="180">Angle 180</_item> + <_item value="210">Angle 210</_item> + <_item value="225">Angle 225</_item> + <_item value="240">Angle 240</_item> + <_item value="270">Angle 270</_item> + <_item value="300">Angle 300</_item> + <_item value="315">Angle 315</_item> + <_item value="330">Angle 330</_item> + </param> <param name="fontsize" type="int" min="1" max="1000" _gui-text="Font size (px):">12</param> <param name="offset" type="float" min="-10000" max="10000" _gui-text="Offset (px):">-6</param> <param name="precision" type="int" min="0" max="25" _gui-text="Precision:">2</param> @@ -29,8 +48,9 @@ </param> </page> <page name="desc" _gui-text="Help"> - <_param name="measurehelp" type="description" xml:space="preserve">This effect measures the length, or area, of the selected path and adds it as a text-on-path object with the selected unit. + <_param name="measurehelp" type="description" xml:space="preserve">This effect measures the length, or area, of the selected paths and adds it as a text object with the selected units. + * Display format can be either Text-On-Path, or stand-alone text at a specified angle. * The number of significant digits can be controlled by the Precision field. * The Offset field controls the distance from the text to the path. * The Scale factor can be used to make measurements in scaled drawings. For example, if 1 cm in the drawing equals 2.5 m in the real world, Scale must be set to 250. diff --git a/share/extensions/measure.py b/share/extensions/measure.py index e1f8eab1d..415b21898 100755 --- a/share/extensions/measure.py +++ b/share/extensions/measure.py @@ -91,6 +91,10 @@ class Length(inkex.Effect): action="store", type="string", dest="type", default="length", help="Type of measurement") + self.OptionParser.add_option("--format", + action="store", type="string", + dest="format", default="textonpath", + help="Display Format") self.OptionParser.add_option("-f", "--fontsize", action="store", type="int", dest="fontsize", default=20, @@ -139,14 +143,6 @@ class Length(inkex.Effect): for id, node in self.selected.iteritems(): if node.tag == inkex.addNS('path','svg'): self.group = inkex.etree.SubElement(node.getparent(),inkex.addNS('text','svg')) - - # t = node.get('transform') - # Removed to fix LP #308183 - # (Measure Path text shifted when used with a copied object) - #if t: - # self.group.set('transform', t) - - a =[] mat = simpletransform.composeParents(node, [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]]) p = cubicsuperpath.parsePath(node.get('d')) @@ -158,10 +154,16 @@ class Length(inkex.Effect): stotal = csparea(p)*factor*self.options.scale # Format the length as string lenstr = locale.format("%(len)25."+str(prec)+"f",{'len':round(stotal*factor*self.options.scale,prec)}).strip() - if self.options.type == "length": - self.addTextOnPath(self.group, 0, 0, lenstr+' '+self.options.unit, id, 'start', '50%', self.options.offset) + if self.options.format == 'textonpath': + if self.options.type == "length": + self.addTextOnPath(self.group, 0, 0, lenstr+' '+self.options.unit, id, 'start', '50%', self.options.offset) + else: + self.addTextOnPath(self.group, 0, 0, lenstr+' '+self.options.unit+'^2', id, 'start', '0%', self.options.offset) else: - self.addTextOnPath(self.group, 0, 0, lenstr+' '+self.options.unit+'^2', id, 'start', '0%', self.options.offset) + if self.options.type == "length": + self.addTextWithTspan(self.group, p[0][0][1][0], p[0][0][1][1], lenstr+' '+self.options.unit, id, 'start', -int(self.options.format), self.options.offset + self.options.fontsize/2) + else: + self.addTextWithTspan(self.group, p[0][0][1][0], p[0][0][1][1], lenstr+' '+self.options.unit+'^2', id, 'start', -int(self.options.format), -self.options.offset + self.options.fontsize/2) def addTextOnPath(self, node, x, y, text, id, anchor, startOffset, dy = 0): new = inkex.etree.SubElement(node,inkex.addNS('textPath','svg')) @@ -179,6 +181,19 @@ class Length(inkex.Effect): node.set('x', str(x)) node.set('y', str(y)) + def addTextWithTspan(self, node, x, y, text, id, anchor, angle, dy = 0): + new = inkex.etree.SubElement(node,inkex.addNS('tspan','svg'), {inkex.addNS('role','sodipodi'): 'line'}) + s = {'text-align': 'center', 'vertical-align': 'bottom', + 'text-anchor': anchor, 'font-size': str(self.options.fontsize), + 'fill-opacity': '1.0', 'stroke': 'none', + 'font-weight': 'normal', 'font-style': 'normal', 'fill': '#000000'} + new.set('style', simplestyle.formatStyle(s)) + new.set('dy', str(dy)) + new.text = str(text) + node.set('x', str(x)) + node.set('y', str(y)) + node.set('transform', 'rotate(%s, %s, %s)' % (angle, x, y)) + if __name__ == '__main__': e = Length() e.affect() |
