You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

113 lines
3.3 KiB

8 years ago
  1. '''
  2. Created on Dec 23, 2013
  3. @author: Chris
  4. '''
  5. import wx
  6. import wx.animate
  7. from gooey.gui.pubsub import pub
  8. from gooey.gui.lang import i18n
  9. from gooey.gui import imageutil, events
  10. class Footer(wx.Panel):
  11. '''
  12. Footer section used on the configuration
  13. screen of the application
  14. args:
  15. parent: wxPython parent windows
  16. controller: controller class used in delagating all the commands
  17. '''
  18. def __init__(self, parent, **kwargs):
  19. wx.Panel.__init__(self, parent, **kwargs)
  20. self.SetMinSize((30, 53))
  21. # components
  22. self.cancel_button = None
  23. self.start_button = None
  24. self.progress_bar = None
  25. self.close_button = None
  26. self.stop_button = None
  27. self.restart_button = None
  28. self.buttons = None
  29. self.layouts = {}
  30. self._init_components()
  31. self._do_layout()
  32. for button in self.buttons:
  33. self.Bind(wx.EVT_BUTTON, self.dispatch_click, button)
  34. def _init_components(self):
  35. self.cancel_button = self.button(i18n._('cancel'), wx.ID_CANCEL, event_id=int(events.WINDOW_CANCEL))
  36. self.stop_button = self.button(i18n._('stop'), wx.ID_OK, event_id=int(events.WINDOW_STOP))
  37. self.start_button = self.button(i18n._('start'), wx.ID_OK, event_id=int(events.WINDOW_START))
  38. self.close_button = self.button(i18n._("close"), wx.ID_OK, event_id=int(events.WINDOW_CLOSE))
  39. self.restart_button = self.button(i18n._('restart'), wx.ID_OK, event_id=int(events.WINDOW_RESTART))
  40. self.edit_button = self.button(i18n._('edit'), wx.ID_OK, event_id=int(events.WINDOW_EDIT))
  41. self.progress_bar = wx.Gauge(self, range=100)
  42. self.buttons = [self.cancel_button, self.start_button,
  43. self.stop_button, self.close_button,
  44. self.restart_button, self.edit_button]
  45. def _do_layout(self):
  46. self.stop_button.Hide()
  47. self.restart_button.Hide()
  48. v_sizer = wx.BoxSizer(wx.VERTICAL)
  49. h_sizer = wx.BoxSizer(wx.HORIZONTAL)
  50. h_sizer.Add(self.progress_bar, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 20)
  51. self.progress_bar.Hide()
  52. h_sizer.AddStretchSpacer(1)
  53. h_sizer.Add(self.cancel_button, 0, wx.ALIGN_RIGHT | wx.RIGHT, 20)
  54. h_sizer.Add(self.start_button, 0, wx.ALIGN_RIGHT | wx.RIGHT, 20)
  55. h_sizer.Add(self.stop_button, 0, wx.ALIGN_RIGHT | wx.RIGHT, 20)
  56. v_sizer.AddStretchSpacer(1)
  57. v_sizer.Add(h_sizer, 0, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND)
  58. h_sizer.Add(self.edit_button, 0, wx.ALIGN_RIGHT | wx.RIGHT, 10)
  59. h_sizer.Add(self.restart_button, 0, wx.ALIGN_RIGHT | wx.RIGHT, 10)
  60. h_sizer.Add(self.close_button, 0, wx.ALIGN_RIGHT | wx.RIGHT, 20)
  61. self.edit_button.Hide()
  62. self.restart_button.Hide()
  63. self.close_button.Hide()
  64. v_sizer.AddStretchSpacer(1)
  65. self.SetSizer(v_sizer)
  66. def button(self, label=None, style=None, event_id=-1):
  67. return wx.Button(
  68. parent=self,
  69. id=event_id,
  70. size=(90, 24),
  71. label=label,
  72. style=style)
  73. def dispatch_click(self, event):
  74. pub.send_message(str(event.GetId()))
  75. event.Skip()
  76. def hide_all_buttons(self):
  77. for button in self.buttons:
  78. button.Hide()
  79. def _load_image(self, img_path, height=70):
  80. return imageutil.resize_bitmap(self, imageutil._load_image(img_path), height)