about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--ranger/gui/colorscheme.py20
-rw-r--r--ranger/gui/context.py41
2 files changed, 43 insertions, 18 deletions
diff --git a/ranger/gui/colorscheme.py b/ranger/gui/colorscheme.py
index f40e4a0d..867aec70 100644
--- a/ranger/gui/colorscheme.py
+++ b/ranger/gui/colorscheme.py
@@ -44,22 +44,7 @@ colorscheme = colorschemes.filename.classname
 from ranger.ext.openstruct import ReferencedOpenStruct
 from curses import color_pair
 from ranger.gui.color import get_color
-
-CONTEXT_KEYS = ['reset', 'error',
-		'in_browser', 'in_statusbar', 'in_titlebar', 'in_console',
-		'in_pager', 'in_taskview',
-		'directory', 'file', 'hostname',
-		'executable', 'media', 'link',
-		'video', 'audio', 'image', 'media', 'document', 'container',
-		'selected', 'empty', 'main_column', 'message', 'background',
-		'good', 'bad',
-		'space', 'permissions', 'owner', 'group', 'mtime', 'nlink',
-		'scroll', 'all', 'bot', 'top', 'percentage',
-		'marked', 'tagged', 'tag_marker',
-		'help_markup',
-		'seperator', 'key', 'special',
-		'title', 'text', 'highlight', 'bars', 'quotes',
-		'keybuffer']
+from ranger.gui.context import Context
 
 class ColorScheme(object):
 	"""
@@ -85,8 +70,7 @@ class ColorScheme(object):
 			return self.cache[keys]
 
 		except KeyError:
-			context = ReferencedOpenStruct(dict(
-				(key, key in keys) for key in CONTEXT_KEYS))
+			context = Context(keys)
 
 			# add custom error messages for broken colorschemes
 			color = self.use(context)
diff --git a/ranger/gui/context.py b/ranger/gui/context.py
new file mode 100644
index 00000000..25544932
--- /dev/null
+++ b/ranger/gui/context.py
@@ -0,0 +1,41 @@
+# Copyright (C) 2009, 2010  Roman Zimbelmann <romanz@lavabit.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+CONTEXT_KEYS = ['reset', 'error',
+		'in_browser', 'in_statusbar', 'in_titlebar', 'in_console',
+		'in_pager', 'in_taskview',
+		'directory', 'file', 'hostname',
+		'executable', 'media', 'link',
+		'video', 'audio', 'image', 'media', 'document', 'container',
+		'selected', 'empty', 'main_column', 'message', 'background',
+		'good', 'bad',
+		'space', 'permissions', 'owner', 'group', 'mtime', 'nlink',
+		'scroll', 'all', 'bot', 'top', 'percentage',
+		'marked', 'tagged', 'tag_marker',
+		'help_markup',
+		'seperator', 'key', 'special',
+		'title', 'text', 'highlight', 'bars', 'quotes',
+		'keybuffer']
+
+class Context(object):
+	def __init__(self, keys):
+		# set all given keys to True
+		d = self.__dict__
+		for key in keys:
+			d[key] = True
+
+# set all keys to False
+for key in CONTEXT_KEYS:
+	setattr(Context, key, False)