[Avida-cvs] [avida-svn] r425 - branches/developers/avida-edward/source/python/AvidaGui2

kaben@myxo.css.msu.edu kaben at myxo.css.msu.edu
Tue Dec 20 10:54:00 PST 2005


Author: kaben
Date: 2005-12-20 13:54:00 -0500 (Tue, 20 Dec 2005)
New Revision: 425

Modified:
   branches/developers/avida-edward/source/python/AvidaGui2/pyEduWorkspaceCtrl.py
   branches/developers/avida-edward/source/python/AvidaGui2/pyNavBarCtrl.py
   branches/developers/avida-edward/source/python/AvidaGui2/pyOneAna_GraphCtrl.py
   branches/developers/avida-edward/source/python/AvidaGui2/pyOneAna_PetriDishCtrl.py
   branches/developers/avida-edward/source/python/AvidaGui2/pyOneAna_PetriDishView.ui
   branches/developers/avida-edward/source/python/AvidaGui2/pyOneAnalyzeCtrl.py
   branches/developers/avida-edward/source/python/AvidaGui2/pyOneAnalyzeView.ui
   branches/developers/avida-edward/source/python/AvidaGui2/pyOneOrganismCtrl.py
   branches/developers/avida-edward/source/python/AvidaGui2/pyOnePop_GraphCtrl.py
   branches/developers/avida-edward/source/python/AvidaGui2/pyOnePopulationCtrl.py
   branches/developers/avida-edward/source/python/AvidaGui2/pyOrganismConfigureView.ui
   branches/developers/avida-edward/source/python/AvidaGui2/pyOrganismScopeCtrl.py
   branches/developers/avida-edward/source/python/AvidaGui2/pyOrganismScopeView.py
   branches/developers/avida-edward/source/python/AvidaGui2/pyTwoAnalyzeCtrl.py
   branches/developers/avida-edward/source/python/AvidaGui2/pyTwoOrganismCtrl.py
   branches/developers/avida-edward/source/python/AvidaGui2/pyTwoPopulationCtrl.py
Log:

* In Organism Scope, made the following configurable:
- Show Registers
- Show Stacks
- Show Full Stacks
- Show Inputs and Outputs
- Hardware Indicator Size

* In Organism Scope, disabled options that don't do anything yet.

* Removed "not-working" parts of Analyze.

* In Petri Dish and Analyze, enabled "Print Graph..." menu item.

* In Navigation section, removed radiobuttons and subsections, and just
* made each view into its own item.



Modified: branches/developers/avida-edward/source/python/AvidaGui2/pyEduWorkspaceCtrl.py
===================================================================
--- branches/developers/avida-edward/source/python/AvidaGui2/pyEduWorkspaceCtrl.py	2005-12-19 20:36:45 UTC (rev 424)
+++ branches/developers/avida-edward/source/python/AvidaGui2/pyEduWorkspaceCtrl.py	2005-12-20 18:54:00 UTC (rev 425)
@@ -47,8 +47,10 @@
       self.m_cli_to_ctrl_dict[cli] = ctrl
       self.m_ctrl_to_cli_dict[ctrl] = cli
 
-    self.m_nav_bar_ctrl.m_one_population_cli.setState(QCheckListItem.On)
-    self.m_nav_bar_ctrl.m_one_population_cli.setState(QCheckListItem.Off)
+    #self.m_nav_bar_ctrl.m_one_population_cli.setState(QCheckListItem.On)
+    #self.m_nav_bar_ctrl.m_one_population_cli.setState(QCheckListItem.Off)
+    #self.m_nav_bar_ctrl.m_one_population_cli.setSelected(True)
+    #self.m_nav_bar_ctrl.m_one_population_cli.setSelected(False)
 
     #for ctrl in self.m_ctrl_to_cli_dict.keys():
     #  ctrl.construct(self.m_session_mdl)
@@ -62,9 +64,6 @@
     self.connect(
       self.m_nav_bar_ctrl.m_list_view, SIGNAL("clicked(QListViewItem *)"), 
       self.navBarItemClickedSlot)
-    self.connect(
-      self.m_widget_stack, SIGNAL("aboutToShow(QWidget *)"), 
-      self.ctrlAboutToShowSlot)
     # self.connect(
     #   self.fileOpenFreezerAction,SIGNAL("activated()"),self.freezerOpenSlot)
     self.connect(
@@ -103,8 +102,8 @@
     self.connect(self.m_session_mdl.m_session_mdtr, PYSIGNAL("statusBarMessageSig"), self.statusBarMessageSlot)
     self.connect(self.m_session_mdl.m_session_mdtr, PYSIGNAL("statusBarClearSig"), self.statusBarClearSlot)
 
-    self.m_nav_bar_ctrl.m_one_population_cli.setState(QCheckListItem.On)
-    self.m_widget_stack.raiseWidget(self.m_one_population_ctrl)
+    self.navBarItemClickedSlot(self.m_nav_bar_ctrl.m_one_population_cli)
+    self.m_nav_bar_ctrl.m_list_view.setSelected(self.m_nav_bar_ctrl.m_one_population_cli, True)
     self.splitter1.setSizes([100])
 
     self.show()
@@ -116,21 +115,15 @@
       del self.m_ctrl_to_cli_dict[key]
 
   def navBarItemClickedSlot(self, item):
-    print "called navBarItemClickedSlot"
     if item:
-      print "item true"
-      print item
-      dir (item)
       if self.m_cli_to_ctrl_dict.has_key(item):
-        self.m_widget_stack.raiseWidget(self.m_cli_to_ctrl_dict[item])
+        controller = self.m_cli_to_ctrl_dict[item]
+        old_controller = self.m_widget_stack.visibleWidget()
+        if old_controller is not None:
+          old_controller.aboutToBeLowered()
+        controller.aboutToBeRaised()
+        self.m_widget_stack.raiseWidget(controller)
 
-  def ctrlAboutToShowSlot(self, ctrl):
-    if ctrl:
-      if self.m_ctrl_to_cli_dict.has_key(ctrl):
-        for cli in self.m_cli_to_ctrl_dict.keys():
-          cli.setState(QCheckListItem.Off)
-        self.m_ctrl_to_cli_dict[ctrl].setState(QCheckListItem.On)
-
   def close(self, also_delete = False):
     self.emit(PYSIGNAL("quitAvidaPhaseISig"), ())
     return False

Modified: branches/developers/avida-edward/source/python/AvidaGui2/pyNavBarCtrl.py
===================================================================
--- branches/developers/avida-edward/source/python/AvidaGui2/pyNavBarCtrl.py	2005-12-19 20:36:45 UTC (rev 424)
+++ branches/developers/avida-edward/source/python/AvidaGui2/pyNavBarCtrl.py	2005-12-20 18:54:00 UTC (rev 425)
@@ -10,41 +10,14 @@
     pyNavBarView.__init__(self,parent,name,fl)
 
   def construct(self, session_mdl):
-#    def generateCLIGroup(list_view, group_name, first_name, second_name):
-    def generateCLIGroup(list_view, group_name, first_name):
-      group_lvi = QCheckListItem(list_view, group_name, QCheckListItem.RadioButtonController)
-      group_lvi.setSelectable(False)
-      group_lvi.setOpen(True)
-      #
-#      second_cli = QCheckListItem(group_lvi, second_name, QCheckListItem.RadioButton)
-#      second_cli.setSelectable(False)
-      first_cli = QCheckListItem(group_lvi, first_name, QCheckListItem.RadioButton)
-      first_cli.setSelectable(False)
-      #
-#      return (group_lvi, first_cli, second_cli)
-      return (group_lvi, first_cli)
-
+    self.m_list_view.setSelectionMode(QListView.Single)
     self.m_list_view.setSortColumn(-1)
     self.m_list_view.clear()
 
-#    (self.m_analyze_lvi, self.m_one_analyze_cli, self.m_two_analyze_cli) = generateCLIGroup(
-#      self.m_list_view, " Analysis", "Analyze One", "Compare Two")
+    self.m_one_analyze_cli = QListViewItem(self.m_list_view, "Analysis")
+    self.m_one_organism_cli = QListViewItem(self.m_list_view, "Organism")
+    self.m_one_population_cli = QListViewItem(self.m_list_view, "Population")
 
-    (self.m_analyze_lvi, self.m_one_analyze_cli) = generateCLIGroup(
-      self.m_list_view, " Analysis", "Analyze One")
-
-#    (self.m_organism_lvi, self.m_one_organism_cli, self.m_two_organism_cli) = generateCLIGroup(
-#      self.m_list_view, " Organisms", "View One", "Compare Two")
-
-    (self.m_organism_lvi, self.m_one_organism_cli) = generateCLIGroup(
-      self.m_list_view, " Organisms", "View One")
-
-#    (self.m_population_lvi, self.m_one_population_cli, self.m_two_population_cli) = generateCLIGroup(
-#      self.m_list_view, " Populations", "View One", "Compare Two")
-
-    (self.m_population_lvi, self.m_one_population_cli) = generateCLIGroup(
-      self.m_list_view, " Populations", "View One")
-
-    self.m_population_lvi.setPixmap(0, self.image0)
-    self.m_organism_lvi.setPixmap(0, self.image1)
-    self.m_analyze_lvi.setPixmap(0, self.image2)
+    self.m_one_population_cli.setPixmap(0, self.image0)
+    self.m_one_organism_cli.setPixmap(0, self.image1)
+    self.m_one_analyze_cli.setPixmap(0, self.image2)

Modified: branches/developers/avida-edward/source/python/AvidaGui2/pyOneAna_GraphCtrl.py
===================================================================
--- branches/developers/avida-edward/source/python/AvidaGui2/pyOneAna_GraphCtrl.py	2005-12-19 20:36:45 UTC (rev 424)
+++ branches/developers/avida-edward/source/python/AvidaGui2/pyOneAna_GraphCtrl.py	2005-12-20 18:54:00 UTC (rev 425)
@@ -100,10 +100,6 @@
 
     self.modeActivatedSlot() 
 
-    self.connect(
-      self.m_session_mdl.m_session_mdtr, PYSIGNAL("printGraphSig"),
-      self.printGraphSlot)
-
   def load(self, filename, colx, coly):
     
     init_file = cInitFile(cString(os.path.join(str(self.m_petri_dish_dir_path), filename)))

Modified: branches/developers/avida-edward/source/python/AvidaGui2/pyOneAna_PetriDishCtrl.py
===================================================================
--- branches/developers/avida-edward/source/python/AvidaGui2/pyOneAna_PetriDishCtrl.py	2005-12-19 20:36:45 UTC (rev 424)
+++ branches/developers/avida-edward/source/python/AvidaGui2/pyOneAna_PetriDishCtrl.py	2005-12-20 18:54:00 UTC (rev 425)
@@ -12,6 +12,11 @@
 
   def construct(self, session_mdl):
     self.m_session_mdl = session_mdl     
+    # XXX temporarily disabled nonfunctioning gui element, reenable in
+    # future when it works. @kgn
+    self.m_ana_petri_dish_ctrl.hide()
+    self.m_ana_gradient_scale_ctrl.hide()
+    self.m_ana_live_controls_ctrl.hide()
     self.connect( self.m_session_mdl.m_session_mdtr, 
       PYSIGNAL("freezerItemDroppedInOneAnalyzeSig"),
       self.freezerItemDropped)  

Modified: branches/developers/avida-edward/source/python/AvidaGui2/pyOneAna_PetriDishView.ui
===================================================================
--- branches/developers/avida-edward/source/python/AvidaGui2/pyOneAna_PetriDishView.ui	2005-12-19 20:36:45 UTC (rev 424)
+++ branches/developers/avida-edward/source/python/AvidaGui2/pyOneAna_PetriDishView.ui	2005-12-20 18:54:00 UTC (rev 425)
@@ -100,22 +100,6 @@
                                 </size>
                             </property>
                         </spacer>
-                        <widget class="QToolButton">
-                            <property name="name">
-                                <cstring>toolButton31_2</cstring>
-                            </property>
-                            <property name="font">
-                                <font>
-                                    <pointsize>10</pointsize>
-                                </font>
-                            </property>
-                            <property name="text">
-                                <string></string>
-                            </property>
-                            <property name="iconSet">
-                                <iconset>image1</iconset>
-                            </property>
-                        </widget>
                         <spacer>
                             <property name="name">
                                 <cstring>spacer126_2</cstring>
@@ -149,6 +133,9 @@
                     <property name="name">
                         <cstring>m_ana_petri_dish_ctrl</cstring>
                     </property>
+                    <property name="enabled">
+                        <bool>true</bool>
+                    </property>
                     <property name="sizePolicy">
                         <sizepolicy>
                             <hsizetype>3</hsizetype>
@@ -181,100 +168,6 @@
         </widget>
         <widget class="QLayoutWidget">
             <property name="name">
-                <cstring>layout1</cstring>
-            </property>
-            <hbox>
-                <property name="name">
-                    <cstring>unnamed</cstring>
-                </property>
-                <widget class="QLabel">
-                    <property name="name">
-                        <cstring>textLabel11</cstring>
-                    </property>
-                    <property name="sizePolicy">
-                        <sizepolicy>
-                            <hsizetype>0</hsizetype>
-                            <vsizetype>1</vsizetype>
-                            <horstretch>0</horstretch>
-                            <verstretch>0</verstretch>
-                        </sizepolicy>
-                    </property>
-                    <property name="text">
-                        <string>&lt;font size="-1"&gt;&lt;p align="right"&gt;Update:&lt;/p&gt;&lt;/font&gt;</string>
-                    </property>
-                </widget>
-                <widget class="QLabel">
-                    <property name="name">
-                        <cstring>textLabel12</cstring>
-                    </property>
-                    <property name="sizePolicy">
-                        <sizepolicy>
-                            <hsizetype>0</hsizetype>
-                            <vsizetype>1</vsizetype>
-                            <horstretch>0</horstretch>
-                            <verstretch>0</verstretch>
-                        </sizepolicy>
-                    </property>
-                    <property name="text">
-                        <string>&lt;font size="-1"&gt;10000&lt;/font&gt;</string>
-                    </property>
-                </widget>
-                <widget class="QComboBox">
-                    <item>
-                        <property name="text">
-                            <string>Merit</string>
-                        </property>
-                    </item>
-                    <property name="name">
-                        <cstring>comboBox1_2</cstring>
-                    </property>
-                    <property name="sizePolicy">
-                        <sizepolicy>
-                            <hsizetype>3</hsizetype>
-                            <vsizetype>0</vsizetype>
-                            <horstretch>0</horstretch>
-                            <verstretch>0</verstretch>
-                        </sizepolicy>
-                    </property>
-                    <property name="font">
-                        <font>
-                            <pointsize>11</pointsize>
-                        </font>
-                    </property>
-                </widget>
-                <widget class="QLabel">
-                    <property name="name">
-                        <cstring>textLabel10</cstring>
-                    </property>
-                    <property name="sizePolicy">
-                        <sizepolicy>
-                            <hsizetype>0</hsizetype>
-                            <vsizetype>1</vsizetype>
-                            <horstretch>0</horstretch>
-                            <verstretch>0</verstretch>
-                        </sizepolicy>
-                    </property>
-                    <property name="text">
-                        <string>&lt;font size="-1"&gt;&lt;p align="right"&gt;Zoom:&lt;/p&gt;&lt;/font&gt;</string>
-                    </property>
-                </widget>
-                <widget class="QSpinBox">
-                    <property name="name">
-                        <cstring>spinBox1</cstring>
-                    </property>
-                    <property name="sizePolicy">
-                        <sizepolicy>
-                            <hsizetype>0</hsizetype>
-                            <vsizetype>0</vsizetype>
-                            <horstretch>0</horstretch>
-                            <verstretch>0</verstretch>
-                        </sizepolicy>
-                    </property>
-                </widget>
-            </hbox>
-        </widget>
-        <widget class="QLayoutWidget">
-            <property name="name">
                 <cstring>layout253</cstring>
             </property>
             <hbox>
@@ -353,7 +246,7 @@
             <horstretch>0</horstretch>
             <verstretch>0</verstretch>
         </sizepolicy>
-        <pixmap>image2</pixmap>
+        <pixmap>image1</pixmap>
         <property type="0">3</property>
         <property type="1">pyPetriDishCtrl</property>
         <property type="3">-1</property>
@@ -408,7 +301,7 @@
             <horstretch>0</horstretch>
             <verstretch>0</verstretch>
         </sizepolicy>
-        <pixmap>image2</pixmap>
+        <pixmap>image1</pixmap>
         <property type="0">3</property>
         <property type="1">pyGradientScaleCtrl</property>
         <property type="3">-1</property>
@@ -463,7 +356,7 @@
             <horstretch>0</horstretch>
             <verstretch>0</verstretch>
         </sizepolicy>
-        <pixmap>image2</pixmap>
+        <pixmap>image1</pixmap>
         <property type="0">3</property>
         <property type="1">pyAnalyzeControlsCtrl</property>
         <property type="3">-1</property>
@@ -478,9 +371,6 @@
         <data format="PNG" length="2166">89504e470d0a1a0a0000000d4948445200000020000000200806000000737a7af40000083d49444154789ced965d6c1cd515c7ffe7de99d9d94f7bbdfe88d71b6c123b350492b4e13340534844092204a2d2d2873685f6a55511a52d502168d5022a0d1105aa3e205024d440118516a9a050a08a8302095875e4382190388eedaced6ce2d8bbeb9dd999d9b9f7f481354a281508a9ea0b7fe9e8ce9566747ee77f8fee19e00bfd9f459fe7a3dede5e239148c4b4d63600b22ccbb36ddbedebebabfd4f00d6adbb36bd62c585975ebefaca65cb572cef1124b3c2b46dcb22101154a851ab05810afdc2c1a1fdc3834383075ff9fbdf76edd8b163ea7303343636e2baeb367cf9d65b6fbb6971f7791747ac0831989818600d8260800800181a520a862012c48665515c854a14a6f2fd8f3df6f09fb76d7bbaaf52a9e8cf0cb06cd9f2962d5b9eb8a367f1b24b49082622822408225b9a463c547e42a9c0545082344108c164183553d82e42ed1986884ac99284505ab12a4c8ff7fff887b7dcdfd7b7e3e8a7026cdc78d3d2dffdf689fb8561a749486870bc16786dfcfe60c63564cc4f35722dd02ca5412c04c0820166a5439206211a89503c1155f164836b9b56516be52985596173f1f1471f78e8a1071fdc797a3e79fa66f!
 d861b7b376fdeba458568508c983b37d3633cf7444fe2d73f6d8cbef8ac55b87203478d2681532cec50520862d38ec194364cc3264346692e1260944eca5967c60a1ca7811447416645d528bc62ed555f65e58dec7efbedf1ff00685db020f2e49f5efcbd509166a752e928ce16cea955dc78707286e6b29d5ceeea6671f93a54a74be4557c049e0fb325c9562402614821a4c1920c7a3db69736d356da2107490651ee0e72e6ececa916210d82b2e6d65c73e545bb76ee782d7fec980b00c63cc05df7dc7375636b36373b796aa15b2d9d659971862541abafd3200841822d098ee55a95d64c81d6306c0b441244202249028295ef5167b599cbb24a29cf228e986c99292a1767737e508dc168f9e02777fde25bbb6fb8fe8f67f4c0beb1f1479853ebcbf9e35da68812910121084402009160b01586a23ae1906148f896e24436c362c621cd048a0aa86482df8dbf4f5c03a7c3283afc6648925a2a12cc1ab59a031911f9444b6af7b95d999bcf708028d6599e2c74466482200488058429191a421069105330576537f0c854041d8bb2a998bcb22212125eb50a95b1f41f8ce7c5341fa7b4d98847dd3bd4cb4dfdc66e0ca0432fe0ebdd8bb8c76dcd7a65af13401440751ec09cce9fe848990d426b01410299dddba9e9b9a7a46ecb626ed555287ded7a4e0f0fa0c94e70ada!
 583fdb616f695a64a8c35c21a0bdb204ff8942d26a0559449d7286d36e0b03!
 986823f8
58ae1d04c75096cab9b2a4e2927848868ad3f0288e99a9f86252009440651faf597608e1c068d8fa2d0bb82d2837bd0facbdb05b382d79ea38967778571af0a3b1227a3c91035db56b163a362ebe165ba965983627bbb1629139b0a6bf5517f094d739117193922084023a9b58e02281a00048048b9e49a0d51909416136be42fbf86d0d90bbb788abd4bd7726acfebe458064c2d515e7c0e9b8641e15c48811342b90a5e86a9e3f9271179f11941a601ebea1bd8b9e5365effab3b299416fc454b28fffd35ac88c0b66d0a216cadb531ef8071f88323a149315e98eb427ae81da40e0c40b5b6ebe08a35f0969cc7c34b73b0bebd49c7a7cb64b005a14145edb3960a61d54326d1c5aa3029825814863450cdb4c1ca8fc118fe8064a8402387801fdcaddca04a3293545a6b02401f35e1b1c9d1c3d90567779b91495ef4d236b277fe83c888d0f1af6fe0e9b5ab717bec11e1441d64dbb2b86ff6bb6ae55b2f5376600f6a6d3978e7af44592ee289079ed2ba5c044f8e01a934a2a18fb11bbfa78dc97162a78892ef09470b71a4ffdd3100b579000610eeec7be5d54b56ad5b973f3a4103c926ea5e9043cc7330b762151fb2a7c8a1392862b8ce2c3ad04a89e7b69218d84351d380bbfe6646ef4a12c2603466981a3204300f26c7e581a59771b35e8feca80d77a24076b2815f7d!
 e19957018400c27980eabebdeff4ed1bdaf3afee6ccfca63975ccdde3737216ec6d0d09ce5aed9227ee4dec0d3b248920d6d9a3ee6c240c8540aa652a8f42c65a54230334002cc3580857859be8df766f68a6bdd5530fc76c4b4c5232307c6dfd8fe97bf02f000e8f98bc800d09a6e6abee0de4d3f7fb21d686d5d7416389164ce75217b78088d634761c7e35cb96c1d54ba9545a54455cb625d2913271a20e2093048b10e85ef7b54f55d1e8d4d88b6482369669cc817513e72aafcf0963bef181b1dfe2780e300fcf959a00128afea7a7b8787f69d7feef24bdadbda5261a281a014b94e85665bda68ca0fe888afa9367280e8e9c705bdb95de8fc119a5c740edc23efd389916139911fa3d98a43b1a42dce4eb4515246415585f143a3852d9befbe6f7474f84d00d3009c8f4fc31040e8ba4ef9adfdfd6f253299f6cef357e60c82e0aa4ba11fa0e478989249764f16e864ac09854c0ef9641bcf5871aa0e0e90373e8edad424e95a8d626dcdb0a3124ed9516fbcb6bdffc1dffcecdee3c727fbeb95973fba8171a608401c4006404bd7d9dd176ffcc677367e75f5b517472276d42939e244c9070a79a852112208a02c0b685d80c8a1fd90cc2002f4c22e9deae90a0e1eecdff7fc0bdb5e786fffe02e000500a700ccd51dff448079450034d4231d8f27ba565e78d9055f3a!
 f72bcb524d1d67b52f5cbc2062462d3004b32668a57ca7549b1a3978e2647e!
 647264f2
e8d0d0c1bd7bcae5d208801280627dadd69bfe8c8aff9b043e1c180900b1ba337100b610221e8dc6929615b18904825ae057dd8aa3949aab27a902a80070eb67ed02509f94e4b3fc15130013805577c6acafa21e5c7fa7860ffbc8af3ffb00828f57fc79003e2e715ae034005d0ffeb4a45fe80b9dae7f030cdbe8df8fa444040000000049454e44ae426082</data>
     </image>
     <image name="image1">
-        <data format="PNG" length="528">89504e470d0a1a0a0000000d494844520000000f0000000e0806000000f08a46ef000001d749444154789c8592cd6a53511485bf9b5c098969a3adb645c1e24f1a9d288a139180c1d0a9e044a18238a8934ed4e2d41770208a5121fa04fa06058722c46141090d0435850493e6aff626b9e72c076dd33411ba6071e0ecb3ce62efbd90c4205bad96969f3c55a552d1706d980106d06eb7957991e5883b85319683e04802a0d3e928f332cb4c608edfb53c53735142a1d0bec7b1588c542a45381c76fa62dff7f5e65596e39ca356dee2d8d418963d6721ac0c5e6f8b5223cfdd07b74824128e238977afdf2bd63dc546b983acc0d91581248c8495c5f37da6a7c7215a63e1e16d82972f5e5577fd30ed3f86dd16f63b8295c5588b91a5d6dce4686492466f9dc0cdf91b14367ee0197f48b80dbbf3a19130b20868793dcabfea04a2d1a8b3f4688192f79dae35fb5ca5edd358db77b7b2f47a066fabbb37edc25a4199e79f383d769e4dbfc3df6e1383b0560870022eae13c2c8303931ce89b303ab02c8e5bee9e3872f6c7a75aea5cf100c06fbb566a34deeeb1a13e10bb8ee21aecf4f32929a9595cfba776749d56a752461f97c5e8bf79fe9f1e25b158b45b9c3a949a7534e28e42a12898c242a1e8f3b3327a3aa55eaccce!
 ce3a2362806432e9fcef1ee0d29504eb3f6b3b533d20fcc35c5d5d55a9549224fe01033d5afa3250e5560000000049454e44ae426082</data>
-    </image>
-    <image name="image2">
         <data format="PNG" length="1002">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000003b149444154789cad945f4c5b551cc73fe7dc4b7b4bcba0762d45c43114323599ee6192609c51d883892ce083f1718b3ebb185f8dc91e972cf39d2d2a2f1af664b6f1e0fe3863a0718969700eb0c52142da0242a1bd6d696f7bcff101585203ceb8fd9ece39f99dcff9fe7edf939f88c562ec465f5f9fe609442c161362173c3e3eae7b7a7ac8e7f36432196cdbfe4f907c3e4f2291201e8fe338cec3737357e9e8e828aded1e229d650e1f2d51754b082110124c13a4dc5ea341eb9dc284c0558a853f3ce8cb0677ef500fde7d39d2596679e326597b8e9abb85d7a770ab16ab6983ec5a05b487a70e36f0f4e10afe408d6a558310980108478dba4a1e8233990c5d474b64ed39aa3a8fe5f3317fbf81dbd70bccfeb205947632fd74f6589c1c6ea2f70d03a58ba0c1f2c9bdc1b66de3b8256a6e11cbe7e3ee1d181b590124fe2693aeee08d223c82c3a2c24b7b874bec8f26288774f7bd054504aef0dde6e99c0eb83f9fb266323cb80a27fb0958141836044605a2ee5523393371cc646fee2da37195aa35d0c0c5b4859ac03d7e91712dcaac5adab3650a3ff9d08ef7dd8404bb48869e5d958b5b87dadc4c9a1464e9f0d0326df7!
 ebd86bd2e310cb1bf62d384d59441f2d70a070e1c60e09489929b988681bdd9cc97170bcc4c65595f71f8e0e3301337fc24a7732467831875a47f289652b0be5e4151e6d07316c1b0c0340d8ab92023e76d66a6b2840e36d2fb7a13fee632475e6edc367ea98a90fb98b7dd6310ca0328a44761582e1bab41befabcc0ec940d28bc5e93b68e064cab84e1d9beaeb48934eac1f53b01c1b000fca496aa54b61a99fcde61662a4b4b4b23d1680be9d426173e4df3602a48ea411989a4fd590f52a8fd156b05ed9d350e3defe3cfdf4b4c7ce770ea7d3fb9f520afbe1620daeee5c26735d20b9b9cfb6811a754a439e4e5c5639a4caa1e5caf586bfc0197b78702005cb9b4cae4cd3267ce8638fe964bd72b393e39d74928d242617303a756a37f284447770dcdbffc6384a05a85de1306e9a52057c7527c7131c3c42d3f475eb2303c82d4fc3276d6811db37efeb148723082d9b08f79f97c1e5729109a9a28307cc622d2d6cdf52b2b24efe548dedb00142009862cfa879ee1a71f6cec928353511472fbf4389148b0b0e0c108081412458dfe21c9f11351e67e7358595468246d1d1e5e38a6e9e851bc39d84ab502a669331dafec0d8ec7e3e8cb06e1a881d727d1ae40180a434a8c9db129a54126ad48a7358c2b4c5352c8c374bcccdab2bb37d8719cba79fab8211f9df218e05!
 82c261e95f8bfc04f1a1e8bc5c4dfe0a19017a725d8c60000000049454e44a!
 e426082<
/data>
     </image>
 </images>

Modified: branches/developers/avida-edward/source/python/AvidaGui2/pyOneAnalyzeCtrl.py
===================================================================
--- branches/developers/avida-edward/source/python/AvidaGui2/pyOneAnalyzeCtrl.py	2005-12-19 20:36:45 UTC (rev 424)
+++ branches/developers/avida-edward/source/python/AvidaGui2/pyOneAnalyzeCtrl.py	2005-12-20 18:54:00 UTC (rev 425)
@@ -1,5 +1,7 @@
 # -*- coding: utf-8 -*-
 
+from descr import descr
+
 from qt import *
 from pyOneAnalyzeView import pyOneAnalyzeView
 import os.path
@@ -14,6 +16,10 @@
     self.m_session_mdl = session_mdl
     self.m_one_ana_graph_ctrl.construct(self.m_session_mdl)
     self.m_one_ana_petri_ctrl.construct(self.m_session_mdl) 
+    # XXX temporarily disabled nonfunctioning gui element, reenable in
+    # future when it works. @kgn
+    self.m_one_ana_timeline_ctrl.hide()
+    self.m_one_ana_stats_ctrl.hide()
     self.connect( self, PYSIGNAL("freezerItemDroppedInOneAnalyzeSig"),
       self.m_session_mdl.m_session_mdtr, 
       PYSIGNAL("freezerItemDroppedInOneAnalyzeSig"))
@@ -24,6 +30,21 @@
       PYSIGNAL("freezerItemDoubleClicked"),
       self.freezerItemDoubleClicked)
 
+  def aboutToBeLowered(self):
+    """Disconnects "Print Graph..." menu item from One-Analyze Graph controller."""
+    descr()
+    self.disconnect(
+      self.m_session_mdl.m_session_mdtr,
+      PYSIGNAL("printGraphSig"),
+      self.m_one_ana_graph_ctrl.printGraphSlot)
+  def aboutToBeRaised(self):
+    """Connects "Print Graph..." menu item to One-Analyze Graph controller."""
+    descr()
+    self.connect(
+      self.m_session_mdl.m_session_mdtr,
+      PYSIGNAL("printGraphSig"),
+      self.m_one_ana_graph_ctrl.printGraphSlot)
+
   def dropEvent( self, e ):
     freezer_item_name = QString()
     if ( QTextDrag.decode( e, freezer_item_name ) ) :

Modified: branches/developers/avida-edward/source/python/AvidaGui2/pyOneAnalyzeView.ui
===================================================================
--- branches/developers/avida-edward/source/python/AvidaGui2/pyOneAnalyzeView.ui	2005-12-19 20:36:45 UTC (rev 424)
+++ branches/developers/avida-edward/source/python/AvidaGui2/pyOneAnalyzeView.ui	2005-12-20 18:54:00 UTC (rev 425)
@@ -44,7 +44,7 @@
                     </property>
                     <widget class="pyOneAna_StatsCtrl">
                         <property name="name">
