Example #1
0
  def createWidgets(self):
    frame = Frame(self)
    frame.grid(row=0, column=0)

    row = 0

    # camera image 
    w = Label(frame)
    if self.m_icons['image'] is not None:
      w = Label(frame)
      w['image']  = self.m_icons['image']
    w['anchor'] = CENTER
    w.grid(row=row, column=0, padx=15, sticky=W+N+S)

    # top heading
    w = Label(frame)
    helv = tkFont.Font(family="Helvetica",size=24,weight="bold")
    w['font']   = helv
    w['text']   = 'Start End Effector Camera'
    w['anchor'] = W
    w.grid(row=row, column=1, sticky=W)

    row += 1

    width, height, result = EECamConfigDlg.wxh(self.m_config['resolution'])
    w = Label(frame)
    helv12 = tkFont.Font(family="Helvetica",size=12,weight="bold")
    w['font'] = helv12
    w['text'] = "Remote UDP Source: {0}:{1}   Camera: {2}x{3} resolution at " \
                "{4} frames/second".format(
        self.m_srcHek, self.m_config['port'],
        width, height, self.m_config['fps'])
    w['justify'] = LEFT
    w.grid(row=row, column=0, columnspan=2, padx=15, pady=5, sticky=W)

    row += 1

    # xterm frame
    self.m_wXterm = Xterm(master=frame, on_exit=self.destroy,
                            xterm_cmd=self.m_cmd)
    self.m_wXterm.grid(row=row, column=0, columnspan=2, padx=5, pady=5)

    row += 1

    wframe = Frame(frame)
    wframe.grid(row=row, column=0, columnspan=2)

    # cancel button
    w = Button(wframe, width=10, text='Cancel', command=self.close)
    w.grid(row=0, column=0, padx=2, pady=5)
    w['anchor']  = CENTER
    self.m_bttnCancel = w

    # start button
    w = Button(wframe, width=10, text='Start', command=self.ok)
    w.grid(row=0, column=1, padx=2, pady=5)
    w['anchor']  = CENTER
    self.m_bttnContinue = w
Example #2
0
  def createWidgets(self):
    frame = Frame(self)
    frame.grid(row=0, column=0)

    row = 0

    # camera image 
    w = Label(frame)
    if self.m_icons['image'] is not None:
      w = Label(frame)
      w['image']  = self.m_icons['image']
    w['anchor'] = CENTER
    w.grid(row=row, column=0, padx=15, sticky=W+N+S)

    # top heading
    w = Label(frame)
    helv = tkFont.Font(family="Helvetica",size=24,weight="bold")
    w['font']   = helv
    w['text']   = 'Stop End Effector Camera'
    w['anchor'] = W
    w.grid(row=row, column=1, sticky=W)

    row += 1

    w = Label(frame)
    helv12 = tkFont.Font(family="Helvetica",size=12,weight="bold")
    w['text'] = "Hekateros: {0}".format(self.m_srcHek)
    w['font'] = helv12
    w['justify'] = LEFT
    w.grid(row=row, column=0, columnspan=2, padx=15, pady=5, sticky=W)

    row += 1

    # xterm frame
    self.m_wXterm = Xterm(master=frame, auto_run=True, on_exit=self.destroy,
                            xterm_cmd=self.m_cmd)
    self.m_wXterm.grid(row=row, column=0, columnspan=2, padx=5, pady=5)
