CHANGED: #1471 Project file changes in the project window will now be applied. Also it will cause the GUI XML files to be reparsed and the NelGUI widget to be redrawn.

This commit is contained in:
dfighter1985 2012-07-20 03:50:23 +02:00
parent d57cdaed09
commit 5d04c95e1c
5 changed files with 88 additions and 5 deletions

View file

@ -43,6 +43,7 @@ namespace GUIEditor
{ {
QString _lastDir; QString _lastDir;
std::map< std::string, SWidgetInfo > widgetInfo; std::map< std::string, SWidgetInfo > widgetInfo;
SProjectFiles projectFiles;
GUIEditorWindow::GUIEditorWindow(QWidget *parent) : GUIEditorWindow::GUIEditorWindow(QWidget *parent) :
QMainWindow(parent) QMainWindow(parent)
@ -53,6 +54,7 @@ namespace GUIEditor
linkEditor = new LinkEditor; linkEditor = new LinkEditor;
procEditor = new ProcEditor; procEditor = new ProcEditor;
projectWindow = new ProjectWindow; projectWindow = new ProjectWindow;
connect( projectWindow, SIGNAL( projectFilesChanged() ), this, SLOT( onProjectFilesChanged() ) );
viewPort = new NelGUIWidget; viewPort = new NelGUIWidget;
setCentralWidget( viewPort ); setCentralWidget( viewPort );
@ -138,12 +140,35 @@ namespace GUIEditor
setCursor( Qt::ArrowCursor ); setCursor( Qt::ArrowCursor );
return; return;
} }
SProjectFiles projectFiles; projectFiles.clear();
parser.getProjectFiles( projectFiles ); parser.getProjectFiles( projectFiles );
currentProject = parser.getProjectName().c_str(); currentProject = parser.getProjectName().c_str();
projectWindow->setupFiles( projectFiles ); projectWindow->setupFiles( projectFiles );
viewPort->parse( projectFiles ); if( viewPort->parse( projectFiles ) )
viewPort->draw(); viewPort->draw();
else
{
QMessageBox::critical( this,
tr( "Error parsing GUI XML files" ),
tr( "There was an error while parsing the GUI XML files. See the log file for details." ) );
}
setCursor( Qt::ArrowCursor );
}
void GUIEditorWindow::onProjectFilesChanged()
{
setCursor( Qt::WaitCursor );
projectWindow->updateFiles( projectFiles );
if( !viewPort->parse( projectFiles ) )
{
QMessageBox::critical( this,
tr( "Error parsing GUI XML files" ),
tr( "There was an error while parsing the GUI XML files. See the log file for details." ) );
}
else
viewPort->draw();
setCursor( Qt::ArrowCursor ); setCursor( Qt::ArrowCursor );
} }

View file

@ -49,6 +49,7 @@ public Q_SLOTS:
void open(); void open();
private Q_SLOTS: private Q_SLOTS:
void onProjectFilesChanged();
private: private:
void createMenus(); void createMenus();

View file

@ -28,6 +28,12 @@ namespace GUIEditor
public: public:
std::vector< std::string > guiFiles; std::vector< std::string > guiFiles;
std::vector< std::string > mapFiles; std::vector< std::string > mapFiles;
void clear()
{
guiFiles.clear();
mapFiles.clear();
}
}; };
} }

View file

@ -25,7 +25,9 @@ namespace GUIEditor
QWidget( parent ) QWidget( parent )
{ {
setupUi( this ); setupUi( this );
connect( okButton, SIGNAL( clicked(bool) ), this, SLOT( hide() ) ); filesChanged = false;
connect( okButton, SIGNAL( clicked(bool) ), this, SLOT( onOKButtonClicked() ) );
connect( cancelButton, SIGNAL( clicked(bool) ), this, SLOT( hide() ) ); connect( cancelButton, SIGNAL( clicked(bool) ), this, SLOT( hide() ) );
connect( addButton, SIGNAL( clicked(bool) ), this, SLOT( onAddButtonClicked() ) ); connect( addButton, SIGNAL( clicked(bool) ), this, SLOT( onAddButtonClicked() ) );
@ -73,6 +75,35 @@ namespace GUIEditor
} }
} }
void ProjectWindow::updateFiles( SProjectFiles &projectFiles )
{
projectFiles.clear();
QTreeWidgetItem *topItem;
topItem = fileTree->topLevelItem( 0 );
if( topItem != NULL )
{
int c = topItem->childCount();
for( int i = 0; i < c; i++ )
{
QTreeWidgetItem *item = topItem->child( i );
projectFiles.guiFiles.push_back( item->text( 0 ).toStdString() );
}
}
topItem = fileTree->topLevelItem( 1 );
if( topItem != NULL )
{
int c = topItem->childCount();
for( int i = 0; i < c; i++ )
{
QTreeWidgetItem *item = topItem->child( i );
projectFiles.mapFiles.push_back( item->text( 0 ).toStdString() );
}
}
}
void ProjectWindow::onAddButtonClicked() void ProjectWindow::onAddButtonClicked()
{ {
if( fileTree->currentItem() == NULL ) if( fileTree->currentItem() == NULL )
@ -99,6 +130,7 @@ namespace GUIEditor
{ {
QTreeWidgetItem *newItem = new QTreeWidgetItem( item ); QTreeWidgetItem *newItem = new QTreeWidgetItem( item );
newItem->setText( 0, newFile ); newItem->setText( 0, newFile );
filesChanged = true;
} }
} }
@ -120,9 +152,23 @@ namespace GUIEditor
QMessageBox::Yes | QMessageBox::Cancel ); QMessageBox::Yes | QMessageBox::Cancel );
if( reply == QMessageBox::Yes ) if( reply == QMessageBox::Yes )
{
fileTree->currentItem()->parent()->removeChild( fileTree->currentItem() ); fileTree->currentItem()->parent()->removeChild( fileTree->currentItem() );
filesChanged = true;
}
} }
void ProjectWindow::onOKButtonClicked()
{
hide();
if( filesChanged )
{
filesChanged = false;
Q_EMIT projectFilesChanged();
}
}
} }

View file

@ -33,13 +33,18 @@ namespace GUIEditor
~ProjectWindow(); ~ProjectWindow();
void setupFiles( SProjectFiles &projectFiles ); void setupFiles( SProjectFiles &projectFiles );
void updateFiles( SProjectFiles &projectFiles );
Q_SIGNALS:
void projectFilesChanged();
private Q_SLOTS: private Q_SLOTS:
void onAddButtonClicked(); void onAddButtonClicked();
void onRemoveButtonClicked(); void onRemoveButtonClicked();
void onOKButtonClicked();
private: private:
bool filesChanged;
}; };
} }