1   
  2   
  3   
  4   
  5   
  6   
  7   
  8   
  9   
 10   
 11   
 12   
 13   
 14   
 15   
 16   
 17   
 18   
 19   
 20   
 21   
 22   
 23   
 24  """Module containing the base class for all frames.""" 
 25   
 26   
 27  import wx 
 28  import wx.lib.buttons 
 29   
 30   
 31  from graphics import fetch_icon 
 32  from gui.fonts import font 
 33  from gui.string_conv import str_to_gui 
 34   
 35   
 37      """The analysis specific text control. 
 38   
 39      This consists of three elements:  wx.StaticText, wx.TextCtrl, and wx.Button. 
 40      """ 
 41   
 42 -    def __init__(self, box, parent, text="", default=True, tooltip=None, tooltip_button=None, button_text=" Toggle", control=wx.TextCtrl, width_text=200, width_button=80, spacer=0): 
  43          """Create a text selection element for the frame. 
 44   
 45          This consists of a horizontal layout with a static text element, a text control, and an optional button. 
 46   
 47          @param box:                 The box element to pack the structure file selection GUI element into. 
 48          @type box:                  wx.BoxSizer instance 
 49          @param parent:              The parent GUI element. 
 50          @type parent:               wx object 
 51          @keyword text:              The static text. 
 52          @type text:                 str 
 53          @keyword default:           The default value of the control. 
 54          @type default:              bool 
 55          @keyword tooltip:           The tooltip which appears on hovering over the text or input field. 
 56          @type tooltip:              str 
 57          @keyword tooltip_button:    The separate tooltip for the button. 
 58          @type tooltip_button:       str 
 59          @keyword button_text:       The text to display on the button. 
 60          @type button_text:          str 
 61          @keyword control:           The control class to use. 
 62          @type control:              wx.TextCtrl derived class 
 63          @keyword width_text:        The width of the text element. 
 64          @type width_text:           int 
 65          @keyword width_button:      The width of the button. 
 66          @type width_button:         int 
 67          @keyword spacer:            The horizontal spacing between the elements. 
 68          @type spacer:               int 
 69          """ 
 70   
 71           
 72          self.state = default 
 73   
 74           
 75          sizer = wx.BoxSizer(wx.HORIZONTAL) 
 76   
 77           
 78          self.label = wx.StaticText(parent, -1, text) 
 79          self.label.SetMinSize((width_text, -1)) 
 80          self.label.SetFont(font.normal) 
 81          sizer.Add(self.label, 0, wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 0) 
 82   
 83           
 84          size = self.label.GetSize() 
 85          size_horizontal = size[1] + 8 
 86   
 87           
 88          sizer.AddSpacer((spacer, -1)) 
 89   
 90           
 91          self.field = control(parent, -1, str_to_gui(default)) 
 92          self.field.SetMinSize((-1, size_horizontal)) 
 93          self.field.SetFont(font.normal) 
 94          colour = parent.GetBackgroundColour() 
 95          self.field.SetOwnBackgroundColour(colour) 
 96          sizer.Add(self.field, 1, wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 0) 
 97   
 98           
 99          sizer.AddSpacer((spacer, -1)) 
100   
101           
102          self.button = wx.lib.buttons.ThemedGenBitmapTextButton(parent, -1, None, str_to_gui(button_text)) 
103          if default == True: 
104              self.button.SetBitmapLabel(wx.Bitmap(fetch_icon('oxygen.actions.media-record-relax-green'), wx.BITMAP_TYPE_ANY)) 
105          else: 
106              self.button.SetBitmapLabel(wx.Bitmap(fetch_icon('oxygen.actions.media-record'), wx.BITMAP_TYPE_ANY)) 
107          self.button.SetMinSize((width_button, size_horizontal)) 
108          self.button.SetFont(font.normal) 
109          parent.Bind(wx.EVT_BUTTON, self.toggle, self.button) 
110          sizer.Add(self.button, 0, wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 0) 
111   
112           
113          box.Add(sizer, 0, wx.ALL|wx.EXPAND, 0) 
114   
115           
116          if tooltip: 
117              self.label.SetToolTipString(tooltip) 
118              self.field.SetToolTipString(tooltip) 
119          if tooltip_button: 
120              self.button.SetToolTipString(tooltip_button) 
 121   
122   
123 -    def Enable(self, enable=True): 
 124          """Enable or disable the element for user input. 
125   
126          @keyword enable:    The flag specifying if the element should be enabled or disabled. 
127          @type enable:       bool 
128          """ 
129   
130           
131          self.button.Enable(enable) 
 132   
133   
135          """Set the value of the control. 
136   
137          @return:    The value of the text control. 
138          @rtype:     int 
139          """ 
140   
141           
142          return self.state 
 143   
144   
146          """Set the value of the control. 
147   
148          @param value:   The value to set the boolean control to. 
149          @type value:    bool 
150          """ 
151   
152           
153          if value == True: 
154              self.field.SetValue('True') 
155              self.button.SetBitmapLabel(wx.Bitmap(fetch_icon('oxygen.actions.media-record-relax-green'), wx.BITMAP_TYPE_ANY)) 
156              self.state = True 
157   
158           
159          else: 
160              self.field.SetValue('False') 
161              self.button.SetBitmapLabel(wx.Bitmap(fetch_icon('oxygen.actions.media-record'), wx.BITMAP_TYPE_ANY)) 
162              self.state = False 
 163   
164   
165 -    def toggle(self, event=None): 
 166          """Switch the state.""" 
167   
168           
169          if self.state == False: 
170              self.field.SetValue('True') 
171              self.button.SetBitmapLabel(wx.Bitmap(fetch_icon('oxygen.actions.media-record-relax-green'), wx.BITMAP_TYPE_ANY)) 
172              self.state = True 
173   
174           
175          else: 
176              self.field.SetValue('False') 
177              self.button.SetBitmapLabel(wx.Bitmap(fetch_icon('oxygen.actions.media-record'), wx.BITMAP_TYPE_ANY)) 
178              self.state = False 
  179