[Avida-cvs] [Avida2-svn] r234 - trunk/source/python/AvidaGui2

kaben@myxo.css.msu.edu kaben at myxo.css.msu.edu
Tue Jul 12 11:05:00 PDT 2005


Author: kaben
Date: 2005-07-12 14:05:00 -0400 (Tue, 12 Jul 2005)
New Revision: 234

Modified:
   trunk/source/python/AvidaGui2/pyOrganismScopeView.py
Log:

Added instruction, read, write, and flow heads to organism viewer.



Modified: trunk/source/python/AvidaGui2/pyOrganismScopeView.py
===================================================================
--- trunk/source/python/AvidaGui2/pyOrganismScopeView.py	2005-07-12 17:56:44 UTC (rev 233)
+++ trunk/source/python/AvidaGui2/pyOrganismScopeView.py	2005-07-12 18:05:00 UTC (rev 234)
@@ -65,13 +65,23 @@
     if hasattr(self, "m_ihead_move_items") and self.m_ihead_move_items is not None:
       for item in self.m_ihead_move_items:
         item.setCanvas(None)
+    if hasattr(self, "m_ihead_item") and self.m_ihead_item is not None:
+      m_ihead_item.setCanvas(None)
+    if hasattr(self, "m_rhead_item") and self.m_rhead_item is not None:
+      m_rhead_item.setCanvas(None)
+    if hasattr(self, "m_whead_item") and self.m_whead_item is not None:
+      m_whead_item.setCanvas(None)
+    if hasattr(self, "m_fhead_item") and self.m_fhead_item is not None:
+      m_fhead_item.setCanvas(None)
+
     self.m_instruction_items = None
-    self.m_task_items = None
+    self.m_instruction_bg_items = None
+    self.m_ihead_move_items = None
     self.m_ihead_item = None
     self.m_rhead_item = None
     self.m_whead_item = None
     self.m_fhead_item = None
-    self.m_ihead_move_items = None
+    self.m_task_items = None
 
     self.m_task_names = None
     self.m_inst_names = None
@@ -114,9 +124,38 @@
           item.setZ(1.)
         for item in self.m_instruction_bg_items:
           item.setZ(0.)
+      text_height = 2 * 3.14159 * self.m_max_circle_radius / self.m_max_genome_size
+      font = QFont(self.font())
+      point_size_float = self.m_font_oversize_factor * text_height * self.m_font_points_per_pixel
+      font.setPointSizeFloat(point_size_float)
+      if self.m_frames.m_ihead_info is not None:
+        self.m_ihead_item = QCanvasText(self.m_canvas)
+        self.m_ihead_item.setTextFlags(Qt.AlignCenter)
+        self.m_ihead_item.setZ(1.)
+        self.m_ihead_item.setFont(font)
+        self.m_ihead_item.setText('i')
+      if self.m_frames.m_rhead_info is not None:
+        self.m_rhead_item = QCanvasText(self.m_canvas)
+        self.m_rhead_item.setTextFlags(Qt.AlignCenter)
+        self.m_rhead_item.setZ(1.)
+        self.m_rhead_item.setFont(font)
+        self.m_rhead_item.setText('r')
+      if self.m_frames.m_whead_info is not None:
+        self.m_whead_item = QCanvasText(self.m_canvas)
+        self.m_whead_item.setTextFlags(Qt.AlignCenter)
+        self.m_whead_item.setZ(1.)
+        self.m_whead_item.setFont(font)
+        self.m_whead_item.setText('w')
+      if self.m_frames.m_fhead_info is not None:
+        self.m_fhead_item = QCanvasText(self.m_canvas)
+        self.m_fhead_item.setTextFlags(Qt.AlignCenter)
+        self.m_fhead_item.setZ(1.)
+        self.m_fhead_item.setFont(font)
+        self.m_fhead_item.setText('f')
       if self.m_frames.m_ihead_moves is not None:
         #self.m_ihead_move_items = [QCanvasSpline(self.m_canvas) for i in xrange(len(self.m_frames.m_ihead_moves))]
         self.m_ihead_move_items = [pyHeadPath(self.m_canvas) for i in xrange(len(self.m_frames.m_ihead_moves))]
