예제 #1
0
    def __init__(self, screen):
        super(GameView, self).__init__(screen,
                                       40,
                                       100,
                                       on_load=self._onload,
                                       hover_focus=True,
                                       can_scroll=False,
                                       title="Game Page")
        self.messages = []

        main_layout = Layout([7, 1, 2])
        self.add_layout(main_layout)
        self.my_label = Label("")  # my nick name
        main_layout.add_widget(self.my_label, 0)
        main_layout.add_widget(Label("messages:"), 0)
        msg_list = ListBox(30, self.messages, add_scroll_bar=True)
        # msg_list.disabled = True
        main_layout.add_widget(msg_list, 0)
        main_layout.add_widget(VerticalDivider(), 1)
        main_layout.add_widget(Label("online users:"), 2)
        main_layout.add_widget(Button("refresh", self._refresh_users), 2)
        global user_list
        self.list_users = ListBox(30, user_list,
                                  # [("老王的甜糕", 1), ("阿故的植物", 2), ("怡宝的鸭子", 3), ("凉妹子的iPad Mini", 4),
                                  #  ("当归的长发", 5),
                                  #  ],
                                  on_select=self._on_user_select)
        main_layout.add_widget(self.list_users, 2)

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

        ctl_layout = Layout([1, 1, 1, 1])
        self.add_layout(ctl_layout)
        # TODO
        ctl_layout.add_widget(Button("战斗", self._fight), 0)
        ctl_layout.add_widget(Button("背包", self._package), 1)
        ctl_layout.add_widget(Button("信息", self._info), 2)
        ctl_layout.add_widget(Button("退出", self._quit), 3)
        # ctl_layout.add_widget(Button("test", None))
        self.fix()
예제 #2
0
    def __init__(self, screen: Screen, on_close, default_value: str, mode):
        """
        Parameters
        ----------
        on_close : (value: str, use_reg: bool, hide: bool, auto_ng_id: bool, scope_idx: int) -> None
                   | (value: str, use_reg: bool, hide: bool, scope_idx: int) -> None
                   | (value: str, use_reg: bool, scope_idx: int) -> None
                   scope_idx : 0 - 全ての板
                               1 - この板のみ
                               2 - このスレのみ
        mode : "name" | "id" | "word" | "title"
        """

        super().__init__(screen,
                         screen.height,
                         screen.width,
                         hover_focus=True,
                         can_scroll=False,
                         has_border=True,
                         is_modal=True)

        self.set_theme("user_theme")

        self._on_close = on_close
        self._mode = mode

        if mode == "title":
            self._scope_radio = RadioButtons([("全ての板", 0), ("この板のみ", 1)])
        else:
            self._scope_radio = RadioButtons([("全ての板", 0), ("この板のみ", 1),
                                              ("このスレのみ", 2)])

        self._use_reg_chk = CheckBox("")

        if mode != "title":
            self._hide_chk = CheckBox("")

        if mode == "name" or mode == "word":
            self._auto_ng_id_chk = CheckBox("")

        self._value_box = TextBox(Widget.FILL_COLUMN, as_string=True)
        self._value_box.value = default_value

        self._save_btn = Button("Save", self._save_clicked)
        self._cancel_btn = Button("Cancel", lambda: self.disappaer())

        layout = Layout([10, 3, 87])
        self.add_layout(layout)
        layout.add_widget(Label("scope"), 0)
        layout.add_widget(VerticalDivider(), 1)
        layout.add_widget(self._scope_radio, 2)

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

        layout = Layout([10, 3, 87])
        self.add_layout(layout)
        layout.add_widget(Label("use_reg"), 0)
        layout.add_widget(VerticalDivider(), 1)
        layout.add_widget(self._use_reg_chk, 2)

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

        if mode != "title":
            layout = Layout([10, 3, 87])
            self.add_layout(layout)
            layout.add_widget(Label("hide"), 0)
            layout.add_widget(VerticalDivider(), 1)
            layout.add_widget(self._hide_chk, 2)

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

        if mode == "name" or mode == "word":
            layout = Layout([10, 3, 87])
            self.add_layout(layout)
            layout.add_widget(Label("auto_ng_id"), 0)
            layout.add_widget(VerticalDivider(), 1)
            layout.add_widget(self._auto_ng_id_chk, 2)

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

        layout = Layout([10, 3, 87], fill_frame=True)
        self.add_layout(layout)
        layout.add_widget(Label("value"), 0)
        layout.add_widget(VerticalDivider(), 1)
        layout.add_widget(self._value_box, 2)

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

        layout = Layout([5, 5])
        self.add_layout(layout)
        layout.add_widget(self._save_btn)
        layout.add_widget(self._cancel_btn, 1)

        self.fix()
