Exemple #1
0
 def colon_escape(self):
     """colon_escape switches the focus to the 'mini-buffer' and
     accepts and executes a one line colon command."""
     w, pos0 = self.listbox.get_focus()
     try:
         default_file = w.get_result()
     except:
         default_file = ""
     self.listbox.set_focus(len(self.listitems) - 2)
     size = self.ui.get_cols_rows()
     self.colon_edit.set_edit_text("")
     self.colon_edit.set_edit_pos(0)
     self.view.keypress(size, ":")
     done = False
     while not done:
         canvas = self.view.render(size, focus=1)
         self.ui.draw_screen(size, canvas)
         for k in self.get_keys():
             if urwid.is_mouse_event(k) or \
                    k == "ctrl c" or k == "ctrl g":
                 self.colon_edit.set_edit_text("")
                 return
             elif k == 'window resize':
                 size = self.ui.get_cols_rows()
             elif k == 'enter':
                 done = True
                 break
             k = self.keypress(size, k)
             self.view.keypress(size, k)
     cmd = self.colon_edit.get_edit_text()
     self.listbox.set_focus(pos0)
     self.colon_edit.set_edit_text("")
     self.process_colon(cmd)
Exemple #2
0
def run():
    """ Run the UI. """
    dim = ui.get_cols_rows()
    ui.set_mouse_tracking()

    keys = True
    while True:
        if keys:
            ui.draw_screen(dim, frame.render(dim, True))
        keys = ui.get_input()

        if "window resize" in keys:
            dim = ui.get_cols_rows()
        if "esc" in keys or "Q" in keys:
            return False
        for k in keys:
            # Send key to underlying widget:
            if urwid.is_mouse_event(k):
                event, button, col, row = k
                frame.mouse_event(dim, event, button, col, row, focus=True)
            else:
                frame.keypress(dim, k)
            # Check if buttons are pressed.
        if CANCEL_PRESSED:
            return False
        if OK_PRESSED or "meta enter" in keys:
            return True
Exemple #3
0
 def keypress(self, pos, key):
     if key is None:
         return
     if key is "ready":  # Handle the "ready" binding specially to keep the rest simple.
         if "ready" in self.bindings:
             return self.bindings["ready"]()
         else:
             return "ready"
     self.debug("pos: %s    key: %s" % (pos, key))
     if key in self.mode_keys:
         self.chord.append(key)
         return None
     elif not urwid.is_mouse_event(key):
         key = " ".join(self.chord + [key])
         self.chord = []
     visited = []
     while key in self.bindings and key not in visited:
         visited.append(key)
         f = self.bindings[key]
         if f is None:
             key = None
         elif isinstance(f, str): # str & unicode?
             key = f
         else:
             key = f()
         self.debug("pos: %s  visited: %s  key: %s mapping: %s" % \
                (pos, " --> ".join(visited), key, f))
     return key
Exemple #4
0
 def run(self):
     self.ui.set_mouse_tracking()
     size = self.ui.get_cols_rows()
     self.done = False
     self._newline = True
     while not self.done:
         self.view.keypress(size, "ready")
         canvas = self.view.render(size, focus=1)
         self.ui.draw_screen(size, canvas)
         for k in self.get_keys():
             if k == ":":
                 self.colon_escape()
                 break
             elif urwid.is_mouse_event(k):
                 event, button, col, row = k
                 self.view.mouse_event(size,
                                       event,
                                       button,
                                       col,
                                       row,
                                       focus=True)
             elif k == 'window resize':
                 size = self.ui.get_cols_rows()
                 self.inform("resize %s" % (str(size)))
             k = self.keypress(size, k)
             self.view.keypress(size, k)
