[Avida-SVN] r2761 - branches/vo/source/targets/viewer-fltk
michaelvo at myxo.css.msu.edu
michaelvo at myxo.css.msu.edu
Wed Aug 27 00:28:06 PDT 2008
Author: michaelvo
Date: 2008-08-27 03:28:06 -0400 (Wed, 27 Aug 2008)
New Revision: 2761
Modified:
branches/vo/source/targets/viewer-fltk/cDriver_FLTKViewer.cc
branches/vo/source/targets/viewer-fltk/cDriver_FLTKViewer.h
Log:
Modified: branches/vo/source/targets/viewer-fltk/cDriver_FLTKViewer.cc
===================================================================
--- branches/vo/source/targets/viewer-fltk/cDriver_FLTKViewer.cc 2008-08-26 17:56:50 UTC (rev 2760)
+++ branches/vo/source/targets/viewer-fltk/cDriver_FLTKViewer.cc 2008-08-27 07:28:06 UTC (rev 2761)
@@ -44,6 +44,7 @@
#include "cFLTKBox.h"
#include "tFLTKButton.h"
#include "avidalogo.xpm"
+#include "cFLTKStats.h"
#include <cstdlib>
#include <FL/Fl.H>
@@ -71,13 +72,14 @@
cDriver_FLTKViewer::cDriver_FLTKViewer(cWorld* world)
: m_world(world)
, m_info(world, 18)
- , m_text(world)
+ , m_text(world)
, m_done(false)
, m_main_window(FLTK_MAINWIN_WIDTH, FLTK_MAINWIN_HEIGHT, "Avida")
{
// Setup the initial view mode (loaded from avida.cfg)
m_info.SetViewMode(world->GetConfig().VIEW_MODE.Get());
+
Fl_Tabs* tabs = new Fl_Tabs(10, 10, FLTK_MAINWIN_WIDTH-20, FLTK_MENU2_Y-15);
@@ -97,85 +99,23 @@
a->end();
Fl_Group* b = new Fl_Group(10, 35, FLTK_MAINWIN_WIDTH-20, FLTK_MENU2_Y-15, "&Zoom");
- {
- m_org_inst_buffer = new Fl_Text_Buffer();
- m_org_inst_display = new Fl_Text_Display(FLTK_SPACING+20, FLTK_SPACING+50, FLTK_MAINWIN_WIDTH-(FLTK_GRID_SIDE+FLTK_SPACING*2+20), FLTK_GRID_SIDE);
- m_org_inst_display->buffer(m_org_inst_buffer);
-
- m_cell_x_input = new Fl_Input(500, 50+FLTK_SPACING, 100, 30, "X");
- m_cell_x_input->value("0");
- m_cell_y_input = new Fl_Input(620, 50+FLTK_SPACING, 100, 30, "Y");
- m_cell_y_input->value("0");
+ {
+ m_zoom_screen=new cFLTKZoom(world);
}
b->end();
Fl_Group* c = new Fl_Group(10, 35, FLTK_MAINWIN_WIDTH-20, FLTK_MENU2_Y-15, "&Stats");
-
- //c->color(fl_color());
- Fl_Box* framePopStats = new Fl_Box(FL_BORDER_FRAME, 20, 20, 300, 115, "");
- {
- //framePopStats->align(FL_ALIGN_TOP|FL_ALIGN_INSIDE|FL_ALIGN_LEFT);
- PutInside(c, framePopStats);
- framePopStats->color(FL_BLACK);
-
- Fl_Multiline_Output* popStatsLabel = new Fl_Multiline_Output(10, 10, 200, 100, "");
- m_pop_stats_label = new Fl_Multiline_Output(150, 10, 100, 100, "");
- //popStatsLabel->set_boxtype(FL_NO_BOX, 0, 0, 0, 0);
-
- popStatsLabel->labelfont(FL_COURIER);
- popStatsLabel->value("Total Births:\nBreedTrue:\nParasites:\nEnergy:\nMax Fitness:\nMax Merit:");
-
- popStatsLabel->box(FL_NO_BOX);
- m_pop_stats_label->box(FL_NO_BOX);
- popStatsLabel->labelfont(FL_COURIER);
-
- PutInside(framePopStats, popStatsLabel);
- PutInside(framePopStats, m_pop_stats_label);
- }
-
- Fl_Box* frameDomAveStats = new Fl_Box(FL_BORDER_FRAME, 20, 145, 400, 300, "");
- {
- PutInside(c, frameDomAveStats);
- frameDomAveStats->color(FL_BLACK);
- Fl_Multiline_Output* domAveStatsLabel = new Fl_Multiline_Output(10, 25, 130, 180, "");
- domAveStatsLabel->value("Fitness:\nMerit:\nGestation:\nLength:\nCopy Length:\nExec Length:\nAbundance:\nBirths:\nBirthrate:\nTree Depth:\nGen. Ave:");
- m_pop_dominant_label = new Fl_Multiline_Output(150, 25, 100, 180, "");
- m_pop_average_label = new Fl_Multiline_Output(270, 25, 100, 180, "");
- domAveStatsLabel->box(FL_NO_BOX);
- m_pop_average_label->box(FL_NO_BOX);
- m_pop_dominant_label->box(FL_NO_BOX);
- PutInside(frameDomAveStats, domAveStatsLabel);
- PutInside(frameDomAveStats, m_pop_average_label);
- PutInside(frameDomAveStats, m_pop_dominant_label);
- }
-
- Fl_Box* frame_tasks = new Fl_Box(FL_BORDER_FRAME, 430, 145, 200, 300, "");
{
- PutInside(c, frame_tasks);
- frame_tasks->color(FL_BLACK);
- Fl_Multiline_Output* task_label = new Fl_Multiline_Output(10, 25, 130, 180, "");
- cString task_string="";
- for(int n=0; n<m_world->GetEnvironment().GetNumTasks(); n++){
- task_string+=m_world->GetEnvironment().GetTask(n).GetName();
- task_string+="\n";
- }
- task_label->value(task_string);
- m_task_label = new Fl_Multiline_Output(150, 25, 40, 180, "");
- PutInside(frame_tasks, task_label);
- PutInside(frame_tasks, m_task_label);
- task_label->box(FL_NO_BOX);
- m_task_label->box(FL_NO_BOX);
+ m_stats_screen= new cFLTKStats(m_world);
}
-
- c->end();
-
+ c->end();
tabs->end();
m_update_box = new cFLTKBox(m_main_window, 100, FLTK_MENU2_Y, 200, FLTK_MENUBAR_HEIGHT, "Update: 0");
m_pause_button = new tFLTKButton<cDriver_FLTKViewer>(m_main_window, 400, FLTK_MENU2_Y, 30, 30, "@||");
m_quit_button = new tFLTKButton<cDriver_FLTKViewer>(m_main_window, 440, FLTK_MENU2_Y, 30, 30, "@square");
- m_org_inst_buffer->text("N/A");
+ //m_org_inst_buffer->text("N/A");
cDriverManager::Register(static_cast<cAvidaDriver*>(this));
world->SetDriver(this);
@@ -350,109 +290,6 @@
}
-bool cDriver_FLTKViewer::ProcessKeypress(int keypress)
-{
- bool unknown = false;
-
- switch (keypress) {
-// case 'a':
-// case 'A':
-// ChangeCurScreen(analyze_screen);
-// break;
-// case 'b':
-// case 'B':
-// ChangeCurScreen(NULL);
-// break;
-// case 'C':
-// case 'c':
-// NavigateMapWindow();
-// // Now we need to restore the proper window mode (already cleared)
-// ChangeCurScreen(cur_screen);
-// break;
-// case 'e':
-// case 'E':
-// ChangeCurScreen(environment_screen);
-// break;
-// case 'h':
-// case 'H':
-// ChangeCurScreen(hist_screen);
-// break;
-// case 'm':
-// case 'M':
-// ChangeCurScreen(map_screen);
-// break;
-// case 'n':
-// case 'N':
-// if (info.GetPauseLevel() == PAUSE_ON) {
-// info.SetPauseLevel(PAUSE_ADVANCE_UPDATE);
-// // parasite_zoom = false; // if executing, show code that is running
-// info.GetActiveCell()->GetOrganism()->GetPhenotype().SetFault("");
-// nodelay(stdscr, true); // Don't delay for input; get to processing.
-// }
-// if (cur_screen) cur_screen->AdvanceUpdate();
-// break;
-// case 'o':
-// case 'O':
-// ChangeCurScreen(options_screen);
-// break;
- case 'p':
- case 'P':
- if (m_info.TogglePause() == true) {
-// nodelay(stdscr, false); // Wait for input if pause is on...
- } else {
-// nodelay(stdscr, true); // Don't delay if pause is off.
- }
-
- // Redraw the screen to account for the toggled pause.
-// if (cur_screen) cur_screen->Draw();
-
- break;
- case 'q':
- if (!Confirm("Are you sure you want to quit?")) break;
- case 'Q': // Note: Capital 'Q' quits w/o confirming.
- // clear the windows before we go. Do bar window last to end at top.
- ExitFLTKViewer(0);
- break;
-// case 's':
-// case 'S':
-// ChangeCurScreen(stats_screen);
-// break;
-// case 'W':
-// case 'w':
-// CloneSoup();
-// break;
-// case 'X':
-// case 'x':
-// ExtractCreature();
-// break;
-// case 'z':
-// case 'Z':
-// ChangeCurScreen(zoom_screen);
-// break;
- case 3: // CTRL-C...
- exit(0);
- break;
-// case 12: // CTRL-L...
-// wclear(stdscr);
-// wrefresh(stdscr);
-// m_bar_window.Redraw();
-// m_main_window.Redraw();
-// break;
- case 26: // CTRL-Z
- kill(getpid(), SIGTSTP);
- break;
- case 0:
- break;
- default:
- clog << "Unknown Key!" << endl;
- unknown = true;
- break;
- }
-
- return !unknown;
-}
-
-
void cDriver_FLTKViewer::RaiseException(const cString& in_string)
{
NotifyWarning(in_string);
@@ -474,44 +311,16 @@
void cDriver_FLTKViewer::DoUpdate()
{
bool error = Fl::check();
-
+ cString curr_update;
+ curr_update.Set("Update: %d", m_world->GetStats().GetUpdate());
m_info.SetupUpdate();
-
- cString update_string;
- update_string.Set("Update: %d", m_world->GetStats().GetUpdate());
- m_update_box->SetName(update_string);
- m_update_box->Refresh();
+ m_update_box->SetLabel(curr_update);
- cString stats_string;
- stats_string.Set("%d\n%d\n%d\n%f\n%f\n%f", m_world->GetStats().GetNumBirths(), m_world->GetStats().GetBreedTrue(),
- m_world->GetStats().GetNumParasites(), m_world->GetStats().GetEnergy(), m_world->GetStats().GetMaxFitness(), m_world->GetStats().GetMaxMerit());
- m_pop_stats_label->value(stats_string);
-
- stats_string.Set("%f \n%f \n%f \n%d \n%f \n%f \n%d \n%d \n%f \n%d", m_world->GetStats().GetDomFitness(), m_world->GetStats().GetDomMerit(),
- m_world->GetStats().GetDomGestation(), m_world->GetStats().GetDomSize(), m_world->GetStats().GetDomCopySize(), m_world->GetStats().GetDomExeSize(),
- m_world->GetStats().GetDomAbundance(), m_world->GetStats().GetDomBirths(), m_world->GetStats().GetDomReproRate(), m_world->GetStats().GetDomGeneDepth());
- m_pop_dominant_label->value(stats_string);
-
- stats_string.Set("%f \n%f \n%f \n%f \n%f \n%f \n%f \n%f \n%f \n%f \n%f", m_world->GetStats().GetAveFitness(), m_world->GetStats().GetAveMerit(),
- m_world->GetStats().GetAveGestation(), m_world->GetStats().GetAveSize(), m_world->GetStats().GetAveCopySize(), m_world->GetStats().GetAveExeSize(),
- double(m_world->GetStats().GetNumCreatures())/m_world->GetStats().GetNumGenotypes(),
- 0,
- m_world->GetStats().GetAveReproRate(), 0,0);
- //m_world->GetStats().SumGenotypeDepth().Average(),
- //m_world->GetStats().SumGeneration().Average());
- m_pop_average_label->value(stats_string);
-
- cString format_string="";
- for(int n=0; n<m_world->GetEnvironment().GetNumTasks(); n++){
- stats_string.Set("%d\n", m_world->GetStats().GetTaskLastCount(n));
- format_string+=stats_string;
- }
- m_task_label->value(format_string);
-
m_grid_view->Redraw();
m_legend->Redraw();
- PrototypeStepThrough();
+ m_zoom_screen->Redraw();
+ m_stats_screen->Redraw();
const int pause_level = m_info.GetPauseLevel();
// If we are stepping in some way, we've come to a stop, so revert to a normal pause.
@@ -606,40 +415,3 @@
exit(exit_code);
}
-
-void cDriver_FLTKViewer::PrototypeStepThrough()
-{
- int org_id=0;
- cString boxContents="";
- cString number_converter;
- int x, y;
-
- number_converter=m_cell_x_input->value();
- x=number_converter.AsInt();
-
- number_converter=m_cell_y_input->value();
- y=number_converter.AsInt();
-
- tArray< cString > inst = m_text.GetOrganismInstructions(x, y);
- if(inst.GetSize()>0)
- {
-
- for(int n=0; n<inst.GetSize(); n++)
- {
- cString box_line;
- box_line.Set("%d: ", n);
- boxContents+=box_line;
- boxContents+=inst[n];
- boxContents+="\n";
- }
- }
- else
- {
- boxContents="N/A";
- }
- m_org_inst_buffer->text(boxContents);
- m_org_inst_display->redraw();
-
-
-}
-
Modified: branches/vo/source/targets/viewer-fltk/cDriver_FLTKViewer.h
===================================================================
--- branches/vo/source/targets/viewer-fltk/cDriver_FLTKViewer.h 2008-08-26 17:56:50 UTC (rev 2760)
+++ branches/vo/source/targets/viewer-fltk/cDriver_FLTKViewer.h 2008-08-27 07:28:06 UTC (rev 2761)
@@ -26,7 +26,7 @@
#define cDriver_FLTKViewer_h
#ifndef cAvidaDriver_h
-#include "cAvidaDriver.h"
+#include "cAvidaDriver.h"Ä
#endif
#ifndef cCoreView_Info_h
@@ -47,6 +47,7 @@
#include <FL/Fl_Text_Display.H>
#include <FL/Fl_Multiline_Output.H>
#include "cFLTKZoom.h"
+#include "cFLTKStats.h"
#include <sstream>
#include <iostream>
#include <fstream>
@@ -75,21 +76,20 @@
cFLTKGridView* m_grid_view;
cFLTKLegend* m_legend;
- cFLTKZoom* z;
+ cFLTKZoom* m_zoom_screen;
+ cFLTKStats* m_stats_screen;
tFLTKMenu<cDriver_FLTKViewer>* m_grid_view_menu;
tFLTKMenu<cDriver_FLTKViewer>* m_grid_tags_menu;
tFLTKMenu<cDriver_FLTKViewer>* m_grid_symbol_menu;
tFLTKButton<cDriver_FLTKViewer>* m_pause_button;
tFLTKButton<cDriver_FLTKViewer>* m_quit_button;
- Fl_Text_Display* m_org_inst_display;
- Fl_Text_Buffer* m_org_inst_buffer;
+
Fl_Multiline_Output* m_pop_stats_label;
Fl_Multiline_Output* m_pop_dominant_label;
Fl_Multiline_Output* m_pop_average_label;
Fl_Multiline_Output* m_task_label;
- Fl_Input* m_cell_x_input;
- Fl_Input* m_cell_y_input;
+
public:
cDriver_FLTKViewer(cWorld* world);
~cDriver_FLTKViewer();
@@ -103,7 +103,7 @@
// IO
void Flush();
int GetKeypress() { return 0; } // @CAO FIX!
- bool ProcessKeypress(int keypress);
+ //bool ProcessKeypress(int keypress);
void RaiseException(const cString& in_string);
void RaiseFatalException(int exit_code, const cString& in_string);
@@ -131,7 +131,6 @@
// Menu Callbacks
void MenuCallback_View(int new_mode);
- void PrototypeStepThrough();
};
More information about the Avida-cvs
mailing list