-                            <cstring>pyOneAna_StatsCtrl1</cstring>
+                            <cstring>m_one_ana_stats_ctrl</cstring>
                         </property>
                     </widget>
                     <widget class="pyOneAna_PetriDishCtrl">
@@ -85,7 +85,7 @@
                     </widget>
                     <widget class="pyOneAna_TimelineCtrl">
                         <property name="name">
-                            <cstring>pyOneAna_TimelineCtrl1</cstring>
+                            <cstring>m_one_ana_timeline_ctrl</cstring>
                         </property>
                     </widget>
                 </vbox>

Modified: branches/developers/avida-edward/source/python/AvidaGui2/pyOneOrganismCtrl.py
===================================================================
--- branches/developers/avida-edward/source/python/AvidaGui2/pyOneOrganismCtrl.py	2005-12-19 20:36:45 UTC (rev 424)
+++ branches/developers/avida-edward/source/python/AvidaGui2/pyOneOrganismCtrl.py	2005-12-20 18:54:00 UTC (rev 425)
@@ -1,5 +1,7 @@
 # -*- coding: utf-8 -*-
 
+from descr import descr
+
 from qt import *
 from pyOneOrganismView import pyOneOrganismView
 
@@ -19,6 +21,12 @@
     self.connect(self.m_organism_scope_toggle, SIGNAL("clicked()"),
       self.ToggleScopeSlot)
 
