Merge branch 'oed-downloadview-placement'

This commit is contained in:
Florian Bruhin 2015-04-09 12:55:06 +02:00
commit e33517f592
4 changed files with 43 additions and 3 deletions

View File

@ -31,6 +31,7 @@
|Setting|Description |Setting|Description
|<<ui-zoom-levels,zoom-levels>>|The available zoom levels, separated by commas. |<<ui-zoom-levels,zoom-levels>>|The available zoom levels, separated by commas.
|<<ui-default-zoom,default-zoom>>|The default zoom level. |<<ui-default-zoom,default-zoom>>|The default zoom level.
|<<ui-downloads-position,downloads-position>>|Where to show the downloaded files.
|<<ui-message-timeout,message-timeout>>|Time (in ms) to show messages in the statusbar for. |<<ui-message-timeout,message-timeout>>|Time (in ms) to show messages in the statusbar for.
|<<ui-message-unfocused,message-unfocused>>|Whether to show messages in unfocused windows. |<<ui-message-unfocused,message-unfocused>>|Whether to show messages in unfocused windows.
|<<ui-confirm-quit,confirm-quit>>|Whether to confirm quitting the application. |<<ui-confirm-quit,confirm-quit>>|Whether to confirm quitting the application.
@ -441,6 +442,17 @@ The default zoom level.
Default: +pass:[100%]+ Default: +pass:[100%]+
[[ui-downloads-position]]
=== downloads-position
Where to show the downloaded files.
Valid values:
* +north+
* +south+
Default: +pass:[north]+
[[ui-message-timeout]] [[ui-message-timeout]]
=== message-timeout === message-timeout
Time (in ms) to show messages in the statusbar for. Time (in ms) to show messages in the statusbar for.

View File

@ -235,6 +235,10 @@ def data(readonly=False):
SettingValue(typ.Perc(), '100%'), SettingValue(typ.Perc(), '100%'),
"The default zoom level."), "The default zoom level."),
('downloads-position',
SettingValue(typ.VerticalPosition(), 'north'),
"Where to show the downloaded files."),
('message-timeout', ('message-timeout',
SettingValue(typ.Int(), '2000'), SettingValue(typ.Int(), '2000'),
"Time (in ms) to show messages in the statusbar for."), "Time (in ms) to show messages in the statusbar for."),

View File

@ -1264,6 +1264,13 @@ class Position(BaseType):
return self.MAPPING[value] return self.MAPPING[value]
class VerticalPosition(BaseType):
"""The position of the download bar."""
valid_values = ValidValues('north', 'south')
class UrlList(List): class UrlList(List):
"""A list of URLs.""" """A list of URLs."""

View File

@ -96,19 +96,18 @@ class MainWindow(QWidget):
window=self.win_id) window=self.win_id)
self._downloadview = downloadview.DownloadView(self.win_id) self._downloadview = downloadview.DownloadView(self.win_id)
self._vbox.addWidget(self._downloadview)
self._downloadview.show() self._downloadview.show()
self._tabbed_browser = tabbedbrowser.TabbedBrowser(self.win_id) self._tabbed_browser = tabbedbrowser.TabbedBrowser(self.win_id)
objreg.register('tabbed-browser', self._tabbed_browser, scope='window', objreg.register('tabbed-browser', self._tabbed_browser, scope='window',
window=self.win_id) window=self.win_id)
self._vbox.addWidget(self._tabbed_browser)
# We need to set an explicit parent for StatusBar because it does some # We need to set an explicit parent for StatusBar because it does some
# show/hide magic immediately which would mean it'd show up as a # show/hide magic immediately which would mean it'd show up as a
# window. # window.
self.status = bar.StatusBar(self.win_id, parent=self) self.status = bar.StatusBar(self.win_id, parent=self)
self._vbox.addWidget(self.status)
self._add_widgets()
self._completion = completionwidget.CompletionView(self.win_id, self) self._completion = completionwidget.CompletionView(self.win_id, self)
@ -141,6 +140,24 @@ class MainWindow(QWidget):
"""Resize the completion if related config options changed.""" """Resize the completion if related config options changed."""
if section == 'completion' and option in ('height', 'shrink'): if section == 'completion' and option in ('height', 'shrink'):
self.resize_completion() self.resize_completion()
elif section == 'ui' and option == 'downloads-position':
self._add_widgets()
def _add_widgets(self):
"""Add or readd all widgets to the VBox."""
self._vbox.removeWidget(self._tabbed_browser)
self._vbox.removeWidget(self._downloadview)
self._vbox.removeWidget(self.status)
position = config.get('ui', 'downloads-position')
if position == 'north':
self._vbox.addWidget(self._downloadview)
self._vbox.addWidget(self._tabbed_browser)
elif position == 'south':
self._vbox.addWidget(self._tabbed_browser)
self._vbox.addWidget(self._downloadview)
else:
raise ValueError("Invalid position {}!".format(position))
self._vbox.addWidget(self.status)
def _load_state_geometry(self): def _load_state_geometry(self):
"""Load the geometry from the state file.""" """Load the geometry from the state file."""