Ejemplo n.º 1
0
 def __init__(self, streams_btn_list: List[Any], view: Any) -> None:
     self.view = view
     self.log = urwid.SimpleFocusListWalker(streams_btn_list)
     self.streams_btn_list = streams_btn_list
     self.focus_index_before_search = 0
     list_box = urwid.ListBox(self.log)
     self.stream_search_box = PanelSearchBox(self, 'SEARCH_STREAMS')
     urwid.connect_signal(self.stream_search_box, 'change',
                          self.update_streams)
     super(StreamsView,
           self).__init__(list_box,
                          header=urwid.LineBox(self.stream_search_box,
                                               tlcorner=u'─',
                                               tline=u'',
                                               lline=u'',
                                               trcorner=u'─',
                                               blcorner=u'─',
                                               rline=u'',
                                               bline=u'─',
                                               brcorner=u'─'))
     self.search_lock = threading.Lock()
Ejemplo n.º 2
0
 def __init__(self, title):
     self.title_text = urwid.Text(('title', title))
     self.status_label = urwid.Text('Status: ')
     self.status_text = urwid.Text('new')
     self.exit_label = urwid.Text('Exitcode: ')
     self.exit_text = urwid.Text('n/a')
     self.wait_text = urwid.Text('Every ')
     self.output_text = urwid.Text('')
     self.header_pack = urwid.Columns(widget_list=[
         ('pack', self.status_label),
         (8, self.status_text),
         ('pack', self.exit_label),
         (5, self.exit_text),
         ('pack', self.wait_text),
     ])
     self.overall_pack = urwid.Pile(widget_list=[
         ('pack', self.header_pack),
         ('pack', self.output_text),
     ])
     self.linebox = urwid.LineBox(self.overall_pack, title=title)
     urwid.WidgetWrap.__init__(self, self.linebox)
Ejemplo n.º 3
0
 def __init__(self):
     self.rootpw1_bar = urwid.Edit(mask='*')
     self.rootpw2_bar = urwid.Edit(mask='*')
     content = [
         urwid.Divider(),
         urwid.Text(TEXT_PASSWD_DIALOG_PASSWD1 + ':'),
         urwid.AttrMap(self.rootpw1_bar, 'app.editbox', 'app.editfocus'),
         urwid.Text(TEXT_PASSWD_DIALOG_PASSWD2 + ':'),
         urwid.AttrMap(self.rootpw2_bar, 'app.editbox', 'app.editfocus'),
         urwid.Divider(),
         urwid.Columns([
             urwid.Divider(),
             ('fixed', 10, urwid.AttrMap(urwid.Button(TEXT_BUTTON_APPLY, self.on_apply), 'app.button', 'app.buttonfocus')),
             ('fixed', 10, urwid.AttrMap(urwid.Button(TEXT_BUTTON_CANCEL, self.on_cancel), 'app.button', 'app.buttonfocus')),
             urwid.Divider()
         ], dividechars=8)
     ]
     walker = urwid.SimpleListWalker(content)
     self.footer = urwid.Pile([urwid.Text(TEXT_ELEMENT_KEYBOARD_DLG_HINT), urwid.Text(TEXT_ELEMENT_KEYBOARD_HINT)])
     self.view = urwid.AttrMap(urwid.LineBox(urwid.Frame(urwid.ListBox(walker), footer=self.footer), title=TEXT_PASSWD_DIALOG_CAPTION), 'app.dialog')
     urwid.WidgetWrap.__init__(self, self.view)
Ejemplo n.º 4
0
    def create(self) -> urwid.Widget:
        # Add simple default button that can be oberridden by adding custom
        # buttons.
        default_btn_text = "Close"
        btn = widget.PlainButton(default_btn_text)
        self.btn_width = len(default_btn_text) + 2
        urwid.connect_signal(btn,
                             "click",
                             self._on_button_clicked,
                             user_args=[lambda: True])
        self.buttons = urwid.GridFlow(
            [btn],
            cell_width=11,
            h_sep=2,
            v_sep=1,
            align="center",
        )

        content = urwid.Pile([self.message, urwid.Divider(), self.buttons])
        view = urwid.LineBox(content, self.title)
        return view
Ejemplo n.º 5
0
 def __init__(self, conversation, close_callback, keybindings):
     rename_dialog = RenameConversationDialog(
         conversation,
         lambda: frame.contents.__setitem__('body', (list_box, None)),
         close_callback)
     items = [
         urwid.Text('Conversation name: {}'.format(
             get_conv_name(conversation))),
         urwid.Button('Change Conversation Name',
                      on_press=lambda _: frame.contents.__setitem__(
                          'body', (rename_dialog, None))),
         urwid.Divider('-'),
         urwid.Button('Back', on_press=lambda _: close_callback()),
     ]
     list_walker = urwid.SimpleFocusListWalker(items)
     list_box = urwid.ListBox(list_walker)
     frame = urwid.Frame(list_box)
     padding = urwid.Padding(frame, left=1, right=1)
     line_box = urwid.LineBox(padding, title='Conversation Menu')
     super().__init__(line_box)
     self._keys = keybindings
Ejemplo n.º 6
0
 def __init__(self, controller: Any, question: Any,
              success_callback: Callable[[], bool]):
     self.controller = controller
     self.success_callback = success_callback
     yes = urwid.Button('Yes', self.exit_popup_yes)
     no = urwid.Button('No', self.exit_popup_no)
     yes._w = urwid.AttrMap(urwid.SelectableIcon(
         'Yes', 4), None, 'selected')
     no._w = urwid.AttrMap(urwid.SelectableIcon(
         'No', 4), None, 'selected')
     display_widget = urwid.GridFlow([yes, no], 3, 5, 1, 'center')
     wrapped_widget = urwid.WidgetWrap(display_widget)
     prompt = urwid.LineBox(
         urwid.ListBox(
             urwid.SimpleFocusListWalker(
                 [question, urwid.Divider(), wrapped_widget]
             )))
     urwid.Overlay.__init__(self, prompt, self.controller.view,
                            align="left", valign="top",
                            width=self.controller.view.LEFT_WIDTH + 1,
                            height=8)
Ejemplo n.º 7
0
    def __init__(self, autocomplete_engine=None):
        editor = QueryEditor(autocomplete_engine)
        container = urwid.Filler(urwid.AttrMap(editor, ''), valign='top')
        title = u'[F9: Run. Ctrl-F9: Clear. Esc: Close. Ctrl-P/Ctrl-N: Query history. Ctrl-Shift-Up/Down: Resize editor.]'

        self._suggestions_widget = SuggestionsWidget()

        frame = urwid.Frame(body=container, footer=self._suggestions_widget)
        line_box = urwid.LineBox(frame, title=title, title_align='right')

        urwid.connect_signal(editor, editor.SIGNAL_LOADING_SUGGESTIONS,
                             self._loading_suggestions)
        urwid.connect_signal(editor, editor.SIGNAL_SHOW_SUGGESTIONS,
                             self._show_suggestions)
        urwid.connect_signal(editor, editor.SIGNAL_HIDE_SUGGESTIONS,
                             self._hide_suggestions)

        super().__init__(line_box, 'linebox')
        urwid.register_signal(
            self.__class__,
            [self.SIGNAL_LOADING_SUGGESTIONS, self.SIGNAL_LOADED_SUGGESTIONS])
Ejemplo n.º 8
0
    def quit_prompt(self):
        """Pop-up window that appears when you try to quit."""
        text = "Changes have been made. Quit?"
        question = ur.Text(("bold", text), "center")

        cancel_btn = ur.AttrMap(ur.Button(
            "Cancel", self.prompt_answer, "cancel"), "title", None)
        save_btn = ur.AttrMap(ur.Button(
            "Save", self.prompt_answer, "save"), "title", None)
        quit_btn = ur.AttrMap(ur.Button(
            "Quit", self.prompt_answer, "quit"), "red", None)

        prompt = ur.LineBox(ur.ListBox(ur.SimpleFocusListWalker(
            [question, BLANK, BLANK, cancel_btn, save_btn, quit_btn])))

        overlay = ur.Overlay(
            prompt, self.loop.widget,
            "center", 19, "middle", 9,
            16, 8)

        self.loop.widget = overlay
