[Avida-SVN] r2698 - in branches/vo/source: targets/viewer-fltk viewer-core

michaelvo at myxo.css.msu.edu michaelvo at myxo.css.msu.edu
Tue Jul 1 13:13:56 PDT 2008


Author: michaelvo
Date: 2008-07-01 16:13:56 -0400 (Tue, 01 Jul 2008)
New Revision: 2698

Modified:
   branches/vo/source/targets/viewer-fltk/cDriver_FLTKViewer.cc
   branches/vo/source/targets/viewer-fltk/cDriver_FLTKViewer.h
   branches/vo/source/viewer-core/cCoreView_Map.cc
Log:
Created a few classes for the core viewer, and modified the existing FLTK driver


Modified: branches/vo/source/targets/viewer-fltk/cDriver_FLTKViewer.cc
===================================================================
--- branches/vo/source/targets/viewer-fltk/cDriver_FLTKViewer.cc	2008-07-01 20:11:01 UTC (rev 2697)
+++ branches/vo/source/targets/viewer-fltk/cDriver_FLTKViewer.cc	2008-07-01 20:13:56 UTC (rev 2698)
@@ -27,8 +27,10 @@
 #include "cAnalyze.h"
 #include "cChangeList.h"
 #include "cClassificationManager.h"
+#include "cCoreView_Text.h"
 #include "cGenotype.h"
 #include "cHardwareBase.h"
+#include "cHardwareManager.h"
 #include "cOrganism.h"
 #include "cPopulation.h"
 #include "cPopulationCell.h"
@@ -36,18 +38,16 @@
 #include "cString.h"
 #include "cStringList.h"
 #include "cWorld.h"
-
+#include "cEnvironment.h"
 #include "cDriverManager.h"
 #include "cFLTKWindow.h"
 #include "cFLTKBox.h"
 #include "tFLTKButton.h"
-
 #include "avidalogo.xpm"
-
 #include <cstdlib>
 
 #include <FL/Fl.H>
-
+#include <FL/Fl_Tabs.h>
 #include <signal.h>
 
 // #include <FL/Fl_JPEG_Image.H>
@@ -58,10 +58,10 @@
 #define FLTK_MAINWIN_HEIGHT 600
 #define FLTK_MENUBAR_HEIGHT 35
 #define FLTK_SPACING 5
-#define FLTK_GRID_SIDE 502
+#define FLTK_GRID_SIDE 450
 
-#define FLTK_SIDEBAR_WIDTH (FLTK_MAINWIN_WIDTH - FLTK_GRID_SIDE - 3*FLTK_SPACING)
-#define FLTK_SIDEBAR_HEIGHT (FLTK_MAINWIN_HEIGHT - 2*FLTK_SPACING)
+#define FLTK_SIDEBAR_WIDTH (FLTK_MAINWIN_WIDTH - FLTK_GRID_SIDE - 3*FLTK_SPACING-20)
+#define FLTK_SIDEBAR_HEIGHT (FLTK_MAINWIN_HEIGHT - 2*FLTK_SPACING-20)
 #define FLTK_BODY_HEIGHT (FLTK_MAINWIN_HEIGHT - 2 * FLTK_MENUBAR_HEIGHT - 2 * FLTK_SPACING)
 #define FLTK_MENU1_Y FLTK_BODY_HEIGHT
 #define FLTK_MENU2_Y (FLTK_MENU1_Y + FLTK_MENUBAR_HEIGHT + FLTK_SPACING)
@@ -71,73 +71,170 @@
 cDriver_FLTKViewer::cDriver_FLTKViewer(cWorld* world)
   : m_world(world)
   , m_info(world, 18)
+	, m_text(world)
   , m_done(false)
   , m_main_window(FLTK_MAINWIN_WIDTH, FLTK_MAINWIN_HEIGHT, "Avida")
