[Avida-cvs] [Avida2-svn] r40 - trunk/source/python/AvidaGui2
kaben at myxo.css.msu.edu
kaben at myxo.css.msu.edu
Mon Mar 7 12:57:12 PST 2005
Author: kaben
Date: 2005-03-07 15:57:11 -0500 (Mon, 07 Mar 2005)
New Revision: 40
Added:
trunk/source/python/AvidaGui2/pyAvida.py
Modified:
trunk/source/python/AvidaGui2/pyAvidaThreadedDriver.py
trunk/source/python/AvidaGui2/pyEduSessionMenuBarHdlr.py
trunk/source/python/AvidaGui2/pyGradientScaleCtrl.py
trunk/source/python/AvidaGui2/pyLiveControlsCtrl.py
trunk/source/python/AvidaGui2/pyMainControllerFactory.py
trunk/source/python/AvidaGui2/pyOnePop_GraphCtrl.py
trunk/source/python/AvidaGui2/pyOnePop_StatsCtrl.py
trunk/source/python/AvidaGui2/pyOnePop_TimelineCtrl.py
trunk/source/python/AvidaGui2/pyOnePopulationCtrl.py
trunk/source/python/AvidaGui2/pyPetriDishCtrl.py
trunk/source/python/AvidaGui2/pySessionCtrl.py
trunk/source/python/AvidaGui2/pySessionDumbCtrl.py
trunk/source/python/AvidaGui2/pySessionWorkThreadHdlr.py
trunk/source/python/AvidaGui2/pyTemporaryReloads.py
Log:
* AvidaEd no longer starts an Avida session at launch time. Instead an
Avida object can be created after launch time using the sequence of
commands:
avida = pyAvida()
avida.construct(genesis)
For debugging and demonstration, the dumb controller
(pySessionDumbCtrl.py) now has a debugging menu item "Load Petri Dish
Config File" that triggers the above sequence of commands to
instantiate an Avida object (see
pySessionDumbCtrl.doLoadPetriDishConfigFileSlot()).
Added: trunk/source/python/AvidaGui2/pyAvida.py
===================================================================
--- trunk/source/python/AvidaGui2/pyAvida.py 2005-02-28 20:52:41 UTC (rev 39)
+++ trunk/source/python/AvidaGui2/pyAvida.py 2005-03-07 20:57:11 UTC (rev 40)
@@ -0,0 +1,157 @@
+#
+# pyAvida.py
+# AvidaEd
+#
+# Created by Kaben Nanlohy on 05.3.3.
+# Copyright (c) 2005 __MyCompanyName__. All rights reserved.
+#
+import pyAvidaThreadedDriver; reload(pyAvidaThreadedDriver)
+from pyAvidaThreadedDriver import *
+
+import pyMdtr; reload(pyMdtr)
+from pyMdtr import *
+
+import qt
+from AvidaCore import *
+
+class pyAvida(qt.QObject):
+
+ def __init__(self):
+ qt.QObject.__init__(self, None, self.__class__.__name__)
+
+ def construct(self, genesis):
+ self.m_name = genesis.GetFilename()
+ self.m_environment = cEnvironment()
+ cConfig.Setup(genesis)
+ if 0 == self.m_environment.Load(cConfig.GetEnvironmentFilename()):
+ print "Unable to load environment... aborting."
+ self.m_population = None
+ return None
+
+ self.m_environment.GetInstSet().SetInstLib(cHardwareCPU.GetInstLib())
+ cHardwareUtil.LoadInstSet_CPUOriginal(
+ cConfig.GetInstFilename(),
+ self.m_environment.GetInstSet())
+ cConfig.SetNumInstructions(self.m_environment.GetInstSet().GetSize())
+ cConfig.SetNumTasks(self.m_environment.GetTaskLib().GetSize())
+ cConfig.SetNumReactions(self.m_environment.GetReactionLib().GetSize())
+ cConfig.SetNumResources(self.m_environment.GetResourceLib().GetSize())
+
+ # Test-CPU creation.
+ test_interface = cPopulationInterface()
+ BuildTestPopInterface(test_interface)
+ cTestCPU.Setup(
+ self.m_environment.GetInstSet(),
+ self.m_environment,
+ self.m_environment.GetResourceLib().GetSize(),
+ test_interface)
+
+ self.m_avida_threaded_driver = pyAvidaThreadedDriver(self.m_environment)
+ self.m_avida_threaded_driver.construct()
+ self.m_population = self.m_avida_threaded_driver.GetPopulation()
+ self.m_avida_thread_mdtr = pyMdtr()
+ self.m_should_update = False
+
+ self.connect(
+ self.m_avida_thread_mdtr,
+ qt.PYSIGNAL("doPauseAvidaSig"),
+ self.doPauseAvidaSlot)
+ self.connect(
+ self.m_avida_thread_mdtr,
+ qt.PYSIGNAL("doStartAvidaSig"),
+ self.doStartAvidaSlot)
+ self.connect(
+ self.m_avida_thread_mdtr,
+ qt.PYSIGNAL("doUpdateAvidaSig"),
+ self.doUpdateAvidaSlot)
+ self.connect(
+ self.m_avida_thread_mdtr,
+ qt.PYSIGNAL("doCloseAvidaSig"),
+ self.doCloseAvidaSlot)
+
+ self.m_update_ck_timer = qt.QTimer()
+ self.connect(
+ self.m_update_ck_timer,
+ qt.SIGNAL("timeout()"),
+ self.updateCheckSlot)
+ self.m_update_ck_timer.start(0)
+
+ return self
+
+ def destruct(self):
+ self.m_avida_thread_mdtr.emit(qt.PYSIGNAL("doCloseAvidaSig"),())
+ if hasattr(self, "m_update_ck_timer"):
+ self.m_update_ck_timer.stop()
+ del self.m_update_ck_timer
+ else:
+ print("pyAvida.destruct() self.m_update_ck_timer missing.")
+
+ self.disconnect(
+ self.m_avida_thread_mdtr,
+ qt.PYSIGNAL("doPauseAvidaSig"),
+ self.doPauseAvidaSlot)
+ self.disconnect(
+ self.m_avida_thread_mdtr,
+ qt.PYSIGNAL("doStartAvidaSig"),
+ self.doStartAvidaSlot)
+ self.disconnect(
+ self.m_avida_thread_mdtr,
+ qt.PYSIGNAL("doUpdateAvidaSig"),
+ self.doUpdateAvidaSlot)
+ self.disconnect(
+ self.m_avida_thread_mdtr,
+ qt.PYSIGNAL("doCloseAvidaSig"),
+ self.doCloseAvidaSlot)
+
+ if hasattr(self, "m_avida_thread_mdtr"):
+ del self.m_avida_thread_mdtr
+ else:
+ print("pyAvida.destruct() self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr missing.")
+
+ if hasattr(self, "updated_semaphore"):
+ del self.m_updated_semaphore
+ else:
+ print("pyAvida.destruct() self.m_updated_semaphore missing.")
+
+ if hasattr(self, "m_avida_threaded_driver"):
+ self.m_avida_threaded_driver.doExit()
+ self.m_avida_threaded_driver.m_thread.join()
+ del self.m_avida_threaded_driver
+ else:
+ print("pyAvida.destruct() self.m_avida_threaded_driver missing.")
+
+ print("pyAvida.destruct() done.")
+
+ def __del__(self):
+ print("pyAvida.__del__()...")
+ self.destruct()
+ print("pyAvida.__del__() done.")
+
+ def updateCheckSlot(self):
+ if self.m_avida_threaded_driver.m_updated_semaphore.acquire(False):
+ self.m_avida_thread_mdtr.emit(qt.PYSIGNAL("AvidaUpdatedSig"),())
+ if True == self.m_should_update:
+ self.doUpdateAvidaSlot()
+
+ def doPauseAvidaSlot(self):
+ self.m_should_update = False;
+
+ def doStartAvidaSlot(self):
+ self.m_should_update = True;
+ self.doUpdateAvidaSlot()
+
+ def doUpdateAvidaSlot(self):
+ try:
+ self.m_avida_threaded_driver.doUpdate()
+ except AttributeError:
+ pass
+
+ def doStepAvidaSlot(self, cell_id):
+ print("doStepAvidaSlot")
+
+ def doCloseAvidaSlot(self):
+ self.m_avida_threaded_driver.doExit()
+ if self.m_avida_threaded_driver.m_thread.isAlive():
+ self.m_avida_threaded_driver.m_thread.join()
+ else:
+ print("pyAvida.doCloseAvidaSlot() thread is dead!")
Modified: trunk/source/python/AvidaGui2/pyAvidaThreadedDriver.py
===================================================================
--- trunk/source/python/AvidaGui2/pyAvidaThreadedDriver.py 2005-02-28 20:52:41 UTC (rev 39)
+++ trunk/source/python/AvidaGui2/pyAvidaThreadedDriver.py 2005-03-07 20:57:11 UTC (rev 40)
@@ -5,7 +5,7 @@
class pyAvidaThreadedDriver(pyAvidaDriver):
def construct(self):
- self.doSetProcessBitesize(30)
+ self.doSetProcessBitesize(1)
self.m_thread.start()
def __init__(self, environment):
self.m_environment = environment
@@ -16,6 +16,8 @@
I'm using the wrong locking model in the driver threads...
I need to lock on access to the Avida core library, rather than on
per-thread locks (in order to protect static data in the library).
+ ...
+ (so, think of a good way to associate a library mutex with the Avida libraries.)
""")
self.m_lock = threading.Lock()
self.m_do_update_semaphore = threading.Semaphore(0)
Modified: trunk/source/python/AvidaGui2/pyEduSessionMenuBarHdlr.py
===================================================================
--- trunk/source/python/AvidaGui2/pyEduSessionMenuBarHdlr.py 2005-02-28 20:52:41 UTC (rev 39)
+++ trunk/source/python/AvidaGui2/pyEduSessionMenuBarHdlr.py 2005-03-07 20:57:11 UTC (rev 40)
@@ -44,53 +44,6 @@
self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
qt.PYSIGNAL("doSetupMainWindowMenuBarSig"), self.doSetupMainWindowMenuBarSlot)
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doNewWorkspaceSig"), self.doNewWorkspaceSlot)
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doSaveWorkspaceSig"), self.doSaveWorkspaceSlot)
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doSaveWorkspaceAsSig"), self.doSaveWorkspaceAsSlot)
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doOpenWorkspaceSig"), self.doOpenWorkspaceSlot)
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doCloseWorkspaceSig"), self.doCloseWorkspaceSlot)
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doImportSig"), self.doImportSlot)
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doExportSig"), self.doExportSlot)
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doQuitSig"), self.doQuitSlot)
-
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doUndoSig"), self.doUndoSlot)
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doRedoSig"), self.doRedoSlot)
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doCutSig"), self.doCutSlot)
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doCopySig"), self.doCopySlot)
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doPasteSig"), self.doPasteSlot)
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doSelectAllSig"), self.doSelectAllSlot)
-
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doStartSig"), self.doStartSlot)
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doPauseSig"), self.doPauseSlot)
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doNextUpdateSig"), self.doNextUpdateSlot)
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doNextStepSig"), self.doNextStepSlot)
-
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doWorkspaceWindowTmpSig"), self.doWorkspaceWindowTmpSlot)
-
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doZoomWindowSig"), self.doZoomWindowSlot)
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doMinimizeWindowSig"), self.doMinimizeWindowSlot)
-
def doSetupMainWindowMenuBarSlot(self, main_window):
main_window.m_menu_bar = main_window.menuBar()
main_window.m_file_menu = qt.QPopupMenu()
@@ -171,63 +124,8 @@
self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr, qt.PYSIGNAL("doMinimizeWindowSig"))
main_window.m_menu_bar.insertItem("Window", main_window.m_window_menu)
- def doNewWorkspaceSlot(self):
- print "pyEduSessionMenuBarHdlr.doNewWorkspaceSlot()."
- def doSaveWorkspaceSlot(self):
- print "pyEduSessionMenuBarHdlr.doSaveWorkspaceSlot()."
- def doSaveWorkspaceAsSlot(self):
- print "pyEduSessionMenuBarHdlr.doSaveWorkspaceAsSlot()."
- def doOpenWorkspaceSlot(self):
- print "pyEduSessionMenuBarHdlr.doOpenWorkspaceSlot()."
- def doCloseWorkspaceSlot(self):
- print "pyEduSessionMenuBarHdlr.doCloseWorkspaceSlot()."
- self.m_session_mdl.m_session_mdtr.emit(qt.PYSIGNAL("doOrphanSessionSig"), ())
- def doImportSlot(self):
- print "pyEduSessionMenuBarHdlr.doImportSlot()."
- def doExportSlot(self):
- print "pyEduSessionMenuBarHdlr.doExportSlot()."
- def doQuitSlot(self):
- print "pyEduSessionMenuBarHdlr.doQuitSlot()."
+ main_window.setupCustomMenus(self)
-
- def doUndoSlot(self):
- print "pyEduSessionMenuBarHdlr.doUndoSlot()."
- def doRedoSlot(self):
- print "pyEduSessionMenuBarHdlr.doRedoSlot()."
- def doCutSlot(self):
- print "pyEduSessionMenuBarHdlr.doCutSlot()."
- def doCopySlot(self):
- print "pyEduSessionMenuBarHdlr.doCopySlot()."
- def doPasteSlot(self):
- print "pyEduSessionMenuBarHdlr.doPasteSlot()."
- def doSelectAllSlot(self):
- print "pyEduSessionMenuBarHdlr.doSelectAllSlot()."
-
-
- def doStartSlot(self):
- print "pyEduSessionMenuBarHdlr.doStartSlot()."
- self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr.emit(qt.PYSIGNAL("doStartSig"), ())
- def doPauseSlot(self):
- print "pyEduSessionMenuBarHdlr.doPauseSlot()."
- self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr.emit(qt.PYSIGNAL("doPauseSig"), ())
- def doNextUpdateSlot(self):
- print "pyEduSessionMenuBarHdlr.doNextUpdateSlot()."
- def doNextStepSlot(self):
- print "pyEduSessionMenuBarHdlr.doNextStepSlot()."
-
- def doWorkspaceWindowTmpSlot(self):
- print "pyEduSessionMenuBarHdlr.doWorkspaceWindowTmpSlot()..."
- self.m_session_mdl.m_session_mdtr.m_session_controller_factory_mdtr.emit(
- qt.PYSIGNAL("newSessionControllerSig"), ("pyEduWorkspaceCtrl",))
- print "pyEduSessionMenuBarHdlr.doWorkspaceWindowTmpSlot() done."
-
-
- def doZoomWindowSlot(self):
- print "pyEduSessionMenuBarHdlr.doZoomWindowSlot()."
- def doMinimizeWindowSlot(self):
- print "pyEduSessionMenuBarHdlr.doMinimizeWindowSlot()."
-
-
# Unit tests.
from pyUnitTestSuiteRecurser import *
Modified: trunk/source/python/AvidaGui2/pyGradientScaleCtrl.py
===================================================================
--- trunk/source/python/AvidaGui2/pyGradientScaleCtrl.py 2005-02-28 20:52:41 UTC (rev 39)
+++ trunk/source/python/AvidaGui2/pyGradientScaleCtrl.py 2005-03-07 20:57:11 UTC (rev 40)
@@ -11,3 +11,23 @@
def construct(self, session_mdl):
self.m_session_mdl = session_mdl
+ self.m_avida = None
+ self.connect(
+ self.m_session_mdl.m_session_mdtr, PYSIGNAL("setAvidaSig"),
+ self.setAvidaSlot)
+
+ def setAvidaSlot(self, avida):
+ old_avida = self.m_avida
+ self.m_avida = avida
+ if(old_avida):
+ self.disconnect(
+ self.m_avida.m_avida_thread_mdtr, PYSIGNAL("AvidaUpdatedSig"),
+ self.avidaUpdatedSlot)
+ del old_avida
+ if(self.m_avida):
+ self.connect(
+ self.m_avida.m_avida_thread_mdtr, PYSIGNAL("AvidaUpdatedSig"),
+ self.avidaUpdatedSlot)
+
+ def avidaUpdatedSlot(self):
+ pass
\ No newline at end of file
Modified: trunk/source/python/AvidaGui2/pyLiveControlsCtrl.py
===================================================================
--- trunk/source/python/AvidaGui2/pyLiveControlsCtrl.py 2005-02-28 20:52:41 UTC (rev 39)
+++ trunk/source/python/AvidaGui2/pyLiveControlsCtrl.py 2005-03-07 20:57:11 UTC (rev 40)
@@ -11,3 +11,23 @@
def construct(self, session_mdl):
self.m_session_mdl = session_mdl
+ self.m_avida = None
+ self.connect(
+ self.m_session_mdl.m_session_mdtr, PYSIGNAL("setAvidaSig"),
+ self.setAvidaSlot)
+
+ def setAvidaSlot(self, avida):
+ old_avida = self.m_avida
+ self.m_avida = avida
+ if(old_avida):
+ self.disconnect(
+ self.m_avida.m_avida_thread_mdtr, PYSIGNAL("AvidaUpdatedSig"),
+ self.avidaUpdatedSlot)
+ del old_avida
+ if(self.m_avida):
+ self.connect(
+ self.m_avida.m_avida_thread_mdtr, PYSIGNAL("AvidaUpdatedSig"),
+ self.avidaUpdatedSlot)
+
+ def avidaUpdatedSlot(self):
+ pass
\ No newline at end of file
Modified: trunk/source/python/AvidaGui2/pyMainControllerFactory.py
===================================================================
--- trunk/source/python/AvidaGui2/pyMainControllerFactory.py 2005-02-28 20:52:41 UTC (rev 39)
+++ trunk/source/python/AvidaGui2/pyMainControllerFactory.py 2005-03-07 20:57:11 UTC (rev 40)
@@ -1,7 +1,4 @@
-
-import pyMdtr; reload(pyMdtr)
from pyMdtr import pyMdtr
-
import qt
class pyMainControllerFactory(qt.QObject):
Modified: trunk/source/python/AvidaGui2/pyOnePop_GraphCtrl.py
===================================================================
--- trunk/source/python/AvidaGui2/pyOnePop_GraphCtrl.py 2005-02-28 20:52:41 UTC (rev 39)
+++ trunk/source/python/AvidaGui2/pyOnePop_GraphCtrl.py 2005-03-07 20:57:11 UTC (rev 40)
@@ -16,16 +16,17 @@
def construct(self, session_mdl):
self.m_session_mdl = session_mdl
+ self.m_avida = None
+ self.connect(
+ self.m_session_mdl.m_session_mdtr, PYSIGNAL("setAvidaSig"),
+ self.setAvidaSlot)
+
self.m_graph_ctrl.construct(self.m_session_mdl)
self.m_combo_box.clear()
self.m_combo_box.setInsertionPolicy(QComboBox.AtBottom)
for entry in self.m_avida_stats_interface.m_entries:
self.m_combo_box.insertItem(entry[0])
- self.connect(self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr,
- PYSIGNAL("AvidaUpdatedSig"), self.avidaUpdatedSlot)
- self.connect(self.m_combo_box, SIGNAL("activated(int)"), self.modeActivatedSlot)
-
self.m_x_array = zeros(2, Float)
self.m_y_array = zeros(2, Float)
@@ -55,6 +56,18 @@
self.m_graph_ctrl.setCurvePen(self.m_graph_ctrl.m_curve, QPen(Qt.red))
self.m_graph_ctrl.replot()
+ def setAvidaSlot(self, avida):
+ old_avida = self.m_avida
+ self.m_avida = avida
+ if(old_avida):
+ self.disconnect(
+ self.m_avida.m_avida_thread_mdtr, PYSIGNAL("AvidaUpdatedSig"),
+ self.avidaUpdatedSlot)
+ del old_avida
+ if(self.m_avida):
+ self.connect(
+ self.m_avida.m_avida_thread_mdtr, PYSIGNAL("AvidaUpdatedSig"),
+ self.avidaUpdatedSlot)
def avidaUpdatedSlot(self):
if self.m_combo_box.currentItem():
Modified: trunk/source/python/AvidaGui2/pyOnePop_StatsCtrl.py
===================================================================
--- trunk/source/python/AvidaGui2/pyOnePop_StatsCtrl.py 2005-02-28 20:52:41 UTC (rev 39)
+++ trunk/source/python/AvidaGui2/pyOnePop_StatsCtrl.py 2005-03-07 20:57:11 UTC (rev 40)
@@ -8,3 +8,26 @@
def __init__(self,parent = None,name = None,fl = 0):
pyOnePop_StatsView.__init__(self,parent,name,fl)
+
+ def construct(self, session_mdl):
+ self.m_session_mdl = session_mdl
+ self.m_avida = None
+ self.connect(
+ self.m_session_mdl.m_session_mdtr, PYSIGNAL("setAvidaSig"),
+ self.setAvidaSlot)
+
+ def setAvidaSlot(self, avida):
+ old_avida = self.m_avida
+ self.m_avida = avida
+ if(old_avida):
+ self.disconnect(
+ self.m_avida.m_avida_thread_mdtr, PYSIGNAL("AvidaUpdatedSig"),
+ self.avidaUpdatedSlot)
+ del old_avida
+ if(self.m_avida):
+ self.connect(
+ self.m_avida.m_avida_thread_mdtr, PYSIGNAL("AvidaUpdatedSig"),
+ self.avidaUpdatedSlot)
+
+ def avidaUpdatedSlot(self):
+ pass
\ No newline at end of file
Modified: trunk/source/python/AvidaGui2/pyOnePop_TimelineCtrl.py
===================================================================
--- trunk/source/python/AvidaGui2/pyOnePop_TimelineCtrl.py 2005-02-28 20:52:41 UTC (rev 39)
+++ trunk/source/python/AvidaGui2/pyOnePop_TimelineCtrl.py 2005-03-07 20:57:11 UTC (rev 40)
@@ -8,3 +8,26 @@
def __init__(self,parent = None,name = None,fl = 0):
pyOnePop_TimelineView.__init__(self,parent,name,fl)
+
+ def construct(self, session_mdl):
+ self.m_session_mdl = session_mdl
+ self.m_avida = None
+ self.connect(
+ self.m_session_mdl.m_session_mdtr, PYSIGNAL("setAvidaSig"),
+ self.setAvidaSlot)
+
+ def setAvidaSlot(self, avida):
+ old_avida = self.m_avida
+ self.m_avida = avida
+ if(old_avida):
+ self.disconnect(
+ self.m_avida.m_avida_thread_mdtr, PYSIGNAL("AvidaUpdatedSig"),
+ self.avidaUpdatedSlot)
+ del old_avida
+ if(self.m_avida):
+ self.connect(
+ self.m_avida.m_avida_thread_mdtr, PYSIGNAL("AvidaUpdatedSig"),
+ self.avidaUpdatedSlot)
+
+ def avidaUpdatedSlot(self):
+ pass
\ No newline at end of file
Modified: trunk/source/python/AvidaGui2/pyOnePopulationCtrl.py
===================================================================
--- trunk/source/python/AvidaGui2/pyOnePopulationCtrl.py 2005-02-28 20:52:41 UTC (rev 39)
+++ trunk/source/python/AvidaGui2/pyOnePopulationCtrl.py 2005-03-07 20:57:11 UTC (rev 40)
@@ -12,4 +12,4 @@
def construct(self, session_mdl):
self.m_session_mdl = session_mdl
self.m_one_pop_petri_dish_ctrl.construct(self.m_session_mdl)
- self.m_one_pop_graph_ctrl.construct(self.m_session_mdl)
+ #self.m_one_pop_graph_ctrl.construct(self.m_session_mdl)
Modified: trunk/source/python/AvidaGui2/pyPetriDishCtrl.py
===================================================================
--- trunk/source/python/AvidaGui2/pyPetriDishCtrl.py 2005-02-28 20:52:41 UTC (rev 39)
+++ trunk/source/python/AvidaGui2/pyPetriDishCtrl.py 2005-03-07 20:57:11 UTC (rev 40)
@@ -20,18 +20,30 @@
self.resize(QSize(202,202).expandedTo(self.minimumSizeHint()))
self.clearWState(Qt.WState_Polished)
- def construct(self, session_mdl):
- self.m_session_mdl = session_mdl
+ def setAvidaSlot(self, avida):
+ print "pyPetriDishCtrl.setAvidaSlot() : called."
+ old_avida = self.m_avida
+ self.m_avida = avida
+ if(old_avida):
+ self.disconnect(
+ self.m_avida.m_avida_thread_mdtr, PYSIGNAL("AvidaUpdatedSig"),
+ self.avidaUpdatedSlot)
+ del old_avida
+ if(self.m_avida):
+ self.connect(
+ self.m_avida.m_avida_thread_mdtr, PYSIGNAL("AvidaUpdatedSig"),
+ self.avidaUpdatedSlot)
self.m_map_cell_w = 2
self.m_map_cell_h = 2
world_w = cConfig.GetWorldX()
world_h = cConfig.GetWorldY()
- print "world_w %d, world_h %d" % (world_w, world_h)
-
+ if self.m_canvas: del self.m_canvas
self.m_canvas = QCanvas(self.m_map_cell_w * world_w, self.m_map_cell_h * world_h)
+ self.m_canvas_view.setCanvas(self.m_canvas)
+ if self.m_cell_info: del self.m_cell_info
self.m_cell_info = [[QCanvasRectangle(
x * self.m_map_cell_w,
y * self.m_map_cell_h,
@@ -39,29 +51,29 @@
self.m_map_cell_h,
self.m_canvas) for y in range(world_h)] for x in range(world_w)]
- #for x in range(len(self.m_cell_info)):
- # for y in range(len(self.m_cell_info[x])):
for x in range(world_w):
for y in range(world_h):
self.m_cell_info[x][y].setBrush(QBrush(QColor(x*255/world_w, y*255/world_h, x*y*255/(world_w*world_h))))
self.m_cell_info[x][y].setPen(QPen(QColor(x*255/world_w, y*255/world_h, x*y*255/(world_w*world_h))))
self.m_cell_info[x][y].show()
+ def construct(self, session_mdl):
+ self.m_session_mdl = session_mdl
+ self.m_avida = None
+ self.connect(
+ self.m_session_mdl.m_session_mdtr, PYSIGNAL("setAvidaSig"),
+ self.setAvidaSlot)
+
+ self.m_canvas = None
+ self.m_cell_info = None
self.m_petri_dish_layout = QVBoxLayout(self,0,0,"m_petri_dish_layout")
self.m_petri_dish_layout.setResizeMode(QLayout.Minimum)
-
- self.m_canvas_view = QCanvasView(self.m_canvas, self,"m_canvas_view")
+ self.m_canvas_view = QCanvasView(None, self,"m_canvas_view")
self.m_petri_dish_layout.addWidget(self.m_canvas_view)
-
- self.connect(self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr,
- PYSIGNAL("AvidaUpdatedSig"), self.avidaUpdatedSlot)
-
- print "woohoo!"
-
+
def calcColorScale(self):
self.m_cs_min_value = 0
- #self.m_cs_value_range = self.m_session_mdl.m_population.GetStats().GetMaxMerit()
- self.m_cs_value_range = self.m_session_mdl.m_population.GetStats().GetMaxFitness()
+ self.m_cs_value_range = self.m_avida.m_population.GetStats().GetMaxFitness()
def doubleToColor(self, x):
def sigmoid(w, midpoint, steepness):
@@ -69,20 +81,14 @@
return exp(val)/(1+exp(val))
y = 1
- if self.m_cs_value_range > 0:
- y = (x - self.m_cs_min_value)/self.m_cs_value_range
+ if self.m_cs_value_range > 0: y = (x - self.m_cs_min_value)/self.m_cs_value_range
+ if y > 1: y = 1
+ elif y < 0: y = 0
- if y > 1:
- y = 1
- elif y < 0:
- y = 0
-
h = (y*360 + 100) % 360
v = sigmoid(y, 0.3, 10) * 255
s = sigmoid(1 - y, 0.1, 30) * 255
- #print "(",h,",",s,",",v,")"
-
return QColor(h, s, v, QColor.Hsv)
def calcCellState(self, population_cell):
@@ -90,19 +96,18 @@
if population_cell.IsOccupied():
organism = population_cell.GetOrganism()
phenotype = organism.GetPhenotype()
- #merit = phenotype.GetMerit()
- #dbl = merit.GetDouble()
dbl = phenotype.GetFitness()
state = self.doubleToColor(dbl)
return state
def avidaUpdatedSlot(self):
+ print "pyPetriDishCtrl.avidaUpdatedSlot() : called."
self.calcColorScale()
world_w = cConfig.GetWorldX()
world_h = cConfig.GetWorldY()
for x in range(world_w):
for y in range(world_h):
- cell = self.m_session_mdl.m_population.GetCell(x + world_w*y)
+ cell = self.m_avida.m_population.GetCell(x + world_w*y)
color = self.calcCellState(cell)
xm = (x + world_w/2) % world_w
ym = (y + world_h/2) % world_h
Modified: trunk/source/python/AvidaGui2/pySessionCtrl.py
===================================================================
--- trunk/source/python/AvidaGui2/pySessionCtrl.py 2005-02-28 20:52:41 UTC (rev 39)
+++ trunk/source/python/AvidaGui2/pySessionCtrl.py 2005-03-07 20:57:11 UTC (rev 40)
@@ -1,29 +1,13 @@
#from pyAvidaCoreData import pyAvidaCoreData
#from pyAvidaThreadedDriver import pyAvidaThreadedDriver
-
-import pyEduSessionMenuBarHdlr; reload (pyEduSessionMenuBarHdlr)
from pyEduSessionMenuBarHdlr import *
-
-#import pyEduWorkspaceCtrl; reload (pyEduWorkspaceCtrl)
from pyEduWorkspaceCtrl import *
-
-import pyAvidaCoreData; reload(pyAvidaCoreData)
from pyAvidaCoreData import *
-
-import pyMdtr; reload(pyMdtr)
from pyMdtr import *
-
-import pySessionControllerFactory; reload(pySessionControllerFactory)
from pySessionControllerFactory import *
-
-import pySessionDumbCtrl; reload(pySessionDumbCtrl)
from pySessionDumbCtrl import *
-
-import pySessionWorkThreadHdlr; reload(pySessionWorkThreadHdlr)
from pySessionWorkThreadHdlr import *
-
from AvidaCore import cString
-
import qt
class pySessionCtrl(qt.QObject):
@@ -52,23 +36,26 @@
self.m_session_controller_factory.construct(self.m_session_mdl)
# create an avida processing thread
- self.m_session_mdl.m_avida_core_data = pyAvidaCoreData()
- self.m_session_mdl.m_avida_core_data.construct(self.m_session_mdl.m_genesis_filename)
+ ## XXX excising obsolete code. @kgn
+ # self.m_session_mdl.m_avida_core_data = pyAvidaCoreData()
+ # self.m_session_mdl.m_avida_core_data.construct(self.m_session_mdl.m_genesis_filename)
# connect various session controller creators to the controller
# factory.
self.m_session_controller_factory.addControllerCreator("pyEduSessionMenuBarHdlr", pyEduSessionMenuBarHdlr)
- self.m_session_controller_factory.addControllerCreator("pySessionWorkThreadHdlr", pySessionWorkThreadHdlr)
+ ## XXX excising obsolete code. @kgn
+ # self.m_session_controller_factory.addControllerCreator("pySessionWorkThreadHdlr", pySessionWorkThreadHdlr)
self.m_session_controller_factory.addControllerCreator("pySessionDumbCtrl", pySessionDumbCtrl)
self.m_session_controller_factory.addControllerCreator("pyEduWorkspaceCtrl", pyEduWorkspaceCtrl)
self.m_session_mdl.m_session_mdtr.m_session_controller_factory_mdtr.emit(
qt.PYSIGNAL("newSessionControllerSig"), ("pyEduSessionMenuBarHdlr",))
- ## XXX temporary.
+ ## XXX this was temporary code, now kept around for reference. @kgn
+ # self.m_session_mdl.m_session_mdtr.m_session_controller_factory_mdtr.emit(
+ # qt.PYSIGNAL("newSessionControllerSig"), ("pySessionWorkThreadHdlr",))
+
+ ## XXX temporary. cause instantiation of a dumb gui for testing. @kgn
self.m_session_mdl.m_session_mdtr.m_session_controller_factory_mdtr.emit(
- qt.PYSIGNAL("newSessionControllerSig"), ("pySessionWorkThreadHdlr",))
- ## XXX temporary. cause instantiation of a dumb gui for testing.
- self.m_session_mdl.m_session_mdtr.m_session_controller_factory_mdtr.emit(
qt.PYSIGNAL("newSessionControllerSig"), ("pySessionDumbCtrl",))
self.m_session_mdl.m_session_mdtr.m_session_controller_factory_mdtr.emit(
Modified: trunk/source/python/AvidaGui2/pySessionDumbCtrl.py
===================================================================
--- trunk/source/python/AvidaGui2/pySessionDumbCtrl.py 2005-02-28 20:52:41 UTC (rev 39)
+++ trunk/source/python/AvidaGui2/pySessionDumbCtrl.py 2005-03-07 20:57:11 UTC (rev 40)
@@ -1,103 +1,172 @@
import pySessionDumbView; reload(pySessionDumbView)
from pySessionDumbView import *
-import qt
+import pyAvida; reload(pyAvida)
+from pyAvida import *
-class pySessionDumbCtrl(qt.QObject):
+from AvidaCore import *
+from qt import *
+
+class pySessionDumbCtrl(pySessionDumbView):
def __init__(self):
- qt.QObject.__init__(self, None, self.__class__.__name__)
+ pySessionDumbView.__init__(self)
+ def setAvidaSlot(self, avida):
+ old_avida = self.m_avida
+ self.m_avida = avida
+ if(old_avida):
+ print "pySessionDumbCtrl.setAvidaSlot(): disconnecting..."
+ self.disconnect(
+ old_avida.m_avida_thread_mdtr, PYSIGNAL("AvidaUpdatedSig"),
+ self.avidaUpdatedSlot)
+ self.disconnect(
+ self, PYSIGNAL("doStartAvidaSig"),
+ old_avida.m_avida_thread_mdtr, PYSIGNAL("doStartAvidaSig"))
+ self.disconnect(
+ self, PYSIGNAL("doPauseAvidaSig"),
+ old_avida.m_avida_thread_mdtr, PYSIGNAL("doPauseAvidaSig"))
+ self.disconnect(
+ self, PYSIGNAL("doUpdateAvidaSig"),
+ old_avida.m_avida_thread_mdtr, PYSIGNAL("doUpdateAvidaSig"))
+ del old_avida
+ if(self.m_avida):
+ print "pySessionDumbCtrl.setAvidaSlot(): connecting..."
+ self.connect(
+ self.m_avida.m_avida_thread_mdtr, PYSIGNAL("AvidaUpdatedSig"),
+ self.avidaUpdatedSlot)
+ self.connect(
+ self, PYSIGNAL("doStartAvidaSig"),
+ self.m_avida.m_avida_thread_mdtr, PYSIGNAL("doStartAvidaSig"))
+ self.connect(
+ self, PYSIGNAL("doPauseAvidaSig"),
+ self.m_avida.m_avida_thread_mdtr, PYSIGNAL("doPauseAvidaSig"))
+ self.connect(
+ self, PYSIGNAL("doUpdateAvidaSig"),
+ self.m_avida.m_avida_thread_mdtr, PYSIGNAL("doUpdateAvidaSig"))
+
+ def setupCustomMenus(self, edu_session_menu_bar_hdlr):
+ self.m_debugging_menu = QPopupMenu()
+ self.m_zoom_window_wmi_id = self.m_debugging_menu.insertItem(
+ "Load Petri Dish Config File",
+ self, PYSIGNAL("doLoadPetriDishConfigFileSig"))
+ self.m_menu_bar.insertItem("Debugging", self.m_debugging_menu)
+
+ self.connect(
+ self, PYSIGNAL("doLoadPetriDishConfigFileSig"),
+ self.doLoadPetriDishConfigFileSlot)
+
+ def doLoadPetriDishConfigFileSlot(self):
+ print "pySessionDumbCtrl.doLoadPetriDishConfigFileSlot()."
+ s = QFileDialog.getOpenFileName(
+ ".",
+ "(*.avida)",
+ None,
+ "open file dialog",
+ "Choose a file")
+ print "s:", s
+ genesis = cGenesis()
+ genesis.Open(cString(s.ascii()))
+ if 0 == genesis.IsOpen():
+ print "Warning: Unable to find file '", s
+ return
+ avida = pyAvida()
+ avida.construct(genesis)
+ self.setAvidaSlot(avida)
+ self.disconnect(
+ self.m_session_mdl.m_session_mdtr, PYSIGNAL("setAvidaSig"),
+ self.setAvidaSlot)
+ self.m_session_mdl.m_session_mdtr.emit(
+ PYSIGNAL("setAvidaSig"),
+ (self.m_avida,))
+ self.connect(
+ self.m_session_mdl.m_session_mdtr, PYSIGNAL("setAvidaSig"),
+ self.setAvidaSlot)
+
def construct(self, session_mdl):
self.m_session_mdl = session_mdl
- self.m_session_dumb_view = pySessionDumbView()
+ self.m_avida = None
+ self.connect(
+ self.m_session_mdl.m_session_mdtr, PYSIGNAL("setAvidaSig"),
+ self.setAvidaSlot)
self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr.emit(
- qt.PYSIGNAL("doSetupMainWindowMenuBarSig"), (self.m_session_dumb_view,))
+ PYSIGNAL("doSetupMainWindowMenuBarSig"),
+ (self,))
- self.connect(self.m_session_dumb_view.m_startpause_avida_pb, qt.SIGNAL("clicked()"), self.startPausePBClickedSlot)
- self.connect(self.m_session_dumb_view.m_update_avida_pb, qt.SIGNAL("clicked()"), self.updatePBClickedSlot)
+ self.connect(
+ self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
+ PYSIGNAL("doStartSig"),
+ self.doStart)
+ self.connect(
+ self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
+ PYSIGNAL("doPauseSig"),
+ self.doPause)
+ self.connect(
+ self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
+ PYSIGNAL("doNextUpdateSig"),
+ self.updatePBClickedSlot)
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doStartSig"), self.doStart)
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doPauseSig"), self.doPause)
- self.connect(self.m_session_mdl.m_session_mdtr.m_edu_session_menu_bar_hdlr_mdtr,
- qt.PYSIGNAL("doNextUpdateSig"), self.updatePBClickedSlot)
+ self.connect(
+ self.m_startpause_avida_pb, SIGNAL("clicked()"),
+ self.startPausePBClickedSlot)
+ self.connect(
+ self.m_update_avida_pb, SIGNAL("clicked()"),
+ self.updatePBClickedSlot)
- self.connect(self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr,
- qt.PYSIGNAL("AvidaUpdatedSig"), self.avidaUpdatedSlot)
-
self.m_start_pb_text = "Start..."
self.m_pause_pb_text = "Pause..."
self.m_should_update = False
- self.m_session_dumb_view.m_control_menu.setItemVisible(self.m_session_dumb_view.m_next_step_cmi_id, False)
- self.m_session_dumb_view.m_edit_menu.setItemEnabled(self.m_session_dumb_view.m_undo_emi_id, False)
- self.m_session_dumb_view.m_edit_menu.setItemEnabled(self.m_session_dumb_view.m_redo_emi_id, False)
- self.m_session_dumb_view.m_edit_menu.setItemEnabled(self.m_session_dumb_view.m_cut_emi_id, False)
- self.m_session_dumb_view.m_edit_menu.setItemEnabled(self.m_session_dumb_view.m_copy_emi_id, False)
- self.m_session_dumb_view.m_edit_menu.setItemEnabled(self.m_session_dumb_view.m_paste_emi_id, False)
- self.m_session_dumb_view.m_edit_menu.setItemEnabled(self.m_session_dumb_view.m_select_all_emi_id, False)
+ self.m_control_menu.setItemVisible(self.m_next_step_cmi_id, False)
+ self.m_edit_menu.setItemEnabled(self.m_undo_emi_id, False)
+ self.m_edit_menu.setItemEnabled(self.m_redo_emi_id, False)
+ self.m_edit_menu.setItemEnabled(self.m_cut_emi_id, False)
+ self.m_edit_menu.setItemEnabled(self.m_copy_emi_id, False)
+ self.m_edit_menu.setItemEnabled(self.m_paste_emi_id, False)
+ self.m_edit_menu.setItemEnabled(self.m_select_all_emi_id, False)
self.doPause()
- self.m_session_dumb_view.show()
+ self.show()
- def destruct(self):
- print("pySessionDumbCtrl.destruct()...")
- self.disconnect(self.m_session_dumb_view.m_startpause_avida_pb,
- qt.SIGNAL("clicked()"), self.startPausePBClickedSlot)
- print("pySessionDumbCtrl.destruct()...1")
- self.disconnect(self.m_session_dumb_view.m_update_avida_pb,
- qt.SIGNAL("clicked()"), self.updatePBClickedSlot)
- print("pySessionDumbCtrl.destruct()...2")
- self.disconnect(self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr,
- qt.PYSIGNAL("AvidaUpdatedSig"), self.avidaUpdatedSlot)
- print("pySessionDumbCtrl.destruct()...3")
- del self.m_session_mdl
- print("pySessionDumbCtrl.destruct()...4")
- del self.m_session_dumb_view.m_menu_bar
- del self.m_session_dumb_view
- print("pySessionDumbCtrl.destruct() done.")
-
def __del__(self):
- print("pySessionDumbCtrl.__del__()...")
- self.destruct()
- print("pySessionDumbCtrl.__del__() done.")
-
+ self.setAvidaSlot(None)
+ self.disconnect(
+ self.m_session_mdl.m_session_mdtr, PYSIGNAL("setAvidaSig"),
+ self.setAvidaSlot)
+ self.m_session_mdl.m_session_mdtr.emit(
+ PYSIGNAL("setAvidaSig"),
+ (None,))
+
def doStart(self):
self.m_should_update = True
- self.m_session_dumb_view.m_startpause_avida_pb.setText(self.m_pause_pb_text)
- self.m_session_dumb_view.m_update_avida_pb.setEnabled(False)
- self.m_session_dumb_view.m_control_menu.setItemVisible(self.m_session_dumb_view.m_pause_cmi_id, True)
- self.m_session_dumb_view.m_control_menu.setItemVisible(self.m_session_dumb_view.m_start_cmi_id, False)
- self.m_session_dumb_view.m_control_menu.setItemEnabled(self.m_session_dumb_view.m_next_update_cmi_id, False)
- self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr.emit(qt.PYSIGNAL("doStartAvidaSig"), ())
+ self.m_startpause_avida_pb.setText(self.m_pause_pb_text)
+ self.m_update_avida_pb.setEnabled(False)
+ self.m_control_menu.setItemVisible(self.m_pause_cmi_id, True)
+ self.m_control_menu.setItemVisible(self.m_start_cmi_id, False)
+ self.m_control_menu.setItemEnabled(self.m_next_update_cmi_id, False)
+ self.emit(PYSIGNAL("doStartAvidaSig"), ())
def doPause(self):
self.m_should_update = False
- self.m_session_dumb_view.m_startpause_avida_pb.setText(self.m_start_pb_text)
- self.m_session_dumb_view.m_update_avida_pb.setEnabled(True)
- self.m_session_dumb_view.m_control_menu.setItemVisible(self.m_session_dumb_view.m_pause_cmi_id, False)
- self.m_session_dumb_view.m_control_menu.setItemVisible(self.m_session_dumb_view.m_start_cmi_id, True)
- self.m_session_dumb_view.m_control_menu.setItemEnabled(self.m_session_dumb_view.m_next_update_cmi_id, True)
- self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr.emit(qt.PYSIGNAL("doPauseAvidaSig"), ())
+ self.m_startpause_avida_pb.setText(self.m_start_pb_text)
+ self.m_update_avida_pb.setEnabled(True)
+ self.m_control_menu.setItemVisible(self.m_pause_cmi_id, False)
+ self.m_control_menu.setItemVisible(self.m_start_cmi_id, True)
+ self.m_control_menu.setItemEnabled(self.m_next_update_cmi_id, True)
+ self.emit(PYSIGNAL("doPauseAvidaSig"), ())
def startPausePBClickedSlot(self):
- if True == self.m_should_update:
- self.doPause()
- else:
- self.doStart()
+ if True == self.m_should_update: self.doPause()
+ else: self.doStart()
def updatePBClickedSlot(self):
- self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr.emit(qt.PYSIGNAL("doUpdateAvidaSig"), ())
+ self.emit(PYSIGNAL("doUpdateAvidaSig"), ())
def avidaUpdatedSlot(self):
- #stats = self.m_session_mdl.m_avida_threaded_driver.GetPopulation().GetStats()
- stats = self.m_session_mdl.m_population.GetStats()
- self.m_session_dumb_view.m_log_te.append(
+ stats = self.m_avida.m_population.GetStats()
+ self.m_log_te.append(
"UD: " + repr(stats.GetUpdate()) +
"\t Gen: " + repr(stats.SumGeneration().Average()) +
"\t Fit: " + repr(stats.GetAveFitness()) +
- #"\t Size: " + repr(self.m_session_mdl.m_avida_threaded_driver.GetPopulation().GetNumOrganisms()))
- "\t Size: " + repr(self.m_session_mdl.m_population.GetNumOrganisms()))
+ "\t Size: " + repr(self.m_avida.m_population.GetNumOrganisms()))
Modified: trunk/source/python/AvidaGui2/pySessionWorkThreadHdlr.py
===================================================================
--- trunk/source/python/AvidaGui2/pySessionWorkThreadHdlr.py 2005-02-28 20:52:41 UTC (rev 39)
+++ trunk/source/python/AvidaGui2/pySessionWorkThreadHdlr.py 2005-03-07 20:57:11 UTC (rev 40)
@@ -17,39 +17,72 @@
def construct(self, session_mdl):
self.m_session_mdl = session_mdl
- self.m_session_mdl.m_avida_threaded_driver = pyAvidaThreadedDriver(self.m_session_mdl.m_avida_core_data.m_environment)
- self.m_avida_threaded_driver = pyAvidaThreadedDriver(self.m_session_mdl.m_avida_core_data.m_environment)
- self.m_updated_semaphore = self.m_session_mdl.m_avida_threaded_driver.m_updated_semaphore
- self.m_updated_semaphore = self.m_avida_threaded_driver.m_updated_semaphore
+ self.m_session_mdl.m_avida_threaded_driver = pyAvidaThreadedDriver(
+ self.m_session_mdl.m_avida_core_data.m_environment)
+ self.m_avida_threaded_driver = pyAvidaThreadedDriver(
+ self.m_session_mdl.m_avida_core_data.m_environment)
+ self.m_updated_semaphore = \
+ self.m_session_mdl.m_avida_threaded_driver.m_updated_semaphore
+ self.m_updated_semaphore = \
+ self.m_avida_threaded_driver.m_updated_semaphore
self.m_should_update = False
self.m_session_mdl.m_avida_threaded_driver.construct()
self.m_avida_threaded_driver.construct()
- self.m_session_mdl.m_population = self.m_avida_threaded_driver.GetPopulation()
+ self.m_session_mdl.m_population = \
+ self.m_avida_threaded_driver.GetPopulation()
self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr = pyMdtr()
- self.connect(self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr, qt.PYSIGNAL("doPauseAvidaSig"), self.doPauseAvidaSlot)
- self.connect(self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr, qt.PYSIGNAL("doStartAvidaSig"), self.doStartAvidaSlot)
- self.connect(self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr, qt.PYSIGNAL("doUpdateAvidaSig"), self.doUpdateAvidaSlot)
- self.connect(self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr, qt.PYSIGNAL("doCloseAvidaSig"), self.doCloseAvidaSlot)
+ self.connect(
+ self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr,
+ qt.PYSIGNAL("doPauseAvidaSig"),
+ self.doPauseAvidaSlot)
+ self.connect(
+ self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr,
+ qt.PYSIGNAL("doStartAvidaSig"),
+ self.doStartAvidaSlot)
+ self.connect(
+ self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr,
+ qt.PYSIGNAL("doUpdateAvidaSig"),
+ self.doUpdateAvidaSlot)
+ self.connect(
+ self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr,
+ qt.PYSIGNAL("doCloseAvidaSig"),
+ self.doCloseAvidaSlot)
self.m_update_ck_timer = qt.QTimer()
- self.connect(self.m_update_ck_timer, qt.SIGNAL("timeout()"), self.updateCheckSlot)
+ self.connect(
+ self.m_update_ck_timer,
+ qt.SIGNAL("timeout()"),
+ self.updateCheckSlot)
self.m_update_ck_timer.start(100)
def destruct(self):
print("pySessionWorkThreadHdlr.destruct()...")
- self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr.emit(qt.PYSIGNAL("doCloseAvidaSig"),())
+ self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr.emit(
+ qt.PYSIGNAL("doCloseAvidaSig"),())
if hasattr(self, "m_update_ck_timer"):
self.m_update_ck_timer.stop()
del self.m_update_ck_timer
else:
print("pySessionWorkThreadHdlr.destruct() self.m_update_ck_timer missing.")
- self.disconnect(self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr, qt.PYSIGNAL("doPauseAvidaSig"), self.doPauseAvidaSlot)
- self.disconnect(self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr, qt.PYSIGNAL("doStartAvidaSig"), self.doStartAvidaSlot)
- self.disconnect(self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr, qt.PYSIGNAL("doUpdateAvidaSig"), self.doUpdateAvidaSlot)
- self.disconnect(self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr, qt.PYSIGNAL("doCloseAvidaSig"), self.doCloseAvidaSlot)
+ self.disconnect(
+ self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr,
+ qt.PYSIGNAL("doPauseAvidaSig"),
+ self.doPauseAvidaSlot)
+ self.disconnect(
+ self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr,
+ qt.PYSIGNAL("doStartAvidaSig"),
+ self.doStartAvidaSlot)
+ self.disconnect(
+ self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr,
+ qt.PYSIGNAL("doUpdateAvidaSig"),
+ self.doUpdateAvidaSlot)
+ self.disconnect(
+ self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr,
+ qt.PYSIGNAL("doCloseAvidaSig"),
+ self.doCloseAvidaSlot)
if hasattr(self.m_session_mdl.m_session_mdtr, "m_avida_threaded_driver_mdtr"):
del self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr
@@ -85,22 +118,9 @@
print("pySessionWorkThreadHdlr.__del__() done.")
def updateCheckSlot(self):
- #if hasattr(self.m_session_mdl, "m_avida_threaded_driver"):
- # if self.m_session_mdl.m_avida_threaded_driver.m_updated_semaphore.acquire(False):
- # self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr.emit(qt.PYSIGNAL("AvidaUpdatedSig"),())
- # if True == self.m_should_update:
- # self.doUpdateAvidaSlot()
-
- #try:
- # if self.m_updated_semaphore.acquire(False):
- # self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr.emit(qt.PYSIGNAL("AvidaUpdatedSig"),())
- # if True == self.m_should_update:
- # self.doUpdateAvidaSlot()
- #except AttributeError:
- # pass
-
if self.m_updated_semaphore.acquire(False):
- self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr.emit(qt.PYSIGNAL("AvidaUpdatedSig"),())
+ self.m_session_mdl.m_session_mdtr.m_avida_threaded_driver_mdtr.emit(
+ qt.PYSIGNAL("AvidaUpdatedSig"),())
if True == self.m_should_update:
self.doUpdateAvidaSlot()
Modified: trunk/source/python/AvidaGui2/pyTemporaryReloads.py
===================================================================
--- trunk/source/python/AvidaGui2/pyTemporaryReloads.py 2005-02-28 20:52:41 UTC (rev 39)
+++ trunk/source/python/AvidaGui2/pyTemporaryReloads.py 2005-03-07 20:57:11 UTC (rev 40)
@@ -108,6 +108,12 @@
"AvidaGui2.pyEduWorkspaceView",
"AvidaGui2.pyEduWorkspaceCtrl",
+
+ "AvidaGui2.pyEduSessionMenuBarHdlr",
+ "AvidaGui2.pySessionDumbCtrl",
+
+ "AvidaGui2.pyAvida",
+# "AvidaGui2.pyAvidaThreadHdlr",
]
module_names = nontest_module_names + test_module_names
More information about the Avida-cvs
mailing list