Ejemplo n.º 1
0
    def __init__(self, screen, plotboss, name="My Form"):
        super(PlotJobFrame, self).__init__(screen,
                                           screen.height,
                                           screen.width,
                                           has_border=False,
                                           name=name)
        # Internal state required for doing periodic updates
        self._last_frame = 0
        self._reverse = True
        self.plotboss = plotboss

        # Create the basic form layout...
        layout = Layout([1], fill_frame=False)
        self._header = TextBox(4, as_string=True)
        self._header.disabled = True
        self._header.custom_colour = "label"
        self._list = MultiColumnListBox(
            11,  #Widget.FILL_FRAME,
            ["<6", ">12", ">12", "<40", ">8", ">8", ">10", "<32", "100%"],
            [],
            titles=[
                "INDEX", "JOB_ID", "PLOT_ID", "TMP_DIR", "PID", "PHASE",
                "ELAPSED", "PROGRESS", "FINAL_DIR"
            ],
            name="mc_list",
            parser=AsciimaticsParser())
        self._drive_list = MultiColumnListBox(
            Widget.FILL_FRAME, ["<40", ">12", ">10", ">10", "<32", "<10"], [],
            titles=["DRIVE", "TEMP/FINAL", "TOTAL", "FREE", "USAGE", "JOBS"],
            name="drive_list",
            parser=AsciimaticsParser())
        self._completed_info = TextBox(4, as_string=True)
        self._completed_info.disabled = True
        self._sys_info = TextBox(4, as_string=True)
        self._sys_info.disabled = True
        self.add_layout(layout)
        layout2 = Layout([1], fill_frame=True)
        self.add_layout(layout2)
        layout.add_widget(self._header)
        layout.add_widget(self._list)
        layout2.add_widget(self._drive_list)
        layout2.add_widget(self._completed_info)
        layout2.add_widget(self._sys_info)
        layout2.add_widget(Label("Press `r` to toggle order, or `q` to quit."))
        self.fix()

        # Add my own colour palette
        self.palette = defaultdict(lambda: (Screen.COLOUR_WHITE, Screen.
                                            A_NORMAL, Screen.COLOUR_BLACK))
        for key in ["selected_focus_field", "label"]:
            self.palette[key] = (Screen.COLOUR_WHITE, Screen.A_BOLD,
                                 Screen.COLOUR_BLACK)
        self.palette["title"] = (Screen.COLOUR_BLACK, Screen.A_NORMAL,
                                 Screen.COLOUR_WHITE)
Ejemplo n.º 2
0
 def test_asciimatics_parser(self):
     """
     Check AsciimaticsParser works as expected.
     """
     parser = AsciimaticsParser()
     tokens = parser.parse("a${1}b${2,1}c${3,2,4}de", None)
     self.assertEquals(next(tokens), ("a", (None, None, None), 0))
     self.assertEquals(next(tokens), ("b", (1, 0, None), 1))
     self.assertEquals(next(tokens), ("c", (2, 1, None), 6))
     self.assertEquals(next(tokens), ("d", (3, 2, 4), 13))
     self.assertEquals(next(tokens), ("e", (3, 2, 4), 22))
     with self.assertRaises(StopIteration):
         next(tokens)
Ejemplo n.º 3
0
 def test_asciimatics_parser(self):
     """
     Check AsciimaticsParser works as expected.
     """
     parser = AsciimaticsParser()
     parser.reset("a${1}b${2,1}c${3,2,4}de${7}", None)
     tokens = parser.parse()
     self.assertEquals(next(tokens), (0, Parser.DISPLAY_TEXT, "a"))
     self.assertEquals(next(tokens),
                       (1, Parser.CHANGE_COLOURS, (1, 0, None)))
     self.assertEquals(next(tokens), (1, Parser.DISPLAY_TEXT, "b"))
     self.assertEquals(next(tokens),
                       (6, Parser.CHANGE_COLOURS, (2, 1, None)))
     self.assertEquals(next(tokens), (6, Parser.DISPLAY_TEXT, "c"))
     self.assertEquals(next(tokens), (13, Parser.CHANGE_COLOURS, (3, 2, 4)))
     self.assertEquals(next(tokens), (13, Parser.DISPLAY_TEXT, "d"))
     self.assertEquals(next(tokens), (22, Parser.DISPLAY_TEXT, "e"))
     self.assertEquals(next(tokens),
                       (23, Parser.CHANGE_COLOURS, (7, 0, None)))
     with self.assertRaises(StopIteration):
         next(tokens)