-  , m_body_box(m_main_window, 0, 0, FLTK_MAINWIN_WIDTH, FLTK_BODY_HEIGHT)
-  , m_update_box(m_main_window, 100, FLTK_MENU2_Y, 200, FLTK_MENUBAR_HEIGHT, "Update: 0")
-  , m_title_box(m_main_window,    0, FLTK_MENU2_Y,  80, FLTK_MENUBAR_HEIGHT)
-  , m_grid_view(m_info, m_main_window, FLTK_SPACING, FLTK_SPACING, FLTK_GRID_SIDE, FLTK_GRID_SIDE)
-  , m_legend(m_grid_view, m_main_window, FLTK_GRID_SIDE + 2*FLTK_SPACING, FLTK_SPACING, FLTK_SIDEBAR_WIDTH, FLTK_SIDEBAR_HEIGHT)
-  , m_grid_view_menu(m_main_window,   140, FLTK_MENU1_Y, 80, 30, "View:")
-  , m_grid_tags_menu(m_main_window,   270, FLTK_MENU1_Y, 80, 30, "Tags:")
-  , m_grid_symbol_menu(m_main_window, 400, FLTK_MENU1_Y, 80, 30, "Mark:")
-  , m_pause_button(m_main_window,     400, FLTK_MENU2_Y, 30, 30, "@||")
-  , m_quit_button(m_main_window,      440, FLTK_MENU2_Y, 30, 30, "@square")
+
 {
   // 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);
+  
+  Fl_Group* a = new Fl_Group(10, 35, FLTK_MAINWIN_WIDTH-20, FLTK_MENU2_Y-15, "&Map");
+  //fl_color(0xDD, 0xDD, 0xFF);
+  //a->color(fl_color());
+  //m_main_window = new cFLTKWindow(FLTK_MAINWIN_WIDTH, FLTK_MAINWIN_HEIGHT, "Avida");
+  m_body_box = new cFLTKBox(m_main_window, 0, 0, FLTK_MAINWIN_WIDTH, FLTK_BODY_HEIGHT);
+  m_title_box = new cFLTKBox(m_main_window,    0, FLTK_MENU2_Y,  80, FLTK_MENUBAR_HEIGHT);
+  m_grid_view = new cFLTKGridView(m_info, m_main_window, FLTK_SPACING+20, FLTK_SPACING+50, FLTK_GRID_SIDE, FLTK_GRID_SIDE);
+  
+  m_legend = new cFLTKLegend(*m_grid_view, m_main_window, FLTK_GRID_SIDE + 2*FLTK_SPACING+20, FLTK_SPACING+50, FLTK_SIDEBAR_WIDTH, FLTK_SIDEBAR_HEIGHT);
+  m_grid_view_menu = new tFLTKMenu<cDriver_FLTKViewer>(m_main_window,   140, FLTK_MENU1_Y, 80, 30, "View:");
+  m_grid_tags_menu = new tFLTKMenu<cDriver_FLTKViewer>(m_main_window,   270, FLTK_MENU1_Y, 80, 30, "Tags:");
+  m_grid_symbol_menu = new tFLTKMenu<cDriver_FLTKViewer>(m_main_window, 400, FLTK_MENU1_Y, 80, 30, "Mark:");
+  
+  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");
+	}
+  
+  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);
+	}
+  
+  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");
   cDriverManager::Register(static_cast<cAvidaDriver*>(this));
   world->SetDriver(this);
-
+	
   m_main_window.SetSizeRange(FLTK_MAINWIN_WIDTH, FLTK_MAINWIN_HEIGHT);
   m_main_window.SetBackgroundColor(cColor(0xDD, 0xDD, 0xFF));
-  m_main_window.Resizable(m_body_box);
-
-  m_update_box.SetType(cGUIBox::BOX_NONE);
-  m_update_box.SetFontSize(FLTK_MENU_FONT_SIZE);
-  m_update_box.SetFontAlign(FL_ALIGN_INSIDE | FL_ALIGN_LEFT);
-  m_update_box.SetTooltip("Updates are the natural timescale in Avida");
-  m_update_box.Refresh();
+  //m_main_window.Resizable(*m_body_box);
+  m_update_box->SetType(cGUIBox::BOX_NONE);
+  m_update_box->SetFontSize(FLTK_MENU_FONT_SIZE);
+  m_update_box->SetFontAlign(FL_ALIGN_INSIDE | FL_ALIGN_LEFT);
+  m_update_box->SetTooltip("Updates are the natural timescale in Avida");
+  m_update_box->Refresh();
  
