dialogs/SearchInProjectDialog.py
changeset 1730 64d8f52bc8c8
parent 1696 8043f32de7b8
child 1736 7e61baa047f0
equal deleted inserted replaced
1726:d51af006fa6b 1730:64d8f52bc8c8
    31 #                          Search In Project Dialog
    31 #                          Search In Project Dialog
    32 #-------------------------------------------------------------------------------
    32 #-------------------------------------------------------------------------------
    33 
    33 
    34 def GetElementsChoices():
    34 def GetElementsChoices():
    35     _ = lambda x: x
    35     _ = lambda x: x
    36     return [("datatype", _("Data Type")), 
    36     return [("datatype", _("Data Type")),
    37             ("function", _("Function")), 
    37             ("function", _("Function")),
    38             ("functionBlock", _("Function Block")), 
    38             ("functionBlock", _("Function Block")),
    39             ("program", _("Program")), 
    39             ("program", _("Program")),
    40             ("configuration", _("Configuration"))]
    40             ("configuration", _("Configuration"))]
    41 
    41 
    42 class SearchInProjectDialog(wx.Dialog):
    42 class SearchInProjectDialog(wx.Dialog):
    43     
    43 
    44     def __init__(self, parent):
    44     def __init__(self, parent):
    45         wx.Dialog.__init__(self, parent, title=_('Search in Project'))
    45         wx.Dialog.__init__(self, parent, title=_('Search in Project'))
    46         
    46 
    47         main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=3, vgap=10)
    47         main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=3, vgap=10)
    48         main_sizer.AddGrowableCol(0)
    48         main_sizer.AddGrowableCol(0)
    49         main_sizer.AddGrowableRow(1)
    49         main_sizer.AddGrowableRow(1)
    50         
    50 
    51         pattern_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=5)
    51         pattern_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=5)
    52         pattern_sizer.AddGrowableCol(0)
    52         pattern_sizer.AddGrowableCol(0)
    53         main_sizer.AddSizer(pattern_sizer, border=20, 
    53         main_sizer.AddSizer(pattern_sizer, border=20,
    54               flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
    54               flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
    55         
    55 
    56         pattern_label = wx.StaticText(self, label=_('Pattern to search:'))
    56         pattern_label = wx.StaticText(self, label=_('Pattern to search:'))
    57         pattern_sizer.AddWindow(pattern_label, flag=wx.ALIGN_BOTTOM)
    57         pattern_sizer.AddWindow(pattern_label, flag=wx.ALIGN_BOTTOM)
    58         
    58 
    59         self.CaseSensitive = wx.CheckBox(self, label=_('Case sensitive'))
    59         self.CaseSensitive = wx.CheckBox(self, label=_('Case sensitive'))
    60         pattern_sizer.AddWindow(self.CaseSensitive, flag=wx.GROW)
    60         pattern_sizer.AddWindow(self.CaseSensitive, flag=wx.GROW)
    61         
    61 
    62         self.Pattern = wx.TextCtrl(self, size=wx.Size(250,-1))
    62         self.Pattern = wx.TextCtrl(self, size=wx.Size(250,-1))
    63         self.Bind(wx.EVT_TEXT, self.FindPatternChanged, self.Pattern)
    63         self.Bind(wx.EVT_TEXT, self.FindPatternChanged, self.Pattern)
    64         pattern_sizer.AddWindow(self.Pattern, flag=wx.GROW)
    64         pattern_sizer.AddWindow(self.Pattern, flag=wx.GROW)
    65         self.Bind(wx.EVT_CHAR_HOOK, self.OnEscapeKey)
    65         self.Bind(wx.EVT_CHAR_HOOK, self.OnEscapeKey)
    66         self.RegularExpression = wx.CheckBox(self, label=_('Regular expression'))
    66         self.RegularExpression = wx.CheckBox(self, label=_('Regular expression'))
    67         pattern_sizer.AddWindow(self.RegularExpression, flag=wx.GROW)
    67         pattern_sizer.AddWindow(self.RegularExpression, flag=wx.GROW)
    68         
    68 
    69         scope_staticbox = wx.StaticBox(self, label=_('Scope'))
    69         scope_staticbox = wx.StaticBox(self, label=_('Scope'))
    70         scope_sizer = wx.StaticBoxSizer(scope_staticbox, wx.HORIZONTAL)
    70         scope_sizer = wx.StaticBoxSizer(scope_staticbox, wx.HORIZONTAL)
    71         main_sizer.AddSizer(scope_sizer, border=20, 
    71         main_sizer.AddSizer(scope_sizer, border=20,
    72               flag=wx.GROW|wx.LEFT|wx.RIGHT)
    72               flag=wx.GROW|wx.LEFT|wx.RIGHT)
    73         
    73 
    74         scope_selection_sizer = wx.BoxSizer(wx.VERTICAL)
    74         scope_selection_sizer = wx.BoxSizer(wx.VERTICAL)
    75         scope_sizer.AddSizer(scope_selection_sizer, 1, border=5, 
    75         scope_sizer.AddSizer(scope_selection_sizer, 1, border=5,
    76               flag=wx.GROW|wx.TOP|wx.LEFT|wx.BOTTOM)
    76               flag=wx.GROW|wx.TOP|wx.LEFT|wx.BOTTOM)
    77         
    77 
    78         self.WholeProject = wx.RadioButton(self, label=_('Whole Project'), style=wx.RB_GROUP)
    78         self.WholeProject = wx.RadioButton(self, label=_('Whole Project'), style=wx.RB_GROUP)
    79         self.WholeProject.SetValue(True)
    79         self.WholeProject.SetValue(True)
    80         self.Bind(wx.EVT_RADIOBUTTON, self.OnScopeChanged, self.WholeProject)
    80         self.Bind(wx.EVT_RADIOBUTTON, self.OnScopeChanged, self.WholeProject)
    81         scope_selection_sizer.AddWindow(self.WholeProject, border=5, 
    81         scope_selection_sizer.AddWindow(self.WholeProject, border=5,
    82               flag=wx.GROW|wx.BOTTOM)
    82               flag=wx.GROW|wx.BOTTOM)
    83         
    83 
    84         self.OnlyElements = wx.RadioButton(self, label=_('Only Elements'))
    84         self.OnlyElements = wx.RadioButton(self, label=_('Only Elements'))
    85         self.Bind(wx.EVT_RADIOBUTTON, self.OnScopeChanged, self.OnlyElements)
    85         self.Bind(wx.EVT_RADIOBUTTON, self.OnScopeChanged, self.OnlyElements)
    86         self.OnlyElements.SetValue(False)
    86         self.OnlyElements.SetValue(False)
    87         scope_selection_sizer.AddWindow(self.OnlyElements, flag=wx.GROW)
    87         scope_selection_sizer.AddWindow(self.OnlyElements, flag=wx.GROW)
    88         
    88 
    89         self.ElementsList = wx.CheckListBox(self)
    89         self.ElementsList = wx.CheckListBox(self)
    90         self.ElementsList.Enable(False)
    90         self.ElementsList.Enable(False)
    91         scope_sizer.AddWindow(self.ElementsList, 1, border=5, 
    91         scope_sizer.AddWindow(self.ElementsList, 1, border=5,
    92               flag=wx.GROW|wx.TOP|wx.RIGHT|wx.BOTTOM)
    92               flag=wx.GROW|wx.TOP|wx.RIGHT|wx.BOTTOM)
    93 
    93 
    94         buttons_sizer = wx.BoxSizer(wx.HORIZONTAL)
    94         buttons_sizer = wx.BoxSizer(wx.HORIZONTAL)
    95         main_sizer.AddSizer(buttons_sizer, border=20,
    95         main_sizer.AddSizer(buttons_sizer, border=20,
    96                             flag=wx.LEFT | wx.RIGHT | wx.BOTTOM | wx.ALIGN_RIGHT)
    96                             flag=wx.LEFT | wx.RIGHT | wx.BOTTOM | wx.ALIGN_RIGHT)
   101         buttons_sizer.AddWindow(self.FindButton, border=5, flag=wx.RIGHT)
   101         buttons_sizer.AddWindow(self.FindButton, border=5, flag=wx.RIGHT)
   102 
   102 
   103         self.CloseButton = wx.Button(self, label=_("Close"))
   103         self.CloseButton = wx.Button(self, label=_("Close"))
   104         self.Bind(wx.EVT_BUTTON, self.OnCloseButton, self.CloseButton)
   104         self.Bind(wx.EVT_BUTTON, self.OnCloseButton, self.CloseButton)
   105         buttons_sizer.AddWindow(self.CloseButton)
   105         buttons_sizer.AddWindow(self.CloseButton)
   106         
   106 
   107         self.SetSizer(main_sizer)
   107         self.SetSizer(main_sizer)
   108         
   108 
   109         for name, label in GetElementsChoices():
   109         for name, label in GetElementsChoices():
   110             self.ElementsList.Append(_(label))
   110             self.ElementsList.Append(_(label))
   111 
   111 
   112         self.Fit()
   112         self.Fit()
   113         self.infosPrev = {}
   113         self.infosPrev = {}
   137         keycode = event.GetKeyCode()
   137         keycode = event.GetKeyCode()
   138         if keycode == wx.WXK_ESCAPE:
   138         if keycode == wx.WXK_ESCAPE:
   139             self.OnCloseButton(event)
   139             self.OnCloseButton(event)
   140         else:
   140         else:
   141             event.Skip()
   141             event.Skip()
   142     
   142 
   143     def OnFindButton(self, event):
   143     def OnFindButton(self, event):
   144         message = None
   144         message = None
   145         infos = {
   145         infos = {
   146             "find_pattern": self.Pattern.GetValue(),
   146             "find_pattern": self.Pattern.GetValue(),
   147             "case_sensitive": self.CaseSensitive.GetValue(),
   147             "case_sensitive": self.CaseSensitive.GetValue(),
   161                 CompilePattern(self.criteria)
   161                 CompilePattern(self.criteria)
   162                 self.infosPrev = infos
   162                 self.infosPrev = infos
   163             except:
   163             except:
   164                 self.criteria.clear()
   164                 self.criteria.clear()
   165                 message = _("Syntax error in regular expression of pattern to search!")
   165                 message = _("Syntax error in regular expression of pattern to search!")
   166         
   166 
   167         if message is not None:
   167         if message is not None:
   168             dialog = wx.MessageDialog(self, message, _("Error"), wx.OK|wx.ICON_ERROR)
   168             dialog = wx.MessageDialog(self, message, _("Error"), wx.OK|wx.ICON_ERROR)
   169             dialog.ShowModal()
   169             dialog.ShowModal()
   170             dialog.Destroy()
   170             dialog.Destroy()
   171         else:
   171         else: