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()
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()
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())
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()
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()
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()
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()