bugfix
This commit is contained in:
parent
805417e084
commit
bd72cbc5aa
@ -222,19 +222,22 @@ class ToolPage(BGColorBehavior, BoxLayout):
|
|||||||
name = o.getValue()
|
name = o.getValue()
|
||||||
t = self.get_tool_by_name(name)
|
t = self.get_tool_by_name(name)
|
||||||
w = self.content_widgets.get(name)
|
w = self.content_widgets.get(name)
|
||||||
|
self.content.clear_widgets()
|
||||||
if w is None or t.fresh:
|
if w is None or t.fresh:
|
||||||
if t.url:
|
if t.url:
|
||||||
w = self.build_widget(t.url)
|
w = self.build_widget(t.url)
|
||||||
self.content_widgets[name] = w
|
self.content_widgets[name] = w
|
||||||
|
self.content.add_widget(w)
|
||||||
return
|
return
|
||||||
if t.rfname:
|
if t.rfname:
|
||||||
rf = RegisterFunction()
|
rf = RegisterFunction()
|
||||||
f = rf.get(t.rfname)
|
f = rf.get(t.rfname)
|
||||||
if f:
|
if f:
|
||||||
return f()
|
r = f()
|
||||||
|
if isinstance(r,Widget):
|
||||||
|
self.content.add_widget(r)
|
||||||
return
|
return
|
||||||
if w:
|
if w:
|
||||||
print('toolbar.py: Use old widget')
|
print('toolbar.py: Use old widget')
|
||||||
self.content.clear_widgets()
|
|
||||||
self.content.add_widget(w)
|
self.content.add_widget(w)
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ from kivy.graphics import Color, Ellipse,Rectangle
|
|||||||
class ScrollWidget(ScrollView):
|
class ScrollWidget(ScrollView):
|
||||||
def __init__(self,**kw):
|
def __init__(self,**kw):
|
||||||
super(ScrollWidget,self).__init__(**kw)
|
super(ScrollWidget,self).__init__(**kw)
|
||||||
|
self.sized_widgets = []
|
||||||
self._inner = BoxLayout(orientation='vertical',padding=5,
|
self._inner = BoxLayout(orientation='vertical',padding=5,
|
||||||
spacing=8,size_hint=(None,None))
|
spacing=8,size_hint=(None,None))
|
||||||
self._inner.bind(
|
self._inner.bind(
|
||||||
@ -13,15 +14,30 @@ class ScrollWidget(ScrollView):
|
|||||||
self._inner.bind(
|
self._inner.bind(
|
||||||
minimum_width=self._inner.setter('width'))
|
minimum_width=self._inner.setter('width'))
|
||||||
super(ScrollWidget,self).add_widget(self._inner)
|
super(ScrollWidget,self).add_widget(self._inner)
|
||||||
|
self.bind(size=self.change_all_sized_widgets)
|
||||||
|
|
||||||
|
def change_all_sized_widgets(self, *args):
|
||||||
|
for w in self.sized_widgets:
|
||||||
|
self.change_widget_width(w)
|
||||||
|
|
||||||
|
def change_widget_width(self, w):
|
||||||
|
w.size_hint_x = None
|
||||||
|
w.width = self.width * w.org_size_hint_x
|
||||||
|
|
||||||
def add_widget(self,widget,**kw):
|
def add_widget(self,widget,**kw):
|
||||||
|
if widget.size_hint_x:
|
||||||
|
widget.org_size_hint_x = widget.size_hint_x
|
||||||
|
self.change_widget_width(widget)
|
||||||
|
self.sized_widgets.append(widget)
|
||||||
a = self._inner.add_widget(widget,**kw)
|
a = self._inner.add_widget(widget,**kw)
|
||||||
return a
|
return a
|
||||||
|
|
||||||
def clear_widgets(self,**kw):
|
def clear_widgets(self,**kw):
|
||||||
|
self.sized_widgets = []
|
||||||
a = self._inner.clear_widgets(**kw)
|
a = self._inner.clear_widgets(**kw)
|
||||||
|
|
||||||
def remove_widget(self,widget,**kw):
|
def remove_widget(self,widget,**kw):
|
||||||
|
self.sized_widgets = [i for i in self.sized_widgets if i != widget]
|
||||||
a = self._inner.remove_widget(widget,**kw)
|
a = self._inner.remove_widget(widget,**kw)
|
||||||
return a
|
return a
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user