Ejemplo n.º 9
0
    def __init__(self,
                 body,
                 actions,
                 height=None,
                 line_box=False,
                 line_box_title=''):
        self._actions = []
        self._actions_to_signals = {}
        self._body = body
        self._status_bar = urwid.Text('')
        self._prepare_actions_and_signals(actions)
        self._action_bar = urwid.AttrMap(ActionBar(self._actions),
                                         'action_bar')
        self._container = self._make_container(height=height)

        if line_box is True:
            self._container = urwid.LineBox(self._container,
                                            title=line_box_title)

        super().__init__(urwid.AttrMap(self._container, 'linebox'))
        self._register_signals()
Ejemplo n.º 10
0
    def topics_view(self, stream_button: Any) -> Any:
        stream_id = stream_button.stream_id
        topics_btn_list = [
            TopicButton(
                stream_id=stream_id,
                topic=topic,
                controller=self.controller,
                width=self.width,
                count=self.model.unread_counts['unread_topics'].
                get((stream_id, topic), 0)
            ) for topic in self.model.index['topics'][stream_id]]

        self.view.topic_w = TopicsView(topics_btn_list, self.view,
                                       stream_button)
        w = urwid.LineBox(
            self.view.topic_w, title="Topics",
            tlcorner=u'━', tline=u'━', lline=u'',
            trcorner=u'━', blcorner=u'', rline=u'',
            bline=u'', brcorner=u'─'
            )
        return w
Ejemplo n.º 11
0
    def __init__(self, milestone):
        self.milestone = milestone

        content = [
            urwid.Columns([
                (3, self._is_closed_widget()),
                ("weight", 0.8, self._name_widget()),
                ("weight", 0.2, self._progress_status_widget()),
            ]),
            urwid.Columns([
                (3, urwid.Text("")),
                ("weight", 0.4, self._finish_date_widget()),
                ("weight", 0.4, self._total_points_widget()),
                ("weight", 0.4, self._closed_points_widget()),
            ])
        ]

        self.widget = urwid.Pile(content)
        super().__init__(
            urwid.AttrMap(urwid.LineBox(urwid.AttrMap(self.widget, "default")),
                          "default", "focus"))
Ejemplo n.º 12
0
    def setup_section(self, coin_name, price_value):
        text_color = 'normal'
        prev_price = self.prices.get(coin_name)
        if price_value is not None:
            if prev_price and price_value > prev_price:
                text_color = 'price_higher'
            elif prev_price and price_value < prev_price:
                text_color = 'price_lower'
            self.prices[coin_name] = price_value
            price_formatted = '{:10.2f} {}'.format(
                price_value,
                self.output_currency[1],
            ).rjust(10)
        else:
            price_formatted = 'N/A'

        price_text = urwid.Text([
            ' {0}:'.format(coin_name),
            (text_color, price_formatted),
        ])
        return urwid.LineBox(urwid.Filler(price_text, valign='top', top=1))
Ejemplo n.º 13
0
 def __init__(self, main_frame):
     ## This is a window && window name
     self.window = True
     self.label = 'TLS Logger'
     self.main_frame = main_frame
     self.isOver = False
     self.actionM = ActionMenu(self)
     ## Create new queue
     self.queue = queue.Queue()
     self.main_frame.plugin_queue['TLSP'] = self.queue
     self.connections = {}
     self.urw_conn = urwid.SimpleFocusListWalker([])
     self.listBox_conn = urwid.ListBox(self.urw_conn)
     connection_status = urwid.LineBox(self.listBox_conn)
     self.cont = urwid.SimpleFocusListWalker([])
     self.cc = urwid.ListBox(self.cont)
     super(TLS_connection,
           self).__init__([('weight', 0.2, connection_status),
                           ('weight', 0.8, self.cc)])
     self.runner = TLS_runner(self)
     self.runner.start()
