예제 #1
0
    def __init__(self, win_id, parent=None):
        super().__init__(parent)
        self._win_id = win_id
        # FIXME handle new aliases.
        # objreg.get('config').changed.connect(self.init_command_completion)
        objreg.get('config').changed.connect(self._on_config_changed)

        self._column_widths = base.BaseCompletionModel.COLUMN_WIDTHS
        self._active = False

        self._delegate = completiondelegate.CompletionItemDelegate(self)
        self.setItemDelegate(self._delegate)
        self.setStyle(QStyleFactory.create('Fusion'))
        style.set_register_stylesheet(self)
        self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
        self.setHeaderHidden(True)
        self.setAlternatingRowColors(True)
        self.setIndentation(0)
        self.setItemsExpandable(False)
        self.setExpandsOnDoubleClick(False)
        self.setAnimated(False)
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        # WORKAROUND
        # This is a workaround for weird race conditions with invalid
        # item indexes leading to segfaults in Qt.
        #
        # Some background: http://bugs.quassel-irc.org/issues/663
        # The proposed fix there was later reverted because it didn't help.
        self.setUniformRowHeights(True)
        self.hide()
예제 #2
0
def test_set_register_stylesheet_generator(qtbot, config_stub):
    config_stub.data = {'fonts': {}, 'colors': {}}
    obj = GeneratedObj()
    style.set_register_stylesheet(obj, generator=obj.generate)
    assert obj.rendered_stylesheet == 'one'
    config_stub.changed.emit('foo', 'bar')
    assert obj.rendered_stylesheet == 'two'
예제 #3
0
def test_set_register_stylesheet(delete, qtbot, config_stub, caplog):
    config_stub.data = {'fonts': {'foo': 'bar'}, 'colors': {}}
    obj = Obj("{{ font['foo'] }}")

    with caplog.atLevel(9):  # VDEBUG
        style.set_register_stylesheet(obj)

    records = caplog.records()
    assert len(records) == 1
    assert records[0].message == 'stylesheet for Obj: font: bar;'

    assert obj.rendered_stylesheet == 'font: bar;'

    if delete:
        with qtbot.waitSignal(obj.destroyed):
            obj.deleteLater()

    config_stub.data = {'fonts': {'foo': 'baz'}, 'colors': {}}
    style.get_stylesheet.cache_clear()
    config_stub.changed.emit('fonts', 'foo')

    if delete:
        expected = 'font: bar;'
    else:
        expected = 'font: baz;'
    assert obj.rendered_stylesheet == expected
    def __init__(self, win_id, parent=None):
        super().__init__(parent)
        self._win_id = win_id
        # FIXME handle new aliases.
        # objreg.get('config').changed.connect(self.init_command_completion)
        objreg.get('config').changed.connect(self._on_config_changed)

        self._column_widths = base.BaseCompletionModel.COLUMN_WIDTHS
        self._active = False

        self._delegate = completiondelegate.CompletionItemDelegate(self)
        self.setItemDelegate(self._delegate)
        self.setStyle(QStyleFactory.create('Fusion'))
        style.set_register_stylesheet(self)
        self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
        self.setHeaderHidden(True)
        self.setAlternatingRowColors(True)
        self.setIndentation(0)
        self.setItemsExpandable(False)
        self.setExpandsOnDoubleClick(False)
        self.setAnimated(False)
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        # WORKAROUND
        # This is a workaround for weird race conditions with invalid
        # item indexes leading to segfaults in Qt.
        #
        # Some background: http://bugs.quassel-irc.org/issues/663
        # The proposed fix there was later reverted because it didn't help.
        self.setUniformRowHeights(True)
        self.hide()
예제 #5
0
    def __init__(self, win_id, parent=None):
        super().__init__(parent)
        objreg.register('statusbar', self, scope='window', window=win_id)
        self.setObjectName(self.__class__.__name__)
        self.setAttribute(Qt.WA_StyledBackground)
        style.set_register_stylesheet(self)

        self.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Fixed)

        self._win_id = win_id
        self._option = None

        self._hbox = QHBoxLayout(self)
        self.set_hbox_padding()
        objreg.get('config').changed.connect(self.set_hbox_padding)
        self._hbox.setSpacing(5)

        self._stack = QStackedLayout()
        self._hbox.addLayout(self._stack)
        self._stack.setContentsMargins(0, 0, 0, 0)

        self.cmd = command.Command(win_id)
        self._stack.addWidget(self.cmd)
        objreg.register('status-command', self.cmd, scope='window',
                        window=win_id)

        self.txt = textwidget.Text()
        self._stack.addWidget(self.txt)

        self.prompt = prompt.Prompt(win_id)
        self._stack.addWidget(self.prompt)

        self.cmd.show_cmd.connect(self._show_cmd_widget)
        self.cmd.hide_cmd.connect(self._hide_cmd_widget)
        self._hide_cmd_widget()
        prompter = objreg.get('prompter', scope='window', window=self._win_id)
        prompter.show_prompt.connect(self._show_prompt_widget)
        prompter.hide_prompt.connect(self._hide_prompt_widget)
        self._hide_prompt_widget()

        self.keystring = keystring.KeyString()
        self._hbox.addWidget(self.keystring)

        self.url = url.UrlText()
        self._hbox.addWidget(self.url)

        self.percentage = percentage.Percentage()
        self._hbox.addWidget(self.percentage)

        self.tabindex = tabindex.TabIndex()
        self._hbox.addWidget(self.tabindex)

        # We add a parent to Progress here because it calls self.show() based
        # on some signals, and if that happens before it's added to the layout,
        # it will quickly blink up as independent window.
        self.prog = progress.Progress(self)
        self._hbox.addWidget(self.prog)

        objreg.get('config').changed.connect(self.maybe_hide)
        QTimer.singleShot(0, self.maybe_hide)
예제 #6
0
def test_set_register_stylesheet_generator(qtbot, config_stub):
    config_stub.data = {'fonts': {}, 'colors': {}}
    obj = GeneratedObj()
    style.set_register_stylesheet(obj, generator=obj.generate)
    assert obj.rendered_stylesheet == 'one'
    config_stub.changed.emit('foo', 'bar')
    assert obj.rendered_stylesheet == 'two'
예제 #7
0
    def __init__(self, win_id, parent=None):
        super().__init__(parent)
        self._win_id = win_id
        objreg.register('completion', self, scope='window', window=win_id)
        cmd = objreg.get('status-command', scope='window', window=win_id)
        completer_obj = completer.Completer(cmd, win_id, self)
        completer_obj.next_prev_item.connect(self.on_next_prev_item)
        objreg.register('completer', completer_obj, scope='window',
                        window=win_id)
        self.enabled = config.get('completion', 'show')
        objreg.get('config').changed.connect(self.set_enabled)
        # FIXME handle new aliases.
        # objreg.get('config').changed.connect(self.init_command_completion)

        self._column_widths = base.BaseCompletionModel.COLUMN_WIDTHS

        self._delegate = completiondelegate.CompletionItemDelegate(self)
        self.setItemDelegate(self._delegate)
        style.set_register_stylesheet(self)
        self.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Minimum)
        self.setHeaderHidden(True)
        self.setAlternatingRowColors(True)
        self.setIndentation(0)
        self.setItemsExpandable(False)
        self.setExpandsOnDoubleClick(False)
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        # WORKAROUND
        # This is a workaround for weird race conditions with invalid
        # item indexes leading to segfaults in Qt.
        #
        # Some background: http://bugs.quassel-irc.org/issues/663
        # The proposed fix there was later reverted because it didn't help.
        self.setUniformRowHeights(True)
        self.hide()
