def __init__(self, screen, venv_name, venv_count, index): ''' Create a new frame :param screen: The screen instance :type screen: :class:`asciimatics.screen.Screen` :param venv_name: The name of this environment, e.g. py27 :type venv_name: ``str`` :param venv_count: How many environments are there? :type venv_count: ``int`` :param index: which environment index is this :type index: ``int`` ''' super(VirtualEnvironmentFrame, self).__init__( screen, screen.height // 2, screen.width // venv_count, x=index * (screen.width // venv_count), has_border=True, hover_focus=True, title=venv_name) self.name = venv_name self._screen = screen # Draw a box for the environment task_layout = widgets.Layout([10], fill_frame=False) self.add_layout(task_layout) completed_layout = widgets.Layout([10], fill_frame=False) self.add_layout(completed_layout) self._task_view = widgets.ListBox( 10, [], name="Tasks", label="Running") self._completed_view = widgets.ListBox( 10, [], name="Completed", label="Completed") task_layout.add_widget(self._task_view) completed_layout.add_widget(self._completed_view) self.fix()
def __init__(self, screen, data): super().__init__(screen, screen.height, screen.width, hover_focus=True, can_scroll=True, reduce_cpu=True, data=data, title="Communicator") self.messages = data['messages'] # Messages server section remote = RemoteManager(address=('127.0.0.1', 5000), authkey=b'123') remote.connect() self.message_server = remote.MessageServer() self.messages_len = self.message_server.messages_len() # Creating layout section self.msg_lay = widgets.Layout([100], fill_frame=True) self.add_layout(self.msg_lay) input_lay = widgets.Layout([100]) self.add_layout(input_lay) input_text = widgets.TextBox(5, name='input_text') input_lay.add_widget(input_text) menu_lay = widgets.Layout([ 1, 1, ]) self.add_layout(menu_lay) menu_lay.add_widget( widgets.Label("Press Enter to send" " or Tab to focus Quit button"), 0) menu_lay.add_widget(widgets.Button("Quit", self._quit), 1) self.fix() # monitor thread start self._monitor_thread()
def __init__(self, screen, args): ''' Create a new frame :param screen: The screen instance :type screen: :class:`asciimatics.screen.Screen` :param args: The tox arguments :type args: ``object`` ''' super(RetoxFrame, self).__init__( screen, screen.height // 5, screen.width, x=0, y=0, has_border=True, hover_focus=True, title='Retox') self._screen = screen self._status = 'Starting' self._last_result = '' # Draw a box for the environment header_layout = widgets.Layout([10], fill_frame=False) self.add_layout(header_layout) self._status_label = widgets.Label('Status') header_layout.add_widget(self._status_label) self._last_result_label = widgets.Label('Last Result') header_layout.add_widget(self._last_result_label) if args.option.watch: self._watch_label = widgets.Label('Watching : %s ' % ', '.join(args.option.watch)) header_layout.add_widget(self._watch_label) if args.option.exclude: self._exclude_label = widgets.Label( 'Excluding : %s ' % args.option.exclude) header_layout.add_widget(self._exclude_label) self._commands_label = widgets.Label('Commands : (q) quit (b) build') header_layout.add_widget(self._commands_label) self.fix() self.refresh()
def __init__(self, screen, model): super(TestView, self).__init__(screen, width=int(screen.width * .75), height=screen.height, on_load=self._reload_map, hover_focus=True, title="World Map", has_border=False) self.palette['background'] = (Screen.COLOUR_WHITE, Screen.A_NORMAL, Screen.COLOUR_BLACK) self.palette['edit_text'] = (Screen.COLOUR_WHITE, Screen.A_BOLD, Screen.COLOUR_BLACK) self.palette['label'] = (Screen.COLOUR_WHITE, Screen.A_BOLD, Screen.COLOUR_BLACK) self._model = model # self._map_label = widgets.Label(label=f"Selected: ({model.selected_tile.x}, {model.selected_tile.y})") self._map_console = ConsoleView(screen.height - self._model.height - 1) self._map_view = VoromapView(model, self._map_console) self._text_input = TextInputView(model, self._map_view, self._map_console) layout = widgets.Layout([1], fill_frame=True) # layout2 = widgets.Layout([1]) self.add_layout(layout) # self.add_layout(layout2) layout.add_widget(self._map_view) layout.add_widget(self._map_console) layout.add_widget(self._text_input) # layout2.add_widget(widgets.Button("Quit", self._quit), 0) # self._map_view.focus() self.fix()
def __init__(self, screen): super(get_input, self).__init__(screen, screen.height, screen.width, title="Calibrate!") self.number_keys = [ ord('1'), ord('2'), ord('3'), ord('4'), ord('5'), ord('6'), ord('7'), ord('8'), ord('9'), ord('0'), ord('.') ] layout1 = am_widgets.Layout([1], fill_frame=False) layout2 = am_widgets.Layout([2, 8], fill_frame=False) layout3 = am_widgets.Layout([91, 9], fill_frame=False) self._nav = am_widgets.Label(self.nav) self._hl = am_widgets.Divider() self._blankline = am_widgets.Divider(height=1, draw_line=False) self._psylab = am_widgets.Label(u"psylab") # The listbox takes up 1 more line than is visible, because quit is added after # the height is computed. So setting height to FILL_FRAME pushes the bottom line # of the visible screen. There are 9 additional lines on the screen other than # the listbox, so subtract 9 from screen. list_height = self._screen.height - 9 self._list = am_widgets.ListBox( list_height, # am_widgets.Widget.FILL_FRAME, options=[], on_change=self._on_change, on_select=self._on_select, name="list_main", ) self.enter_key = u"\u21B2" self.keys = [] n = 0 has_val = False for val in self.options: if len(val['desc']) > n: n = len(val['desc']) if val['type'] not in ["frame", "func"]: has_val = True fmt_key = u" {}{} : " fmt_desc = u"{{:{:}}}".format(n) fmt_cur_ = u" {}" for val in self.options: val["fmt_key"] = fmt_key val["fmt_desc"] = fmt_desc.format(val["desc"]) if val.has_key("cur_str"): val["fmt_cur"] = fmt_cur_.format(val["cur_str"]) else: val["fmt_cur"] = "" self.keys.append(ord(val["key"])) if has_val: expl = u"Option : " + fmt_desc.format( "Explanation") + u" [value]" else: expl = u"Option : Explanation" self._explain = am_widgets.Label(expl) self.instructions_no_opt = u"Choose an option" self.instructions_opt = u"Choose an option or type value (blank=default), enter to update." self._instructions = am_widgets.Label(self.instructions_no_opt) self._input_label = am_widgets.Label("Enter a value: ") self._input = am_widgets.Text(name="input") self.add_layout(layout1) self.add_layout(layout2) self.add_layout(layout3) layout1.add_widget(self._nav) layout1.add_widget(self._hl) layout1.add_widget(self._explain) layout1.add_widget(self._blankline) layout1.add_widget(self._list) layout2.add_widget(self._input_label) layout2.add_widget(self._input, column=1) layout2.add_widget(self._blankline) layout3.add_widget(self._instructions) layout3.add_widget(self._psylab, column=1) self.fix() self._input.disabled = True self._input_label.disabled = True self.current_type = None # self._list.value = 0 # self._list._on_select() # Add my own colour palette self.palette = defaultdict( lambda: (am_screen.Screen.COLOUR_WHITE, am_screen.Screen.A_NORMAL, am_screen.Screen.COLOUR_BLACK)) for key in ["selected_focus_field", "label"]: self.palette[key] = (am_screen.Screen.COLOUR_WHITE, am_screen.Screen.A_BOLD, am_screen.Screen.COLOUR_BLACK) self.palette["title"] = (am_screen.Screen.COLOUR_BLACK, am_screen.Screen.A_BOLD, am_screen.Screen.COLOUR_WHITE) self.palette["disabled"] = (am_screen.Screen.COLOUR_BLACK, am_screen.Screen.A_NORMAL, am_screen.Screen.COLOUR_BLACK)
def displayVerbose(screen, sel: selectors.DefaultSelector, data, poll): from asciimatics.screen import Screen, StopApplication, NextScene, ResizeScreenError from asciimatics.scene import Scene import asciimatics.widgets as Widgets from asciimatics.effects import Matrix, _Trail, randint from time import time # It was too good to not include class _BioTrail(_Trail): def update(self, reseed): chars = ['A', 'G', 'C', 'T'] if self._clear: for i in range(0, 3): self._screen.print_at(" ", self._x, self._screen.start_line + self._y + i) self._maybe_reseed(reseed) else: for i in range(0, 3): self._screen.print_at(chars[randint(0,3)], self._x, self._screen.start_line + self._y + i, Screen.COLOUR_GREEN) for i in range(4, 6): self._screen.print_at(chars[randint(0,3)], self._x, self._screen.start_line + self._y + i, Screen.COLOUR_GREEN, Screen.A_BOLD) self._maybe_reseed(reseed) class BioMatrix(Matrix): def reset(self): self._chars = [_BioTrail(self._screen, x) for x in range(self._screen.width)] Widgets.Frame.palette['section_header'] = (Screen.COLOUR_GREEN, Screen.A_UNDERLINE, Screen.COLOUR_BLUE) window = Widgets.Frame(screen, 30, 200, title="ProDuSe V2.0", data=data) scene = Scene([BioMatrix(screen), window]) layout = Widgets.Layout([1]) window.add_layout(layout) outputFile = Widgets.Text('Output', 'output') outputFile.disabled = True layout.add_widget(outputFile) # Trim label = Widgets.Label("Trim:") label.custom_colour = 'section_header' layout.add_widget(label) trim = Widgets.TextBox(1, name='trim') trim.disabled = True layout.add_widget(trim) layout.add_widget(Widgets.Divider(False)) #BWA label = Widgets.Label("BWA:") label.custom_colour = 'section_header' layout.add_widget(label) box = Widgets.TextBox(len(data['bwa']), name='bwa') box.disabled = True layout.add_widget(box) layout.add_widget(Widgets.Divider(False)) # Clip label = Widgets.Label("Clip:") label.custom_colour = 'section_header' layout.add_widget(label) box = Widgets.TextBox(1, name='clip') box.disabled = True layout.add_widget(box) layout.add_widget(Widgets.Divider(False)) # Collapse label = Widgets.Label("Collapse:") label.custom_colour = 'section_header' layout.add_widget(label) box = Widgets.TextBox(1, name='collapse') box.disabled = True layout.add_widget(box) layout.add_widget(Widgets.Divider(False)) window.fix() screen.set_scenes([scene]) screen.draw_next_frame() lastTime = time() while poll(): for key, mask in sel.select(0.5): key.data.pop(0) key.data.append(stripDecorators.sub(lambda m: ' ' if m.group(0) == '\t' else '', key.fileobj.readline().decode())) if time() - lastTime > 1/20: # Dump output until a reasonable amount of time has passed to avoid the buffer filling and slowing down everything if screen.has_resized(): raise ResizeScreenError('') window.data = data screen.force_update() screen.draw_next_frame() lastTime = time() raise StopApplication('')