Ejemplo n.º 14
0
 def private_box_view(self, button: Any=None, email: str='') -> None:
     self.set_editor_mode()
     if email == '' and button is not None:
         email = button.email
     self.to_write_box = ReadlineEdit("To: ", edit_text=email)
     self.msg_write_box = ReadlineEdit(multiline=True)
     self.msg_write_box.enable_autocomplete(
         func=self.generic_autocomplete,
         key=keys_for_command('AUTOCOMPLETE').pop(),
         key_reverse=keys_for_command('AUTOCOMPLETE_REVERSE').pop()
     )
     to_write_box = urwid.LineBox(
         self.to_write_box, tlcorner='─', tline='─', lline='',
         trcorner='─', blcorner='─', rline='',
         bline='─', brcorner='─'
     )
     self.contents = [
         (to_write_box, self.options()),
         (self.msg_write_box, self.options()),
     ]
     self.focus_position = 1
Ejemplo n.º 15
0
    def open_torrent_options_window(self):
        torrent_name = self.cached_torrent.get("name", "")

        self.main.torrent_options_window = uw.Overlay(
            top_w=uw.LineBox(
                TorrentOptionsDialog(
                    torrent_list_box_w=self.torrent_list_box_w,
                    torrent_hash=self.get_torrent_hash(),
                    torrent=self.cached_torrent,
                ),
                title=torrent_name,
            ),
            bottom_w=self.torrent_list_box_w.main.app_window,
            align=uw.CENTER,
            width=(uw.RELATIVE, 50),
            valign=uw.MIDDLE,
            height=25,
            min_width=75,
        )

        self.main.loop.widget = self.main.torrent_options_window
Ejemplo n.º 16
0
    def __init__(self, body, loop, width=0, height=0):

        self.body = body
        self.loop = loop
        self.parent = loop.widget

        if body is None:
            body = urwid.Filler(urwid.Divider(), 'top')

        self.frame = urwid.Frame(body, focus_part='footer')
        widget = self.frame

        # decoration
        widget = urwid.Padding(widget, ('fixed left',2), ('fixed right',2))
        widget = urwid.Filler(widget, ('fixed top',1), ('fixed bottom',1))
        if self.linebox == True:
            widget = urwid.LineBox(widget)
        if self.overlay == True:
            widget = urwid.Overlay(widget, self.parent, 'center', width + 2, ('relative', 30), height + 2)

        super(ModalWindow, self).__init__(widget)
Ejemplo n.º 17
0
 def show_log_file(self, log_path, title):
     if isfile(log_path):
         log = self.comp_log_map.get(title, None)
         if log:
             self.logger.info("Closing '%s' log" % title)
             self.additional_content_grid.contents.remove(
                 (log, self.additional_content_grid.options()))
             self.comp_log_map[title] = None
         else:
             self.logger.info("Opening '%s' log" % title)
             log = urwid.AttrMap(urwid.LineBox(
                 urwid.BoxAdapter(
                     urwid.ListBox(LogTextWalker(log_path, title)), 10),
                 '%s Log' % title),
                                 None,
                                 focus_map='simple_button')
             self.comp_log_map[title] = log
             self.additional_content_grid.contents.append(
                 (log, self.additional_content_grid.options()))
     else:
         self.logger.error("Log file '%s' does not exist!" % log_path)
Ejemplo n.º 18
0
    def streams_view(self) -> Any:
        streams_btn_list = [
            StreamButton(stream,
                         controller=self.controller,
                         view=self.view,
                         width=self.width,
                         count=self.model.unread_counts.get(stream[1], 0))
            for stream in self.view.pinned_streams
        ]

        if len(streams_btn_list):
            unpinned_divider = urwid.Divider("-")

            # FIXME Necessary since the divider is treated as a StreamButton
            unpinned_divider.stream_id = -1
            unpinned_divider.caption = ''

            streams_btn_list += [unpinned_divider]

        streams_btn_list += [
            StreamButton(stream,
                         controller=self.controller,
                         view=self.view,
                         width=self.width,
                         count=self.model.unread_counts.get(stream[1], 0))
            for stream in self.view.unpinned_streams
        ]

        self.view.stream_w = StreamsView(streams_btn_list, self.view)
        w = urwid.LineBox(self.view.stream_w,
                          title="Streams",
                          tlcorner=u'─',
                          tline=u'─',
                          lline=u'',
                          trcorner=u'─',
                          blcorner=u'',
                          rline=u'',
                          bline=u'',
                          brcorner=u'─')
        return w
Ejemplo n.º 19
0
    def show(self, loop):
        # Header
        header_text = urwid.Text('Remove Connection: ' + self.target.name, align='center')
        header = urwid.AttrMap(header_text, 'dialog')

        # Footer
        ok_btn = urwid.Button('Ok', self.on_ok)
        ok_btn = urwid.AttrWrap(ok_btn, 'dialog_button', 'dialog_button_focus')

        cancel_btn = urwid.Button('Cancel', self.on_cancel)
        cancel_btn = urwid.AttrWrap(cancel_btn, 'dialog_button', 'dialog_button_focus')

        footer = urwid.GridFlow([ok_btn, cancel_btn], 12, 1, 1, 'center')

        body = urwid.Filler(
            urwid.Pile([
                urwid.Text("Are you sure?"),
                urwid.Text(""),
                footer
            ])
        )

        # Layout
        layout = urwid.Frame(
            body,
            header=header
        )

        w = DialogOverlay(
            on_close=lambda: self.on_close(self.target),
            on_enter=lambda: self.on_ok(None),
            top_w=urwid.AttrMap(urwid.LineBox(layout), "dialog"),
            bottom_w=loop.widget,
            align='center',
            width=40,
            valign='middle',
            height=10
        )

        loop.widget = w
Ejemplo n.º 20
0
    def draw(self):
        content_frame = urwid.Frame(body=None)

        top = urwid.Text(self.text)
        top = urwid.Padding(top, align='left', width='pack')
        top = urwid.AttrMap(urwid.Filler(top, valign='top'), 'wcolor')

        rbgroup = []
        buttons = [
            urwid.AttrMap(urwid.RadioButton(rbgroup, d), 'focus', 'selectable')
            for d in self.disks
        ]
        self.rbuttons = buttons
        buttons = urwid.Pile(buttons, focus_item=0)
        buttons = urwid.Padding(buttons, align='left', width='pack')
        buttons = urwid.AttrMap(urwid.Filler(buttons, valign='top'), 'wcolor')

        ok = urwid.AttrMap(urwid.Button('OK', self.handle_input), 'focus',
                           'selectable')

        ok = urwid.GridFlow([ok], 10, 3, 1, 'center')

        bottom = urwid.Padding(ok, align='left', width='pack')
        bottom = urwid.AttrMap(urwid.Filler(bottom, valign='bottom'), 'wcolor')

        content = DiskSelectionDialog.TabPile([top, buttons, bottom],
                                              self,
                                              focus_item=1)
        content = urwid.AttrMap(urwid.LineBox(content), 'wcolor')

        content = urwid.Overlay(content,
                                urwid.AttrMap(urwid.SolidFill(gli.SFILL),
                                              'bgcolor'),
                                align='center',
                                valign='middle',
                                width=50,
                                height=10)

        content_frame.body = content
        self._w = content_frame
Ejemplo n.º 21
0
    def __init__(self, db, top_frame, sub_id):
        self.db = db
        self.top_frame = top_frame
        self.subs_id = sub_id
        self.subs = self.db.get_subs_to_align(sub_id, SUBS_CNT_FOR_ALIGN)

        bg_lt = []
        bg_rt = []
        bg_lb = []
        bg_rb = []
        self.left_top = [
            urwid.RadioButton(bg_lt, x.content) for x in self.subs[0]
        ]
        self.right_top = [
            urwid.RadioButton(bg_rt, x.content) for x in self.subs[1]
        ]
        self.left_bot = [
            urwid.RadioButton(bg_lb, x.content) for x in self.subs[2]
        ]
        self.right_bot = [
            urwid.RadioButton(bg_rb, x.content) for x in self.subs[3]
        ]

        left_top_box = urwid.ListBox(urwid.SimpleFocusListWalker(
            self.left_top))
        right_top_box = urwid.ListBox(
            urwid.SimpleFocusListWalker(self.right_top))
        left_bot_box = urwid.ListBox(urwid.SimpleFocusListWalker(
            self.left_bot))
        right_bot_box = urwid.ListBox(
            urwid.SimpleFocusListWalker(self.right_bot))

        c_top = urwid.Columns([left_top_box, right_top_box])
        c_bot = urwid.Columns([left_bot_box, right_bot_box])

        p = urwid.Pile(
            [c_top, urwid.Filler(urwid.Divider('-'), 'middle'), c_bot])
        self.app_box = urwid.LineBox(p)
        self.app_but = urwid.Padding(urwid.Button('Align'), 'center', 10)
        super().__init__(self.app_box, footer=self.app_but, focus_part='body')
Ejemplo n.º 22
0
    def __init__(self, sensor: ManagerObjSensor, node: ManagerObjNode,
                 alertLevels: List[ManagerObjAlertLevel]):

        self.node = node
        self.sensor = sensor

        content = list()

        content.append(urwid.Divider("="))
        content.append(urwid.Text("Node"))
        content.append(urwid.Divider("="))
        temp = self._createNodeWidgetList(node)
        self.nodePileWidget = urwid.Pile(temp)
        content.append(self.nodePileWidget)

        content.append(urwid.Divider())
        content.append(urwid.Divider("="))
        content.append(urwid.Text("Sensor"))
        content.append(urwid.Divider("="))
        temp = self._createSensorWidgetList(sensor)
        self.sensorPileWidget = urwid.Pile(temp)
        content.append(self.sensorPileWidget)

        content.append(urwid.Divider())
        content.append(urwid.Divider("="))
        content.append(urwid.Text("Alert Levels"))
        content.append(urwid.Divider("="))
        temp = self._createAlertLevelsWidgetList(alertLevels)
        self.alertLevelsPileWidget = urwid.Pile(temp)
        content.append(self.alertLevelsPileWidget)

        # use ListBox here because it handles all the
        # scrolling part automatically
        detailedList = urwid.ListBox(urwid.SimpleListWalker(content))
        detailedFrame = urwid.Frame(
            detailedList,
            footer=urwid.Text("Keys: ESC - Back, Up/Down - Scrolling"))
        self.detailedBox = urwid.LineBox(detailedFrame,
                                         title="Sensor: " +
                                         self.sensor.description)
Ejemplo n.º 23
0
def _game_screen(app_state, callback):
    """Create game screen of board, AI view, and status"""
    buttons = [
        _move_btn(0, 0, callback),
        _move_btn(1, 0, callback),
        _move_btn(2, 0, callback),
        _move_btn(0, 1, callback),
        _move_btn(1, 1, callback),
        _move_btn(2, 1, callback),
        _move_btn(0, 2, callback),
        _move_btn(1, 2, callback),
        _move_btn(2, 2, callback)
    ]
    # Create game column
    grid = uw.GridFlow(buttons, 5, 2, 2, 'center')
    padded_grid = uw.Padding(grid, align='center', width=20)
    header = uw.Text('Tic Tac Toe', align='center')
    game_column = uw.ListBox([uw.Divider(), header, uw.Divider(), padded_grid])

    # Describe AI view
    ai_description = uw.Text('Waiting for first move...', align='center')
    ai_column = uw.ListBox([
        uw.Divider(),
        uw.Text('AI Brain', align='center'),
        uw.Divider(),
        uw.LineBox(ai_description)
    ])

    # Assemble composite screen
    status = uw.Text('Status: Your Move', align='center')
    columns = uw.Columns([game_column, ai_column])
    screen = uw.Pile([('weight', 1, columns), ('pack', status),
                      ('pack', uw.Divider())])

    # Assign elements to UI state for later updating
    app_state.ui[BUTTONS] = buttons
    app_state.ui[STATUS] = status
    app_state.ui[AI_DESCRIPTION] = ai_description

    return (screen, app_state)
Ejemplo n.º 24
0
  def build_menu(self, widget=None, title="", items=[], focused=None, cb=None, modal_keys=None):

    self.cb = cb
    walker = urwid.SimpleListWalker([self.button(token, token) for token in items])
    self.listbox = urwid.ListBox(walker)
    self.linebox = urwid.LineBox(self.listbox)

    focused_index = 0
    for index, token in enumerate(walker):
      if token.button_text == focused:
        # Need to account for the insertion of the title at the start (below), so
        # we add 1

        focused_index = index + 1

    walker.insert(0, urwid.Text(title))

    try:
      self.listbox.set_focus(focused_index)
    except:
      pass


    if not modal_keys:
      modal_keys = {}

    def make_func(x):
      def handle_key(kv, ret, widget):
        self.number_pressed(kv, x)

      return handle_key

    for x in xrange(10):
      modal_keys[str(x)] = {
        "fn" : make_func(x)
      }

    modal_keys['enter'] = { "fn" : self.confirm_action }

    widget.open_overlay(self.linebox, modal_keys=modal_keys)
Ejemplo n.º 25
0
def display():
    # body
    body_text = urwid.Text('''
    The available controls:

    arrows  navigate
    r       mark as read
    u       mark as unread
    enter   open on browser,
            select source
    space   show unread of source
    f       fetch
    a       add source
    e       edit source
    d       delete source
    q       quit
    ''',
                           align='left')
    body_filler = urwid.Filler(body_text, valign='top')
    body_padding = urwid.Padding(body_filler, left=1, right=1)
    state.body = urwid.LineBox(body_padding)

    # footer
    footer = urwid.Button('OK', close)
    footer = urwid.AttrWrap(footer, 'selectable', 'focus')
    footer = urwid.GridFlow([footer], 6, 1, 1, 'center')

    # layout
    layout = urwid.Frame(state.body, footer=footer, focus_part='footer')

    state.body = state.loop.widget
    pile = urwid.Pile([layout])
    over = urwid.Overlay(pile,
                         state.body,
                         align='center',
                         valign='middle',
                         width=41,
                         height=18)

    state.loop.widget = over
Ejemplo n.º 26
0
    def __init__(self, tui_frame):
        self.tui_frame = tui_frame
        self.doingit = False

        self.disconnect = urwid.CheckBox('Close active sessions.', False)

        self.close_button = CloseButton(lambda x: self._emit('close'))

        if self.tui_frame.was_locked:
            self.old_pass = urwid.Edit('Old passphrase: ',
                                       multiline=True,
                                       mask='*',
                                       allow_tab=False,
                                       wrap='clip')
        else:
            self.old_pass = urwid.Text(
                'App does not currently require a passphrase.')

        self.new_pass1 = urwid.Edit('New passphrase: ',
                                    multiline=True,
                                    mask='*',
                                    allow_tab=False,
                                    wrap='clip')
        self.new_pass2 = urwid.Edit('    (repeated): ',
                                    multiline=True,
                                    mask='*',
                                    allow_tab=False,
                                    wrap='clip')

        for w in (self.old_pass, self.new_pass1, self.new_pass2):
            if not isinstance(w, urwid.Edit):
                continue
            urwid.connect_signal(w, 'change', lambda b, t: self.doit(t))
            urwid.connect_signal(w, 'postchange', lambda b, t: self.cleanup())

        self.pile = urwid.Pile([])
        self.update_pile()

        super().__init__(
            urwid.LineBox(urwid.AttrWrap(urwid.Filler(self.pile), 'popbg')))