Exemple #5
0
 def run(self,ui,parent):
     ui.set_mouse_tracking()
     size = ui.get_cols_rows()
     overlay = urwid.Overlay(urwid.LineBox(self.view),
                             parent, 'center', self.width,
                             'middle', self.height)
     try:
         while True:
             canvas = overlay.render( size, focus=True )
             ui.draw_screen( size, canvas )
             keys = None
             while not keys:
                 keys = ui.get_input()
             for k in keys:
                 if urwid.is_mouse_event(k):
                     event, button, col, row = k
                     overlay.mouse_event( size,
                             event, button, col, row,
                             focus=True)
                 else:
                     if k == 'window resize':
                         size = ui.get_cols_rows()
                     k = self.view.keypress( size, k )
                     if k == 'esc':
                         raise DialogExit(-1)
                     if k:
                         self.unhandled_key( size, k)
     except DialogExit, e:
         return self.on_exit( e.args[0] )
Exemple #6
0
 def keypress(self, pos, key):
     if key is None:
         return
     if key is "ready":  # Handle the "ready" binding specially to keep the rest simple.
         if "ready" in self.bindings:
             return self.bindings["ready"]()
         else:
             return "ready"
     self.debug("pos: %s    key: %s" % (pos, key))
     if key in self.mode_keys:
         self.chord.append(key)
         return None
     elif not urwid.is_mouse_event(key):
         key = " ".join(self.chord + [key])
         self.chord = []
     visited = []
     while key in self.bindings and key not in visited:
         visited.append(key)
         f = self.bindings[key]
         if f is None:
             key = None
         elif isinstance(f, str):  # str & unicode?
             key = f
         else:
             key = f()
         self.debug("pos: %s  visited: %s  key: %s mapping: %s" % \
                (pos, " --> ".join(visited), key, f))
     return key
Exemple #7
0
 def colon_escape(self):
     """colon_escape switches the focus to the 'mini-buffer' and
     accepts and executes a one line colon command."""
     w, pos0 = self.listbox.get_focus()
     try:
         default_file = w.get_result()
     except:
         default_file = ""
     self.listbox.set_focus(len(self.listitems)-2)
     size = self.ui.get_cols_rows()
     self.colon_edit.set_edit_text("")
     self.colon_edit.set_edit_pos(0)
     self.view.keypress(size, ":")
     done = False
     while not done:
         canvas = self.view.render( size, focus=1 )
         self.ui.draw_screen( size, canvas )
         for k in self.get_keys():
             if urwid.is_mouse_event(k) or \
                    k == "ctrl c" or k == "ctrl g":
                 self.colon_edit.set_edit_text("")
                 return
             elif k == 'window resize':
                 size = self.ui.get_cols_rows()
             elif k == 'enter':
                 done = True
                 break
             k = self.keypress(size, k)
             self.view.keypress( size, k )
     cmd = self.colon_edit.get_edit_text()
     self.listbox.set_focus(pos0)
     self.colon_edit.set_edit_text("")
     self.process_colon(cmd)
Exemple #8
0
    def run(self):
        self.size = self.screen.get_cols_rows()   
        keys=[]
        running = True
        thread.start_new_thread( 
            (lambda x: self.feed.refresh() ) , (None,)  )
        self.screen.set_mouse_tracking()
#        self.screen.set_input_timeouts(2)
	while running:            
            keys = self.screen.get_input()            
            #if not len(keys): continue
            for k in keys:
                self.status_msg.set_text( str(k) )
                if urwid.is_mouse_event(k):
                    event, button, col, row = k
                    self.listbox.mouse_event( (100,100) , 
                                              event, button, col, row,
                                              focus=True )
                    continue

                if "q" == k:
                    self.status_msg.set_text( "close application " )
                    running = False
                elif k=='r':
                    self.feed.refresh()
                elif "window resize" == k:
                    self.size = self.screen.get_cols_rows()
                elif "ctrl l" == k:
                    self.redraw()
                self.listbox.keypress(self.size,k)
            self.redraw() 
Exemple #9
0
    def execute(self):
        keys = True
        dim = self.ui.screen.get_cols_rows()
        while True:
            if keys:
                self.ui.screen.draw_screen(dim, self.render(dim, True))

            keys = self.ui.screen.get_input()
            if not keys:
                continue
            if "window resize" in keys:
                dim = self.ui.screen.get_cols_rows()
            if "esc" in keys:
                break

            for event in keys:
                if hasattr(self.content, 'focus_next'):
                    self._scroll_listbox(event, dim)
                else:
                    self._button_events_process(event, dim)

                if self.close_on_click and \
                        (urwid.is_mouse_event(event) and event[1] == 1):
                    return

            try:
                self._process_button_values()
            except DialogExit, exception:
                return exception.args[0]
