-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathFilterDlg.py
43 lines (36 loc) · 1.58 KB
/
FilterDlg.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import wx
import cad
from HDialog import HDialog
from HDialog import control_border
class FilterDlg(HDialog):
def __init__(self):
HDialog.__init__(self, title = 'Filter')
self.names_and_types = cad.GetObjectNamesAndTypes()
self.check_boxes = []
sizerMain = wx.BoxSizer(wx.VERTICAL)
for name, type in cad.GetObjectNamesAndTypes():
check_box = wx.CheckBox(self, wx.ID_ANY, name)
self.check_boxes.append((check_box, type))
if wx.GetApp().select_mode.filter.IsTypeInFilter(type):
check_box.SetValue(True)
sizerMain.Add(check_box, 0, wx.ALL, 2)
ok_cancel = self.MakeOkAndCancel(wx.HORIZONTAL)
buttonSetAll = wx.Button(self, wx.ID_ANY, "Set All")
ok_cancel.sizer.Add( buttonSetAll, 0, wx.ALL, control_border )
self.Bind(wx.EVT_BUTTON, self.OnSetAll, buttonSetAll)
ok_cancel.AddToSizer(sizerMain)
self.SetSizer( sizerMain )
sizerMain.SetSizeHints( self )
sizerMain.Fit( self )
def OnSetAll(self, event):
for check_box, type in self.check_boxes:
check_box.SetValue(True)
def SetFilterFromCheckBoxes(self):
checked_types = []
for check_box, type in self.check_boxes:
if check_box.IsChecked():
checked_types.append(type)
wx.GetApp().select_mode.filter.Clear()
if len(checked_types) < len(self.names_and_types):
for checked_type in checked_types:
wx.GetApp().select_mode.filter.AddType(checked_type)