controls/PouInstanceVariablesPanel.py
branchwxPython4
changeset 3657 e0d6f5f0dcc2
parent 3307 eeec6e0ea269
parent 3649 61fa60130ad6
child 3750 f62625418bff
equal deleted inserted replaced
3652:b5c6bb72bfc9 3657:e0d6f5f0dcc2
   172             self.EditImage: _ButtonCallbacks(
   172             self.EditImage: _ButtonCallbacks(
   173                 self.EditButtonCallback, None),
   173                 self.EditButtonCallback, None),
   174             self.DebugInstanceImage: _ButtonCallbacks(
   174             self.DebugInstanceImage: _ButtonCallbacks(
   175                 self.DebugButtonCallback, self.DebugButtonDClickCallback)}
   175                 self.DebugButtonCallback, self.DebugButtonDClickCallback)}
   176 
   176 
       
   177         self.FilterCtrl = wx.SearchCtrl(self)
       
   178         self.FilterCtrl.ShowCancelButton(True)
       
   179         self.FilterCtrl.Bind(wx.EVT_TEXT, self.OnFilterUpdate)
       
   180         self.FilterCtrl.Bind(wx.EVT_SEARCHCTRL_CANCEL_BTN, self.OnFilterCancel)
       
   181 
       
   182         searchMenu = wx.Menu()
       
   183         item = searchMenu.AppendCheckItem(-1, _("Match Case"))
       
   184         self.Bind(wx.EVT_MENU, self.OnSearchMenu, item)
       
   185         item = searchMenu.AppendCheckItem(-1, _("Whole Words"))
       
   186         self.Bind(wx.EVT_MENU, self.OnSearchMenu, item)
       
   187         self.FilterCtrl.SetMenu(searchMenu)
       
   188 
       
   189 
   177         buttons_sizer = wx.FlexGridSizer(cols=3, hgap=0, rows=1, vgap=0)
   190         buttons_sizer = wx.FlexGridSizer(cols=3, hgap=0, rows=1, vgap=0)
   178         buttons_sizer.Add(self.ParentButton)
   191         buttons_sizer.Add(self.ParentButton)
   179         buttons_sizer.Add(self.InstanceChoice, flag=wx.GROW)
   192         buttons_sizer.Add(self.InstanceChoice, flag=wx.GROW)
   180         buttons_sizer.Add(self.DebugButton)
   193         buttons_sizer.Add(self.DebugButton)
   181         buttons_sizer.AddGrowableCol(1)
   194         buttons_sizer.AddGrowableCol(1)
   182         buttons_sizer.AddGrowableRow(0)
   195         buttons_sizer.AddGrowableRow(0)
   183 
   196 
   184         main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
   197         main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=3, vgap=0)
   185         main_sizer.Add(buttons_sizer, flag=wx.GROW)
   198         main_sizer.Add(buttons_sizer, flag=wx.GROW)
   186         main_sizer.Add(self.VariablesList, flag=wx.GROW)
   199         main_sizer.Add(self.VariablesList, flag=wx.GROW)
       
   200         main_sizer.Add(self.FilterCtrl, flag=wx.GROW)
   187         main_sizer.AddGrowableCol(0)
   201         main_sizer.AddGrowableCol(0)
   188         main_sizer.AddGrowableRow(1)
   202         main_sizer.AddGrowableRow(1)
   189 
   203 
   190         self.SetSizer(main_sizer)
   204         self.SetSizer(main_sizer)
   191 
   205 
   196             self.DebugButton.Hide()
   210             self.DebugButton.Hide()
   197 
   211 
   198         self.PouTagName = None
   212         self.PouTagName = None
   199         self.PouInfos = None
   213         self.PouInfos = None
   200         self.PouInstance = None
   214         self.PouInstance = None
       
   215 
       
   216         self.Filter = None
       
   217         self.FilterCaseSensitive = False
       
   218         self.FilterWholeWord = False
       
   219 
   201 
   220 
   202     def __del__(self):
   221     def __del__(self):
   203         self.Controller = None
   222         self.Controller = None
   204 
   223 
   205     def SetTreeImageList(self, tree_image_list):
   224     def SetTreeImageList(self, tree_image_list):
   233         self.PouTagName = None
   252         self.PouTagName = None
   234         self.PouInfos = None
   253         self.PouInfos = None
   235         self.PouInstance = None
   254         self.PouInstance = None
   236 
   255 
   237         self.RefreshView()
   256         self.RefreshView()
       
   257 
       
   258     def OnSearchMenu(self, event):
       
   259         searchMenu = self.FilterCtrl.GetMenu().GetMenuItems()
       
   260         self.FilterCaseSensitive = searchMenu[0].IsChecked()
       
   261         self.FilterWholeWord = searchMenu[1].IsChecked()
       
   262         self.RefreshView()
       
   263 
       
   264     def OnFilterUpdate(self, event):
       
   265         self.Filter = self.FilterCtrl.GetValue()
       
   266         self.RefreshView()
       
   267         event.Skip()
       
   268 
       
   269     def OnFilterCancel(self, event):
       
   270         self.FilterCtrl.SetValue('')
       
   271         event.Skip()
   238 
   272 
   239     def RefreshView(self):
   273     def RefreshView(self):
   240         self.Freeze()
   274         self.Freeze()
   241         self.VariablesList.DeleteAllItems()
   275         self.VariablesList.DeleteAllItems()
   242 
   276 
   250         else:
   284         else:
   251             self.PouInfos = None
   285             self.PouInfos = None
   252         if self.PouInfos is not None:
   286         if self.PouInfos is not None:
   253             root = self.VariablesList.AddRoot("", data=self.PouInfos)
   287             root = self.VariablesList.AddRoot("", data=self.PouInfos)
   254             for var_infos in self.PouInfos.variables:
   288             for var_infos in self.PouInfos.variables:
       
   289                 if self.Filter:
       
   290                     pattern = self.Filter
       
   291                     varname = var_infos.name
       
   292                     if not self.FilterCaseSensitive:
       
   293                         pattern = pattern.upper()
       
   294                         varname = varname.upper()
       
   295                     if ((pattern != varname) if self.FilterWholeWord else
       
   296                         (pattern not in varname)):
       
   297                         continue
   255                 if var_infos.type is not None:
   298                 if var_infos.type is not None:
   256                     text = "%s (%s)" % (var_infos.name, var_infos.type)
   299                     text = "%s (%s)" % (var_infos.name, var_infos.type)
   257                 else:
   300                 else:
   258                     text = var_infos.name
   301                     text = var_infos.name
   259 
   302