bugfix
This commit is contained in:
parent
23fb775723
commit
979ac006b2
@ -11,9 +11,14 @@ from kivy.properties import NumericProperty, DictProperty, \
|
||||
from kivyblocks.ready import WidgetReady
|
||||
from kivyblocks.bgcolorbehavior import BGColorBehavior
|
||||
from kivyblocks.utils import CSize
|
||||
from kivyblocks.baseWidget import Box
|
||||
from kivyblocks.baseWidget import Box, Text
|
||||
from kivyblocks.widget_css import WidgetCSS
|
||||
|
||||
class TinyText(Text):
|
||||
def on_texture_size(self, o, ts):
|
||||
self.size = self.texture_size
|
||||
print('TinyText:texture_size=', self.texture_size)
|
||||
|
||||
class ClickableBox(TouchRippleButtonBehavior, Box):
|
||||
def __init__(self,
|
||||
border_width=1,
|
||||
@ -23,11 +28,10 @@ class ClickableBox(TouchRippleButtonBehavior, Box):
|
||||
border_width,
|
||||
border_width,
|
||||
border_width],
|
||||
radius=radius,
|
||||
**kw)
|
||||
self.border_width = border_width
|
||||
self.bind(minimum_height=self.setter('height'))
|
||||
self.bind(minimum_width=self.setter('width'))
|
||||
# self.bind(minimum_height=self.setter('height'))
|
||||
# self.bind(minimum_width=self.setter('width'))
|
||||
|
||||
def on_press(self,o=None):
|
||||
pass
|
||||
@ -35,32 +39,53 @@ class ClickableBox(TouchRippleButtonBehavior, Box):
|
||||
class ClickableText(ClickableBox):
|
||||
text = StringProperty(' ')
|
||||
def __init__(self, **kw):
|
||||
print('ClickableText begin inited')
|
||||
self.txt_w = None
|
||||
super(ClickableText, self).__init__(**kw)
|
||||
self.txt_w = Text(text=self.text, i18n=True)
|
||||
# self.txt_w.size_hint = (None, None)
|
||||
# self.txt_w.bind(minimum_height=self.self.txt_w.setter('height'))
|
||||
# self.txt_w.bind(minimum_width=self.self.txt_w.setter('width'))
|
||||
self.txt_w = TinyText(text=self.text, i18n=True)
|
||||
self.txt_w.bind(texture_size=self.reset_size)
|
||||
self.add_widget(self.txt_w)
|
||||
self.txt_w.size_hint = (None, None)
|
||||
self.txt_w.size = self.txt_w.texture_size
|
||||
#self.txt_w.bind(minimum_height=self.txt_w.setter('height'))
|
||||
#self.txt_w.bind(minimum_width=self.txt_w.setter('width'))
|
||||
print('ClickableText inited')
|
||||
|
||||
def reset_size(self, o, s):
|
||||
self.size_hint = (None,None)
|
||||
self.size = self.txt_w.texture_size
|
||||
|
||||
def on_text(self, o, txt):
|
||||
self.txt_w.text = txt
|
||||
print('on_text fired')
|
||||
if self.txt_w:
|
||||
self.txt_w.text = self.text
|
||||
|
||||
|
||||
|
||||
class ClickableIconText(ClickableText):
|
||||
source = StringProperty(None)
|
||||
img_kw = DictProperty({})
|
||||
def __init__(self, **kw):
|
||||
super(ClickableIconText, self).__init__(**kw)
|
||||
self.img_w = None
|
||||
if source:
|
||||
self.img_w = AsyncImage(source=self.source, **self.img_kw)
|
||||
self.add_widget(self.img_w, index=0)
|
||||
super(ClickableIconText, self).__init__(**kw)
|
||||
print('ClickableIconText inited')
|
||||
|
||||
def reset_size(self, o, s):
|
||||
self.size_hint = (None,None)
|
||||
if self.orientation == 'horizontal':
|
||||
self.height = max(self.txt_w.texture_size[1], self.img_w.height)
|
||||
self.width = self.txt_w.texture_size[0] + self.img_w.width
|
||||
else:
|
||||
self.height = self.txt_w.texture_size[1] + self.img_w.height
|
||||
self.width = max(self.txt_w.texture_size[0], self.img_w.width)
|
||||
|
||||
|
||||
def on_source(self, o, source):
|
||||
if self.img_w:
|
||||
self.img_w.source = source
|
||||
return
|
||||
self.img_w = AsyncImage(source=self.source, **self.img_kw)
|
||||
self.add_widget(self.img_w, index=0)
|
||||
self.add_widget(self.img_w, index=-1)
|
||||
|
||||
class ToggleText(ClickableText):
|
||||
"""
|
||||
@ -91,7 +116,8 @@ class ToggleText(ClickableText):
|
||||
return self.select_state
|
||||
|
||||
def on_select_state(self, o, f):
|
||||
self.clscss = self.css_on if f else self.css_off
|
||||
self.csscls = self.css_on if f else self.css_off
|
||||
print(f'using {self.csscls}')
|
||||
|
||||
class ToggleIconText(ToggleText):
|
||||
"""
|
||||
@ -109,26 +135,36 @@ class ToggleIconText(ToggleText):
|
||||
source = StringProperty(None)
|
||||
img_kw = DictProperty({})
|
||||
def __init__(self, **kw):
|
||||
super(ToggleIconText, self).__init__(**kw)
|
||||
self.img_w = None
|
||||
self.source = source_off
|
||||
super(ToggleIconText, self).__init__(**kw)
|
||||
self.source = self.source_off
|
||||
self.img_w = AsyncImage(source=self.source, **self.img_kw)
|
||||
self.add_widget(self.img_w, index=-1)
|
||||
|
||||
def reset_size(self, o, s):
|
||||
self.size_hint = (None,None)
|
||||
if self.orientation == 'horizontal':
|
||||
self.height = max(self.txt_w.texture_size[1], self.img_w.height)
|
||||
self.width = self.txt_w.texture_size[0] + self.img_w.width
|
||||
else:
|
||||
self.height = self.txt_w.texture_size[1] + self.img_w.height
|
||||
self.width = max(self.txt_w.texture_size[0], self.img_w.width)
|
||||
print(f'ToggleIconText:w,h={self.width},{self.height}')
|
||||
|
||||
def on_select_state(self, o, f):
|
||||
super(ToggleIconText, self).on_select_state(o,f)
|
||||
self.source = source_on if f else source_off
|
||||
self.source = self.source_on if f else self.source_off
|
||||
|
||||
def on_source(self, o, source):
|
||||
if not self.img_w:
|
||||
self.img_w = AsyncImage(self.source, **self.img_kw)
|
||||
self.add_widget(sef.img_w, index=0)
|
||||
if self.img_w:
|
||||
self.img_w.source = self.source
|
||||
|
||||
class ClickableImage(ClickableBox):
|
||||
source=StringProperty(None)
|
||||
img_kw = DictProperty(None)
|
||||
def __init__(self, **kw):
|
||||
super(ClickableImage, self).__init__(**kw)
|
||||
self.img_w = None
|
||||
if source:
|
||||
super(ClickableImage, self).__init__(**kw)
|
||||
self.img_w = AsyncImage(source=self.source, **self.img_kw)
|
||||
self.add_widget(self.img_w)
|
||||
|
||||
@ -145,7 +181,7 @@ class ToggleImage(ClickableImage):
|
||||
select_state = BooleanProperty(False)
|
||||
def __init__(self, **kw):
|
||||
super(ToggleImage, self).__init__(**kw)
|
||||
self.source = source_on
|
||||
self.source = self.source_on
|
||||
|
||||
def toggle(self):
|
||||
self.select_state = False if self.select_state else True
|
||||
@ -166,9 +202,11 @@ class ToggleImage(ClickableImage):
|
||||
self.source = self.source_off
|
||||
|
||||
r = Factory.register
|
||||
r('TinyText', TinyText)
|
||||
r('ClickableBox', ClickableBox)
|
||||
r('ClickableText',ClickableText)
|
||||
r('ClickableIconText',ClickableIconText)
|
||||
r('ToggleText',ToggleText)
|
||||
r('ToggleIconText',ToggleIconText)
|
||||
r('ClickableImage',ClickableImage)
|
||||
r('ToggleImage',ToggleImage)
|
||||
|
@ -9,7 +9,7 @@ from kivy.uix.widget import Widget
|
||||
from kivy.app import App
|
||||
from kivy.clock import Clock
|
||||
from kivy.factory import Factory
|
||||
from kivy.properties import StringProperty
|
||||
from kivy.properties import StringProperty, ListProperty, NumericProperty
|
||||
|
||||
from appPublic.dictObject import DictObject
|
||||
from appPublic.registerfunction import RegisterFunction
|
||||
@ -19,6 +19,7 @@ from .utils import *
|
||||
from .ready import WidgetReady
|
||||
from .color_definitions import getColors
|
||||
from .baseWidget import Text, Box
|
||||
from .scrollpanel import ScrollPanel
|
||||
from .toggleitems import ToggleItems
|
||||
|
||||
"""
|
||||
@ -130,7 +131,7 @@ Toolpage options
|
||||
|
||||
"""
|
||||
|
||||
class ScrollToolbar(ToolbarPanel):
|
||||
class ScrollToolbar(ScrollPanel):
|
||||
"""
|
||||
tool has the follow attributes
|
||||
{
|
||||
@ -145,35 +146,37 @@ class ScrollToolbar(ToolbarPanel):
|
||||
"img_width_c":image width in charecter size
|
||||
"css_on",
|
||||
"css_off",
|
||||
"orient":"V" or "H"
|
||||
"tools":
|
||||
"tool_orient"
|
||||
}
|
||||
|
||||
"""
|
||||
css_on = StringProperty('default')
|
||||
css_off = StringProperty('default')
|
||||
tools = ListProperty([])
|
||||
tool_orient = StringProperty('horizontal')
|
||||
img_height_c = NumericProperty(2)
|
||||
img_width_c = NumericProperty(2)
|
||||
def __init__(self, **kw):
|
||||
print('#############init begin##########')
|
||||
super(ScrollToolbar, self).__init__(**kw)
|
||||
print('#############super init end##########')
|
||||
self.register_event_type('on_press')
|
||||
self.w_dic = {}
|
||||
|
||||
def on_tools(self, o, tools):
|
||||
for t in self.tools:
|
||||
label = t.get('label')
|
||||
source_on = t.get('source_on', t.get('img_src',None))
|
||||
source_off = t.get('source_off', t.get('img_src', None))
|
||||
ToggleIconText = Factory.ToggleIconText
|
||||
ToggleText = Factory.ToggleText
|
||||
ToggleIcon = Factory.ToggleIcon
|
||||
ToggleImage = Factory.ToggleImage
|
||||
if label and source_on:
|
||||
w = ToggleIconText(css_on=self.css_on,
|
||||
css_off=self.css_off,
|
||||
text=label,
|
||||
source_on=source_on,
|
||||
source_off=source_off,
|
||||
orientation=self.tool_orient,
|
||||
img_kw={
|
||||
"size_hint":(None, None),
|
||||
"height":CSize(self.img_height_c),
|
||||
@ -183,14 +186,16 @@ class ScrollToolbar(ToolbarPanel):
|
||||
elif label:
|
||||
w = ToggleText(css_on=self.css_on,
|
||||
css_off=self.css_off,
|
||||
orientation=self.tool_orient,
|
||||
text=label)
|
||||
elif source_on:
|
||||
w = ToggleIcon( source_on=source_on,
|
||||
w = ToggleImage( source_on=source_on,
|
||||
source_off=source_off,
|
||||
orientation=self.tool_orient,
|
||||
img_kw={
|
||||
"size_hint":(None, None),
|
||||
"height":CSize(self.img_height_c),
|
||||
"width":"CSize(self.img_width_c)
|
||||
"width":CSize(self.img_width_c)
|
||||
}
|
||||
)
|
||||
|
||||
@ -260,6 +265,12 @@ class ToolPage(BoxLayout):
|
||||
self.toolbar.height = self.height
|
||||
self.content.height = self.height
|
||||
self.content.width = self.width - self.toolbar.width
|
||||
print(f'tb-width={self.toolbar.width}')
|
||||
print(f'tb-height={self.toolbar.height}')
|
||||
print(f'c-height={self.content.height}')
|
||||
print(f'c-width={self.content.width}')
|
||||
print(f'height={self.height}')
|
||||
print(f'width={self.width}')
|
||||
|
||||
def init(self):
|
||||
self.initFlag = True
|
||||
@ -267,8 +278,8 @@ class ToolPage(BoxLayout):
|
||||
self.content = BoxLayout()
|
||||
self.content.widget_id = 'content'
|
||||
opts = {}
|
||||
opts['img_height_c"] = self.img_size,
|
||||
opts['img_width_c"] = self.img_size,
|
||||
opts['img_height_c'] = self.img_size
|
||||
opts['img_width_c'] = self.img_size
|
||||
opts['css_on'] = self.actived_css
|
||||
opts['css_off'] = self.normal_css
|
||||
opts['orient'] = 'H'
|
||||
|
Loading…
Reference in New Issue
Block a user