Pass a parent to global QObjects.

This commit is contained in:
Florian Bruhin 2015-04-06 00:10:37 +02:00
parent d83da987ae
commit 2876ba5cfa
4 changed files with 68 additions and 37 deletions

View File

@ -180,10 +180,10 @@ class Application(QApplication):
log.init.debug("Initializing directories...") log.init.debug("Initializing directories...")
standarddir.init(self._args) standarddir.init(self._args)
log.init.debug("Initializing config...") log.init.debug("Initializing config...")
config.init() config.init(self)
save_manager.init_autosave() save_manager.init_autosave()
log.init.debug("Initializing web history...") log.init.debug("Initializing web history...")
history.init() history.init(self)
log.init.debug("Initializing crashlog...") log.init.debug("Initializing crashlog...")
self._handle_segfault() self._handle_segfault()
log.init.debug("Initializing sessions...") log.init.debug("Initializing sessions...")
@ -198,7 +198,7 @@ class Application(QApplication):
host_blocker.read_hosts() host_blocker.read_hosts()
objreg.register('host-blocker', host_blocker) objreg.register('host-blocker', host_blocker)
log.init.debug("Initializing quickmarks...") log.init.debug("Initializing quickmarks...")
quickmark_manager = quickmarks.QuickmarkManager() quickmark_manager = quickmarks.QuickmarkManager(self)
objreg.register('quickmark-manager', quickmark_manager) objreg.register('quickmark-manager', quickmark_manager)
log.init.debug("Initializing proxy...") log.init.debug("Initializing proxy...")
proxy.init() proxy.init()

View File

@ -154,8 +154,12 @@ class WebHistory(QWebHistoryInterface):
return url_string in self._history_dict return url_string in self._history_dict
def init(): def init(parent=None):
"""Initialize the web history.""" """Initialize the web history.
history = WebHistory()
Args:
parent: The parent to use for WebHistory.
"""
history = WebHistory(parent)
objreg.register('web-history', history) objreg.register('web-history', history)
QWebHistoryInterface.setDefaultInterface(history) QWebHistoryInterface.setDefaultInterface(history)

View File

@ -30,8 +30,7 @@ import functools
from PyQt5.QtCore import pyqtSlot, Qt from PyQt5.QtCore import pyqtSlot, Qt
from qutebrowser.completion.models import miscmodels, urlmodel, configmodel from qutebrowser.completion.models import miscmodels, urlmodel, configmodel
from qutebrowser.completion.models.sortfilter import ( from qutebrowser.completion.models.sortfilter import CompletionFilterModel
CompletionFilterModel as CFM)
from qutebrowser.utils import objreg, usertypes, log, debug from qutebrowser.utils import objreg, usertypes, log, debug
from qutebrowser.config import configdata from qutebrowser.config import configdata
@ -39,42 +38,58 @@ from qutebrowser.config import configdata
_instances = {} _instances = {}
def _init_model(klass, *args, dumb_sort=None, **kwargs):
"""Helper to initialize a model.
Args:
klass: The class of the model to initialize.
*args: Arguments to pass to the model.
**kwargs: Keyword arguments to pass to the model.
dumb_sort: Passed to CompletionFilterModel.
"""
app = objreg.get('app')
return CompletionFilterModel(klass(*args, parent=app, **kwargs),
dumb_sort=dumb_sort, parent=app)
def _init_command_completion(): def _init_command_completion():
"""Initialize the command completion model.""" """Initialize the command completion model."""
log.completion.debug("Initializing command completion.") log.completion.debug("Initializing command completion.")
_instances[usertypes.Completion.command] = CFM( model = _init_model(miscmodels.CommandCompletionModel)
miscmodels.CommandCompletionModel()) _instances[usertypes.Completion.command] = model
def _init_helptopic_completion(): def _init_helptopic_completion():
"""Initialize the helptopic completion model.""" """Initialize the helptopic completion model."""
log.completion.debug("Initializing helptopic completion.") log.completion.debug("Initializing helptopic completion.")
_instances[usertypes.Completion.helptopic] = CFM( model = _init_model(miscmodels.HelpCompletionModel)
miscmodels.HelpCompletionModel()) _instances[usertypes.Completion.helptopic] = model
def _init_url_completion(): def _init_url_completion():
"""Initialize the URL completion model.""" """Initialize the URL completion model."""
log.completion.debug("Initializing URL completion.") log.completion.debug("Initializing URL completion.")
with debug.log_time(log.completion, 'URL completion init'): with debug.log_time(log.completion, 'URL completion init'):
_instances[usertypes.Completion.url] = CFM( model = _init_model(urlmodel.UrlCompletionModel,
urlmodel.UrlCompletionModel(), dumb_sort=Qt.DescendingOrder) dumb_sort=Qt.DescendingOrder)
_instances[usertypes.Completion.url] = model
def _init_setting_completions(): def _init_setting_completions():
"""Initialize setting completion models.""" """Initialize setting completion models."""
log.completion.debug("Initializing setting completion.") log.completion.debug("Initializing setting completion.")
_instances[usertypes.Completion.section] = CFM( _instances[usertypes.Completion.section] = _init_model(
configmodel.SettingSectionCompletionModel()) configmodel.SettingSectionCompletionModel)
_instances[usertypes.Completion.option] = {} _instances[usertypes.Completion.option] = {}
_instances[usertypes.Completion.value] = {} _instances[usertypes.Completion.value] = {}
for sectname in configdata.DATA: for sectname in configdata.DATA:
model = configmodel.SettingOptionCompletionModel(sectname) model = _init_model(configmodel.SettingOptionCompletionModel, sectname)
_instances[usertypes.Completion.option][sectname] = CFM(model) _instances[usertypes.Completion.option][sectname] = model
_instances[usertypes.Completion.value][sectname] = {} _instances[usertypes.Completion.value][sectname] = {}
for opt in configdata.DATA[sectname].keys(): for opt in configdata.DATA[sectname].keys():
model = configmodel.SettingValueCompletionModel(sectname, opt) model = _init_model(configmodel.SettingValueCompletionModel,
_instances[usertypes.Completion.value][sectname][opt] = CFM(model) sectname, opt)
_instances[usertypes.Completion.value][sectname][opt] = model
@pyqtSlot() @pyqtSlot()
@ -86,10 +101,10 @@ def init_quickmark_completions():
_instances[usertypes.Completion.quickmark_by_name].deleteLater() _instances[usertypes.Completion.quickmark_by_name].deleteLater()
except KeyError: except KeyError:
pass pass
_instances[usertypes.Completion.quickmark_by_url] = CFM( model = _init_model(miscmodels.QuickmarkCompletionModel, 'url')
miscmodels.QuickmarkCompletionModel('url')) _instances[usertypes.Completion.quickmark_by_url] = model
_instances[usertypes.Completion.quickmark_by_name] = CFM( model = _init_model(miscmodels.QuickmarkCompletionModel, 'name')
miscmodels.QuickmarkCompletionModel('name')) _instances[usertypes.Completion.quickmark_by_name] = model
@pyqtSlot() @pyqtSlot()
@ -100,8 +115,8 @@ def init_session_completion():
_instances[usertypes.Completion.sessions].deleteLater() _instances[usertypes.Completion.sessions].deleteLater()
except KeyError: except KeyError:
pass pass
_instances[usertypes.Completion.sessions] = CFM( model = _init_model(miscmodels.SessionCompletionModel)
miscmodels.SessionCompletionModel()) _instances[usertypes.Completion.sessions] = model
INITIALIZERS = { INITIALIZERS = {

View File

@ -113,13 +113,16 @@ def section(sect):
return objreg.get('config')[sect] return objreg.get('config')[sect]
def _init_main_config(): def _init_main_config(parent=None):
"""Initialize the main config.""" """Initialize the main config.
Args:
parent: The parent to pass to ConfigManager.
"""
try: try:
app = objreg.get('app')
args = objreg.get('args') args = objreg.get('args')
config_obj = ConfigManager(standarddir.config(), 'qutebrowser.conf', config_obj = ConfigManager(standarddir.config(), 'qutebrowser.conf',
args.relaxed_config, app) args.relaxed_config, parent=parent)
except (configexc.Error, configparser.Error, UnicodeDecodeError) as e: except (configexc.Error, configparser.Error, UnicodeDecodeError) as e:
log.init.exception(e) log.init.exception(e)
errstr = "Error while reading config:" errstr = "Error while reading config:"
@ -151,10 +154,15 @@ def _init_main_config():
return return
def _init_key_config(): def _init_key_config(parent):
"""Initialize the key config.""" """Initialize the key config.
Args:
parent: The parent to use for the KeyConfigParser.
"""
try: try:
key_config = keyconf.KeyConfigParser(standarddir.config(), 'keys.conf') key_config = keyconf.KeyConfigParser(standarddir.config(), 'keys.conf',
parent=parent)
except (keyconf.KeyConfigError, UnicodeDecodeError) as e: except (keyconf.KeyConfigError, UnicodeDecodeError) as e:
log.init.exception(e) log.init.exception(e)
errstr = "Error while reading key config:\n" errstr = "Error while reading key config:\n"
@ -216,10 +224,14 @@ def _init_misc():
QSettings.setPath(fmt, QSettings.UserScope, path) QSettings.setPath(fmt, QSettings.UserScope, path)
def init(): def init(parent=None):
"""Initialize the config.""" """Initialize the config.
_init_main_config()
_init_key_config() Args:
parent: The parent to pass to QObjects which get initialized.
"""
_init_main_config(parent)
_init_key_config(parent)
_init_misc() _init_misc()