dialogs/FBDVariableDialog.py
changeset 1768 691083b5682a
parent 1766 c1e5b9f19483
child 1782 5b6ad7a7fd9d
equal deleted inserted replaced
1767:c74815729afd 1768:691083b5682a
    62         @param controller: Reference to project controller
    62         @param controller: Reference to project controller
    63         @param tagname: Tagname of project POU edited
    63         @param tagname: Tagname of project POU edited
    64         @param exclude_input: Exclude input from variable class selection
    64         @param exclude_input: Exclude input from variable class selection
    65         """
    65         """
    66         BlockPreviewDialog.__init__(self, parent, controller, tagname,
    66         BlockPreviewDialog.__init__(self, parent, controller, tagname,
    67               title=_('Variable Properties'))
    67                                     title=_('Variable Properties'))
    68 
    68 
    69         # Init common sizers
    69         # Init common sizers
    70         self._init_sizers(4, 2, 4, None, 3, 2)
    70         self._init_sizers(4, 2, 4, None, 3, 2)
    71 
    71 
    72         # Create label for variable class
    72         # Create label for variable class
    78         self.Bind(wx.EVT_COMBOBOX, self.OnClassChanged, self.Class)
    78         self.Bind(wx.EVT_COMBOBOX, self.OnClassChanged, self.Class)
    79         self.LeftGridSizer.AddWindow(self.Class, flag=wx.GROW)
    79         self.LeftGridSizer.AddWindow(self.Class, flag=wx.GROW)
    80 
    80 
    81         # Create label for variable execution order
    81         # Create label for variable execution order
    82         execution_order_label = wx.StaticText(self,
    82         execution_order_label = wx.StaticText(self,
    83               label=_('Execution Order:'))
    83                                               label=_('Execution Order:'))
    84         self.LeftGridSizer.AddWindow(execution_order_label, flag=wx.GROW)
    84         self.LeftGridSizer.AddWindow(execution_order_label, flag=wx.GROW)
    85 
    85 
    86         # Create spin control for defining variable execution order
    86         # Create spin control for defining variable execution order
    87         self.ExecutionOrder = wx.SpinCtrl(self, min=0, style=wx.SP_ARROW_KEYS)
    87         self.ExecutionOrder = wx.SpinCtrl(self, min=0, style=wx.SP_ARROW_KEYS)
    88         self.Bind(wx.EVT_SPINCTRL, self.OnExecutionOrderChanged,
    88         self.Bind(wx.EVT_SPINCTRL, self.OnExecutionOrderChanged,
    90         self.LeftGridSizer.AddWindow(self.ExecutionOrder, flag=wx.GROW)
    90         self.LeftGridSizer.AddWindow(self.ExecutionOrder, flag=wx.GROW)
    91 
    91 
    92         # Create label for variable expression
    92         # Create label for variable expression
    93         name_label = wx.StaticText(self, label=_('Expression:'))
    93         name_label = wx.StaticText(self, label=_('Expression:'))
    94         self.RightGridSizer.AddWindow(name_label, border=5,
    94         self.RightGridSizer.AddWindow(name_label, border=5,
    95               flag=wx.GROW | wx.BOTTOM)
    95                                       flag=wx.GROW | wx.BOTTOM)
    96 
    96 
    97         # Create text control for defining variable expression
    97         # Create text control for defining variable expression
    98         self.Expression = wx.TextCtrl(self)
    98         self.Expression = wx.TextCtrl(self)
    99         self.Bind(wx.EVT_TEXT, self.OnExpressionChanged, self.Expression)
    99         self.Bind(wx.EVT_TEXT, self.OnExpressionChanged, self.Expression)
   100         self.RightGridSizer.AddWindow(self.Expression, flag=wx.GROW)
   100         self.RightGridSizer.AddWindow(self.Expression, flag=wx.GROW)
   101 
   101 
   102         # Create a list box to selected variable expression in the list of
   102         # Create a list box to selected variable expression in the list of
   103         # variables defined in POU
   103         # variables defined in POU
   104         self.VariableName = wx.ListBox(self, size=wx.Size(-1, 120),
   104         self.VariableName = wx.ListBox(self, size=wx.Size(-1, 120),
   105               style=wx.LB_SINGLE | wx.LB_SORT)
   105                                        style=wx.LB_SINGLE | wx.LB_SORT)
   106         self.Bind(wx.EVT_LISTBOX, self.OnNameChanged, self.VariableName)
   106         self.Bind(wx.EVT_LISTBOX, self.OnNameChanged, self.VariableName)
   107         self.RightGridSizer.AddWindow(self.VariableName, border=4, flag=wx.GROW | wx.TOP)
   107         self.RightGridSizer.AddWindow(self.VariableName, border=4, flag=wx.GROW | wx.TOP)
   108 
   108 
   109         # Add preview panel and associated label to sizers
   109         # Add preview panel and associated label to sizers
   110         self.MainSizer.AddWindow(self.PreviewLabel, border=20,
   110         self.MainSizer.AddWindow(self.PreviewLabel, border=20,
   111               flag=wx.GROW | wx.LEFT | wx.RIGHT)
   111                                  flag=wx.GROW | wx.LEFT | wx.RIGHT)
   112         self.MainSizer.AddWindow(self.Preview, border=20,
   112         self.MainSizer.AddWindow(self.Preview, border=20,
   113               flag=wx.GROW | wx.LEFT | wx.RIGHT)
   113                                  flag=wx.GROW | wx.LEFT | wx.RIGHT)
   114 
   114 
   115         # Add buttons sizer to sizers
   115         # Add buttons sizer to sizers
   116         self.MainSizer.AddSizer(self.ButtonSizer, border=20,
   116         self.MainSizer.AddSizer(
   117               flag=wx.ALIGN_RIGHT | wx.BOTTOM | wx.LEFT | wx.RIGHT)
   117             self.ButtonSizer, border=20,
       
   118             flag=wx.ALIGN_RIGHT | wx.BOTTOM | wx.LEFT | wx.RIGHT)
   118 
   119 
   119         # Set options that can be selected in class combo box
   120         # Set options that can be selected in class combo box
   120         for var_class, choice in VARIABLE_CLASSES_DICT.iteritems():
   121         for var_class, choice in VARIABLE_CLASSES_DICT.iteritems():
   121             if not exclude_input or var_class != INPUT:
   122             if not exclude_input or var_class != INPUT:
   122                 self.Class.Append(choice)
   123                 self.Class.Append(choice)
   282         """
   283         """
   283         # Get expression value to put in FBD variable element
   284         # Get expression value to put in FBD variable element
   284         name = self.Expression.GetValue()
   285         name = self.Expression.GetValue()
   285 
   286 
   286         # Set graphic element displayed, creating a FBD variable element
   287         # Set graphic element displayed, creating a FBD variable element
   287         self.Element = FBD_Variable(self.Preview,
   288         self.Element = FBD_Variable(
   288                     VARIABLE_CLASSES_DICT_REVERSE[
   289             self.Preview,
   289                         self.Class.GetStringSelection()],
   290             VARIABLE_CLASSES_DICT_REVERSE[self.Class.GetStringSelection()],
   290                     name,
   291             name,
   291                     self.VariableList.get(name, ("", ""))[1],
   292             self.VariableList.get(name, ("", ""))[1],
   292                     executionOrder=self.ExecutionOrder.GetValue())
   293             executionOrder=self.ExecutionOrder.GetValue())
   293 
   294 
   294         # Call BlockPreviewDialog function
   295         # Call BlockPreviewDialog function
   295         BlockPreviewDialog.RefreshPreview(self)
   296         BlockPreviewDialog.RefreshPreview(self)