Exemple #10
0
def run():
    """Run the UI."""
    dim = ui.get_cols_rows()
    ui.set_mouse_tracking()

    keys = True
    while True:
        if keys:
            ui.draw_screen(dim, frame.render(dim, True))
        keys = ui.get_input()

        if "window resize" in keys:
            dim = ui.get_cols_rows()
        if "esc" in keys or 'Q' in keys:
            return False
        for k in keys:
            # Send key to underlying widget:
            if urwid.is_mouse_event(k):
                event, button, col, row = k
                frame.mouse_event(dim, event, button, col, row, focus=True)
            else:
                frame.keypress(dim, k)
            # Check if buttons are pressed.
        if CANCEL_PRESSED:
            return False
        if OK_PRESSED or 'meta enter' in keys:
            return True
Exemple #11
0
    def execute(self):
        keys = True
        dim = self.ui.screen.get_cols_rows()
        while True:
            if keys:
                self.ui.screen.draw_screen(dim, self.render(dim,True))

            keys = self.ui.screen.get_input()
            if not keys:
                continue
            if "window resize" in keys:
                dim = self.ui.screen.get_cols_rows()
            if "esc" in keys:
                break

            for event in keys:
                if hasattr(self.content, 'focus_next'):
                    self._scroll_listbox(event, dim)
                else:
                    self._button_events_process(event, dim)

                if self.close_on_click and \
                        (urwid.is_mouse_event(event) and event[1] == 1):
                    return

            try:
                self._process_button_values()
            except DialogExit, exception:
                return exception.args[0]
Exemple #12
0
    def run(self):
        self.ui.set_mouse_tracking()
        size = self.ui.get_cols_rows()
        try:
            while True:
                canvas = self.view.render(size, focus=True)
                self.ui.draw_screen(size, canvas)
                keys = None
                while not keys:
                    keys = self.ui.get_input()
                for k in keys:
                    if urwid.is_mouse_event(k):
                        event, button, col, row = k
                        self.view.mouse_event(size,
                                              event,
                                              button,
                                              col,
                                              row,
                                              focus=True)
                    if k == 'window resize':
                        size = self.ui.get_cols_rows()
                    k = self.view.keypress(size, k)

                    if k:
                        self.unhandled_key(size, k)
        except DialogExit, e:
            return self.on_exit(e.args[0])
Exemple #13
0
 def run(self, ui, parent):
     ui.set_mouse_tracking()
     size = ui.get_cols_rows()
     overlay = urwid.Overlay(urwid.LineBox(self.view), parent, 'center',
                             self.width, 'middle', self.height)
     try:
         while True:
             canvas = overlay.render(size, focus=True)
             ui.draw_screen(size, canvas)
             keys = None
             while not keys:
                 keys = ui.get_input()
             for k in keys:
                 if urwid.is_mouse_event(k):
                     event, button, col, row = k
                     overlay.mouse_event(size,
                                         event,
                                         button,
                                         col,
                                         row,
                                         focus=True)
                 else:
                     if k == 'window resize':
                         size = ui.get_cols_rows()
                     k = self.view.keypress(size, k)
                     if k == 'esc':
                         raise DialogExit(-1)
                     if k:
                         self.unhandled_key(size, k)
     except DialogExit, e:
         return self.on_exit(e.args[0])
Exemple #14
0
 def handle_input(self, size, keys):
     for k in keys:
         if urwid.is_mouse_event(k):
             event, button, col, row = k
             self.view.mouse_event( size, event,
                 button, col, row, focus=True )
         elif k != 'window resize':
             self.view.keypress( size, k )
