core (XMLUI), frontends: advancedListContainer part 2:
This commit is contained in:
parent
edf3e1bc87
commit
18aeb3a6aa
1 changed files with 142 additions and 36 deletions
|
|
@ -154,16 +154,43 @@ class WixContainer(object):
|
|||
self.sizer.Add(widget, self._xmlui_proportion, flag=wx.EXPAND)
|
||||
|
||||
|
||||
class AdvancedListContainer(WixContainer, xmlui.AdvancedListContainer, wx.Panel):
|
||||
class AdvancedListContainer(WixContainer, xmlui.AdvancedListContainer, wx.ScrolledWindow):
|
||||
|
||||
def __init__(self, parent, columns):
|
||||
wx.Panel.__init__(self, parent)
|
||||
def __init__(self, parent, columns, selectable='no'):
|
||||
wx.ScrolledWindow.__init__(self, parent)
|
||||
self._xmlui_selectable = selectable != 'no'
|
||||
if selectable:
|
||||
columns += 1
|
||||
self.sizer = wx.FlexGridSizer(cols=columns)
|
||||
self.SetSizer(self.sizer)
|
||||
self._xmlui_select_cb = None
|
||||
self._xmlui_select_idx = None
|
||||
self._xmlui_select_widgets = []
|
||||
|
||||
def _xmluiAddRow(self):
|
||||
pass
|
||||
def _xmluiAddRow(self, idx):
|
||||
# XXX: select_button is a Q&D way to implement row selection
|
||||
# FIXME: must be done properly
|
||||
if not self._xmlui_selectable:
|
||||
return
|
||||
select_button = wx.Button(self, wx.ID_OK, label=_("select"))
|
||||
self.sizer.Add(select_button)
|
||||
def click_cb(event, idx=idx):
|
||||
cb = self._xmlui_select_cb
|
||||
self._xmlui_select_idx = idx
|
||||
# TODO: fill self._xmlui_select_widgets
|
||||
if cb is not None:
|
||||
cb(self)
|
||||
event.Skip()
|
||||
self.Bind(wx.EVT_BUTTON, click_cb)
|
||||
|
||||
def _xmluiGetSelectedWidgets(self):
|
||||
return self._xmlui_select_widgets
|
||||
|
||||
def _xmluiGetSelectedIndex(self):
|
||||
return self._xmlui_select_idx
|
||||
|
||||
def _xmluiOnSelect(self, callback):
|
||||
self._xmlui_select_cb = callback
|
||||
|
||||
class PairsContainer(WixContainer, xmlui.PairsContainer, wx.Panel):
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue