bugfix
This commit is contained in:
parent
2e976967ea
commit
89bdf6608b
@ -131,9 +131,7 @@ class Header(WidgetReady, ScrollWidget):
|
|||||||
[ f.update({'value':self.part.fields[i]['label']}) for i,f in enumerate(rd) ]
|
[ f.update({'value':self.part.fields[i]['label']}) for i,f in enumerate(rd) ]
|
||||||
self.header = Row(self.part,rd,header=True)
|
self.header = Row(self.part,rd,header=True)
|
||||||
self.add_widget(self.header)
|
self.add_widget(self.header)
|
||||||
self.addChild(self.header)
|
|
||||||
self.height = self.header.height
|
self.height = self.header.height
|
||||||
self.built()
|
|
||||||
|
|
||||||
class Body(ScrollWidget):
|
class Body(ScrollWidget):
|
||||||
def __init__(self,part,**kw):
|
def __init__(self,part,**kw):
|
||||||
@ -209,14 +207,11 @@ class DataGridPart(WidgetReady, BoxLayout):
|
|||||||
if not self.datagrid.noheader:
|
if not self.datagrid.noheader:
|
||||||
self.header = Header(self,**kw)
|
self.header = Header(self,**kw)
|
||||||
self.add_widget(self.header)
|
self.add_widget(self.header)
|
||||||
self.addChild(self.header)
|
|
||||||
self.body = Body(self)
|
self.body = Body(self)
|
||||||
self.add_widget(self.body)
|
self.add_widget(self.body)
|
||||||
self.addChild(self.body)
|
|
||||||
if not self.freeze_flag:
|
if not self.freeze_flag:
|
||||||
self.body.bind(pos=self.datagrid.bodyOnSize,
|
self.body.bind(pos=self.datagrid.bodyOnSize,
|
||||||
size=self.datagrid.bodyOnSize)
|
size=self.datagrid.bodyOnSize)
|
||||||
self.built()
|
|
||||||
|
|
||||||
def clearRows(self):
|
def clearRows(self):
|
||||||
return self.body.clearRows()
|
return self.body.clearRows()
|
||||||
@ -258,15 +253,12 @@ class DataGrid(WidgetReady, BoxLayout):
|
|||||||
self.createToolbar()
|
self.createToolbar()
|
||||||
if self.toolbar:
|
if self.toolbar:
|
||||||
self.add_widget(self.toolbar)
|
self.add_widget(self.toolbar)
|
||||||
self.addChild(self.toolbar)
|
|
||||||
|
|
||||||
b = BoxLayout(orientation='horizontal')
|
b = BoxLayout(orientation='horizontal')
|
||||||
if self.freeze_part:
|
if self.freeze_part:
|
||||||
b.add_widget(self.freeze_part)
|
b.add_widget(self.freeze_part)
|
||||||
self.addChild(self.freeze_part)
|
|
||||||
if self.normal_part:
|
if self.normal_part:
|
||||||
b.add_widget(self.normal_part)
|
b.add_widget(self.normal_part)
|
||||||
self.addChild(self.normal_part)
|
|
||||||
self.add_widget(b)
|
self.add_widget(b)
|
||||||
if self.options.get('paging',False):
|
if self.options.get('paging',False):
|
||||||
self.loader = Paging(adder=self.addRow,
|
self.loader = Paging(adder=self.addRow,
|
||||||
@ -290,7 +282,6 @@ class DataGrid(WidgetReady, BoxLayout):
|
|||||||
self.on_sizeTask = None
|
self.on_sizeTask = None
|
||||||
self.register_event_type('on_selected')
|
self.register_event_type('on_selected')
|
||||||
self.register_event_type('on_scrollstop')
|
self.register_event_type('on_scrollstop')
|
||||||
self.built()
|
|
||||||
|
|
||||||
def setScrollPosition(self,pos):
|
def setScrollPosition(self,pos):
|
||||||
self.normal_part.body.scroll_y = pos
|
self.normal_part.body.scroll_y = pos
|
||||||
|
@ -19,8 +19,6 @@ class NewVideo(BGColorBehavior, Video):
|
|||||||
BGColorBehavior.__init__(self)
|
BGColorBehavior.__init__(self)
|
||||||
Window.allow_screensaver = False
|
Window.allow_screensaver = False
|
||||||
set_log_callback(self.ffplayerLog)
|
set_log_callback(self.ffplayerLog)
|
||||||
if hasattr(self._video, '_ffplayer'):
|
|
||||||
self.ffplayer = self._video._ffplayer
|
|
||||||
|
|
||||||
def on_state(self,*args):
|
def on_state(self,*args):
|
||||||
print('new state = ',self.state)
|
print('new state = ',self.state)
|
||||||
@ -35,5 +33,8 @@ class NewVideo(BGColorBehavior, Video):
|
|||||||
logger_func[level]('yffpyplayer: {}'.format(msg))
|
logger_func[level]('yffpyplayer: {}'.format(msg))
|
||||||
|
|
||||||
def audioswitch(self,btn=None):
|
def audioswitch(self,btn=None):
|
||||||
x = self._ffplayer.request_channel('audio')
|
if hasattr(self._video,'_ffplayer'):
|
||||||
|
x = self._video._ffplayer.request_channel('audio')
|
||||||
|
else:
|
||||||
|
print('NewVideo _video has not _ffplayer, do nothong')
|
||||||
|
|
||||||
|
99
kivyblocks/toggleitems.py
Normal file
99
kivyblocks/toggleitems.py
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
from functools import partial
|
||||||
|
from kivy.uix.button import Button, ButtonBehavior
|
||||||
|
from kivy.graphics import Color, Rectangle
|
||||||
|
from kivy.uix.boxlayout import BoxLayout
|
||||||
|
from kivy.factory import Factory
|
||||||
|
|
||||||
|
from kivyblocks.ready import WidgetReady
|
||||||
|
|
||||||
|
class PressableBox(ButtonBehavior, BoxLayout):
|
||||||
|
def __init__(self,border_width=1,
|
||||||
|
bgcolor=[0,1,0,1],
|
||||||
|
selected_color=[1,0,0,1],
|
||||||
|
**kw):
|
||||||
|
BoxLayout.__init__(self, padding=[border_width,
|
||||||
|
border_width,
|
||||||
|
border_width,
|
||||||
|
border_width],
|
||||||
|
**kw)
|
||||||
|
ButtonBehavior.__init__(self)
|
||||||
|
self.b_bgcolor = bgcolor
|
||||||
|
self.border_width = border_width
|
||||||
|
self.b_selected_color = selected_color
|
||||||
|
self.user_data = None
|
||||||
|
self.unselected()
|
||||||
|
|
||||||
|
def on_size(self,o,s):
|
||||||
|
if self._selected:
|
||||||
|
self.selected()
|
||||||
|
else:
|
||||||
|
self.unselected()
|
||||||
|
|
||||||
|
def on_press(self,o=None):
|
||||||
|
self.selected()
|
||||||
|
|
||||||
|
def set_data(self,d):
|
||||||
|
self.user_data = d
|
||||||
|
|
||||||
|
def get_data(self):
|
||||||
|
return self.user_data
|
||||||
|
|
||||||
|
def is_selected(self):
|
||||||
|
return self._selected
|
||||||
|
|
||||||
|
def selected(self):
|
||||||
|
self._selected = True
|
||||||
|
with self.canvas.before:
|
||||||
|
Color(*self.b_selected_color)
|
||||||
|
Rectangle(pos=self.pos,size=self.size)
|
||||||
|
Color(*self.b_bgcolor)
|
||||||
|
Rectangle(size=(self.width - 2*self.border_width, self.height - 2*self.border_width),
|
||||||
|
pos=(int(self.center_x - (self.width - 2*self.border_width)/2.0), int(self.center_y - (self.height - 2*self.border_width)/2.0)))
|
||||||
|
|
||||||
|
def unselected(self):
|
||||||
|
self._selected = False
|
||||||
|
with self.canvas.before:
|
||||||
|
Color(*self.b_bgcolor)
|
||||||
|
Rectangle(pos=self.pos,size=self.size)
|
||||||
|
|
||||||
|
class ToggleItems(BoxLayout):
|
||||||
|
def __init__(self,
|
||||||
|
items_desc=[],
|
||||||
|
border_width=1,
|
||||||
|
bgcolor=[1,0,0,1],
|
||||||
|
selected_color=[1,0,0,1],
|
||||||
|
**kw):
|
||||||
|
BoxLayout.__init__(self, **kw)
|
||||||
|
self.item_widgets = []
|
||||||
|
for desc in items_desc:
|
||||||
|
c = PressableBox(border_width=border_width,
|
||||||
|
bgcolor=bgcolor,
|
||||||
|
selected_color=selected_color
|
||||||
|
)
|
||||||
|
self.item_widgets.append(c)
|
||||||
|
self.add_widget(c)
|
||||||
|
c.bind(on_press=self.select_item)
|
||||||
|
b = Factory.Blocks()
|
||||||
|
def cb(c,o,w):
|
||||||
|
c.add_widget(w)
|
||||||
|
def eb(desc,o,e):
|
||||||
|
print(desc,'error',e)
|
||||||
|
b.bind(on_built=partial(cb,c))
|
||||||
|
b.bind(on_failed=partial(eb,desc))
|
||||||
|
b.widgetBuild(desc,ancestor=self)
|
||||||
|
if desc.get('data'):
|
||||||
|
c.set_data(desc.get('data'))
|
||||||
|
|
||||||
|
self.selected = None
|
||||||
|
|
||||||
|
def select_item(self,o=None):
|
||||||
|
[i.unselected() for i in self.item_widgets if i != o]
|
||||||
|
|
||||||
|
def getValue(self):
|
||||||
|
for i in self.item_widgets:
|
||||||
|
if i.is_selected():
|
||||||
|
return i.getValue()
|
||||||
|
return None
|
||||||
|
|
||||||
|
Factory.register('PressableBox',PressableBox)
|
||||||
|
Factory.register('ToggleItems',ToggleItems)
|
Loading…
Reference in New Issue
Block a user