From 5bb2a70a94be9c0f83712ee259b7125e3a582b08 Mon Sep 17 00:00:00 2001
From: Josh Blum <josh@joshknows.com>
Date: Sat, 5 Sep 2009 02:01:41 -0700
Subject: replaced dict[rot] storage of areas and lines with a single list for
 the current rotation

---
 grc/gui/Element.py | 28 ++++++++++++----------------
 1 file changed, 12 insertions(+), 16 deletions(-)

(limited to 'grc/gui/Element.py')

diff --git a/grc/gui/Element.py b/grc/gui/Element.py
index ecf1de1ca3..bda1870598 100644
--- a/grc/gui/Element.py
+++ b/grc/gui/Element.py
@@ -70,14 +70,14 @@ class Element(object):
 		@param bg_color the color for the inside of the rectangle
 		"""
 		X,Y = self.get_coordinate()
-		for (rX,rY),(W,H) in self.areas_dict[self.get_rotation()]:
+		for (rX,rY),(W,H) in self._areas_list:
 			aX = X + rX
 			aY = Y + rY
 			gc.set_foreground(bg_color)
 			window.draw_rectangle(gc, True, aX, aY, W, H)
 			gc.set_foreground(border_color)
 			window.draw_rectangle(gc, False, aX, aY, W, H)
-		for (x1, y1),(x2, y2) in self.lines_dict[self.get_rotation()]:
+		for (x1, y1),(x2, y2) in self._lines_list:
 			gc.set_foreground(border_color)
 			window.draw_line(gc, X+x1, Y+y1, X+x2, Y+y2)
 
@@ -90,8 +90,8 @@ class Element(object):
 
 	def clear(self):
 		"""Empty the lines and areas."""
-		self.areas_dict = dict((rotation, list()) for rotation in POSSIBLE_ROTATIONS)
-		self.lines_dict = dict((rotation, list()) for rotation in POSSIBLE_ROTATIONS)
+		self._areas_list = list()
+		self._lines_list = list()
 
 	def set_coordinate(self, coor):
 		"""
@@ -136,7 +136,7 @@ class Element(object):
 		X, Y = self.get_coordinate()
 		self.set_coordinate((X+deltaX, Y+deltaY))
 
-	def add_area(self, rel_coor, area, rotation=None):
+	def add_area(self, rel_coor, area):
 		"""
 		Add an area to the area list.
 		An area is actually a coordinate relative to the main coordinate
@@ -144,25 +144,21 @@ class Element(object):
 		A positive width is to the right of the coordinate.
 		A positive height is above the coordinate.
 		The area is associated with a rotation.
-		If rotation is not specified, the element's current rotation is used.
 		@param rel_coor (x,y) offset from this element's coordinate
 		@param area (width,height) tuple
-		@param rotation rotation in degrees
 		"""
-		self.areas_dict[rotation or self.get_rotation()].append((rel_coor, area))
+		self._areas_list.append((rel_coor, area))
 
-	def add_line(self, rel_coor1, rel_coor2, rotation=None):
+	def add_line(self, rel_coor1, rel_coor2):
 		"""
 		Add a line to the line list.
 		A line is defined by 2 relative coordinates.
 		Lines must be horizontal or vertical.
 		The line is associated with a rotation.
-		If rotation is not specified, the element's current rotation is used.
 		@param rel_coor1 relative (x1,y1) tuple
 		@param rel_coor2 relative (x2,y2) tuple
-		@param rotation rotation in degrees
 		"""
-		self.lines_dict[rotation or self.get_rotation()].append((rel_coor1, rel_coor2))
+		self._lines_list.append((rel_coor1, rel_coor2))
 
 	def what_is_selected(self, coor, coor_m=None):
 		"""
@@ -183,24 +179,24 @@ class Element(object):
 		if coor_m:
 			x_m, y_m = [a-b for a,b in zip(coor_m, self.get_coordinate())]
 			#handle rectangular areas
-			for (x1,y1), (w,h) in self.areas_dict[self.get_rotation()]:
+			for (x1,y1), (w,h) in self._areas_list:
 				if in_between(x1, x, x_m) and in_between(y1, y, y_m) or \
 					in_between(x1+w, x, x_m) and in_between(y1, y, y_m) or \
 					in_between(x1, x, x_m) and in_between(y1+h, y, y_m) or \
 					in_between(x1+w, x, x_m) and in_between(y1+h, y, y_m):
 					return self
 			#handle horizontal or vertical lines
-			for (x1, y1), (x2, y2) in self.lines_dict[self.get_rotation()]:
+			for (x1, y1), (x2, y2) in self._lines_list:
 				if in_between(x1, x, x_m) and in_between(y1, y, y_m) or \
 					in_between(x2, x, x_m) and in_between(y2, y, y_m):
 					return self
 			return None
 		else:
 			#handle rectangular areas
-			for (x1,y1), (w,h) in self.areas_dict[self.get_rotation()]:
+			for (x1,y1), (w,h) in self._areas_list:
 				if in_between(x, x1, x1+w) and in_between(y, y1, y1+h): return self
 			#handle horizontal or vertical lines
-			for (x1, y1), (x2, y2) in self.lines_dict[self.get_rotation()]:
+			for (x1, y1), (x2, y2) in self._lines_list:
 				if x1 == x2: x1, x2 = x1-LINE_SELECT_SENSITIVITY, x2+LINE_SELECT_SENSITIVITY
 				if y1 == y2: y1, y2 = y1-LINE_SELECT_SENSITIVITY, y2+LINE_SELECT_SENSITIVITY
 				if in_between(x, x1, x2) and in_between(y, y1, y2): return self
-- 
cgit v1.2.3