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

baerb@myxo.css.msu.edu baerb at myxo.css.msu.edu
Fri Jul 1 12:16:44 PDT 2005


Author: baerb
Date: 2005-07-01 15:16:44 -0400 (Fri, 01 Jul 2005)
New Revision: 223

Modified:
   trunk/source/python/AvidaGui2/pyFreezerCtrl.py
   trunk/source/python/AvidaGui2/pyGradientScaleCtrl.py
   trunk/source/python/AvidaGui2/pyLiveControlsCtrl.py
   trunk/source/python/AvidaGui2/pyOnePop_GraphCtrl.py
   trunk/source/python/AvidaGui2/pyOnePop_PetriDishCtrl.py
   trunk/source/python/AvidaGui2/pyOnePop_StatsCtrl.py
   trunk/source/python/AvidaGui2/pyOnePopulationCtrl.py
   trunk/source/python/AvidaGui2/pyPetriConfigureCtrl.py
   trunk/source/python/AvidaGui2/pyPetriDishCtrl.py
Log:
Fixed problem with canceling organism freeze

Start of code to do reset a run.



Modified: trunk/source/python/AvidaGui2/pyFreezerCtrl.py
===================================================================
--- trunk/source/python/AvidaGui2/pyFreezerCtrl.py	2005-07-01 19:01:00 UTC (rev 222)
+++ trunk/source/python/AvidaGui2/pyFreezerCtrl.py	2005-07-01 19:16:44 UTC (rev 223)
@@ -147,31 +147,10 @@
 #    tmp_dict["SETTINGS"] = self.Form2Dictio`nary()
     m_pop_up_organism_file_name = pyFreezeOrganismCtrl()
     file_name = m_pop_up_organism_file_name.showDialog(self.m_session_mdl.m_current_freezer)
-    print "printing file name"
-    print file_name
-    # If the user is saving a full population expand the name and insert
-    # the population dictionary into the temporary dictionary
 
-#    if (m_pop_up_freezer_file_name.isEmpty() == False):
-#      os.mkdir(file_name)
-
-      # Copy the average and count files from the teporary output directory
-      # to the Freezer directory
-        
-#      shutil.copyfile(os.path.join(self.m_session_mdl.m_tempdir_out, "average.dat"), os.path.join(file_name, "average.dat"))
-#      shutil.copyfile(os.path.join(self.m_session_mdl.m_tempdir_out, "count.dat"), os.path.join(file_name, "count.dat"))
-#      file_name = os.path.join(file_name, "petri_dish")
-#      tmp_dict["POPULATION"] = population_dict
-
-    freezer_file = pyWriteToFreezer(tmp_dict, file_name)
+    file_name_len = len(file_name.rstrip())
+    if (file_name_len > 0):
+      freezer_file = pyWriteToFreezer(tmp_dict, file_name)
     
     self.m_session_mdl.m_session_mdtr.emit(
       PYSIGNAL("doRefreshFreezerInventorySig"), ())
-#    if send_reset_signal:
-#      print "sending reset signal from pyPetriConfigureCtrl:FreezePetriSlot" 
-#    if send_quit_signal:
-#      print "sending quit signal from pyPetriConfigureCtrl:FreezePetriSlot"
-#      self.m_session_mdl.m_session_mdtr.emit(
-#        PYSIGNAL("quitAvidaPhaseIISig"), ())
-
-

Modified: trunk/source/python/AvidaGui2/pyGradientScaleCtrl.py
===================================================================
--- trunk/source/python/AvidaGui2/pyGradientScaleCtrl.py	2005-07-01 19:01:00 UTC (rev 222)
+++ trunk/source/python/AvidaGui2/pyGradientScaleCtrl.py	2005-07-01 19:16:44 UTC (rev 223)
@@ -34,3 +34,13 @@
 
   def avidaUpdatedSlot(self):
     pass
+
+  def destruct(self):
+    print "*** called pyGradientScaleCtrl.py:destruct ***"
+    self.m_avida = None
+    self.disconnect(
+      self.m_session_mdl.m_session_mdtr, PYSIGNAL("setAvidaSig"),
+      self.setAvidaSlot)
+    self.m_session_mdl = None
+  
+