Example #3
0
class EECamStopDlg(Toplevel):
  #
  ## \brief Constructor.
  ##
  ## \param cnf     Configuration dictionary.
  ## \param kw      Keyword options.
  #
  def __init__(self, master=None, cnf={}, **kw):
    # initialize dialog data
    kw = self.initData(kw)

    Toplevel.__init__(self, master=master, cnf=cnf, **kw)
    self.title(self.m_title)

    # create and show widgets
    self.createWidgets()

    self.protocol("WM_DELETE_WINDOW", self.close)

    #
    # Modal diagle settings.
    #
    # set the focus on dialog window (needed on Windows)
    self.focus_set()

    # make sure events only go to our dialog
    self.grab_set()

    # make sure dialog stays on top of its parent window (if needed)
    self.transient(master)

    # display the window and wait for it to close
    self.wait_window(self)

  #
  ## \brief Initialize class state data.
  ##
  ## \param kw      Keyword options.
  ##
  ## \return Modified keywords sans this specific class.
  ##
  def initData(self, kw):
    self.m_icons          = {}    # must keep loaded icons referenced
    imageLoader = ImageLoader(py_pkg='hekateros_control.images')
    if kw.has_key('title'):
      self.m_title = kw['title']
      del kw['title']
    else:
      self.m_title = "Stop End Effector Camera"
    if kw.has_key('image'):
      self.m_icons['image'] = imageLoader.load(kw['image'])
      del kw['image']
    else:
      self.m_icons['image'] = None
    if self.m_icons['image'] is None:
      self.m_icons['image'] = imageLoader.load('icons/icon_video.png')
    if kw.has_key('src'):
      self.m_srcHek = kw['src']
      del kw['src']
    else:
      self.m_srcHek = 'hekateros'
    if kw.has_key('cmd'):
      self.m_cmd = kw['cmd']
      del kw['cmd']
    else:
      self.m_cmd = "\
trap '' SIGHUP; \
hek_eecam_stop --src={0}".format(self.m_srcHek)
    self.m_result = False
    return kw

  #
  ## \brief Create gui widgets with supporting data and show.
  #
  def createWidgets(self):
    frame = Frame(self)
    frame.grid(row=0, column=0)

    row = 0

    # camera image 
    w = Label(frame)
    if self.m_icons['image'] is not None:
      w = Label(frame)
      w['image']  = self.m_icons['image']
    w['anchor'] = CENTER
    w.grid(row=row, column=0, padx=15, sticky=W+N+S)

    # top heading
    w = Label(frame)
    helv = tkFont.Font(family="Helvetica",size=24,weight="bold")
    w['font']   = helv
    w['text']   = 'Stop End Effector Camera'
    w['anchor'] = W
    w.grid(row=row, column=1, sticky=W)

    row += 1

    w = Label(frame)
    helv12 = tkFont.Font(family="Helvetica",size=12,weight="bold")
    w['text'] = "Hekateros: {0}".format(self.m_srcHek)
    w['font'] = helv12
    w['justify'] = LEFT
    w.grid(row=row, column=0, columnspan=2, padx=15, pady=5, sticky=W)

    row += 1

    # xterm frame
    self.m_wXterm = Xterm(master=frame, auto_run=True, on_exit=self.destroy,
                            xterm_cmd=self.m_cmd)
    self.m_wXterm.grid(row=row, column=0, columnspan=2, padx=5, pady=5)

  #
  ## \brief Destroy window callback.
  #
  def ok(self):
    self.m_wXterm.execute()
    self.m_result = True

  #
  ## \brief Destroy window callback.
  #
  def close(self):
    self.destroy()