+
       if self.m_frames.m_is_viable:
         self.emit(PYSIGNAL("gestationTimeChangedSig"),(self.m_frames.m_gestation_time,))
       else:
@@ -151,6 +190,7 @@
       for item in self.m_instruction_bg_items:
         item.setSize(point_size_float, point_size_float)
       self.m_circles = []
+      self.m_head_circles = []
       self.m_circle_radii = []
       for frame_no in xrange(self.m_frames.m_gestation_time):
         organism_current_size = max(self.m_frames.m_last_copy_info[frame_no] + 1, self.m_frames.m_size)
@@ -159,14 +199,19 @@
         dt = 2 * 3.14159 / (organism_current_size + 1)
         angle_offset = 3.14159 / 2
         circle_pts = []
+        head_circle_pts = []
         for i in xrange(organism_current_size):
           theta = i * dt + angle_offset
           c = math.cos(theta)
           s = -math.sin(theta)
           x = radius * c + self.m_circle_center_x
           y = radius * s + self.m_circle_center_y
+          h_x = (radius + 10) * c + self.m_circle_center_x
+          h_y = (radius + 10) * s + self.m_circle_center_y
           circle_pts.append((x,y))
+          head_circle_pts.append((h_x,h_y))
         self.m_circles.append(circle_pts)
+        self.m_head_circles.append(head_circle_pts)
         self.m_circle_radii.append(radius)
 
   def showFrame(self, frame_number = 0):
@@ -200,6 +245,7 @@
       self.m_current_frame_number = frame_number
       self.m_current_radius = self.m_circle_radii[frame_number]
       circle_pts = self.m_circles[frame_number]
+      head_circle_pts = self.m_head_circles[frame_number]
       if self.m_frames.m_genome_info is not None:
         self.m_current_genome = self.m_frames.m_genome_info[frame_number]
         if old_genome is None:
@@ -357,18 +403,37 @@
 
       if self.m_frames.m_ihead_info is not None:
         self.m_current_ihead = self.m_frames.m_ihead_info[frame_number]
-        # Update changed ihead_item.
+        if len(head_circle_pts) < self.m_current_ihead:
+          self.m_current_ihead = -1
+        self.m_ihead_item.setX(head_circle_pts[self.m_current_ihead][0])
+        self.m_ihead_item.setY(head_circle_pts[self.m_current_ihead][1])
+        self.m_ihead_item.show()
 
       if self.m_frames.m_rhead_info is not None:
         self.m_current_rhead = self.m_frames.m_rhead_info[frame_number]
+        if len(head_circle_pts) <= self.m_current_rhead:
+          self.m_current_rhead = -1
+        self.m_rhead_item.setX(head_circle_pts[self.m_current_rhead][0])
+        self.m_rhead_item.setY(head_circle_pts[self.m_current_rhead][1])
+        self.m_rhead_item.show()
         # Update changed rhead_item.
 
       if self.m_frames.m_whead_info is not None:
         self.m_current_whead = self.m_frames.m_whead_info[frame_number]
+        if len(head_circle_pts) <= self.m_current_whead:
+          self.m_current_whead = -1
+        self.m_whead_item.setX(head_circle_pts[self.m_current_whead][0])
+        self.m_whead_item.setY(head_circle_pts[self.m_current_whead][1])
+        self.m_whead_item.show()
         # Update changed whead_item.
 
       if self.m_frames.m_fhead_info is not None:
         self.m_current_fhead = self.m_frames.m_fhead_info[frame_number]
+        if len(head_circle_pts) <= self.m_current_fhead:
+          self.m_current_fhead = -1
+        self.m_fhead_item.setX(head_circle_pts[self.m_current_fhead][0])
+        self.m_fhead_item.setY(head_circle_pts[self.m_current_fhead][1])
+        self.m_fhead_item.show()
         # Update changed fhead_item.
 
     self.m_canvas.update()




More information about the Avida-cvs mailing list