Ejemplo n.º 4
0
    def __init__(self, screen, order_book: LocalOrderBook):
        super(OrderBookFrame, self).__init__(screen,
                                             screen.height,
                                             screen.width,
                                             has_border=False,
                                             name="Order Book")
        # Internal state required for doing periodic updates
        self._last_frame = 0
        self._ob = order_book
        self._level = screen.height // 2 - 1

        # Create the basic form layout...
        layout = Layout([1], fill_frame=True)
        self._header = TextBox(1, as_string=True)
        self._header.disabled = True
        self._header.custom_colour = "label"
        self._asks = MultiColumnListBox(screen.height // 2,
                                        ["<25%", "<25%", "<25%"], [],
                                        titles=["Level", "Price", "Amount"],
                                        name="ask_book",
                                        parser=AsciimaticsParser())
        self._bids = MultiColumnListBox(screen.height // 2,
                                        ["<25%", "<25%", "<25%"], [],
                                        titles=["Level", "Price", "Amount"],
                                        name="bid_book",
                                        parser=AsciimaticsParser())
        self.add_layout(layout)
        layout.add_widget(self._header)
        layout.add_widget(self._asks)
        layout.add_widget(self._bids)
        self.fix()

        # Add my own colour palette
        self.palette = defaultdict(lambda: (Screen.COLOUR_WHITE, Screen.
                                            A_NORMAL, Screen.COLOUR_BLACK))
        for key in ["selected_focus_field", "label"]:
            self.palette[key] = (Screen.COLOUR_WHITE, Screen.A_BOLD,
                                 Screen.COLOUR_BLACK)
        self.palette["title"] = (Screen.COLOUR_BLACK, Screen.A_NORMAL,
                                 Screen.COLOUR_WHITE)
Ejemplo n.º 5
0
    def draw(self) -> None:
        layout = Layout([100])
        self.add_layout(layout)

        self.recap_text_box = TextBox(1, parser=AsciimaticsParser())
        self.recap_text_box.disabled = True
        layout.add_widget(self.recap_text_box)

        layout.add_widget(Divider())

        self.run_name_widget = Text(name=RUN_NAME_KEY, label=RecapForm.RUN_NAME)
        self.run_name_widget.value = ""
        layout.add_widget(self.run_name_widget)

        self.fix()
Ejemplo n.º 6
0
    def __init__(self, screen):
        super(DemoFrame, self).__init__(screen,
                                        screen.height,
                                        screen.width,
                                        has_border=False,
                                        name="My Form")
        # Internal state required for doing periodic updates
        self._last_frame = 0
        self._sort = 5
        self._reverse = True

        # Create the basic form layout...
        layout = Layout([1], fill_frame=True)
        self._header = TextBox(1, as_string=True)
        self._header.disabled = True
        self._header.custom_colour = "label"
        self._list = MultiColumnListBox(
            Widget.FILL_FRAME,
            [">6", 10, ">4", ">7", ">7", ">5", ">5", "100%"], [],
            titles=["PID", "USER", "NI", "VIRT", "RSS", "CPU%", "MEM%", "CMD"],
            name="mc_list",
            parser=AsciimaticsParser())
        self.add_layout(layout)
        layout.add_widget(self._header)
        layout.add_widget(self._list)
        layout.add_widget(
            Label(
                "Press `<`/`>` to change sort, `r` to toggle order, or `q` to quit."
            ))
        self.fix()

        # Add my own colour palette
        self.palette = defaultdict(lambda: (Screen.COLOUR_WHITE, Screen.
                                            A_NORMAL, Screen.COLOUR_BLACK))
        for key in ["selected_focus_field", "label"]:
            self.palette[key] = (Screen.COLOUR_WHITE, Screen.A_BOLD,
                                 Screen.COLOUR_BLACK)
        self.palette["title"] = (Screen.COLOUR_BLACK, Screen.A_NORMAL,
                                 Screen.COLOUR_WHITE)
Ejemplo n.º 7
0
 def __init__(self, screen):
     super(DemoFrame, self).__init__(screen,
                                     int(screen.height * 2 // 3),
                                     int(screen.width * 2 // 3),
                                     data=form_data,
                                     has_shadow=True,
                                     name="My Form")
     layout = Layout([1, 18, 1])
     self.add_layout(layout)
     self._reset_button = Button("Reset", self._reset)
     layout.add_widget(Label("Group 1:"), 1)
     layout.add_widget(
         TextBox(5,
                 label="My First Box:",
                 name="TA",
                 parser=AsciimaticsParser(),
                 line_wrap=True,
                 on_change=self._on_change), 1)
     layout.add_widget(
         Text(label="Alpha:",
              name="TB",
              on_change=self._on_change,
              validator="^[a-zA-Z]*$"), 1)
     layout.add_widget(
         Text(label="Number:",
              name="TC",
              on_change=self._on_change,
              validator="^[0-9]*$",
              max_length=4), 1)
     layout.add_widget(
         Text(label="Email:",
              name="TD",
              on_change=self._on_change,
              validator=self._check_email), 1)
     layout.add_widget(Text(label="Readonly:", name="RO", readonly=True), 1)
     layout.add_widget(Divider(height=2), 1)
     layout.add_widget(Label("Group 2:"), 1)
     layout.add_widget(
         RadioButtons([("Option 1", 1), ("Option 2", 2), ("Option 3", 3)],
                      label="A Longer Selection:",
                      name="Things",
                      on_change=self._on_change), 1)
     layout.add_widget(
         CheckBox("Field 1",
                  label="A very silly long name for fields:",
                  name="CA",
                  on_change=self._on_change), 1)
     layout.add_widget(
         CheckBox("Field 2", name="CB", on_change=self._on_change), 1)
     layout.add_widget(
         CheckBox("Field 3", name="CC", on_change=self._on_change), 1)
     layout.add_widget(
         DatePicker("Date",
                    name="DATE",
                    year_range=range(1999, 2100),
                    on_change=self._on_change), 1)
     layout.add_widget(
         TimePicker("Time",
                    name="TIME",
                    on_change=self._on_change,
                    seconds=True), 1)
     layout.add_widget(
         Text("Password",
              name="PWD",
              on_change=self._on_change,
              hide_char="*"), 1)
     layout.add_widget(
         DropdownList([
             ("Item 1", 1),
             ("Item 2", 2),
             ("Item 3", 3),
             ("Item 3", 4),
             ("Item 3", 5),
             ("Item 3", 6),
             ("Item 3", 7),
             ("Item 3", 8),
             ("Item 3", 9),
             ("Item 3", 10),
             ("Item 3", 11),
             ("Item 3", 12),
             ("Item 3", 13),
             ("Item 3", 14),
             ("Item 3", 15),
             ("Item 3", 16),
             ("Item 4", 17),
             ("Item 5", 18),
         ],
                      label="Dropdown",
                      name="DD",
                      on_change=self._on_change), 1)
     layout.add_widget(Divider(height=3), 1)
     layout2 = Layout([1, 1, 1])
     self.add_layout(layout2)
     layout2.add_widget(self._reset_button, 0)
     layout2.add_widget(Button("View Data", self._view), 1)
     layout2.add_widget(Button("Quit", self._quit), 2)
     self.fix()
Ejemplo n.º 8
0
    def test_coloured_text(self):
        """
        Check ColouredText works as expected.
        """
        # No specified start colour
        ct = ColouredText("Some ${1}text", AsciimaticsParser())
        self.assertEquals(str(ct), "Some text")
        self.assertEquals(ct.raw_text, "Some ${1}text")
        self.assertEquals(len(ct), 9)
        self.assertEquals(ct.first_colour, None)
        self.assertEquals(ct.last_colour, (1, 0, None))
        self.assertEquals(ct.colour_map[0], (None, None, None))

        # Specified start colour
        ct = ColouredText("Some ${1}text",
                          AsciimaticsParser(),
                          colour=(2, 1, 0))
        self.assertEquals(str(ct), "Some text")
        self.assertEquals(ct.raw_text, "Some ${1}text")
        self.assertEquals(len(ct), 9)
        self.assertEquals(ct.first_colour, (2, 1, 0))
        self.assertEquals(ct.last_colour, (1, 0, None))
        self.assertEquals(ct.colour_map[0], (2, 1, 0))

        # Slicing
        self.assertEquals(ct[0], ColouredText("S", AsciimaticsParser()))
        self.assertEquals(ct[1:-1],
                          ColouredText("ome ${1}tex", AsciimaticsParser()))
        self.assertNotEquals(ct[1:-1],
                             ColouredText("ome tex", AsciimaticsParser()))
        self.assertEquals(ct[100:101], ColouredText("", AsciimaticsParser()))

        # Adding
        self.assertEquals(
            ColouredText("Some ", AsciimaticsParser()) +
            ColouredText("${3}Text", AsciimaticsParser()),
            ColouredText("Some ${3}Text", AsciimaticsParser()))

        # Joining
        self.assertEquals(
            ColouredText(" ", AsciimaticsParser()).join([
                ColouredText("Hello", AsciimaticsParser()),
                ColouredText("${3}World", AsciimaticsParser())
            ]), ColouredText("Hello ${3}World", AsciimaticsParser()))

        # Bad data comparisons
        self.assertNotEquals(ct, 1)
        self.assertFalse(ct == "Some text")

        # Startswith
        self.assertTrue(ct.startswith("Some"))
Ejemplo n.º 9
0
    def __init__(self, screen, worker_info_manager: WorkerInfoManager):
        super(WorkerInfoScene, self).__init__(screen,
                                              screen.height,
                                              screen.width,
                                              title='Worker Info',
                                              reduce_cpu=False)

        self._last_frame = 0
        self._model = worker_info_manager
        self._model._refresh()
        self.data = {'updated_at': str(dt.now())}
        self.palette = PALETTE

        rollup_layout = Layout([100])
        self.add_layout(rollup_layout)
        self.rollup_widget = MultiColumnListBox(round(screen.height * .05),
                                                ['12%'] * 8, [],
                                                titles=[
                                                    'Worker Count',
                                                    'Average CPU',
                                                    'Average Memory',
                                                    'Total Fds',
                                                    'Total Executing',
                                                    'Total In Mem',
                                                    'Total Ready',
                                                    'Total In Flight',
                                                ],
                                                parser=AsciimaticsParser())
        rollup_layout.add_widget(self.rollup_widget)

        div_layout = Layout([100])
        self.add_layout(div_layout)
        div_layout.add_widget(Divider())

        column_layout = Layout([100])
        self.add_layout(column_layout)
        self.worker_widget = MultiColumnListBox(
            round(screen.height * .95),
            [
                '20%',
                '10%',
                '20%',
                '10%',
                '10%',
                '10%',
                '10%',
                '10%',
            ],
            [],
            titles=[
                'Worker Address',
                'CPU',
                'Memory',
                'File Descriptors',
                'Executing',
                'In Memory',
                'Ready',
                'In Flight',
            ],
            parser=AsciimaticsParser(),
        )
        column_layout.add_widget(self.worker_widget)

        self.fix()