From 733dbb9dbb608e8a0dec0e836c07b1dd7feb4d17 Mon Sep 17 00:00:00 2001 From: hut Date: Mon, 14 Dec 2009 12:44:36 +0100 Subject: Don't initialize options while importing. --- ranger/__init__.py | 2 ++ ranger/defaults/keys.py | 7 ++--- ranger/shared/settings.py | 79 ++++++++++++++++++++++++----------------------- 3 files changed, 46 insertions(+), 42 deletions(-) diff --git a/ranger/__init__.py b/ranger/__init__.py index 484ddbdd..b934d80c 100644 --- a/ranger/__init__.py +++ b/ranger/__init__.py @@ -35,6 +35,7 @@ def main(): from ranger.fm import FM from ranger.container.environment import Environment + from ranger.shared.settings import SettingsAware from ranger.gui.defaultui import DefaultUI as UI from ranger.fsobject.file import File @@ -75,6 +76,7 @@ def main(): else: path = '.' + SettingsAware._setup() Environment(path) try: diff --git a/ranger/defaults/keys.py b/ranger/defaults/keys.py index ffd37646..29658dac 100644 --- a/ranger/defaults/keys.py +++ b/ranger/defaults/keys.py @@ -1,10 +1,11 @@ import curses from curses.ascii import ctrl, ESC +from ranger.actions import Actions as do +from ranger.gui.widgets.console import Console +from ranger.container.bookmarks import ALLOWED_KEYS as ALLOWED_BOOKMARK_KEYS def initialize_commands(command_list): """Initialize the commands for the main user interface""" - from ranger.actions import Actions as do - from ranger.container.bookmarks import ALLOWED_KEYS as ALLOWED_BOOKMARK_KEYS def bind(fnc, *keys): command_list.bind(fnc, *keys) @@ -91,8 +92,6 @@ def initialize_commands(command_list): def initialize_console_commands(command_list): """Initialize the commands for the console widget only""" - from ranger.actions import Actions as do - from ranger.gui.widgets.console import Console def bind(fnc, *keys): command_list.bind(fnc, *keys) diff --git a/ranger/shared/settings.py b/ranger/shared/settings.py index cf1c00c8..820e81b0 100644 --- a/ranger/shared/settings.py +++ b/ranger/shared/settings.py @@ -1,49 +1,52 @@ -from inspect import isclass, ismodule -from ranger.ext.openstruct import OpenStruct -from ranger.gui.colorscheme import ColorScheme - ALLOWED_SETTINGS = """ show_hidden scroll_offset directories_first preview_files max_history_size colorscheme apps keys """.split() -# overwrite single default options with custom options -from ranger.defaults import options -try: - import options as custom_options - for setting in ALLOWED_SETTINGS: - if hasattr(custom_options, setting): - setattr(options, setting, getattr(custom_options, setting)) - elif not hasattr(options, setting): - raise Exception("Following option was not defined: " + setting) -except ImportError: - pass - -# If a module is specified as the colorscheme, replace it with one -# valid colorscheme inside that module. - -if isclass(options.colorscheme) and \ - issubclass(options.colorscheme, ColorScheme): - options.colorscheme = options.colorscheme() - -elif ismodule(options.colorscheme): - for var_name in dir(options.colorscheme): - var = getattr(options.colorscheme, var_name) - if var != ColorScheme and isclass(var) and issubclass(var, ColorScheme): - options.colorscheme = var() - break - else: - raise Exception("The colorscheme module contains no valid colorscheme!") - -else: - raise Exception("Cannot locate colorscheme!") - - # -- globalize the settings -- + +from ranger.ext.openstruct import OpenStruct class SettingsAware(object): settings = OpenStruct() -for setting in ALLOWED_SETTINGS: - SettingsAware.settings[setting] = getattr(options, setting) + @staticmethod + def _setup(): + from inspect import isclass, ismodule + from ranger.gui.colorscheme import ColorScheme + + # overwrite single default options with custom options + from ranger.defaults import options + try: + import options as custom_options + for setting in ALLOWED_SETTINGS: + if hasattr(custom_options, setting): + setattr(options, setting, getattr(custom_options, setting)) + elif not hasattr(options, setting): + raise Exception("Following option was not defined: " + setting) + except ImportError: + pass + + # If a module is specified as the colorscheme, replace it with one + # valid colorscheme inside that module. + + if isclass(options.colorscheme) and \ + issubclass(options.colorscheme, ColorScheme): + options.colorscheme = options.colorscheme() + + elif ismodule(options.colorscheme): + for var_name in dir(options.colorscheme): + var = getattr(options.colorscheme, var_name) + if var != ColorScheme and isclass(var) \ + and issubclass(var, ColorScheme): + options.colorscheme = var() + break + else: + raise Exception("The module contains no valid colorscheme!") + + else: + raise Exception("Cannot locate colorscheme!") + + for setting in ALLOWED_SETTINGS: + SettingsAware.settings[setting] = getattr(options, setting) -- cgit 1.4.1-2-gfad0