[Avida-cvs] [Avida2-svn] r406 - in branches/developers/avida-edward/source: main python python/AvidaGui2

kaben@myxo.css.msu.edu kaben at myxo.css.msu.edu
Tue Nov 29 10:13:05 PST 2005


Author: kaben
Date: 2005-11-29 13:13:05 -0500 (Tue, 29 Nov 2005)
New Revision: 406

Modified:
   branches/developers/avida-edward/source/main/cOrganism.h
   branches/developers/avida-edward/source/python/AvidaGui2/pyHardwareCPUTrace.py
   branches/developers/avida-edward/source/python/AvidaGui2/pyOrganismScopeView.py
   branches/developers/avida-edward/source/python/setup_osx.py.in
Log:


Modified: branches/developers/avida-edward/source/main/cOrganism.h
===================================================================
--- branches/developers/avida-edward/source/main/cOrganism.h	2005-11-29 17:19:00 UTC (rev 405)
+++ branches/developers/avida-edward/source/main/cOrganism.h	2005-11-29 18:13:05 UTC (rev 406)
@@ -224,6 +224,12 @@
   static int GetInstanceCount() { return instance_count; }
   void SetRunning(bool in_running) { is_running = in_running; }
   bool GetIsRunning() { return is_running; }
+
+  /*
+  Access for state-display in Avida-ED
+  */
+  int GetInputAt(int i){ return input_buf[i]; }
+  int GetOutputAt(int i){ return output_buf[i]; }
 };
 
 #endif

Modified: branches/developers/avida-edward/source/python/AvidaGui2/pyHardwareCPUTrace.py
===================================================================
--- branches/developers/avida-edward/source/python/AvidaGui2/pyHardwareCPUTrace.py	2005-11-29 17:19:00 UTC (rev 405)
+++ branches/developers/avida-edward/source/python/AvidaGui2/pyHardwareCPUTrace.py	2005-11-29 18:13:05 UTC (rev 406)
@@ -20,6 +20,10 @@
   def clearFrames(self):
     self.m_hardware_snapshots = []
 
+    self.m_ibuf_0_info = []
+    self.m_ibuf_1_info = []
+    self.m_ibuf_2_info = []
+    self.m_obuf_0_info = []
     self.m_genome_info = []
     self.m_ihead_info = []
     self.m_rhead_info = []
@@ -54,6 +58,11 @@
   def recordFrame(self, hardware):
     self.m_hardware_snapshots.append(cHardwareCPU(hardware))
 
+    self.m_ibuf_0_info.append(hardware.GetOrganism().GetInputAt(0))
+    self.m_ibuf_1_info.append(hardware.GetOrganism().GetInputAt(1))
+    self.m_ibuf_2_info.append(hardware.GetOrganism().GetInputAt(2))
+    self.m_obuf_0_info.append(hardware.GetOrganism().GetOutputAt(0))
+
     self.m_genome_info.append(hardware.GetMemory().AsString().GetData())
     self.m_ihead_info.append(hardware.GetHead(cHardwareDefs.s_HEAD_IP).GetPosition())
     self.m_rhead_info.append(hardware.GetHead(cHardwareDefs.s_HEAD_READ).GetPosition())

Modified: branches/developers/avida-edward/source/python/AvidaGui2/pyOrganismScopeView.py
===================================================================
--- branches/developers/avida-edward/source/python/AvidaGui2/pyOrganismScopeView.py	2005-11-29 17:19:00 UTC (rev 405)
+++ branches/developers/avida-edward/source/python/AvidaGui2/pyOrganismScopeView.py	2005-11-29 18:13:05 UTC (rev 406)
@@ -253,7 +253,7 @@
 class indicator(QCanvasRectangle):
   def __init__(self, anim, x, y, width, height):
     QCanvasRectangle.__init__(self, x, y, width, height, anim.canvas)
-    descr()
+    #descr()
     self.anim = anim
   def setBit(self, bit):
     self.setBrush(bit and self.anim.on_brush or self.anim.off_brush)
@@ -261,75 +261,359 @@
 
 class indicatorPolicy:
   def __init__(self, anim):
-    descr()
+    #descr()
     self.anim = anim
   def createIndicators(self):
-    a = self.anim
-    hw_anim = a.hw_anim
-    x = hw_anim.regs_anim.x
-    y = hw_anim.regs_anim.y
-    w = a.hardware_indicator_size
-    h = a.hardware_indicator_size
-    return [indicator(a, x + i*w, y, w, h) for i in xrange(32)]
+    w = self.anim.hardware_indicator_size
+    h = self.anim.hardware_indicator_size
+    return [indicator(self.anim, 0, 0, w, h) for i in xrange(32)]
+  def setBits(self, indicators, bits):
+    bit = 1
+    for indicator in indicators:
+      indicator.setBit(bit & bits)
+      bit = bit << 1
+  def width(self):
+    #descr()
+    return 32 * anim.hardware_indicator_size
+  def height(self):
+    #descr()
+    return anim.hardware_indicator_size
+  def setX(self, indicators, x):
+    #descr()
+    w = self.anim.hardware_indicator_size
+    cx = x + w * (len(indicators))
+    for indicator in indicators:
+      cx = cx - w
+      indicator.setX(cx)
+  def setY(self, indicators, y):
+    #descr()
+    for indicator in indicators:
+      indicator.setY(y)
+  def setZ(self, indicators, z):
+    #descr()
+    for indicator in indicators:
+      indicator.setZ(z)
+  def show(self, indicators):
+    #descr()
+    for indicator in indicators:
+      indicator.show()
+  def hide(self, indicators):
+    #descr()
+    for indicator in indicators:
+      indicator.hide()
+    
 
 class bufAnimator:
   def __init__(self, anim):
-    descr()
+    #descr()
     self.anim = anim
+    self.frames = None
     self.indicator_items = []
+    self.old_bits = 0
     self.indicator_policy = indicatorPolicy(self.anim)
-  def width(self):
-    return 32 * anim.hardware_indicator_size
-  def height(self):
-    return anim.hardware_indicator_size
 
   def setReadFnc(self, read_fnc):
     self.read_fnc = read_fnc
   def resetIndicators(self, indicator_items):
-    descr()
+    #descr()
     a = self.anim
     for item in indicator_items:
       if item is not None: item.setCanvas(None)
     return self.indicator_policy.createIndicators()
+
+  def width(self):
+    #descr()
+    return self.indicator_policy.width()
+  def height(self):
+    #descr()
+    return self.indicator_policy.height()
   def setX(self, x):
-    descr()
+    #descr()
+    return self.indicator_policy.setX(self.indicator_items, x)
   def setY(self, y):
-    descr()
+    #descr()
+    return self.indicator_policy.setY(self.indicator_items, y)
   def setZ(self, z):
-    descr()
+    #descr()
+    return self.indicator_policy.setZ(self.indicator_items, z)
   def show(self):
-    descr()
+    #descr()
+    return self.indicator_policy.show(self.indicator_items)
   def hide(self):
-    descr()
+    #descr()
+    return self.indicator_policy.hide(self.indicator_items)
   def setFrames(self, frames):
-    descr()
-    self.indicator_items = self.resetIndicators()
+    #descr(frames)
+    self.frames = frames
+    self.indicator_items = self.resetIndicators(self.indicator_items)
+    self.old_bits = 0
+    self.indicator_policy.setBits(self.indicator_items, self.old_bits)
+    if frames is not None:
+      for item in self.indicator_items:
+        item.show()
   def showFrame(self, frame_number):
-    descr()
+    if self.frames is not None:
+      new_bits = self.read_fnc(self.frames, frame_number)
+      if self.old_bits != new_bits:
+        self.indicator_policy.setBits(self.indicator_items, new_bits)
+        self.old_bits = new_bits
 
 
 class regsAnimator:
   def __init__(self, anim):
     descr()
     self.anim = anim
-    self.buf_anim = bufAnimator(self.anim)
+
+    self.in_label = None
+    self.out_label = None
+    self.stack_a_label = None
+    self.stack_b_label = None
+    self.regs_label = None
+
+    #self.dummy_anim = bufAnimator(self.anim)
+    #self.dummy_anim.setReadFnc(lambda f, fn: fn)
+
+    
+    #self.in0_anim = bufAnimator(self.anim)
+    #self.in0_anim.setReadFnc(lambda f, fn: f.getHardwareSnapshotAt(fn).GetOrganism().GetInputAt(0))
+    #self.in1_anim = bufAnimator(self.anim)
+    #self.in1_anim.setReadFnc(lambda f, fn: f.getHardwareSnapshotAt(fn).GetOrganism().GetInputAt(1))
+    #self.in2_anim = bufAnimator(self.anim)
+    #self.in2_anim.setReadFnc(lambda f, fn: f.getHardwareSnapshotAt(fn).GetOrganism().GetInputAt(2))
+
+    #self.out0_anim = bufAnimator(self.anim)
+    #self.out0_anim.setReadFnc(lambda f, fn: f.getHardwareSnapshotAt(fn).GetOrganism().GetOutputAt(0))
+
+    self.in0_anim = bufAnimator(self.anim)
+    self.in0_anim.setReadFnc(lambda f, fn: f.m_ibuf_0_info[fn])
+    self.in1_anim = bufAnimator(self.anim)
+    self.in1_anim.setReadFnc(lambda f, fn: f.m_ibuf_1_info[fn])
+    self.in2_anim = bufAnimator(self.anim)
+    self.in2_anim.setReadFnc(lambda f, fn: f.m_ibuf_2_info[fn])
+
+    self.out0_anim = bufAnimator(self.anim)
+    self.out0_anim.setReadFnc(lambda f, fn: f.m_obuf_0_info[fn])
+
+    self.stack_a_anims = [
+      bufAnimator(self.anim),
+      bufAnimator(self.anim),
+      bufAnimator(self.anim),
+      bufAnimator(self.anim),
+      bufAnimator(self.anim),
+      bufAnimator(self.anim),
+      bufAnimator(self.anim),
+      bufAnimator(self.anim),
+      bufAnimator(self.anim),
+      bufAnimator(self.anim),
+      bufAnimator(self.anim),
+    ]
+    self.stack_a_anims[0].setReadFnc(lambda f, fn: f.getHardwareSnapshotAt(fn).pyGetGlobalStack().Get(0))
+    self.stack_a_anims[1].setReadFnc(lambda f, fn: f.getHardwareSnapshotAt(fn).pyGetGlobalStack().Get(1))
+    self.stack_a_anims[2].setReadFnc(lambda f, fn: f.getHardwareSnapshotAt(fn).pyGetGlobalStack().Get(2))
+    self.stack_a_anims[3].setReadFnc(lambda f, fn: f.getHardwareSnapshotAt(fn).pyGetGlobalStack().Get(3))
+    self.stack_a_anims[4].setReadFnc(lambda f, fn: f.getHardwareSnapshotAt(fn).pyGetGlobalStack().Get(4))
+    self.stack_a_anims[5].setReadFnc(lambda f, fn: f.getHardwareSnapshotAt(fn).pyGetGlobalStack().Get(5))
+    self.stack_a_anims[6].setReadFnc(lambda f, fn: f.getHardwareSnapshotAt(fn).pyGetGlobalStack().Get(6))
+    self.stack_a_anims[7].setReadFnc(lambda f, fn: f.getHardwareSnapshotAt(fn).pyGetGlobalStack().Get(7))
+    self.stack_a_anims[8].setReadFnc(lambda f, fn: f.getHardwareSnapshotAt(fn).pyGetGlobalStack().Get(8))
+    self.stack_a_anims[9].setReadFnc(lambda f, fn: f.getHardwareSnapshotAt(fn).pyGetGlobalStack().Get(9))
+
+    self.stack_b_anims = [
+      bufAnimator(self.anim),
+      bufAnimator(self.anim),
+      bufAnimator(self.anim),
+      bufAnimator(self.anim),
+      bufAnimator(self.anim),
+      bufAnimator(self.anim),
+      bufAnimator(self.anim),
+      bufAnimator(self.anim),
+      bufAnimator(self.anim),
+      bufAnimator(self.anim),
+      bufAnimator(self.anim),
+    ]
+    self.stack_b_anims[0].setReadFnc(lambda f, fn: f.getThreadsSnapshotAt(fn)[0].stack.Get(0))
+    self.stack_b_anims[1].setReadFnc(lambda f, fn: f.getThreadsSnapshotAt(fn)[0].stack.Get(1))
+    self.stack_b_anims[2].setReadFnc(lambda f, fn: f.getThreadsSnapshotAt(fn)[0].stack.Get(2))
+    self.stack_b_anims[3].setReadFnc(lambda f, fn: f.getThreadsSnapshotAt(fn)[0].stack.Get(3))
+    self.stack_b_anims[4].setReadFnc(lambda f, fn: f.getThreadsSnapshotAt(fn)[0].stack.Get(4))
+    self.stack_b_anims[5].setReadFnc(lambda f, fn: f.getThreadsSnapshotAt(fn)[0].stack.Get(5))
+    self.stack_b_anims[6].setReadFnc(lambda f, fn: f.getThreadsSnapshotAt(fn)[0].stack.Get(6))
+    self.stack_b_anims[7].setReadFnc(lambda f, fn: f.getThreadsSnapshotAt(fn)[0].stack.Get(7))
+    self.stack_b_anims[8].setReadFnc(lambda f, fn: f.getThreadsSnapshotAt(fn)[0].stack.Get(8))
+    self.stack_b_anims[9].setReadFnc(lambda f, fn: f.getThreadsSnapshotAt(fn)[0].stack.Get(9))
+
+    #for j in xrange(cHardwareDefs.s_STACK_SIZE):
+    #  stack_anim = bufAnimator(self.anim)
+    #  stack_anim.setReadFnc(lambda f, fn: f.getThreadsSnapshotAt(fn)[0].stack.Get(j))
+    #  self.stack_a_anims.append(stack_anim)
+
+    self.rega_anim = bufAnimator(self.anim)
+    self.rega_anim.setReadFnc(lambda f, fn: f.getThreadsSnapshotAt(fn)[0].GetRegister(cHardwareCPUDefs.s_REG_AX))
+    self.regb_anim = bufAnimator(self.anim)
+    self.regb_anim.setReadFnc(lambda f, fn: f.getThreadsSnapshotAt(fn)[0].GetRegister(cHardwareCPUDefs.s_REG_BX))
+    self.regc_anim = bufAnimator(self.anim)
+    self.regc_anim.setReadFnc(lambda f, fn: f.getThreadsSnapshotAt(fn)[0].GetRegister(cHardwareCPUDefs.s_REG_CX))
+
   def size(self):
     descr()
     if not self.anim.show_registers_flag:
       return 0, 0
