2011-10-27 12:41:18 +00:00
|
|
|
import kivy
|
|
|
|
kivy.require('1.0.8')
|
|
|
|
|
|
|
|
from kivy.app import App
|
|
|
|
from kivy.uix.floatlayout import FloatLayout
|
|
|
|
from kivy.uix.gridlayout import GridLayout
|
|
|
|
from uix.custom_button import AnimatedButton
|
|
|
|
from kivy.uix.image import Image
|
|
|
|
from kivy.uix.scatter import Scatter
|
|
|
|
from kivy.properties import ObjectProperty
|
|
|
|
from kivy.core import window
|
|
|
|
|
|
|
|
|
|
|
|
class gifScatter(Scatter):
|
|
|
|
def __init__(self, **kwargs):
|
|
|
|
super(gifScatter, self).__init__()
|
|
|
|
|
|
|
|
|
|
|
|
class zipScatter(Scatter):
|
|
|
|
def __init__(self, **kwargs):
|
|
|
|
super(zipScatter, self).__init__()
|
|
|
|
|
|
|
|
|
|
|
|
class jpgScatter(Scatter):
|
|
|
|
def __init__(self, **kwargs):
|
|
|
|
super(jpgScatter, self).__init__()
|
|
|
|
|
|
|
|
|
|
|
|
class Right_Frame(GridLayout):
|
|
|
|
|
|
|
|
currentObj = ObjectProperty(None)
|
|
|
|
|
|
|
|
def __init__(self, **kwargs):
|
|
|
|
super(Right_Frame, self).__init__()
|
|
|
|
|
|
|
|
def on_value(self, *l):
|
|
|
|
if self.currentObj:
|
|
|
|
if abs(l[1]) <= 0 :
|
2011-10-28 09:34:11 +00:00
|
|
|
self.currentObj.anim_delay = -1
|
2011-10-27 12:41:18 +00:00
|
|
|
l[2].text = 'Animation speed: %f FPS' %0
|
|
|
|
else:
|
|
|
|
self.currentObj.anim_delay = 1/l[1]
|
|
|
|
l[2].text = 'Animation speed: %f FPS' %(1/self.currentObj.anim_delay)
|
|
|
|
else:
|
|
|
|
l[0].max = 0
|
|
|
|
l[2].text = 'No Image selected'
|
|
|
|
|
|
|
|
|
|
|
|
class mainclass(FloatLayout):
|
|
|
|
|
|
|
|
currentObj = ObjectProperty(None)
|
|
|
|
|
|
|
|
def __init__(self, **kwargs):
|
|
|
|
super(mainclass, self).__init__()
|
|
|
|
|
|
|
|
# initialize variables
|
|
|
|
self.sign = .10
|
|
|
|
|
|
|
|
#setup Layouts
|
2011-10-28 09:34:11 +00:00
|
|
|
layout = GridLayout( size_hint = (1, 1), cols = 3, rows = 1)
|
|
|
|
left_frame = GridLayout( size_hint = (.25, 1), cols = 1)
|
|
|
|
client_frame = FloatLayout( size_hint = (1, 1))
|
2011-10-27 12:41:18 +00:00
|
|
|
self.right_frame = Right_Frame()
|
|
|
|
|
|
|
|
#setup buttons in left frame
|
2011-10-28 09:34:11 +00:00
|
|
|
but_load_gif = AnimatedButton(text = 'load gif', halign = 'center')
|
|
|
|
but_load_zip_png = AnimatedButton(text = 'load zipped\n png/s', halign = 'center')
|
|
|
|
but_load_zip_jpg = AnimatedButton(text = 'load zipped\n jpg/s', halign = 'center')
|
2011-10-27 12:41:18 +00:00
|
|
|
but_animated = AnimatedButton(text = 'animated button\n'+\
|
|
|
|
'made using\nSequenced Images\n press to animate', halign = 'center',\
|
|
|
|
background_normal = 'data/images/button_white.png',\
|
|
|
|
background_down = 'data/images/button_white_animated.zip')
|
|
|
|
but_animated_normal = AnimatedButton(text = 'borderless\n'+\
|
|
|
|
'animated button\npress to stop', halign = 'center',\
|
|
|
|
background_down = 'data/images/button_white.png',\
|
|
|
|
background_normal = 'data/images/button_white_animated.zip')
|
|
|
|
but_animated_borderless = AnimatedButton(text = 'Borderless',\
|
|
|
|
background_normal = 'data/images/info.png',\
|
2011-10-28 09:34:11 +00:00
|
|
|
background_down = 'data/images/info.zip', halign = 'center')
|
2011-10-27 12:41:18 +00:00
|
|
|
but_animated_bordered = AnimatedButton(text = 'With Border',\
|
|
|
|
background_normal = 'data/images/info.png',\
|
2011-10-28 09:34:11 +00:00
|
|
|
background_down = 'data/images/info.zip', halign = 'center')
|
2011-10-27 12:41:18 +00:00
|
|
|
|
|
|
|
#Handle button press/release
|
|
|
|
def load_images(*l):
|
|
|
|
|
|
|
|
if l[0].text == 'load gif' or l[0].text == 'load gif\n from cache':
|
|
|
|
l[0].text = 'load gif\n from cache'
|
|
|
|
sctr = gifScatter()
|
|
|
|
if l[0].text == 'load zipped\n png/s' or\
|
|
|
|
l[0].text == 'load zipped\n png/s from cache':
|
|
|
|
l[0].text = 'load zipped\n png/s from cache'
|
|
|
|
sctr = zipScatter()
|
|
|
|
if l[0].text == 'load zipped\n jpg/s' or l[0].text == 'load zipped\n jpg/s from cache':
|
|
|
|
l[0].text = 'load zipped\n jpg/s from cache'
|
|
|
|
sctr = jpgScatter()
|
|
|
|
|
2011-10-28 09:34:11 +00:00
|
|
|
client_frame.add_widget(sctr, 1)
|
2011-10-27 12:41:18 +00:00
|
|
|
|
|
|
|
#position scatter
|
|
|
|
sctr.pos = (240 + self.sign, 200+ self.sign )
|
|
|
|
self.sign += 10
|
|
|
|
if self.sign >200:
|
|
|
|
self.sign = 10
|
|
|
|
sctr.pos = (300, 200 - self.sign)
|
|
|
|
|
|
|
|
|
|
|
|
#bind function on on_release
|
|
|
|
but_load_gif.bind(on_release = load_images)
|
|
|
|
but_load_zip_png.bind(on_release = load_images)
|
|
|
|
but_load_zip_jpg.bind(on_release = load_images)
|
|
|
|
|
|
|
|
#add widgets to left frame
|
|
|
|
left_frame.add_widget(but_load_gif)
|
|
|
|
left_frame.add_widget(but_load_zip_png)
|
|
|
|
left_frame.add_widget(but_load_zip_jpg)
|
|
|
|
left_frame.add_widget(but_animated)
|
|
|
|
left_frame.add_widget(but_animated_normal)
|
|
|
|
left_frame.add_widget(but_animated_borderless)
|
|
|
|
left_frame.add_widget(but_animated_bordered)
|
|
|
|
|
|
|
|
#set/remove border for borderless widgets (16,16,16,16) by default
|
|
|
|
but_animated_normal.border = but_animated_borderless.border = (0,0,0,0)
|
|
|
|
|
|
|
|
#add widgets to the main layout
|
|
|
|
layout.add_widget(left_frame)
|
|
|
|
layout.add_widget(client_frame)
|
|
|
|
layout.add_widget(self.right_frame)
|
|
|
|
|
|
|
|
#add main layout to root
|
|
|
|
self.add_widget(layout)
|
|
|
|
|
|
|
|
def on_currentObj(self, *l):
|
|
|
|
self.right_frame.currentObj = self.currentObj
|
|
|
|
|
|
|
|
|
|
|
|
class mainApp(App):
|
|
|
|
|
|
|
|
def build(self):
|
|
|
|
upl = mainclass()
|
|
|
|
upl.size_hint = (1,1)
|
|
|
|
upl.pos_hint = {'top':0, 'right':1}
|
|
|
|
return upl
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ in ('__main__', '__android__'):
|
|
|
|
mainApp().run()
|