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): |