+    return self.rega_anim.width(), 4*self.rega_anim.height()
+  
+  def _positionSubanimator(self, sa, frames, x, y):
+    sa.setFrames(frames)
+    sa.setX(x)
+    sa.setY(y)
   def setFrames(self, frames):
     descr()
-    #if self.anim.show_hardware_flag and self.anim.show_registers_flag:
-    #  pass
-    #else:
-    #  pass
+    setourframes = (
+      #(self.dummy_anim, self.anim.hw_anim.regs_anim.y),
+      (self.in0_anim, self.anim.hw_anim.regs_anim.y + 2 * self.anim.hardware_indicator_size),
+      (self.in1_anim, self.anim.hw_anim.regs_anim.y + 3 * self.anim.hardware_indicator_size),
+      (self.in2_anim, self.anim.hw_anim.regs_anim.y + 4 * self.anim.hardware_indicator_size),
+
+      (self.out0_anim, self.anim.hw_anim.regs_anim.y + 7 * self.anim.hardware_indicator_size),
+
+      (self.rega_anim, self.anim.hw_anim.regs_anim.y + 10 * self.anim.hardware_indicator_size),
+      (self.regb_anim, self.anim.hw_anim.regs_anim.y + 11 * self.anim.hardware_indicator_size),
+      (self.regc_anim, self.anim.hw_anim.regs_anim.y + 12 * self.anim.hardware_indicator_size),
+
+      (self.stack_a_anims[0], self.anim.hw_anim.regs_anim.y + 15 * self.anim.hardware_indicator_size),
+      (self.stack_a_anims[1], self.anim.hw_anim.regs_anim.y + 16 * self.anim.hardware_indicator_size),
+      (self.stack_a_anims[2], self.anim.hw_anim.regs_anim.y + 17 * self.anim.hardware_indicator_size),
+      (self.stack_a_anims[3], self.anim.hw_anim.regs_anim.y + 18 * self.anim.hardware_indicator_size),
+      (self.stack_a_anims[4], self.anim.hw_anim.regs_anim.y + 19 * self.anim.hardware_indicator_size),
+      (self.stack_a_anims[5], self.anim.hw_anim.regs_anim.y + 20 * self.anim.hardware_indicator_size),
+      (self.stack_a_anims[6], self.anim.hw_anim.regs_anim.y + 21 * self.anim.hardware_indicator_size),
+      (self.stack_a_anims[7], self.anim.hw_anim.regs_anim.y + 22 * self.anim.hardware_indicator_size),
+      (self.stack_a_anims[8], self.anim.hw_anim.regs_anim.y + 23 * self.anim.hardware_indicator_size),
+      (self.stack_a_anims[9], self.anim.hw_anim.regs_anim.y + 24 * self.anim.hardware_indicator_size),
+
+      (self.stack_b_anims[0], self.anim.hw_anim.regs_anim.y + 27 * self.anim.hardware_indicator_size),
+      (self.stack_b_anims[1], self.anim.hw_anim.regs_anim.y + 28 * self.anim.hardware_indicator_size),
+      (self.stack_b_anims[2], self.anim.hw_anim.regs_anim.y + 29 * self.anim.hardware_indicator_size),
+      (self.stack_b_anims[3], self.anim.hw_anim.regs_anim.y + 30 * self.anim.hardware_indicator_size),
+      (self.stack_b_anims[4], self.anim.hw_anim.regs_anim.y + 31 * self.anim.hardware_indicator_size),
+      (self.stack_b_anims[5], self.anim.hw_anim.regs_anim.y + 32 * self.anim.hardware_indicator_size),
+      (self.stack_b_anims[6], self.anim.hw_anim.regs_anim.y + 33 * self.anim.hardware_indicator_size),
+      (self.stack_b_anims[7], self.anim.hw_anim.regs_anim.y + 34 * self.anim.hardware_indicator_size),
+      (self.stack_b_anims[8], self.anim.hw_anim.regs_anim.y + 35 * self.anim.hardware_indicator_size),
+      (self.stack_b_anims[9], self.anim.hw_anim.regs_anim.y + 36 * self.anim.hardware_indicator_size),
+    )
+    for setme in setourframes:
+      self._positionSubanimator(setme[0], frames, self.anim.hw_anim.regs_anim.x, setme[1])
+
+    if self.in_label is not None:
+      self.in_label.setCanvas(None)
+      del self.in_label
+      self.in_label = None
+    if self.out_label is not None:
+      self.out_label.setCanvas(None)
+      del self.out_label
+      self.out_label = None
+    if self.stack_a_label is not None:
+      self.stack_a_label.setCanvas(None)
+      del self.stack_a_label
+      self.stack_a_label = None
+    if self.stack_b_label is not None:
+      self.stack_b_label.setCanvas(None)
+      del self.stack_b_label
+      self.stack_b_label = None
+    if self.regs_label is not None:
+      self.regs_label.setCanvas(None)
+      del self.regs_label
+      self.regs_label = None
+
+    if frames is not None:
+      self.in_label = QCanvasText("Input Buffer", self.anim.font, self.anim.canvas)
+      self.in_label.setX(self.anim.hw_anim.regs_anim.x)
+      self.in_label.setY(self.anim.hw_anim.regs_anim.y -1 + 0 * self.anim.hardware_indicator_size)
+      self.in_label.show()
+
+      self.out_label = QCanvasText("Output Buffer", self.anim.font, self.anim.canvas)
+      self.out_label.setX(self.anim.hw_anim.regs_anim.x)
+      self.out_label.setY(self.anim.hw_anim.regs_anim.y -1 + 5 * self.anim.hardware_indicator_size)
+      self.out_label.show()
+
+      self.regs_label = QCanvasText("Registers A, B, C", self.anim.font, self.anim.canvas)
+      self.regs_label.setX(self.anim.hw_anim.regs_anim.x)
+      self.regs_label.setY(self.anim.hw_anim.regs_anim.y -1 + 8 * self.anim.hardware_indicator_size)
+      self.regs_label.show()
+
+      self.stack_a_label = QCanvasText("Stack A", self.anim.font, self.anim.canvas)
+      self.stack_a_label.setX(self.anim.hw_anim.regs_anim.x)
+      self.stack_a_label.setY(self.anim.hw_anim.regs_anim.y -1 + 13 * self.anim.hardware_indicator_size)
+      self.stack_a_label.show()
+
+      self.stack_b_label = QCanvasText("Stack B", self.anim.font, self.anim.canvas)
+      self.stack_b_label.setX(self.anim.hw_anim.regs_anim.x)
+      self.stack_b_label.setY(self.anim.hw_anim.regs_anim.y -1 + 25 * self.anim.hardware_indicator_size)
+      self.stack_b_label.show()
+
+
+    #self.in_label.setTextFlags(Qt.AlignLeft | Qt.AlignBottom)
+    #self.in_label.setFont(anim.font)
+    #self.in_label.setText("Input Buffer")
+
+    #self.out_label = QCanvasText(self.anim.canvas)
+    #self.out_label.setTextFlags(Qt.AlignLeft | Qt.AlignBottom)
+    #self.out_label.setFont(anim.font)
+    #self.out_label.setText("Output Buffer")
+
+    #self.stack_a_label = QCanvasText(self.anim.canvas)
+    #self.stack_a_label.setTextFlags(Qt.AlignLeft | Qt.AlignBottom)
+    #self.stack_a_label.setFont(anim.font)
+    #self.stack_a_label.setText("Stack A")
+
+    #self.stack_b_label = QCanvasText(self.anim.canvas)
+    #self.stack_b_label.setTextFlags(Qt.AlignLeft | Qt.AlignBottom)
+    #self.stack_b_label.setFont(anim.font)
+    #self.stack_b_label.setText("Stack B")
+
+    #self.regs_label = QCanvasText(self.anim.canvas)
+    #self.regs_label.setTextFlags(Qt.AlignLeft | Qt.AlignBottom)
+    #self.regs_label.setFont(anim.font)
+    #self.regs_label.setText("Registers A, B, C")
+
   def showFrame(self, frame_number):