예제 #8
0
def test_set_register_stylesheet(delete, qtbot, config_stub, caplog):
    config_stub.data = {'fonts': {'foo': 'bar'}, 'colors': {}}
    obj = Obj("{{ font['foo'] }}")

    with caplog.at_level(9):  # VDEBUG
        style.set_register_stylesheet(obj)

    assert len(caplog.records) == 1
    assert caplog.records[0].message == 'stylesheet for Obj: bar'

    assert obj.rendered_stylesheet == 'bar'

    if delete:
        with qtbot.waitSignal(obj.destroyed):
            obj.deleteLater()

    config_stub.data = {'fonts': {'foo': 'baz'}, 'colors': {}}
    style.get_stylesheet.cache_clear()
    config_stub.changed.emit('fonts', 'foo')

    if delete:
        expected = 'bar'
    else:
        expected = 'baz'
    assert obj.rendered_stylesheet == expected
예제 #9
0
파일: bar.py 프로젝트: rahonen/qutebrowser
    def __init__(self, win_id, parent=None):
        super().__init__(parent)
        objreg.register('statusbar', self, scope='window', window=win_id)
        self.setObjectName(self.__class__.__name__)
        self.setAttribute(Qt.WA_StyledBackground)
        style.set_register_stylesheet(self)

        self.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Fixed)

        self._win_id = win_id
        self._option = None
        self._last_text_time = None

        self._hbox = QHBoxLayout(self)
        self._hbox.setContentsMargins(0, 0, 0, 0)
        self._hbox.setSpacing(5)

        self._stack = QStackedLayout()
        self._hbox.addLayout(self._stack)
        self._stack.setContentsMargins(0, 0, 0, 0)

        self.cmd = command.Command(win_id)
        self._stack.addWidget(self.cmd)

        self.txt = textwidget.Text()
        self._stack.addWidget(self.txt)
        self._timer_was_active = False
        self._text_queue = collections.deque()
        self._text_pop_timer = usertypes.Timer(self, 'statusbar_text_pop')
        self._text_pop_timer.timeout.connect(self._pop_text)
        self.set_pop_timer_interval()
        objreg.get('config').changed.connect(self.set_pop_timer_interval)

        self.prompt = prompt.Prompt(win_id)
        self._stack.addWidget(self.prompt)
        self._previous_widget = PreviousWidget.none

        self.cmd.show_cmd.connect(self._show_cmd_widget)
        self.cmd.hide_cmd.connect(self._hide_cmd_widget)
        self._hide_cmd_widget()
        prompter = objreg.get('prompter', scope='window', window=self._win_id)
        prompter.show_prompt.connect(self._show_prompt_widget)
        prompter.hide_prompt.connect(self._hide_prompt_widget)
        self._hide_prompt_widget()

        self.keystring = keystring.KeyString()
        self._hbox.addWidget(self.keystring)

        self.url = url.UrlText()
        self._hbox.addWidget(self.url)

        self.percentage = percentage.Percentage()
        self._hbox.addWidget(self.percentage)

        # We add a parent to Progress here because it calls self.show() based
        # on some signals, and if that happens before it's added to the layout,
        # it will quickly blink up as independent window.
        self.prog = progress.Progress(self)
        self._hbox.addWidget(self.prog)
예제 #10
0
 def __init__(self, parent=None):
     """Override TextBase.__init__ to elide in the middle by default."""
     super().__init__(parent, Qt.ElideMiddle)
     self.setObjectName(self.__class__.__name__)
     style.set_register_stylesheet(self)
     self._hover_url = None
     self._normal_url = None
     self._normal_url_type = UrlType.normal