Modified: trunk/source/python/AvidaGui2/pyLiveControlsCtrl.py
===================================================================
--- trunk/source/python/AvidaGui2/pyLiveControlsCtrl.py	2005-07-01 19:01:00 UTC (rev 222)
+++ trunk/source/python/AvidaGui2/pyLiveControlsCtrl.py	2005-07-01 19:16:44 UTC (rev 223)
@@ -60,3 +60,24 @@
   def clickedStartAvidaSlot(self):
     self.m_session_mdl.m_session_mdtr.emit(
       PYSIGNAL("fromLiveCtrlStartAvidaSig"), ())
+
+  def destruct(self):
+    print "*** called pyLiveControlsCtrl.py:destruct ***"
+    self.m_avida = None
+    self.disconnect(
+      self.m_session_mdl.m_session_mdtr, PYSIGNAL("setAvidaSig"),
+      self.setAvidaSlot)
+    self.disconnect(
+      self.m_session_mdl.m_session_mdtr, PYSIGNAL("doPauseAvidaSig"),
+      self.doPauseAvidaSlot)
+    self.disconnect(
+      self.m_session_mdl.m_session_mdtr, PYSIGNAL("doStartAvidaSig"),
+      self.doStartAvidaSlot)
+    self.disconnect(
+      self.m_play_button, SIGNAL("clicked()"),
+      self.clickedStartAvidaSlot)
+    self.disconnect(
+      self.m_pause_button, SIGNAL("clicked()"),
+      self.clickedPauseAvidaSlot)
+    self.m_session_mdl = None
+

Modified: trunk/source/python/AvidaGui2/pyOnePop_GraphCtrl.py
===================================================================
--- trunk/source/python/AvidaGui2/pyOnePop_GraphCtrl.py	2005-07-01 19:01:00 UTC (rev 222)
+++ trunk/source/python/AvidaGui2/pyOnePop_GraphCtrl.py	2005-07-01 19:16:44 UTC (rev 223)
@@ -153,3 +153,22 @@
         filter.setOptions(QwtPlotPrintFilter.PrintAll & ~QwtPlotPrintFilter.PrintCanvasBackground)
       self.m_graph_ctrl.printPlot(printer, filter)
 
+  def restart(self):
+    self.m_avida = None
+    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_combo_box, SIGNAL("activated(int)"), self.modeActivatedSlot)
+
+    self.m_x_array = zeros(2, Float)
+    self.m_y_array = zeros(2, Float)
+
+    self.m_graph_ctrl.setAxisTitle(QwtPlot.xBottom, "Time (updates)")
+    self.m_graph_ctrl.setAxisAutoScale(QwtPlot.xBottom)
+
+    # Start with second graph mode -- "Average Fitness".
+    self.m_combo_box.setCurrentItem(2)
+    self.modeActivatedSlot(self.m_combo_box.currentItem())
+

Modified: trunk/source/python/AvidaGui2/pyOnePop_PetriDishCtrl.py
===================================================================
--- trunk/source/python/AvidaGui2/pyOnePop_PetriDishCtrl.py	2005-07-01 19:01:00 UTC (rev 222)
+++ trunk/source/python/AvidaGui2/pyOnePop_PetriDishCtrl.py	2005-07-01 19:16:44 UTC (rev 223)
@@ -15,27 +15,45 @@
     self.m_session_mdl = session_mdl
     self.m_avida = None
     self.dishDisabled = False
+    print "*** pyOnePop_PetriDishCtrl.py:consruct about to call m_petri_dish_ctrl.construct ***"
     self.m_petri_dish_ctrl.construct(self.m_session_mdl)
+    print "*** pyOnePop_PetriDishCtrl.py:consruct about to call m_gradient_scale_ctrl.construct ***"
     self.m_gradient_scale_ctrl.construct(self.m_session_mdl)
+    print "*** pyOnePop_PetriDishCtrl.py:consruct about to call m_live_controls_ctrl.construct ***"
     self.m_live_controls_ctrl.construct(self.m_session_mdl)
+    print "*** pyOnePop_PetriDishCtrl.py:consruct about to call m_petri_configure_ctrl.construct ***"
     self.m_petri_configure_ctrl.construct(self.m_session_mdl)
-    self.connect(self.m_session_mdl.m_session_mdtr, PYSIGNAL("freezeDishPhaseISig"), self.m_petri_dish_ctrl.extractPopulationSlot)
-    self.connect(self.m_session_mdl.m_session_mdtr, PYSIGNAL("freezeDishPhaseISig"), self.freezeDishPhaseISlot)
+    self.connect(self.m_session_mdl.m_session_mdtr,
+      PYSIGNAL("freezeDishPhaseISig"),
+      self.m_petri_dish_ctrl.extractPopulationSlot)
+    self.connect(self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("freezeDishPhaseISig"), self.freezeDishPhaseISlot)
+    self.connect(self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("setAvidaSig"), self.setAvidaSlot)
+    self.connect(self.m_petri_dish_toggle, SIGNAL("clicked()"), 
+      self.ToggleDishSlot)
+    self.connect(self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("doDefrostDishSig"), self.shouldIDefrost)
+#    self.connect(self.m_session_mdl.m_session_mdtr, 
+#       PYSIGNAL("doDefrostDishSig"), self.RenameDishSlot)
+#    self.connect(self.m_session_mdl.m_session_mdtr, 
+#       PYSIGNAL("doDefrostDishSig"), self.MakeConfigVisiableSlot)
+    self.connect(self.m_session_mdl.m_session_mdtr, 
+       PYSIGNAL("doDisablePetriDishSig"), self.SetDishDisabledSlot)
+    self.connect(self.m_zoom_spinbox, SIGNAL("valueChanged(int)"), 
+       self.m_petri_dish_ctrl.zoomSlot)
+    self.connect(self.m_petri_dish_ctrl, PYSIGNAL("zoomSig"), 
+       self.m_zoom_spinbox.setValue)
+    self.connect(self.m_mode_combobox, SIGNAL("activated(int)"), 
+       self.modeActivatedSlot)
+    self.connect(self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("petriDishDroppedInPopViewSig"), self.petriDropped)  
 
-    self.connect(self.m_session_mdl.m_session_mdtr, PYSIGNAL("setAvidaSig"), self.setAvidaSlot)
-    self.connect(self.m_petri_dish_toggle, SIGNAL("clicked()"), self.ToggleDishSlot)
-    self.connect(self.m_session_mdl.m_session_mdtr, PYSIGNAL("doDefrostDishSig"), self.shouldIDefrost)
-#    self.connect(self.m_session_mdl.m_session_mdtr, PYSIGNAL("doDefrostDishSig"), self.RenameDishSlot)
-#    self.connect(self.m_session_mdl.m_session_mdtr, PYSIGNAL("doDefrostDishSig"), self.MakeConfigVisiableSlot)
-    self.connect(self.m_session_mdl.m_session_mdtr, PYSIGNAL("doDisablePetriDishSig"), self.SetDishDisabledSlot)
-    self.connect(self.m_zoom_spinbox, SIGNAL("valueChanged(int)"), self.m_petri_dish_ctrl.zoomSlot)
-    self.connect(self.m_petri_dish_ctrl, PYSIGNAL("zoomSig"), self.m_zoom_spinbox.setValue)
-    self.connect(self.m_mode_combobox, SIGNAL("activated(int)"), self.modeActivatedSlot)
-    self.connect( self.m_session_mdl.m_session_mdtr, PYSIGNAL("petriDishDroppedInPopViewSig"),
-      self.petriDropped)  
-
+    print "*** pyOnePop_PetriDishCtrl.py:consruct about to call m_mode_combobox.clear ***"
     self.m_mode_combobox.clear()
+    print "*** pyOnePop_PetriDishCtrl.py:consruct about to call m_mode_combobox.setInsertionPolicy ***"
     self.m_mode_combobox.setInsertionPolicy(QComboBox.AtBottom)
+    print "*** pyOnePop_PetriDishCtrl.py:consruct about to call pyMapProfile ***"
     self.m_map_profile = pyMapProfile(self.m_session_mdl)
     for i in range(self.m_map_profile.getSize()):
       self.m_mode_combobox.insertItem(self.m_map_profile.getModeName(i))
@@ -44,7 +62,8 @@
     self.m_mode_combobox.setCurrentItem(2)
     self.m_mode_index = self.m_mode_combobox.currentItem()
     self.modeActivatedSlot(self.m_mode_index)
-    #self.m_petri_dish_ctrl.emit(PYSIGNAL("zoomSig"), (self.m_petri_dish_ctrl.m_initial_target_zoom,))
+    # self.m_petri_dish_ctrl.emit(PYSIGNAL("zoomSig"), 
+    #   (self.m_petri_dish_ctrl.m_initial_target_zoom,))
 
   def setAvidaSlot(self, avida):
     print "pyOnePop_PetriDishCtrl.setAvidaSlot() ..."
@@ -158,3 +177,39 @@
     if self.isVisible():
       self.RenameDishSlot(dishName)
       self.MakeConfigVisiableSlot()
+
+  def restart(self, session_mdl):
+    print "pyOnePop_PetriDishCtrl.py:restart called"
+    self.dishDisabled = False
+
+    self.m_avida.destruct()
+    self.m_petri_dish_ctrl.destruct()
+    self.m_gradient_scale_ctrl.destruct()
+    self.m_live_controls_ctrl.destruct()
+    self.m_petri_configure_ctrl.destruct()
+    self.disconnect(self.m_session_mdl.m_session_mdtr,
+      PYSIGNAL("freezeDishPhaseISig"),
+      self.m_petri_dish_ctrl.extractPopulationSlot)
+    self.disconnect(self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("freezeDishPhaseISig"), self.freezeDishPhaseISlot)
+    self.disconnect(self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("setAvidaSig"), self.setAvidaSlot)
+    self.disconnect(self.m_petri_dish_toggle, SIGNAL("clicked()"), 
+      self.ToggleDishSlot)
+    self.disconnect(self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("doDefrostDishSig"), self.shouldIDefrost)
+    self.disconnect(self.m_session_mdl.m_session_mdtr, 
+       PYSIGNAL("doDisablePetriDishSig"), self.SetDishDisabledSlot)
+    self.disconnect(self.m_zoom_spinbox, SIGNAL("valueChanged(int)"), 
+       self.m_petri_dish_ctrl.zoomSlot)
+    self.disconnect(self.m_petri_dish_ctrl, PYSIGNAL("zoomSig"), 
+       self.m_zoom_spinbox.setValue)
+    self.disconnect(self.m_mode_combobox, SIGNAL("activated(int)"), 
+       self.modeActivatedSlot)
+    self.disconnect(self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("petriDishDroppedInPopViewSig"), self.petriDropped)  
+    self.m_mode_index = None
+    self.m_session_mdl = None
+    self.m_avida = None
+    print "*** pyOnePop_PetriDishCtrl.py:restartPopulationSlot about to call se.f.construct ***"
+    self.construct(session_mdl)

Modified: trunk/source/python/AvidaGui2/pyOnePop_StatsCtrl.py
===================================================================
--- trunk/source/python/AvidaGui2/pyOnePop_StatsCtrl.py	2005-07-01 19:01:00 UTC (rev 222)
+++ trunk/source/python/AvidaGui2/pyOnePop_StatsCtrl.py	2005-07-01 19:16:44 UTC (rev 223)
@@ -11,7 +11,7 @@
 
   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
@@ -22,9 +22,11 @@
     self.connect(
       self.m_session_mdl.m_session_mdtr, PYSIGNAL("orgClickedOnSig"),
       self.updateOrgReportSlot)
-    self.connect( self.m_session_mdl.m_session_mdtr, PYSIGNAL("petriDishDroppedInPopViewSig"),
+    self.connect( self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("petriDishDroppedInPopViewSig"),
       self.petriDropped)  
-    self.connect( self.m_session_mdl.m_session_mdtr, PYSIGNAL("freezerItemDoubleClickedOnInOnePopSig"),
+    self.connect( self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("freezerItemDoubleClickedOnInOnePopSig"),
       self.freezerItemDoubleClickedOn)  
     self.m_clicked_cell_number = -99
 
@@ -162,15 +164,16 @@
 
 
 
-  def updateOrgReportSlot(self, clicked_cell_item):
+  def updateOrgReportSlot(self, clicked_cell_item = None):
 
     self.m_clicked_cell_item = clicked_cell_item
     if clicked_cell_item:
       clicked_cell_num = clicked_cell_item.m_population_cell.GetID()
-    if clicked_cell_item:
       self.m_clicked_cell_number = clicked_cell_num
     if clicked_cell_item is None or not self.m_avida.m_population.GetCell(int(clicked_cell_num)).IsOccupied():
-      #PAINT the stats fields empty
+
+      # PAINT the stats fields empty
+
       self.m_org_name.setText('empty cell')
       self.m_org_fitness.setText('-')
       self.m_org_merit.setText('-')
@@ -349,6 +352,22 @@
     else:
       return
 
-
-
-
+  def restart(self):
+    self.m_avida = None
+    self.m_clicked_cell_number = -99
+    self.m_session_mdl.m_session_mdtr.emit(PYSIGNAL("orgClickedOnSig"),())
+    self.m_avg_fitness.setText("-")
+    self.m_num_orgs.setText("-")
+    self.m_avg_gest.setText("-")
+    self.m_avg_merit.setText("-")
+    self.m_avg_age.setText("-")
+    self.m_avg_genome_length.setText("-")
+    self.m_num_not.setText("-")
+    self.m_num_nand.setText("-")
+    self.m_num_and.setText("-")
+    self.m_num_ornot.setText("-")
+    self.m_num_or.setText("-")
+    self.m_num_andnot.setText("-")
+    self.m_num_nor.setText("-")
+    self.m_num_xor.setText("-")
+    self.m_num_equals.setText("-")

Modified: trunk/source/python/AvidaGui2/pyOnePopulationCtrl.py
===================================================================
--- trunk/source/python/AvidaGui2/pyOnePopulationCtrl.py	2005-07-01 19:01:00 UTC (rev 222)
+++ trunk/source/python/AvidaGui2/pyOnePopulationCtrl.py	2005-07-01 19:16:44 UTC (rev 223)
@@ -17,12 +17,17 @@
     self.m_one_pop_stats_ctrl.construct(self.m_session_mdl)
     self.m_one_pop_timeline_ctrl.hide()
     self.connect( self, PYSIGNAL("petriDishDroppedInPopViewSig"),
-      self.m_session_mdl.m_session_mdtr, PYSIGNAL("petriDishDroppedInPopViewSig"))   
+      self.m_session_mdl.m_session_mdtr,
+      PYSIGNAL("petriDishDroppedInPopViewSig"))   
     self.connect( self, PYSIGNAL("freezerItemDoubleClickedOnInOnePopSig"), 
-      self.m_session_mdl.m_session_mdtr, PYSIGNAL("freezerItemDoubleClickedOnInOnePopSig"))
-    self.connect( self.m_session_mdl.m_session_mdtr, PYSIGNAL("freezerItemDoubleClicked"),
-      self.freezerItemDoubleClicked)
+      self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("freezerItemDoubleClickedOnInOnePopSig"))
+    self.connect( self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("freezerItemDoubleClicked"), self.freezerItemDoubleClicked)
+    self.connect(self.m_session_mdl.m_session_mdtr,
+      PYSIGNAL("restartPopulationSig"), self.restartPopulationSlot)
 
+
   def dropEvent( self, e ):
     freezer_item_name = QString()
     print "dropEvent in one population"
@@ -33,7 +38,16 @@
         self.emit(PYSIGNAL("petriDishDroppedInPopViewSig"), (e,))
 
   def freezerItemDoubleClicked(self, freezer_item_name):
-   if  self.isVisible():
-       self.emit(PYSIGNAL("freezerItemDoubleClickedOnInOnePopSig"), (freezer_item_name,))
+   if self.isVisible():
+     self.emit(PYSIGNAL("freezerItemDoubleClickedOnInOnePopSig"), 
+       (freezer_item_name,))
 
- 
\ No newline at end of file
+  def restartPopulationSlot(self, session_mdl):
+    print "pyOnePopulationCtrl.py:restartPopulationSlot called"
+    self.m_one_pop_petri_dish_ctrl.restart(self.m_session_mdl)
+    self.m_one_pop_graph_ctrl.restart()
+    self.m_one_pop_stats_ctrl.restart()
+    session_mdl.m_session_mdtr.emit(PYSIGNAL("doStartAvidaSig"), ())
+
+
+

Modified: trunk/source/python/AvidaGui2/pyPetriConfigureCtrl.py
===================================================================
--- trunk/source/python/AvidaGui2/pyPetriConfigureCtrl.py	2005-07-01 19:01:00 UTC (rev 222)
+++ trunk/source/python/AvidaGui2/pyPetriConfigureCtrl.py	2005-07-01 19:16:44 UTC (rev 223)
@@ -52,22 +52,69 @@
       self.ChangeStopSpinBoxSlot)
     self.connect(self.SavePetriPushButton, SIGNAL("clicked()"), 
       self.m_session_mdl.m_session_mdtr, PYSIGNAL("freezeDishPhaseISig"))
-    self.connect(self.m_session_mdl.m_session_mdtr, PYSIGNAL("freezeDishPhaseIISig"), 
-      self.FreezePetriSlot)
+    self.connect(self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("freezeDishPhaseIISig"), self.FreezePetriSlot)
     self.connect(self.m_session_mdl.m_session_mdtr,
       PYSIGNAL("doDefrostDishSig"), self.FillDishSlot)
-    self.connect(self.m_session_mdl.m_session_mdtr, PYSIGNAL("doInitializeAvidaPhaseISig"),
-      self.DisablePetriConfigureSlot)
-    self.connect(self.m_session_mdl.m_session_mdtr, PYSIGNAL("doInitializeAvidaPhaseISig"),
-      self.CreateFilesFromPetriSlot)
-    self.connect(self.m_session_mdl.m_session_mdtr, PYSIGNAL("setAvidaSig"), self.setAvidaSlot)
-    self.connect(self.m_session_mdl.m_session_mdtr, PYSIGNAL("doInitializeAvidaPhaseIISig"),
+    self.connect(self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("doInitializeAvidaPhaseISig"), self.DisablePetriConfigureSlot)
+    self.connect(self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("doInitializeAvidaPhaseISig"), self.CreateFilesFromPetriSlot)
+    self.connect(self.m_session_mdl.m_session_mdtr, PYSIGNAL("setAvidaSig"), 
+      self.setAvidaSlot)
+    self.connect(self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("doInitializeAvidaPhaseIISig"),
       self.doLoadPetriDishConfigFileSlot)
-    self.connect( self, PYSIGNAL("petriDishDroppedInPopViewSig"), self.m_session_mdl.m_session_mdtr, PYSIGNAL("petriDishDroppedInPopViewSig"))
+    self.connect( self, PYSIGNAL("petriDishDroppedInPopViewSig"), 
+      self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("petriDishDroppedInPopViewSig"))
     self.ChangeMutationTextSlot()
     self.ChangeWorldSizeTextSlot()
     self.populated = False
+    
+  def destruct(self):
+    self.m_session_petri_view = None
+    self.m_avida = None
+    self.full_petri_dict = {}
+    self.DishDisabled = False
+    self.disconnect(self.MutationSlider, SIGNAL("valueChanged(int)"), 
+      self.ChangeMutationTextSlot)
+    self.disconnect(self.WorldSizeSlider, SIGNAL("valueChanged(int)"), 
+      self.ChangeWorldSizeTextSlot)
+    self.disconnect(self.DieYesButton, SIGNAL("clicked()"), 
+      self.ChangeDeathTextSlot)
+    self.disconnect(self.DieNoButton, SIGNAL("clicked()"), 
+      self.ChangeDeathTextSlot)
+    self.disconnect(self.RadomGeneratedRadioButton, SIGNAL("clicked()"), 
+      self.ChangeRandomSpinBoxSlot)
+    self.disconnect(self.RandomFixedRadioButton, SIGNAL("clicked()"), 
+      self.ChangeRandomSpinBoxSlot)
+    self.disconnect(self.StopManuallyRadioButton, SIGNAL("clicked()"), 
+      self.ChangeStopSpinBoxSlot)
+    self.disconnect(self.StopAtRadioButton, SIGNAL("clicked()"), 
+      self.ChangeStopSpinBoxSlot)
+    self.disconnect(self.SavePetriPushButton, SIGNAL("clicked()"), 
+      self.m_session_mdl.m_session_mdtr, PYSIGNAL("freezeDishPhaseISig"))
+    self.disconnect(self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("freezeDishPhaseIISig"), self.FreezePetriSlot)
+    self.disconnect(self.m_session_mdl.m_session_mdtr,
+      PYSIGNAL("doDefrostDishSig"), self.FillDishSlot)
+    self.disconnect(self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("doInitializeAvidaPhaseISig"), self.DisablePetriConfigureSlot)
+    self.disconnect(self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("doInitializeAvidaPhaseISig"), self.CreateFilesFromPetriSlot)
+    self.disconnect(self.m_session_mdl.m_session_mdtr, PYSIGNAL("setAvidaSig"), 
+      self.setAvidaSlot)
+    self.disconnect(self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("doInitializeAvidaPhaseIISig"),
+      self.doLoadPetriDishConfigFileSlot)
+    self.disconnect( self, PYSIGNAL("petriDishDroppedInPopViewSig"), 
+      self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("petriDishDroppedInPopViewSig"))
+    self.populated = False
+    self.m_session_mdl = None
 
+  
   def ChangeMutationTextSlot(self):
     slide_value = float(self.MutationSlider.value())/100.0
     slide_value = pow(10,slide_value)
@@ -116,7 +163,8 @@
     # the existing dish
 
     if self.DishDisabled:
-      self.m_session_mdl.m_session_mdtr.emit(PYSIGNAL("freezeDishPhaseISig"),())
+      self.m_session_mdl.m_session_mdtr.emit(PYSIGNAL("freezeDishPhaseISig"),
+        (True, False, ))
       return
     self.full_petri_dict = petri_dict.dictionary
     settings_dict =  petri_dict.dictionary["SETTINGS"]
@@ -304,7 +352,7 @@
           shutil.copyfile(tmp_count_file, os.path.join(file_name, "count.dat"))
         file_name = os.path.join(file_name, "petri_dish")
         tmp_dict["POPULATION"] = population_dict
-      freezer_file = pyWriteToFreezer(tmp_dict, is_empty_dish, file_name)
+      freezer_file = pyWriteToFreezer(tmp_dict, file_name)
       if (is_empty_dish):
         self.m_session_mdl.saved_empty_dish = True
       else:
@@ -314,6 +362,8 @@
       PYSIGNAL("doRefreshFreezerInventorySig"), ())
     if send_reset_signal:
       print "sending reset signal from pyPetriConfigureCtrl:FreezePetriSlot" 
