Apply changes.
This commit is contained in:
parent
ac6858724f
commit
0bb62e3b66
4 changed files with 108 additions and 4 deletions
|
@ -87,6 +87,8 @@ public:
|
||||||
// Set as a type
|
// Set as a type
|
||||||
void setType (CFormLoader &loader, const char *filename);
|
void setType (CFormLoader &loader, const char *filename);
|
||||||
|
|
||||||
|
void setType (TEntryType type);
|
||||||
|
|
||||||
// Set as a dfn
|
// Set as a dfn
|
||||||
void setDfn (CFormLoader &loader, const char *filename);
|
void setDfn (CFormLoader &loader, const char *filename);
|
||||||
|
|
||||||
|
|
|
@ -463,6 +463,11 @@ void CFormDfn::CEntry::setType (CFormLoader &loader, const char *filename)
|
||||||
Type = loader.loadType (filename);
|
Type = loader.loadType (filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CFormDfn::CEntry::setType( TEntryType type )
|
||||||
|
{
|
||||||
|
TypeElement = type;
|
||||||
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
|
|
||||||
void CFormDfn::CEntry::setDfn (CFormLoader &loader, const char *filename)
|
void CFormDfn::CEntry::setDfn (CFormLoader &loader, const char *filename)
|
||||||
|
|
|
@ -19,6 +19,37 @@ namespace
|
||||||
ENTRY_DFN_ARRAY
|
ENTRY_DFN_ARRAY
|
||||||
};
|
};
|
||||||
|
|
||||||
|
NLGEORGES::UFormDfn::TEntryType enumToEntry( int value )
|
||||||
|
{
|
||||||
|
NLGEORGES::UFormDfn::TEntryType entry = NLGEORGES::UFormDfn::EntryType;
|
||||||
|
|
||||||
|
switch( value )
|
||||||
|
{
|
||||||
|
case ENTRY_TYPE: entry = NLGEORGES::UFormDfn::EntryType; break;
|
||||||
|
case ENTRY_DFN: entry = NLGEORGES::UFormDfn::EntryDfn; break;
|
||||||
|
case ENTRY_VIRTUAL_DFN: entry = NLGEORGES::UFormDfn::EntryVirtualDfn; break;
|
||||||
|
case ENTRY_TYPE_ARRAY: entry = NLGEORGES::UFormDfn::EntryType; break;
|
||||||
|
case ENTRY_DFN_ARRAY: entry = NLGEORGES::UFormDfn::EntryDfn; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool enumToArray( int value )
|
||||||
|
{
|
||||||
|
bool isArray = false;
|
||||||
|
|
||||||
|
switch( value )
|
||||||
|
{
|
||||||
|
case ENTRY_TYPE_ARRAY:
|
||||||
|
case ENTRY_DFN_ARRAY:
|
||||||
|
isArray = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return isArray;
|
||||||
|
}
|
||||||
|
|
||||||
int entryToEnum( const NLGEORGES::UFormDfn::TEntryType &type, bool isArray )
|
int entryToEnum( const NLGEORGES::UFormDfn::TEntryType &type, bool isArray )
|
||||||
{
|
{
|
||||||
int id = 0;
|
int id = 0;
|
||||||
|
@ -64,6 +95,8 @@ QObject( parent )
|
||||||
m_enumFactory = new QtEnumEditorFactory();
|
m_enumFactory = new QtEnumEditorFactory();
|
||||||
m_fileMgr = new FileManager();
|
m_fileMgr = new FileManager();
|
||||||
m_fileFactory = new FileEditFactory();
|
m_fileFactory = new FileEditFactory();
|
||||||
|
|
||||||
|
m_idx = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
DFNBrowserCtrl::~DFNBrowserCtrl()
|
DFNBrowserCtrl::~DFNBrowserCtrl()
|
||||||
|
@ -88,6 +121,9 @@ DFNBrowserCtrl::~DFNBrowserCtrl()
|
||||||
void DFNBrowserCtrl::onElementSelected( int idx )
|
void DFNBrowserCtrl::onElementSelected( int idx )
|
||||||
{
|
{
|
||||||
NLGEORGES::CFormDfn::CEntry &entry = m_dfn->getEntry( idx );
|
NLGEORGES::CFormDfn::CEntry &entry = m_dfn->getEntry( idx );
|
||||||
|
m_idx = idx;
|
||||||
|
|
||||||
|
disconnectManagers();
|
||||||
|
|
||||||
m_browser->clear();
|
m_browser->clear();
|
||||||
m_browser->setFactoryForManager( m_manager, m_factory );
|
m_browser->setFactoryForManager( m_manager, m_factory );
|
||||||
|
@ -124,10 +160,6 @@ void DFNBrowserCtrl::onElementSelected( int idx )
|
||||||
m_fileMgr->setValue( prop, entry.getFilename().c_str() );
|
m_fileMgr->setValue( prop, entry.getFilename().c_str() );
|
||||||
m_browser->addProperty( prop );
|
m_browser->addProperty( prop );
|
||||||
|
|
||||||
//p = m_manager->addProperty( QVariant::String, "value" );
|
|
||||||
//p->setValue( entry.getFilename().c_str() );
|
|
||||||
//m_browser->addProperty( p );
|
|
||||||
|
|
||||||
p = m_manager->addProperty( QVariant::String, "default" );
|
p = m_manager->addProperty( QVariant::String, "default" );
|
||||||
p->setValue( entry.getDefault().c_str() );
|
p->setValue( entry.getDefault().c_str() );
|
||||||
m_browser->addProperty( p );
|
m_browser->addProperty( p );
|
||||||
|
@ -135,6 +167,61 @@ void DFNBrowserCtrl::onElementSelected( int idx )
|
||||||
p = m_manager->addProperty( QVariant::String, "extension" );
|
p = m_manager->addProperty( QVariant::String, "extension" );
|
||||||
p->setValue( entry.getFilenameExt().c_str() );
|
p->setValue( entry.getFilenameExt().c_str() );
|
||||||
m_browser->addProperty( p );
|
m_browser->addProperty( p );
|
||||||
|
|
||||||
|
connectManagers();
|
||||||
|
}
|
||||||
|
|
||||||
|
void DFNBrowserCtrl::onVariantValueChanged( QtProperty *p, const QVariant &v )
|
||||||
|
{
|
||||||
|
NLGEORGES::CFormDfn::CEntry &entry = m_dfn->getEntry( m_idx );
|
||||||
|
|
||||||
|
QString key = p->propertyName();
|
||||||
|
std::string value = v.toString().toUtf8().constData();
|
||||||
|
|
||||||
|
if( key == "name" )
|
||||||
|
{
|
||||||
|
entry.setName( value.c_str() );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if( key == "default" )
|
||||||
|
{
|
||||||
|
entry.setDefault( value.c_str() );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if( key == "extension" )
|
||||||
|
{
|
||||||
|
entry.setFilenameExt( value.c_str() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DFNBrowserCtrl::onEnumValueChanged( QtProperty *p, int v )
|
||||||
|
{
|
||||||
|
NLGEORGES::UFormDfn::TEntryType tentry = enumToEntry( v );
|
||||||
|
bool isArray = enumToArray( v );
|
||||||
|
|
||||||
|
NLGEORGES::CFormDfn::CEntry &entry = m_dfn->getEntry( m_idx );
|
||||||
|
entry.setArrayFlag( isArray );
|
||||||
|
entry.setType( tentry );
|
||||||
|
}
|
||||||
|
|
||||||
|
void DFNBrowserCtrl::onFileValueChanged( QtProperty *p, const QString &v )
|
||||||
|
{
|
||||||
|
NLGEORGES::CFormDfn::CEntry &entry = m_dfn->getEntry( m_idx );
|
||||||
|
entry.setFilename( v.toUtf8().constData() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void DFNBrowserCtrl::connectManagers()
|
||||||
|
{
|
||||||
|
connect( m_manager, SIGNAL( valueChanged( QtProperty*, const QVariant& ) ), this, SLOT( onVariantValueChanged( QtProperty*, const QVariant& ) ) );
|
||||||
|
connect( m_enumMgr, SIGNAL( valueChanged( QtProperty*, int ) ), this, SLOT( onEnumValueChanged( QtProperty*, int ) ) );
|
||||||
|
connect( m_fileMgr, SIGNAL( valueChanged( QtProperty*, const QString& ) ), this, SLOT( onFileValueChanged( QtProperty*, const QString& ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
void DFNBrowserCtrl::disconnectManagers()
|
||||||
|
{
|
||||||
|
disconnect( m_manager, SIGNAL( valueChanged( QtProperty*, const QVariant& ) ), this, SLOT( onVariantValueChanged( QtProperty*, const QVariant& ) ) );
|
||||||
|
disconnect( m_enumMgr, SIGNAL( valueChanged( QtProperty*, int ) ), this, SLOT( onEnumValueChanged( QtProperty*, int ) ) );
|
||||||
|
disconnect( m_fileMgr, SIGNAL( valueChanged( QtProperty*, const QString& ) ), this, SLOT( onFileValueChanged( QtProperty*, const QString& ) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,15 @@ public:
|
||||||
|
|
||||||
void onElementSelected( int idx );
|
void onElementSelected( int idx );
|
||||||
|
|
||||||
|
private Q_SLOTS:
|
||||||
|
void onFileValueChanged( QtProperty *p, const QString &v );
|
||||||
|
void onVariantValueChanged( QtProperty *p, const QVariant &v );
|
||||||
|
void onEnumValueChanged( QtProperty *p, int v );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void connectManagers();
|
||||||
|
void disconnectManagers();
|
||||||
|
|
||||||
QtTreePropertyBrowser *m_browser;
|
QtTreePropertyBrowser *m_browser;
|
||||||
NLGEORGES::CFormDfn *m_dfn;
|
NLGEORGES::CFormDfn *m_dfn;
|
||||||
|
|
||||||
|
@ -43,6 +51,8 @@ private:
|
||||||
|
|
||||||
FileManager *m_fileMgr;
|
FileManager *m_fileMgr;
|
||||||
FileEditFactory *m_fileFactory;
|
FileEditFactory *m_fileFactory;
|
||||||
|
|
||||||
|
int m_idx;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue