dialogs/LDPowerRailDialog.py
changeset 714 131ea7f237b9
parent 583 3f3f9b25ff9f
equal deleted inserted replaced
713:95a0a427f3ef 714:131ea7f237b9
    23 
    23 
    24 import wx
    24 import wx
    25 
    25 
    26 from graphics import *
    26 from graphics import *
    27 
    27 
    28 
       
    29 #-------------------------------------------------------------------------------
    28 #-------------------------------------------------------------------------------
    30 #                      Edit Ladder Power Rail Properties Dialog
    29 #                      Edit Ladder Power Rail Properties Dialog
    31 #-------------------------------------------------------------------------------
    30 #-------------------------------------------------------------------------------
    32 
    31 
    33 
       
    34 [ID_LDPOWERRAILDIALOG, ID_LDPOWERRAILDIALOGSPACER, 
       
    35  ID_LDPOWERRAILDIALOGTYPE, ID_LDPOWERRAILDIALOGRADIOBUTTON1, 
       
    36  ID_LDPOWERRAILDIALOGRADIOBUTTON2, ID_LDPOWERRAILDIALOGPREVIEW,
       
    37  ID_LDPOWERRAILDIALOGSTATICTEXT1, ID_LDPOWERRAILDIALOGSTATICTEXT2, 
       
    38  ID_LDPOWERRAILDIALOGSTATICTEXT3, ID_LDPOWERRAILDIALOGPINNUMBER,
       
    39 ] = [wx.NewId() for _init_ctrls in range(10)]
       
    40 
       
    41 class LDPowerRailDialog(wx.Dialog):
    32 class LDPowerRailDialog(wx.Dialog):
    42     
    33     
    43     if wx.VERSION < (2, 6, 0):
    34     def __init__(self, parent, controller, type = LEFTRAIL, number = 1):
    44         def Bind(self, event, function, id = None):
    35         wx.Dialog.__init__(self, parent, size=wx.Size(350, 260),
    45             if id is not None:
    36               title=_('Power Rail Properties'))
    46                 event(self, id, function)
       
    47             else:
       
    48                 event(self, function)
       
    49     
       
    50     def _init_coll_flexGridSizer1_Items(self, parent):
       
    51         parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
       
    52         parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
       
    53         
    37         
    54     def _init_coll_flexGridSizer1_Growables(self, parent):
    38         main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
    55         parent.AddGrowableCol(0)
    39         main_sizer.AddGrowableCol(0)
    56         parent.AddGrowableRow(0)
    40         main_sizer.AddGrowableRow(0)
    57     
       
    58     def _init_coll_MainSizer_Items(self, parent):
       
    59         parent.AddSizer(self.LeftGridSizer, 1, border=5, flag=wx.GROW|wx.RIGHT)
       
    60         parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wx.GROW|wx.LEFT)
       
    61     
       
    62     def _init_coll_LeftGridSizer_Items(self, parent):
       
    63         parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
       
    64         parent.AddWindow(self.radioButton1, 0, border=0, flag=wx.GROW)
       
    65         parent.AddWindow(self.radioButton2, 0, border=0, flag=wx.GROW)
       
    66         parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
       
    67         parent.AddWindow(self.PinNumber, 0, border=0, flag=wx.GROW)
       
    68         parent.AddWindow(self.Spacer, 0, border=0, flag=wx.GROW)
       
    69     
       
    70     def _init_coll_LeftGridSizer_Growables(self, parent):
       
    71         parent.AddGrowableCol(0)
       
    72         parent.AddGrowableRow(5)
       
    73             
       
    74     def _init_coll_RightGridSizer_Items(self, parent):
       
    75         parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW)
       
    76         parent.AddWindow(self.Preview, 0, border=0, flag=wx.GROW)
       
    77         
    41         
    78     def _init_coll_RightGridSizer_Growables(self, parent):
    42         column_sizer = wx.BoxSizer(wx.HORIZONTAL)
    79         parent.AddGrowableCol(0)
    43         main_sizer.AddSizer(column_sizer, border=20, 
    80         parent.AddGrowableRow(1)
    44               flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
    81 
    45         
    82     def _init_sizers(self):
    46         left_gridsizer = wx.FlexGridSizer(cols=1, hgap=0, rows=5, vgap=5)
    83         self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
    47         left_gridsizer.AddGrowableCol(0)
    84         self.MainSizer = wx.BoxSizer(wx.HORIZONTAL)
    48         column_sizer.AddSizer(left_gridsizer, 1, border=5, 
    85         self.LeftGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=6, vgap=5)
    49               flag=wx.GROW|wx.RIGHT)
    86         self.RightGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
    50         
    87 
    51         type_label = wx.StaticText(self, label=_('Type:'))
    88         self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)
    52         left_gridsizer.AddWindow(type_label, flag=wx.GROW)
    89         self._init_coll_flexGridSizer1_Growables(self.flexGridSizer1)
    53         
    90         self._init_coll_MainSizer_Items(self.MainSizer)
    54         self.LeftPowerRail = wx.RadioButton(self,
    91         self._init_coll_LeftGridSizer_Items(self.LeftGridSizer)
    55               label=_('Left PowerRail'), style=wx.RB_GROUP)
    92         self._init_coll_LeftGridSizer_Growables(self.LeftGridSizer)
    56         self.LeftPowerRail.SetValue(True)
    93         self._init_coll_RightGridSizer_Items(self.RightGridSizer)
    57         self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, self.LeftPowerRail)
    94         self._init_coll_RightGridSizer_Growables(self.RightGridSizer)
    58         left_gridsizer.AddWindow(self.LeftPowerRail, flag=wx.GROW)
    95 
    59         
    96         self.SetSizer(self.flexGridSizer1)
    60         self.RightPowerRail = wx.RadioButton(self, label=_('Right PowerRail'))
    97 
    61         self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, self.RightPowerRail)
    98     def _init_ctrls(self, prnt, ctrler):
    62         left_gridsizer.AddWindow(self.RightPowerRail, flag=wx.GROW)
    99         wx.Dialog.__init__(self, id=ID_LDPOWERRAILDIALOG,
    63         
   100               name='PowerRailDialog', parent=prnt,
    64         pin_number_label = wx.StaticText(self, label=_('Pin number:'))
   101               size=wx.Size(350, 260), style=wx.DEFAULT_DIALOG_STYLE,
    65         left_gridsizer.AddWindow(pin_number_label, flag=wx.GROW)
   102               title=_('Power Rail Properties'))
    66         
   103         self.SetClientSize(wx.Size(350, 260))
    67         self.PinNumber = wx.SpinCtrl(self, min=1, max=50,
   104 
    68               style=wx.SP_ARROW_KEYS)
   105         self.staticText1 = wx.StaticText(id=ID_LDPOWERRAILDIALOGSTATICTEXT1,
    69         self.Bind(wx.EVT_SPINCTRL, self.OnPinNumberChanged, self.PinNumber)
   106               label=_('Type:'), name='staticText1', parent=self,
    70         left_gridsizer.AddWindow(self.PinNumber, flag=wx.GROW)
   107               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
    71         
   108 
    72         right_gridsizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
   109         self.staticText2 = wx.StaticText(id=ID_LDPOWERRAILDIALOGSTATICTEXT2,
    73         right_gridsizer.AddGrowableCol(0)
   110               label=_('Pin number:'), name='staticText2', parent=self,
    74         right_gridsizer.AddGrowableRow(1)
   111               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
    75         column_sizer.AddSizer(right_gridsizer, 1, border=5, 
   112 
    76               flag=wx.GROW|wx.LEFT)
   113         self.staticText3 = wx.StaticText(id=ID_LDPOWERRAILDIALOGSTATICTEXT3,
    77         
   114               label=_('Preview:'), name='staticText3', parent=self,
    78         preview_label = wx.StaticText(self, label=_('Preview:'))
   115               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
    79         right_gridsizer.AddWindow(preview_label, flag=wx.GROW)
   116 
    80         
   117         self.radioButton1 = wx.RadioButton(id=ID_LDPOWERRAILDIALOGRADIOBUTTON1,
    81         self.Preview = wx.Panel(self,
   118               label=_('Left PowerRail'), name='radioButton1', parent=self,
    82               style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER)
   119               pos=wx.Point(0, 0), size=wx.Size(0, 24), style=wx.RB_GROUP)
       
   120         self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_LDPOWERRAILDIALOGRADIOBUTTON1)
       
   121         self.radioButton1.SetValue(True)
       
   122 
       
   123         self.radioButton2 = wx.RadioButton(id=ID_LDPOWERRAILDIALOGRADIOBUTTON2,
       
   124               label=_('Right PowerRail'), name='radioButton2', parent=self, 
       
   125               pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
       
   126         self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_LDPOWERRAILDIALOGRADIOBUTTON2)
       
   127 
       
   128         self.PinNumber = wx.SpinCtrl(id=ID_LDPOWERRAILDIALOGPINNUMBER,
       
   129               name='PinNumber', parent=self, pos=wx.Point(0, 0),
       
   130               size=wx.Size(0, 24), style=wx.SP_ARROW_KEYS, min=1, max=50)
       
   131         self.Bind(wx.EVT_SPINCTRL, self.OnPinNumberChanged, id=ID_LDPOWERRAILDIALOGPINNUMBER)
       
   132 
       
   133         self.Preview = wx.Panel(id=ID_LDPOWERRAILDIALOGPREVIEW,
       
   134               name='Preview', parent=self, pos=wx.Point(0, 0),
       
   135               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER)
       
   136         self.Preview.SetBackgroundColour(wx.Colour(255,255,255))
    83         self.Preview.SetBackgroundColour(wx.Colour(255,255,255))
   137         setattr(self.Preview, "GetDrawingMode", lambda:FREEDRAWING_MODE)
    84         setattr(self.Preview, "GetDrawingMode", lambda:FREEDRAWING_MODE)
   138         setattr(self.Preview, "GetScaling", lambda:None)
    85         setattr(self.Preview, "GetScaling", lambda:None)
   139         setattr(self.Preview, "IsOfType", ctrler.IsOfType)
    86         setattr(self.Preview, "IsOfType", controller.IsOfType)
   140 
    87         self.Preview.Bind(wx.EVT_PAINT, self.OnPaint)
   141         self.Spacer = wx.Panel(id=ID_LDPOWERRAILDIALOGSPACER,
    88         right_gridsizer.AddWindow(self.Preview, flag=wx.GROW)
   142               name='Spacer', parent=self, pos=wx.Point(0, 0),
       
   143               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
       
   144 
       
   145         self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
       
   146         
    89         
   147         if wx.VERSION >= (2, 5, 0):
    90         button_sizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
   148             self.Preview.Bind(wx.EVT_PAINT, self.OnPaint)
    91         main_sizer.AddSizer(button_sizer, border=20, 
   149         else:
    92               flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
   150             wx.EVT_PAINT(self.Preview, self.OnPaint)
       
   151         
    93         
   152         self._init_sizers()
    94         self.SetSizer(main_sizer)
   153 
    95         
   154     def __init__(self, parent, controler, type = LEFTRAIL, number = 1):
       
   155         self._init_ctrls(parent, controler)
       
   156         self.Type = type
    96         self.Type = type
   157         if type == LEFTRAIL:
    97         if type == LEFTRAIL:
   158             self.radioButton1.SetValue(True)
    98             self.LeftPowerRail.SetValue(True)
   159         elif type == RIGHTRAIL:
    99         elif type == RIGHTRAIL:
   160             self.radioButton2.SetValue(True)
   100             self.RightPowerRail.SetValue(True)
   161         self.PinNumber.SetValue(number)
   101         self.PinNumber.SetValue(number)
   162         
   102         
   163         self.PowerRailMinSize = (0, 0)
   103         self.PowerRailMinSize = (0, 0)
   164         self.PowerRail = None
   104         self.PowerRail = None
   165         
   105         
   166         self.radioButton1.SetFocus()
   106         self.LeftPowerRail.SetFocus()
   167 
   107 
   168     def SetPreviewFont(self, font):
   108     def SetPreviewFont(self, font):
   169         self.Preview.SetFont(font)
   109         self.Preview.SetFont(font)
   170 
   110 
   171     def SetMinSize(self, size):
   111     def SetMinSize(self, size):
   178         values["number"] = self.PinNumber.GetValue()
   118         values["number"] = self.PinNumber.GetValue()
   179         values["width"], values["height"] = self.PowerRail.GetSize()
   119         values["width"], values["height"] = self.PowerRail.GetSize()
   180         return values
   120         return values
   181 
   121 
   182     def OnTypeChanged(self, event):
   122     def OnTypeChanged(self, event):
   183         if self.radioButton1.GetValue():
   123         if self.LeftPowerRail.GetValue():
   184             self.Type = LEFTRAIL
   124             self.Type = LEFTRAIL
   185         elif self.radioButton2.GetValue():
   125         elif self.RightPowerRail.GetValue():
   186             self.Type = RIGHTRAIL
   126             self.Type = RIGHTRAIL
   187         self.RefreshPreview()
   127         self.RefreshPreview()
   188         event.Skip()
   128         event.Skip()
   189 
   129 
   190     def OnPinNumberChanged(self, event):
   130     def OnPinNumberChanged(self, event):