diff --git a/kivyblocks/imgs/.DS_Store b/kivyblocks/imgs/.DS_Store new file mode 100644 index 0000000..797bc45 Binary files /dev/null and b/kivyblocks/imgs/.DS_Store differ diff --git a/kivyblocks/imgs/photo.png b/kivyblocks/imgs/photo.png new file mode 100644 index 0000000..9d2ac61 Binary files /dev/null and b/kivyblocks/imgs/photo.png differ diff --git a/kivyblocks/pagescontainer.py b/kivyblocks/pagescontainer.py index abf9b89..3108d6d 100644 --- a/kivyblocks/pagescontainer.py +++ b/kivyblocks/pagescontainer.py @@ -4,15 +4,16 @@ from kivy.uix.boxlayout import BoxLayout from kivy.uix.button import Button from kivy.uix.label import Label from kivy.app import App -from .utils import CSize -from .bgcolorbehavior import BGColorBehavior +from .utils import CSize, SUPER +from .widget_css import WidgetCSS from .ready import WidgetReady -class PageContainer(WidgetReady, BGColorBehavior, FloatLayout): +class PageContainer(WidgetReady, WidgetCSS, FloatLayout): def __init__(self,**kw): - FloatLayout.__init__(self, **kw) - BGColorBehavior.__init__(self) - WidgetReady.__init__(self) + SUPER(PageContainer, self, kw) + # FloatLayout.__init__(self, **kw) + # BGColorBehavior.__init__(self) + # WidgetReady.__init__(self) self.show_back = True self.pageWidgets = [] self.backButton = Button(text='<',size_hint=(None,None), diff --git a/kivyblocks/tab.py b/kivyblocks/tab.py index b8cdde2..46f0054 100644 --- a/kivyblocks/tab.py +++ b/kivyblocks/tab.py @@ -24,18 +24,15 @@ from appPublic.uniqueID import getID from kivy.uix.tabbedpanel import TabbedPanel, TabbedPanelItem from kivy.clock import Clock from kivy.factory import Factory +from .utils import SUPER +from .widget_css import WidgetCSS -from .bgcolorbehavior import BGColorBehavior - -class TabsPanel(BGColorBehavior, TabbedPanel): - def __init__(self,color_level=-1, - radius=[], - tabs=[], - **options): +class TabsPanel(WidgetCSS, TabbedPanel): + def __init__(self, tabs=[], **options): self.tabs_list = tabs - TabbedPanel.__init__(self,**options) - BGColorBehavior.__init__(self,color_level=color_level, - radius=radius) + SUPER(TabsPanel, self, options) + # TabbedPanel.__init__(self,**options) + # BGColorBehavior.__init__(self) Clock.schedule_once(self.add_tabs,0) def newname(self): diff --git a/kivyblocks/videobehavior.py b/kivyblocks/videobehavior.py index c012111..2becbde 100644 --- a/kivyblocks/videobehavior.py +++ b/kivyblocks/videobehavior.py @@ -1,10 +1,13 @@ +import io from traceback import print_exc import time import numpy as np from ffpyplayer.player import MediaPlayer from ffpyplayer.tools import set_log_callback +from PIL import Image as PILImage +from ffpyplayer.pic import Image as FFImage from kivy.factory import Factory from kivy.app import App from kivy.core.window import Window @@ -12,11 +15,12 @@ from kivy.uix.image import Image from kivy.uix.widget import Widget from kivy.clock import Clock from kivy.properties import StringProperty, BooleanProperty, \ - OptionProperty, NumericProperty + OptionProperty, NumericProperty, ListProperty from kivy.graphics.texture import Texture from kivy.graphics import Color, Line, Rectangle from kivyblocks.ready import WidgetReady from kivyblocks.baseWidget import Running +from appPublic.registerfunction import getRegisterFunctionByName class VideoBehavior(object): v_src = StringProperty(None) @@ -31,6 +35,7 @@ class VideoBehavior(object): volume = NumericProperty(-1) timeout = NumericProperty(5) auto_play=BooleanProperty(True) + prehandlers = ListProperty([]) repeat=BooleanProperty(False) in_center_focus = BooleanProperty(False) renderto = OptionProperty('foreground', options=['background', 'foreground', 'cover']) @@ -62,6 +67,15 @@ class VideoBehavior(object): for k, v in kwargs.items(): setattr(self, k, v) + def prehandle(self, img): + if len(self.prehandlers) == 0: + return img + for her in self.prehandlers: + f = getRegisterFunctionByName(her) + if f: + img = f(img) + return img + def video_blocked(self, *args): self._play_stop() self.on_v_src(None, None) @@ -298,6 +312,7 @@ class VideoBehavior(object): self.is_black = True def show_yuv420(self, img): + img = self.prehandle(img) w, h = img.get_size() w2 = int(w / 2) h2 = int(h / 2) @@ -328,6 +343,7 @@ class VideoBehavior(object): # self.texture = texture def show_others(self, img): + img = self.prehandle(img) w, h = img.get_size() texture = Texture.create(size=(w, h), colorfmt='rgb') texture.blit_buffer( diff --git a/kivyblocks/widget_css.py b/kivyblocks/widget_css.py index 84072d0..644aa3b 100644 --- a/kivyblocks/widget_css.py +++ b/kivyblocks/widget_css.py @@ -52,7 +52,7 @@ class WidgetCSS(object): bg_func = Rectangle def on_canvas(self, o, s): - #Logger.info('WidgetCSS:on_canvas():%s',self.__class__.__name__) + Logger.info('WidgetCSS:on_canvas():%s',self.__class__.__name__) self.set_background_color() def on_size(self, o, s): @@ -164,8 +164,8 @@ class WidgetCSS(object): self.set_background_color() def set_background_color(self, *args): - if self.width == 100 and self.height == 100: - return + # if self.width == 100 and self.height == 100: + # return if not self.bgcolor: return if not self.canvas: diff --git a/test/script/scripts/boxlayout/modalbehavior.ui b/test/script/scripts/boxlayout/modalbehavior.ui index 33d9ae0..be146e4 100644 --- a/test/script/scripts/boxlayout/modalbehavior.ui +++ b/test/script/scripts/boxlayout/modalbehavior.ui @@ -4,7 +4,7 @@ "size_hint":[0.5, 0.5], "ModalBehavior":{ "auto_open":true, - "position":"tr", + "anchor":"br", "auto_dismiss":true } }, diff --git a/test/script/scripts/video/behavior.ui b/test/script/scripts/video/behavior.ui index ee6cc1b..c042bf6 100644 --- a/test/script/scripts/video/behavior.ui +++ b/test/script/scripts/video/behavior.ui @@ -2,8 +2,9 @@ "widgettype":"BoxLayout", "options":{ "VideoBehavior":{ - "v_src":"/home/ymq/c/songs/alone-braver.mkv", + "v_src":"/Volumes/data/share/songs/alone-braver.mkv", "renderto":"background", + "repeat":true, "auto_play":true } }, diff --git a/test/script/scripts/video/behavior1.ui b/test/script/scripts/video/behavior1.ui index 0d13c27..5ed444a 100644 --- a/test/script/scripts/video/behavior1.ui +++ b/test/script/scripts/video/behavior1.ui @@ -2,7 +2,7 @@ "widgettype":"BoxLayout", "options":{ "VideoBehavior":{ - "v_src":"/home/ymq/c/songs/undr-sky.mkv", + "v_src":"/home/ymq/d/share/songs/undr-sky.mkv", "renderto":"background", "auto_play":true }