Added support for creating new form documents
This commit is contained in:
parent
256d72fe62
commit
6457ab90eb
3 changed files with 71 additions and 32 deletions
|
@ -173,6 +173,39 @@ namespace GeorgesQt
|
||||||
|
|
||||||
void GeorgesEditorForm::newForm()
|
void GeorgesEditorForm::newForm()
|
||||||
{
|
{
|
||||||
|
QString dfnFileName = QFileDialog::getOpenFileName( this,
|
||||||
|
tr( "New Form" ),
|
||||||
|
"",
|
||||||
|
"Definition files (*.dfn)" );
|
||||||
|
if( dfnFileName.isEmpty() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
QFileInfo dfnInfo( dfnFileName );
|
||||||
|
QString baseName = dfnInfo.baseName();
|
||||||
|
QString filter;
|
||||||
|
filter += baseName;
|
||||||
|
filter += " files (*.";
|
||||||
|
filter += baseName;
|
||||||
|
filter += ")";
|
||||||
|
|
||||||
|
QString fileName = QFileDialog::getSaveFileName( this,
|
||||||
|
tr( "New Form" ),
|
||||||
|
"",
|
||||||
|
filter );
|
||||||
|
if( fileName.isEmpty() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
CGeorgesTreeViewDialog *d = new CGeorgesTreeViewDialog();
|
||||||
|
if( !d->newDocument( fileName, dfnFileName ) )
|
||||||
|
{
|
||||||
|
QMessageBox::information( this,
|
||||||
|
tr( "Failed to create new form" ),
|
||||||
|
tr( "Failed to create new form!" ) );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
addGeorgesWidget( d );
|
||||||
|
setModified();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GeorgesEditorForm::save()
|
void GeorgesEditorForm::save()
|
||||||
|
|
|
@ -160,30 +160,25 @@ namespace GeorgesQt
|
||||||
|
|
||||||
NLGEORGES::CForm* CGeorgesTreeViewDialog::getFormByDfnName(const QString dfnName)
|
NLGEORGES::CForm* CGeorgesTreeViewDialog::getFormByDfnName(const QString dfnName)
|
||||||
{
|
{
|
||||||
if(NLMISC::CPath::exists(dfnName.toAscii().data()))
|
// Create a new form object.
|
||||||
|
NLGEORGES::CForm *form = new NLGEORGES::CForm();
|
||||||
|
m_form = form;
|
||||||
|
|
||||||
|
// Retrieve a copy of the root definition.
|
||||||
|
NLGEORGES::CFormDfn *formDfn = dynamic_cast<NLGEORGES::CFormDfn *>(m_georges->loadFormDfn(dfnName.toAscii().data()));
|
||||||
|
|
||||||
|
// Next we'll use the root node to build a new form.
|
||||||
|
NLGEORGES::CFormElmStruct *fes = dynamic_cast<NLGEORGES::CFormElmStruct *>(getRootNode(0));
|
||||||
|
fes->build(formDfn);
|
||||||
|
|
||||||
|
// And then initialize the held elements;
|
||||||
|
for(uint i = 0; i<NLGEORGES::CForm::HeldElementCount; i++)
|
||||||
{
|
{
|
||||||
// Create a new form object.
|
fes = dynamic_cast<NLGEORGES::CFormElmStruct *>(getRootNode(i+1));
|
||||||
NLGEORGES::CForm *form = new NLGEORGES::CForm();
|
|
||||||
m_form = form;
|
|
||||||
|
|
||||||
// Retrieve a copy of the root definition.
|
|
||||||
NLGEORGES::CFormDfn *formDfn = dynamic_cast<NLGEORGES::CFormDfn *>(m_georges->loadFormDfn(dfnName.toAscii().data()));
|
|
||||||
|
|
||||||
// Next we'll use the root node to build a new form.
|
|
||||||
NLGEORGES::CFormElmStruct *fes = dynamic_cast<NLGEORGES::CFormElmStruct *>(getRootNode(0));
|
|
||||||
fes->build(formDfn);
|
fes->build(formDfn);
|
||||||
|
|
||||||
// And then initialize the held elements;
|
|
||||||
for(uint i = 0; i<NLGEORGES::CForm::HeldElementCount; i++)
|
|
||||||
{
|
|
||||||
fes = dynamic_cast<NLGEORGES::CFormElmStruct *>(getRootNode(i+1));
|
|
||||||
fes->build(formDfn);
|
|
||||||
}
|
|
||||||
|
|
||||||
return form;
|
|
||||||
}
|
}
|
||||||
nlinfo("File '%s' does not exist!", dfnName.toAscii().data());
|
|
||||||
return NULL;
|
return form;
|
||||||
}
|
}
|
||||||
|
|
||||||
NLGEORGES::CFormElm *CGeorgesTreeViewDialog::getRootNode(uint slot)
|
NLGEORGES::CFormElm *CGeorgesTreeViewDialog::getRootNode(uint slot)
|
||||||
|
@ -311,19 +306,9 @@ namespace GeorgesQt
|
||||||
|
|
||||||
bool CGeorgesTreeViewDialog::load( const QString &fileName )
|
bool CGeorgesTreeViewDialog::load( const QString &fileName )
|
||||||
{
|
{
|
||||||
bool loadFromDFN = false;
|
|
||||||
|
|
||||||
// Retrieve the form and load the form.
|
// Retrieve the form and load the form.
|
||||||
NLGEORGES::CForm *form;
|
NLGEORGES::CForm *form = getFormByName(fileName);
|
||||||
if(loadFromDFN)
|
|
||||||
{
|
|
||||||
// Get the form by DFN name.
|
|
||||||
form = getFormByDfnName(fileName);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
form = getFormByName(fileName);
|
|
||||||
}
|
|
||||||
|
|
||||||
if( form == NULL )
|
if( form == NULL )
|
||||||
return false;
|
return false;
|
||||||
|
@ -421,6 +406,26 @@ namespace GeorgesQt
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CGeorgesTreeViewDialog::newDocument( const QString &fileName, const QString &dfn )
|
||||||
|
{
|
||||||
|
NLGEORGES::CForm *form = getFormByDfnName(dfn);
|
||||||
|
|
||||||
|
if( form == NULL )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
setForm(form);
|
||||||
|
loadFormIntoDialog(form);
|
||||||
|
QApplication::processEvents();
|
||||||
|
|
||||||
|
m_fileName = fileName;
|
||||||
|
|
||||||
|
QFileInfo info( fileName );
|
||||||
|
setWindowTitle( info.fileName() + "*" );
|
||||||
|
setModified( true );
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void CGeorgesTreeViewDialog::doubleClicked ( const QModelIndex & index )
|
void CGeorgesTreeViewDialog::doubleClicked ( const QModelIndex & index )
|
||||||
{
|
{
|
||||||
//CGeorgesFormModel *model =
|
//CGeorgesFormModel *model =
|
||||||
|
|
|
@ -71,6 +71,7 @@ namespace GeorgesQt
|
||||||
|
|
||||||
bool load( const QString &fileName );
|
bool load( const QString &fileName );
|
||||||
void write ( );
|
void write ( );
|
||||||
|
bool newDocument( const QString &fileName, const QString &dfn );
|
||||||
|
|
||||||
QTabWidget* tabWidget() { return m_ui.treeViewTabWidget; }
|
QTabWidget* tabWidget() { return m_ui.treeViewTabWidget; }
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue