diff -r d51af006fa6b -r 64d8f52bc8c8 dialogs/LDElementDialog.py --- a/dialogs/LDElementDialog.py Fri Aug 11 15:18:19 2017 +0300 +++ b/dialogs/LDElementDialog.py Mon Aug 14 19:13:01 2017 +0300 @@ -41,7 +41,7 @@ """ class LDElementDialog(BlockPreviewDialog): - + def __init__(self, parent, controller, tagname, type): """ Constructor @@ -50,24 +50,24 @@ @param tagname: Tagname of project POU edited @param type: Type of LD element ('contact or 'coil') """ - BlockPreviewDialog.__init__(self, parent, controller, tagname, + BlockPreviewDialog.__init__(self, parent, controller, tagname, title=(_("Edit Contact Values") if type == "contact" else _("Edit Coil Values"))) - + # Init common sizers - self._init_sizers(2, 0, + self._init_sizers(2, 0, (7 if type == "contact" else 9), None, 2, 1) - + # Create label for LD element modifier modifier_label = wx.StaticText(self, label=_('Modifier:')) - self.LeftGridSizer.AddWindow(modifier_label, border=5, + self.LeftGridSizer.AddWindow(modifier_label, border=5, flag=wx.GROW|wx.BOTTOM) - + # Create radio buttons for selecting LD element modifier self.ModifierRadioButtons = {} first = True - element_modifiers = ([CONTACT_NORMAL, CONTACT_REVERSE, + element_modifiers = ([CONTACT_NORMAL, CONTACT_REVERSE, CONTACT_RISING, CONTACT_FALLING] if type == "contact" else [COIL_NORMAL, COIL_REVERSE, COIL_SET, @@ -75,55 +75,55 @@ modifiers_label = [_("Normal"), _("Negated")] + \ ([_("Set"), _("Reset")] if type == "coil" else []) + \ [_("Rising Edge"), _("Falling Edge")] - + for modifier, label in zip(element_modifiers, modifiers_label): - radio_button = wx.RadioButton(self, label=label, + radio_button = wx.RadioButton(self, label=label, style=(wx.RB_GROUP if first else 0)) radio_button.SetValue(first) self.Bind(wx.EVT_RADIOBUTTON, self.OnModifierChanged, radio_button) self.LeftGridSizer.AddWindow(radio_button, flag=wx.GROW) self.ModifierRadioButtons[modifier] = radio_button first = False - + # Create label for LD element variable element_variable_label = wx.StaticText(self, label=_('Variable:')) self.LeftGridSizer.AddWindow(element_variable_label, border=5, flag=wx.GROW|wx.TOP) - + # Create a combo box for defining LD element variable self.ElementVariable = wx.ComboBox(self, style=wx.CB_SORT) - self.Bind(wx.EVT_COMBOBOX, self.OnVariableChanged, + self.Bind(wx.EVT_COMBOBOX, self.OnVariableChanged, self.ElementVariable) - self.Bind(wx.EVT_TEXT, self.OnVariableChanged, - self.ElementVariable) + self.Bind(wx.EVT_TEXT, self.OnVariableChanged, + self.ElementVariable) self.LeftGridSizer.AddWindow(self.ElementVariable, border=5, flag=wx.GROW|wx.TOP) - + # Add preview panel and associated label to sizers self.RightGridSizer.AddWindow(self.PreviewLabel, flag=wx.GROW) self.RightGridSizer.AddWindow(self.Preview, flag=wx.GROW) - + # Add buttons sizer to sizers - self.MainSizer.AddSizer(self.ButtonSizer, border=20, + self.MainSizer.AddSizer(self.ButtonSizer, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT) - + # Save LD element class self.ElementClass = (LD_Contact if type == "contact" else LD_Coil) - + # Extract list of variables defined in POU self.RefreshVariableList() - + # Set values in ElementVariable for name, (var_type, value_type) in self.VariableList.iteritems(): # Only select BOOL variable and avoid input for coil if (type == "contact" or var_type != "Input") and \ value_type == "BOOL": self.ElementVariable.Append(name) - + self.Fit() # Normal radio button is default control having keyboard focus self.ModifierRadioButtons[element_modifiers[0]].SetFocus() - + def GetElementModifier(self): """ Return modifier selected for LD element @@ -143,15 +143,15 @@ """ # For each parameters defined, set corresponding control value for name, value in values.items(): - + # Parameter is LD element variable if name == "variable": self.ElementVariable.SetValue(value) - + # Set value of other controls elif name == "modifier": self.ModifierRadioButtons[value].SetValue(True) - + # Refresh preview panel self.RefreshPreview() @@ -188,20 +188,19 @@ Override BlockPreviewDialog function """ value = self.ElementVariable.GetValue() - + # Set graphic element displayed, creating a LD element self.Element = self.ElementClass( - self.Preview, + self.Preview, self.GetElementModifier(), value) button = self.ButtonSizer.GetAffirmativeButton() button.Enable(value != "") - + # Call BlockPreviewDialog function BlockPreviewDialog.RefreshPreview(self) - + def OnOK(self, event): if self.ElementVariable.GetValue() != "": self.EndModal(wx.ID_OK) -