-  m_title_box.SetType(cGUIBox::BOX_NONE);
-  m_title_box.SetFont(FL_HELVETICA_BOLD);
-  m_title_box.SetFontSize(FLTK_MENU_FONT_SIZE);
-  m_title_box.SetFontColor(cColor::DARK_MAGENTA);
+  m_title_box->SetType(cGUIBox::BOX_NONE);
+  m_title_box->SetFont(FL_HELVETICA_BOLD);
+  m_title_box->SetFontSize(FLTK_MENU_FONT_SIZE);
+  m_title_box->SetFontColor(cColor::DARK_MAGENTA);
   cString title_tooltip;
   title_tooltip.Set("Avida Version %s\nby Charles Ofria", VERSION);
-  m_title_box.SetTooltip(title_tooltip);
-  m_title_box.SetImage_XPM(avidalogo);
-  m_title_box.Refresh();
+  m_title_box->SetTooltip(title_tooltip);
+  //m_title_box->SetImage_XPM(avidalogo);
+  m_title_box->Refresh();
 
-  cCoreView_Map & map_info = m_grid_view.GetMapInfo();
+  cCoreView_Map & map_info = m_grid_view->GetMapInfo();
   int num_modes = map_info.GetNumModes();
+  
   for (int i = 0; i < num_modes; i++) {
     const cString & cur_name = map_info.GetModeName(i);
-    const int cur_type = map_info.GetModeType(i);
+    const int cur_type = map_info.GetModeType(i);	
     if (cur_type == cCoreView_Map::VIEW_COLOR) {
-      m_grid_view_menu.AddOption(cur_name, this, &cDriver_FLTKViewer::MenuCallback_View, i);
+      m_grid_view_menu->AddOption(cur_name, this, &cDriver_FLTKViewer::MenuCallback_View, i);
     } else if (cur_type == cCoreView_Map::VIEW_TAGS) {
-      m_grid_tags_menu.AddOption(cur_name, this, &cDriver_FLTKViewer::MenuCallback_View, i);
+      m_grid_tags_menu->AddOption(cur_name, this, &cDriver_FLTKViewer::MenuCallback_View, i);
     } else if (cur_type == cCoreView_Map::VIEW_SYMBOLS) {
-      m_grid_symbol_menu.AddOption(cur_name, this, &cDriver_FLTKViewer::MenuCallback_View, i);
+      m_grid_symbol_menu->AddOption(cur_name, this, &cDriver_FLTKViewer::MenuCallback_View, i);
     }
+	
   }
-  m_grid_view_menu.SetActive(0);
-  m_grid_tags_menu.SetActive(0);
-  m_grid_symbol_menu.SetActive(0);
 
-  m_pause_button.SetCallback(this, &cDriver_FLTKViewer::ButtonCallback_Pause);
-  m_pause_button.SetTooltip("Pause");
-  m_quit_button.SetCallback(this, &cDriver_FLTKViewer::ButtonCallback_Quit);
-  m_quit_button.SetFontColor(cColor::DARK_RED);
-  m_quit_button.SetFontSize(12);
-  m_quit_button.SetTooltip("Quit");
+  m_grid_view_menu->SetActive(0);
+  m_grid_tags_menu->SetActive(0);
+  m_grid_symbol_menu->SetActive(0);
 
+
+  m_pause_button->SetCallback(this, &cDriver_FLTKViewer::ButtonCallback_Pause);
+  m_pause_button->SetTooltip("Pause");
+  m_quit_button->SetCallback(this, &cDriver_FLTKViewer::ButtonCallback_Quit);
+  m_quit_button->SetFontColor(cColor::DARK_RED);
+  m_quit_button->SetFontSize(12);
+  m_quit_button->SetTooltip("Quit");
+
   m_main_window.Finalize();
 }
 
 
