Phuket2
Sep 24, 2016 - 19:36
Playing with the idea of how to share snippet functions Vrs something more substantial. I mean in the forum it could be tagged [snippet] the idea being it could be a handy function to save as a snippet. Well maybe [Share] is good enough. Just thinking out aloud. But a snippet function is a little different as it should not have source dependencies. But also you would like some test code written around it, to show how to call it and prove it works.
Anyway, been a strange evening, my mind went to this. Just food for thought.
# Pythonista Forum - @Phuket2
import ui
# this function is the snippet
def pop_btn(*args, **kwargs):
def pop_effect(sender, duration=.4, scale=1.25):
x = y = scale
def a():
sender.transform = ui.Transform()
def c():
sender.enabled = True
sender.transform = ui.Transform.scale(x, y)
ui.animate(a, duration=duration, completion=c)
def btn_action(sender):
sender.enabled = False
pop_effect(sender, scale=2)
if sender.callback:
sender.callback(sender)
# do some normal initialisation
btn = ui.Button(name='btn', frame=(0, 0, 100, 32))
btn.title = btn.name
btn.border_width = .5
btn.callback = None
btn.action = btn_action
# if round = True is passed we make a round button
round = kwargs.pop('round', False)
if round:
btn.corner_radius = btn.width / 2
btn.callback = kwargs.pop('action', None)
for k, v in kwargs.items():
if hasattr(btn, k):
setattr(btn, k, v)
return btn
def dummy_action(sender):
print('in dummy action', sender, sender.name)
class MyClass(ui.View):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
btn = pop_btn(width=100, height=100,
round=True, action=dummy_action, title='Hit Me',
bg_color='teal', tint_color='white')
btn.center = self.bounds.center()
self.add_subview(btn)
if __name__ == '__main__':
_use_theme = False
w, h = 320, 480
f = (0, 0, w, h)
mc = MyClass(frame=f, bg_color='white')
mc.present('sheet', animated=False)