예제 #3
0
파일: ui.py 프로젝트: sandal-tan/dtop
import sys

from dask.distributed import Client
from asciimatics.scene import Scene
from asciimatics.screen import Screen
from asciimatics.widgets import VerticalDivider
from asciimatics.exceptions import ResizeScreenError

from dtop.workers import WorkerInfoManager, WorkerInfoScene


def demo(screen: Screen, scene):
    scenes = [
        Scene([WorkerInfoScene(screen, workers)], -1, name="Worker Info"),
    ]
    screen.force_update()
    screen.play(scenes, stop_on_resize=True, start_scene=scene, allow_int=True)


c = Client('tcp://127.0.0.1:8786')

workers = WorkerInfoManager(c)
last_scene = None
while True:
    try:
        Screen.wrapper(demo, arguments=[last_scene])
        sys.exit(0)
    except ResizeScreenError as e:
        last_scene = e.scenelayout.add_widget(VerticalDivider())
예제 #4
0
    def __init__(self, screen):
        super(Dashboard, self).__init__(screen,
                                        screen.height,
                                        screen.width,
                                        hover_focus=True,
                                        can_scroll=False,
                                        title='::Dashboard::',
                                        reduce_cpu=True)

        ui = UI()
        self.set_theme(ui.get_current_theme())
        # create a 4(with dividers) column layout for the dashboard main -> nav | 1 | 2 | 3
        main = Layout([10, 1, 29, 1, 29, 1, 29], fill_frame=True)
        self.add_layout(main)
        # add the divider(s)
        main.add_widget(VerticalDivider(), 1)
        main.add_widget(VerticalDivider(), 3)
        main.add_widget(VerticalDivider(), 5)
        # add detail view controls to nav
        main.add_widget(
            Button('EtherToken', partial(self.detail, S['ETHER_TOKEN'])), 0)
        main.add_widget(Divider(line_char=''))
        main.add_widget(
            Button('MarketToken', partial(self.detail, S['MARKET_TOKEN'])), 0)
        main.add_widget(Divider(line_char=''))
        main.add_widget(Button('Voting', partial(self.detail, S['VOTING'])), 0)
        main.add_widget(Divider(line_char=''))
        main.add_widget(
            Button('Parameterizer', partial(self.detail, S['PARAMETERIZER'])),
            0)
        main.add_widget(Divider(line_char=''))
        main.add_widget(Button('Reserve', partial(self.detail, S['RESERVE'])),
                        0)
        main.add_widget(Divider(line_char=''))
        main.add_widget(
            Button('Datatrust', partial(self.detail, S['DATATRUST'])), 0)
        main.add_widget(Divider(line_char=''))
        main.add_widget(Button('Listing', partial(self.detail, S['LISTING'])),
                        0)

        # add the state widgets to the dashboard
        inject_ether_token_state(main, 2)
        main.add_widget(Divider(height=2), 2)
        inject_parameterizer_state(main, 2)

        inject_market_token_state(main, 4)
        main.add_widget(Divider(height=2), 4)
        inject_reserve_state(main, 4)
        main.add_widget(Divider(height=2), 4)
        inject_datatrust_state(main, 4)

        inject_voting_state(main, 6)
        main.add_widget(Divider(height=2), 6)
        inject_listing_state(main, 6)

        # divide the two layout sections
        br = Layout([100])
        self.add_layout(br)
        br.add_widget(Divider())
        # create a row of controls
        controls = Layout([1, 1, 1, 1, 1])
        self.add_layout(controls)

        self.prev_theme_button = Button('Prev Theme', self.prev_theme)
        controls.add_widget(self.prev_theme_button, 0)

        self.next_theme_button = Button('Next Theme', self.next_theme)
        controls.add_widget(self.next_theme_button, 1)

        controls.add_widget(Button('Exit', self.exit), 4)

        self.fix()
