[avida-cvs] avida(kaben) CVS commits: /current NEWS /current/source/qt-viewer n_orig_instruction_cpu_widget.cc n_orig_instruction_cpu_widget.hh
kaben
avida-cvs at alife.org
Wed Sep 24 03:58:54 PDT 2003
kaben Tue Sep 23 19:58:54 2003 EDT
Modified files: (Branch: kaben)
/avida/current NEWS
/avida/current/source/qt-viewer n_orig_instruction_cpu_widget.cc
n_orig_instruction_cpu_widget.hh
Log:
[B] Widened number display fields in CPU viewer so that data can be read
correctly.
[F] Added buttons to select number format (binary, decimal, or
hexadecimal) in Register, Inputs, and Stacks views of CPU viewer in
GUI.
-------------- next part --------------
Index: avida/current/NEWS
diff -u avida/current/NEWS:1.22.2.2 avida/current/NEWS:1.22.2.3
--- avida/current/NEWS:1.22.2.2 Mon Aug 25 23:30:19 2003
+++ avida/current/NEWS Tue Sep 23 19:58:53 2003
@@ -4,6 +4,64 @@
[B] = Bug fix; something that used to work wrong will now be correct.
[M] = Major change; avida will function differently in certain circumstances.
+For version 2.0 beta 6:
+
+September, 03
+[B] Widened number display fields in CPU viewer so that data can be read
+ correctly.
+
+[F] Added buttons to select number format (binary, decimal, or
+ hexadecimal) in Register, Inputs, and Stacks views of CPU viewer in
+ GUI.
+
+[B] Minor bugfixes in 4-stack cpu parasite code.
+
+[F] Added option to count phenotypes based on tasks completed.
+
+For version 2.0 beta 5:
+
+August, 03
+[B] Workaround for bug in Qt/Windows: setInsideSpacing can't be safely
+ called, so removed those calls.
+
+[F] Addition of CPU stats to instruction viewer in GUI.
+
+[B] Organism inputs are no longer per-cell, but per-organism; resolved
+ related problem of request of now nonexistent inputs.
+
+[B] Restored missing initializations of subclass of cPopulationInterface
+ class in qt-viewer.
+
+[B] Added documentation for some existing events. Changed some
+ formatting of events.html documentation so file looks better with
+ Safari web browser.
+
+[B] Added missing files to visual studio project.
+
+[B] Restored compatibility with older versions of gcc.
+
+[F] Added parasite tracking for 4-stack cpus, added events
+ "print_dom_parasite" and "detail_parasite_pop", added default
+ organsisms and settings for the 4-stack cpu.
+
+[F] Added Bounded Grid/Torus (world topology) switch to population.
+ Leaving torus as the default.
+
+[B] Fixed some problems in mutation mapping in analyze mode.
+
+July, 03
+[B] Text viewer Zoom Screen Mini-Map fixed; Modified Map screen now in
+ color; Thread Map screen now shows number of threads used by each
+ organism.
+
+[F] Completion of 4 Stack Hardware. Inject command and parasite
+ abilities now implemented. Text Viewer environment view mode in
+ progress.
+
+[I] Added integer version WriteBlockElement to file output routines.
+
+[B] Correction of minor logical error in reaction handling.
+
For version 2.0 beta 3:
June, 03
Index: avida/current/source/qt-viewer/n_orig_instruction_cpu_widget.cc
diff -u avida/current/source/qt-viewer/n_orig_instruction_cpu_widget.cc:1.13.2.3 avida/current/source/qt-viewer/n_orig_instruction_cpu_widget.cc:1.13.2.4
--- avida/current/source/qt-viewer/n_orig_instruction_cpu_widget.cc:1.13.2.3 Mon Aug 25 18:46:26 2003
+++ avida/current/source/qt-viewer/n_orig_instruction_cpu_widget.cc Tue Sep 23 19:58:53 2003
@@ -5,13 +5,39 @@
// before continuing. SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE. //
//////////////////////////////////////////////////////////////////////////////
+#ifndef QAPPLICATION_H
#include <qapplication.h>
+#endif
+#ifndef QDESKTOPWIDGET_H
#include <qdesktopwidget.h>
+#endif
+#ifndef QHBUTTONGROUP_H
+#include <qhbuttongroup.h>
+#endif
+#ifndef QLAYOUT_H
#include <qlayout.h>
+#endif
+#ifndef QLABEL_H
#include <qlabel.h>
+#endif
+#ifndef QPUSHBUTTON_H
#include <qpushbutton.h>
+#endif
+#ifndef QRADIOBUTTON_H
+#include <qradiobutton.h>
+#endif
+#ifndef QSCROLLVIEW_H
#include <qscrollview.h>
+#endif
+#ifndef QHBOX_H
+#include <qhbox.h>
+#endif
+#ifndef QVBOX_H
+#include <qvbox.h>
+#endif
+#ifndef QWIDGETSTACK_H
#include <qwidgetstack.h>
+#endif
#include "avd_mission_control.hh"
@@ -31,6 +57,7 @@
#endif
#include <fstream>
+#include <iostream>
#include "../main/genotype.hh"
#include "../cpu/hardware_method.hh"
@@ -39,274 +66,275 @@
#include "../main/phenotype.hh"
#include "../main/population.hh"
#include "../main/population_cell.hh"
-
-
-using namespace std;
-
+#ifndef TASKS_HH
+#include "../main/tasks.h"
+#endif
+#ifndef CONFIG_HH
+#include "../main/config.hh"
+#endif
+#ifndef SPECIES_HH
+#include "../main/species.hh"
+#endif
using namespace std;
-
-cLabeledField::cLabeledField(
- QWidget *parent,
- const char *name,
- WFlags f
-)
+cLabeledField::cLabeledField(QWidget *parent, const char *name, WFlags f)
: QWidget(parent, name, f)
{
GenDebug("entered.");
- nameWatched("(<cLabeledField>)");
-
m_hboxlayout = new QHBoxLayout(this);
-
m_title_label = new QLabel(this);
m_hboxlayout->addWidget(m_title_label);
m_data1_label = new QLabel(this);
- m_data1_label->setAlignment(
- ( m_data1_label->alignment()
- &
- !(Qt::AlignRight)
- )
- |
- Qt::AlignRight
- );
- m_data1_label->setSizePolicy(
- QSizePolicy(
- QSizePolicy::MinimumExpanding,
- QSizePolicy::Fixed
- )
- );
+ m_data1_label->setAlignment((m_data1_label->alignment() & !(Qt::AlignRight)) | Qt::AlignRight);
+ m_data1_label->setSizePolicy(QSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::Fixed));
m_hboxlayout->addWidget(m_data1_label);
m_data2_label = new QLabel(this);
- m_data2_label->setAlignment(
- ( m_data2_label->alignment()
- &
- !(Qt::AlignRight)
- )
- |
- Qt::AlignRight
- );
- m_data2_label->setSizePolicy(
- QSizePolicy(
- QSizePolicy::MinimumExpanding,
- QSizePolicy::Fixed
- )
- );
+ m_data2_label->setAlignment((m_data2_label->alignment() & !(Qt::AlignRight)) | Qt::AlignRight);
+ m_data2_label->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed));
m_hboxlayout->addWidget(m_data2_label);
}
-
-void
-cLabeledField::setTitle(const QString &title){
- m_title_label->setText(title);
-}
-
-void
-cLabeledField::setData1Text(const QString &text){
+void cLabeledField::setTitle(const QString &title)
+{ m_title_label->setText(title); }
+void cLabeledField::setData1Text(const QString &text)
+{
m_data1_label->setText(text);
+ m_data1_label->adjustSize();
}
-
-void
-cLabeledField::setData2Text(const QString &text){
- m_data2_label->setText(text);
-}
-
-void
-cLabeledField::setData2Binary(unsigned int value){
- m_data2_label->setText(
- QString("[%1]").arg(value, 0, 2)
- );
-}
-
-void
-cLabeledField::setData2BinaryWidth(void){
+void cLabeledField::setData2Text(const QString &text)
+{ m_data2_label->setText(text); }
+void cLabeledField::setData2Binary(unsigned int value)
+{ m_data2_label->setText(QString("[%1]").arg(value, 0, 2)); }
+void cLabeledField::setData2BinaryWidth(void){
int zwidth = QApplication::fontMetrics().width("0");
m_data2_label->setMinimumWidth(34 * zwidth);
}
-
-void
-cLabeledField::setData1DecimalWidth(void){
+void cLabeledField::setData1DecimalWidth(void){
int zwidth = QApplication::fontMetrics().width("0");
- m_data1_label->setMinimumWidth(10 * zwidth);
+ m_data1_label->setMinimumWidth(11 * zwidth);
}
-
-void
-cLabeledField::showData2Text(bool yes){
+void cLabeledField::showData2Text(bool yes){
if(yes) m_data2_label->show();
else m_data2_label->hide();
}
+void cLabeledField::setBase(int base){
+ m_base = base;
+ int zwidth = QApplication::fontMetrics().width("0");
+ if(base<10){
+ m_data1_label->setMinimumWidth(34 * zwidth);
+ } else if (10<=base && base<16){
+ m_data1_label->setMinimumWidth(11 * zwidth);
+ } else if (16<=base){
+ m_data1_label->setMinimumWidth(9 * zwidth);
+ }
+}
-cSummaryWidget::cSummaryWidget(
- QWidget *parent,
- const char *name
-)
+cSummaryWidget::cSummaryWidget(QWidget *parent, const char *name)
: QGroupBox(parent, name)
{
GenDebug("entered.");
- nameWatched("(<cSummaryWidget>)");
-
setTitle("Summary");
setColumns(1);
+ //setInsideSpacing(0);
- m_location = new cLabeledField(this);
+
+ cout << "stuff\n";
m_genotype_id = new cLabeledField(this);
m_genotype_name = new cLabeledField(this);
+ m_species_id = new cLabeledField(this);
+
+ m_fitness = new cLabeledField(this);
+ m_gestation_time = new cLabeledField(this);
+ m_cpu_speed = new cLabeledField(this);
+ m_current_merit = new cLabeledField(this);
+ m_genome_size = new cLabeledField(this);
+ m_memory_size = new cLabeledField(this);
m_faults = new cLabeledField(this);
+
+ m_location = new cLabeledField(this);
+ m_facing = new cLabeledField(this);
+
+ m_generation = new cLabeledField(this);
+ m_age = new cLabeledField(this);
+ m_executed = new cLabeledField(this);
+ m_last_divide = new cLabeledField(this);
m_offspring = new cLabeledField(this);
- m_thread = new cLabeledField(this);
- m_location->setTitle("Location:");
+ m_mem_allocated = new cLabeledField(this);
+ m_parent_true = new cLabeledField(this);
+ m_injected = new cLabeledField(this);
+ m_parasite = new cLabeledField(this);
+ m_mutated = new cLabeledField(this);
+ m_modified = new cLabeledField(this);
+
+
m_genotype_id->setTitle("Genotype ID:");
m_genotype_name->setTitle("Genotype Name:");
+ m_species_id->setTitle("Species ID:");
+
+ m_fitness->setTitle("Fitness:");
+ m_gestation_time->setTitle("Gestation Time:");
+ m_cpu_speed->setTitle("CPU Speed:");
+ m_current_merit->setTitle("Current Merit:");
+ m_genome_size->setTitle("Genome Size:");
+ m_memory_size->setTitle("Memory Size:");
m_faults->setTitle("Faults:");
+
+ m_location->setTitle("Location:");
+ m_facing->setTitle("Facing:");
+
+ m_generation->setTitle("Generation:");
+ m_age->setTitle("Age:");
+ m_executed->setTitle("Executed:");
+ m_last_divide->setTitle("Last Divide:");
m_offspring->setTitle("Offspring:");
- m_thread->setTitle("Thread:");
- m_location->showData2Text(false);
+ m_mem_allocated->setTitle("Mem Allocated:");
+ m_parent_true->setTitle("Parent True:");
+ m_injected->setTitle("Injected:");
+ m_parasite->setTitle("Parasite:");
+ m_mutated->setTitle("Mutated:");
+ m_modified->setTitle("Modified:");
+
+
m_genotype_id->showData2Text(false);
m_genotype_name->showData2Text(false);
+ m_species_id->showData2Text(false);
+
+ m_fitness->showData2Text(false);
+ m_gestation_time->showData2Text(false);
+ m_cpu_speed->showData2Text(false);
+ m_current_merit->showData2Text(false);
+ m_genome_size->showData2Text(false);
+ m_memory_size->showData2Text(false);
m_faults->showData2Text(false);
+
+ m_location->showData2Text(false);
+ m_facing->showData2Text(false);
+
+ m_generation->showData2Text(false);
+ m_age->showData2Text(false);
+ m_executed->showData2Text(false);
+ m_last_divide->showData2Text(false);
m_offspring->showData2Text(false);
- m_thread->showData2Text(false);
-}
-void
-cSummaryWidget::setMissionControl(
- avd_MissionControl *mission_control
-){
+ m_mem_allocated->showData2Text(false);
+ m_parent_true->showData2Text(false);
+ m_injected->showData2Text(false);
+ m_parasite->showData2Text(false);
+ m_mutated->showData2Text(false);
+ m_modified->showData2Text(false);
+}
+void cSummaryWidget::setMissionControl(avd_MissionControl *mission_control){
GenDebug("entered.");
m_mission_control = mission_control;
-
- connect(
- mission_control, SIGNAL(avidaUpdatedSig()),
- this, SLOT(updateState())
- );
- connect(
- mission_control, SIGNAL(avidaSteppedSig(int)),
- this, SLOT(updateState())
- );
+ connect(mission_control, SIGNAL(avidaUpdatedSig()), this, SLOT(updateState()));
+ connect(mission_control, SIGNAL(avidaSteppedSig(int)), this, SLOT(updateState()));
}
-
-void
-cSummaryWidget::setPopulationCell(int cell_id){
+void cSummaryWidget::setPopulationCell(int cell_id){
GenDebug("entered.");
m_cell_id = cell_id;
updateState();
}
-
-void
-cSummaryWidget::updateState(void){
+void cSummaryWidget::updateState(void){
GenDebug("entered.");
-
+ if(!isVisible() || !m_mission_control) return;
+ m_mission_control->lock();
cPopulation *population = m_mission_control->getPopulation();
-
cPopulationCell *population_cell =
- GetPopulationCell(
- m_mission_control,
- m_cell_id
- );
-
+ GetPopulationCell(m_mission_control, m_cell_id);
cGenotype *genotype =
GetGenotype(
GetOrganism(
- GetPopulationCell(
- m_mission_control,
- m_cell_id
- )
- )
- );
-
+ GetPopulationCell(m_mission_control, m_cell_id)));
cPhenotype *phenotype =
GetPhenotype(
GetOrganism(
- GetPopulationCell(
- m_mission_control,
- m_cell_id
- )
- )
- );
-
+ GetPopulationCell(m_mission_control, m_cell_id)));
cHardwareCPU *hardware =
GetHardwareCPU(
GetOrganism(
- GetPopulationCell(
- m_mission_control,
- m_cell_id
- )
- )
- );
-
- // Location:
- if(0 == population || 0 == population_cell){
+ GetPopulationCell(m_mission_control, m_cell_id)));
+ if(!population || !population_cell){
m_location->setData1Text("");
+ m_facing->setData1Text("");
} else {
- m_location->setData1Text(
- QString("[%1, %2]").arg(
- population_cell->GetID() % population->GetWorldX()
- ).arg(
- population_cell->GetID() / population->GetWorldY()
- )
- );
+ m_location->setData1Text(QString("[%1, %2] (%3)")
+ .arg(population_cell->GetID() % population->GetWorldX())
+ .arg(population_cell->GetID() / population->GetWorldY())
+ .arg(population_cell->GetID()));
+ m_facing->setData1Text(QString("[%1, %2] (%3)")
+ .arg(population_cell->ConnectionList().GetFirst()->GetID() % population->GetWorldX())
+ .arg(population_cell->ConnectionList().GetFirst()->GetID() / population->GetWorldY())
+ .arg(population_cell->ConnectionList().GetFirst()->GetID()));
}
-
- // Genotype ID:
- // Genotype Name:
- if(0 == genotype){
+ if(!genotype){
m_genotype_id->setData1Text("");
m_genotype_name->setData1Text("");
+ m_species_id->setData1Text("");
+ m_genome_size->setData1Text("");
} else {
- m_genotype_id->setData1Text(
- QString("%1").arg(genotype->GetID())
- );
- m_genotype_name->setData1Text(
- QString(genotype->GetName())
- );
- }
-
- // Faults:
- // Offspring:
- if(0 == phenotype){
+ m_genotype_id->setData1Text(QString("%1").arg(genotype->GetID()));
+ m_genotype_name->setData1Text(QString(genotype->GetName()));
+ if(!genotype->GetSpecies()) m_species_id->setData1Text("(none)");
+ else m_species_id->setData1Text(QString("%1").arg(genotype->GetSpecies()->GetID()));
+ m_genome_size->setData1Text(QString("%1").arg(genotype->GetLength()));
+ }
+ if(!phenotype){
+ m_fitness->setData1Text("");
+ m_gestation_time->setData1Text("");
+ m_cpu_speed->setData1Text("");
+ m_current_merit->setData1Text("");
m_faults->setData1Text("");
+ m_generation->setData1Text("");
+ m_age->setData1Text("");
+ m_executed->setData1Text("");
+ m_last_divide->setData1Text("");
m_offspring->setData1Text("");
+ m_parent_true->setData1Text("");
+ m_injected->setData1Text("");
+ m_parasite->setData1Text("");
+ m_mutated->setData1Text("");
+ m_modified->setData1Text("");
} else {
- m_faults->setData1Text(
- QString("%1").arg(phenotype->GetCurNumErrors())
- );
- m_offspring->setData1Text(
- QString("%1").arg(phenotype->GetNumDivides())
- );
- }
-
- // Thread:
- if(0 == hardware){
- m_thread->setData1Text("");
- } else {
- m_thread->setData1Text(
- QString("%1/%2").arg(
- hardware->GetCurThread() + 1
- ).arg(
- hardware->GetNumThreads()
- )
- );
+ m_fitness->setData1Text(QString("%1").arg(phenotype->GetFitness()));
+ m_gestation_time->setData1Text(QString("%1").arg(phenotype->GetGestationTime()));
+ m_cpu_speed->setData1Text(QString("%1").arg(phenotype->GetMerit().GetDouble()));
+ m_current_merit->setData1Text(QString("%1").arg(cMerit(phenotype->GetCurBonus()).GetDouble()));
+ m_faults->setData1Text(QString("%1").arg(phenotype->GetCurNumErrors()));
+ m_generation->setData1Text(QString("%1").arg(phenotype->GetGeneration()));
+ m_generation->setData1Text(QString("%1").arg(phenotype->GetGeneration()));
+ m_age->setData1Text(QString("%1").arg(phenotype->GetAge()));
+ m_executed->setData1Text(QString("%1").arg(phenotype->GetTimeUsed()));
+ m_last_divide->setData1Text(QString("%1").arg(phenotype->GetGestationStart()));
+ m_offspring->setData1Text(QString("%1").arg(phenotype->GetNumDivides()));
+ m_parent_true->setData1Text((phenotype->ParentTrue())?("yes"):("no"));
+ m_injected->setData1Text((phenotype->IsInjected())?("yes"):("no"));
+ m_parasite->setData1Text((phenotype->IsParasite())?("yes"):("no"));
+ m_mutated->setData1Text((phenotype->IsMutated())?("yes"):("no"));
+ m_modified->setData1Text((phenotype->IsModified())?("yes"):("no"));
+ }
+ if(!hardware){
+ m_memory_size->setData1Text("");
+ m_mem_allocated->setData1Text("");
+ }
+ else {
+ m_memory_size->setData1Text(QString("%1").arg(hardware->GetMemory().GetSize()));
+ m_mem_allocated->setData1Text((hardware->GetMalActive())?("yes"):("no"));
}
+ m_mission_control->unlock();
}
-
-
-cRegistersWidget::cRegistersWidget(
- QWidget *parent,
- const char *name
-)
+cRegistersWidget::cRegistersWidget(QWidget *parent, const char *name)
: QGroupBox(parent, name)
{
GenDebug("entered.");
- nameWatched("(<cRegistersWidget>)");
-
setTitle("Registers");
setColumns(1);
-
+ //setInsideSpacing(0);
m_registers.setAutoDelete(TRUE);
for(int i = 0; i < NUM_REGISTERS; i++){
cLabeledField *labeled_field = new cLabeledField(this);
@@ -317,95 +345,66 @@
m_registers.append(labeled_field);
}
}
-
-void
-cRegistersWidget::setMissionControl(
- avd_MissionControl *mission_control
-){
+void cRegistersWidget::setMissionControl(avd_MissionControl *mission_control){
GenDebug("entered.");
m_mission_control = mission_control;
-
- connect(
- mission_control, SIGNAL(avidaUpdatedSig()),
- this, SLOT(updateState())
- );
- connect(
- mission_control, SIGNAL(avidaSteppedSig(int)),
- this, SLOT(updateState())
- );
+ connect(mission_control, SIGNAL(avidaUpdatedSig()), this, SLOT(updateState()));
+ connect(mission_control, SIGNAL(avidaSteppedSig(int)), this, SLOT(updateState()));
}
-
-void
-cRegistersWidget::setPopulationCell(int cell_id){
+void cRegistersWidget::setPopulationCell(int cell_id){
GenDebug("entered.");
m_cell_id = cell_id;
updateState();
}
-
-void
-cRegistersWidget::updateState(void){
+void cRegistersWidget::updateState(void){
GenDebug("entered.");
-
+ if(!isVisible() || !m_mission_control) return;
+ m_mission_control->lock();
cHardwareCPU *hardware =
GetHardwareCPU(
GetOrganism(
- GetPopulationCell(
- m_mission_control,
- m_cell_id
- )
- )
- );
-
- if(0 == hardware){
+ GetPopulationCell(m_mission_control, m_cell_id)));
+ if(!hardware){
int i = 0;
cLabeledField *labeled_field = m_registers.first();
- for(
- ;
- i < NUM_REGISTERS && 0 != labeled_field;
- i++, labeled_field = m_registers.next()
- ){
+ for(; i < NUM_REGISTERS && 0 != labeled_field; i++, labeled_field = m_registers.next()){
labeled_field->setData1Text("");
labeled_field->setData2Text("");
}
} else {
int i = 0;
cLabeledField *labeled_field = m_registers.first();
- for(
- ;
- i < NUM_REGISTERS && 0 != labeled_field;
- i++, labeled_field = m_registers.next()
- ){
- labeled_field->setData1Text(QString("%1").arg(hardware->Register(i)));
+ for(; i < NUM_REGISTERS && 0 != labeled_field; i++, labeled_field = m_registers.next()){
+ labeled_field->setData1Text(QString("%1").arg(
+ hardware->Register(i), 0, labeled_field->getBase()));
labeled_field->setData2Binary(hardware->Register(i));
}
}
+ m_mission_control->unlock();
}
-
-void
-cRegistersWidget::showData2Text(bool should_show){
+void cRegistersWidget::showData2Text(bool should_show){
int i = 0;
cLabeledField *labeled_field = m_registers.first();
- for(
- ;
- i < NUM_REGISTERS && 0 != labeled_field;
- i++, labeled_field = m_registers.next()
- ){
- labeled_field->showData2Text(should_show);
- }
+ for(; i < NUM_REGISTERS && 0 != labeled_field; i++, labeled_field = m_registers.next())
+ { labeled_field->showData2Text(should_show); }
+}
+void cRegistersWidget::chooseBaseSlot(int base){
+ GenDebug("entered. base")(base)(".");
+ int i = 0;
+ cLabeledField *labeled_field = m_registers.first();
+ for(; i < NUM_REGISTERS && 0 != labeled_field; i++, labeled_field = m_registers.next())
+ { labeled_field->setBase(base); }
+ updateState();
+ GenDebug("done.");
}
-cInputsWidget::cInputsWidget(
- QWidget *parent,
- const char *name
-)
+cInputsWidget::cInputsWidget(QWidget *parent, const char *name)
: QGroupBox(parent, name)
{
GenDebug("entered.");
- nameWatched("(<cInputsWidget>)");
-
setTitle("Inputs");
setColumns(1);
-
+ //setInsideSpacing(0);
m_inputs.setAutoDelete(TRUE);
for(int i = 0; i < NUM_REGISTERS; i++){
cLabeledField *labeled_field = new cLabeledField(this);
@@ -415,210 +414,132 @@
m_inputs.append(labeled_field);
}
}
-
-void
-cInputsWidget::setMissionControl(
- avd_MissionControl *mission_control
-){
+void cInputsWidget::setMissionControl(avd_MissionControl *mission_control){
GenDebug("entered.");
m_mission_control = mission_control;
-
- connect(
- mission_control, SIGNAL(avidaUpdatedSig()),
- this, SLOT(updateState())
- );
- connect(
- mission_control, SIGNAL(avidaSteppedSig(int)),
- this, SLOT(updateState())
- );
+ connect(mission_control, SIGNAL(avidaUpdatedSig()), this, SLOT(updateState()));
+ connect(mission_control, SIGNAL(avidaSteppedSig(int)), this, SLOT(updateState()));
}
-
-void
-cInputsWidget::setPopulationCell(int cell_id){
+void cInputsWidget::setPopulationCell(int cell_id){
GenDebug("entered.");
m_cell_id = cell_id;
updateState();
}
-
-void
-cInputsWidget::updateState(void){
+void cInputsWidget::updateState(void){
GenDebug("entered.");
-
+ if(!isVisible() || !m_mission_control) return;
+ m_mission_control->lock();
cPopulationCell *pop_cell =
- GetPopulationCell(
- m_mission_control,
- m_cell_id
- );
-
- if(0 == pop_cell){
+ GetPopulationCell(m_mission_control, m_cell_id);
+ if(!pop_cell || !GetOrganism(pop_cell)){
int i = 0;
cLabeledField *labeled_field = m_inputs.first();
- for(
- ;
- i < IO_SIZE && 0 != labeled_field;
- i++, labeled_field = m_inputs.next()
- ){
+ for(; i < IO_SIZE && 0 != labeled_field; i++, labeled_field = m_inputs.next()){
labeled_field->setData1Text("");
labeled_field->setData2Text("");
}
} else {
int i = 0;
cLabeledField *labeled_field = m_inputs.first();
- for(
- ;
- i < IO_SIZE && 0 != labeled_field;
- i++, labeled_field = m_inputs.next()
- ){
- labeled_field->setData1Text(QString("%1").arg(pop_cell->GetInput(i)));
- labeled_field->setData2Binary(pop_cell->GetInput(i));
+ for(; i < IO_SIZE && 0 != labeled_field; i++, labeled_field = m_inputs.next()){
+ labeled_field->setData1Text(QString("%1").arg(
+ pop_cell->GetInput(i), 0, labeled_field->getBase()));
+ //labeled_field->setData2Binary(pop_cell->GetInput(i));
}
}
+ m_mission_control->unlock();
}
-
-void
-cInputsWidget::showData2Text(bool should_show){
+void cInputsWidget::showData2Text(bool should_show){
int i = 0;
cLabeledField *labeled_field = m_inputs.first();
- for(
- ;
- i < IO_SIZE && 0 != labeled_field;
- i++, labeled_field = m_inputs.next()
- ){
- labeled_field->showData2Text(should_show);
- }
+ for(; i < IO_SIZE && 0 != labeled_field; i++, labeled_field = m_inputs.next())
+ { labeled_field->showData2Text(should_show); }
+}
+void cInputsWidget::chooseBaseSlot(int base){
+ GenDebug("entered. base")(base)(".");
+ int i = 0;
+ cLabeledField *labeled_field = m_inputs.first();
+ for(; i < IO_SIZE && 0 != labeled_field; i++, labeled_field = m_inputs.next())
+ { labeled_field->setBase(base); }
+ updateState();
+ GenDebug("done.");
}
-cStackField::cStackField(
- QWidget *parent,
- const char *name,
- WFlags f
-)
+cStackField::cStackField(QWidget *parent, const char *name, WFlags f)
: cLabeledField(parent, name, f)
{
GenDebug("entered.");
- nameWatched("(<cStackField>)");
-
-
m_popup_pbutton = new QPushButton("...", this);
- connect(
- m_popup_pbutton, SIGNAL(pressed()),
- this, SLOT(displayPopupSlot())
- );
+ connect(m_popup_pbutton, SIGNAL(pressed()), this, SLOT(displayPopupSlot()));
m_hboxlayout->addWidget(m_popup_pbutton);
-
m_stack_popup = new cStackPopup(this);
}
-
-void
-cStackField::useFrame(bool use_frame){
+void cStackField::useFrame(bool use_frame){
GenDebug("entered.");
-
- if( use_frame
- ){
+ if(use_frame){
if (m_data1_label->frameStyle() != (QFrame::Box | QFrame::Plain))
m_data1_label->setFrameStyle(QFrame::Box | QFrame::Plain);
} else if (m_data1_label->frameStyle() != QFrame::NoFrame)
m_data1_label->setFrameStyle(QFrame::NoFrame);
}
-
-void
-cStackField::displayPopupSlot(void){
+void cStackField::displayPopupSlot(void){
GenDebug("entered.");
-
- if(m_stack_popup->isVisible()){
- m_stack_popup->hide();
- } else {
+ if(m_stack_popup->isVisible()){ m_stack_popup->hide(); }
+ else {
QDesktopWidget *d = QApplication::desktop();
-
int w=d->width();
int h=d->height();
-
- QPoint popup_pt(
- mapToGlobal(
- QPoint(
- m_data1_label->x(),
- m_data1_label->y()
- )
- )
- );
-
+ QPoint popup_pt(mapToGlobal(QPoint(m_data1_label->x(), m_data1_label->y())));
if(popup_pt.x() + m_stack_popup->width() >= w){
popup_pt.setX(w - (m_stack_popup->width() + 5));
}
if(popup_pt.y() + m_stack_popup->height() >= h){
popup_pt.setY(h - (m_stack_popup->height() + 5));
}
-
m_stack_popup->move(popup_pt);
m_stack_popup->show();
m_stack_popup->updateState();
}
m_popup_pbutton->setDown(false);
}
-
-void
-cStackField::setMissionControl(
- avd_MissionControl *mission_control
-){
+void cStackField::setMissionControl(avd_MissionControl *mission_control){
GenDebug("entered.");
m_mission_control = mission_control;
m_stack_popup->setMissionControl(mission_control);
-
- connect(
- mission_control, SIGNAL(avidaUpdatedSig()),
- this, SLOT(updateState())
- );
- connect(
- mission_control, SIGNAL(avidaSteppedSig(int)),
- this, SLOT(updateState())
- );
+ connect(mission_control, SIGNAL(avidaUpdatedSig()), this, SLOT(updateState()));
+ connect(mission_control, SIGNAL(avidaSteppedSig(int)), this, SLOT(updateState()));
}
-
-void
-cStackField::setPopulationCell(int cell_id){
+void cStackField::setPopulationCell(int cell_id){
GenDebug("entered.");
m_cell_id = cell_id;
m_stack_popup->setPopulationCell(cell_id);
-
updateState();
}
-
-void
-cStackField::setStackNumber(int stack_number){
+void cStackField::setStackNumber(int stack_number){
GenDebug("entered.");
m_stack_no = stack_number;
m_stack_popup->setStackNumber(stack_number);
-
updateState();
}
-
-void
-cStackField::updateState(void){
+void cStackField::updateState(void){
GenDebug("entered.");
-
+ if(!isVisible() || !m_mission_control) return;
+ m_mission_control->lock();
cHardwareCPU *hardware =
GetHardwareCPU(
GetOrganism(
- GetPopulationCell(
- m_mission_control,
- m_cell_id
- )
- )
- );
-
- if(0 == hardware){
+ GetPopulationCell(m_mission_control, m_cell_id)));
+ if(!hardware){
GenDebug(" --- 0 == hardware");
setData1Text("");
setData2Text("");
useFrame(false);
} else {
- setData1Text(QString("%1").arg(hardware->GetStack(0, m_stack_no)));
- setData2Binary(hardware->GetStack(0, m_stack_no));
-
+ setData1Text(QString("%1").arg( hardware->GetStack(0, m_stack_no), 0, getBase()));
+ //setData2Binary(hardware->GetStack(0, m_stack_no));
GenDebug(" --- m_stack_no ")(m_stack_no);
GenDebug(" --- m_cell_id ")(m_cell_id);
GenDebug(" --- stack top ")(hardware->GetStack(0, m_stack_no));
-
if (hardware->GetActiveStackID() == m_stack_no){
GenDebug(" --- use frame");
useFrame(true);
@@ -627,35 +548,32 @@
useFrame(false);
}
}
+ m_mission_control->unlock();
}
-void
-cStackField::showData2Text(bool should_show){
+void cStackField::showData2Text(bool should_show){
m_stack_popup->showData2Text(should_show);
cLabeledField::showData2Text(should_show);
}
+void cStackField::chooseBaseSlot(int base){
+ GenDebug("entered. base")(base)(".");
+ m_stack_popup->chooseBaseSlot(base);
+ cLabeledField::setBase(base);
+ updateState();
+ GenDebug("done.");
+}
-cStackPopup::cStackPopup(
- QWidget *parent,
- const char *name
-)
+cStackPopup::cStackPopup(QWidget *parent, const char *name)
: QWidget(parent, name, WType_Popup)
{
GenDebug("entered.");
- nameWatched("(<cStackPopup>)");
-
m_vboxlayout = new QVBoxLayout(this);
-
m_scrollview = new QScrollView(this);
m_vboxlayout->addWidget(m_scrollview);
-
m_layout_widget = new QWidget(m_scrollview->viewport());
m_scrollview->addChild(m_layout_widget);
-
m_sv_layout = new QVBoxLayout(m_layout_widget);
-
//m_sv_layout->addWidget(new QPushButton("Hello, world", m_layout_widget));
-
m_stacklines.setAutoDelete(TRUE);
for(int i = 0; i < STACK_SIZE; i++){
cLabeledField *labeled_field = new cLabeledField(m_layout_widget);
@@ -666,62 +584,35 @@
m_stacklines.append(labeled_field);
}
}
-
-void
-cStackPopup::setMissionControl(
- avd_MissionControl *mission_control
-){
+void cStackPopup::setMissionControl(avd_MissionControl *mission_control){
GenDebug("entered.");
m_mission_control = mission_control;
-
- connect(
- mission_control, SIGNAL(avidaUpdatedSig()),
- this, SLOT(updateState())
- );
- connect(
- mission_control, SIGNAL(avidaSteppedSig(int)),
- this, SLOT(updateState())
- );
+ connect(mission_control, SIGNAL(avidaUpdatedSig()), this, SLOT(updateState()));
+ connect(mission_control, SIGNAL(avidaSteppedSig(int)), this, SLOT(updateState()));
}
-
-void
-cStackPopup::setPopulationCell(int cell_id){
+void cStackPopup::setPopulationCell(int cell_id){
GenDebug("entered.");
m_cell_id = cell_id;
updateState();
}
-
-void
-cStackPopup::setStackNumber(int stack_number){
+void cStackPopup::setStackNumber(int stack_number){
GenDebug("entered.");
m_stack_no = stack_number;
updateState();
}
-
-void
-cStackPopup::updateState(void){
+void cStackPopup::updateState(void){
GenDebug("entered.");
-
- if(!isVisible()) return;
-
+ if(!m_mission_control) return;
+ if(!isVisible() || !isVisible()) return;
+ m_mission_control->lock();
cHardwareCPU *hardware =
GetHardwareCPU(
GetOrganism(
- GetPopulationCell(
- m_mission_control,
- m_cell_id
- )
- )
- );
-
- if(0 == hardware){
+ GetPopulationCell(m_mission_control, m_cell_id)));
+ if(!hardware){
int i = 0;
cLabeledField *labeled_field = m_stacklines.first();
- for(
- ;
- i < STACK_SIZE && 0 != labeled_field;
- i++, labeled_field = m_stacklines.next()
- ){
+ for(; i < STACK_SIZE && 0 != labeled_field; i++, labeled_field = m_stacklines.next()){
labeled_field->setData1Text("");
labeled_field->setData2Text("");
}
@@ -729,107 +620,79 @@
GenDebug(" --- valid data it seems.");
int i = 0;
cLabeledField *labeled_field = m_stacklines.first();
- for(
- ;
- i < STACK_SIZE && 0 != labeled_field;
- i++, labeled_field = m_stacklines.next()
- ){
+ for(; i < STACK_SIZE && 0 != labeled_field; i++, labeled_field = m_stacklines.next()){
labeled_field->setData1Text(
- QString("%1").arg(
- hardware->GetStack(i, m_stack_no)
- )
- );
- labeled_field->setData2Binary(hardware->GetStack(i, m_stack_no));
+ QString("%1").arg(hardware->GetStack(i, m_stack_no), 0, labeled_field->getBase()));
+ //labeled_field->setData2Binary(hardware->GetStack(i, m_stack_no));
}
}
+ m_mission_control->unlock();
}
-
-void
-cStackPopup::showData2Text(bool should_show){
+void cStackPopup::showData2Text(bool should_show){
int i = 0;
cLabeledField *labeled_field = m_stacklines.first();
- for(
- ;
- i < STACK_SIZE && 0 != labeled_field;
- i++, labeled_field = m_stacklines.next()
- ){
- labeled_field->showData2Text(should_show);
- }
+ for(; i < STACK_SIZE && 0 != labeled_field; i++, labeled_field = m_stacklines.next())
+ { labeled_field->showData2Text(should_show); }
+}
+void cStackPopup::chooseBaseSlot(int base){
+ GenDebug("entered. base")(base)(".");
+ int i = 0;
+ cLabeledField *labeled_field = m_stacklines.first();
+ for(; i < STACK_SIZE && 0 != labeled_field; i++, labeled_field = m_stacklines.next())
+ { labeled_field->setBase(base); }
+ updateState();
+ GenDebug("done.");
}
-
-cStacksWidget::cStacksWidget(
- QWidget *parent,
- const char *name
-)
+cStacksWidget::cStacksWidget(QWidget *parent, const char *name)
: QGroupBox(parent, name)
{
GenDebug("entered.");
- nameWatched("(<cStacksWidget>)");
-
- setTitle("Stack");
+ setTitle("Stacks");
setColumns(1);
-
+ //setInsideSpacing(0);
m_stackln1 = new cStackField(this);
m_stackln2 = new cStackField(this);
-
m_stackln1->setTitle("A:");
m_stackln2->setTitle("B:");
-
m_stackln1->setStackNumber(0);
m_stackln2->setStackNumber(1);
-
m_stackln1->setData1DecimalWidth();
m_stackln1->setData2BinaryWidth();
-
m_stackln2->setData1DecimalWidth();
m_stackln2->setData2BinaryWidth();
}
-
-void
-cStacksWidget::setMissionControl(
- avd_MissionControl *mission_control
-){
+void cStacksWidget::setMissionControl(avd_MissionControl *mission_control){
GenDebug("entered.");
m_mission_control = mission_control;
-
m_stackln1->setMissionControl(mission_control);
m_stackln2->setMissionControl(mission_control);
-
- connect(
- mission_control, SIGNAL(avidaUpdatedSig()),
- this, SLOT(updateState())
- );
- connect(
- mission_control, SIGNAL(avidaSteppedSig(int)),
- this, SLOT(updateState())
- );
+ connect(mission_control, SIGNAL(avidaUpdatedSig()), this, SLOT(updateState()));
+ connect(mission_control, SIGNAL(avidaSteppedSig(int)), this, SLOT(updateState()));
}
-
-void
-cStacksWidget::setPopulationCell(int cell_id){
+void cStacksWidget::setPopulationCell(int cell_id){
GenDebug("entered.");
m_cell_id = cell_id;
-
m_stackln1->setPopulationCell(cell_id);
m_stackln2->setPopulationCell(cell_id);
-
updateState();
}
-
-void
-cStacksWidget::updateState(void){
+void cStacksWidget::updateState(void){
GenDebug("entered.");
}
-
-void
-cStacksWidget::showData2Text(bool should_show){
+void cStacksWidget::showData2Text(bool should_show){
m_stackln1->showData2Text(should_show);
m_stackln2->showData2Text(should_show);
}
+void cStacksWidget::chooseBaseSlot(int base){
+ GenDebug("entered. base")(base)(".");
+ m_stackln1->chooseBaseSlot(base);
+ m_stackln2->chooseBaseSlot(base);
+ GenDebug("done.");
+}
-cHideShowBinary::cHideShowBinary(
+cBaseChoiceBtns::cBaseChoiceBtns(
QWidget *parent,
const char *name,
WFlags f
@@ -837,10 +700,9 @@
: QWidget(parent, name, f)
{
GenDebug("entered.");
- nameWatched("(<cHideShowBinary>)");
- //QHBoxLayout *layout = new QHBoxLayout(this);
- //
+ QHBoxLayout *layout = new QHBoxLayout(this);
+
//layout->addItem(new QSpacerItem(20, 20));
//m_widgetstack = new QWidgetStack(this);
@@ -848,10 +710,10 @@
//layout->addItem(new QSpacerItem(20, 20));
- /*
- FIXME:
- restore hide/show binary after fixups. -- kgn
- */
+ ///*
+ //FIXME:
+ //restore hide/show binary after fixups. -- kgn
+ //*/
//m_show_binary_pbutton = new QPushButton("Show Binary", m_widgetstack);
//m_hide_binary_pbutton = new QPushButton("Hide Binary", m_widgetstack);
@@ -866,110 +728,169 @@
//);
//m_widgetstack->raiseWidget(m_show_binary_pbutton);
+ QHButtonGroup *hbg = new QHButtonGroup(
+ "Number System",
+ this,
+ "<cBaseChoiceBtns::cBaseChoiceBtns(hbg)>"
+ );
+ layout->addWidget(hbg);
+ hbg->insert(new QRadioButton("bin", hbg, "<cBaseChoiceBtns::cBaseChoiceBtns('bin')>"), 2);
+ hbg->insert(new QRadioButton("hex", hbg, "<cBaseChoiceBtns::cBaseChoiceBtns('hex')>"), 16);
+ hbg->insert(new QRadioButton("dec", hbg, "<cBaseChoiceBtns::cBaseChoiceBtns('dec')>"), 10);
+ hbg->setRadioButtonExclusive(true);
+ hbg->setButton(10);
+ connect(hbg, SIGNAL(clicked(int)), this, SIGNAL(chooseBaseSig(int)));
}
void
-cHideShowBinary::showBinary(void){
+cBaseChoiceBtns::showBinary(void){
GenDebug("entered.");
-
/*
FIXME:
restore hide/show binary after fixups. -- kgn
*/
- //m_widgetstack->raiseWidget(m_hide_binary_pbutton);
-
+ m_widgetstack->raiseWidget(m_hide_binary_pbutton);
emit showBinarySig(true);
}
void
-cHideShowBinary::hideBinary(void){
+cBaseChoiceBtns::hideBinary(void){
GenDebug("entered.");
-
/*
FIXME:
restore hide/show binary after fixups. -- kgn
*/
- //m_widgetstack->raiseWidget(m_show_binary_pbutton);
-
+ m_widgetstack->raiseWidget(m_show_binary_pbutton);
emit showBinarySig(false);
}
-N_Instruction_CPUWidget::N_Instruction_CPUWidget(
- QWidget *parent,
- const char *name,
- WFlags f
-)
-: QWidget(parent, name, f)
+cTasksWidget::cTasksWidget(QWidget *parent, const char *name)
+: QGroupBox(parent, name)
{
GenDebug("entered.");
- nameWatched("(<N_Instruction_CPUWidget>)");
-
- m_vboxlayout = new QVBoxLayout(this);
-
- m_summary = new cSummaryWidget(this);
- m_vboxlayout->addWidget(m_summary);
-
- m_registers = new cRegistersWidget(this);
- m_vboxlayout->addWidget(m_registers);
-
- m_inputs = new cInputsWidget(this);
- m_vboxlayout->addWidget(m_inputs);
-
- m_stacks = new cStacksWidget(this);
- m_vboxlayout->addWidget(m_stacks);
-
- m_hideshow_binary = new cHideShowBinary(this);
- m_vboxlayout->addWidget(m_hideshow_binary);
-
- connect(
- m_hideshow_binary, SIGNAL(showBinarySig(bool)),
- this, SLOT(showData2Text(bool))
- );
-
- m_hideshow_binary->hideBinary();
+ setTitle("Tasks");
+ setColumns(1);
+ m_scrollview = new QScrollView(this, "<cTasksWidget::m_scrollview>");
+ m_scrollview->setResizePolicy(QScrollView::AutoOneFit);
+ QWidget *layout_widget = new QWidget(
+ m_scrollview->viewport(), "<cTasksWidget::(layout_widget)>");
+ m_scrollview->addChild(layout_widget);
+ QVBoxLayout *layout = new QVBoxLayout(layout_widget);
+ m_vbox = new QVBox(layout_widget, "<cTasksWidget::m_vbox>");
+ layout->addWidget(m_vbox);
+ layout->addStretch(10);
+ m_tasklines.setAutoDelete(true);
}
-
-void
-N_Instruction_CPUWidget::setMissionControl(
- avd_MissionControl *mission_control
-){
+void cTasksWidget::setMissionControl(avd_MissionControl *mission_control){
GenDebug("entered.");
m_mission_control = mission_control;
+ if(!mission_control) return;
+ connect(mission_control, SIGNAL(avidaUpdatedSig()), this, SLOT(updateState()));
+ connect(mission_control, SIGNAL(avidaSteppedSig(int)), this, SLOT(updateState()));
+ while(!m_tasklines.isEmpty()) m_tasklines.removeFirst();
+ if(!mission_control->getPopulation()) return;
+ const cTaskLib &task_lib = mission_control->getPopulation()->GetEnvironment().GetTaskLib();
+ for(int task_num = 0; task_num < cConfig::GetNumTasks(); task_num++){
+ cLabeledField *lf = new cLabeledField(m_vbox);
+ lf->setTitle(QString(task_lib.GetTask(task_num).GetName()()));
+ lf->showData2Text(false);
+ m_tasklines.append(lf);
+ GenDebug("made a new entry titled \"")(task_lib.GetTask(task_num).GetName())("\"");
+ }
+ GenDebug("done.");
+}
+void cTasksWidget::setPopulationCell(int cell_id){
+ GenDebug("entered.");
+ m_cell_id = cell_id;
+ updateState();
+}
+void cTasksWidget::updateState(void){
+ GenDebug("entered.");
+ if(!isVisible() || !m_mission_control) return;
+ m_mission_control->lock();
+ cPhenotype *phenotype =
+ GetPhenotype(
+ GetOrganism(
+ GetPopulationCell(m_mission_control, m_cell_id)));
+ QPtrListIterator<cLabeledField> it(m_tasklines);
+ cLabeledField *taskline;
+ int task_num = 0;
+ while((taskline = it.current()) != 0 && task_num < cConfig::GetNumTasks()){
+ if(!phenotype) taskline->setData1Text("");
+ else taskline->setData1Text(QString("%1").arg(phenotype->GetCurTaskCount()[task_num]));
+ ++it; ++task_num;
+ }
+ m_mission_control->unlock();
+}
- m_summary->setMissionControl(mission_control);
+N_Instruction_CPUWidget::N_Instruction_CPUWidget(
+ QWidget *parent, const char *name, WFlags f
+) : QTabWidget(parent, name, f)
+{
+ GenDebug("entered.");
+ m_component_vbox = new QVBox(this, "<N_Instruction_CPUWidget::m_component_vbox>");
+
+ QHBox *hbox = new QHBox(m_component_vbox);
+ m_registers = new cRegistersWidget(hbox);
+ m_inputs = new cInputsWidget(hbox);
+ m_stacks = new cStacksWidget(m_component_vbox);
+ m_basechoice_btns = new cBaseChoiceBtns(m_component_vbox);
+ connect(m_basechoice_btns, SIGNAL(showBinarySig(bool)), this, SLOT(showData2Text(bool)));
+ connect(m_basechoice_btns, SIGNAL(chooseBaseSig(int)), this, SLOT(chooseBaseSlot(int)));
+ m_basechoice_btns->hideBinary();
+ m_basechoice_btns->emitChooseBaseSig(10);
+ m_summary1 = new cSummaryWidget(m_component_vbox);
+ addTab(m_component_vbox, "CPU");
+ // m_stats_vbox = new QVBox(this, "<N_Instruction_CPUWidget::m_stats_vbox>");
+ // m_summary2 = new cSummaryWidget(m_stats_vbox);
+ //addTab(m_stats_vbox, "Stats");
+ m_tasks_vbox = new QVBox(this, "<N_Instruction_CPUWidget::m_tasks_vbox>");
+
+ m_tasks = new cTasksWidget(m_tasks_vbox, "<N_Instruction_CPUWidget::m_tasks>");
+ m_summary3 = new cSummaryWidget(m_tasks_vbox);
+ addTab(m_tasks_vbox, "Tasks");
+ // m_genotype_vbox = new QVBox(this, "<N_Instruction_CPUWidget::m_genotype_vbox>");
+ // m_summary4 = new cSummaryWidget(m_genotype_vbox);
+ //addTab(m_genotype_vbox, "Genotype");
+ showPage(m_component_vbox);
+}
+void N_Instruction_CPUWidget::setMissionControl(avd_MissionControl *mission_control) {
+ GenDebug("entered.");
+ m_mission_control = mission_control;
+ m_summary1->setMissionControl(mission_control);
m_registers->setMissionControl(mission_control);
m_stacks->setMissionControl(mission_control);
m_inputs->setMissionControl(mission_control);
-
- connect(
- mission_control, SIGNAL(avidaUpdatedSig()),
- this, SLOT(updateState())
- );
- connect(
- mission_control, SIGNAL(avidaSteppedSig(int)),
- this, SLOT(updateState())
- );
+ //m_summary2->setMissionControl(mission_control);
+ m_summary3->setMissionControl(mission_control);
+ m_tasks->setMissionControl(mission_control);
+ //m_summary4->setMissionControl(mission_control);
+ connect(mission_control, SIGNAL(avidaUpdatedSig()), this, SLOT(updateState()));
+ connect(mission_control, SIGNAL(avidaSteppedSig(int)), this, SLOT(updateState()));
}
-
-void
-N_Instruction_CPUWidget::setPopulationCell(int cell_id){
+void N_Instruction_CPUWidget::setPopulationCell(int cell_id){
GenDebug("entered.");
m_cell_id = cell_id;
-
- m_summary->setPopulationCell(cell_id);
+ m_summary1->setPopulationCell(cell_id);
m_registers->setPopulationCell(cell_id);
m_stacks->setPopulationCell(cell_id);
m_inputs->setPopulationCell(cell_id);
-}
-
-void
-N_Instruction_CPUWidget::updateState(void){
- GenDebug("entered.");
-}
-
-void
-N_Instruction_CPUWidget::showData2Text(bool should_show){
+ //m_summary2->setPopulationCell(cell_id);
+ m_summary3->setPopulationCell(cell_id);
+ m_tasks->setPopulationCell(cell_id);
+ //m_summary4->setPopulationCell(cell_id);
+}
+void N_Instruction_CPUWidget::updateState(void)
+{ GenDebug("entered."); }
+void N_Instruction_CPUWidget::showData2Text(bool should_show){
m_registers->showData2Text(should_show);
m_stacks->showData2Text(should_show);
m_inputs->showData2Text(should_show);
+}
+void N_Instruction_CPUWidget::chooseBaseSlot(int base){
+ GenDebug("entered. base")(base)(".");
+ m_registers->chooseBaseSlot(base);
+ m_stacks->chooseBaseSlot(base);
+ m_inputs->chooseBaseSlot(base);
+ GenDebug("done.");
}
Index: avida/current/source/qt-viewer/n_orig_instruction_cpu_widget.hh
diff -u avida/current/source/qt-viewer/n_orig_instruction_cpu_widget.hh:1.7.2.1 avida/current/source/qt-viewer/n_orig_instruction_cpu_widget.hh:1.7.2.2
--- avida/current/source/qt-viewer/n_orig_instruction_cpu_widget.hh:1.7.2.1 Mon Aug 25 18:46:26 2003
+++ avida/current/source/qt-viewer/n_orig_instruction_cpu_widget.hh Tue Sep 23 19:58:53 2003
@@ -20,12 +20,12 @@
#ifndef QPTRLIST_H
#include <qptrlist.h>
#endif
+#ifndef QTABWIDGET_H
+#include <qtabwidget.h>
+#endif
#ifndef QWIDGET_H
#include <qwidget.h>
#endif
-#ifndef RETAINABLE_HH
-#include "retainable.hh"
-#endif
class avd_MissionControl;
class QPushButton;
@@ -34,14 +34,14 @@
class QScrollView;
class QVBoxLayout;
class QWidgetStack;
-class cLabeledField : public QWidget, public cRetainable
-{
+class cLabeledField : public QWidget {
Q_OBJECT
protected:
QHBoxLayout *m_hboxlayout;
QLabel *m_title_label;
QLabel *m_data1_label;
QLabel *m_data2_label;
+ int m_base;
public:
cLabeledField(
QWidget *parent = 0,
@@ -54,23 +54,44 @@
void setData2Binary(unsigned int value);
void setData1DecimalWidth(void);
void setData2BinaryWidth(void);
+ void setBase(int base);
+ int getBase(){ return m_base; }
public slots:
void showData2Text(bool);
};
-class cSummaryWidget : public QGroupBox, public cRetainable
-{
+class cSummaryWidget : public QGroupBox {
Q_OBJECT
protected:
QGuardedPtr<avd_MissionControl> m_mission_control;
int m_cell_id;
-
- cLabeledField *m_location;
cLabeledField *m_genotype_id;
cLabeledField *m_genotype_name;
+ cLabeledField *m_species_id;
+
+ cLabeledField *m_fitness;
+ cLabeledField *m_gestation_time;
+ cLabeledField *m_cpu_speed;
+ cLabeledField *m_current_merit;
+ cLabeledField *m_genome_size;
+ cLabeledField *m_memory_size;
cLabeledField *m_faults;
+
+ cLabeledField *m_location;
+ cLabeledField *m_facing;
+
+ cLabeledField *m_generation;
+ cLabeledField *m_age;
+ cLabeledField *m_executed;
+ cLabeledField *m_last_divide;
cLabeledField *m_offspring;
- cLabeledField *m_thread;
+
+ cLabeledField *m_mem_allocated;
+ cLabeledField *m_parent_true;
+ cLabeledField *m_injected;
+ cLabeledField *m_parasite;
+ cLabeledField *m_mutated;
+ cLabeledField *m_modified;
public:
cSummaryWidget(
QWidget *parent = 0,
@@ -82,8 +103,7 @@
void updateState(void);
};
-class cRegistersWidget : public QGroupBox, public cRetainable
-{
+class cRegistersWidget : public QGroupBox {
Q_OBJECT
protected:
QGuardedPtr<avd_MissionControl> m_mission_control;
@@ -99,10 +119,10 @@
void setPopulationCell(int cell_id);
void updateState(void);
void showData2Text(bool);
+ void chooseBaseSlot(int base);
};
-class cInputsWidget : public QGroupBox, public cRetainable
-{
+class cInputsWidget : public QGroupBox {
Q_OBJECT
protected:
QGuardedPtr<avd_MissionControl> m_mission_control;
@@ -118,16 +138,15 @@
void setPopulationCell(int cell_id);
void updateState(void);
void showData2Text(bool);
+ void chooseBaseSlot(int base);
};
-class cStackPopup : public QWidget, public cRetainable
-{
+class cStackPopup : public QWidget {
Q_OBJECT
protected:
QGuardedPtr<avd_MissionControl> m_mission_control;
int m_cell_id;
int m_stack_no;
-
QVBoxLayout *m_vboxlayout;
QScrollView *m_scrollview;
QWidget *m_layout_widget;
@@ -144,16 +163,15 @@
void setStackNumber(int stack_number);
void updateState(void);
void showData2Text(bool);
+ void chooseBaseSlot(int base);
};
-class cStackField : public cLabeledField
-{
+class cStackField : public cLabeledField {
Q_OBJECT
protected:
QGuardedPtr<avd_MissionControl> m_mission_control;
int m_cell_id;
int m_stack_no;
-
QPushButton *m_popup_pbutton;
cStackPopup *m_stack_popup;
public:
@@ -169,20 +187,18 @@
void setStackNumber(int stack_number);
void updateState(void);
void showData2Text(bool);
+ void chooseBaseSlot(int base);
protected slots:
void displayPopupSlot(void);
};
-class cStacksWidget : public QGroupBox, public cRetainable
-{
+class cStacksWidget : public QGroupBox {
Q_OBJECT
protected:
QGuardedPtr<avd_MissionControl> m_mission_control;
int m_cell_id;
-
cStackField *m_stackln1;
cStackField *m_stackln2;
-
public:
cStacksWidget(
QWidget *parent = 0,
@@ -193,41 +209,69 @@
void setPopulationCell(int cell_id);
void updateState(void);
void showData2Text(bool);
+ void chooseBaseSlot(int base);
};
-class cHideShowBinary : public QWidget, public cRetainable
-{
+class cBaseChoiceBtns : public QWidget {
Q_OBJECT
protected:
QWidgetStack *m_widgetstack;
QPushButton *m_show_binary_pbutton;
QPushButton *m_hide_binary_pbutton;
public:
- cHideShowBinary(
+ cBaseChoiceBtns(
QWidget *parent = 0,
const char *name = 0,
WFlags f = WDestructiveClose
);
+ void emitChooseBaseSig(int base){ emit chooseBaseSig(base); }
public slots:
void showBinary(void);
void hideBinary(void);
signals:
void showBinarySig(bool);
+ void chooseBaseSig(int);
};
-class N_Instruction_CPUWidget : public QWidget, public cRetainable
-{
+class QVBox;
+class cTasksWidget : public QGroupBox {
Q_OBJECT
protected:
QGuardedPtr<avd_MissionControl> m_mission_control;
int m_cell_id;
+ QGuardedPtr<QScrollView> m_scrollview;
+ QGuardedPtr<QVBox> m_vbox;
+ QPtrList<cLabeledField> m_tasklines;
+public:
+ cTasksWidget(
+ QWidget *parent = 0,
+ const char *name = 0
+ );
+ void setMissionControl(avd_MissionControl *mission_control);
+public slots:
+ void setPopulationCell(int cell_id);
+ void updateState(void);
+};
- QVBoxLayout *m_vboxlayout;
- cSummaryWidget *m_summary;
+class QVBox;
+class N_Instruction_CPUWidget : public QTabWidget {
+ Q_OBJECT
+protected:
+ QGuardedPtr<avd_MissionControl> m_mission_control;
+ int m_cell_id;
+ QVBox *m_component_vbox;
+ cSummaryWidget *m_summary1;
cRegistersWidget *m_registers;
cStacksWidget *m_stacks;
cInputsWidget *m_inputs;
- cHideShowBinary *m_hideshow_binary;
+ cBaseChoiceBtns *m_basechoice_btns;
+ QVBox *m_stats_vbox;
+ cSummaryWidget *m_summary2;
+ QVBox *m_tasks_vbox;
+ cSummaryWidget *m_summary3;
+ cTasksWidget *m_tasks;
+ QVBox *m_genotype_vbox;
+ cSummaryWidget *m_summary4;
public:
N_Instruction_CPUWidget(
QWidget *parent = 0,
@@ -239,6 +283,7 @@
void setPopulationCell(int cell_id);
void updateState(void);
void showData2Text(bool);
+ void chooseBaseSlot(int base);
};
-#endif
+#endif /* !N_ORIG_INSTRUCTION_CPU_WIDGET_HH */
More information about the Avida-cvs
mailing list