diff options
-rw-r--r-- | ranger/colorschemes/jungle.py | 75 | ||||
-rw-r--r-- | ranger/shared/settings.py | 28 |
2 files changed, 26 insertions, 77 deletions
diff --git a/ranger/colorschemes/jungle.py b/ranger/colorschemes/jungle.py index 8d408fa0..e6c3307f 100644 --- a/ranger/colorschemes/jungle.py +++ b/ranger/colorschemes/jungle.py @@ -16,75 +16,16 @@ from ranger.gui.colorscheme import ColorScheme from ranger.gui.color import * -class Default(ColorScheme): - def use(self, context): - fg, bg, attr = default_colors - - if context.reset: - pass - - elif context.in_browser: - if context.selected: - attr = reverse - else: - attr = normal - - if context.empty or context.error: - bg = red - - if context.media: - fg = magenta # fruits - - if context.container: - fg = red # flowers - - if context.directory: - fg = green # trees =) - - elif context.executable and not \ - any((context.media, context.container)): - fg = yellow # banananas - - if context.link: - fg = context.good and cyan or magenta +from ranger.colorschemes.default import Default as SubClass - if context.main_column and context.selected: - attr |= bold - - elif context.in_titlebar: - attr |= bold - - if context.hostname: - fg = green - - elif context.directory: - fg = blue - - elif context.link: - fg = cyan - - elif context.keybuffer: - fg = yellow - attr = normal - - elif context.in_statusbar: - if context.permissions or context.link: - if context.good: - fg = cyan - elif context.bad: - fg = magenta - - if context.text: - if context.highlight: - attr |= reverse - fg = yellow +class Default(SubClass): + def use(self, context): + fg, bg, attr = SubClass.use(self, context) - if context.in_taskview: - if context.title: - fg = yellow - attr |= reverse + if context.directory and not context.marked: + fg = green - if context.selected: - attr |= reverse + if context.in_titlebar and context.hostname: + fg = red if context.bad else blue return fg, bg, attr diff --git a/ranger/shared/settings.py b/ranger/shared/settings.py index 36728b48..c01e5796 100644 --- a/ranger/shared/settings.py +++ b/ranger/shared/settings.py @@ -13,7 +13,9 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. +import types from ranger.ext.openstruct import OpenStruct +from ranger.gui.colorscheme import ColorScheme ALLOWED_SETTINGS = { 'show_hidden': bool, @@ -29,7 +31,7 @@ ALLOWED_SETTINGS = { 'scroll_offset': int, 'preview_files': bool, 'flushinput': bool, - 'colorscheme': object, + 'colorscheme': (ColorScheme, types.ModuleType), 'hidden_filter': lambda x: isinstance(x, str) or hasattr(x, 'match'), } @@ -70,20 +72,26 @@ class SettingsAware(object): # If a module is specified as the colorscheme, replace it with one # valid colorscheme inside that module. + all_content = options.colorscheme.__dict__.items() + 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 + if hasattr(options.colorscheme, 'Default') \ + and isclass(options.colorscheme.Default) \ + and issubclass(options.colorscheme.Default, ColorScheme): + options.colorscheme = options.colorscheme.Default() else: - raise Exception("The module contains no valid colorscheme!") - + for name, var in options.colorscheme.__dict__.items(): + 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!") @@ -104,5 +112,5 @@ def check_option_types(opt): else: assert isinstance(optvalue, typ), \ "The option `" + name + "' has an incorrect type!"\ - " Expected " + str(typ) + "!" + " Got " + str(type(optvalue)) + ", expected " + str(typ) + "!" return True |