The has been recreated and upgraded with the latest version this weekend, If you encounter any problem please inform the Helpdesk.

Commit a58a0653 authored by eric pellegrini's avatar eric pellegrini
Browse files

Fix bug when checking items on checkable combobox on Windows

parent eafedbe8
import wx.combo
class ComboCheckbox(wx.combo.ComboPopup):
class ComboCheckbox(wx.CheckListBox,wx.combo.ComboPopup):
def __init__(self, items, maxNumberOfItems=None):
self._items = items
self._maxNumberOfItems = maxNumberOfItems
self._currentItem = -1
def items(self):
return self._items
......@@ -15,31 +19,48 @@ class ComboCheckbox(wx.combo.ComboPopup):
def checklistbox(self):
return self._checklistbox
return self
def OnMotion(self, event):
item = self.HitTest(event.GetPosition())
if item >= 0:
self._currentItem = item
def Create(self, parent):
self._checklistbox = wx.CheckListBox(parent, -1, choices=self._items)
self._checklistbox.Bind(wx.EVT_CHECKLISTBOX, self.on_check_item)
if not self._checklistbox.IsEmpty():
def Create(self, parent):
wx.CheckListBox.Create(self,parent, -1, choices=self._items)
self.Bind(wx.EVT_MOTION, self.OnMotion)
self.Bind(wx.EVT_LEFT_DOWN, self.on_check_item)
if not self.IsEmpty():
return True
def GetControl(self):
return self._checklistbox
return self
def GetAdjustedSize(self, minWidth, prefHeight, maxHeight):
return self._checklistbox.GetSize()
return self.GetSize()
def GetStringValue(self):
return self._checklistbox.GetCheckedStrings()
return self.GetCheckedStrings()
def on_check_item(self, event):
if self._maxNumberOfItems is None:
nCheckedItems = len(self._checklistbox.GetChecked())
if nCheckedItems > self._maxNumberOfItems:
self._checklistbox.Check(event.GetInt(), False)
\ No newline at end of file
# Control only if ele;ent is checked
if not self.IsChecked(self._currentItem):
# Control max number of items
if self._maxNumberOfItems is None:
# Accept the event
self.Check(self._currentItem, True)
# Control the number of checked items
nCheckedItems = len(self.GetChecked())
if nCheckedItems < self._maxNumberOfItems:
# Chech the item
self.Check(self._currentItem, True)
self.Check(self._currentItem, False)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment