From 2c1fe382418ce901684fbf0b905679bf582f301c Mon Sep 17 00:00:00 2001 From: "g@localhost.localdomain" Date: Thu, 7 Dec 2006 00:01:33 +0100 Subject: [PATCH] Beginning of a color code --- pysize/core/pysize_fs_node.py | 11 +++++++++++ pysize/ui/gtk/pysize_widget_draw.py | 27 ++++++++++++++++++++------- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/pysize/core/pysize_fs_node.py b/pysize/core/pysize_fs_node.py index 4d26039..14f52e9 100644 --- a/pysize/core/pysize_fs_node.py +++ b/pysize/core/pysize_fs_node.py @@ -81,6 +81,9 @@ class _pysize_node(object): def get_dirname(self): return os.path.dirname(self.get_fullpaths()[0]) + def get_useful_size(self): + return self.size + def is_dir(self): return False @@ -211,6 +214,11 @@ class _pysize_node_remaining(_pysize_node_collection): # The parent constructor would visit the files self.size = compute_size.slow_sum(elements, options.cross_device) self.remaining_elements = elements + if elements: + median = elements[len(elements) / 2] + self.useful_size = compute_size.slow(median) + else: + self.useful_size = 0 def get_name(self): return '{' + ','.join(self.remaining_elements) + '}' @@ -228,6 +236,9 @@ class _pysize_node_remaining(_pysize_node_collection): parent = parent.parent return fullpaths + def get_useful_size(self): + return self.useful_size + class _pysize_node_file(_pysize_node): """A file""" def __init__(self, parent, basename, options): diff --git a/pysize/ui/gtk/pysize_widget_draw.py b/pysize/ui/gtk/pysize_widget_draw.py index 5a75e0d..9a40688 100644 --- a/pysize/ui/gtk/pysize_widget_draw.py +++ b/pysize/ui/gtk/pysize_widget_draw.py @@ -69,10 +69,22 @@ class PysizeWidget_Draw(object): return True def _get_node_colors(self, node, colors): + def transform(colors, dr, dg, db): + return map(lambda (r, g, b): (r + dr, g + dg, b + db), colors) + + if node.is_real() and not node.is_dir(): + colors = transform(colors, 0.6, -0.6, -0.6) + + if not node.is_real(): + colors = transform(colors, 0, 0.4, 0) + + size = node.get_useful_size() / (self.tree.root.children[0].size * 2.0) + colors = transform(colors, -size, -size, -size) + if node == self.cursor_node: - colors = map(lambda c: c+0.1, colors) + colors = transform(colors, 0.1, 0.1, 0.1) if node in self.selected_nodes + [self.button_press_node]: - colors = map(lambda c: c-0.3, colors) + colors = transform(colors, -0.2, -0.2, -0.2) return colors def _draw_box(self, context, x0, x1, y0, y1, node): @@ -93,8 +105,8 @@ class PysizeWidget_Draw(object): context.set_source_rgb(0, 0, 0) context.stroke_preserve() - colors = self._get_node_colors(node, [0, 0.5, 1.0]) - context.set_source_rgb(*colors) + colors = self._get_node_colors(node, ((0.2, 0.4, 1.0),)) + context.set_source_rgb(*colors[0]) context.fill() else: context.new_path() @@ -115,9 +127,10 @@ class PysizeWidget_Draw(object): context.stroke_preserve() gradient = cairo.LinearGradient(0, y0, 0, y1) - colors = self._get_node_colors(node, [0.5, 0.5, 1.0, 0.0, 0.5, 1.0]) - gradient.add_color_stop_rgb(0.0, *colors[:3]) - gradient.add_color_stop_rgb(1.0, *colors[3:]) + colors = self._get_node_colors(node, ((0.5, 0.4, 1.0), + (0.2, 0.4, 1.0))) + gradient.add_color_stop_rgb(0.0, *colors[0]) + gradient.add_color_stop_rgb(1.0, *colors[1]) context.set_source(gradient) context.fill() -- 2.11.4.GIT