Example #4
0
class EECamStartDlg(Toplevel):
  #
  ## \brief Constructor.
  ##
  ## \param cnf     Configuration dictionary.
  ## \param kw      Keyword options.
  #
  def __init__(self, master=None, cnf={}, **kw):
    # initialize dialog data
    kw = self.initData(kw)

    Toplevel.__init__(self, master=master, cnf=cnf, **kw)
    self.title(self.m_title)

    # create and show widgets
    self.createWidgets()

    # allows the enter button to fire either button's action
    self.m_bttnCancel.bind('<KeyPress-Return>', func=self.close)

    # allows us to customize what happens when the close button is pressed
    self.protocol("WM_DELETE_WINDOW", self.close)

    #
    # Modal diagle settings.
    #
    # set the focus on dialog window (needed on Windows)
    self.focus_set()

    # make sure events only go to our dialog
    self.grab_set()

    # make sure dialog stays on top of its parent window (if needed)
    self.transient(master)

    # display the window and wait for it to close
    self.wait_window(self)

  #
  ## \brief Initialize class state data.
  ##
  ## \param kw      Keyword options.
  ##
  ## \return Modified keywords sans this specific class.
  ##
  def initData(self, kw):
    self.m_icons          = {}    # must keep loaded icons referenced
    imageLoader = ImageLoader(py_pkg='hekateros_control.images')
    if kw.has_key('title'):
      self.m_title = kw['title']
      del kw['title']
    else:
      self.m_title = "Start End Effector Camera"
    if kw.has_key('image'):
      self.m_icons['image'] = imageLoader.load(kw['image'])
      del kw['image']
    else:
      self.m_icons['image'] = None
    if self.m_icons['image'] is None:
      self.m_icons['image'] = imageLoader.load('icons/icon_video.png')
    if kw.has_key('src'):
      self.m_srcHek = kw['src']
      del kw['src']
    else:
      self.m_srcHek = 'hekateros'
    if kw.has_key('config'):
      self.m_config = kw['config'].copy()
      del kw['config']
    else:
      self.m_config = EECamConfigDlg.ConfigDft.copy()
    if kw.has_key('cmd'):
      self.m_cmd = kw['cmd']
      del kw['cmd']
    else:
      self.m_cmd = "\
trap '' SIGHUP; \
hek_eecam_start --src={0} --port={1} --res={2} --fps={3}".format(
        self.m_srcHek, self.m_config['port'], self.m_config['resolution'],
        self.m_config['fps'])
    self.m_result = False
    return kw

  #
  ## \brief Create gui widgets with supporting data and show.
  #
  def createWidgets(self):
    frame = Frame(self)
    frame.grid(row=0, column=0)

    row = 0

    # camera image 
    w = Label(frame)
    if self.m_icons['image'] is not None:
      w = Label(frame)
      w['image']  = self.m_icons['image']
    w['anchor'] = CENTER
    w.grid(row=row, column=0, padx=15, sticky=W+N+S)

    # top heading
    w = Label(frame)
    helv = tkFont.Font(family="Helvetica",size=24,weight="bold")
    w['font']   = helv
    w['text']   = 'Start End Effector Camera'
    w['anchor'] = W
    w.grid(row=row, column=1, sticky=W)

    row += 1

    width, height, result = EECamConfigDlg.wxh(self.m_config['resolution'])
    w = Label(frame)
    helv12 = tkFont.Font(family="Helvetica",size=12,weight="bold")
    w['font'] = helv12
    w['text'] = "Remote UDP Source: {0}:{1}   Camera: {2}x{3} resolution at " \
                "{4} frames/second".format(
        self.m_srcHek, self.m_config['port'],
        width, height, self.m_config['fps'])
    w['justify'] = LEFT
    w.grid(row=row, column=0, columnspan=2, padx=15, pady=5, sticky=W)

    row += 1

    # xterm frame
    self.m_wXterm = Xterm(master=frame, on_exit=self.destroy,
                            xterm_cmd=self.m_cmd)
    self.m_wXterm.grid(row=row, column=0, columnspan=2, padx=5, pady=5)

    row += 1

    wframe = Frame(frame)
    wframe.grid(row=row, column=0, columnspan=2)

    # cancel button
    w = Button(wframe, width=10, text='Cancel', command=self.close)
    w.grid(row=0, column=0, padx=2, pady=5)
    w['anchor']  = CENTER
    self.m_bttnCancel = w

    # start button
    w = Button(wframe, width=10, text='Start', command=self.ok)
    w.grid(row=0, column=1, padx=2, pady=5)
    w['anchor']  = CENTER
    self.m_bttnContinue = w

  #
  ## \brief Destroy window callback.
  #
  def ok(self):
    self.m_wXterm.execute()
    self.m_result = True

  #
  ## \brief Destroy window callback.
  #
  def close(self):
    self.destroy()