/usr/lib/python2.7/dist-packages/uniconvertor/app/scripts/abut_horizontal.py is in python-uniconvertor 1.1.5-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | # Sketch - A Python-based interactive drawing program
# Copyright (C) 1999 by Bernhard Herzog
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# This is a reimplementation of the Arrange| Abut Horizontal command as
# a safe script.
#
# This script uses these methods and concepts:
#
# SelectedObjects():
#
# The document method SelectedObjects returns a list of all
# currently selected objects. If no objects are selected the list
# is empty.
#
# coord_rect:
#
# The coord_rect attribute of a graphics object is an axis-aligned
# rectangle that contains the entire object. This is not exactly
# the same as a bounding rectangle, as explained in more detail in
# the developer's guide (Doc/devguide.html).
#
# The coord_rect is a rect object and has four read only
# attributes, left, bottom, right, and top, that contain the
# coordinates of the rectangle.
#
# Point(x, y):
#
# Point is a function that returns a point object with the
# coordinates x and y. point objects are immutable objects that
# overload the usual arithmetic operators such as +, -, * among
# others. * is the inner product or multiplication with a scalar
# depending on the operand types. Thy are interpreted as points or
# vectors depending on the context in which they are used.
#
# Point objects are described in more detail in the developer's
# guide.
#
# Translate(offset):
#
# The translate method of a graphics object translates (i.e.
# moves) the object by offset, which has to be a point object.
#
# This method modifies the object involved and an advanced script
# would have to deal with undo when using this method.
#
# First, we need the Sketch specific function Point. Point creates
# point-objects, that represent a 2D-point or vector.
from app import Point
# define the abut_horizontal function. As stated above, it has to accept
# a single argument, customarily called 'context'.
def abut_horizontal(context):
# We have to refer to the document frequently, so save some typing
# by binding it to the local variable doc.
doc = context.document
pos = []
for obj in doc.SelectedObjects():
rect = obj.coord_rect
pos.append((rect.left, rect.top, rect.right - rect.left, obj))
if pos:
# pos is empty (= false) if no object is selected
pos.sort()
start, top, width, ob = pos[0]
next = start + width
for left, top, width, obj in pos[1:]:
obj.Translate(Point(next - left, 0))
next = next + width
# register script
import app.Scripting
app.Scripting.AddFunction('abut_horizontal', 'Abut Horizontal',
abut_horizontal, menu = 'Arrange')
|