dialogs/LDPowerRailDialog.py
changeset 1730 64d8f52bc8c8
parent 1696 8043f32de7b8
child 1736 7e61baa047f0
equal deleted inserted replaced
1726:d51af006fa6b 1730:64d8f52bc8c8
    37 Class that implements a dialog for defining parameters of a power rail graphic
    37 Class that implements a dialog for defining parameters of a power rail graphic
    38 element
    38 element
    39 """
    39 """
    40 
    40 
    41 class LDPowerRailDialog(BlockPreviewDialog):
    41 class LDPowerRailDialog(BlockPreviewDialog):
    42     
    42 
    43     def __init__(self, parent, controller, tagname):
    43     def __init__(self, parent, controller, tagname):
    44         """
    44         """
    45         Constructor
    45         Constructor
    46         @param parent: Parent wx.Window of dialog for modal
    46         @param parent: Parent wx.Window of dialog for modal
    47         @param controller: Reference to project controller
    47         @param controller: Reference to project controller
    48         @param tagname: Tagname of project POU edited
    48         @param tagname: Tagname of project POU edited
    49         """
    49         """
    50         BlockPreviewDialog.__init__(self, parent, controller, tagname,
    50         BlockPreviewDialog.__init__(self, parent, controller, tagname,
    51               title=_('Power Rail Properties'))
    51               title=_('Power Rail Properties'))
    52         
    52 
    53         # Init common sizers
    53         # Init common sizers
    54         self._init_sizers(2, 0, 5, None, 2, 1)
    54         self._init_sizers(2, 0, 5, None, 2, 1)
    55         
    55 
    56         # Create label for connection type
    56         # Create label for connection type
    57         type_label = wx.StaticText(self, label=_('Type:'))
    57         type_label = wx.StaticText(self, label=_('Type:'))
    58         self.LeftGridSizer.AddWindow(type_label, flag=wx.GROW)
    58         self.LeftGridSizer.AddWindow(type_label, flag=wx.GROW)
    59         
    59 
    60         # Create radio buttons for selecting power rail type
    60         # Create radio buttons for selecting power rail type
    61         self.TypeRadioButtons = {}
    61         self.TypeRadioButtons = {}
    62         first = True
    62         first = True
    63         for type, label in [(LEFTRAIL, _('Left PowerRail')),
    63         for type, label in [(LEFTRAIL, _('Left PowerRail')),
    64                             (RIGHTRAIL, _('Right PowerRail'))]:
    64                             (RIGHTRAIL, _('Right PowerRail'))]:
    65             radio_button = wx.RadioButton(self, label=label, 
    65             radio_button = wx.RadioButton(self, label=label,
    66                   style=(wx.RB_GROUP if first else 0))
    66                   style=(wx.RB_GROUP if first else 0))
    67             radio_button.SetValue(first)
    67             radio_button.SetValue(first)
    68             self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, radio_button)
    68             self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, radio_button)
    69             self.LeftGridSizer.AddWindow(radio_button, flag=wx.GROW)
    69             self.LeftGridSizer.AddWindow(radio_button, flag=wx.GROW)
    70             self.TypeRadioButtons[type] = radio_button
    70             self.TypeRadioButtons[type] = radio_button
    71             first = False
    71             first = False
    72         
    72 
    73         # Create label for power rail pin number
    73         # Create label for power rail pin number
    74         pin_number_label = wx.StaticText(self, label=_('Pin number:'))
    74         pin_number_label = wx.StaticText(self, label=_('Pin number:'))
    75         self.LeftGridSizer.AddWindow(pin_number_label, flag=wx.GROW)
    75         self.LeftGridSizer.AddWindow(pin_number_label, flag=wx.GROW)
    76         
    76 
    77         # Create spin control for defining power rail pin number
    77         # Create spin control for defining power rail pin number
    78         self.PinNumber = wx.SpinCtrl(self, min=1, max=50,
    78         self.PinNumber = wx.SpinCtrl(self, min=1, max=50,
    79               style=wx.SP_ARROW_KEYS)
    79               style=wx.SP_ARROW_KEYS)
    80         self.PinNumber.SetValue(1)
    80         self.PinNumber.SetValue(1)
    81         self.Bind(wx.EVT_SPINCTRL, self.OnPinNumberChanged, self.PinNumber)
    81         self.Bind(wx.EVT_SPINCTRL, self.OnPinNumberChanged, self.PinNumber)
    82         self.LeftGridSizer.AddWindow(self.PinNumber, flag=wx.GROW)
    82         self.LeftGridSizer.AddWindow(self.PinNumber, flag=wx.GROW)
    83         
    83 
    84         # Add preview panel and associated label to sizers
    84         # Add preview panel and associated label to sizers
    85         self.RightGridSizer.AddWindow(self.PreviewLabel, flag=wx.GROW)
    85         self.RightGridSizer.AddWindow(self.PreviewLabel, flag=wx.GROW)
    86         self.RightGridSizer.AddWindow(self.Preview, flag=wx.GROW)
    86         self.RightGridSizer.AddWindow(self.Preview, flag=wx.GROW)
    87         
    87 
    88         # Add buttons sizer to sizers
    88         # Add buttons sizer to sizers
    89         self.MainSizer.AddSizer(self.ButtonSizer, border=20, 
    89         self.MainSizer.AddSizer(self.ButtonSizer, border=20,
    90               flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
    90               flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
    91         self.Fit()
    91         self.Fit()
    92         
    92 
    93         # Left Power Rail radio button is default control having keyboard focus
    93         # Left Power Rail radio button is default control having keyboard focus
    94         self.TypeRadioButtons[LEFTRAIL].SetFocus()
    94         self.TypeRadioButtons[LEFTRAIL].SetFocus()
    95     
    95 
    96     def GetMinElementSize(self):
    96     def GetMinElementSize(self):
    97         """
    97         """
    98         Get minimal graphic element size
    98         Get minimal graphic element size
    99         @return: Tuple containing minimal size (width, height) or None if no
    99         @return: Tuple containing minimal size (width, height) or None if no
   100         element defined
   100         element defined
   101         """
   101         """
   102         return self.Element.GetMinSize(True)
   102         return self.Element.GetMinSize(True)
   103     
   103 
   104     def GetPowerRailType(self):
   104     def GetPowerRailType(self):
   105         """
   105         """
   106         Return type selected for power rail
   106         Return type selected for power rail
   107         @return: Type selected (LEFTRAIL or RIGHTRAIL)
   107         @return: Type selected (LEFTRAIL or RIGHTRAIL)
   108         """
   108         """
   109         return (LEFTRAIL
   109         return (LEFTRAIL
   110                 if self.TypeRadioButtons[LEFTRAIL].GetValue()
   110                 if self.TypeRadioButtons[LEFTRAIL].GetValue()
   111                 else RIGHTRAIL)
   111                 else RIGHTRAIL)
   112     
   112 
   113     def SetValues(self, values):
   113     def SetValues(self, values):
   114         """
   114         """
   115         Set default power rail parameters
   115         Set default power rail parameters
   116         @param values: Power rail parameters values
   116         @param values: Power rail parameters values
   117         """
   117         """
   118         # For each parameters defined, set corresponding control value
   118         # For each parameters defined, set corresponding control value
   119         for name, value in values.items():
   119         for name, value in values.items():
   120             
   120 
   121             # Parameter is power rail type
   121             # Parameter is power rail type
   122             if name == "type":
   122             if name == "type":
   123                 self.TypeRadioButtons[value].SetValue(True)
   123                 self.TypeRadioButtons[value].SetValue(True)
   124             
   124 
   125             # Parameter is power rail pin number
   125             # Parameter is power rail pin number
   126             elif name == "pin_number":
   126             elif name == "pin_number":
   127                 self.PinNumber.SetValue(value)
   127                 self.PinNumber.SetValue(value)
   128 
   128 
   129     def GetValues(self):
   129     def GetValues(self):
   156     def RefreshPreview(self):
   156     def RefreshPreview(self):
   157         """
   157         """
   158         Refresh preview panel of graphic element
   158         Refresh preview panel of graphic element
   159         Override BlockPreviewDialog function
   159         Override BlockPreviewDialog function
   160         """
   160         """
   161         
   161 
   162         # Set graphic element displayed, creating a power rail element
   162         # Set graphic element displayed, creating a power rail element
   163         self.Element = LD_PowerRail(self.Preview, 
   163         self.Element = LD_PowerRail(self.Preview,
   164                 self.GetPowerRailType(), 
   164                 self.GetPowerRailType(),
   165                 connectors = self.PinNumber.GetValue())
   165                 connectors = self.PinNumber.GetValue())
   166         
   166 
   167         # Call BlockPreviewDialog function
   167         # Call BlockPreviewDialog function
   168         BlockPreviewDialog.RefreshPreview(self)
   168         BlockPreviewDialog.RefreshPreview(self)