+  def aboutToBeLowered(self):
+    """does nothing yet."""
+    descr()
+  def aboutToBeRaised(self):
+    """does nothing yet."""
+    descr()
 
   def setOneOrganismViewNameLabelTextSlot(self, name):
     self.m_organism_name_label.setText(name)

Modified: branches/developers/avida-edward/source/python/AvidaGui2/pyOnePop_GraphCtrl.py
===================================================================
--- branches/developers/avida-edward/source/python/AvidaGui2/pyOnePop_GraphCtrl.py	2005-12-19 20:36:45 UTC (rev 424)
+++ branches/developers/avida-edward/source/python/AvidaGui2/pyOnePop_GraphCtrl.py	2005-12-20 18:54:00 UTC (rev 425)
@@ -61,10 +61,6 @@
     self.m_combo_box.setCurrentItem(2)
     self.modeActivatedSlot(self.m_combo_box.currentItem())
 
-    self.connect(
-      self.m_session_mdl.m_session_mdtr, PYSIGNAL("printGraphSig"),
-      self.printGraphSlot)
-
   def load(self, filename, colx, coly):
     print "pyOnePop_GraphCtrl.load file name = " + filename
     if (self.m_avida is None) or (self.m_avida.m_population.GetStats().GetUpdate() == 0):

Modified: branches/developers/avida-edward/source/python/AvidaGui2/pyOnePopulationCtrl.py
===================================================================
--- branches/developers/avida-edward/source/python/AvidaGui2/pyOnePopulationCtrl.py	2005-12-19 20:36:45 UTC (rev 424)
+++ branches/developers/avida-edward/source/python/AvidaGui2/pyOnePopulationCtrl.py	2005-12-20 18:54:00 UTC (rev 425)
@@ -18,6 +18,8 @@
     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_stats_ctrl.construct(self.m_session_mdl)
+    # XXX temporarily disabled nonfunctioning gui element, reenable in
+    # future when it works. @kgn
     self.m_one_pop_timeline_ctrl.hide()
     self.connect( self, PYSIGNAL("petriDishDroppedInPopViewSig"),
       self.m_session_mdl.m_session_mdtr,
@@ -30,6 +32,21 @@
     self.connect(self.m_session_mdl.m_session_mdtr,
       PYSIGNAL("restartPopulationSig"), self.restartPopulationSlot)
 
+  def aboutToBeLowered(self):
+    """Disconnects "Print Graph..." menu item from One-Pop Graph controller."""
+    descr()
+    self.disconnect(
+      self.m_session_mdl.m_session_mdtr,
+      PYSIGNAL("printGraphSig"),
+      self.m_one_pop_graph_ctrl.printGraphSlot)
+  def aboutToBeRaised(self):
+    """Connects "Print Graph..." menu item to One-Pop Graph controller."""
+    descr()
+    self.connect(
+      self.m_session_mdl.m_session_mdtr,
+      PYSIGNAL("printGraphSig"),
+      self.m_one_pop_graph_ctrl.printGraphSlot)
+
   def dragEnterEvent( self, e ):
     descr(e)
     #e.acceptAction(True)

Modified: branches/developers/avida-edward/source/python/AvidaGui2/pyOrganismConfigureView.ui
===================================================================
--- branches/developers/avida-edward/source/python/AvidaGui2/pyOrganismConfigureView.ui	2005-12-19 20:36:45 UTC (rev 424)
+++ branches/developers/avida-edward/source/python/AvidaGui2/pyOrganismConfigureView.ui	2005-12-20 18:54:00 UTC (rev 425)
@@ -45,6 +45,9 @@
                     <property name="name">
                         <cstring>m_animate_head_movement_cb</cstring>
                     </property>
+                    <property name="enabled">
+                        <bool>false</bool>
+                    </property>
                     <property name="text">
                         <string></string>
                     </property>
@@ -55,6 +58,9 @@
             <property name="name">
                 <cstring>textLabel4</cstring>
             </property>
+            <property name="enabled">
+                <bool>false</bool>
+            </property>
             <property name="sizePolicy">
                 <sizepolicy>
                     <hsizetype>3</hsizetype>
@@ -77,6 +83,9 @@
             <property name="name">
                 <cstring>textLabel4_2</cstring>
             </property>
+            <property name="enabled">
+                <bool>false</bool>
+            </property>
             <property name="sizePolicy">
                 <sizepolicy>
                     <hsizetype>3</hsizetype>
@@ -136,6 +145,9 @@
                     <property name="name">
                         <cstring>m_animate_instruction_copy_cb</cstring>
                     </property>
+                    <property name="enabled">
+                        <bool>false</bool>
+                    </property>
                     <property name="text">
                         <string></string>
                     </property>
@@ -162,6 +174,9 @@
                     <property name="name">
                         <cstring>m_animate_organism_divide_cb</cstring>
                     </property>
+                    <property name="enabled">
+                        <bool>false</bool>
+                    </property>
                     <property name="text">
                         <string></string>
                     </property>
@@ -189,6 +204,9 @@
             <property name="name">
                 <cstring>textLabel3</cstring>
             </property>
+            <property name="enabled">
+                <bool>false</bool>
+            </property>
             <property name="sizePolicy">
                 <sizepolicy>
                     <hsizetype>3</hsizetype>
@@ -227,6 +245,9 @@
                     <property name="name">
                         <cstring>m_show_task_tests_cb</cstring>
                     </property>
+                    <property name="enabled">
+                        <bool>false</bool>
+                    </property>
                     <property name="text">
                         <string></string>
                     </property>
@@ -275,6 +296,9 @@
                     <property name="name">
                         <cstring>m_show_hardware_cb</cstring>
                     </property>
+                    <property name="enabled">
+                        <bool>false</bool>
+                    </property>
                     <property name="text">
                         <string></string>
                     </property>
@@ -285,6 +309,9 @@
             <property name="name">
                 <cstring>textLabel2_2_2_2_2_2</cstring>
             </property>
+            <property name="enabled">
+                <bool>false</bool>
+            </property>
             <property name="sizePolicy">
                 <sizepolicy>
                     <hsizetype>3</hsizetype>
@@ -385,6 +412,9 @@
             <property name="name">
                 <cstring>m_layout_spacing_sb</cstring>
             </property>
+            <property name="enabled">
+                <bool>false</bool>
+            </property>
             <property name="sizePolicy">
                 <sizepolicy>
                     <hsizetype>1</hsizetype>
@@ -414,6 +444,9 @@
                     <property name="name">
                         <cstring>m_show_heads_as_letters_cb</cstring>
                     </property>
+                    <property name="enabled">
+                        <bool>false</bool>
+                    </property>
                     <property name="text">
                         <string></string>
                     </property>
@@ -459,6 +492,9 @@
             <property name="name">
                 <cstring>textLabel2_2_3</cstring>
             </property>
+            <property name="enabled">
+                <bool>false</bool>
+            </property>
             <property name="sizePolicy">
                 <sizepolicy>
                     <hsizetype>3</hsizetype>
@@ -573,6 +609,9 @@
             <property name="name">
                 <cstring>textLabel4_3</cstring>
             </property>
+            <property name="enabled">
+                <bool>false</bool>
+            </property>
             <property name="sizePolicy">
                 <sizepolicy>
                     <hsizetype>3</hsizetype>
@@ -611,6 +650,9 @@
                     <property name="name">
                         <cstring>m_show_instruction_names_cb</cstring>
                     </property>
+                    <property name="enabled">
+                        <bool>false</bool>
+                    </property>
                     <property name="text">
                         <string></string>
                     </property>
@@ -621,6 +663,9 @@
             <property name="name">
                 <cstring>textLabel2</cstring>
             </property>
+            <property name="enabled">
+                <bool>false</bool>
+            </property>
             <property name="sizePolicy">
                 <sizepolicy>
                     <hsizetype>3</hsizetype>
@@ -643,6 +688,9 @@
             <property name="name">
                 <cstring>textLabel2_3</cstring>
             </property>
+            <property name="enabled">
+                <bool>false</bool>
+            </property>
             <property name="sizePolicy">
                 <sizepolicy>
                     <hsizetype>3</hsizetype>

Modified: branches/developers/avida-edward/source/python/AvidaGui2/pyOrganismScopeCtrl.py
===================================================================
--- branches/developers/avida-edward/source/python/AvidaGui2/pyOrganismScopeCtrl.py	2005-12-19 20:36:45 UTC (rev 424)
+++ branches/developers/avida-edward/source/python/AvidaGui2/pyOrganismScopeCtrl.py	2005-12-20 18:54:00 UTC (rev 425)
@@ -184,29 +184,49 @@
 
   def ShowTaskTestsCBToggledSlot(self, bool):
     descr(bool)
+    self.anim.setShowTaskTestsCBToggled(bool)
+
   def ShowRegistersCBToggledSlot(self, bool):
     descr(bool)
+    self.anim.setShowRegistersCBToggled(bool)
+
   def AnimateHeadMovementCBToggledSlot(self, bool):
     descr(bool)
+
   def ShowStacksCBToggledSlot(self, bool):
     descr(bool)
+    self.anim.setShowStacksCBToggled(bool)
+
   def ShowHeadsAsLettersCBToggledSlot(self, bool):
     descr(bool)
+
   def ShowInstructionNamesCBToggledSlot(self, bool):
     descr(bool)
+    self.anim.setShowInstructionNamesCBToggled(bool)
+
   def ShowInputsAndOutputsCBToggledSlot(self, bool):
     descr(bool)
+    self.anim.setShowInputsAndOutputsCBToggled(bool)
+
   def ShowFullStacksCBToggledSlot(self, bool):
     descr(bool)
+    self.anim.setShowFullStacksCBToggled(bool)
+
   def AnimateInstructionCopyCBToggledSlot(self, bool):
     descr(bool)
+
   def ShowHardwareCBToggledSlot(self, bool):
     descr(bool)
+    self.anim.setShowHardwareCBToggled(bool)
+
   def AnimateOrganismDivideCBToggledSlot(self, bool):
     descr(bool)
 
   def LayoutSpacingSBValueChangedSlot(self, value):
     descr(value)
+
   def HardwareIndicatorSBValueChangedSlot(self, value):
     descr(value)
+    self.anim.setHardwareIndicatorSBValueChanged(value)
 
+

Modified: branches/developers/avida-edward/source/python/AvidaGui2/pyOrganismScopeView.py
===================================================================
--- branches/developers/avida-edward/source/python/AvidaGui2/pyOrganismScopeView.py	2005-12-19 20:36:45 UTC (rev 424)
+++ branches/developers/avida-edward/source/python/AvidaGui2/pyOrganismScopeView.py	2005-12-20 18:54:00 UTC (rev 425)
@@ -253,7 +253,6 @@
 class indicator(QCanvasRectangle):
   def __init__(self, anim, x, y, width, height):
     QCanvasRectangle.__init__(self, x, y, width, height, anim.canvas)
-    #descr()
     self.anim = anim
   def setBit(self, bit):
     self.setBrush(bit and self.anim.on_brush or self.anim.off_brush)
@@ -261,7 +260,6 @@
 
 class indicatorPolicy:
   def __init__(self, anim):
-    #descr()
     self.anim = anim
   def createIndicators(self):
     w = self.anim.hardware_indicator_size
@@ -273,39 +271,31 @@
       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()
     self.anim = anim
     self.frames = None
     self.indicator_items = []
@@ -315,42 +305,33 @@
   def setReadFnc(self, read_fnc):
     self.read_fnc = read_fnc
   def resetIndicators(self, indicator_items):
-    #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()
     return self.indicator_policy.setX(self.indicator_items, x)
   def setY(self, y):
-    #descr()
     return self.indicator_policy.setY(self.indicator_items, y)
   def setZ(self, z):
-    #descr()
     return self.indicator_policy.setZ(self.indicator_items, z)
   def show(self):
-    #descr()
     return self.indicator_policy.show(self.indicator_items)
   def hide(self):
-    #descr()
     return self.indicator_policy.hide(self.indicator_items)
   def setFrames(self, frames):
-    #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()
+    #if frames is not None:
+    #  for item in self.indicator_items:
+    #    item.show()
   def showFrame(self, frame_number):
     if self.frames is not None:
       new_bits = self.read_fnc(self.frames, frame_number)
@@ -358,6 +339,10 @@
         self.indicator_policy.setBits(self.indicator_items, new_bits)
         self.old_bits = new_bits
 
+def _positionSubanimator(subanimator, frames, x, y):
+  subanimator.setFrames(frames)
+  subanimator.setX(x)
+  subanimator.setY(y)
 
 class regsAnimator:
   def __init__(self, anim):
@@ -370,20 +355,6 @@
     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)