예제 #5
0
    def __init__(self, screen: Screen, default_values, on_close, mode: str):
        super().__init__(screen,
                         int(screen.height * 0.8),
                         int(screen.width * 0.8),
                         hover_focus=True,
                         can_scroll=False,
                         has_border=True,
                         is_modal=True
                         )

        self.set_theme("user_theme")

        self._on_close = on_close
        self._mode = mode

        self._board_text = Text()
        self._board_text.value = default_values.get("board") if default_values.get("board") is not None else ""

        if mode != "title":
            self._key_text = Text()
            self._key_text.value = default_values.get("key") if default_values.get("key") is not None else ""

        self._use_reg_chk = CheckBox("")
        self._use_reg_chk.value = default_values.get("use_reg") if default_values.get("use_reg") is not None else False

        if mode != "title":
            self._hide_chk = CheckBox("")
            self._hide_chk.value = default_values.get("hide") if default_values.get("hide") is not None else False

        if mode == "name" or mode == "word":
            self._auto_ng_id_chk = CheckBox("")
            self._auto_ng_id_chk.value = default_values.get(
                "auto_ng_id") if default_values.get("auto_ng_id") is not None else False

        self._value_text = TextBox(Widget.FILL_COLUMN, as_string=True)
        self._value_text.value = default_values.get("value") if default_values.get("value") is not None else ""

        self._save_btn = Button("Save", self._save_clicked)
        self._cancel_btn = Button("Cancel", self._cancel_clicked)

        layout = Layout([10, 3, 87])
        self.add_layout(layout)
        layout.add_widget(Label("board"), 0)
        layout.add_widget(VerticalDivider(), 1)
        layout.add_widget(self._board_text, 2)

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

        if mode != "title":
            layout = Layout([10, 3, 87])
            self.add_layout(layout)
            layout.add_widget(Label("key"), 0)
            layout.add_widget(VerticalDivider(), 1)
            layout.add_widget(self._key_text, 2)

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

        layout = Layout([10, 3, 87])
        self.add_layout(layout)
        layout.add_widget(Label("use_reg"), 0)
        layout.add_widget(VerticalDivider(), 1)
        layout.add_widget(self._use_reg_chk, 2)

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

        if mode != "title":
            layout = Layout([10, 3, 87])
            self.add_layout(layout)
            layout.add_widget(Label("hide"), 0)
            layout.add_widget(VerticalDivider(), 1)
            layout.add_widget(self._hide_chk, 2)

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

        if mode == "name" or mode == "word":
            layout = Layout([10, 3, 87])
            self.add_layout(layout)
            layout.add_widget(Label("auto_ng_id"), 0)
            layout.add_widget(VerticalDivider(), 1)
            layout.add_widget(self._auto_ng_id_chk, 2)

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

        layout = Layout([10, 3, 87], fill_frame=True)
        self.add_layout(layout)
        layout.add_widget(Label("value"), 0)
        layout.add_widget(VerticalDivider(), 1)
        layout.add_widget(self._value_text, 2)

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

        layout = Layout([5, 5])
        self.add_layout(layout)
        layout.add_widget(self._save_btn)
        layout.add_widget(self._cancel_btn, 1)

        self.fix()
예제 #6
0
파일: rest.py 프로젝트: ginsburgnm/respyte
    def __init__(self, screen, parsed_args):
        super(RestView, self).__init__(screen,
                                       screen.height,
                                       screen.width,
                                       on_load=self._populate,
                                       hover_focus=True,
                                       can_scroll=False,
                                       title="Respyte")

        self.set_theme(parsed_args.color_scheme)
        url_layout = Layout([10, 1, 100])
        self.add_layout(url_layout)
        self.method = DropdownList([("GET", "GET"), ("POST", "POST"),
                                    ("PUT", "PUT"), ("PATCH", "PATCH"),
                                    ("DELETE", "DELETE")],
                                   name="method")
        url_layout.add_widget(self.method, 0)
        url_layout.add_widget(VerticalDivider(), 1)
        self.url = Text(label="Url: ", validator=validate, name="url")
        url_layout.add_widget(self.url, 2)

        url_layout.add_widget(Divider())
        url_layout.add_widget(Divider(), 1)
        url_layout.add_widget(Divider(), 2)
        req_layout = Layout([20, 1, 50], fill_frame=True)
        self.add_layout(req_layout)
        self.request = TextBox(screen.height // 4 * 3 - 7,
                               label="Body Params",
                               name="req_params",
                               line_wrap=True,
                               as_string=True)
        self.req_headers = TextBox(screen.height // 4,
                                   label="Headers",
                                   name="req_headers",
                                   line_wrap=True,
                                   as_string=True)
        req_layout.add_widget(self.req_headers, 0)
        req_layout.add_widget(Divider(), 0)
        req_layout.add_widget(self.request, 0)

        req_layout.add_widget(VerticalDivider(), 1)
        self.resp_headers = TextBox(
            screen.height // 4,
            label="Response Headers",
            name="resp_headers",
            line_wrap=True,
            as_string=True,
            readonly=True,
            tab_stop=False,
        )
        req_layout.add_widget(self.resp_headers, 2)
        req_layout.add_widget(Divider(), 2)
        self.response = Pager(
            screen.height // 4 * 3 - 7,
            label="Response body",
            name="response",
            line_wrap=True,
            as_string=True,
        )
        req_layout.add_widget(self.response, 2)

        button_layout = Layout([1, 2, 2, 1, 1])
        self.add_layout(button_layout)
        button_layout.add_widget(Divider())
        button_layout.add_widget(Divider(), 1)
        button_layout.add_widget(Divider(), 2)
        button_layout.add_widget(Divider(), 3)
        button_layout.add_widget(Divider(), 4)
        button_layout.add_widget(
            Button("[Send it <F3>]", self._send, add_box=False), 1)
        button_layout.add_widget(
            Button("[History <F2>]", self._history, add_box=False), 2)
        button_layout.add_widget(
            Button("[Quit <ESC>]", self._quit, add_box=False), 3)
        self._populate()
        self.fix()
    def _compose_layout(self):
        PADDING = 0
        tx_buttons_lay = Layout([1, 1, 1])
        self.add_layout(tx_buttons_lay)
        tx_buttons_lay.add_widget(Button("Save", on_click=self._model.save), 0)
        tx_buttons_lay.add_widget(
            Button("Save & Go back", on_click=self._model.save_go_back), 1)
        tx_buttons_lay.add_widget(
            Button("Go back", on_click=self._model.go_back), 2)

        hash_lay = Layout([PADDING, 18, PADDING])
        self.add_layout(hash_lay)
        hash_lay.add_widget(DynamicLabel(name="tx_hash"), 1)
        hash_lay.add_widget(Divider(), 1)

        lay1 = Layout([PADDING, 5, 13, PADDING])
        self.add_layout(lay1)
        self._init_focus_on = {"layout": lay1, "column": 2, "widget": 0}
        lay1.add_widget(Label("Creator Id"), 1)
        lay1.add_widget(
            Text(
                name=".payload.reduced_payload.creator_account_id",
                validator=account_id_validator,
            ),
            2,
        )
        lay1.add_widget(Label("Quorum"), 1)
        lay1.add_widget(
            Text(name=".payload.reduced_payload.quorum",
                 validator=quorum_validator), 2)

        lay2 = Layout([PADDING, 5, 9, 4, PADDING])
        self.add_layout(lay2)
        lay2.add_widget(Label("Created Timestamp"), 1)
        lay2.add_widget(
            Text(
                name=".payload.reduced_payload.created_time",
                validator=self._model.validate_timestamp,
            ),
            2,
        )
        lay2.add_widget(
            Button("Use Now", on_click=self._model.set_timestamp_to_now), 3)

        lay3 = Layout([PADDING, 5, 13, PADDING])
        self.add_layout(lay3)
        lay3.add_widget(Label("Human Time"), 1)
        lay3.add_widget(DynamicLabel(name="human_time"), 2)
        lay3.add_widget(Label("Batch Summary"), 1)
        lay3.add_widget(DynamicLabel(name="batch_summary"), 2)

        lay4 = Layout([PADDING, 18, PADDING])
        self.add_layout(lay4)
        lay4.add_widget(Divider(), 1)

        lay4 = Layout([PADDING, 3, 2, 2, 2, 1, 3, 3, 2, PADDING])
        self.add_layout(lay4)
        lay4.add_widget(Label("Commands:"), 1)
        lay4.add_widget(Button("Add", on_click=self._model.add_command), 2)
        lay4.add_widget(Button("Edit", on_click=self._edit_command), 3)
        lay4.add_widget(Button("Del", on_click=self._remove_command), 4)
        lay4.add_widget(Label("Signatures:"), 6)
        lay4.add_widget(Button("Add/Sign", on_click=self._model.add_signature),
                        7)
        lay4.add_widget(Button("Del", on_click=self._remove_signature), 8)

        lay5 = Layout([PADDING, 9, 1, 8, PADDING])
        self.add_layout(lay5)
        self._command_list = ListBox(
            max(self._screen.height - 13, 4),
            [],
            name="commands",
            add_scroll_bar=True,
            on_select=self._edit_command,
        )
        lay5.add_widget(self._command_list, 1)
        lay5.add_widget(VerticalDivider(), 2)
        self._signature_list = ListBox(
            max(self._screen.height - 13, 4),
            [],
            name="signatures",
            add_scroll_bar=True,
            on_select=self._show_signature,
        )
        lay5.add_widget(self._signature_list, 3)
        self.fix()