Ejemplo n.º 27
0
    def _handle_input(self, input):
        if input == "enter" or (input[0]=='meta mouse press' and input[1]==1): # View answers   Either press Enter or "ALT + Left Click"
            url = self._get_selected_link()

            if url != None:
                self.viewing_answers = True
                question_title, question_desc, question_stats, answers = get_question_and_answers(url)

                pile = urwid.Pile(self._stylize_question(question_title, question_desc, question_stats) + [urwid.Divider('*')] +
                interleave(answers, [urwid.Divider('-')] * (len(answers) - 1)))
                padding = ScrollBar(Scrollable(urwid.Padding(pile, left=2, right=2)))
                #filler = urwid.Filler(padding, valign="top")
                linebox = urwid.LineBox(padding)

                menu = urwid.Text([
                    u'\n',
                    ("menu", u" ESC "), ("light gray", u" Go back "),
                    ("menu", u" B "), ("light gray", u" Open browser "),
                    ("menu", u" Q "), ("light gray", u" Quit"),
                ])

                # highlight the selected answer
                _, idx = self.content_container.get_focus()
                txt = self.content[idx].original_widget.text
                self.content[idx] = urwid.AttrMap(SelectableText(txt), 'viewed', 'reveal viewed focus')

                self.main_loop.widget = urwid.Frame(body=urwid.Overlay(linebox, self.content_container, "center", ("relative", 60), "middle", 23), footer=menu)
        elif input in ('b', 'B') or (input[0]=='ctrl mouse press' and input[1]==1): # Open link     Either press (B or b) or "CTRL + Left Click"
            url = self._get_selected_link()

            if url != None:
                webbrowser.open(url)
        elif input == "esc": # Close window
            if self.viewing_answers:
                self.main_loop.widget = self.original_widget
                self.viewing_answers = False
            else:
                raise urwid.ExitMainLoop()
        elif input in ('q', 'Q'): # Quit
            raise urwid.ExitMainLoop()
Ejemplo n.º 28
0
 def select4(self):
     select4 = len(self.devices[self.interface]['ip4']) > 1
     if select4:
         text = urwid.AttrWrap(urwid.Text("Select the IPv4 address to use"), 'header')
         content = [text, urwid.Divider()]
         for i in self.devices[self.interface]['ip4']:
             content.append(self.menu_button("%s %s" % (i['ip'], i['mask']), self.select4_callback, self.devices[self.interface]['ip4'].index(i)))
         box = urwid.ListBox(urwid.SimpleFocusListWalker(content))
         self.set_body(urwid.Overlay(urwid.LineBox(box),
                 self.body,
                 align='center', width=('relative', 80),
                 valign='middle', height=('relative', 80),
                 min_width=24, min_height=8))
         return
     else:
         if len(self.devices[self.interface]['ip4']) > 0:
             self.ip = self.devices[self.interface]['ip4'][0]['ip']
             self.mask = self.devices[self.interface]['ip4'][0]['mask']
         else:
             self.ip = "0.0.0.0"
             self.mask ="0.0.0.0"
         self.select6()
Ejemplo n.º 29
0
 def create_pop(self, user, msg):
     user_label = uw.Text(user, )
     if user == 'you':
         user_label = uw.AttrMap(user_label, 'sender_client')
     else:
         user_label = uw.AttrMap(user_label, 'sender_user')
     text = uw.Text(msg)
     text = uw.Padding(text, left=1, right=1)
     text = uw.LineBox(text,
                       tlcorner=u'\u2502',
                       blcorner=u'\u2502',
                       tline='',
                       bline='',
                       rline='',
                       trcorner='',
                       brcorner='')
     div = uw.Divider()
     w_cols = [(len(user), user_label), text]
     w = uw.Columns(w_cols, dividechars=1)
     w = uw.Padding(w, left=1)
     w = uw.Pile([div, w])
     return w
Ejemplo n.º 30
0
    def __init__(self):

        # file nme of this file (used for logging)
        self.fileName = os.path.basename(__file__)

        separator = urwid.Text("")
        self.description = urwid.Text("Sensor 'PLACEHOLDER' " +
                                      "in state 'PLACEHOLDER'.",
                                      align="center")

        option1 = urwid.Text("1. Continue", align="center")
        option2 = urwid.Text("2. Abort", align="center")
        instruction = urwid.Text("Please, choose an option.", align="center")

        warningPile = urwid.Pile([
            self.description, separator, option1, option2, separator,
            instruction
        ])

        warningBox = urwid.LineBox(warningPile, title="Warning")

        self.warningMap = urwid.AttrMap(warningBox, "redColor")