예제 #11
0
파일: bar.py 프로젝트: har5ha/qutebrowser
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setObjectName(self.__class__.__name__)
        self.setAttribute(Qt.WA_StyledBackground)
        style.set_register_stylesheet(self)

        self.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Fixed)

        self._option = None
        self._last_text_time = None

        self._hbox = QHBoxLayout(self)
        self._hbox.setContentsMargins(0, 0, 0, 0)
        self._hbox.setSpacing(5)

        self._stack = QStackedLayout()
        self._hbox.addLayout(self._stack)
        self._stack.setContentsMargins(0, 0, 0, 0)

        self._cmd = command.Command()
        objreg.register('status-command', self._cmd)
        self._stack.addWidget(self._cmd)

        self.txt = textwidget.Text()
        self._stack.addWidget(self.txt)
        self._timer_was_active = False
        self._text_queue = collections.deque()
        self._text_pop_timer = usertypes.Timer(self, 'statusbar_text_pop')
        self._text_pop_timer.timeout.connect(self._pop_text)
        self.set_pop_timer_interval()
        config.on_change(self.set_pop_timer_interval, 'ui', 'message-timeout')

        self.prompt = prompt.Prompt()
        self._stack.addWidget(self.prompt)
        self._previous_widget = PreviousWidget.none

        self._cmd.show_cmd.connect(self._show_cmd_widget)
        self._cmd.hide_cmd.connect(self._hide_cmd_widget)
        self._hide_cmd_widget()
        prompter = objreg.get('prompter')
        prompter.show_prompt.connect(self._show_prompt_widget)
        prompter.hide_prompt.connect(self._hide_prompt_widget)
        self._hide_prompt_widget()

        self.keystring = keystring.KeyString()
        self._hbox.addWidget(self.keystring)

        self.url = url.UrlText()
        self._hbox.addWidget(self.url)

        self.percentage = percentage.Percentage()
        self._hbox.addWidget(self.percentage)

        # We add a parent to Progress here because it calls self.show() based
        # on some signals, and if that happens before it's added to the layout,
        # it will quickly blink up as independent window.
        self.prog = progress.Progress(self)
        self._hbox.addWidget(self.prog)
예제 #12
0
 def __init__(self, win_id, parent=None):
     super().__init__(parent)
     self.setTextFormat(Qt.RichText)
     self._win_id = win_id
     self.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Minimum)
     self.hide()
     self._show_timer = usertypes.Timer(self, 'keyhint_show')
     self._show_timer.timeout.connect(self.show)
     style.set_register_stylesheet(self)
예제 #13
0
 def __init__(self, win_id, parent=None):
     super().__init__(parent)
     self.setTextFormat(Qt.RichText)
     self._win_id = win_id
     self.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Minimum)
     self.hide()
     self._show_timer = usertypes.Timer(self, 'keyhint_show')
     self._show_timer.timeout.connect(self.show)
     style.set_register_stylesheet(self)
예제 #14
0
 def __init__(self, win_id, parent=None):
     super().__init__(parent)
     self.setTextFormat(Qt.RichText)
     self._win_id = win_id
     self.set_enabled()
     cfg = objreg.get('config')
     cfg.changed.connect(self.set_enabled)
     style.set_register_stylesheet(self)
     self.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Minimum)
     self.hide()
예제 #15
0
    def __init__(self, elem, context):
        super().__init__(parent=context.tab)
        self._context = context
        self.elem = elem

        self.setAttribute(Qt.WA_StyledBackground, True)
        style.set_register_stylesheet(self)

        self._context.tab.contents_size_changed.connect(self._move_to_elem)
        self._move_to_elem()
        self.show()
예제 #16
0
    def __init__(self, elem, context):
        super().__init__(parent=context.tab)
        self._context = context
        self.elem = elem

        self.setAttribute(Qt.WA_StyledBackground, True)
        style.set_register_stylesheet(self)

        self._context.tab.contents_size_changed.connect(self._move_to_elem)
        self._move_to_elem()
        self.show()
