void ProjectileOccurrence::updatePhysicData(float time, RenderWindow& app)
	{
		setActivity(app);

		if(_isActive)
		{
			if(_lifeTime.GetElapsedTime() > 0)
			{
				/* Submissions */
				if(_projectile->getSubmission() & PhysicConstants::GRAVITY_SUBMISSION)
					gravity(_speed, time);

				/* Update physic position */
				/* Save actual position in previous position */
				_previousPosition = _position;

				/* Compute new position */
				updatePositions(_hitboxPosition.x + time * _speed.x, _hitboxPosition.y + time * _speed.y);

				/* If it falls in hole */
				/*if(_hitboxPosition.y + _hitboxSize.y < 0)
					_projectile->removeProjectileOccurrence(this);*/
				if(_hitboxPosition.y < 0)
					_hitboxPosition.y = 0;
			}
			else
			{
				//_projectile->removeProjectileOccurrence(this);
			}
		}
	}
    void Checkpoint::updateGraphicData(RenderWindow& app)
    {
		setActivity(app);

		if(_isActive)
			_animation.update();
    }
void InstrumentWidgetMaskTab::showEvent(QShowEvent *) {
  setActivity();
  m_instrWidget->setMouseTracking(true);
  enableApplyButtons();
  m_instrWidget->updateInstrumentView(true);
  m_instrWidget->getSurface()->changeBorderColor(getShapeBorderColor());
}
Example #4
0
void CharacterController::setNextActivity(std::unique_ptr<Activity> activity) {
    if (_currentActivity == nullptr) {
        setActivity(std::move(activity));
        _nextActivity = nullptr;
    } else {
        _nextActivity.swap(activity);
    }
}
Example #5
0
void CharacterController::skipActivity() {
    // Some activities can't be cancelled, such as the final phase of entering a
    // vehicle
    // or jumping.
    if (getCurrentActivity() != nullptr &&
        getCurrentActivity()->canSkip(character, this))
        setActivity(nullptr);
}
	void BlockOccurrence::updatePhysicData(float, RenderWindow& app)
	{
		setActivity(app);

		if(_isActive)
		{
			_previousHitboxPosition = _hitboxPosition;
		}
	}
void CharacterController::setNextActivity(CharacterController::Activity* activity)
{
	if( _currentActivity == nullptr ) {
		setActivity(activity);
		_nextActivity = nullptr;
	}
	else {
		if(_nextActivity) delete _nextActivity;
		_nextActivity = activity;
	}
}
void CharacterController::update(float dt)
{
	if( character->getCurrentVehicle() ) {
		// Nevermind, the player is in a vehicle.

		auto& d = character->getMovement();

		if( character->getCurrentSeat() == 0 )
		{
			character->getCurrentVehicle()->setSteeringAngle(d.y);
			
			if( std::abs(d.x) > 0.01f )
			{
				character->getCurrentVehicle()->setHandbraking(false);
			}
			character->getCurrentVehicle()->setThrottle(d.x);
		}

		if( _currentActivity == nullptr ) {
			if( glm::length( d ) <= 0.1f )
			{
				vehicleIdle += dt;
			}
			else
			{
				vehicleIdle = 0.f;
			}
			
			if( vehicleIdle >= 1.f )
			{
				// If character is idle in vehicle, try to close the door.
				auto v = character->getCurrentVehicle();
				auto entryDoor = v->getSeatEntryDoor(character->getCurrentSeat());
				
				if( entryDoor && entryDoor->constraint )
				{
					character->getCurrentVehicle()->setPartTarget(entryDoor, true, entryDoor->closedAngle);
				}
			}
		}
	}

	if( updateActivity() ) {
		character->activityFinished();
		if( _currentActivity ) {
			delete _currentActivity;
			_currentActivity = nullptr;
		}
		if( _nextActivity ) {
			setActivity( _nextActivity );
			_nextActivity = nullptr;
		}
	}
}
Example #9
0
void Process::addValue( libecs::Param<Real>::type aValue )
{
    setActivity( aValue );

    // Increase or decrease variables, skipping zero coefficients.
    std::for_each( theVariableReferenceVector.begin(),
                   theZeroVariableReferenceIterator,
                   boost::bind( &VariableReference::addValue, _1, aValue ) );

    std::for_each( thePositiveVariableReferenceIterator,
                   theVariableReferenceVector.end(),
                   boost::bind( &VariableReference::addValue, _1, aValue ) );
}
Example #10
0
	void Pipe::updatePhysicData(float, RenderWindow& app)
    {
		setActivity(app);

		if(_isActive && _monster != nullptr)
		{
			if(_monsterExitDuration.getElapsedTime().asMilliseconds() >= MONSTER_EXIT_TIME)
			{
				switch(_direction)
				{
				case TO_TOP:
                    _monster->addNewMonsterOccurrence(
						Vector2f(_position.x + BLOCK_WIDTH / 2, _position.y),
						Vector2f(0, MonsterConstants::MONSTER_EXIT_PIPE_SPEED_Y), 
						MonsterOccurrence::GET_OUT_FROM_PIPE, 
						MonsterOccurrence::LEFT_SIDE);
					break;

				case TO_BOTTOM:
					 _monster->addNewMonsterOccurrence(
						 Vector2f(_position.x + BLOCK_WIDTH / 2, _position.y),
						 Vector2f(0, -MonsterConstants::MONSTER_EXIT_PIPE_SPEED_Y), 
						 MonsterOccurrence::GET_OUT_FROM_PIPE, 
						 MonsterOccurrence::LEFT_SIDE);
					break;

				case TO_LEFT:
					_monster->addNewMonsterOccurrence(
						Vector2f(_position.x + BLOCK_WIDTH / 2, _position.y),
						Vector2f(-MonsterConstants::MONSTER_EXIT_PIPE_SPEED_Y, 0),
						MonsterOccurrence::GET_OUT_FROM_PIPE,
						MonsterOccurrence::LEFT_SIDE);
					break;

				case TO_RIGHT:
					_monster->addNewMonsterOccurrence(
						Vector2f(_position.x + BLOCK_WIDTH / 2, _position.y),
						Vector2f(MonsterConstants::MONSTER_EXIT_PIPE_SPEED_Y, 0),
						MonsterOccurrence::GET_OUT_FROM_PIPE,
						MonsterOccurrence::RIGHT_SIDE);
					break;

				default:
					break;
				}
				
				//occ_m->tps_sortie_tuyau = occ_m->type_monstre->tps_sortie_tuyau;
				_monsterExitDuration.restart();
			}
		}
    }