+void cDriver_FLTKViewer::PutInside(Fl_Widget* container, Fl_Widget* widget)
+{
+	widget->position(container->x()+widget->x(), container->y()+widget->y());
+}
+
 cDriver_FLTKViewer::~cDriver_FLTKViewer()
 {
   cDriverManager::Unregister(static_cast<cAvidaDriver*>(this));
@@ -382,12 +479,39 @@
 
   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->SetName(update_string);
+  m_update_box->Refresh();
   
-  m_grid_view.Redraw();
-  m_legend.Redraw();
-
+  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();
   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.
@@ -457,19 +581,19 @@
 {
   bool paused = m_info.TogglePause();
   if (paused == true) {
-    m_pause_button.SetLabel("@>");
-    m_pause_button.SetTooltip("Play");
+    m_pause_button->SetLabel("@>");
+    m_pause_button->SetTooltip("Play");
   }
   else {
-    m_pause_button.SetLabel("@||");
-    m_pause_button.SetTooltip("Pause");
+    m_pause_button->SetLabel("@||");
+    m_pause_button->SetTooltip("Pause");
   }
 }
 
 
 void cDriver_FLTKViewer::MenuCallback_View(int new_mode)
 {
-  m_grid_view.GetMapInfo().SetMode(new_mode);
+  m_grid_view->GetMapInfo().SetMode(new_mode);
 }
 
 
@@ -483,3 +607,39 @@
   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-07-01 20:11:01 UTC (rev 2697)
+++ branches/vo/source/targets/viewer-fltk/cDriver_FLTKViewer.h	2008-07-01 20:13:56 UTC (rev 2698)
@@ -37,13 +37,16 @@
 #include "cWorldDriver.h"
 #endif
 
+#include "cCoreView_Text.h"
 #include "cFLTKBox.h"
 #include "cFLTKGridView.h"
 #include "cFLTKLegend.h"
 #include "cFLTKWindow.h"
 #include "tFLTKButton.h"
 #include "tFLTKMenu.h"
-
+#include <FL/Fl_Text_Display.H>
+#include <FL/Fl_Multiline_Output.H>
+#include "cFLTKZoom.h"
 #include <sstream>
 #include <iostream>
 #include <fstream>
@@ -57,6 +60,7 @@
 private:
   cWorld * m_world;
   cCoreView_Info m_info;
+  cCoreView_Text m_text;
 
   bool m_done;              // This is set to true when run should finish.
 
@@ -64,19 +68,28 @@
   cFLTKWindow m_main_window;
 
   //  cFLTKBox m_menu_box;
-  cFLTKBox m_body_box;
+  cFLTKBox* m_body_box;
 
-  cFLTKBox m_update_box;
-  cFLTKBox m_title_box;
+  cFLTKBox* m_update_box;
+  cFLTKBox* m_title_box;
 
-  cFLTKGridView m_grid_view;
-  cFLTKLegend m_legend;
-
-  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;
+  cFLTKGridView* m_grid_view;
+  cFLTKLegend* m_legend;
+  cFLTKZoom* z;
+  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();
@@ -98,6 +111,7 @@
   // Drawing and interaction.
   void Draw();
   void DoUpdate();
+  void PutInside(Fl_Widget* container, Fl_Widget* widget);
 
   // Notifications
   void NotifyComment(const cString& in_string);
@@ -117,6 +131,8 @@
 
   // Menu Callbacks
   void MenuCallback_View(int new_mode);
+  void PrototypeStepThrough();
+
 };
 
 

Modified: branches/vo/source/viewer-core/cCoreView_Map.cc
===================================================================
--- branches/vo/source/viewer-core/cCoreView_Map.cc	2008-07-01 20:11:01 UTC (rev 2697)
+++ branches/vo/source/viewer-core/cCoreView_Map.cc	2008-07-01 20:13:56 UTC (rev 2698)
@@ -1,6 +1,7 @@
 /*
  *  cCoreView_Map.cc
  *  Avida
+
  *
  *  Created by Charles on 7-9-07
  *  Copyright 1999-2007 Michigan State University. All rights reserved.




More information about the Avida-cvs mailing list