ENH: cpp renamed cxx. Copy of data to and from the GUI is working
This commit is contained in:
parent
ad0019a740
commit
b0befbde1a
|
@ -0,0 +1,133 @@
|
|||
// generated by Fast Light User Interface Designer (fluid) version 1.0009
|
||||
|
||||
#include "CMakeSetupGUI.h"
|
||||
|
||||
inline void CMakeSetupGUI::cb_sourcePathTextInput_i(Fl_Input*, void*) {
|
||||
SetSourcePath( sourcePathTextInput->value() );
|
||||
}
|
||||
void CMakeSetupGUI::cb_sourcePathTextInput(Fl_Input* o, void* v) {
|
||||
((CMakeSetupGUI*)(o->parent()->user_data()))->cb_sourcePathTextInput_i(o,v);
|
||||
}
|
||||
|
||||
inline void CMakeSetupGUI::cb_Browse_i(Fl_Button*, void*) {
|
||||
BrowseForSourcePath();
|
||||
}
|
||||
void CMakeSetupGUI::cb_Browse(Fl_Button* o, void* v) {
|
||||
((CMakeSetupGUI*)(o->parent()->user_data()))->cb_Browse_i(o,v);
|
||||
}
|
||||
|
||||
inline void CMakeSetupGUI::cb_binaryPathTextInput_i(Fl_Input*, void*) {
|
||||
SetBinaryPath( binaryPathTextInput->value() );
|
||||
}
|
||||
void CMakeSetupGUI::cb_binaryPathTextInput(Fl_Input* o, void* v) {
|
||||
((CMakeSetupGUI*)(o->parent()->user_data()))->cb_binaryPathTextInput_i(o,v);
|
||||
}
|
||||
|
||||
inline void CMakeSetupGUI::cb_Browse1_i(Fl_Button*, void*) {
|
||||
BrowseForBinaryPath();
|
||||
}
|
||||
void CMakeSetupGUI::cb_Browse1(Fl_Button* o, void* v) {
|
||||
((CMakeSetupGUI*)(o->parent()->user_data()))->cb_Browse1_i(o,v);
|
||||
}
|
||||
|
||||
inline void CMakeSetupGUI::cb_Close_i(Fl_Button*, void*) {
|
||||
Close();
|
||||
}
|
||||
void CMakeSetupGUI::cb_Close(Fl_Button* o, void* v) {
|
||||
((CMakeSetupGUI*)(o->parent()->user_data()))->cb_Close_i(o,v);
|
||||
}
|
||||
|
||||
inline void CMakeSetupGUI::cb_Build_i(Fl_Button*, void*) {
|
||||
BuildProjectFiles();
|
||||
}
|
||||
void CMakeSetupGUI::cb_Build(Fl_Button* o, void* v) {
|
||||
((CMakeSetupGUI*)(o->parent()->user_data()))->cb_Build_i(o,v);
|
||||
}
|
||||
|
||||
CMakeSetupGUI::CMakeSetupGUI() {
|
||||
Fl_Window* w;
|
||||
{ Fl_Window* o = dialogWindow = new Fl_Window(563, 363, "CMakeSetupDialog");
|
||||
w = o;
|
||||
o->user_data((void*)(this));
|
||||
{ Fl_Input* o = sourcePathTextInput = new Fl_Input(219, 15, 200, 20, "Where is the source code: ");
|
||||
o->labelsize(11);
|
||||
o->textsize(11);
|
||||
o->callback((Fl_Callback*)cb_sourcePathTextInput);
|
||||
o->when(FL_WHEN_ENTER_KEY);
|
||||
}
|
||||
{ Fl_Button* o = new Fl_Button(426, 14, 65, 22, "Browse...");
|
||||
o->shortcut(0x80073);
|
||||
o->labelsize(11);
|
||||
o->callback((Fl_Callback*)cb_Browse);
|
||||
}
|
||||
{ Fl_Input* o = binaryPathTextInput = new Fl_Input(219, 50, 200, 20, "Where do you want to build the binaries: ");
|
||||
o->labelsize(11);
|
||||
o->textsize(11);
|
||||
o->callback((Fl_Callback*)cb_binaryPathTextInput);
|
||||
o->when(FL_WHEN_ENTER_KEY);
|
||||
}
|
||||
{ Fl_Button* o = new Fl_Button(426, 50, 65, 22, "Browse...");
|
||||
o->shortcut(0x80062);
|
||||
o->labelsize(11);
|
||||
o->callback((Fl_Callback*)cb_Browse1);
|
||||
}
|
||||
{ Fl_Button* o = new Fl_Button(345, 331, 77, 23, "Close");
|
||||
o->shortcut(0x80071);
|
||||
o->labelsize(11);
|
||||
o->callback((Fl_Callback*)cb_Close);
|
||||
}
|
||||
{ Fl_Button* o = new Fl_Button(123, 332, 101, 23, "Build Project Files");
|
||||
o->shortcut(0x8006d);
|
||||
o->labelsize(11);
|
||||
o->callback((Fl_Callback*)cb_Build);
|
||||
}
|
||||
{ Fl_Group* o = new Fl_Group(25, 80, 515, 222);
|
||||
o->box(FL_ENGRAVED_BOX);
|
||||
o->labelsize(11);
|
||||
o->align(FL_ALIGN_CENTER);
|
||||
{ Fl_Scroll* o = cacheValuesScroll = new Fl_Scroll(40, 98, 485, 190, "Cache Values");
|
||||
o->type(7);
|
||||
o->box(FL_DOWN_FRAME);
|
||||
o->labelsize(11);
|
||||
o->align(FL_ALIGN_TOP_LEFT);
|
||||
o->when(FL_WHEN_CHANGED);
|
||||
{ Fl_Pack* o = propertyListPack = new Fl_Pack(40, 99, 485, 185);
|
||||
o->end();
|
||||
Fl_Group::current()->resizable(o);
|
||||
}
|
||||
o->end();
|
||||
Fl_Group::current()->resizable(o);
|
||||
}
|
||||
o->end();
|
||||
Fl_Group::current()->resizable(o);
|
||||
}
|
||||
{ Fl_Box* o = new Fl_Box(141, 305, 275, 25, "Right click on cache entries for additional options");
|
||||
o->labelsize(11);
|
||||
}
|
||||
o->end();
|
||||
}
|
||||
}
|
||||
|
||||
CMakeSetupGUI::~CMakeSetupGUI() {
|
||||
}
|
||||
|
||||
void CMakeSetupGUI::Close(void) {
|
||||
}
|
||||
|
||||
void CMakeSetupGUI::BuildProjectFiles(void) {
|
||||
}
|
||||
|
||||
void CMakeSetupGUI::BrowseForSourcePath(void) {
|
||||
}
|
||||
|
||||
void CMakeSetupGUI::BrowseForBinaryPath(void) {
|
||||
}
|
||||
|
||||
void CMakeSetupGUI::Show(void) {
|
||||
}
|
||||
|
||||
void CMakeSetupGUI::SetBinaryPath(const char *) {
|
||||
}
|
||||
|
||||
void CMakeSetupGUI::SetSourcePath(const char *) {
|
||||
}
|
|
@ -0,0 +1,343 @@
|
|||
|
||||
#include "CMakeSetupGUIImplementation.h"
|
||||
#include "Fl/fl_file_chooser.H"
|
||||
#include "Fl/filename.H"
|
||||
#include "Fl/fl_ask.H"
|
||||
#include "cstring"
|
||||
#include "../cmCacheManager.h"
|
||||
#include "../cmMakefile.h"
|
||||
#include <iostream>
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
CMakeSetupGUIImplementation
|
||||
::CMakeSetupGUIImplementation()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
CMakeSetupGUIImplementation
|
||||
::~CMakeSetupGUIImplementation()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Show the graphic interface
|
||||
*/
|
||||
void
|
||||
CMakeSetupGUIImplementation
|
||||
::Show( void )
|
||||
{
|
||||
dialogWindow->show();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Hide the graphic interface
|
||||
*/
|
||||
void
|
||||
CMakeSetupGUIImplementation
|
||||
::Close( void )
|
||||
{
|
||||
dialogWindow->hide();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Browse for the path to the sources
|
||||
*/
|
||||
void
|
||||
CMakeSetupGUIImplementation
|
||||
::BrowseForSourcePath( void )
|
||||
{
|
||||
const char * path =
|
||||
fl_file_chooser(
|
||||
"Path to Sources",
|
||||
"",
|
||||
sourcePathTextInput->value() );
|
||||
|
||||
if( !path )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
SetSourcePath( path );
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Browse for the path to the binaries
|
||||
*/
|
||||
void
|
||||
CMakeSetupGUIImplementation
|
||||
::BrowseForBinaryPath( void )
|
||||
{
|
||||
const char * path =
|
||||
fl_file_chooser(
|
||||
"Path to Binaries",
|
||||
"",
|
||||
binaryPathTextInput->value() );
|
||||
|
||||
if( !path )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
SetBinaryPath( path );
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Set the source path
|
||||
*/
|
||||
void
|
||||
CMakeSetupGUIImplementation
|
||||
::SetSourcePath( const char * path )
|
||||
{
|
||||
if( VerifySourcePath( path ) )
|
||||
{
|
||||
m_WhereSource = path;
|
||||
sourcePathTextInput->value( path );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Set the binary path
|
||||
*/
|
||||
void
|
||||
CMakeSetupGUIImplementation
|
||||
::SetBinaryPath( const char * path )
|
||||
{
|
||||
|
||||
if( VerifyBinaryPath( path ) )
|
||||
{
|
||||
m_WhereBuild = path;
|
||||
binaryPathTextInput->value( path );
|
||||
}
|
||||
|
||||
LoadCacheFromDiskToGUI();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Verify the path to binaries
|
||||
*/
|
||||
bool
|
||||
CMakeSetupGUIImplementation
|
||||
::VerifyBinaryPath( const char * path )
|
||||
{
|
||||
|
||||
if( !path || strlen(path)==0 )
|
||||
{
|
||||
fl_alert("Please select the path to the binaries");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if( !filename_isdir( path ) )
|
||||
{
|
||||
fl_alert("%s \n Doesn't exist or is not a directory",path);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Verify the path to sources
|
||||
*/
|
||||
bool
|
||||
CMakeSetupGUIImplementation
|
||||
::VerifySourcePath( const char * path )
|
||||
{
|
||||
|
||||
if( !path || strlen(path)==0 )
|
||||
{
|
||||
fl_alert("Please select the path to the sources");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if( !filename_isdir( path ) )
|
||||
{
|
||||
fl_alert("%s \n Doesn't exist or is not a directory",path);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Build the project files
|
||||
*/
|
||||
void
|
||||
CMakeSetupGUIImplementation
|
||||
::BuildProjectFiles( void )
|
||||
{
|
||||
|
||||
// Verify that source path is a valid directory
|
||||
if( !VerifySourcePath( sourcePathTextInput->value() ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Verify that binary path is a valid directory
|
||||
if( !VerifyBinaryPath( binaryPathTextInput->value() ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
SaveCacheFromGUI();
|
||||
|
||||
fl_message("Building project files ... please wait");
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Load Cache from disk to GUI
|
||||
*/
|
||||
void
|
||||
CMakeSetupGUIImplementation
|
||||
::LoadCacheFromDiskToGUI( void )
|
||||
{
|
||||
|
||||
|
||||
if( m_WhereBuild != "" )
|
||||
{
|
||||
cmCacheManager::GetInstance()->LoadCache( m_WhereBuild.c_str() );
|
||||
this->FillCacheGUIFromCacheManager();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Save Cache from disk to GUI
|
||||
*/
|
||||
void
|
||||
CMakeSetupGUIImplementation
|
||||
::SaveCacheFromGUI( void )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Fill Cache GUI from cache manager
|
||||
*/
|
||||
void
|
||||
CMakeSetupGUIImplementation
|
||||
::FillCacheGUIFromCacheManager( void )
|
||||
{
|
||||
|
||||
// Prepare to add rows to the scroll
|
||||
propertyListPack->begin();
|
||||
|
||||
const cmCacheManager::CacheEntryMap &cache =
|
||||
cmCacheManager::GetInstance()->GetCacheMap();
|
||||
for(cmCacheManager::CacheEntryMap::const_iterator i = cache.begin();
|
||||
i != cache.end(); ++i)
|
||||
{
|
||||
const char* key = i->first.c_str();
|
||||
const cmCacheManager::CacheEntry& value = i->second;
|
||||
|
||||
|
||||
switch(value.m_Type )
|
||||
{
|
||||
case cmCacheManager::BOOL:
|
||||
if(cmCacheManager::GetInstance()->IsOn(key))
|
||||
{
|
||||
m_CacheEntriesList.AddProperty(key,
|
||||
"ON",
|
||||
value.m_HelpString.c_str(),
|
||||
fltk::PropertyList::CHECKBOX,"");
|
||||
}
|
||||
else
|
||||
{
|
||||
m_CacheEntriesList.AddProperty(key,
|
||||
"OFF",
|
||||
value.m_HelpString.c_str(),
|
||||
fltk::PropertyList::CHECKBOX,"");
|
||||
}
|
||||
break;
|
||||
case cmCacheManager::PATH:
|
||||
m_CacheEntriesList.AddProperty(key,
|
||||
value.m_Value.c_str(),
|
||||
value.m_HelpString.c_str(),
|
||||
fltk::PropertyList::PATH,"");
|
||||
break;
|
||||
case cmCacheManager::FILEPATH:
|
||||
m_CacheEntriesList.AddProperty(key,
|
||||
value.m_Value.c_str(),
|
||||
value.m_HelpString.c_str(),
|
||||
fltk::PropertyList::FILE,"");
|
||||
break;
|
||||
case cmCacheManager::STRING:
|
||||
m_CacheEntriesList.AddProperty(key,
|
||||
value.m_Value.c_str(),
|
||||
value.m_HelpString.c_str(),
|
||||
fltk::PropertyList::EDIT,"");
|
||||
break;
|
||||
case cmCacheManager::INTERNAL:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
propertyListPack->end();
|
||||
propertyListPack->init_sizes();
|
||||
cacheValuesScroll->position( 0, 0 );
|
||||
|
||||
this->UpdateData(false);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* UpdateData
|
||||
*/
|
||||
void
|
||||
CMakeSetupGUIImplementation
|
||||
::UpdateData( bool option )
|
||||
{
|
||||
dialogWindow->redraw();
|
||||
Fl::check();
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
|
||||
#include "CMakeSetupGUIImplementation.h"
|
||||
#include "FL/Fl.h"
|
||||
#include "FL/fl_ask.H"
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
fl_message_font(FL_HELVETICA,11);
|
||||
|
||||
CMakeSetupGUIImplementation * gui
|
||||
= new CMakeSetupGUIImplementation;
|
||||
|
||||
gui->Show();
|
||||
gui->LoadCacheFromDiskToGUI();
|
||||
|
||||
Fl::run();
|
||||
|
||||
delete gui;
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
|
@ -0,0 +1,209 @@
|
|||
#include "FLTKPropertyItemRow.h"
|
||||
#include <Fl/Fl_Button.H>
|
||||
#include <Fl/Fl_Input.H>
|
||||
#include <Fl/Fl_Tile.H>
|
||||
#include <Fl/fl_ask.H>
|
||||
#include <Fl/fl_file_chooser.H>
|
||||
|
||||
namespace fltk {
|
||||
|
||||
PropertyItemRow::PropertyItemRow( PropertyItem * pItem )
|
||||
{
|
||||
|
||||
m_PropertyItem = pItem;
|
||||
m_ItemValue = new ItemValue;
|
||||
|
||||
const unsigned int nameWidth = 200;
|
||||
const unsigned int textWidth = 1400;
|
||||
const unsigned int checkWidth = textWidth;
|
||||
const unsigned int browseWidth = 20;
|
||||
const unsigned int firstColumn = 0;
|
||||
|
||||
const unsigned int secondColumn = nameWidth;
|
||||
|
||||
const unsigned int rowHeight = 20;
|
||||
const unsigned int rowSpacing = 20;
|
||||
|
||||
Fl_Tile * group = new Fl_Tile(0,0,nameWidth+textWidth,rowHeight,"");
|
||||
|
||||
group->parent()->size( nameWidth + textWidth , 100 );
|
||||
|
||||
Fl_Button * name = new
|
||||
Fl_Button( firstColumn, 0, nameWidth, rowHeight,
|
||||
pItem->m_propName.c_str() );
|
||||
name->align( FL_ALIGN_CLIP | FL_ALIGN_LEFT | FL_ALIGN_INSIDE );
|
||||
name->labelsize(11);
|
||||
name->box( FL_DOWN_BOX );
|
||||
name->callback( NameClickCallback, (void *)pItem );
|
||||
|
||||
switch( pItem->m_nItemType )
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
|
||||
name->size( secondColumn, rowHeight );
|
||||
|
||||
Fl_Input * input = new
|
||||
Fl_Input( secondColumn, 0, textWidth ,rowHeight ,"");
|
||||
input->value( pItem->m_curValue.c_str() );
|
||||
input->textsize(11);
|
||||
input->callback( InputTextCallback, (void *)pItem );
|
||||
input->when( FL_WHEN_CHANGED );
|
||||
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
|
||||
name->size( secondColumn, rowHeight );
|
||||
Fl_Button * browseButton = new
|
||||
Fl_Button( secondColumn, 0, browseWidth ,rowHeight ,"...");
|
||||
browseButton->labelsize(11);
|
||||
|
||||
Fl_Input * input = new
|
||||
Fl_Input( secondColumn+browseWidth, 0, textWidth ,rowHeight ,"");
|
||||
input->value( pItem->m_curValue.c_str() );
|
||||
input->textsize(11);
|
||||
|
||||
m_ItemValue->m_InputText = input;
|
||||
m_ItemValue->m_PropertyItem = pItem;
|
||||
|
||||
browseButton->callback( BrowsePathCallback, (void *)m_ItemValue );
|
||||
input->callback( InputTextCallback, pItem );
|
||||
input->when( FL_WHEN_CHANGED );
|
||||
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
Fl_Button * button = new
|
||||
Fl_Button( secondColumn, 0, checkWidth ,rowHeight ,"");
|
||||
button->align( FL_ALIGN_INSIDE | FL_ALIGN_LEFT );
|
||||
button->callback( CheckButtonCallback, (void *)pItem );
|
||||
|
||||
if( pItem->m_curValue == "ON" )
|
||||
{
|
||||
button->label(" ON ");
|
||||
button->value(1);
|
||||
}
|
||||
else if( pItem->m_curValue == "OFF" )
|
||||
{
|
||||
button->label(" OFF ");
|
||||
button->value(0);
|
||||
}
|
||||
button->type( FL_TOGGLE_BUTTON );
|
||||
button->labelsize(11);
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
|
||||
name->size( secondColumn, rowHeight );
|
||||
Fl_Button * browseButton = new
|
||||
Fl_Button( secondColumn, 0, browseWidth ,rowHeight ,"...");
|
||||
browseButton->labelsize(11);
|
||||
|
||||
Fl_Input * input = new
|
||||
Fl_Input( secondColumn+browseWidth, 0, textWidth ,rowHeight ,"");
|
||||
input->value( pItem->m_curValue.c_str() );
|
||||
input->textsize(11);
|
||||
|
||||
m_ItemValue->m_InputText = input;
|
||||
m_ItemValue->m_PropertyItem = pItem;
|
||||
|
||||
browseButton->callback( BrowsePathCallback, (void *)m_ItemValue );
|
||||
input->callback( InputTextCallback, pItem );
|
||||
input->when( FL_WHEN_CHANGED );
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
fl_alert("Unkown item type %d",pItem->m_nItemType);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
group->end();
|
||||
|
||||
}
|
||||
|
||||
|
||||
PropertyItemRow::~PropertyItemRow( )
|
||||
{
|
||||
delete m_ItemValue;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
PropertyItemRow::
|
||||
CheckButtonCallback( Fl_Widget * widget, void * data)
|
||||
{
|
||||
Fl_Button * button = (Fl_Button *)widget;
|
||||
PropertyItem * pItem = (PropertyItem *)data;
|
||||
|
||||
int value = button->value();
|
||||
|
||||
if( value )
|
||||
{
|
||||
button->label(" ON ");
|
||||
pItem->m_curValue = "ON";
|
||||
}
|
||||
else
|
||||
{
|
||||
button->label(" OFF ");
|
||||
pItem->m_curValue = "OFF";
|
||||
}
|
||||
button->redraw();
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
PropertyItemRow::
|
||||
NameClickCallback( Fl_Widget * widget, void * data)
|
||||
{
|
||||
PropertyItem * pItem = (PropertyItem *)data;
|
||||
fl_message( pItem->m_HelpString.c_str() );
|
||||
}
|
||||
|
||||
void
|
||||
PropertyItemRow::
|
||||
InputTextCallback( Fl_Widget * widget, void * data)
|
||||
{
|
||||
Fl_Input * input = (Fl_Input *)widget;
|
||||
PropertyItem * item = (PropertyItem *)data;
|
||||
|
||||
item->m_curValue = input->value();
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
PropertyItemRow::
|
||||
BrowsePathCallback( Fl_Widget * widget, void * data)
|
||||
{
|
||||
ItemValue * itemValue = (ItemValue *)data;
|
||||
Fl_Input * inputText = itemValue->m_InputText;
|
||||
PropertyItem * propertyItem = itemValue->m_PropertyItem;
|
||||
|
||||
const char * newpath =
|
||||
fl_file_chooser("Select a path","*", inputText->value() );
|
||||
|
||||
if( newpath )
|
||||
{
|
||||
propertyItem->m_curValue = newpath;
|
||||
inputText->value( newpath );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
} // end namespace fltk
|
|
@ -0,0 +1,201 @@
|
|||
// FLTKPropertyList.cxx : implementation file
|
||||
//
|
||||
|
||||
#include "FLTKPropertyList.h"
|
||||
#include "../cmCacheManager.h"
|
||||
#include "FLTKPropertyItemRow.h"
|
||||
#include "Fl/filename.H"
|
||||
#include "Fl/fl_file_chooser.H"
|
||||
#include "Fl/Fl_Color_Chooser.H"
|
||||
#include "Fl/fl_ask.H"
|
||||
#include "Fl/Fl_Button.H"
|
||||
#include <cstdio>
|
||||
|
||||
namespace fltk {
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// PropertyList
|
||||
|
||||
PropertyList::PropertyList()
|
||||
{
|
||||
m_Dirty = false;
|
||||
m_curSel = -1;
|
||||
}
|
||||
|
||||
PropertyList::~PropertyList()
|
||||
{
|
||||
for(std::set<PropertyItem*>::iterator i = m_PropertyItems.begin();
|
||||
i != m_PropertyItems.end(); ++i)
|
||||
{
|
||||
delete *i;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int PropertyList::AddItem(string txt)
|
||||
{
|
||||
int nIndex =0;// = AddString(txt);
|
||||
return nIndex;
|
||||
}
|
||||
|
||||
int PropertyList::AddPropItem(PropertyItem* pItem)
|
||||
{
|
||||
|
||||
int nIndex =0; //= AddString(_T(""));
|
||||
// SetItemDataPtr(nIndex,pItem);
|
||||
|
||||
new PropertyItemRow( pItem ); // GUI of the property row
|
||||
|
||||
m_PropertyItems.insert(pItem);
|
||||
|
||||
return nIndex;
|
||||
}
|
||||
|
||||
int PropertyList::AddProperty(const char* name,
|
||||
const char* value,
|
||||
const char* helpString,
|
||||
int type,
|
||||
const char* comboItems)
|
||||
{
|
||||
|
||||
PropertyItem* pItem = 0;
|
||||
for(int i =0; i < this->GetCount(); ++i)
|
||||
{
|
||||
PropertyItem* item = this->GetItem(i);
|
||||
if(item->m_propName == name)
|
||||
{
|
||||
pItem = item;
|
||||
if(pItem->m_curValue != value)
|
||||
{
|
||||
pItem->m_curValue = value;
|
||||
pItem->m_HelpString = helpString;
|
||||
m_Dirty = true;
|
||||
Invalidate();
|
||||
}
|
||||
return i;
|
||||
}
|
||||
}
|
||||
// if it is not found, then create a new one
|
||||
if(!pItem)
|
||||
{
|
||||
pItem = new PropertyItem(name, value, helpString, type, comboItems);
|
||||
}
|
||||
return this->AddPropItem(pItem);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void PropertyList::OnButton()
|
||||
{
|
||||
PropertyItem* pItem = (PropertyItem*) GetItemDataPtr(m_curSel);
|
||||
|
||||
//display the appropriate common dialog depending on what type
|
||||
//of chooser is associated with the property
|
||||
if (pItem->m_nItemType == PropertyList::COLOR)
|
||||
{
|
||||
unsigned char red = 0;
|
||||
unsigned char blue = 0;
|
||||
unsigned char green = 0;
|
||||
fl_color_chooser("Please pick a color",red,green,blue);
|
||||
char buffer[300];
|
||||
sprintf(buffer,"RGB(%d,%d,%d)",red,green,blue);
|
||||
pItem->m_curValue = buffer;
|
||||
m_Dirty = true;
|
||||
Invalidate();
|
||||
}
|
||||
else if (pItem->m_nItemType == PropertyList::FILE)
|
||||
{
|
||||
string currPath = pItem->m_curValue;
|
||||
|
||||
const char * SelectedFile
|
||||
= fl_file_chooser("Choose a file",
|
||||
"*",currPath.c_str() );
|
||||
|
||||
if( SelectedFile )
|
||||
{
|
||||
pItem->m_curValue = SelectedFile;
|
||||
m_Dirty = true;
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
else if (pItem->m_nItemType == PropertyList::PATH)
|
||||
{
|
||||
string currPath = pItem->m_curValue;
|
||||
string initialDir = currPath;
|
||||
|
||||
const char * SelectedFile
|
||||
= fl_file_chooser("Choose a directory",
|
||||
"*/",initialDir.c_str() );
|
||||
|
||||
if( SelectedFile && filename_isdir( SelectedFile ) )
|
||||
{
|
||||
pItem->m_curValue = SelectedFile;
|
||||
m_Dirty = true;
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
else if (pItem->m_nItemType == PropertyList::FONT)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void PropertyList::OnHelp()
|
||||
{
|
||||
if(m_curSel == -1 || this->GetCount() <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
PropertyItem* pItem = (PropertyItem*) GetItemDataPtr(m_curSel);
|
||||
fl_message(pItem->m_HelpString.c_str());
|
||||
}
|
||||
|
||||
|
||||
void PropertyList::RemoveAll()
|
||||
{
|
||||
int c = this->GetCount();
|
||||
for(int i =0; i < c; ++i)
|
||||
{
|
||||
PropertyItem* pItem = (PropertyItem*) GetItemDataPtr(0);
|
||||
cmCacheManager::GetInstance()->RemoveCacheEntry(pItem->m_propName.c_str());
|
||||
m_PropertyItems.erase(pItem);
|
||||
delete pItem;
|
||||
// this->DeleteString(0);
|
||||
}
|
||||
Invalidate();
|
||||
}
|
||||
|
||||
|
||||
|
||||
PropertyItem * PropertyList::GetItemDataPtr(int index)
|
||||
{
|
||||
std::set<PropertyItem*>::iterator it = m_PropertyItems.begin();
|
||||
for(int i=0; it != m_PropertyItems.end() && i<index; i++)
|
||||
{
|
||||
++it;
|
||||
}
|
||||
return *it;
|
||||
}
|
||||
|
||||
|
||||
PropertyItem * PropertyList::GetItem(int index)
|
||||
{
|
||||
std::set<PropertyItem*>::iterator it = m_PropertyItems.begin();
|
||||
for(int i=0; it != m_PropertyItems.end() && i<index; i++)
|
||||
{
|
||||
++it;
|
||||
}
|
||||
return *it;
|
||||
}
|
||||
|
||||
|
||||
|
||||
} // end fltk namespace
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue