bugfix
This commit is contained in:
parent
938deb6307
commit
d0165915a7
kivyblocks
@ -34,6 +34,7 @@ from .newvideo import Video
|
||||
from .qrcodereader import QRCodeReader
|
||||
from .ready import WidgetReady
|
||||
from .bgcolorbehavior import BGColorBehavior
|
||||
from .orientationlayout import OrientationLayout
|
||||
|
||||
def showError(e):
|
||||
print('error',e)
|
||||
@ -492,7 +493,8 @@ class Blocks(EventDispatcher):
|
||||
except Exception as e:
|
||||
doerr(None,e)
|
||||
|
||||
del opts['url']
|
||||
if opts.get('url'):
|
||||
del opts['url']
|
||||
self.getUrlData(url,callback=cb,errback=doerr,**opts)
|
||||
return
|
||||
doit(desc)
|
||||
@ -524,3 +526,4 @@ class Blocks(EventDispatcher):
|
||||
|
||||
Factory.register('Blocks',Blocks)
|
||||
Factory.register('Video',Video)
|
||||
Factory.register('OrientationLayout', OrientationLayout)
|
||||
|
@ -2,16 +2,16 @@ from kivy.factory import Factory
|
||||
from kivy.uix.widget import Widget
|
||||
from kivy.uix.floatlayout import FloatLayout
|
||||
from kivy.uix.boxlayout import BoxLayout
|
||||
from kivyblocks.blocks import Blocks
|
||||
from kivy.clock import Clock
|
||||
from kivyblocks.swipebehavior import SwipeBehavior
|
||||
from kivyblocks.ready import WidgetReady
|
||||
|
||||
class OrientationleLayout(WidgetReady, SwipeBehavior, FloatLayout):
|
||||
class OrientationLayout(WidgetReady, SwipeBehavior, FloatLayout):
|
||||
"""
|
||||
TwinStyleLayout layout two widget verical when parital orientation
|
||||
and second widget hide when it is in landscape
|
||||
"""
|
||||
def __init__(self, main_widet=None, second_widget=None, **kw):
|
||||
def __init__(self, main_widget=None, second_widget=None, **kw):
|
||||
self.main_widget = main_widget
|
||||
self.second_widget = second_widget
|
||||
self.widget_main = main_widget
|
||||
@ -20,6 +20,19 @@ class OrientationleLayout(WidgetReady, SwipeBehavior, FloatLayout):
|
||||
FloatLayout.__init__(self, **kw)
|
||||
SwipeBehavior.__init__(self)
|
||||
WidgetReady.__init__(self)
|
||||
Clock.schedule_once(self.build_children,0)
|
||||
|
||||
def build_children(self, *args):
|
||||
if isinstance(self.main_widget, dict):
|
||||
blocks = Factory.Blocks()
|
||||
blocks.bind(on_built=self.main_widget_built)
|
||||
blocks.bind(on_failed=self.widget_build_failed)
|
||||
blocks.widgetBuild(self.main_widget, ancestor=self)
|
||||
if isinstance(self.second_widget, dict):
|
||||
blocks = Factory.Blocks()
|
||||
blocks.bind(on_built=self.second_widget_built)
|
||||
blocks.bind(on_failed=self.widget_build_failed)
|
||||
blocks.widgetBuild(self.second_widget, ancestor=self)
|
||||
self.bind(on_swipe_left=self.toggle_second)
|
||||
self.bind(on_swipe_right=self.toggle_second)
|
||||
|
||||
@ -27,6 +40,7 @@ class OrientationleLayout(WidgetReady, SwipeBehavior, FloatLayout):
|
||||
return self.width > self.height
|
||||
|
||||
def toggle_second(self,*args):
|
||||
print('toggle_second() called ..')
|
||||
if self.isLandscape():
|
||||
if self.widget_second in self.children:
|
||||
self.remove_widget(self.widget_second)
|
||||
@ -35,16 +49,6 @@ class OrientationleLayout(WidgetReady, SwipeBehavior, FloatLayout):
|
||||
self.on_size(self.size)
|
||||
|
||||
def on_ready(self,*args):
|
||||
if isinstance(main_widget, dict):
|
||||
blocks = Blocks()
|
||||
blocks.bind(on_built=self.main_widget_built)
|
||||
blocks.bind(on_failed=self.widget_build_failed)
|
||||
blocks.widgetBuild(main_widget, ancestor=self)
|
||||
if isinstance(second_widget, dict):
|
||||
blocks = Blocks()
|
||||
blocks.bind(on_built=self.second_widget_built)
|
||||
blocks.bind(on_failed=self.widget_build_failed)
|
||||
blocks.widgetBuild(second_widget, ancestor=self)
|
||||
self.two_widget_layout()
|
||||
|
||||
def on_size(self,*args):
|
||||
@ -70,8 +74,12 @@ class OrientationleLayout(WidgetReady, SwipeBehavior, FloatLayout):
|
||||
self.widget_second.width = self.width * self.height / self.width
|
||||
self.widget_second.pos = (0,0)
|
||||
self.widget_second.opacity = 0.6
|
||||
if not self.widget_main in self.children:
|
||||
self.add_widget(self.widget_main)
|
||||
if self.widget_second in self.children:
|
||||
self.remove_widget(self.widget_second)
|
||||
print('main_widget:width=%.02f,height=%.02f,pos=(%.02f,%.02f)' % (self.widget_main.width,self.widget_main.height,*self.widget_main.pos))
|
||||
print('second_widget:width=%.02f,height=%.02f,pos=(%.02f,%.02f)' % (self.widget_second.width,self.widget_second.height,*self.widget_second.pos))
|
||||
|
||||
def vertical_layout(self):
|
||||
self.widget_main.width = self.width
|
||||
@ -81,17 +89,26 @@ class OrientationleLayout(WidgetReady, SwipeBehavior, FloatLayout):
|
||||
self.widget_second.height = self.height - self.widget_main.height
|
||||
self.widget_second.pos = (0,0)
|
||||
self.widget_second.opacity = 1
|
||||
if not self.widget_main in self.children:
|
||||
self.add_widget(self.widget_main)
|
||||
if not self.widget_second in self.children:
|
||||
self.add_widget(self.widget_second)
|
||||
print('main_widget:width=%.02f,height=%.02f,pos=(%.02f,%.02f)' % (self.widget_main.width,self.widget_main.height,*self.widget_main.pos))
|
||||
print('second_widget:width=%.02f,height=%.02f,pos=(%.02f,%.02f)' % (self.widget_second.width,self.widget_second.height,*self.widget_second.pos))
|
||||
|
||||
def main_widget_built(self,o,w):
|
||||
print('main_widget_built() called ...')
|
||||
self.widget_main = w
|
||||
if isinstance(self.widget_main, Widget) and isinstance(self.widget_second, Widget):
|
||||
self.ready()
|
||||
self.reready()
|
||||
|
||||
|
||||
def second_widget_bult(self,o,w):
|
||||
def second_widget_built(self,o,w):
|
||||
print('second_widget_built() called ...')
|
||||
self.widget_second = w
|
||||
if isinstance(self.widget_main, Widget) and isinstance(self.widget_second, Widget):
|
||||
self.ready()
|
||||
print('ready() called ..')
|
||||
self.reready()
|
||||
|
||||
def widget_build_failed(self, o, e):
|
||||
pass
|
||||
|
@ -13,3 +13,7 @@ class WidgetReady(EventDispatcher):
|
||||
return
|
||||
self.dispatch('on_ready')
|
||||
self._ready = True
|
||||
|
||||
def reready(self):
|
||||
self._ready = False
|
||||
self.ready()
|
||||
|
Loading…
Reference in New Issue
Block a user