summaryrefslogtreecommitdiff
path: root/librelogo
diff options
context:
space:
mode:
Diffstat (limited to 'librelogo')
-rw-r--r--librelogo/source/LibreLogo/LibreLogo.py187
1 files changed, 93 insertions, 94 deletions
diff --git a/librelogo/source/LibreLogo/LibreLogo.py b/librelogo/source/LibreLogo/LibreLogo.py
index 44daaeb00767..e018d33ebdd1 100644
--- a/librelogo/source/LibreLogo/LibreLogo.py
+++ b/librelogo/source/LibreLogo/LibreLogo.py
@@ -16,6 +16,48 @@ import traceback
import itertools
import threading
import time as __time__
+from math import pi, sin, cos, asin, hypot
+
+from com.sun.star.awt import Point as __Point__
+from com.sun.star.awt import Gradient as __Gradient__
+from com.sun.star.awt.GradientStyle import LINEAR as __GradientStyle_LINEAR__
+from com.sun.star.drawing import LineDash as __LineDash__
+from com.sun.star.drawing import Hatch as __Hatch__
+from com.sun.star.drawing import PolyPolygonBezierCoords as __Bezier__
+from com.sun.star.text.TextContentAnchorType import AT_PAGE as __AT_PAGE__
+from com.sun.star.text.WrapTextMode import THROUGH as __THROUGH__
+from com.sun.star.drawing.LineCap import BUTT as __Cap_NONE__
+from com.sun.star.drawing.LineCap import ROUND as __Cap_ROUND__
+from com.sun.star.drawing.LineCap import SQUARE as __Cap_SQUARE__
+from com.sun.star.drawing.LineJoint import NONE as __Joint_NONE__
+from com.sun.star.drawing.LineJoint import BEVEL as __BEVEL__
+from com.sun.star.drawing.LineJoint import MITER as __MITER__
+from com.sun.star.drawing.LineJoint import ROUND as __ROUNDED__
+from com.sun.star.drawing.FillStyle import NONE as __FillStyle_NONE__
+from com.sun.star.drawing.FillStyle import GRADIENT as __FillStyle_GRADIENT__
+from com.sun.star.drawing.LineStyle import NONE as __LineStyle_NONE__
+from com.sun.star.drawing.LineStyle import SOLID as __LineStyle_SOLID__
+from com.sun.star.drawing.LineStyle import DASH as __LineStyle_DASHED__
+from com.sun.star.drawing.DashStyle import RECT as __DashStyle_RECT__
+from com.sun.star.drawing.CircleKind import FULL as __FULL__
+from com.sun.star.drawing.CircleKind import SECTION as __SECTION__
+from com.sun.star.drawing.CircleKind import CUT as __CUT__
+from com.sun.star.drawing.CircleKind import ARC as __ARC__
+from com.sun.star.awt.FontSlant import NONE as __Slant_NONE__
+from com.sun.star.awt.FontSlant import ITALIC as __Slant_ITALIC__
+from com.sun.star.awt.FontUnderline import SINGLE as __Underline_SINGLE__
+from com.sun.star.awt.FontStrikeout import SINGLE as __Strikeout_SINGLE__
+from com.sun.star.awt import Size as __Size__
+from com.sun.star.awt import WindowDescriptor as __WinDesc__
+from com.sun.star.awt.WindowClass import MODALTOP as __MODALTOP__
+from com.sun.star.awt.VclWindowPeerAttribute import OK as __OK__
+from com.sun.star.awt.VclWindowPeerAttribute import OK_CANCEL as __OK_CANCEL__
+from com.sun.star.awt.VclWindowPeerAttribute import YES_NO_CANCEL as __YES_NO_CANCEL__ # OK_CANCEL, YES_NO, RETRY_CANCEL, DEF_OK, DEF_CANCEL, DEF_RETRY, DEF_YES, DEF_NO
+from com.sun.star.awt.PushButtonType import OK as __Button_OK__
+from com.sun.star.awt.PushButtonType import CANCEL as __Button_CANCEL__
+from com.sun.star.util.MeasureUnit import APPFONT as __APPFONT__
+from com.sun.star.beans import PropertyValue as __property__
+from com.sun.star.lang import Locale
__lng__ = {}
@@ -28,22 +70,22 @@ def __l12n__(lng):
global __lng_fallback__
try:
return __lng__[lng]
- except:
+ except Exception:
try:
# load resource file
__lng__[lng] = dict([[i.decode("unicode-escape").split("=")[0].strip(), i.decode("unicode-escape").split("=")[1].strip().strip("|")] for i in open(__lngpath__ + "LibreLogo_" + lng + ".properties", 'rb').readlines() if b"=" in i])
return __lng__[lng]
- except:
+ except Exception:
try:
# or use embedded fallback resource dictionary
__lng__[lng] = {}
for i in __lng_fallback__:
try:
__lng__[lng][i] = __lng_fallback__[i][lng]
- except:
+ except Exception:
try:
__lng__[lng][i] = __lng_fallback__[i][lng.split('_')[0]]
- except:
+ except Exception:
__lng__[lng][i] = __lng_fallback__[i]["en_US"]
return __lng__[lng]
except Exception:
@@ -52,7 +94,7 @@ def __l12n__(lng):
try:
urebootstrap = os.environ["URE_BOOTSTRAP"]
-except:
+except Exception:
# starting in command line updates embedded fallback language dictionary
print("Update fallback language resource using property file arguments")
for i in sys.argv[1:]:
@@ -168,7 +210,7 @@ class __Doc__:
self.secure = False
try:
self.drawpage = doc.DrawPage # Writer
- except:
+ except Exception:
self.drawpage = doc.DrawPages.getByIndex(0) # Draw, Impress
self.shapecache = {}
self.shapecount = itertools.count()
@@ -201,49 +243,6 @@ class __Doc__:
self.fontstyle = 0
self.points = []
-from math import pi, sin, cos, asin, hypot
-
-from com.sun.star.awt import Point as __Point__
-from com.sun.star.awt import Gradient as __Gradient__
-from com.sun.star.awt.GradientStyle import LINEAR as __GradientStyle_LINEAR__
-from com.sun.star.drawing import LineDash as __LineDash__
-from com.sun.star.drawing import Hatch as __Hatch__
-from com.sun.star.drawing import PolyPolygonBezierCoords as __Bezier__
-from com.sun.star.text.TextContentAnchorType import AT_PAGE as __AT_PAGE__
-from com.sun.star.text.WrapTextMode import THROUGH as __THROUGH__
-from com.sun.star.drawing.LineCap import BUTT as __Cap_NONE__
-from com.sun.star.drawing.LineCap import ROUND as __Cap_ROUND__
-from com.sun.star.drawing.LineCap import SQUARE as __Cap_SQUARE__
-from com.sun.star.drawing.LineJoint import NONE as __Joint_NONE__
-from com.sun.star.drawing.LineJoint import BEVEL as __BEVEL__
-from com.sun.star.drawing.LineJoint import MITER as __MITER__
-from com.sun.star.drawing.LineJoint import ROUND as __ROUNDED__
-from com.sun.star.drawing.FillStyle import NONE as __FillStyle_NONE__
-from com.sun.star.drawing.FillStyle import GRADIENT as __FillStyle_GRADIENT__
-from com.sun.star.drawing.LineStyle import NONE as __LineStyle_NONE__
-from com.sun.star.drawing.LineStyle import SOLID as __LineStyle_SOLID__
-from com.sun.star.drawing.LineStyle import DASH as __LineStyle_DASHED__
-from com.sun.star.drawing.DashStyle import RECT as __DashStyle_RECT__
-from com.sun.star.drawing.CircleKind import FULL as __FULL__
-from com.sun.star.drawing.CircleKind import SECTION as __SECTION__
-from com.sun.star.drawing.CircleKind import CUT as __CUT__
-from com.sun.star.drawing.CircleKind import ARC as __ARC__
-from com.sun.star.awt.FontSlant import NONE as __Slant_NONE__
-from com.sun.star.awt.FontSlant import ITALIC as __Slant_ITALIC__
-from com.sun.star.awt.FontUnderline import SINGLE as __Underline_SINGLE__
-from com.sun.star.awt.FontStrikeout import SINGLE as __Strikeout_SINGLE__
-from com.sun.star.awt import Size as __Size__
-from com.sun.star.awt import WindowDescriptor as __WinDesc__
-from com.sun.star.awt.WindowClass import MODALTOP as __MODALTOP__
-from com.sun.star.awt.VclWindowPeerAttribute import OK as __OK__
-from com.sun.star.awt.VclWindowPeerAttribute import OK_CANCEL as __OK_CANCEL__
-from com.sun.star.awt.VclWindowPeerAttribute import YES_NO_CANCEL as __YES_NO_CANCEL__ # OK_CANCEL, YES_NO, RETRY_CANCEL, DEF_OK, DEF_CANCEL, DEF_RETRY, DEF_YES, DEF_NO
-from com.sun.star.awt.PushButtonType import OK as __Button_OK__
-from com.sun.star.awt.PushButtonType import CANCEL as __Button_CANCEL__
-from com.sun.star.util.MeasureUnit import APPFONT as __APPFONT__
-from com.sun.star.beans import PropertyValue as __property__
-from com.sun.star.lang import Locale
-
def __getprop__(name, value):
p, p.Name, p.Value = __property__(), name, value
return p
@@ -283,7 +282,7 @@ def __getdocument__():
doc = XSCRIPTCONTEXT.getDocument() # noqa: F821
try:
_ = __docs__[doc.RuntimeUID]
- except:
+ except Exception:
_ = __Doc__(doc)
__docs__[doc.RuntimeUID] = _
@@ -303,7 +302,7 @@ def Input(s):
# label
l = d.createInstance("com.sun.star.awt.UnoControlFixedTextModel" )
- if type(s) == list:
+ if type(s) is list:
s = s[0]
l.PositionX, l.PositionY, l.Width, l.Height, l.Name, l.TabIndex, l.Label = 5, 4, 140, 14, "l1", 2, s
@@ -351,7 +350,7 @@ def Input(s):
def __string__(s, decimal = None): # convert decimal sign, localized BOOL and SET
if not decimal:
decimal = _.decimal
- if decimal == ',' and type(s) == float:
+ if decimal == ',' and type(s) is float:
return str(s).replace(".", ",")
if type(s) in [list, tuple, dict, set]:
s = re.sub("(?u)(['\"])(([^'\"]|\\['\"])*)(?<!\\\\)\\1", __encodestring__, str(s)) # XXX fix double '\'\"'
@@ -361,7 +360,7 @@ def __string__(s, decimal = None): # convert decimal sign, localized BOOL and SE
s.replace('set', __locname__('SET')).replace('True', __locname__('TRUE')).replace('False', __locname__('FALSE')))
if type(s) in [str]:
return s
- elif type(s) == bool:
+ elif type(s) is bool:
return __locname__(str(s).upper())
return str(s)
@@ -393,7 +392,7 @@ def MessageBox(parent, message, title, msgtype = "messbox", buttons = __OK__):
def Random(r):
try:
return r * random.random()
- except:
+ except Exception:
return list(r)[int(random.random() * len(r))]
def to_ascii(s):
@@ -418,7 +417,7 @@ def __getcursor__(fulltext):
if fulltext:
1/len(text.getString()) # exception, if zero length
realselection = True
- except:
+ except Exception:
text = _.doc.getText().createTextCursorByRange(_.doc.getText().getStart())
text.gotoEnd(True)
return text, realselection
@@ -441,7 +440,7 @@ def __translate__(arg = None):
guess = guess.guessPrimaryLanguage(text, 0, len(text))
try:
l = {'cs': 'cs_CZ', 'el': 'el_GR', 'en': 'en_US', 'pt': 'pt_BR'}[guess.Language]
- except:
+ except Exception:
l = guess.Language + '_' + guess.Language.upper()
lang = __l12n__(l)
if not lang:
@@ -539,7 +538,7 @@ class LogoProgram(threading.Thread):
for attribute in attributes:
if attribute.Name == "EventType" and attribute.Value == "Script":
return 2
- except:
+ except Exception:
pass
_.secure = True
@@ -562,7 +561,7 @@ class LogoProgram(threading.Thread):
__dispatcher__(".uno:Escape")
try:
_.doc.CurrentController.getViewCursor().gotoRange(_.origcursor[0], False)
- except:
+ except Exception:
_.doc.CurrentController.getViewCursor().gotoRange(_.origcursor[0].getStart(), False)
except Exception:
try:
@@ -603,7 +602,7 @@ class LogoProgram(threading.Thread):
else:
MessageBox(parent, __l12n__(_.lng)['ERROR'] %line, __l12n__(_.lng)['LIBRELOGO'], "errorbox")
__trace__()
- except:
+ except Exception:
pass
with __lock__:
__thread__ = None
@@ -709,7 +708,7 @@ def __visible__(shape, visible = -1): # for OOo 3.2 compatibility
if visible == -1:
return shape.Visible
shape.Visible = visible
- except:
+ except Exception:
return True
def hideturtle():
@@ -942,7 +941,7 @@ def __getshape__(shapename):
if _.shapecache[shapename].Parent:
return _.shapecache[shapename]
_.shapecache.pop(shapename)
- except:
+ except Exception:
pass
return None
@@ -964,7 +963,7 @@ def heading(deg = -1, go = False):
else:
if deg == u'any':
turtle.RotateAngle = random.random() * 36000
- elif type(deg) == list:
+ elif type(deg) is list:
pos = turtle.getPosition()
px, py = pos.X + turtle.BoundRect.Width / 2.0, pos.Y + turtle.BoundRect.Height / 2.0
dx = px * __MM10_TO_TWIP__ - deg[0] * __PT_TO_TWIP__
@@ -985,13 +984,13 @@ def rotate(shapename, deg):
shape.RotateAngle = shape.RotateAngle + deg
def forward(n):
- if type(n) == list:
+ if type(n) is list:
pos = position()
angle = heading()
dx = n[1] * sin((pi/180) * angle) + n[0] * sin((pi/180)*(angle + 90))
dy = n[1] * cos((pi/180) * angle) + n[0] * cos((pi/180)*(angle + 90))
position([pos[0] + dx, pos[1] - dy])
- elif type(n) == str:
+ elif type(n) is str:
siz = label([1, 1, n])
pos = position()
angle = heading()
@@ -1004,7 +1003,7 @@ def forward(n):
__go__(__TURTLE__, -n * __PT_TO_TWIP__)
def backward(n):
- if type(n) == list:
+ if type(n) is list:
forward([-n[0], -n[1]])
turnright(180)
else:
@@ -1060,7 +1059,7 @@ def __go__(shapename, n, dot = False, preciseAngle = -1):
if shapename == __TURTLE__:
try:
turtlepos = turtle.PolyPolygon[-1][-1]
- except:
+ except Exception:
pass
pos = turtle.getPosition()
dx = n * sin((pi/180)*(max(turtle.RotateAngle, preciseAngle)/100))
@@ -1166,7 +1165,7 @@ def __fillit__(filled = True):
shape.FillBackground = True if shape.FillTransparence != 100 else False
shape.FillHatch = _.hatch
shape.FillStyle = 3
- elif type(_.areacolor) != tuple:
+ elif type(_.areacolor) is not tuple:
shape.FillStyle = int(filled)
if shape.LineTransparence == 100:
shape.LineStyle = 0
@@ -1221,7 +1220,7 @@ def __boxshape__(shapetype, l):
shape.FillBackground = True if shape.FillTransparence != 100 else False
shape.FillHatch = _.hatch
shape.FillStyle = 3
- elif type(_.areacolor) != tuple:
+ elif type(_.areacolor) is not tuple:
shape.FillStyle = 1
if shape.LineTransparence == 100:
shape.LineStyle = 0
@@ -1239,7 +1238,7 @@ def __boxshape__(shapetype, l):
shape.CircleStartAngle = (-l[3] - 270) * 100
shape.CircleEndAngle = (-l[2] - 270) * 100
shape.CircleKind = [__FULL__, __SECTION__, __CUT__, __ARC__][l[4]]
- except:
+ except Exception:
pass
pos.X = pos.X + shape.BoundRect.X - oldBoundRect.X
pos.Y = pos.Y + shape.BoundRect.Y - oldBoundRect.Y
@@ -1250,7 +1249,7 @@ def __boxshape__(shapetype, l):
__lefthang__(shape)
def ellipse(l):
- if type(l) != type([]): # default for circle and square
+ if type(l) is not type([]): # default for circle and square
l = [l, l]
if _.linestyle == __LineStyle_DOTTED__:
__groupstart__()
@@ -1268,7 +1267,7 @@ def ellipse(l):
__boxshape__("Ellipse", l)
def rectangle(l):
- if type(l) != type([]): # default for circle and square
+ if type(l) is not type([]): # default for circle and square
l = [l, l]
if _.linestyle == __LineStyle_DOTTED__:
__groupstart__()
@@ -1278,7 +1277,7 @@ def rectangle(l):
_.pencolor, _.linestyle = pc, __LineStyle_DOTTED__
point()
shape = __getshape__(__ACTUAL__)
- if type(l) != type([]):
+ if type(l) is not type([]):
l = [l, l]
if len(l) == 2:
l = l + [0]
@@ -1302,7 +1301,7 @@ def rectangle(l):
__boxshape__("Rectangle", l)
def label(st):
- if type(st) != type([]):
+ if type(st) is not type([]):
st = [0, 0, st]
# get text size
shape = _.doc.createInstance( "com.sun.star.drawing.TextShape")
@@ -1526,11 +1525,11 @@ def sleep(t):
def __removeshape__(shapename):
try:
_.shapecache.pop(shapename).Name = ""
- except:
+ except Exception:
pass
def __fontweight__(w):
- if type(w) == int:
+ if type(w) is int:
return w
elif re.match(__l12n__(_.lng)['BOLD'], w, flags = re.I):
return 150
@@ -1539,7 +1538,7 @@ def __fontweight__(w):
return 100
def __fontstyle__(w):
- if type(w) == int:
+ if type(w) is int:
return w
elif re.match(__l12n__(_.lng)['ITALIC'], w, flags = re.I):
return __Slant_ITALIC__
@@ -1550,7 +1549,7 @@ def __fontstyle__(w):
def __color__(c):
if type(c) in [int, float]:
return c
- if type(c) == str:
+ if type(c) is str:
if c == u'any':
rc, rv, rgray = __NORMCOLORS__[int(random.random()*7)], random.random(), random.random() ** 0.5
ratio = 1.0*abs(rc[2])/(abs(rc[2]) + abs(rc[4]))
@@ -1572,7 +1571,7 @@ def __color__(c):
elif c[0].isdigit():
return int(c, 0) # recognize hex and decimal numbers as strings
return __colors__[_.lng][c.lower()]
- if type(c) == list:
+ if type(c) is list:
if len(c) == 1: # color index
return __COLORS__[int(c[0])][1]
elif len(c) == 3: # RGB
@@ -1588,12 +1587,12 @@ def __linestyle__(s):
return _.linestyle, __LineDash__(__DashStyle_RECT__, 0, 0, 1, 100, 100)
elif _.linestyle == __LineStyle_DOTTED__:
return __LineStyle_DASHED__, __LineDash__(__DashStyle_RECT__, 1, 1, 0, 0, 100000)
- elif type(s) == list:
+ elif type(s) is list:
return __LineStyle_DASHED__, __LineDash__((s[5:6] or [0])[0], s[0], s[1] * __PT_TO_TWIP__, s[2], s[3] * __PT_TO_TWIP__, s[4] * __PT_TO_TWIP__)
return s, __LineDash__()
def fillstyle(s):
- if type(s) == list:
+ if type(s) is list:
color, null = __splitcolor__(__color__(s[1]))
_.hatch = __Hatch__(s[0] - 1, color, s[2] * __PT_TO_TWIP__, s[3] * 10)
elif s == 0:
@@ -1602,20 +1601,20 @@ def fillstyle(s):
fillstyle([[1, 0, 5, 0], [1, 0, 5, 45], [1, 0, 5, -45], [1, 0, 5, 90], [2, [127, 0, 0], 5, 45], [2, [127, 0, 0], 5, 0], [2, [0, 0, 127], 5, 45], [2, [0, 0, 127], 5, 0], [3, [0, 0, 127], 5, 0], [1, 0, 25, 45]][s-1])
def __splitcolor__(c, shape = None, angle = None):
- if shape and (type(c) == tuple or type(_.t10y) == list):
+ if shape and (type(c) is tuple or type(_.t10y) is list):
angle = heading() if angle is None else -angle / 100 + 360
- if type(c) == tuple:
+ if type(c) is tuple:
shape.FillStyle = __FillStyle_GRADIENT__
# gradient color: [color1, color2, style, angle(must be positive for I/O), border, x_percent, y_percent, color1_intensity_percent, color2_intensity_percent]
d, d[0:len(c)], c = [0, 0, __GradientStyle_LINEAR__, 0, 0, 0, 0, 100, 100], c, c[0]
shape.FillGradient = __Gradient__(d[2], d[0], d[1], (-angle + d[3]) * 10 % 3600, d[4], d[5], d[6], d[7], d[8], 0)
- if type(_.t10y) == list: # transparency gradient: [begin_percent, end_percent, style, angle, border, x_percent, y_percent]
+ if type(_.t10y) is list: # transparency gradient: [begin_percent, end_percent, style, angle, border, x_percent, y_percent]
table = _.doc.createInstance("com.sun.star.drawing.TransparencyGradientTable")
if not table.hasByName(str(_.t10y) + str(angle)):
t, t[0:len(_.t10y)] = [100, __GradientStyle_LINEAR__, 0, 0, 0, 0, 0], _.t10y
table.insertByName(str(_.t10y) + str(angle), __Gradient__(t[2], t[0] * 0xffffff / 100.0, t[1] * 0xffffff / 100.0, (-angle + t[3]) * 10 % 3600, t[4], t[5], t[6], 100, 100, 0))
shape.FillTransparenceGradientName = str(_.t10y) + str(angle)
- c = 0 if type(c) == tuple else c & 0xffffff
+ c = 0 if type(c) is tuple else c & 0xffffff
else:
shape.FillStyle = __FillStyle_GRADIENT__
c = int(_.t10y * 255.0/100) << 24
@@ -1652,9 +1651,9 @@ def penstyle(n = -1):
if n == -1:
try:
return __locname__(_.linestyle.value)
- except:
+ except Exception:
return __locname__('DOTTED')
- if type(n) == list and len(n) >= 5:
+ if type(n) is list and len(n) >= 5:
_.linestyle = n
elif re.match(__l12n__(_.lng)['SOLID'], n, flags = re.I):
_.linestyle = __LineStyle_SOLID__
@@ -1688,7 +1687,7 @@ def pencap(n = -1):
def fillcolor(n = -1):
if n != -1:
_.areacolor = __color__(n)
- if type(_.areacolor) != tuple:
+ if type(_.areacolor) is not tuple:
_.t10y = (int(_.areacolor) >> 24) / (255.0/100)
else:
_.t10y = 0
@@ -1703,8 +1702,8 @@ def filltransparency(n = -1):
if n != -1:
if n == u'any':
n = 100 * random.random()
- if type(n) != list:
- if type(_.areacolor) != tuple:
+ if type(n) is not list:
+ if type(_.areacolor) is not tuple:
fillcolor((_.areacolor & 0xffffff) + (int(n * (255.0/100)) << 24))
else:
_.t10y = n
@@ -1848,12 +1847,12 @@ def __groupend__(name = ""):
__removeshape__(__ACTUAL__)
def __int__(x): # handle eg. int("10cm")
- if type(x) == str:
+ if type(x) is str:
x = __float__(x)
return int(x)
def __float__(x): # handle eg. float("10,5cm")
- if type(x) == str:
+ if type(x) is str:
for i in __comp__[_.lng]:
x = re.sub(u"(?iu)" + i[0], i[1], x)
x = eval(x)
@@ -2108,11 +2107,11 @@ def __compil__(s):
try:
_.lng = loc.Language + '_' + loc.Country
__loadlang__(_.lng, __l12n__(_.lng))
- except:
+ except Exception:
__trace__()
_.lng = loc.Language
__loadlang__(_.lng, __l12n__(_.lng))
- except:
+ except Exception:
__trace__()
# for testing compiling, we create a not document based namespace
if "_" not in locals():
@@ -2270,7 +2269,7 @@ def __gotoline__(n):
_.cursor.gotoNextParagraph(False)
try:
_.doc.CurrentController.getViewCursor().gotoRange(_.cursor, False)
- except:
+ except Exception:
__dispatcher__(".uno:Escape")
_.doc.CurrentController.getViewCursor().gotoRange(_.cursor.getStart(), False)