@@ -442,11 +413,6 @@
     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)
@@ -460,125 +426,59 @@
       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()
-    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),
+    def _resetLabel(label, text, should_show):
+      if label is not None:
+        label.setCanvas(None)
+      if frames is not None:
+        new_label = QCanvasText(text, self.anim.label_font, self.anim.canvas)
+        new_label.setX(self.anim.hw_anim.regs_anim.x)
+        new_label.setY(self.anim.layout_manager.running_y)
+        if should_show:
+          new_label.show()
+          self.anim.layout_manager.running_y = self.anim.layout_manager.running_y + self.anim.label_text_height
+        return new_label
+      else:
+        return None
 
-      (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),
+    def _resetSubanim(subanim, should_show):
+      _positionSubanimator(subanim, frames, self.anim.hw_anim.regs_anim.x, self.anim.layout_manager.running_y)
+      if should_show:
+        subanim.show()
+        self.anim.layout_manager.running_y = self.anim.layout_manager.running_y + 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.anim.layout_manager.running_y = self.anim.hw_anim.regs_anim.y
 
-      (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])
+    self.in_label = _resetLabel(self.in_label, "Input Buffer", self.anim.show_io_flag)
+    for subanim in (
+      self.in0_anim,
+      self.in1_anim,
+      self.in2_anim,
+    ) : _resetSubanim(subanim, self.anim.show_io_flag)
 
-    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
+    self.out_label = _resetLabel(self.out_label, "Output Buffer", self.anim.show_io_flag)
+    for subanim in (
+      self.out0_anim,
+    ) : _resetSubanim(subanim, self.anim.show_io_flag)
 
-    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.regs_label = _resetLabel(self.regs_label, "Registers A, B, C", self.anim.show_registers_flag)
+    for subanim in (
+      self.rega_anim,
+      self.regb_anim,
+      self.regc_anim,
+    ) : _resetSubanim(subanim, self.anim.show_registers_flag)
 
-      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.stack_a_label = _resetLabel(self.stack_a_label, "Stack A", self.anim.show_stacks_flag)
+    _resetSubanim(self.stack_a_anims[0], self.anim.show_stacks_flag)
+    for subanim in self.stack_a_anims[1:]: _resetSubanim(subanim, self.anim.show_stacks_flag and self.anim.show_full_stacks_flag)
 
-      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_b_label = _resetLabel(self.stack_b_label, "Stack B", self.anim.show_stacks_flag)
+    _resetSubanim(self.stack_b_anims[0], self.anim.show_stacks_flag)
+    for subanim in self.stack_b_anims[1:]: _resetSubanim(subanim, self.anim.show_stacks_flag and self.anim.show_full_stacks_flag)
 
-      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()
     showourframes = (
-      #self.dummy_anim,
       self.in0_anim,
       self.in1_anim,
       self.in2_anim,
@@ -776,6 +676,13 @@
 
     self.font = QFont(qApp.font())
 
+    self.label_font = QFont(self.font)
+    self.label_font_metrics = QFontMetrics(self.label_font)
+    self.label_text_height = 12
+    self.label_font_points_per_pixel = self.label_font.pointSizeFloat()/self.label_font_metrics.height()
+    self.label_point_size_float = self.label_text_height * self.label_font_points_per_pixel
+    self.label_font.setPointSizeFloat(self.label_point_size_float)
+
     self.default_color_saturation = 100
     self.default_color_value = 248
 
@@ -957,6 +864,8 @@
     descr()
     if self.show_registers_flag != bool:
       self.show_registers_flag = bool
+      self.hw_anim.setFrames(self.frames)
+      self.hw_anim.showFrame(self.current_frame_number)
   def setShowStacksCBToggled(self, bool):
     """
     Enables or disables display of tops of organism's hardware's stacks.
@@ -966,6 +875,8 @@
     descr()
     if self.show_stacks_flag != bool:
       self.show_stacks_flag = bool
+      self.hw_anim.setFrames(self.frames)
+      self.hw_anim.showFrame(self.current_frame_number)
   def setShowFullStacksCBToggled(self, bool):
     """
     Enables or disables display of organism's hardware's full stacks.
@@ -975,16 +886,18 @@
     descr()
     if self.show_full_stacks_flag != bool:
       self.show_full_stacks_flag = bool
+      self.hw_anim.setFrames(self.frames)
+      self.hw_anim.showFrame(self.current_frame_number)
   def setShowInputsAndOutputsCBToggled(self, bool):
     """
     Enables or disables display of organism's hardware's inputs and
     outputs.
-
-    This doesn't do anything yet. @kgn
     """
     descr()
     if self.show_io_flag != bool:
       self.show_io_flag = bool
+      self.hw_anim.setFrames(self.frames)
+      self.hw_anim.showFrame(self.current_frame_number)
   def setShowTaskTestsCBToggled(self, bool):
     """
     Enables or disables display of status of organism's tasks.
@@ -994,6 +907,8 @@
     descr()
     if self.show_task_tests_flag != bool:
       self.show_task_tests_flag = bool
+      self.hw_anim.setFrames(self.frames)
+      self.hw_anim.showFrame(self.current_frame_number)
   def setShowInstructionNamesCBToggled(self, bool):
     """
     Enables or disables display of name of next instruction.
@@ -1014,6 +929,8 @@
     descr()
     if self.hardware_indicator_size != value:
       self.hardware_indicator_size = value
+      self.hw_anim.setFrames(self.frames)
+      self.hw_anim.showFrame(self.current_frame_number)
 
 
   def setLayoutSpacingSBValueChanged(self, value):

Modified: branches/developers/avida-edward/source/python/AvidaGui2/pyTwoAnalyzeCtrl.py
===================================================================
--- branches/developers/avida-edward/source/python/AvidaGui2/pyTwoAnalyzeCtrl.py	2005-12-19 20:36:45 UTC (rev 424)
+++ branches/developers/avida-edward/source/python/AvidaGui2/pyTwoAnalyzeCtrl.py	2005-12-20 18:54:00 UTC (rev 425)
@@ -1,5 +1,7 @@
 # -*- coding: utf-8 -*-
 
+from descr import descr
+
 from qt import *
 from pyTwoAnalyzeView import pyTwoAnalyzeView
 
@@ -8,3 +10,12 @@
 
   def __init__(self,parent = None,name = None,fl = 0):
     pyTwoAnalyzeView.__init__(self,parent,name,fl)
+  def construct(self, session_mdl):
+    """does nothing yet."""
+    descr()
+  def aboutToBeLowered(self):
+    """does nothing yet."""
+    descr()
+  def aboutToBeRaised(self):
+    """does nothing yet."""
+    descr()

Modified: branches/developers/avida-edward/source/python/AvidaGui2/pyTwoOrganismCtrl.py
===================================================================
--- branches/developers/avida-edward/source/python/AvidaGui2/pyTwoOrganismCtrl.py	2005-12-19 20:36:45 UTC (rev 424)
+++ branches/developers/avida-edward/source/python/AvidaGui2/pyTwoOrganismCtrl.py	2005-12-20 18:54:00 UTC (rev 425)
@@ -1,5 +1,7 @@
 # -*- coding: utf-8 -*-
 
+from descr import descr
+
 from qt import *
 from pyTwoOrganismView import pyTwoOrganismView
 
@@ -8,3 +10,12 @@
 
   def __init__(self,parent = None,name = None,fl = 0):
     pyTwoOrganismView.__init__(self,parent,name,fl)
+  def construct(self, session_mdl):
+    """does nothing yet."""
+    descr()
+  def aboutToBeLowered(self):
+    """does nothing yet."""
+    descr()
+  def aboutToBeRaised(self):
+    """does nothing yet."""
+    descr()

Modified: branches/developers/avida-edward/source/python/AvidaGui2/pyTwoPopulationCtrl.py
===================================================================
--- branches/developers/avida-edward/source/python/AvidaGui2/pyTwoPopulationCtrl.py	2005-12-19 20:36:45 UTC (rev 424)
+++ branches/developers/avida-edward/source/python/AvidaGui2/pyTwoPopulationCtrl.py	2005-12-20 18:54:00 UTC (rev 425)
@@ -1,5 +1,7 @@
 # -*- coding: utf-8 -*-
 
+from descr import descr
+
 from qt import *
 from pyTwoPopulationView import pyTwoPopulationView
 
@@ -8,3 +10,12 @@
 
   def __init__(self,parent = None,name = None,fl = 0):
     pyTwoPopulationView.__init__(self,parent,name,fl)
+  def construct(self, session_mdl):
+    """does nothing yet."""
+    descr()
+  def aboutToBeLowered(self):
+    """does nothing yet."""
+    descr()
+  def aboutToBeRaised(self):
+    """does nothing yet."""
+    descr()




More information about the Avida-cvs mailing list