RosterAvatarFrame::RosterAvatarFrame(QWidget *parent)
	: QFrame(parent)
	, statusMessage_("")
{
	ui_.setupUi(this);
	layout()->setMargin(PsiOptions::instance()->getOption("options.ui.contactlist.roster-avatar-frame.avatar.margin").toInt());
	layout()->setSpacing(0);
	setMoodIcon("mood/");
	setActivityIcon("activities/other");
	setFont();

	connect(ui_.le_status_text, SIGNAL(returnPressed()), this, SLOT(statusMessageReturnPressed()));
	connect(ui_.tb_mood, SIGNAL(pressed()), this, SIGNAL(setMood()));
	connect(ui_.tb_activity, SIGNAL(pressed()), this, SIGNAL(setActivity()));
	connect(PsiOptions::instance(), SIGNAL(optionChanged(QString)),this, SLOT(optionChanged(QString)));
}
Example #12
0
bool Mops_Rec::configureHook(){
  // Set component activitiy 
  if(setActivity(new RTT::Activity(ORO_SCHED_RT, 
				   _priority, 
				   0, 
				   _cpu, 
				   0, 
				   getName())) == false){
    if(_verbose)
      std::cout << "Unable to set activity!" << std::endl;
    return false;
  }
  
  connectToMOPS();
  if(_verbose)
    std::cout << "Mops_Rec configured !" <<std::endl;
  return true;
}
void InstrumentWindowMaskTab::selectTool(Activity tool)
{
  switch(tool)
  {
  case Move: m_move->setChecked(true);
    break;
  case Select: m_pointer->setChecked(true);
    break;
  case DrawEllipse: m_ellipse->setChecked(true);
    break;
  case DrawRectangle: m_rectangle->setChecked(true);
    break;
  case DrawEllipticalRing: m_ring_ellipse->setChecked(true);
    break;
  case DrawRectangularRing: m_ring_rectangle->setChecked(true);
    break;
  default: throw std::invalid_argument("Invalid tool type.");
  }
  setActivity();
}
Example #14
0
void GillespieProcess::fire()
{
    Real velocity( getk() * N_A );
    velocity *= getSuperSystem()->getSize();

    for( VariableReferenceVector::const_iterator
                 s( theVariableReferenceVector.begin() );
             s != theZeroVariableReferenceIterator; ++s )
    {
        VariableReference aVariableReference( *s );
        Integer aCoefficient( aVariableReference.getCoefficient() );
        do
        {
            ++aCoefficient;
            velocity *= aVariableReference.getVariable()->getMolarConc();
        }
        while( aCoefficient != 0 );
    }

    setActivity( velocity );
}
InstrumentWindowMaskTab::InstrumentWindowMaskTab(InstrumentWindow* instrWindow):
InstrumentWindowTab(instrWindow),
m_activity(Select),
m_hasMaskToApply(false),
m_userEditing(true)
{

  // main layout
  QVBoxLayout* layout=new QVBoxLayout(this);

  m_activeTool = new QLabel(this);
  layout->addWidget(m_activeTool);

  // Create the tool buttons

  m_move = new QPushButton();
  m_move->setCheckable(true);
  m_move->setAutoExclusive(true);
  m_move->setIcon(QIcon(":/PickTools/zoom.png"));
  m_move->setToolTip("Move the instrument (Ctrl+Alt+M)");
  m_move->setShortcut(QKeySequence("Ctrl+Alt+M"));

  m_pointer = new QPushButton();
  m_pointer->setCheckable(true);
  m_pointer->setAutoExclusive(true);
  m_pointer->setIcon(QIcon(":/MaskTools/selection-edit.png"));
  m_pointer->setToolTip("Select and edit shapes (Ctrl+Alt+P)");
  m_pointer->setShortcut(QKeySequence("Ctrl+Alt+P"));

  m_ellipse = new QPushButton();
  m_ellipse->setCheckable(true);
  m_ellipse->setAutoExclusive(true);
  m_ellipse->setIcon(QIcon(":/MaskTools/selection-circle.png"));
  m_ellipse->setToolTip("Draw an ellipse (Ctrl+Alt+E)");
  m_ellipse->setShortcut(QKeySequence("Ctrl+Alt+E"));

  m_rectangle = new QPushButton();
  m_rectangle->setCheckable(true);
  m_rectangle->setAutoExclusive(true);
  m_rectangle->setIcon(QIcon(":/MaskTools/selection-box.png"));
  m_rectangle->setToolTip("Draw a rectangle (Ctrl+Alt+R)");
  m_rectangle->setShortcut(QKeySequence("Ctrl+Alt+R"));

  m_ring_ellipse = new QPushButton();
  m_ring_ellipse->setCheckable(true);
  m_ring_ellipse->setAutoExclusive(true);
  m_ring_ellipse->setIcon(QIcon(":/MaskTools/selection-circle-ring.png"));
  m_ring_ellipse->setToolTip("Draw an elliptical ring (Shift+Alt+E)");
  m_ring_ellipse->setShortcut(QKeySequence("Shift+Alt+E"));

  m_ring_rectangle = new QPushButton();
  m_ring_rectangle->setCheckable(true);
  m_ring_rectangle->setAutoExclusive(true);
  m_ring_rectangle->setIcon(QIcon(":/MaskTools/selection-box-ring.png"));
  m_ring_rectangle->setToolTip("Draw a rectangular ring (Shift+Alt+R)");
  m_ring_rectangle->setShortcut(QKeySequence("Shift+Alt+R"));

  QHBoxLayout* toolBox = new QHBoxLayout();
  toolBox->addWidget(m_move);
  toolBox->addWidget(m_pointer);
  toolBox->addWidget(m_ellipse);
  toolBox->addWidget(m_rectangle);
  toolBox->addWidget(m_ring_ellipse);
  toolBox->addWidget(m_ring_rectangle);
  toolBox->addStretch();
  toolBox->setSpacing(2);
  toolBox->setMargin(0);

  connect(m_move,SIGNAL(clicked()),this,SLOT(setActivity()));
  connect(m_pointer,SIGNAL(clicked()),this,SLOT(setActivity()));
  connect(m_ellipse,SIGNAL(clicked()),this,SLOT(setActivity()));
  connect(m_rectangle,SIGNAL(clicked()),this,SLOT(setActivity()));
  connect(m_ring_ellipse,SIGNAL(clicked()),this,SLOT(setActivity()));
  connect(m_ring_rectangle,SIGNAL(clicked()),this,SLOT(setActivity()));
  m_move->setChecked(true);
  QFrame* toolGroup = new QFrame();
  toolGroup->setLayout(toolBox);

  layout->addWidget(toolGroup);

  // create mask/group switch
  m_masking_on = new QRadioButton("Mask");
  m_grouping_on = new QRadioButton("Group");
  m_masking_on->setChecked(true);
  connect(m_masking_on,SIGNAL(toggled(bool)),this,SLOT(toggleMaskGroup(bool)));
  QHBoxLayout* radioLayout = new QHBoxLayout();
  radioLayout->addWidget(m_masking_on);
  radioLayout->addWidget(m_grouping_on);
  radioLayout->setMargin(0);
  QWidget* radioGroup = new QWidget();
  radioGroup->setLayout(radioLayout);

  layout->addWidget(radioGroup);

  // Create property browser

  /* Create property managers: they create, own properties, get and set values  */

  m_groupManager = new QtGroupPropertyManager(this);
  m_doubleManager = new QtDoublePropertyManager(this);
  connect(m_doubleManager,SIGNAL(propertyChanged(QtProperty*)),this,SLOT(doubleChanged(QtProperty*)));

  /* Create editors and assign them to the managers */

  DoubleEditorFactory *doubleEditorFactory = new DoubleEditorFactory(this);

  m_browser = new QtTreePropertyBrowser();
  m_browser->setFactoryForManager(m_doubleManager, doubleEditorFactory);
  
  layout->addWidget(m_browser);

  // Algorithm buttons

  m_apply = new QPushButton("Apply to Data");
  m_apply->setToolTip("Apply current mask to the data workspace. Cannot be reverted.");
  connect(m_apply,SIGNAL(clicked()),this,SLOT(applyMask()));

  m_apply_to_view = new QPushButton("Apply to View");
  m_apply_to_view->setToolTip("Apply current mask to the view.");
  connect(m_apply_to_view,SIGNAL(clicked()),this,SLOT(applyMaskToView()));

  m_clear_all = new QPushButton("Clear All");
  m_clear_all->setToolTip("Clear all masking that have not been applied to the data.");
  connect(m_clear_all,SIGNAL(clicked()),this,SLOT(clearMask()));


  m_save_as_workspace_exclude = new QAction("As Mask to workspace",this);
  m_save_as_workspace_exclude->setToolTip("Save current mask to mask workspace.");
  connect(m_save_as_workspace_exclude,SIGNAL(activated()),this,SLOT(saveMaskToWorkspace()));

  m_save_as_workspace_include = new QAction("As ROI to workspace",this);
  m_save_as_workspace_include->setToolTip("Save current mask as ROI to mask workspace.");
  connect(m_save_as_workspace_include,SIGNAL(activated()),this,SLOT(saveInvertedMaskToWorkspace()));

  m_save_as_file_exclude = new QAction("As Mask to file",this);
  m_save_as_file_exclude->setToolTip("Save current mask to mask file.");
  connect(m_save_as_file_exclude,SIGNAL(activated()),this,SLOT(saveMaskToFile()));

  m_save_as_file_include = new QAction("As ROI to file",this);
  m_save_as_file_include->setToolTip("Save current mask as ROI to mask file.");
  connect(m_save_as_file_include,SIGNAL(activated()),this,SLOT(saveInvertedMaskToFile()));

  m_save_as_cal_file_exclude = new QAction("As Mask to cal file",this);
  m_save_as_cal_file_exclude->setToolTip("Save current mask to cal file.");
  connect(m_save_as_cal_file_exclude,SIGNAL(activated()),this,SLOT(saveMaskToCalFile()));

  m_save_as_cal_file_include = new QAction("As ROI to cal file",this);
  m_save_as_cal_file_include->setToolTip("Save current mask as ROI to cal file.");
  connect(m_save_as_cal_file_include,SIGNAL(activated()),this,SLOT(saveInvertedMaskToCalFile()));

  m_save_as_table_xrange_exclude = new QAction("As Mask to table", this);
  m_save_as_table_xrange_exclude->setToolTip("Save current mask to a table workspace with x-range. "
                                             "The name of output table workspace is 'MaskBinTable'. "
                                             "If the output table workspace has alrady exist, then "
                                             "the newly masked detectors will be added to output workspace.");
  connect(m_save_as_table_xrange_exclude, SIGNAL(activated()), this, SLOT(saveMaskToTable()));

  m_save_group_file_include = new QAction("As include group to file",this);
  m_save_group_file_include->setToolTip("Save current mask as include group to a file.");
  connect(m_save_group_file_include,SIGNAL(activated()),this,SLOT(saveIncludeGroupToFile()));

  m_save_group_file_exclude = new QAction("As exclude group to file",this);
  m_save_group_file_exclude->setToolTip("Save current mask as exclude group to a file.");
  connect(m_save_group_file_exclude,SIGNAL(activated()),this,SLOT(saveExcludeGroupToFile()));

  m_extract_to_workspace = new QAction("Extract detectors to workspace",this);
  m_extract_to_workspace->setToolTip("Extract detectors to workspace.");
  connect(m_extract_to_workspace,SIGNAL(activated()),this,SLOT(extractDetsToWorkspace()));

  m_sum_to_workspace = new QAction("Sum detectors to workspace",this);
  m_sum_to_workspace->setToolTip("Sum detectors to workspace.");
  connect(m_sum_to_workspace,SIGNAL(activated()),this,SLOT(sumDetsToWorkspace()));


  // Save button and its menus
  m_saveButton = new QPushButton("Apply and Save");
  m_saveButton->setToolTip("Save current masking/grouping to a file or a workspace.");

  m_saveMask = new QMenu(this);
  m_saveMask->addAction(m_save_as_workspace_include);
  m_saveMask->addAction(m_save_as_workspace_exclude);
  m_saveMask->addSeparator();
  m_saveMask->addAction(m_save_as_file_include);
  m_saveMask->addAction(m_save_as_file_exclude);
  m_saveMask->addSeparator();
  m_saveMask->addAction(m_save_as_cal_file_include);
  m_saveMask->addAction(m_save_as_cal_file_exclude);
  m_saveMask->addSeparator();
  m_saveMask->addAction(m_save_as_table_xrange_exclude);
  connect(m_saveMask,SIGNAL(hovered(QAction*)),this,SLOT(showSaveMenuTooltip(QAction*)));

  m_saveButton->setMenu(m_saveMask);

  m_saveGroup = new QMenu(this);
  m_saveGroup->addAction(m_extract_to_workspace);
  m_saveGroup->addAction(m_sum_to_workspace);
  m_saveGroup->addSeparator();
  m_saveGroup->addAction(m_save_group_file_include);
  m_saveGroup->addAction(m_save_group_file_exclude);
  connect(m_saveGroup,SIGNAL(hovered(QAction*)),this,SLOT(showSaveMenuTooltip(QAction*)));

  QGroupBox *box = new QGroupBox("View");
  QGridLayout* buttons = new QGridLayout();
  buttons->addWidget(m_apply_to_view,0,0,1,2);
  buttons->addWidget(m_saveButton,1,0);
  buttons->addWidget(m_clear_all,1,1);

  box->setLayout(buttons);
  layout->addWidget(box);

  box = new QGroupBox("Workspace");
  buttons = new QGridLayout();
  buttons->addWidget(m_apply,0,0);
  box->setLayout(buttons);
  layout->addWidget(box);

}
Example #16
0
/*------------------------------------------------------------------------------------
----------------------------switchActivity--------------------------------------------
------------------------------------------------------------------------------------*/
void MainMenu::switchActivity()					//switch the activity of the main menu
{

	setActivity(!isActive);

}
Example #17
0
void InstrumentWindowMaskTab::showEvent (QShowEvent *)
{
  setActivity();
  m_instrumentDisplay->setMouseTracking(true);
}
Example #18
0
InstrumentWindowMaskTab::InstrumentWindowMaskTab(InstrumentWindow* instrWindow):
QFrame(instrWindow),
m_instrumentWindow(instrWindow),
m_activity(Select),
m_userEditing(true)
{
  m_instrumentDisplay = m_instrumentWindow->getInstrumentDisplay();

  // main layout
  QVBoxLayout* layout=new QVBoxLayout(this);

  // Create the tool buttons

  m_move = new QPushButton();
  m_move->setCheckable(true);
  m_move->setAutoExclusive(true);
  m_move->setIcon(QIcon(":/PickTools/selection-tube.png"));
  m_move->setToolTip("Move the instrument");

  m_pointer = new QPushButton();
  m_pointer->setCheckable(true);
  m_pointer->setAutoExclusive(true);
  m_pointer->setIcon(QIcon(":/MaskTools/selection-pointer.png"));
  m_pointer->setToolTip("Select and edit shapes");

  m_ellipse = new QPushButton();
  m_ellipse->setCheckable(true);
  m_ellipse->setAutoExclusive(true);
  m_ellipse->setIcon(QIcon(":/MaskTools/selection-circle.png"));
  m_ellipse->setToolTip("Draw an ellipse");

  m_rectangle = new QPushButton();
  m_rectangle->setCheckable(true);
  m_rectangle->setAutoExclusive(true);
  m_rectangle->setIcon(QIcon(":/MaskTools/selection-box.png"));
  m_rectangle->setToolTip("Draw a rectangle");

  m_ring_ellipse = new QPushButton();
  m_ring_ellipse->setCheckable(true);
  m_ring_ellipse->setAutoExclusive(true);
  m_ring_ellipse->setIcon(QIcon(":/MaskTools/selection-circle.png"));
  m_ring_ellipse->setToolTip("Draw an elliptical ring");

  m_ring_rectangle = new QPushButton();
  m_ring_rectangle->setCheckable(true);
  m_ring_rectangle->setAutoExclusive(true);
  m_ring_rectangle->setIcon(QIcon(":/MaskTools/selection-box.png"));
  m_ring_rectangle->setToolTip("Draw a rectangular ring ");

  QHBoxLayout* toolBox = new QHBoxLayout();
  toolBox->addWidget(m_move);
  toolBox->addWidget(m_pointer);
  toolBox->addWidget(m_ellipse);
  toolBox->addWidget(m_rectangle);
  toolBox->addWidget(m_ring_ellipse);
  toolBox->addWidget(m_ring_rectangle);
  toolBox->addStretch();
  toolBox->setSpacing(2);

  connect(m_move,SIGNAL(clicked()),this,SLOT(setActivity()));
  connect(m_pointer,SIGNAL(clicked()),this,SLOT(setActivity()));
  connect(m_ellipse,SIGNAL(clicked()),this,SLOT(setActivity()));
  connect(m_rectangle,SIGNAL(clicked()),this,SLOT(setActivity()));
  connect(m_ring_ellipse,SIGNAL(clicked()),this,SLOT(setActivity()));
  connect(m_ring_rectangle,SIGNAL(clicked()),this,SLOT(setActivity()));
  m_move->setChecked(true);

  layout->addLayout(toolBox);

  // Create property browser

    /* Create property managers: they create, own properties, get and set values  */

  m_groupManager = new QtGroupPropertyManager(this);
  m_doubleManager = new QtDoublePropertyManager(this);
  connect(m_doubleManager,SIGNAL(propertyChanged(QtProperty*)),this,SLOT(doubleChanged(QtProperty*)));

     /* Create editors and assign them to the managers */

  DoubleEditorFactory *doubleEditorFactory = new DoubleEditorFactory(this);

  m_browser = new QtTreePropertyBrowser();
  m_browser->setFactoryForManager(m_doubleManager, doubleEditorFactory);
  
  layout->addWidget(m_browser);

  // Algorithm buttons

  m_apply = new QPushButton("Apply");
  connect(m_apply,SIGNAL(clicked()),this,SLOT(applyMask()));

  m_clear_all = new QPushButton("Clear All");
  connect(m_clear_all,SIGNAL(clicked()),this,SLOT(clearMask()));

  m_save_as_workspace_include = new QAction("Save As Workspace (include)",this);
  connect(m_save_as_workspace_include,SIGNAL(activated()),this,SLOT(saveMaskToWorkspaceInclude()));

  m_save_as_workspace_exclude = new QAction("Save As Workspace (exclude)",this);
  connect(m_save_as_workspace_exclude,SIGNAL(activated()),this,SLOT(saveMaskToWorkspaceExclude()));

  m_save_as_file_include = new QAction("Save As File (include)",this);
  connect(m_save_as_file_include,SIGNAL(activated()),this,SLOT(saveMaskToFileInclude()));

  m_save_as_file_exclude = new QAction("Save As File (exclude)",this);
  connect(m_save_as_file_exclude,SIGNAL(activated()),this,SLOT(saveMaskToFileExclude()));

  QPushButton* saveButton = new QPushButton("Save");
  QMenu* saveMenu = new QMenu(this);
  saveMenu->addAction(m_save_as_workspace_include);
  saveMenu->addAction(m_save_as_workspace_exclude);
  saveMenu->addAction(m_save_as_file_include);
  saveMenu->addAction(m_save_as_file_exclude);
  saveButton->setMenu(saveMenu);

  QGridLayout* buttons = new QGridLayout();
  buttons->addWidget(m_apply,0,0);
  buttons->addWidget(m_clear_all,0,1);
  buttons->addWidget(saveButton,1,0,1,2);
  
  layout->addLayout(buttons);
}
 virtual void fire()
 { 
     setActivity( theVirtualMachine.execute( *theCompiledCode ) );
 }
void CharacterController::skipActivity()
{
	setActivity(nullptr);
}