Exemplo n.º 1
0
    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()
Exemplo n.º 2
0
    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()
Exemplo n.º 3
0
    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()
Exemplo n.º 4
0
    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()
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
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('')