GEQt Plugin: Starting to add the context menu back.

This commit is contained in:
sfb 2012-10-18 20:56:31 -05:00
parent f2d5492b0c
commit ac14c215f4
3 changed files with 55 additions and 20 deletions

View file

@ -98,6 +98,36 @@ namespace GeorgesQt
if (column != 0)
return false;
if(isArrayMember())
return true;
return false;
}
bool CFormItem::isArray()
{
// If it wasn't a root node then lets check the node type.
const NLGEORGES::CFormDfn *parentDfn;
uint indexDfn;
const NLGEORGES::CFormDfn *nodeDfn;
const NLGEORGES::CType *nodeType;
NLGEORGES::CFormElm *node;
NLGEORGES::UFormDfn::TEntryType type;
bool array;
bool parentVDfnArray;
NLGEORGES::CForm *form = static_cast<CForm*>(m_form);
NLGEORGES::CFormElm *elm = static_cast<CFormElm*>(&form->getRootNode());
nlverify ( elm->getNodeByName (_FormName.c_str(), &parentDfn, indexDfn,
&nodeDfn, &nodeType, &node, type, array, parentVDfnArray, true, NLGEORGES_FIRST_ROUND) );
if(array && node)
return true;
return false;
}
bool CFormItem::isArrayMember()
{
CFormItem *parent = this->parent();
// If it wasn't a root node then lets check the node type.
@ -118,7 +148,6 @@ namespace GeorgesQt
return true;
return false;
}
QIcon CFormItem::getItemImage(CFormItem *rootItem)

View file

@ -67,6 +67,8 @@ namespace GeorgesQt
NLGEORGES::UForm *form() { return m_form; }
bool isEditable(int column);
bool isArray();
bool isArrayMember();
QIcon getItemImage(CFormItem *rootItem);

View file

@ -460,26 +460,23 @@ namespace GeorgesQt
void CGeorgesTreeViewDialog::showContextMenu(const QPoint &pos)
{
//QMenu contextMenu;
//QMenu *structContext = NULL;
//QPoint globalPos = this->mapToGlobal(pos);
//
//// Fisrt we're going to see if we've right clicked on a new item and select it.
//const QModelIndex &index = this->m_ui.treeView->currentIndex();
QMenu contextMenu;
QMenu *structContext = NULL;
QPoint globalPos = this->mapToGlobal(pos);
//if(!index.isValid())
// return;
// Fisrt we're going to see if we've right clicked on a new item and select it.
const QModelIndex &index = this->m_ui.treeView->currentIndex();
//CGeorgesFormProxyModel * mp = dynamic_cast<CGeorgesFormProxyModel *>(m_ui.treeView->model());
//CGeorgesFormModel *m = dynamic_cast<CGeorgesFormModel *>(mp->sourceModel());
//QModelIndex sourceIndex = mp->mapToSource(index);
if(!index.isValid())
return;
//if (m)
//{
//
// CFormItem *item = m->getItem(sourceIndex);
CGeorgesFormModel *m = dynamic_cast<CGeorgesFormModel *>(m_ui.treeView->model());
// // Right click on the "parents" item
if(m)
{
CFormItem *item = m->getItem(index);
// Right click on the "parents" item
// if (item->data(0) == "parents")
// contextMenu.addAction("Add parent...");
// // Right click on a parent item
@ -488,8 +485,15 @@ namespace GeorgesQt
// contextMenu.addAction("Add parent...");
// contextMenu.addAction("Remove parent");
// }
// else if(item->getFormElm()->isArray())
// contextMenu.addAction("Add array entry...");
if(item->isArray())
{
contextMenu.addAction("Append array entry...");
}
else if(item->isArrayMember())
{
contextMenu.addAction("Delete array entry...");
contextMenu.addAction("Insert after array entry...");
}
// else if(item->getFormElm()->isStruct())
// {
// QMenu *structContext = new QMenu("Add struct element...", this);
@ -569,7 +573,7 @@ namespace GeorgesQt
// }
// } // if selected context menu item is valid.
//} // if 'm' model valid.
} // if 'm' model valid.
//if(structContext)
// delete structContext;