Merged default.
This commit is contained in:
commit
9554a827ca
11 changed files with 233 additions and 30 deletions
|
@ -454,6 +454,7 @@ public:
|
||||||
|
|
||||||
// Set the value, the elt been used
|
// Set the value, the elt been used
|
||||||
void setValue (const char *value);
|
void setValue (const char *value);
|
||||||
|
std::string getValue() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// The value
|
// The value
|
||||||
|
|
|
@ -3056,6 +3056,13 @@ void CFormElmAtom::setValue (const char *value)
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
|
|
||||||
|
std::string CFormElmAtom::getValue() const
|
||||||
|
{
|
||||||
|
return Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ***************************************************************************
|
||||||
|
|
||||||
void CFormElmAtom::getFormName (std::string &result, const CFormElm *child) const
|
void CFormElmAtom::getFormName (std::string &result, const CFormElm *child) const
|
||||||
{
|
{
|
||||||
// Must be NULL
|
// Must be NULL
|
||||||
|
|
|
@ -26,7 +26,6 @@
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
|
|
||||||
QVariant::Type getValueType( const NLGEORGES::UType *typ )
|
QVariant::Type getValueType( const NLGEORGES::UType *typ )
|
||||||
{
|
{
|
||||||
QVariant::Type t = QVariant::String;
|
QVariant::Type t = QVariant::String;
|
||||||
|
@ -47,6 +46,55 @@ namespace
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QVariant::Type getValueTypeFromDfn( NLGEORGES::CFormElmStruct *st, int idx )
|
||||||
|
{
|
||||||
|
NLGEORGES::CFormDfn *cdfn = st->FormDfn;
|
||||||
|
NLGEORGES::CFormDfn::CEntry entry = cdfn->getEntry( idx );
|
||||||
|
return getValueType( entry.getTypePtr() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QVariant::Type getValueTypeFromDfn( NLGEORGES::CFormElmAtom *atom )
|
||||||
|
{
|
||||||
|
QVariant::Type t = QVariant::String;
|
||||||
|
|
||||||
|
NLGEORGES::CFormElm *cparent = static_cast< NLGEORGES::CFormElm* >( atom->getParent() );
|
||||||
|
|
||||||
|
if( cparent->isArray() )
|
||||||
|
{
|
||||||
|
NLGEORGES::CFormElmStruct *aparent = static_cast< NLGEORGES::CFormElmStruct* >( cparent->getParent() );
|
||||||
|
NLGEORGES::CFormDfn *cdfn = static_cast< NLGEORGES::CFormDfn* >( aparent->getStructDfn() );
|
||||||
|
|
||||||
|
int idx = -1;
|
||||||
|
for( idx = 0; idx < aparent->Elements.size(); idx++ )
|
||||||
|
{
|
||||||
|
if( aparent->Elements[ idx ].Element == cparent )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
NLGEORGES::CFormDfn::CEntry entry = cdfn->getEntry( idx );
|
||||||
|
return getValueType( entry.getTypePtr() );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if( cparent->isStruct() )
|
||||||
|
{
|
||||||
|
NLGEORGES::CFormElmStruct *sparent = static_cast< NLGEORGES::CFormElmStruct* >( cparent );
|
||||||
|
NLGEORGES::CFormDfn *cdfn = static_cast< NLGEORGES::CFormDfn* >( cparent->getStructDfn() );
|
||||||
|
|
||||||
|
int idx = -1;
|
||||||
|
for( idx = 0; idx < sparent->Elements.size(); idx++ )
|
||||||
|
{
|
||||||
|
if( sparent->Elements[ idx ].Element == atom )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
NLGEORGES::CFormDfn::CEntry entry = cdfn->getEntry( idx );
|
||||||
|
return getValueType( entry.getTypePtr() );
|
||||||
|
}
|
||||||
|
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
NLGEORGES::UFormElm* getGeorgesNode( GeorgesQt::CFormItem *item )
|
NLGEORGES::UFormElm* getGeorgesNode( GeorgesQt::CFormItem *item )
|
||||||
{
|
{
|
||||||
NLGEORGES::UFormElm *n = NULL;
|
NLGEORGES::UFormElm *n = NULL;
|
||||||
|
@ -73,8 +121,19 @@ BrowserCtrlPvt::~BrowserCtrlPvt()
|
||||||
m_browser = NULL;
|
m_browser = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BrowserCtrlPvt::setupAtom( NLGEORGES::CFormElmStruct::CFormElmStructElm &elm )
|
void BrowserCtrlPvt::setupAtom( NLGEORGES::CFormElmStruct *st, int idx )
|
||||||
{
|
{
|
||||||
|
NLGEORGES::CFormElmStruct::CFormElmStructElm &elm = st->Elements[ idx ];
|
||||||
|
if( ( elm.Element != NULL ) && !elm.Element->isAtom() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if( elm.Element == NULL )
|
||||||
|
{
|
||||||
|
NLGEORGES::CFormDfn::CEntry &entry = st->FormDfn->getEntry( idx );
|
||||||
|
if( entry.getArrayFlag() )
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
QString key = elm.Name.c_str();
|
QString key = elm.Name.c_str();
|
||||||
QString value = "";
|
QString value = "";
|
||||||
QVariant::Type t = QVariant::String;
|
QVariant::Type t = QVariant::String;
|
||||||
|
@ -90,6 +149,10 @@ void BrowserCtrlPvt::setupAtom( NLGEORGES::CFormElmStruct::CFormElmStructElm &el
|
||||||
m_rootNode->getValueByName( v, formName.c_str(), NLGEORGES::UFormElm::NoEval, NULL, 0 );
|
m_rootNode->getValueByName( v, formName.c_str(), NLGEORGES::UFormElm::NoEval, NULL, 0 );
|
||||||
value = v.c_str();
|
value = v.c_str();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
t = getValueTypeFromDfn( st, idx );
|
||||||
|
}
|
||||||
|
|
||||||
QtVariantProperty *p = mgr->addProperty( t, key );
|
QtVariantProperty *p = mgr->addProperty( t, key );
|
||||||
p->setValue( value );
|
p->setValue( value );
|
||||||
|
@ -102,18 +165,7 @@ void BrowserCtrlPvt::setupStruct( NLGEORGES::UFormElm *node )
|
||||||
|
|
||||||
for( int i = 0; i < st->Elements.size(); i++ )
|
for( int i = 0; i < st->Elements.size(); i++ )
|
||||||
{
|
{
|
||||||
NLGEORGES::CFormElmStruct::CFormElmStructElm &elm = st->Elements[ i ];
|
setupAtom( st, i );
|
||||||
if( ( elm.Element != NULL ) && !elm.Element->isAtom() )
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if( elm.Element == NULL )
|
|
||||||
{
|
|
||||||
NLGEORGES::CFormDfn::CEntry &entry = st->FormDfn->getEntry( i );
|
|
||||||
if( entry.getArrayFlag() )
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
setupAtom( elm );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -146,6 +198,34 @@ void BrowserCtrlPvt::setupArray( GeorgesQt::CFormItem *node )
|
||||||
m_browser->addProperty( p );
|
m_browser->addProperty( p );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BrowserCtrlPvt::setupAtom( GeorgesQt::CFormItem *node )
|
||||||
|
{
|
||||||
|
NLGEORGES::UFormElm *n = getGeorgesNode( node );
|
||||||
|
|
||||||
|
if( n == NULL )
|
||||||
|
return;
|
||||||
|
|
||||||
|
NLGEORGES::CFormElmAtom *atom = static_cast< NLGEORGES::CFormElmAtom* >( n );
|
||||||
|
std::string v = atom->getValue();
|
||||||
|
|
||||||
|
const NLGEORGES::CType *t = atom->getType();
|
||||||
|
QVariant::Type tt = QVariant::String;
|
||||||
|
if( t != NULL )
|
||||||
|
{
|
||||||
|
tt = getValueType( t );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tt = getValueTypeFromDfn( atom );
|
||||||
|
}
|
||||||
|
|
||||||
|
QtVariantProperty *p = mgr->addProperty( tt, "value" );
|
||||||
|
p->setValue( v.c_str() );
|
||||||
|
m_browser->addProperty( p );
|
||||||
|
|
||||||
|
m_currentNode.p = n;
|
||||||
|
}
|
||||||
|
|
||||||
void BrowserCtrlPvt::setupNode( GeorgesQt::CFormItem *node )
|
void BrowserCtrlPvt::setupNode( GeorgesQt::CFormItem *node )
|
||||||
{
|
{
|
||||||
m_currentNode.clear();
|
m_currentNode.clear();
|
||||||
|
@ -156,7 +236,11 @@ void BrowserCtrlPvt::setupNode( GeorgesQt::CFormItem *node )
|
||||||
if( node->isArray() )
|
if( node->isArray() )
|
||||||
setupArray( node );
|
setupArray( node );
|
||||||
else
|
else
|
||||||
|
if( node->isStruct() )
|
||||||
setupStruct( node );
|
setupStruct( node );
|
||||||
|
else
|
||||||
|
if( node->isAtom() )
|
||||||
|
setupAtom( node );
|
||||||
|
|
||||||
m_browser->setFactoryForManager( mgr, factory );
|
m_browser->setFactoryForManager( mgr, factory );
|
||||||
}
|
}
|
||||||
|
@ -281,6 +365,15 @@ void BrowserCtrlPvt::onArrayValueChanged( QtProperty *p, const QVariant &value )
|
||||||
m_currentNode.p = NULL;
|
m_currentNode.p = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BrowserCtrlPvt::onAtomValueChanged( QtProperty *p, const QVariant &value )
|
||||||
|
{
|
||||||
|
NLGEORGES::CFormElmAtom *atom = static_cast< NLGEORGES::CFormElmAtom* >( m_currentNode.p );
|
||||||
|
atom->setValue( value.toString().toUtf8() );
|
||||||
|
|
||||||
|
Q_EMIT modified();
|
||||||
|
Q_EMIT valueChanged( m_currentNode.name, value.toString() );
|
||||||
|
}
|
||||||
|
|
||||||
void BrowserCtrlPvt::onValueChanged( QtProperty *p, const QVariant &value )
|
void BrowserCtrlPvt::onValueChanged( QtProperty *p, const QVariant &value )
|
||||||
{
|
{
|
||||||
if( m_currentNode.p == NULL )
|
if( m_currentNode.p == NULL )
|
||||||
|
@ -297,6 +390,9 @@ void BrowserCtrlPvt::onValueChanged( QtProperty *p, const QVariant &value )
|
||||||
else
|
else
|
||||||
if( m_currentNode.p->isArray() )
|
if( m_currentNode.p->isArray() )
|
||||||
onArrayValueChanged( p, value );
|
onArrayValueChanged( p, value );
|
||||||
|
else
|
||||||
|
if( m_currentNode.p->isAtom() )
|
||||||
|
onAtomValueChanged( p, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -61,13 +61,15 @@ Q_SIGNALS:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void setupStruct( NLGEORGES::UFormElm *node );
|
void setupStruct( NLGEORGES::UFormElm *node );
|
||||||
void setupAtom( NLGEORGES::CFormElmStruct::CFormElmStructElm &elm );
|
void setupAtom( NLGEORGES::CFormElmStruct *st, int idx );
|
||||||
|
|
||||||
void setupStruct( GeorgesQt::CFormItem *node );
|
void setupStruct( GeorgesQt::CFormItem *node );
|
||||||
void setupArray( GeorgesQt::CFormItem *node );
|
void setupArray( GeorgesQt::CFormItem *node );
|
||||||
|
void setupAtom( GeorgesQt::CFormItem *node );
|
||||||
|
|
||||||
void onStructValueChanged( QtProperty *p, const QVariant &value );
|
void onStructValueChanged( QtProperty *p, const QVariant &value );
|
||||||
void onArrayValueChanged( QtProperty *p, const QVariant &value );
|
void onArrayValueChanged( QtProperty *p, const QVariant &value );
|
||||||
|
void onAtomValueChanged( QtProperty *p, const QVariant &value );
|
||||||
void createArray();
|
void createArray();
|
||||||
|
|
||||||
QtVariantPropertyManager *mgr;
|
QtVariantPropertyManager *mgr;
|
||||||
|
|
|
@ -40,7 +40,7 @@ namespace GeorgesQt
|
||||||
_StructId = 0;
|
_StructId = 0;
|
||||||
_Slot = 0;
|
_Slot = 0;
|
||||||
_Type = Null;
|
_Type = Null;
|
||||||
_Array = false;
|
_TType = TYPE_ATOM;
|
||||||
}
|
}
|
||||||
|
|
||||||
CFormItem::~CFormItem()
|
CFormItem::~CFormItem()
|
||||||
|
@ -113,7 +113,10 @@ namespace GeorgesQt
|
||||||
|
|
||||||
bool CFormItem::isArray()
|
bool CFormItem::isArray()
|
||||||
{
|
{
|
||||||
return _Array;
|
if( _TType == TYPE_ARRAY )
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CFormItem::isArrayMember()
|
bool CFormItem::isArrayMember()
|
||||||
|
@ -124,6 +127,30 @@ namespace GeorgesQt
|
||||||
return parentItem->isArray();
|
return parentItem->isArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CFormItem::isStruct()
|
||||||
|
{
|
||||||
|
if( _TType == TYPE_STRUCT )
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CFormItem::isVStruct()
|
||||||
|
{
|
||||||
|
if( _TType == TYPE_VSTRUCT )
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CFormItem::isAtom()
|
||||||
|
{
|
||||||
|
if( _TType == TYPE_ATOM )
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
QIcon CFormItem::getItemImage(CFormItem *rootItem)
|
QIcon CFormItem::getItemImage(CFormItem *rootItem)
|
||||||
{
|
{
|
||||||
if(_Type == CFormItem::Null)
|
if(_Type == CFormItem::Null)
|
||||||
|
@ -211,7 +238,7 @@ namespace GeorgesQt
|
||||||
childItems.clear();
|
childItems.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
CFormItem *CFormItem::add (TSub type, const char *name, uint structId, const char *formName, uint slot, NLGEORGES::UForm *formPtr, bool isArray)
|
CFormItem *CFormItem::add (TSub type, const char *name, uint structId, const char *formName, uint slot, NLGEORGES::UForm *formPtr, TType itemType )
|
||||||
{
|
{
|
||||||
CFormItem *newNode = new CFormItem();
|
CFormItem *newNode = new CFormItem();
|
||||||
newNode->_Type = type;
|
newNode->_Type = type;
|
||||||
|
@ -221,7 +248,7 @@ namespace GeorgesQt
|
||||||
newNode->_FormName = formName;
|
newNode->_FormName = formName;
|
||||||
newNode->_Slot = slot;
|
newNode->_Slot = slot;
|
||||||
newNode->m_form = formPtr;
|
newNode->m_form = formPtr;
|
||||||
newNode->_Array = isArray;
|
newNode->_TType = itemType;
|
||||||
|
|
||||||
appendChild(newNode);
|
appendChild(newNode);
|
||||||
return newNode;
|
return newNode;
|
||||||
|
|
|
@ -41,12 +41,20 @@ namespace GeorgesQt
|
||||||
Form, // This node is a form
|
Form, // This node is a form
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum TType
|
||||||
|
{
|
||||||
|
TYPE_ARRAY,
|
||||||
|
TYPE_STRUCT,
|
||||||
|
TYPE_VSTRUCT,
|
||||||
|
TYPE_ATOM
|
||||||
|
};
|
||||||
|
|
||||||
CFormItem();
|
CFormItem();
|
||||||
~CFormItem();
|
~CFormItem();
|
||||||
|
|
||||||
void appendChild(CFormItem *child);
|
void appendChild(CFormItem *child);
|
||||||
|
|
||||||
CFormItem *add (TSub type, const char *name, uint structId, const char *formName, uint slot, NLGEORGES::UForm *formPtr, bool isArray );
|
CFormItem *add (TSub type, const char *name, uint structId, const char *formName, uint slot, NLGEORGES::UForm *formPtr, TType itemType );
|
||||||
|
|
||||||
CFormItem *child(int row);
|
CFormItem *child(int row);
|
||||||
int childCount() const;
|
int childCount() const;
|
||||||
|
@ -69,6 +77,9 @@ namespace GeorgesQt
|
||||||
bool isEditable(int column);
|
bool isEditable(int column);
|
||||||
bool isArray();
|
bool isArray();
|
||||||
bool isArrayMember();
|
bool isArrayMember();
|
||||||
|
bool isStruct();
|
||||||
|
bool isVStruct();
|
||||||
|
bool isAtom();
|
||||||
|
|
||||||
QIcon getItemImage(CFormItem *rootItem);
|
QIcon getItemImage(CFormItem *rootItem);
|
||||||
|
|
||||||
|
@ -95,7 +106,7 @@ namespace GeorgesQt
|
||||||
std::string _FormName;
|
std::string _FormName;
|
||||||
TSub _Type;
|
TSub _Type;
|
||||||
uint _Slot;
|
uint _Slot;
|
||||||
bool _Array;
|
TType _TType;
|
||||||
|
|
||||||
}; // CFormItem
|
}; // CFormItem
|
||||||
|
|
||||||
|
|
|
@ -115,6 +115,8 @@ void GeorgesDFNDialog::newDocument( const QString &fileName )
|
||||||
m_pvt->dfn = new NLGEORGES::CFormDfn();
|
m_pvt->dfn = new NLGEORGES::CFormDfn();
|
||||||
|
|
||||||
loadDfn();
|
loadDfn();
|
||||||
|
|
||||||
|
log( "Created" );
|
||||||
}
|
}
|
||||||
|
|
||||||
void GeorgesDFNDialog::onAddClicked()
|
void GeorgesDFNDialog::onAddClicked()
|
||||||
|
|
|
@ -423,6 +423,8 @@ namespace GeorgesQt
|
||||||
setWindowTitle( info.fileName() + "*" );
|
setWindowTitle( info.fileName() + "*" );
|
||||||
setModified( true );
|
setModified( true );
|
||||||
|
|
||||||
|
log( "Created" );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -115,6 +115,8 @@ void GeorgesTypDialog::newDocument( const QString &fileName )
|
||||||
setModified( true );
|
setModified( true );
|
||||||
|
|
||||||
loadTyp();
|
loadTyp();
|
||||||
|
|
||||||
|
log( "Created" );
|
||||||
}
|
}
|
||||||
|
|
||||||
void GeorgesTypDialog::onAddClicked()
|
void GeorgesTypDialog::onAddClicked()
|
||||||
|
|
|
@ -277,13 +277,20 @@ namespace GeorgesQt
|
||||||
const char *name,
|
const char *name,
|
||||||
uint structId,
|
uint structId,
|
||||||
const char *formName,
|
const char *formName,
|
||||||
uint slot)
|
uint slot,
|
||||||
|
bool isVirtual)
|
||||||
{
|
{
|
||||||
// The form pointer
|
// The form pointer
|
||||||
NLGEORGES::CForm *formPtr = static_cast<NLGEORGES::CForm*>(m_form);
|
NLGEORGES::CForm *formPtr = static_cast<NLGEORGES::CForm*>(m_form);
|
||||||
|
|
||||||
// Add the new node
|
// Add the new node
|
||||||
CFormItem *newNode = parent->add(CFormItem::Form, name, structId, formName, slot, m_form, false);
|
CFormItem::TType ttype;
|
||||||
|
if( isVirtual )
|
||||||
|
ttype = CFormItem::TYPE_VSTRUCT;
|
||||||
|
else
|
||||||
|
ttype = CFormItem::TYPE_STRUCT;
|
||||||
|
|
||||||
|
CFormItem *newNode = parent->add(CFormItem::Form, name, structId, formName, slot, m_form, ttype );
|
||||||
|
|
||||||
// Can be NULL in virtual DFN
|
// Can be NULL in virtual DFN
|
||||||
if (parentDfn)
|
if (parentDfn)
|
||||||
|
@ -367,7 +374,10 @@ namespace GeorgesQt
|
||||||
NLGEORGES::CFormDfn *tmpDfn = vStruct ?
|
NLGEORGES::CFormDfn *tmpDfn = vStruct ?
|
||||||
((NLGEORGES::CFormDfn*)vStruct->FormDfn) : entry.getDfnPtr();
|
((NLGEORGES::CFormDfn*)vStruct->FormDfn) : entry.getDfnPtr();
|
||||||
// Add the new struct
|
// Add the new struct
|
||||||
addStruct (newNode, nextForm, tmpDfn, entry.getName().c_str(), elm, entryName.c_str(), slot);
|
if( entry.getType() == NLGEORGES::UFormDfn::EntryVirtualDfn )
|
||||||
|
addStruct (newNode, nextForm, tmpDfn, entry.getName().c_str(), elm, entryName.c_str(), slot, true);
|
||||||
|
else
|
||||||
|
addStruct (newNode, nextForm, tmpDfn, entry.getName().c_str(), elm, entryName.c_str(), slot);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Array of type ?
|
// Array of type ?
|
||||||
|
@ -418,7 +428,7 @@ CFormItem *CGeorgesFormModel::addArray(CFormItem *parent,
|
||||||
uint slot)
|
uint slot)
|
||||||
{
|
{
|
||||||
// Add the new node
|
// Add the new node
|
||||||
CFormItem *newNode = parent->add (CFormItem::Form, name, structId, formName, slot, m_form, true);
|
CFormItem *newNode = parent->add (CFormItem::Form, name, structId, formName, slot, m_form, CFormItem::TYPE_ARRAY );
|
||||||
|
|
||||||
// The array exist
|
// The array exist
|
||||||
if (array)
|
if (array)
|
||||||
|
@ -451,7 +461,7 @@ CFormItem *CGeorgesFormModel::addArray(CFormItem *parent,
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
NLGEORGES::CFormElmArray *elmPtr = array->Elements[elm].Element ? static_cast<NLGEORGES::CFormElmArray*>(array->Elements[elm].Element) : NULL;
|
NLGEORGES::CFormElmArray *elmPtr = array->Elements[elm].Element ? static_cast<NLGEORGES::CFormElmArray*>(array->Elements[elm].Element) : NULL;
|
||||||
newNode->add (CFormItem::Form, formArrayName, elm, formArrayElmName, slot, m_form, false);
|
addAtom( newNode, elmPtr, rootDfn, formArrayName, elm, formArrayElmName );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -460,6 +470,39 @@ CFormItem *CGeorgesFormModel::addArray(CFormItem *parent,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CFormItem *CGeorgesFormModel::addAtom(CFormItem *parent, NLGEORGES::CFormElm *elm, NLGEORGES::CFormDfn *dfn, const char *name, uint id, const char *formName)
|
||||||
|
{
|
||||||
|
CFormItem *item = parent->add( CFormItem::Form, name, id, formName, 0, m_form, CFormItem::TYPE_ATOM );
|
||||||
|
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CFormItem *CGeorgesFormModel::addItem(CFormItem *parent, NLGEORGES::CFormElm *elm, NLGEORGES::CFormDfn *dfn, const char *name, uint id, const char *formName)
|
||||||
|
{
|
||||||
|
CFormItem *item = NULL;
|
||||||
|
|
||||||
|
if( elm->isAtom() )
|
||||||
|
item = addAtom(parent, elm, dfn, name, id, formName );
|
||||||
|
else
|
||||||
|
if( elm->isStruct() || elm->isVirtualStruct() )
|
||||||
|
{
|
||||||
|
NLGEORGES::CFormElmStruct *st = static_cast< NLGEORGES::CFormElmStruct* >( elm );
|
||||||
|
if( st->isVirtualStruct() )
|
||||||
|
item = addStruct(parent, st, st->FormDfn, name, id, formName, 0, true);
|
||||||
|
else
|
||||||
|
item = addStruct(parent, st, st->FormDfn, name, id, formName, 0, false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if( elm->isArray() )
|
||||||
|
{
|
||||||
|
NLGEORGES::CFormElmArray *arr = static_cast< NLGEORGES::CFormElmArray* >( elm );
|
||||||
|
item = addArray(parent, arr, arr->FormDfn, name, id, formName, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
void CGeorgesFormModel::arrayResized( const QString &name, int size )
|
void CGeorgesFormModel::arrayResized( const QString &name, int size )
|
||||||
{
|
{
|
||||||
CFormItem *item = m_rootItem->findItem( name );
|
CFormItem *item = m_rootItem->findItem( name );
|
||||||
|
@ -494,7 +537,9 @@ void CGeorgesFormModel::arrayResized( const QString &name, int size )
|
||||||
else
|
else
|
||||||
n = e.Name.c_str();
|
n = e.Name.c_str();
|
||||||
|
|
||||||
item->add( CFormItem::Form, n.toUtf8().constData(), i, formName.toUtf8().constData(), 0, item->form(), false );
|
NLGEORGES::UFormDfn *udfn = e.Element->getStructDfn();
|
||||||
|
NLGEORGES::CFormDfn *cdfn = static_cast< NLGEORGES::CFormDfn* >( udfn );
|
||||||
|
addItem( item, e.Element, cdfn, n.toUtf8().constData(), i, formName.toUtf8().constData() );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( celm->Elements.size() == 0 )
|
if( celm->Elements.size() == 0 )
|
||||||
|
@ -566,7 +611,9 @@ void CGeorgesFormModel::appendArray( QModelIndex idx )
|
||||||
std::string formName;
|
std::string formName;
|
||||||
node->getFormName( formName );
|
node->getFormName( formName );
|
||||||
|
|
||||||
item->add( CFormItem::Form, name.c_str(), s, formName.c_str(), 0, item->form(), false );
|
NLGEORGES::CFormDfn *cdfn = const_cast< NLGEORGES::CFormDfn* >( nodeDfn );
|
||||||
|
addItem( item, node, cdfn, name.c_str(), s, formName.c_str() );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGeorgesFormModel::deleteArrayEntry( QModelIndex idx )
|
void CGeorgesFormModel::deleteArrayEntry( QModelIndex idx )
|
||||||
|
@ -608,7 +655,9 @@ void CGeorgesFormModel::deleteArrayEntry( QModelIndex idx )
|
||||||
else
|
else
|
||||||
n = e.Name.c_str();
|
n = e.Name.c_str();
|
||||||
|
|
||||||
item->add( CFormItem::Form, n.toUtf8().constData(), i, formName.toUtf8().constData(), 0, item->form(), false );
|
NLGEORGES::UFormDfn *udfn = e.Element->getStructDfn();
|
||||||
|
NLGEORGES::CFormDfn *cdfn = static_cast< NLGEORGES::CFormDfn* >( udfn );
|
||||||
|
addItem( item, e.Element, cdfn, n.toUtf8().constData(), i, formName.toUtf8().constData() );
|
||||||
}
|
}
|
||||||
|
|
||||||
Q_EMIT endResetModel();
|
Q_EMIT endResetModel();
|
||||||
|
|
|
@ -65,11 +65,15 @@ namespace GeorgesQt
|
||||||
NLGEORGES::UFormElm *getRootForm() { return m_rootElm; }
|
NLGEORGES::UFormElm *getRootForm() { return m_rootElm; }
|
||||||
|
|
||||||
CFormItem *addStruct (CFormItem *parent, NLGEORGES::CFormElmStruct *_struct, NLGEORGES::CFormDfn *parentDfn,
|
CFormItem *addStruct (CFormItem *parent, NLGEORGES::CFormElmStruct *_struct, NLGEORGES::CFormDfn *parentDfn,
|
||||||
const char *name, uint structId, const char *formName, uint slot);
|
const char *name, uint structId, const char *formName, uint slot, bool isVirtual = false );
|
||||||
|
|
||||||
CFormItem *addArray(CFormItem *parent, NLGEORGES::CFormElmArray *array, NLGEORGES::CFormDfn *rootDfn,
|
CFormItem *addArray(CFormItem *parent, NLGEORGES::CFormElmArray *array, NLGEORGES::CFormDfn *rootDfn,
|
||||||
const char *name, uint structId, const char *formName, uint slot);
|
const char *name, uint structId, const char *formName, uint slot);
|
||||||
|
|
||||||
|
CFormItem *addAtom(CFormItem *parent, NLGEORGES::CFormElm *elm, NLGEORGES::CFormDfn *dfn, const char *name, uint id, const char *formName);
|
||||||
|
|
||||||
|
CFormItem *addItem(CFormItem *parent, NLGEORGES::CFormElm *elm, NLGEORGES::CFormDfn *dfn, const char *name, uint id, const char *formName);
|
||||||
|
|
||||||
void emitDataChanged(const QModelIndex &index)
|
void emitDataChanged(const QModelIndex &index)
|
||||||
{
|
{
|
||||||
Q_EMIT dataChanged(index, index);
|
Q_EMIT dataChanged(index, index);
|
||||||
|
|
Loading…
Reference in a new issue