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)
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
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
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)
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] )
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)
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()
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]
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
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]
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])
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])
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 )
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
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)
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)
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
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()
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()
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))
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 )
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 )
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] )
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 )
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)
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)
def handle_key(self, key): if not urwid.is_mouse_event(key): if key in QUIT_KEYS: self.blackhole.quit() return True
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
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)
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