Changeset 1803
- Timestamp:
- Apr 22, 2015 4:29:05 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIctrls.py
r1801 r1803 1064 1064 topSizer.Add(wx.StaticText(self,wx.ID_ANY,'Name \nFilter: '),0,wx.ALL|WACV,1) 1065 1065 self.filterBox = wx.TextCtrl(self, wx.ID_ANY, size=(80,-1),style=wx.TE_PROCESS_ENTER) 1066 self.filterBox.Bind(wx.EVT_ CHAR,self.onChar)1066 self.filterBox.Bind(wx.EVT_TEXT,self.onChar) 1067 1067 self.filterBox.Bind(wx.EVT_TEXT_ENTER,self.Filter) 1068 1068 topSizer.Add(self.filterBox,0,wx.ALL|WACV,0) 1069 1069 Sizer.Add(topSizer,0,wx.ALL|wx.EXPAND,8) 1070 self.trigger = False 1070 self.settingRange = False 1071 self.rangeFirst = None 1071 1072 self.clb = wx.CheckListBox(self, wx.ID_ANY, (30,30), wx.DefaultSize, ChoiceList) 1072 1073 self.clb.Bind(wx.EVT_CHECKLISTBOX,self.OnCheck) … … 1079 1080 # set/toggle buttons 1080 1081 if toggle: 1081 bSizer = wx.BoxSizer(wx.VERTICAL)1082 tSizer = wx.FlexGridSizer(cols=2,hgap=5,vgap=5) 1082 1083 setBut = wx.Button(self,wx.ID_ANY,'Set All') 1083 1084 setBut.Bind(wx.EVT_BUTTON,self._SetAll) 1084 bSizer.Add(setBut,0,wx.ALIGN_CENTER) 1085 bSizer.Add((-1,5)) 1085 tSizer.Add(setBut) 1086 1086 togBut = wx.Button(self,wx.ID_ANY,'Toggle All') 1087 1087 togBut.Bind(wx.EVT_BUTTON,self._ToggleAll) 1088 bSizer.Add(togBut,0,wx.ALIGN_CENTER) 1089 Sizer.Add(bSizer,0,wx.LEFT,12) 1088 tSizer.Add(togBut) 1089 self.rangeBut = wx.ToggleButton(self,wx.ID_ANY,'Set Range') 1090 self.rangeBut.Bind(wx.EVT_TOGGLEBUTTON,self.SetRange) 1091 tSizer.Add(self.rangeBut) 1092 self.rangeCapt = wx.StaticText(self,wx.ID_ANY,'') 1093 tSizer.Add(self.rangeCapt) 1094 Sizer.Add(tSizer,0,wx.LEFT,12) 1090 1095 # OK/Cancel buttons 1091 1096 btnsizer = wx.StdDialogButtonSizer() … … 1104 1109 self.SetSizer(Sizer) 1105 1110 self.CenterOnParent() 1111 1112 def SetRange(self,event): 1113 '''Respond to a press of the Set Range button. Set the range flag and 1114 the caption next to the button 1115 ''' 1116 self.settingRange = self.rangeBut.GetValue() 1117 if self.settingRange: 1118 self.rangeCapt.SetLabel('Select range start') 1119 else: 1120 self.rangeCapt.SetLabel('') 1121 self.rangeFirst = None 1106 1122 1107 1123 def GetSelections(self): … … 1142 1158 1143 1159 def onChar(self,event): 1144 ' for keyboard events. self.trigger is used in self.OnCheck below'1160 'Respond to keyboard events in the Filter box' 1145 1161 self.OKbtn.Enable(False) 1146 if event.GetKeyCode() == wx.WXK_SHIFT:1147 self.trigger = True1148 print 'debug: Shift pressed'1149 1162 if self.timer.IsRunning(): 1150 1163 self.timer.Stop() … … 1153 1166 1154 1167 def OnCheck(self,event): 1155 '''for CheckListBox events; if Shift key down this sets all unset 1156 entries below the selected one''' 1157 if self.trigger: 1158 id = event.GetSelection() 1159 name = self.clb.GetString(id) 1160 iB = id-1 1161 if iB < 0: 1162 return 1163 while not self.clb.IsChecked(iB): 1164 self.clb.Check(iB) 1165 iB -= 1 1166 if iB < 0: 1167 break 1168 self.trigger = False 1168 '''for CheckListBox events; if Set Range is in use, this sets/clears all 1169 entries in range between start and end according to the value in start. 1170 Repeated clicks on the start change the checkbox state, but do not trigger 1171 the range copy. 1172 The caption next to the button is updated on the first button press. 1173 ''' 1174 if self.settingRange: 1175 id = event.GetInt() 1176 if self.rangeFirst is None: 1177 name = self.clb.GetString(id) 1178 self.rangeCapt.SetLabel(name+' to...') 1179 self.rangeFirst = id 1180 elif self.rangeFirst == id: 1181 pass 1182 else: 1183 for i in range(min(self.rangeFirst,id), max(self.rangeFirst,id)+1): 1184 self.clb.Check(i,self.clb.IsChecked(self.rangeFirst)) 1185 self.rangeBut.SetValue(False) 1186 self.rangeCapt.SetLabel('') 1187 return 1169 1188 1170 1189 def Filter(self,event): 1190 '''Read text from filter control and select entries that match. Called by 1191 Timer after a delay with no input or if Enter is pressed. 1192 ''' 1171 1193 if self.timer.IsRunning(): 1172 1194 self.timer.Stop()
Note: See TracChangeset
for help on using the changeset viewer.