Exemple #15
0
	def update_search_edit(self,key):
		if not urwid.is_mouse_event(key):
			if key == 'esc':
				self.search_edit.set_edit_text("")
			elif key == 'f9':
				# TODO: Fix the need for multiple F9s to exit
				raise urwid.ExitMainLoop()
			else:
				self.search_edit.keypress((10, ), key)
		return True
Exemple #16
0
 def handle_input(self, size, keys):
     for k in keys:
         if urwid.is_mouse_event(k):
             event, button, col, row = k
             self.view.mouse_event(size,
                                   event,
                                   button,
                                   col,
                                   row,
                                   focus=True)
         elif k != 'window resize':
             self.view.keypress(size, k)
Exemple #17
0
    def unhandled_keypress(self, key: Any) -> Any:
        """Scroll page down Page Up on mouse scroll

        :param key:
        :return:
        """
        if urwid.is_mouse_event(key):
            if int(key[1]) == 4:
                self._keypress_page_up(key[2:])
            if int(key[1]) == 5:
                self._keypress_page_down(key[2:])
        return key
    def run(self):
        """
            Handle user input and display updating.
        """
        self.ui.set_mouse_tracking()

        size = self.ui.get_cols_rows()
        while True:
            canvas = self.view.render(size, focus=1)
            self.ui.draw_screen(size, canvas)
            focus, _ign = self.listbox.body.get_focus()
            keys = None
            while not keys: 
                keys = self.ui.get_input()
            for k in keys:
                if urwid.is_mouse_event(k):
                    event, button, col, row = k
                    self.view.mouse_event(size,event, button, col, row, focus=True)
                    continue

                if k == 'window resize':
                    size = self.ui.get_cols_rows()
                    k = self.view.keypress(size, k)
                    continue                
                elif k == 'tab':
                    if self.focus_part == 'body':
                        self.focus_part = 'footer'
                        self.help.set_text(self.search_legend_text)
                    else:
                        self.focus_part = 'body'
                        self.help.set_text(self.list_legend_text)
                    self.view.set_focus(self.focus_part)
                    k = self.view.keypress(size, k)
                    continue

                if self.focus_part == 'footer': # 'Search' mode?
                    if k == 'enter': # exit if single widget in list 
                        widget = self.l_walker.get_widget_if_single()
                        if widget:
                            self.focus_node = widget.node
                            return
                    k = self.view.keypress(size, k)
                    text = self.footer.get_edit_text()
                    self.l_walker.set_filter(text)
                    continue
                elif k in ('q','Q'):
                    print "\033[2J"
                    sys.exit()
                elif k == 'enter':
                    self.focus_node = focus.node
                    return
                k = self.view.keypress(size, k)
Exemple #19
0
 def update_search_edit(self, key):
     if not urwid.is_mouse_event(key):
         if key == 'esc':
             self.search_edit.set_edit_text("")
         elif key == 'f5':
             self.fetch_hosts_from_idp()
         elif key == 'f9':
             logging.info("TUI: User {0} logging out of Aker".format(
                 self.aker.user.name))
             raise urwid.ExitMainLoop()
         else:
             self.search_edit.keypress((10, ), key)
     return True
Exemple #20
0
    def _scroll_listbox(self, event, dim):

        if urwid.is_mouse_event(event):
            if event[1] is 4:
                self.content.focus_previous()
            if event[1] is 5:
                self.content.focus_next()
            return

        if event in ('down', 'page down'):
            self.content.focus_next()
        if event in ('up', 'page up'):
            self.content.focus_previous()
Exemple #21
0
    def _scroll_listbox(self, event, dim):

        if urwid.is_mouse_event(event):
            if event[1] is 4:
                self.content.focus_previous()
            if event[1] is 5:
                self.content.focus_next()
            return

        if event in ('down','page down'):
            self.content.focus_next()
        if event in ('up','page up'):
            self.content.focus_previous()
Exemple #22
0
 def _input_handler(self, key):
     if not urwid.is_mouse_event(key):
         if key == 'f5':
             self.update_lists()
         elif key == 'f9':
             logging.info("TUI: User {0} logging out of Aker".format(
                 self.user.name))
             raise urwid.ExitMainLoop()
         elif key == 'left':
             # For now if its not hostgroup window left should bring it up
             if self.topframe.get_body() != self.hostgrouplist.get_box():
                 self.current_hostgroup = ""
                 self.hostlist.empty()
                 self.header.update_text(self.header_text)
                 self.topframe.set_body(self.hostgrouplist.get_box())
         else:
             logging.debug("TUI: User {0} unhandled input : {1}".format(
                 self.user.name, key))
Exemple #23
0
	def run(self):
		"""Handle user input and display updating."""

		self.ui.set_mouse_tracking()

		size = self.ui.get_cols_rows()
		while 1:
			focus, _ign = self.listbox.body.get_focus()
			# update display of focus directory
			self.header.set_text( focus.dir )
			canvas = self.view.render( size, focus=1 )
			self.ui.draw_screen( size, canvas )
			keys = None
			while not keys: 
				keys = self.ui.get_input()
			for k in keys:
				if urwid.is_mouse_event(k):
					event, button, col, row = k
					self.view.mouse_event( size, 
						event, button, col, row,
						focus=True )
					continue

				if k == 'window resize':
					size = self.ui.get_cols_rows()
				elif k in ('q','Q'):
					return
				elif k == 'right':
					# right can behave like +
					k = "+"
				k = self.view.keypress( size, k )
				# k = unhandled key or None
				if k == 'left':
					self.move_focus_to_parent( size )
				elif k == '-':
					self.collapse_focus_parent( size )
				elif k == 'home':
					self.focus_home( size )
				elif k == 'end':
					self.focus_end( size )
Exemple #24
0
	def run(self):
		"""Handle user input and display updating."""
		
		self.ui.set_mouse_tracking()
		
		size = self.ui.get_cols_rows()
		while 1:
			focus, _ign = self.listbox.body.get_focus()
			# update display of focus directory
			#self.header.set_text( focus.dir )
			canvas = self.view.render( size, focus=1 )
			self.ui.draw_screen( size, canvas )
			keys = None
			while not keys: 
				keys = self.ui.get_input()
			for k in keys:
				if urwid.is_mouse_event(k):
					event, button, col, row = k
					self.view.mouse_event( size, 
						event, button, col, row,
						focus=True )
					continue

				if k == 'window resize':
					size = self.ui.get_cols_rows()
				elif k in ('q','Q'):
					return
				elif k == 'right':
					# right can behave like +
					k = "+"
				k = self.view.keypress( size, k )
				# k = unhandled key or None
				if k == 'left':
					self.move_focus_to_parent( size )
				elif k == '-':
					self.collapse_focus_parent( size )
				elif k == 'home':
					self.focus_home( size )
				elif k == 'end':
					self.focus_end( size )
Exemple #25
0
 def run(self):
     #self.ui.set_mouse_tracking()
     size = self.ui.get_cols_rows()
     try:
         while True:
             canvas = self.view.render( size, focus=True )
             self.ui.draw_screen( size, canvas )
             keys = None
             while not keys:
                 keys = self.ui.get_input()
             for k in keys:
                 if urwid.is_mouse_event(k):
                     event, button, col, row = k
                     self.view.mouse_event( size,
                                            event, button, col, row,
                                            focus=True)
                 if k == 'window resize':
                     size = self.ui.get_cols_rows()
                 k = self.view.keypress( size, k )
                 if k:
                     self.unhandled_key( size, k)
     except buttonpush, e:
         return self.on_exit( e.args[0] )
Exemple #26
0
 def run(self):
     self.ui.set_mouse_tracking()
     size = self.ui.get_cols_rows()
     self.done = False
     self._newline = True
     while not self.done:
         self.view.keypress(size, "ready")
         canvas = self.view.render( size, focus=1 )
         self.ui.draw_screen( size, canvas )
         for k in self.get_keys():
             if k == ":":
                 self.colon_escape()
                 break
             elif urwid.is_mouse_event(k):
                 event, button, col, row = k
                 self.view.mouse_event(
                                 size, event,
                                 button, col, row, focus=True )
             elif k == 'window resize':
                 size = self.ui.get_cols_rows()
                 self.inform("resize %s" % (str(size)))
             k = self.keypress(size, k)
             self.view.keypress( size, k )
Exemple #27
0
def run():

    global selection
    global ui

    ui.set_mouse_tracking()
    dim = ui.get_cols_rows()

    widget = urwid.Filler(FileChooser(height=10, attr=("menu", "menuf")))
    widget = urwid.AttrWrap(widget, "bg")

    keys = True

    while True:
        if keys:
            ui.draw_screen(dim, widget.render(dim, True))

        keys = ui.get_input()

        if widget.body.b_pressed == "OK":
            selection = "You selected: " + widget.body.selection
            return widget.body.selection

        if widget.body.b_pressed == "Cancel":
            selection = "No file selected."
            return

        if "window resize" in keys:
            dim = ui.get_cols_rows()

        for k in keys:
            if urwid.is_mouse_event(k):
                event, button, col, row = k
                widget.mouse_event(dim, event, button, col, row, focus=True)
            else:
                widget.keypress(dim, k)
Exemple #28
0
def run():

   global selection
   global ui

   ui.set_mouse_tracking()
   dim = ui.get_cols_rows()

   widget = urwid.Filler(FileChooser(height=10, attr=("menu", "menuf")))
   widget = urwid.AttrWrap(widget, "bg")

   keys = True

   while True:
       if keys:
           ui.draw_screen(dim, widget.render(dim, True))

       keys = ui.get_input()

       if widget.body.b_pressed == "OK":
           selection = "You selected: " + widget.body.selection
           return widget.body.selection

       if widget.body.b_pressed == "Cancel":
           selection = "No file selected."
           return

       if "window resize" in keys:
           dim = ui.get_cols_rows()

       for k in keys:
           if urwid.is_mouse_event(k):
               event, button, col, row = k
               widget.mouse_event(dim, event, button, col, row, focus=True)
           else:
               widget.keypress(dim, k)
Exemple #29
0
 def run(self):
     """Handle user input and display updating."""
     try:
         self.ui.tty_signal_keys('undefined', 'undefined', 'undefined', 'undefined', 'undefined')
         self.ui.set_mouse_tracking()
         self.size = self.ui.get_cols_rows()
         while 1:          
             focus, _ign = self.listbox.body.get_focus()
             self.header_text = [
         ('footer_msg', "BlackHole (v%s)" % black_hole.get_version()) , " ",
         ('footer_msg', _("User:"******" ",
         ('key', "%s" % self.user.getFullName()), " ",
         ('footer_msg', _("- Selected:")) , " ",
         ('key', "%s" % focus.description),
         ]
             self.header.set_text(self.header_text)
             canvas = self.view.render(self.size, focus=1)
             self.ui.draw_screen(self.size, canvas)
             keys = None
             while not keys:
                 keys = self.ui.get_input()
             for k in keys:
                 if urwid.is_mouse_event(k):
                     event, button, col, row = k
                     self.view.mouse_event(self.size, event, button, col, row, focus=True)
                     _widget, _tupla = self.listbox.get_focus()
                     if isinstance(_widget, HostTree):
                         if _widget.lastWasDoubleClick() and event == 'mouse press':
                             self.validate(_widget)
                 else:
                     if k == 'window resize':
                         self.size = self.ui.get_cols_rows()
                     elif k in ('q', 'Q'):
                         self.quit = True
                         self.stopUI()
                         return
                     elif k in ('c', 'C'):
                         if self.blackHole.settings.chat_enabled:
                             self.stopUI()
                             self.startChat()
                             self.startUI()
                         Loger.write(_("Chat not Enabled"))
                     elif k == 'right':
                         # right can behave like +
                         k = "+"
                     k = self.view.keypress(self.size, k)
                     if k == "enter":
                         _widget, _tupla = self.listbox.get_focus()
                         if isinstance(_widget, HostTree):
                             self.validate(_widget)
                         else:
                             continue
                     elif k == 'left':
                         self.move_focus_to_parent(self.size)
                     elif k == '-':
                         self.collapse_focus_parent(self.size)
                     elif k == 'home':
                         self.focus_home(self.size)
                     elif k == 'end':
                         self.focus_end(self.size)
     except Exception as e:
             raise Exception(e.message)
Exemple #30
0
 def handle_key(self, key):
     if not urwid.is_mouse_event(key):
         if key in QUIT_KEYS:
             self.blackhole.quit()
     return True
Exemple #31
0
 def keypress(self, pos, key):
     key = Binder.keypress(self._binder, pos, key)
     if key is not None and not urwid.is_mouse_event(key):
         key = urwid.Edit.keypress(self, pos, key)
     return key
Exemple #32
0
 def keypress(self, pos, key):
     key = Binder.keypress(self._binder, pos, key)
     if key is not None and not urwid.is_mouse_event(key):
         key = urwid.Edit.keypress(self, pos, key)
     return key
Exemple #33
0
 def handle_key(self, key):
     if not urwid.is_mouse_event(key):
         if key in QUIT_KEYS:
             self.blackhole.quit()
     return True
Exemple #34
0
 def _button_events_process(self, event, dim):
     if urwid.is_mouse_event(event):
         result = self.mouse_event(dim, event[0], event[1],
                                  event[2], event[3], True)
     else:
         self.keypress(dim, event)
Exemple #35
0
 def _button_events_process(self, event, dim):
     if urwid.is_mouse_event(event):
         result = self.mouse_event(dim, event[0], event[1], event[2],
                                   event[3], True)
     else:
         self.keypress(dim, event)
Exemple #36
0
 def run(self):
     """Handle user input and display updating."""
     try:
         self.ui.tty_signal_keys('undefined', 'undefined', 'undefined', 'undefined', 'undefined')
         self.ui.set_mouse_tracking()
         self.size = self.ui.get_cols_rows()
         while 1:
             focus, _ign = self.listbox.body.get_focus()
             self.header_text = [
                 ('footer_msg', "BlackHole (v%s)" % blackhole.get_version()), " ",
                 ('footer_msg', _("User:"******" ",
                 ('key', "%s" % BlackHoleBrowser.blackHole.data.user.getFullName()), " ",
                 ('footer_msg', _("- Selected:")), " ",
                 ('key', "%s" % focus.description), ]
             self.header.set_text(self.header_text)
             canvas = self.view.render(self.size, focus=1)
             self.ui.draw_screen(self.size, canvas)
             keys = None
             while not keys:
                 keys = self.ui.get_input()
             for k in keys:
                 if urwid.is_mouse_event(k):
                     event, button, col, row = k
                     self.view.mouse_event(self.size, event, button, col, row, focus=True)
                     _widget, _tupla = self.listbox.get_focus()
                     if isinstance(_widget, HostTree):
                         if _widget.lastWasDoubleClick() and event == 'mouse press':
                             self.validate(_widget)
                 else:
                     if k == 'window resize':
                         self.size = self.ui.get_cols_rows()
                     elif k in ('q', 'Q'):
                         self.quit = True
                         self.stopUI()
                         return
                     elif k in ('c', 'C'):
                         if BlackHoleBrowser.blackHole.settings.chat_enabled:
                             self.stopUI()
                             self.startChat()
                             self.startUI()
                         Loger.write(_("Chat not Enabled"))
                     elif k == 'right':
                         # right can behave like +
                         k = "+"
                     k = self.view.keypress(self.size, k)
                     if k == "enter":
                         _widget, _tupla = self.listbox.get_focus()
                         if isinstance(_widget, HostTree):
                             self.validate(_widget)
                         else:
                             continue
                     elif k == 'left':
                         self.move_focus_to_parent(self.size)
                     elif k == '-':
                         self.collapse_focus_parent(self.size)
                     elif k == 'home':
                         self.focus_home(self.size)
                     elif k == 'end':
                         self.focus_end(self.size)
     except Exception as e:
         raise e