-    descr()
-    #if self.anim.show_hardware_flag and self.anim.show_registers_flag:
-    #  pass
-    #else:
-    #  pass
+    #descr()
+    showourframes = (
+      #self.dummy_anim,
+      self.in0_anim,
+      self.in1_anim,
+      self.in2_anim,
 
+      self.out0_anim,
+
+      self.rega_anim,
+      self.regb_anim,
+      self.regc_anim,
+
+      self.stack_a_anims[0],
+      self.stack_a_anims[1],
+      self.stack_a_anims[2],
+      self.stack_a_anims[3],
+      self.stack_a_anims[4],
+      self.stack_a_anims[5],
+      self.stack_a_anims[6],
+      self.stack_a_anims[7],
+      self.stack_a_anims[8],
+      self.stack_a_anims[9],
+
+      self.stack_b_anims[0],
+      self.stack_b_anims[1],
+      self.stack_b_anims[2],
+      self.stack_b_anims[3],
+      self.stack_b_anims[4],
+      self.stack_b_anims[5],
+      self.stack_b_anims[6],
+      self.stack_b_anims[7],
+      self.stack_b_anims[8],
+      self.stack_b_anims[9],
+    )
+    for showme in showourframes:
+      showme.showFrame(frame_number)
+
 class stackAnimator:
   def __init__(self, anim):
     descr()
