mirror of
https://github.com/shlomif/PySolFC.git
synced 2025-04-15 02:54:09 -04:00
Kivy/Android
- solved some speed issues - cleanups
This commit is contained in:
parent
2520934d35
commit
ce0e6ff856
3 changed files with 49 additions and 81 deletions
|
@ -120,7 +120,7 @@ class LAnimationTask(LTask, LBase):
|
||||||
self.anim = anim
|
self.anim = anim
|
||||||
self.spos = spos
|
self.spos = spos
|
||||||
self.widget = widget
|
self.widget = widget
|
||||||
print(self.widget.card)
|
# print(self.widget.card)
|
||||||
self.delay = delay
|
self.delay = delay
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
|
|
|
@ -138,11 +138,10 @@ class MfxCanvasGroup():
|
||||||
|
|
||||||
def _imglist(self, group):
|
def _imglist(self, group):
|
||||||
ilst = []
|
ilst = []
|
||||||
for w in reversed(group.canvas.children):
|
for w in group.canvas.children:
|
||||||
if isinstance(w, LImageItem):
|
if isinstance(w, LImageItem):
|
||||||
if w.group == group:
|
if w.group == group:
|
||||||
ilst.append(w)
|
ilst.append(w)
|
||||||
# damit is 0 das unterste image und -1 das oberste.
|
|
||||||
return ilst
|
return ilst
|
||||||
|
|
||||||
def makeDeferredRaise(self, pos):
|
def makeDeferredRaise(self, pos):
|
||||||
|
@ -152,8 +151,7 @@ class MfxCanvasGroup():
|
||||||
|
|
||||||
def tkraise(self, position=None):
|
def tkraise(self, position=None):
|
||||||
# print(self, ' tkraise(', position, ')')
|
# print(self, ' tkraise(', position, ')')
|
||||||
# Das wird bei Mahjongg extensiv aufgerufen, wenn der Move
|
# Mainly used by Mahjongg game after a move.
|
||||||
# abeschlossen ist. Wird aber auch bei andern games benutzt.
|
|
||||||
# print('stack[1] = ',inspect.stack()[1].frame)
|
# print('stack[1] = ',inspect.stack()[1].frame)
|
||||||
# print('stack[2] = ',inspect.stack()[2].frame)
|
# print('stack[2] = ',inspect.stack()[2].frame)
|
||||||
|
|
||||||
|
@ -167,32 +165,23 @@ class MfxCanvasGroup():
|
||||||
return
|
return
|
||||||
|
|
||||||
if position is not None:
|
if position is not None:
|
||||||
# In self.canvas suchen: das oberste image, welches zu position
|
# add all images above specified position
|
||||||
# gehört und liste der images oberhalb einfüllen u.a.a.O weglassen.
|
|
||||||
|
|
||||||
pimgs = self._imglist(position)
|
pimgs = self._imglist(position)
|
||||||
if len(pimgs) == 0:
|
if len(pimgs) == 0:
|
||||||
return
|
return
|
||||||
|
|
||||||
ws = []
|
self.canvas.clear_widgets(imgs)
|
||||||
for c in reversed(self.canvas.children):
|
k = self.canvas.children.index(pimgs[-1])
|
||||||
if c not in imgs:
|
for i in imgs:
|
||||||
ws.append(c)
|
self.canvas.add_widget(i, index=k)
|
||||||
if c == pimgs[-1]:
|
k += 1
|
||||||
ws.extend(imgs)
|
|
||||||
self.canvas.clear_widgets()
|
|
||||||
for w in ws:
|
|
||||||
self.canvas.add_widget(w)
|
|
||||||
else:
|
else:
|
||||||
# alle images in dieser gruppe ganz nach oben
|
# add all images to top
|
||||||
ws = []
|
self.canvas.clear_widgets(imgs)
|
||||||
for c in reversed(self.canvas.children):
|
k = 0
|
||||||
if c not in imgs:
|
for i in imgs:
|
||||||
ws.append(c)
|
self.canvas.add_widget(i, index=k)
|
||||||
ws.extend(imgs)
|
k += 1
|
||||||
self.canvas.clear_widgets()
|
|
||||||
for w in ws:
|
|
||||||
self.canvas.add_widget(w)
|
|
||||||
|
|
||||||
def makeDeferredLower(self, pos):
|
def makeDeferredLower(self, pos):
|
||||||
def animCallback():
|
def animCallback():
|
||||||
|
@ -201,7 +190,6 @@ class MfxCanvasGroup():
|
||||||
|
|
||||||
def lower(self, position=None):
|
def lower(self, position=None):
|
||||||
# print(self, ' lower(', position, ')')
|
# print(self, ' lower(', position, ')')
|
||||||
# dasselbe wi tkraise aber vorher statt nachher einfügen.
|
|
||||||
# print('stack[1] = ',inspect.stack()[1].frame)
|
# print('stack[1] = ',inspect.stack()[1].frame)
|
||||||
# print('stack[2] = ',inspect.stack()[2].frame)
|
# print('stack[2] = ',inspect.stack()[2].frame)
|
||||||
|
|
||||||
|
@ -215,28 +203,25 @@ class MfxCanvasGroup():
|
||||||
return
|
return
|
||||||
|
|
||||||
if position is not None:
|
if position is not None:
|
||||||
|
# add below specified position
|
||||||
pimgs = self._imglist(position)
|
pimgs = self._imglist(position)
|
||||||
if len(pimgs) == 0:
|
if len(pimgs) == 0:
|
||||||
return
|
return
|
||||||
|
|
||||||
ws = []
|
self.canvas.clear_widgets(imgs)
|
||||||
for c in reversed(self.canvas.children):
|
k = self.canvas.children.index(pimgs[0]) # the spec. item
|
||||||
if c == pimgs[0]:
|
k += 1 # insert before
|
||||||
ws.extend(imgs)
|
for i in imgs:
|
||||||
if c not in imgs:
|
self.canvas.add_widget(i, index=k)
|
||||||
ws.append(c)
|
k += 1
|
||||||
self.canvas.clear_widgets()
|
|
||||||
for w in ws:
|
|
||||||
self.canvas.add_widget(w)
|
|
||||||
else:
|
else:
|
||||||
# alle images in dieser gruppe ganz nach unten ???
|
# add all to bottom
|
||||||
ws = imgs
|
self.canvas.clear_widgets(imgs)
|
||||||
for c in reversed(self.canvas.children):
|
k = len(self.canvas.children)-1 # the last item
|
||||||
if c not in imgs:
|
k += 1 # insert before
|
||||||
ws.append(c)
|
for i in imgs:
|
||||||
self.canvas.clear_widgets()
|
self.canvas.add_widget(i, index=k)
|
||||||
for w in ws:
|
k += 1
|
||||||
self.canvas.add_widget(w)
|
|
||||||
|
|
||||||
def addtag(self, tag, option="withtag"):
|
def addtag(self, tag, option="withtag"):
|
||||||
# logging.info('MfxCanvasGroup: addtag(%s, %s)' % (tag, option))
|
# logging.info('MfxCanvasGroup: addtag(%s, %s)' % (tag, option))
|
||||||
|
@ -352,7 +337,7 @@ class MfxCanvasImage(object):
|
||||||
# print('stack[3] = ', inspect.stack()[3].frame)
|
# print('stack[3] = ', inspect.stack()[3].frame)
|
||||||
|
|
||||||
if self.animation:
|
if self.animation:
|
||||||
print('defer tkraise to animation', abitm)
|
# print('defer tkraise to animation', abitm)
|
||||||
self.deferred_raises.append(self.makeDeferredRaise(abitm))
|
self.deferred_raises.append(self.makeDeferredRaise(abitm))
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -387,13 +372,8 @@ class MfxCanvasImage(object):
|
||||||
|
|
||||||
def makeAnimStart(self):
|
def makeAnimStart(self):
|
||||||
def animStart(anim, widget):
|
def animStart(anim, widget):
|
||||||
print('MfxCanvasImage: animStart %s' % self)
|
# print('MfxCanvasImage: animStart %s' % self)
|
||||||
# karte nach vorne nehmen - vorgänger karte merken
|
|
||||||
# für restore.
|
|
||||||
# self.canvas.tag_raise(self.image)
|
|
||||||
|
|
||||||
for cb in self.deferred_raises:
|
for cb in self.deferred_raises:
|
||||||
print('do deferred tkraise:')
|
|
||||||
cb()
|
cb()
|
||||||
self.deferred_raises = []
|
self.deferred_raises = []
|
||||||
|
|
||||||
|
@ -401,8 +381,7 @@ class MfxCanvasImage(object):
|
||||||
|
|
||||||
def makeAnimEnd(self, dpos, dsize):
|
def makeAnimEnd(self, dpos, dsize):
|
||||||
def animEnd(anim, widget):
|
def animEnd(anim, widget):
|
||||||
print('MfxCanvasImage: animEnd %s' % self)
|
# print('MfxCanvasImage: animEnd %s' % self)
|
||||||
# karte wieder vor die vorgängerkarte setzen.
|
|
||||||
self.animation = False
|
self.animation = False
|
||||||
self.deferred_raises = []
|
self.deferred_raises = []
|
||||||
image = self.image
|
image = self.image
|
||||||
|
@ -410,7 +389,7 @@ class MfxCanvasImage(object):
|
||||||
return animEnd
|
return animEnd
|
||||||
|
|
||||||
def animatedMove(self, dx, dy, duration=0.2):
|
def animatedMove(self, dx, dy, duration=0.2):
|
||||||
print('MfxCanvasImage: animatedMove %s, %s' % (dx, dy))
|
# print('MfxCanvasImage: animatedMove %s, %s' % (dx, dy))
|
||||||
|
|
||||||
image = self.image
|
image = self.image
|
||||||
dsize = image.coreSize
|
dsize = image.coreSize
|
||||||
|
@ -514,10 +493,6 @@ class MfxCanvasRectangle(object):
|
||||||
class MfxCanvasText(object):
|
class MfxCanvasText(object):
|
||||||
def __init__(self, canvas, x, y, preview=-1, **kwargs):
|
def __init__(self, canvas, x, y, preview=-1, **kwargs):
|
||||||
|
|
||||||
print(
|
|
||||||
'MfxCanvasText: %s | %s, %s, %s | %s'
|
|
||||||
% (canvas, x, y, preview, kwargs))
|
|
||||||
|
|
||||||
if preview < 0:
|
if preview < 0:
|
||||||
preview = canvas.preview
|
preview = canvas.preview
|
||||||
if preview > 1:
|
if preview > 1:
|
||||||
|
@ -538,7 +513,7 @@ class MfxCanvasText(object):
|
||||||
self.widget = label
|
self.widget = label
|
||||||
|
|
||||||
def config(self, **kw):
|
def config(self, **kw):
|
||||||
print('MfxCanvasText: config %s' % kw)
|
# print('MfxCanvasText: config %s' % kw)
|
||||||
if ('text' in kw):
|
if ('text' in kw):
|
||||||
self.label.text = kw['text']
|
self.label.text = kw['text']
|
||||||
|
|
||||||
|
@ -673,17 +648,19 @@ class MfxCanvas(LImage):
|
||||||
self.update_widget(posorobj, size)
|
self.update_widget(posorobj, size)
|
||||||
|
|
||||||
def update_widget(self, posorobj, size):
|
def update_widget(self, posorobj, size):
|
||||||
logging.info('MfxCanvas: update_widget')
|
def psize(s):
|
||||||
|
return "({:1.2f}, {:1.2f})".format(s[0], s[1])
|
||||||
|
|
||||||
|
logging.info('MfxCanvas: update_widget to: '+psize(size))
|
||||||
|
|
||||||
# print('MfxCanvas: update_widget size=(%s, %s)' %
|
# print('MfxCanvas: update_widget size=(%s, %s)' %
|
||||||
# (self.size[0], self.size[1]))
|
# (self.size[0], self.size[1]))
|
||||||
|
|
||||||
# Update Skalierungsparameter
|
# Update Skalierungsparameter
|
||||||
|
|
||||||
oldscale = self.scale
|
# oldscale = self.scale
|
||||||
newscale = self.scalefactor()
|
newscale = self.scalefactor()
|
||||||
print('MfxCanvas: scale factor old= %s, new=%s' %
|
logging.info('MfxCanvas: scale factor: {:1.2f})'.format(newscale))
|
||||||
(oldscale, newscale))
|
|
||||||
self.scale = newscale
|
self.scale = newscale
|
||||||
|
|
||||||
# Anpassung Skalierung.
|
# Anpassung Skalierung.
|
||||||
|
@ -726,13 +703,13 @@ class MfxCanvas(LImage):
|
||||||
def winfo_width(self):
|
def winfo_width(self):
|
||||||
# return self.r_width
|
# return self.r_width
|
||||||
cpos, csize = self.KivyToCoreP(self.pos, self.size, self.scale)
|
cpos, csize = self.KivyToCoreP(self.pos, self.size, self.scale)
|
||||||
print('MfxCanvas: winfo_width %s' % (csize[0]))
|
# print('MfxCanvas: winfo_width %s' % (csize[0]))
|
||||||
return csize[0]
|
return csize[0]
|
||||||
|
|
||||||
def winfo_height(self):
|
def winfo_height(self):
|
||||||
# return self.r_height
|
# return self.r_height
|
||||||
cpos, csize = self.KivyToCoreP(self.pos, self.size, self.scale)
|
cpos, csize = self.KivyToCoreP(self.pos, self.size, self.scale)
|
||||||
print('MfxCanvas: winfo_height %s' % (csize[1]))
|
# print('MfxCanvas: winfo_height %s' % (csize[1]))
|
||||||
return csize[1]
|
return csize[1]
|
||||||
|
|
||||||
def cget(self, f):
|
def cget(self, f):
|
||||||
|
@ -771,7 +748,7 @@ class MfxCanvas(LImage):
|
||||||
self.clear_widgets([itm])
|
self.clear_widgets([itm])
|
||||||
self.add_widget(itm)
|
self.add_widget(itm)
|
||||||
else:
|
else:
|
||||||
# print('MfxCanvas: tag_raise: to specified position')
|
print('MfxCanvas: tag_raise: to specified position')
|
||||||
ws = []
|
ws = []
|
||||||
for c in reversed(self.children): # reversed!
|
for c in reversed(self.children): # reversed!
|
||||||
if c != itm and c != abitm:
|
if c != itm and c != abitm:
|
||||||
|
@ -794,18 +771,9 @@ class MfxCanvas(LImage):
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
def setInitialSize(self, width, height):
|
def setInitialSize(self, width, height):
|
||||||
print('MfxCanvas: setInitialSize request %s/%s' % (width, height))
|
|
||||||
print(
|
|
||||||
'MfxCanvas: setInitialSize actual %s/%s'
|
|
||||||
% (self.size[0], self.size[1]))
|
|
||||||
self.r_width = width
|
self.r_width = width
|
||||||
self.r_height = height
|
self.r_height = height
|
||||||
|
|
||||||
# ev. update anstossen
|
|
||||||
self.update_widget(self.pos, self.size)
|
self.update_widget(self.pos, self.size)
|
||||||
|
|
||||||
# self.size[0] = width
|
|
||||||
# self.size[1] = height
|
|
||||||
return
|
return
|
||||||
|
|
||||||
# delete all CanvasItems, but keep the background and top tiles
|
# delete all CanvasItems, but keep the background and top tiles
|
||||||
|
@ -823,7 +791,7 @@ class MfxCanvas(LImage):
|
||||||
return -1
|
return -1
|
||||||
|
|
||||||
def setTextColor(self, color):
|
def setTextColor(self, color):
|
||||||
print('MfxCanvas: setTextColor1 %s' % color)
|
# print('MfxCanvas: setTextColor1 %s' % color)
|
||||||
if color is None:
|
if color is None:
|
||||||
c = self.cget("bg")
|
c = self.cget("bg")
|
||||||
if not isinstance(c, str) or c[0] != "#" or len(c) != 7:
|
if not isinstance(c, str) or c[0] != "#" or len(c) != 7:
|
||||||
|
@ -836,7 +804,7 @@ class MfxCanvas(LImage):
|
||||||
# print c, ":", v, "luminance", luminance
|
# print c, ":", v, "luminance", luminance
|
||||||
color = ("#000000", "#ffffff")[luminance < 0.3]
|
color = ("#000000", "#ffffff")[luminance < 0.3]
|
||||||
|
|
||||||
print('MfxCanvas: setTextColor2 %s' % color)
|
# print('MfxCanvas: setTextColor2 %s' % color)
|
||||||
if self._text_color != color:
|
if self._text_color != color:
|
||||||
self._text_color = color
|
self._text_color = color
|
||||||
|
|
||||||
|
@ -922,7 +890,7 @@ class MfxCanvas(LImage):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def config(self, cnf={}, **kw):
|
def config(self, cnf={}, **kw):
|
||||||
print('MfxCanvas: config %s %s' % (cnf, kw))
|
# print('MfxCanvas: config %s %s' % (cnf, kw))
|
||||||
if ('cursor' in kw):
|
if ('cursor' in kw):
|
||||||
pass
|
pass
|
||||||
if ('width' in kw):
|
if ('width' in kw):
|
||||||
|
|
|
@ -179,7 +179,7 @@ def unbind_destroy(widget):
|
||||||
|
|
||||||
|
|
||||||
def after(widget, ms, func, *args):
|
def after(widget, ms, func, *args):
|
||||||
print('tkutil: after(%s, %s, %s, %s)' % (widget, ms, func, args))
|
# print('tkutil: after(%s, %s, %s, %s)' % (widget, ms, func, args))
|
||||||
if (ms == 'idle'):
|
if (ms == 'idle'):
|
||||||
print('demo use')
|
print('demo use')
|
||||||
Clock.schedule_once(lambda dt: func(), 1.0)
|
Clock.schedule_once(lambda dt: func(), 1.0)
|
||||||
|
@ -191,12 +191,12 @@ def after(widget, ms, func, *args):
|
||||||
|
|
||||||
|
|
||||||
def after_idle(widget, func, *args):
|
def after_idle(widget, func, *args):
|
||||||
print('tkutil: after_idle()')
|
# print('tkutil: after_idle()')
|
||||||
return after(widget, "idle", func, *args)
|
return after(widget, "idle", func, *args)
|
||||||
|
|
||||||
|
|
||||||
def after_cancel(t):
|
def after_cancel(t):
|
||||||
print('tkutil: after_cancel()')
|
# print('tkutil: after_cancel()')
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue