示例#1
0
def run(build_spec):
  app = wx.App(False)

  i18n.load(build_spec['language_dir'], build_spec['language'])
  image_repository.patch_images(build_spec['image_dir'])
  controller = Controller(build_spec)
  controller.run()
  app.MainLoop()
示例#2
0
def run(build_spec):
    app = wx.App(False)

    i18n.load(build_spec['language_dir'], build_spec['language'])
    image_repository.patch_images(build_spec['image_dir'])
    controller = Controller(build_spec)
    controller.run()
    app.MainLoop()
示例#3
0
 def _init_controller(self):
     self._controller = Controller(base_frame=self,
                                   build_spec=self.build_spec)
示例#4
0
class BaseWindow(wx.Frame):
    def __init__(self, build_spec):
        wx.Frame.__init__(self, parent=None, id=-1)

        self.build_spec = build_spec

        self._controller = None

        self.SetDoubleBuffered(True)

        # Components
        self.icon = None
        self.head_panel = None
        self.config_panel = None
        self.runtime_display = None
        self.foot_panel = None
        self.panels = None

        self._init_properties()
        self._init_components()
        self._do_layout()
        self._init_pages()
        self._init_controller()
        self.registerControllers()
        self.Bind(wx.EVT_SIZE, self.onResize)

        self.Bind(wx.EVT_CLOSE,
                  lambda x: pub.send_message(str(events.WINDOW_CLOSE)))

    def _init_properties(self):
        self.SetTitle(self.build_spec['program_name'])
        self.SetSize(self.build_spec['default_size'])
        # self.SetMinSize((400, 300))
        self.icon = wx.Icon(image_repository.program_icon, wx.BITMAP_TYPE_ICO)
        self.SetIcon(self.icon)

    def _init_components(self):
        # init gui
        _desc = self.build_spec['program_description']
        self.head_panel = header.FrameHeader(heading=i18n._("settings_title"),
                                             subheading=_desc or '',
                                             parent=self)

        self.runtime_display = RuntimeDisplay(self, self.build_spec)
        self.foot_panel = footer.Footer(self)
        self.panels = [self.head_panel, self.config_panel, self.foot_panel]

    def _do_layout(self):
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.head_panel, 0, wx.EXPAND)
        sizer.Add(wx_util.horizontal_rule(self), 0, wx.EXPAND)

        if self.build_spec['layout_type'] == 'column':
            self.config_panel = layouts.ColumnLayout(
                self, build_spec=self.build_spec)
            sizer.Add(self.config_panel, 1, wx.EXPAND)
        else:
            self.config_panel = layouts.FlatLayout(self,
                                                   build_spec=self.build_spec)
            sizer.Add(self.config_panel, 1, wx.EXPAND)

        sizer.Add(self.runtime_display, 1, wx.EXPAND)

        self.runtime_display.Hide()
        sizer.Add(wx_util.horizontal_rule(self), 0, wx.EXPAND)
        sizer.Add(self.foot_panel, 0, wx.EXPAND)
        self.SetSizer(sizer)

        self.sizer = sizer

        pub.subscribe(self.myListener, "panelListener")
        pub.subscribe(self.load_view, events.WINDOW_CHANGE)

    def myListener(self, message):
        if message == 'fetch':
            del self.config_panel

    def _init_controller(self):
        self._controller = Controller(base_frame=self,
                                      build_spec=self.build_spec)

    def registerControllers(self):
        for panel in self.panels:
            pass

    def GetOptions(self):
        return self.config_panel.GetOptions()

    def GetRequiredArgs(self):
        return self.config_panel.GetRequiredArgs()

    def GetOptionalArgs(self):
        return self.config_panel.GetOptionalArgs()

    def _init_pages(self):
        def config():
            self.config_panel.Show()
            self.runtime_display.Hide()

        def running():
            self.config_panel.Hide()
            self.runtime_display.Show()
            self.Layout()

        def success():
            running()

        def error():
            running()

        self.layouts = locals()

    def load_view(self, view_name=None):
        self.layouts.get(view_name, lambda: None)()

    def ManualStart(self):
        self._controller.manual_restart()

    def onResize(self, evt):
        evt.Skip()

    def PublishConsoleMsg(self, text):
        self.runtime_display.cmd_textbox.AppendText(text)
示例#5
0
 def _init_controller(self):
     self._controller = Controller(base_frame=self,
                                   client_app=self._client_app)
示例#6
0
class BaseWindow(wx.Frame):
    def __init__(self, BodyPanel, client_app, params):
        wx.Frame.__init__(self, parent=None, id=-1)

        self._params = params
        self._client_app = client_app

        self._controller = None

        # Components
        self.icon = None
        self.head_panel = None
        self.config_panel = None
        self.runtime_display = None
        self.foot_panel = None
        self.panels = None

        self._init_properties()
        self._init_components(BodyPanel)
        self._do_layout()
        self._init_controller()
        self.registerControllers()

    def _init_properties(self):
        if not self._params['program_name']:
            title = os.path.basename(sys.argv[0].replace('.py', ''))
        else:
            title = self._params['program_name']
        self.SetTitle(title)
        self.SetSize((610, 530))
        self.SetMinSize((400, 300))
        self.icon = wx.Icon(image_repository.icon, wx.BITMAP_TYPE_ICO)
        self.SetIcon(self.icon)

    def _init_components(self, BodyPanel):
        # init gui
        _desc = self._client_app.description
        self.head_panel = header.FrameHeader(
            heading=i18n.translate("settings_title"),
            subheading=_desc if _desc is not None else '',
            parent=self)
        self.config_panel = BodyPanel(self)
        self.runtime_display = RuntimeDisplay(self)
        self.foot_panel = footer.Footer(self, self._controller)
        self.panels = [self.head_panel, self.config_panel, self.foot_panel]

    def _do_layout(self):
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.head_panel, 0, wx.EXPAND)
        sizer.Add(styling.HorizontalRule(self), 0, wx.EXPAND)
        sizer.Add(self.config_panel, 1, wx.EXPAND)
        self.runtime_display.Hide()
        sizer.Add(self.runtime_display, 1, wx.EXPAND)
        sizer.Add(styling.HorizontalRule(self), 0, wx.EXPAND)
        sizer.Add(self.foot_panel, 0, wx.EXPAND)
        self.SetSizer(sizer)

    def _init_controller(self):
        self._controller = Controller(base_frame=self,
                                      client_app=self._client_app)

    def registerControllers(self):
        for panel in self.panels:
            panel.RegisterController(self._controller)

    def GetOptions(self):
        return self.config_panel.GetOptions()

    def NextPage(self):
        self.head_panel.NextPage()
        self.foot_panel.NextPage()
        self.config_panel.Hide()
        self.runtime_display.Show()
        self.Layout()

    # def AttachPayload(self, payload):
    #   self._payload = payload

    def ManualStart(self):
        self._controller.ManualStart()
示例#7
0
 def _init_controller(self):
   self._controller = Controller(base_frame=self, build_spec=self.build_spec)
示例#8
0
class BaseWindow(wx.Frame):
  def __init__(self, build_spec):
    wx.Frame.__init__(self, parent=None, id=-1)

    self.build_spec = build_spec

    self._controller = None

    self.SetDoubleBuffered(True)

    # Components
    self.icon = None
    self.head_panel = None
    self.config_panel = None
    self.runtime_display = None
    self.foot_panel = None
    self.panels = None

    self._init_properties()
    self._init_components()
    self._do_layout()
    self._init_pages()
    self._init_controller()
    self.registerControllers()
    self.Bind(wx.EVT_SIZE, self.onResize)

  def _init_properties(self):
    self.SetTitle(self.build_spec['program_name'])
    self.SetSize(self.build_spec['default_size'])
    # self.SetMinSize((400, 300))
    self.icon = wx.Icon(image_repository.icon, wx.BITMAP_TYPE_ICO)
    self.SetIcon(self.icon)

  def _init_components(self):
    # init gui
    _desc = self.build_spec['program_description']
    self.head_panel = header.FrameHeader(
        heading=i18n._("settings_title"),
        subheading=_desc or '',
        parent=self)

    self.runtime_display = RuntimeDisplay(self)
    self.foot_panel = footer.Footer(self)
    self.panels = [self.head_panel, self.config_panel, self.foot_panel]

  def _do_layout(self):
    sizer = wx.BoxSizer(wx.VERTICAL)
    sizer.Add(self.head_panel, 0, wx.EXPAND)
    sizer.Add(wx_util.horizontal_rule(self), 0, wx.EXPAND)

    if self.build_spec['layout_type'] == 'column':
      self.config_panel = layouts.ColumnLayout(self, build_spec=self.build_spec)
      sizer.Add(self.config_panel, 1, wx.EXPAND)
    else:
      self.config_panel = layouts.FlatLayout(self, build_spec=self.build_spec)
      sizer.Add(self.config_panel, 1, wx.EXPAND)

    sizer.Add(self.runtime_display, 1, wx.EXPAND)

    self.runtime_display.Hide()
    sizer.Add(wx_util.horizontal_rule(self), 0, wx.EXPAND)
    sizer.Add(self.foot_panel, 0, wx.EXPAND)
    self.SetSizer(sizer)

    self.sizer = sizer

    pub.subscribe(self.myListener, "panelListener")
    pub.subscribe(self.load_view, events.WINDOW_CHANGE)



  def myListener(self, message):
    if message == 'fetch':
      del self.config_panel

  def _init_controller(self):
    self._controller = Controller(base_frame=self, build_spec=self.build_spec)

  def registerControllers(self):
    for panel in self.panels:
      pass

  def GetOptions(self):
    return self.config_panel.GetOptions()

  def GetRequiredArgs(self):
    return self.config_panel.GetRequiredArgs()

  def GetOptionalArgs(self):
    return self.config_panel.GetOptionalArgs()


  def _init_pages(self):

    def config():
      self.config_panel.Show()
      self.runtime_display.Hide()

    def running():
      self.config_panel.Hide()
      self.runtime_display.Show()
      self.Layout()

    def success():
      running()

    def error():
      running()

    self.layouts = locals()

  def load_view(self, view_name=None):
    self.layouts.get(view_name, lambda: None)()

  def ManualStart(self):
    self._controller.manual_restart()

  def onResize(self, evt):
    evt.Skip()

  def PublishConsoleMsg(self, text):
    self.runtime_display.cmd_textbox.AppendText(text)
示例#9
0
class BaseWindow(wx.Frame):
  def __init__(self, build_spec):
    wx.Frame.__init__(self, parent=None, id=-1)

    self.build_spec = build_spec

    self._controller = None

    self.SetDoubleBuffered(True)

    # Components
    self.icon = None
    self.head_panel = None
    self.config_panel = None
    self.runtime_display = None
    self.foot_panel = None
    self.panels = None

    self._init_properties()
    self._init_components()
    self._do_layout()
    self._init_pages()
    self._init_controller()
    self.registerControllers()
    self.Bind(wx.EVT_SIZE, self.onResize)
    self.Bind(wx.EVT_CLOSE, self.onClose)

  def _init_properties(self):
    self.SetTitle(self.build_spec['program_name'])
    self.SetSize(self.build_spec['default_size'])
    # self.SetMinSize((400, 300))
    self.icon = wx.Icon(image_repository.program_icon, wx.BITMAP_TYPE_ICO)
    self.SetIcon(self.icon)

  def _init_components(self):
    # init gui
    _desc = self.build_spec['program_description']
    self.head_panel = header.FrameHeader(
        heading=i18n._("settings_title"),
        subheading=_desc or '',
        parent=self)

    self.runtime_display = RuntimeDisplay(self, self.build_spec)
    self.foot_panel = footer.Footer(self)

    if self.build_spec['disable_stop_button']:
      self.foot_panel.stop_button.Disable()
    else:
      self.foot_panel.stop_button.Enable()

    self.panels = [self.head_panel, self.config_panel, self.foot_panel]

  def _do_layout(self):
    sizer = wx.BoxSizer(wx.VERTICAL)
    sizer.Add(self.head_panel, 0, wx.EXPAND)
    sizer.Add(wx_util.horizontal_rule(self), 0, wx.EXPAND)

    if self.build_spec['layout_type'] == 'column':
      self.config_panel = layouts.ColumnLayout(self, build_spec=self.build_spec)
      sizer.Add(self.config_panel, 1, wx.EXPAND)
    else:
      self.config_panel = layouts.FlatLayout(self, build_spec=self.build_spec)
      sizer.Add(self.config_panel, 1, wx.EXPAND)

    sizer.Add(self.runtime_display, 1, wx.EXPAND)

    self.runtime_display.Hide()
    sizer.Add(wx_util.horizontal_rule(self), 0, wx.EXPAND)
    sizer.Add(self.foot_panel, 0, wx.EXPAND)
    self.SetSizer(sizer)

    self.sizer = sizer

    pub.subscribe(self.myListener, "panelListener")
    pub.subscribe(self.load_view, events.WINDOW_CHANGE)



  def myListener(self, message):
    if message == 'fetch':
      del self.config_panel

  def _init_controller(self):
    self._controller = Controller(base_frame=self, build_spec=self.build_spec)

  def registerControllers(self):
    for panel in self.panels:
      pass

  def GetOptions(self):
    return self.config_panel.GetOptions()

  def GetRequiredArgs(self):
    return self.config_panel.GetRequiredArgs()

  def GetOptionalArgs(self):
    return self.config_panel.GetOptionalArgs()


  def _init_pages(self):

    def config():
      self.config_panel.Show()
      self.runtime_display.Hide()

    def running():
      self.config_panel.Hide()
      self.runtime_display.Show()
      self.Layout()

    def success():
      running()

    def error():
      running()

    self.layouts = locals()

  def load_view(self, view_name=None):
    self.layouts.get(view_name, lambda: None)()

  def ManualStart(self):
    self._controller.manual_restart()

  def onResize(self, evt):
    evt.Skip()

  def onClose(self, evt):
    if evt.CanVeto():
      evt.Veto()
    pub.send_message(str(events.WINDOW_CLOSE))

  def PublishConsoleMsg(self, text):
    self.runtime_display.cmd_textbox.AppendText(text)

  def UpdateProgressBar(self, value):
    pb = self.foot_panel.progress_bar
    if value < 0:
      pb.Pulse()
    else:
      value = min(int(value), pb.GetRange())
      if pb.GetValue() != value:
        # Windows 7 progress bar animation hack
        # http://stackoverflow.com/questions/5332616/disabling-net-progressbar-animation-when-changing-value
        if self.build_spec["disable_progress_bar_animation"] \
           and sys.platform.startswith("win"):
          if pb.GetRange() == value:
            pb.SetValue(value)
            pb.SetValue(value-1)
          else:
            pb.SetValue(value+1)
        pb.SetValue(value)
示例#10
0
class BaseWindow(wx.Frame):
    def __init__(self, BodyPanel, build_spec):
        wx.Frame.__init__(self, parent=None, id=-1)

        self.build_spec = build_spec

        self._controller = None

        # Components
        self.icon = None
        self.head_panel = None
        self.config_panel = None
        self.runtime_display = None
        self.foot_panel = None
        self.panels = None

        self._init_properties()
        self._init_components(BodyPanel)
        self._do_layout()
        self._init_controller()
        self.registerControllers()
        self.Bind(wx.EVT_SIZE, self.onResize)

    def _init_properties(self):
        self.SetTitle(self.build_spec['program_name'])
        self.SetSize(self.build_spec['default_size'])
        # self.SetMinSize((400, 300))
        self.icon = wx.Icon(image_repository.icon, wx.BITMAP_TYPE_ICO)
        self.SetIcon(self.icon)

    def _init_components(self, BodyPanel):
        # init gui
        _desc = self.build_spec['program_description']
        self.head_panel = header.FrameHeader(
            heading=i18n.translate("settings_title"),
            subheading=_desc or '',
            parent=self)
        self.config_panel = BodyPanel(self)
        self.runtime_display = RuntimeDisplay(self)
        self.foot_panel = footer.Footer(self, self._controller)
        self.panels = [self.head_panel, self.config_panel, self.foot_panel]

    def _do_layout(self):
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.head_panel, 0, wx.EXPAND)
        sizer.Add(styling.HorizontalRule(self), 0, wx.EXPAND)
        sizer.Add(self.config_panel, 1, wx.EXPAND)
        self.runtime_display.Hide()
        sizer.Add(self.runtime_display, 1, wx.EXPAND)
        sizer.Add(styling.HorizontalRule(self), 0, wx.EXPAND)
        sizer.Add(self.foot_panel, 0, wx.EXPAND)
        self.SetSizer(sizer)

    def _init_controller(self):
        self._controller = Controller(base_frame=self,
                                      build_spec=self.build_spec)

    def registerControllers(self):
        for panel in self.panels:
            panel.RegisterController(self._controller)

    def GetOptions(self):
        return self.config_panel.GetOptions()

    def GetRequiredArgs(self):
        return self.config_panel.GetRequiredArgs()

    def GetOptionalArgs(self):
        return self.config_panel.GetOptionalArgs()

    def NextPage(self):
        self.head_panel.NextPage()
        self.foot_panel.NextPage()
        self.config_panel.Hide()
        self.runtime_display.Show()
        self.Layout()

    def ManualStart(self):
        self._controller.ManualStart()

    def onResize(self, evt):
        evt.Skip()

    def PublishConsoleMsg(self, text):
        self.runtime_display.cmd_textbox.AppendText(text)
示例#11
0
class BaseWindow(wx.Frame):
    def __init__(self, build_spec):
        wx.Frame.__init__(self, parent=None, id=-1)

        self.build_spec = build_spec

        self._controller = None

        self.SetDoubleBuffered(True)

        # Components
        self.icon = None
        self.head_panel = None
        self.config_panel = None
        self.runtime_display = None
        self.foot_panel = None
        self.panels = None

        self._init_properties()
        self._init_components()
        self._do_layout()
        self._init_pages()
        self._init_controller()
        self.registerControllers()
        self.Bind(wx.EVT_SIZE, self.onResize)
        self.Bind(wx.EVT_CLOSE, self.onClose)

    def _init_properties(self):
        self.SetTitle(self.build_spec['program_name'])
        self.SetSize(self.build_spec['default_size'])
        # self.SetMinSize((400, 300))
        self.icon = wx.Icon(image_repository.program_icon, wx.BITMAP_TYPE_ICO)
        self.SetIcon(self.icon)

    def _init_components(self):
        # init gui
        _desc = self.build_spec['program_description']
        self.head_panel = header.FrameHeader(heading=i18n._("settings_title"),
                                             subheading=_desc or '',
                                             parent=self)

        self.runtime_display = RuntimeDisplay(self, self.build_spec)
        self.foot_panel = footer.Footer(self)

        if self.build_spec['disable_stop_button']:
            self.foot_panel.stop_button.Disable()
        else:
            self.foot_panel.stop_button.Enable()

        self.panels = [self.head_panel, self.config_panel, self.foot_panel]

    def _do_layout(self):
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.head_panel, 0, wx.EXPAND)
        sizer.Add(wx_util.horizontal_rule(self), 0, wx.EXPAND)

        if self.build_spec['layout_type'] == 'column':
            self.config_panel = layouts.ColumnLayout(
                self, build_spec=self.build_spec)
            sizer.Add(self.config_panel, 1, wx.EXPAND)
        else:
            self.config_panel = layouts.FlatLayout(self,
                                                   build_spec=self.build_spec)
            sizer.Add(self.config_panel, 1, wx.EXPAND)

        sizer.Add(self.runtime_display, 1, wx.EXPAND)

        self.runtime_display.Hide()
        sizer.Add(wx_util.horizontal_rule(self), 0, wx.EXPAND)
        sizer.Add(self.foot_panel, 0, wx.EXPAND)
        self.SetSizer(sizer)

        self.sizer = sizer

        pub.subscribe(self.myListener, "panelListener")
        pub.subscribe(self.load_view, events.WINDOW_CHANGE)

    def myListener(self, message):
        if message == 'fetch':
            del self.config_panel

    def _init_controller(self):
        self._controller = Controller(base_frame=self,
                                      build_spec=self.build_spec)

    def registerControllers(self):
        for panel in self.panels:
            pass

    def GetOptions(self):
        return self.config_panel.GetOptions()

    def GetRequiredArgs(self):
        return self.config_panel.GetRequiredArgs()

    def GetOptionalArgs(self):
        return self.config_panel.GetOptionalArgs()

    def _init_pages(self):
        def config():
            self.config_panel.Show()
            self.runtime_display.Hide()

        def running():
            self.config_panel.Hide()
            self.runtime_display.Show()
            self.Layout()

        def success():
            running()

        def error():
            running()

        self.layouts = locals()

    def load_view(self, view_name=None):
        self.layouts.get(view_name, lambda: None)()

    def ManualStart(self):
        self._controller.manual_restart()

    def onResize(self, evt):
        evt.Skip()

    def onClose(self, evt):
        if evt.CanVeto():
            evt.Veto()
        pub.send_message(str(events.WINDOW_CLOSE))

    def PublishConsoleMsg(self, text):
        self.runtime_display.cmd_textbox.AppendText(text)

    def UpdateProgressBar(self, value):
        pb = self.foot_panel.progress_bar
        if value < 0:
            pb.Pulse()
        else:
            value = min(int(value), pb.GetRange())
            if pb.GetValue() != value:
                # Windows 7 progress bar animation hack
                # http://stackoverflow.com/questions/5332616/disabling-net-progressbar-animation-when-changing-value
                if self.build_spec["disable_progress_bar_animation"] \
                   and sys.platform.startswith("win"):
                    if pb.GetRange() == value:
                        pb.SetValue(value)
                        pb.SetValue(value - 1)
                    else:
                        pb.SetValue(value + 1)
                pb.SetValue(value)