@@ -402,7 +686,7 @@
     #]
 
   def showFrame(self, frame_number):
-    descr()
+    #descr()
     self.regs_anim.showFrame(frame_number)
 
 class dataAnimator:
@@ -495,9 +779,9 @@
     self.default_color_saturation = 100
     self.default_color_value = 248
 
-    self.on_brush = QBrush(Qt.white)
+    self.on_brush = QBrush(Qt.red)
     self.off_brush = QBrush(Qt.black)
-    self.on_pen = QPen(Qt.white)
+    self.on_pen = QPen(Qt.red)
     self.off_pen = QPen(Qt.black)
 
     self.hardware_indicator_size = 4
@@ -565,7 +849,7 @@
     Forwards call to .showFrame() of various subanimators, then updates
     canvas.
     """
-    descr()
+    #descr()
     self.instructions_anim.showFrame(frame_number)
     self.heads_anim.showFrame(frame_number)
     self.hw_anim.showFrame(frame_number)
@@ -585,7 +869,7 @@
 
     XXX
 
-    This has become hackish. It was supposed to manage required layout
+    This has become too hacky. It was supposed to manage required layout
     changes, but the code that does this has been scattered all over the
     place, and needs reconsolidation. @kgn
     """

Modified: branches/developers/avida-edward/source/python/setup_osx.py.in
===================================================================
--- branches/developers/avida-edward/source/python/setup_osx.py.in	2005-11-29 17:19:00 UTC (rev 405)
+++ branches/developers/avida-edward/source/python/setup_osx.py.in	2005-11-29 18:13:05 UTC (rev 406)
@@ -19,6 +19,12 @@
 # 
 py2app.util.SCMDIRS=['CVS']
 
+# Hack, similar to above in purpose, for an earlier version of py2app.
+#
+def do_not_skip_scm(ofn):
+  return True
+py2app.util.skipscm = do_not_skip_scm
+
 # Tell Python where to find Avida and Avida-ED python modules and packages.
 avida_ed_python_basedir = '${CMAKE_CURRENT_SOURCE_DIR}'
 site.addsitedir(avida_ed_python_basedir)




More information about the Avida-cvs mailing list