+      self.m_session_mdl.m_session_mdtr.emit(
+        PYSIGNAL("restartPopulationSig"), (self.m_session_mdl, ))
 
     # If the send_quit_signal flag was sent to this routine kill the application
     # (Instead of killing the application directly a signal should be sent

Modified: trunk/source/python/AvidaGui2/pyPetriDishCtrl.py
===================================================================
--- trunk/source/python/AvidaGui2/pyPetriDishCtrl.py	2005-07-01 19:01:00 UTC (rev 222)
+++ trunk/source/python/AvidaGui2/pyPetriDishCtrl.py	2005-07-01 19:16:44 UTC (rev 223)
@@ -63,6 +63,26 @@
     self.connect( self.m_session_mdl.m_session_mdtr, PYSIGNAL("orgClickedOnSig"),
       self.setDragSlot)
 
+  def destruct(self):
+    self.m_avida = None
+    self.m_canvas = None
+    self.m_cell_info = None
+    self.m_changed_cell_items = []
+    self.m_indexer = None
+    self.m_color_lookup_functor = None
+    self.m_background_rect = None
+    self.m_change_list = None
+    self.m_org_clicked_on_item = None
+    self.m_occupied_cells_ids = []
+    self.m_petri_dish_layout = None
+    self.disconnect(self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("setAvidaSig"), self.setAvidaSlot)
+    self.disconnect(self.m_canvas_view, PYSIGNAL("orgClickedOnSig"), 
+      self.m_session_mdl.m_session_mdtr, PYSIGNAL("orgClickedOnSig"))
+    self.disconnect(self.m_session_mdl.m_session_mdtr, 
+      PYSIGNAL("orgClickedOnSig"), self.updateOrgClickedOutlineCellNumberSlot)
+    self.m_canvas_view = None
+    self.m_session_mdl = None
 
   def setColorLookupFunctor(self, color_lookup_functor):
     self.m_color_lookup_functor = color_lookup_functor
@@ -143,7 +163,7 @@
   def setIndexer(self, indexer):
     self.m_indexer = indexer
 
-  def updateOrgClickedOutlineCellNumberSlot(self, org_clicked_on_item):
+  def updateOrgClickedOutlineCellNumberSlot(self, org_clicked_on_item = None):
     if self.m_org_clicked_on_item:
       self.m_org_clicked_on_item.setPen(QPen(Qt.NoPen))
     self.m_org_clicked_on_item = org_clicked_on_item




More information about the Avida-cvs mailing list