예제 #17
0
    def __init__(self, win_id, parent=None):
        super().__init__(parent)
        self._layout = QVBoxLayout(self)
        self._layout.setContentsMargins(10, 10, 10, 10)
        self._win_id = win_id
        self._prompt = None

        self.setObjectName('PromptContainer')
        self.setAttribute(Qt.WA_StyledBackground, True)
        style.set_register_stylesheet(self)

        message.global_bridge.prompt_done.connect(self._on_prompt_done)
        prompt_queue.show_prompts.connect(self._on_show_prompts)
        message.global_bridge.mode_left.connect(self._on_global_mode_left)
예제 #18
0
    def __init__(self, win_id, parent=None):
        super().__init__(parent)
        self._layout = QVBoxLayout(self)
        self._layout.setContentsMargins(10, 10, 10, 10)
        self._win_id = win_id
        self._prompt = None

        self.setObjectName('PromptContainer')
        self.setAttribute(Qt.WA_StyledBackground, True)
        style.set_register_stylesheet(self)

        message.global_bridge.prompt_done.connect(self._on_prompt_done)
        prompt_queue.show_prompts.connect(self._on_show_prompts)
        message.global_bridge.mode_left.connect(self._on_global_mode_left)
예제 #19
0
 def __init__(self, parent=None):
     super().__init__(parent)
     style.set_register_stylesheet(self)
     self.setResizeMode(QListView.Adjust)
     self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
     self.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Fixed)
     self.setFlow(QListView.LeftToRight)
     self._menu = None
     model = objreg.get('download-manager')
     model.rowsInserted.connect(functools.partial(update_geometry, self))
     model.rowsRemoved.connect(functools.partial(update_geometry, self))
     self.setModel(model)
     self.setWrapping(True)
     self.setContextMenuPolicy(Qt.CustomContextMenu)
     self.customContextMenuRequested.connect(self.show_context_menu)
예제 #20
0
 def __init__(self, win_id, parent=None):
     super().__init__(parent)
     self.setStyle(QStyleFactory.create('Fusion'))
     style.set_register_stylesheet(self)
     self.setResizeMode(QListView.Adjust)
     self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
     self.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Fixed)
     self.setFocusPolicy(Qt.NoFocus)
     self.setFlow(QListView.LeftToRight)
     self.setSpacing(1)
     self._menu = None
     model = objreg.get('download-model', scope='window', window=win_id)
     model.rowsInserted.connect(functools.partial(update_geometry, self))
     model.rowsRemoved.connect(functools.partial(update_geometry, self))
     model.dataChanged.connect(functools.partial(update_geometry, self))
     self.setModel(model)
     self.setWrapping(True)
     self.setContextMenuPolicy(Qt.CustomContextMenu)
     self.customContextMenuRequested.connect(self.show_context_menu)
     self.clicked.connect(self.on_clicked)
예제 #21
0
 def __init__(self, win_id, parent=None):
     super().__init__(parent)
     self.setStyle(QStyleFactory.create('Fusion'))
     style.set_register_stylesheet(self)
     self.setResizeMode(QListView.Adjust)
     self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
     self.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Fixed)
     self.setFocusPolicy(Qt.NoFocus)
     self.setFlow(QListView.LeftToRight)
     self.setSpacing(1)
     self._menu = None
     model = objreg.get('download-model', scope='window', window=win_id)
     model.rowsInserted.connect(functools.partial(update_geometry, self))
     model.rowsRemoved.connect(functools.partial(update_geometry, self))
     model.dataChanged.connect(functools.partial(update_geometry, self))
     self.setModel(model)
     self.setWrapping(True)
     self.setContextMenuPolicy(Qt.CustomContextMenu)
     self.customContextMenuRequested.connect(self.show_context_menu)
     self.clicked.connect(self.on_clicked)
예제 #22
0
 def __init__(self, parent=None):
     super().__init__(parent)
     style.set_register_stylesheet(self)
     self.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Ignored)
     self.setTextVisible(False)
     self.hide()
예제 #23
0
 def __init__(self, parent=None):
     super().__init__(parent)
     style.set_register_stylesheet(self)
     self.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
     self.setTextVisible(False)
     self.hide()