+class ContentCheckListDialog(wxDialogPtr):
+ def __init__(self, parent, value):
+ # Is this normal???
+ w = frame.res.LoadDialog(parent, 'ID_DIALOG_CONTENT_CHECK_LIST')
+ wxDialogPtr.__init__(self, w.this)
+ self.thisown = 1
+ self.Center()
+ self.list = self.FindWindowByName('ID_CHECK_LIST')
+ # Set list items
+ i = 0
+ for v,ch in value:
+ self.list.Append(v)
+ self.list.Check(i, ch)
+ i += 1
+ self.SetAutoLayout(true)
+ self.GetSizer().Fit(self)
+ # Callbacks
+ self.ID_BUTTON_APPEND = XMLID('ID_BUTTON_APPEND')
+ self.ID_BUTTON_REMOVE = XMLID('ID_BUTTON_REMOVE')
+ self.ID_BUTTON_UP = XMLID('ID_BUTTON_UP')
+ self.ID_BUTTON_DOWN = XMLID('ID_BUTTON_DOWN')
+ EVT_CHECKLISTBOX(self, self.list.GetId(), self.OnCheck)
+ EVT_BUTTON(self, self.ID_BUTTON_UP, self.OnButtonUp)
+ EVT_BUTTON(self, self.ID_BUTTON_DOWN, self.OnButtonDown)
+ EVT_BUTTON(self, self.ID_BUTTON_APPEND, self.OnButtonAppend)
+ EVT_BUTTON(self, self.ID_BUTTON_REMOVE, self.OnButtonRemove)
+ EVT_UPDATE_UI(self, self.ID_BUTTON_UP, self.OnUpdateUI)
+ EVT_UPDATE_UI(self, self.ID_BUTTON_DOWN, self.OnUpdateUI)
+ EVT_UPDATE_UI(self, self.ID_BUTTON_REMOVE, self.OnUpdateUI)
+ def OnCheck(self, evt):
+ # !!! Wrong wxGTK (wxMSW?) behavior: toggling selection if checking
+ self.list.Deselect(evt.GetSelection())
+ def OnButtonUp(self, evt):
+ i = self.list.GetSelection()
+ str, ch = self.list.GetString(i), self.list.IsChecked(i)
+ self.list.Delete(i)
+ self.list.InsertItems([str], i-1)
+ self.list.Check(i-1, ch)
+ self.list.SetSelection(i-1)
+ def OnButtonDown(self, evt):
+ i = self.list.GetSelection()
+ str, ch = self.list.GetString(i), self.list.IsChecked(i)
+ self.list.Delete(i)
+ self.list.InsertItems([str], i+1)
+ self.list.Check(i+1, ch)
+ self.list.SetSelection(i+1)
+ def OnButtonAppend(self, evt):
+ str = wxGetTextFromUser('Enter new item:', 'Append', '', self)
+ self.list.Append(str)
+ def OnButtonRemove(self, evt):
+ self.list.Delete(self.list.GetSelection())
+ def OnUpdateUI(self, evt):
+ if evt.GetId() == self.ID_BUTTON_REMOVE:
+ evt.Enable(self.list.GetSelection() != -1)
+ elif evt.GetId() == self.ID_BUTTON_UP:
+ evt.Enable(self.list.GetSelection() > 0)
+ elif evt.GetId() == self.ID_BUTTON_DOWN:
+ evt.Enable(self.list.GetSelection() != -1 and \
+ self.list.GetSelection() < self.list.Number() - 1)
+