예제 #8
0
파일: ng_view.py 프로젝트: morin4ga/gochan
    def __init__(self, screen: Screen, data_context: NGVM):
        super().__init__(
            screen,
            screen.height,
            screen.width,
            has_border=False,
            hover_focus=True,
            can_scroll=False,
            on_load=self._on_load,
        )

        self.set_theme("user_theme")

        self._keybindings = KEY_BINDINGS["ng"]

        self._data_context = data_context
        self._data_context.on_property_changed.add(self._context_changed)

        self._selected_list: List[NGItem] = None
        self._selected_item: Optional[NGItem] = None

        self._kind_list = ListBox(4, [("Title", 0), ("Name", 1), ("Id", 2),
                                      ("Word", 3)],
                                  on_change=self._on_pick_kind)
        self._ng_list = ListBox(Widget.FILL_COLUMN, [],
                                add_scroll_bar=True,
                                on_change=self._on_pick_ng,
                                on_select=self._on_select_ng)

        self._label1 = Label("")
        self._label2 = Label("")
        self._label3 = Label("")
        self._label4 = Label("")
        self._label5 = Label("")

        self._form = None

        layout = Layout([20, 20, 20, 20, 20])
        self.add_layout(layout)
        layout.add_widget(Button("Bbsmenu", self._to_bbsmenu), 0)
        layout.add_widget(Button("Board", self._to_board), 1)
        layout.add_widget(Button("Thread", self._to_thread), 2)
        layout.add_widget(Button("Favorite", self._to_favorites), 3)
        layout.add_widget(Button("NG", None, disabled=True), 4)

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

        layout = Layout([20, 1, 79], fill_frame=True)
        self.add_layout(layout)
        layout.add_widget(self._kind_list, 0)
        layout.add_widget(Divider(), 0)
        layout.add_widget(self._label1, 0)
        layout.add_widget(self._label2, 0)
        layout.add_widget(self._label3, 0)
        layout.add_widget(self._label4, 0)
        layout.add_widget(self._label5, 0)
        layout.add_widget(VerticalDivider(), 1)
        layout.add_widget(self._ng_list, 2)
        self.fix()