#include "ortoolpersistent_tool.h"
#include "ortoolpersistent_data.h"
#define ORTOOLPERSISTENT__CLASS ORTOOLPERSISTENT__CLASSNAME
#define ORTOOLPERSISTENT__LABEL "Persistent"
#define ORTOOLPERSISTENT__DESC "OR - Persistent Tool Description"
ORTOOLPERSISTENT__LABEL,
ORTOOLPERSISTENT__DESC,
bool ORToolPersistent::FBCreate()
{
StartSize[0] = 175;
StartSize[1] = 95;
UICreate ();
UIConfigure ();
UIReset ();
OnShow.Add(
this, (
FBCallback) &ORToolPersistent::EventToolShow );
OnIdle.Add(
this, (
FBCallback) &ORToolPersistent::EventToolIdle );
mApplication.OnFileExit.Add (
this, (
FBCallback) &ORToolPersistent::EventOnFileExit );
mApplication.OnFileNew.Add (
this, (
FBCallback) &ORToolPersistent::EventOnFileNew );
mApplication.OnFileNewCompleted.Add (
this, (
FBCallback) &ORToolPersistent::EventOnFileNewCompleted );
mApplication.OnFileOpen.Add (
this, (
FBCallback) &ORToolPersistent::EventOnFileOpen );
mApplication.OnFileOpenCompleted.Add(
this, (
FBCallback) &ORToolPersistent::EventOnFileOpenCompleted );
mApplication.OnFileSave.Add (
this, (
FBCallback) &ORToolPersistent::EventOnFileSave );
mApplication.OnFileSaveCompleted.Add(
this, (
FBCallback) &ORToolPersistent::EventOnFileSaveCompleted );
return true;
}
void ORToolPersistent::FBDestroy()
{
OnShow.Remove(
this, (
FBCallback) &ORToolPersistent::EventToolShow );
OnIdle.Remove(
this, (
FBCallback) &ORToolPersistent::EventToolIdle );
mApplication.OnFileExit.Remove (
this, (
FBCallback) &ORToolPersistent::EventOnFileExit );
mApplication.OnFileNew.Remove (
this, (
FBCallback) &ORToolPersistent::EventOnFileNew );
mApplication.OnFileNewCompleted.Remove (
this, (
FBCallback) &ORToolPersistent::EventOnFileNewCompleted );
mApplication.OnFileOpen.Remove (
this, (
FBCallback) &ORToolPersistent::EventOnFileOpen );
mApplication.OnFileOpenCompleted.Remove (
this, (
FBCallback) &ORToolPersistent::EventOnFileOpenCompleted );
mApplication.OnFileSave.Remove (
this, (
FBCallback) &ORToolPersistent::EventOnFileSave );
mApplication.OnFileSaveCompleted.Remove (
this, (
FBCallback) &ORToolPersistent::EventOnFileSaveCompleted );
}
void ORToolPersistent::UICreate()
{
int lS = 4;
int lW = 100;
int lH = 18;
AddRegion( "LabelDirections", "LabelDirections",
AddRegion( "PersistentText", "PersistentText",
SetControl( "LabelDirections", mLabelDirections );
SetControl( "PersistentText", mPersistentText );
}
void ORToolPersistent::UIConfigure()
{
mLabelDirections.Caption = "Create persistent data for the\n"
"tool by entering some text:";
mPersistentText.Text = GetPersistentData();
mPersistentText.OnChange.Add (
this, (
FBCallback) &ORToolPersistent::EventTextChanged );
}
void ORToolPersistent::UIReset()
{
}
void ORToolPersistent::UIRefresh()
{
}
void ORToolPersistent::EventTextChanged(
HISender pSender,
HKEvent pEvent )
{
SetPersistentData( (FBString)mPersistentText.Text );
}
{
}
{
}
void ORToolPersistent::EventOnFileNewCompleted(
HISender pSender,
HKEvent pEvent )
{
}
{
}
void ORToolPersistent::EventOnFileOpenCompleted(
HISender pSender,
HKEvent pEvent )
{
}
{
}
void ORToolPersistent::EventOnFileSaveCompleted(
HISender pSender,
HKEvent pEvent )
{
}
{
FBEventShow lEvent( pEvent );
if( lEvent.Shown )
{
UIReset();
}
else
{
}
}
{
UIRefresh();
}
ORToolPersistentData* ORToolPersistent::FindPersistentData( bool pCreate )
{
FBScene* lScene = mSystem.Scene;
int lIdx = 0;
for( lIdx = 0; lIdx < lScene->UserObjects.GetCount(); ++lIdx ) {
FBUserObject* lObject = lScene->UserObjects[lIdx];
if( lObject->Is( ORToolPersistentData::TypeInfo )) {
return (ORToolPersistentData*)lObject;
}
}
ORToolPersistentData* lData = 0;
if( pCreate ) {
lData = new ORToolPersistentData( "ORToolPersistentData" );
lData->mText = "Default";
}
return lData;
}
void ORToolPersistent::DeletePersistentData()
{
ORToolPersistentData* lData = FindPersistentData( false );
if( lData ) {
lData->FBDelete();
}
}
FBString ORToolPersistent::GetPersistentData()
{
return FindPersistentData( true )->mText;
}
void ORToolPersistent::SetPersistentData( FBString pText )
{
FindPersistentData( true )->mText = pText;
}