mmtalaie
4 years ago
commit
48e0706275
7 changed files with 831 additions and 0 deletions
@ -0,0 +1,29 @@ |
|||
QT += core gui |
|||
QT += xml |
|||
|
|||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets |
|||
|
|||
CONFIG += c++11 |
|||
|
|||
# The following define makes your compiler emit warnings if you use |
|||
# any Qt feature that has been marked deprecated (the exact warnings |
|||
# depend on your compiler). Please consult the documentation of the |
|||
# deprecated API in order to know how to port your code away from it. |
|||
DEFINES += QT_DEPRECATED_WARNINGS |
|||
|
|||
# You can also make your code fail to compile if it uses deprecated APIs. |
|||
# In order to do so, uncomment the following line. |
|||
# You can also select to disable deprecated APIs only up to a certain version of Qt. |
|||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 |
|||
|
|||
SOURCES += $$files(*.cpp, true) \ |
|||
|
|||
HEADERS += $$files(*.h, true) |
|||
|
|||
FORMS += \ |
|||
mainwindow.ui |
|||
|
|||
# Default rules for deployment. |
|||
qnx: target.path = /tmp/$${TARGET}/bin |
|||
else: unix:!android: target.path = /opt/$${TARGET}/bin |
|||
!isEmpty(target.path): INSTALLS += target |
@ -0,0 +1,188 @@ |
|||
#include "XMLReader.h" |
|||
|
|||
/*****************************************************************************/ |
|||
/**
|
|||
* @brief Constructor |
|||
* @details |
|||
* |
|||
* @return Nothing |
|||
*/ |
|||
/*****************************************************************************/ |
|||
XMLReader::XMLReader(QString xmlAddress) |
|||
{ |
|||
QFile xmlFile(xmlAddress); |
|||
if(!xmlFile.open(QIODevice::ReadOnly)) |
|||
{ |
|||
//"XML file not find"
|
|||
} |
|||
if (!_xmlDoc.setContent(&xmlFile)) |
|||
{ |
|||
// "Oops!!, The file is not a xml file."
|
|||
} |
|||
xmlFile.close(); |
|||
getDatabaseNameList(); |
|||
} |
|||
|
|||
|
|||
|
|||
/*****************************************************************************/ |
|||
/**
|
|||
* @brief Get a list of databases's Names |
|||
* @details |
|||
* |
|||
* @return QVector<QString> DBNames |
|||
*/ |
|||
/*****************************************************************************/ |
|||
QVector<QString> XMLReader::getDatabaseNameList() |
|||
{ |
|||
_DBElementVector.clear(); |
|||
_root = _xmlDoc.firstChildElement(); |
|||
QDomNodeList DBs = _root.elementsByTagName("Database"); |
|||
for (int DBIndex = 0; DBIndex < DBs.count(); ++DBIndex ) |
|||
{ |
|||
QDomElement DBElement = DBs.at(DBIndex).toElement(); |
|||
_DBNameVector.append(DBElement.attribute("name")); |
|||
_DBElementVector.append(DBElement); |
|||
} |
|||
return _DBNameVector; |
|||
} |
|||
|
|||
/*****************************************************************************/ |
|||
/**
|
|||
* @brief Method to get a list of a database's tables |
|||
* @details |
|||
* |
|||
* @return QVector<QString> tblNmaes |
|||
*/ |
|||
/*****************************************************************************/ |
|||
QVector<QString> XMLReader::getDBTableList(QString DBName) |
|||
{ |
|||
_tableNamevector.clear(); |
|||
bool wasDB = false; |
|||
for (int i = 0; i < _DBElementVector.count(); ++i) |
|||
{ |
|||
if(_DBElementVector.at(i).attribute("name") == DBName) |
|||
{ |
|||
wasDB = true; |
|||
if(!_DBElementVector.at(i).isElement()) |
|||
{ |
|||
QString logText = "Oops!!, The xml file is incorrect. Error was at : " + |
|||
_DBElementVector.at(i).text(); |
|||
//Erorr logText
|
|||
break; |
|||
|
|||
} |
|||
QDomNodeList tblNodes = _DBElementVector.at(i).elementsByTagName("Table"); |
|||
for (int tindex = 0; tindex < tblNodes.count(); ++tindex) |
|||
{ |
|||
QDomElement tableElement = tblNodes.at(tindex).toElement(); |
|||
_tableElementVector.append(tableElement); |
|||
_tableNamevector.append(tableElement.attribute("name")); |
|||
} |
|||
break; |
|||
} |
|||
} |
|||
if(!wasDB) |
|||
{ |
|||
QString logText = "Oops!!, The xml file does not have Database Tage by name : " + |
|||
DBName; |
|||
//Erorr logText
|
|||
return _tableNamevector ; |
|||
} |
|||
if( _tableNamevector.count() == 0) |
|||
{ |
|||
QString logText = "Oops!!, The " + |
|||
DBName + |
|||
"exist but does not have any table"; |
|||
//Erorr logText
|
|||
return _tableNamevector ; |
|||
} |
|||
|
|||
return _tableNamevector ; |
|||
} |
|||
|
|||
|
|||
/*****************************************************************************/ |
|||
/**
|
|||
* @brief Method to get a list of a database's tables |
|||
* @details |
|||
* |
|||
* @return QVector<QString> tblNmaes |
|||
*/ |
|||
/*****************************************************************************/ |
|||
QVector<QString> XMLReader::getDBTableList(QDomElement DBElement) |
|||
{ |
|||
_tableNamevector.clear(); |
|||
QDomNodeList tblNodes = DBElement.elementsByTagName("Table"); |
|||
for (int tblIndex = 0; tblIndex < tblNodes.count(); ++tblIndex) |
|||
{ |
|||
if(!tblNodes.at(tblIndex).isElement()) |
|||
{ |
|||
QString logText = "Oops!!, The xml Database Tage by name : " + |
|||
DBElement.attribute("name") + |
|||
" is not xml element"; |
|||
//Error logText
|
|||
break; |
|||
} |
|||
QDomElement tableElement = tblNodes.at(tblIndex).toElement(); |
|||
_tableNamevector.append(tableElement.attribute("name")); |
|||
} |
|||
if( _tableNamevector.count() == 0) |
|||
{ |
|||
QString logText = "Oops!!, The " + |
|||
DBElement.attribute("name") + |
|||
"exist but does not have any table"; |
|||
//Error logText
|
|||
|
|||
} |
|||
return _tableNamevector; |
|||
} |
|||
QVector<QDomElement> XMLReader::getLastFieldElements() |
|||
{ |
|||
return _fieldElementVector; |
|||
} |
|||
|
|||
QVector<QDomElement> XMLReader::getFieldElements(QDomElement tableElement) |
|||
{ |
|||
_fieldElementVector.clear(); |
|||
QDomNodeList fieldNodes = tableElement.elementsByTagName("Field"); |
|||
if(fieldNodes .count() > 0) |
|||
{ |
|||
for(int i = 0; i < fieldNodes.count(); i++) |
|||
{ |
|||
_fieldElementVector.append(fieldNodes.at(i).toElement()); |
|||
} |
|||
} |
|||
else |
|||
{ |
|||
//Error there is no Field.
|
|||
} |
|||
return _fieldElementVector; |
|||
} |
|||
QVector<QDomElement> XMLReader::getFieldElements(QString tableName) |
|||
{ |
|||
_fieldElementVector.clear(); |
|||
if(_tableElementVector.count() > 0) |
|||
{ |
|||
for(int j = 0; j < _tableElementVector.count(); j++) |
|||
{ |
|||
if(_tableElementVector.at(j).attribute("name") == tableName) |
|||
{ |
|||
QDomNodeList fieldNodes = _tableElementVector.at(j).elementsByTagName("Field"); |
|||
if(fieldNodes .count() > 0) |
|||
{ |
|||
for(int i = 0; i < fieldNodes.count(); i++) |
|||
{ |
|||
_fieldElementVector.append(fieldNodes.at(i).toElement()); |
|||
} |
|||
} |
|||
else |
|||
{ |
|||
//Error there is no Field.
|
|||
} |
|||
break; |
|||
} |
|||
} |
|||
} |
|||
return _fieldElementVector; |
|||
} |
@ -0,0 +1,41 @@ |
|||
#ifndef XMLREADER_H |
|||
#define XMLREADER_H |
|||
#include <QObject> |
|||
#include <QtXml> |
|||
|
|||
class XMLReader |
|||
{ |
|||
private: |
|||
QDomDocument _xmlDoc; |
|||
QString _xmlAddress; |
|||
QDomElement _root; |
|||
QVector<QString> _DBNameVector; |
|||
QVector<QString> _tableNamevector; |
|||
QVector<QDomElement> _tableElementVector; |
|||
QVector<QDomElement> _DBElementVector; |
|||
QVector<QDomElement> _fieldElementVector; |
|||
// XMLReader operator=(const XMLReader& ixml)
|
|||
// {
|
|||
// _xmlDoc = ixml._xmlDoc;
|
|||
// _xmlAddress = ixml._xmlAddress;
|
|||
// _root = ixml._root;
|
|||
// _DBNameVector = ixml._DBNameVector;
|
|||
// _DBElementVector = ixml._DBElementVector;
|
|||
// _tableNamevector = ixml._tableNamevector;
|
|||
// _tableElementVector = ixml._tableElementVector;
|
|||
// _fieldElementVector = ixml._fieldElementVector;
|
|||
// }
|
|||
|
|||
public: |
|||
XMLReader(QString xmlAddress); |
|||
QVector<QString> getDatabaseNameList(); |
|||
QVector<QString> getDBTableList(QString DBName); |
|||
QVector<QString> getDBTableList(QDomElement DBElement); |
|||
QVector<QDomElement> getFieldElements(QDomElement tableElement); |
|||
QVector<QDomElement> getFieldElements(QString tableName); |
|||
QVector<QDomElement> getLastFieldElements(); |
|||
|
|||
|
|||
}; |
|||
|
|||
#endif // XMLREADER_H
|
@ -0,0 +1,11 @@ |
|||
#include "mainwindow.h" |
|||
|
|||
#include <QApplication> |
|||
|
|||
int main(int argc, char *argv[]) |
|||
{ |
|||
QApplication a(argc, argv); |
|||
MainWindow w; |
|||
w.show(); |
|||
return a.exec(); |
|||
} |
@ -0,0 +1,304 @@ |
|||
#include "mainwindow.h" |
|||
#include "ui_mainwindow.h" |
|||
|
|||
MainWindow::MainWindow(QWidget *parent) |
|||
: QMainWindow(parent) |
|||
, ui(new Ui::MainWindow) |
|||
{ |
|||
ui->setupUi(this); |
|||
_model = new QStandardItemModel(0,1,this); |
|||
ui->treeView->setModel(_model); |
|||
hideWidgets(); |
|||
} |
|||
|
|||
MainWindow::~MainWindow() |
|||
{ |
|||
delete ui; |
|||
} |
|||
|
|||
void MainWindow::readFile() |
|||
{ |
|||
_model->clear(); |
|||
QStandardItem *root = new QStandardItem("root:Root"); |
|||
_model->appendRow(root); |
|||
|
|||
QDomDocument document; |
|||
|
|||
//load file
|
|||
QFile file(_fileName); |
|||
if(file.open(QIODevice::ReadOnly | QIODevice::Text)) |
|||
{ |
|||
document.setContent(&file); |
|||
file.close(); |
|||
} |
|||
|
|||
//read xml file
|
|||
QDomElement xmlroot = document.firstChildElement(); |
|||
|
|||
QDomNodeList Databases = xmlroot.elementsByTagName("Database"); |
|||
for (int i = 0; i < Databases.count(); ++i) |
|||
{ |
|||
QDomElement database= Databases.at(i).toElement(); |
|||
_DBElementVector.append(database); |
|||
_DBNameVector.append(database.attribute("name")); |
|||
QStandardItem *databaseItem = new QStandardItem(QString("DB : %1").arg(database.attribute("name"))); |
|||
|
|||
//read tables
|
|||
QDomNodeList tables = database.elementsByTagName("Table"); |
|||
for (int t = 0; t < tables.count(); ++t) |
|||
{ |
|||
QDomElement table = tables.at(t).toElement(); |
|||
QStandardItem *tableItem = new QStandardItem(QString("TBL : %1").arg(table.attribute("name"))); |
|||
|
|||
//read Field
|
|||
// QDomNodeList fields = table.elementsByTagName("Field");
|
|||
// for (int f = 0; f < fields.count(); ++f)
|
|||
// {
|
|||
// QDomElement field = fields.at(f).toElement();
|
|||
// QStandardItem *fieldItem = new QStandardItem(QString("FLD : %1").arg(field.attribute("name")));
|
|||
//// "Name: "+field.attribute("name") + "; Type: " + field.attribute("type") + "; Allow Null: " + field.attribute("null") + "; Is Forign key:" + field.attribute("isforeignkey"));
|
|||
|
|||
// tableItem->appendRow(fieldItem);
|
|||
// }
|
|||
databaseItem->appendRow(tableItem); |
|||
} |
|||
root->appendRow(databaseItem); |
|||
} |
|||
_xmlDoc = document; |
|||
} |
|||
|
|||
void MainWindow::on_actionOpen_triggered() |
|||
{ |
|||
_fileName = QFileDialog::getOpenFileName(this, |
|||
tr("Open XML file"), "/home/", |
|||
tr("Address XML (*.xml);;All Files (*)")); |
|||
this->_xmlReader =new XMLReader(_fileName); |
|||
readFile(); |
|||
} |
|||
|
|||
|
|||
MainWindow::eElementType MainWindow::getElementType(QModelIndex indInput) |
|||
{ |
|||
auto dataSptd = indInput.data().toString().split(" : "); |
|||
|
|||
if(dataSptd.at(0) == "root") |
|||
return MainWindow::eElementType::root; |
|||
else if(dataSptd.at(0) == "DB") |
|||
return MainWindow::eElementType::database; |
|||
else if(dataSptd.at(0) == "TBL") |
|||
return MainWindow::eElementType::table; |
|||
else if(dataSptd.at(0) == "FLD") |
|||
return MainWindow::eElementType::field; |
|||
else |
|||
return MainWindow::eElementType::unknown; |
|||
} |
|||
|
|||
void MainWindow::on_treeView_doubleClicked(const QModelIndex &index) |
|||
{ |
|||
//hideWidgets();
|
|||
auto type = getElementType(index); |
|||
switch (type) |
|||
{ |
|||
case MainWindow::eElementType::root: |
|||
{ |
|||
break; |
|||
} |
|||
case MainWindow::eElementType::database: |
|||
{ |
|||
break; |
|||
} |
|||
case MainWindow::eElementType::table : |
|||
{ |
|||
auto database = index.parent(); |
|||
_lastDBElement.clear(); |
|||
for (int i = 0; i < _xmlDoc.firstChild().childNodes().count(); ++i) |
|||
{ |
|||
if(_xmlDoc.firstChild().childNodes().at(i).toElement().attribute("name") == database.data().toString().split(" : ").at(1)) |
|||
{ |
|||
_lastDBElement = _xmlDoc.firstChild().childNodes().at(i).toElement(); |
|||
break; |
|||
} |
|||
} |
|||
_xmlReader->getDBTableList(_lastDBElement.attribute("name")); |
|||
for (int i = 0; i < _lastDBElement.childNodes().count(); ++i) |
|||
{ |
|||
auto tblItem = _lastDBElement.childNodes().at(i); |
|||
auto elem = tblItem.toElement(); |
|||
if(elem.attribute("name") == index.data().toString().split(" : ").at(1)) |
|||
{ |
|||
_fieldElemensVector.clear(); |
|||
_lastTableElement = elem; |
|||
_fieldElemensVector = _xmlReader->getFieldElements(elem.attribute("name")); |
|||
qDebug() << _fieldElemensVector.count(); |
|||
qDebug() << elem.attribute("name"); |
|||
qDebug() << _lastTableElement.attribute("name"); |
|||
} |
|||
} |
|||
ui->pushButton->setText("Create Init"); |
|||
ui->pushButton->show(); |
|||
break; |
|||
} |
|||
} |
|||
|
|||
|
|||
} |
|||
|
|||
void MainWindow::on_pushButton_clicked() |
|||
{ |
|||
qDebug() << _lastTableElement.attribute("name"); |
|||
hideWidgets(); |
|||
if(_xmlInitDataDoc.isNull()) |
|||
{ |
|||
//create root element
|
|||
_rootInitData = _xmlInitDataDoc.createElement("Root"); |
|||
_xmlInitDataDoc.appendChild(_rootInitData); |
|||
} |
|||
if(! hasDatabaseChild(_rootInitData,_lastDBElement.attribute("name"))) |
|||
{ |
|||
//create database element
|
|||
_lastDBElementInitData = _xmlInitDataDoc.createElement("Database"); |
|||
_lastDBElementInitData.setAttribute("name",_lastDBElement.attribute("name")); |
|||
_rootInitData.appendChild(_lastDBElementInitData); |
|||
} |
|||
else |
|||
{ |
|||
auto dbs = _rootInitData.elementsByTagName("Database"); |
|||
for (int i = 0; i < dbs.count(); ++i) |
|||
{ |
|||
if(dbs.at(i).toElement().attribute("name") == _lastDBElement.attribute("name")) |
|||
{ |
|||
_lastDBElementInitData = dbs.at(i).toElement(); |
|||
break; |
|||
} |
|||
} |
|||
} |
|||
qDebug() << _lastTableElement.attribute("name"); |
|||
if(!hasTableChild(_lastDBElementInitData,_lastTableElement.attribute("name"))) |
|||
{ |
|||
_lastTableElementInitData = _xmlInitDataDoc.createElement("Table"); |
|||
qDebug()<<_lastTableElement.attribute("name"); |
|||
_lastTableElementInitData.setAttribute("name", _lastTableElement.attribute("name")); |
|||
_lastDBElementInitData.appendChild(_lastTableElementInitData); |
|||
} |
|||
else |
|||
{ |
|||
auto tbls = _lastDBElementInitData.elementsByTagName("Table"); |
|||
for (int i = 0; i < tbls.count(); ++i) |
|||
{ |
|||
if(tbls.at(i).toElement().attribute("name") == _lastTableElement.attribute("name")) |
|||
{ |
|||
_lastTableElementInitData = tbls.at(i).toElement(); |
|||
break; |
|||
} |
|||
} |
|||
} |
|||
_lastEntityElementInitData = _xmlInitDataDoc.createElement("entity"); |
|||
_lastTableElementInitData.appendChild(_lastEntityElementInitData); |
|||
_fieldIndex = 0; |
|||
initUI(); |
|||
|
|||
|
|||
} |
|||
|
|||
|
|||
void MainWindow::initUI() |
|||
{ |
|||
hideWidgets(); |
|||
ui->label_3->setText("put data into line Edit."); |
|||
ui->label_3->show(); |
|||
auto fieldElement = _fieldElemensVector.at(_fieldIndex).toElement(); |
|||
ui->label_4->setText(fieldElement.attribute("name")); |
|||
ui->label_4->show(); |
|||
// if(fieldElement.attribute("type").toLower().contains("varchar"))
|
|||
// {
|
|||
// ui->label_2->show();
|
|||
// ui->comboBox->itemData(0);
|
|||
// ui->comboBox->show();
|
|||
// }
|
|||
ui->lineEdit->clear(); |
|||
ui->lineEdit->show(); |
|||
ui->label->show(); |
|||
if(_fieldIndex < _fieldElemensVector.count()-1) |
|||
{ |
|||
ui->pushButton_3->setText("Next Field"); |
|||
ui->pushButton_3->show(); |
|||
} |
|||
else if(_fieldIndex == _fieldElemensVector.count() - 1) |
|||
{ |
|||
ui->pushButton_3->setText("Done"); |
|||
ui->pushButton_3->show(); |
|||
} |
|||
} |
|||
|
|||
bool MainWindow::hasDatabaseChild(QDomElement xmlRoot, QString DBName) |
|||
{ |
|||
auto dbs = xmlRoot.elementsByTagName("Database"); |
|||
for (int i = 0; i < dbs.count(); ++i) |
|||
{ |
|||
if(dbs.at(i).toElement().attribute("name") == DBName) |
|||
return true; |
|||
} |
|||
return false; |
|||
} |
|||
bool MainWindow::hasTableChild(QDomElement database, QString tableName) |
|||
{ |
|||
auto tbls = database.elementsByTagName("Table"); |
|||
for (int i = 0; i < tbls.count(); ++i) |
|||
{ |
|||
if(tbls.at(i).toElement().attribute("name") == tableName) |
|||
return true; |
|||
} |
|||
return false; |
|||
} |
|||
void MainWindow::hideWidgets() |
|||
{ |
|||
ui->label->hide(); |
|||
ui->label_2->hide(); |
|||
// ui->label_3->hide();
|
|||
ui->label_4->hide(); |
|||
ui->pushButton->hide(); |
|||
ui->pushButton_2->hide(); |
|||
ui->pushButton_3->hide(); |
|||
ui->lineEdit->hide(); |
|||
ui->comboBox->hide(); |
|||
} |
|||
|
|||
void MainWindow::on_pushButton_3_clicked() |
|||
{ |
|||
auto sourceField = _fieldElemensVector.at(_fieldIndex).toElement(); |
|||
_lastFieldElementInitData = _xmlInitDataDoc.createElement("Field"); |
|||
_lastFieldElementInitData.setAttribute("name", sourceField.attribute("name")); |
|||
_lastFieldElementInitData.setAttribute("type", sourceField.attribute("type")); |
|||
_lastFieldElementInitData.setAttribute("value",ui->lineEdit->text()); |
|||
_lastEntityElementInitData.appendChild(_lastFieldElementInitData); |
|||
_fieldIndex++; |
|||
if(_fieldIndex < _fieldElemensVector.count()) |
|||
{ |
|||
|
|||
initUI(); |
|||
} |
|||
else |
|||
{ |
|||
hideWidgets(); |
|||
} |
|||
} |
|||
|
|||
|
|||
void MainWindow::writeFile() |
|||
{ |
|||
_fileName = QFileDialog::getSaveFileName(this); |
|||
QFile savefile(_fileName); |
|||
if(!savefile.open(QIODevice::WriteOnly | QIODevice::Text)) |
|||
{ |
|||
qDebug()<< "Ops! can not create file"; |
|||
} |
|||
QTextStream stream(&savefile); |
|||
stream<<_xmlInitDataDoc.toString(); |
|||
savefile.close(); |
|||
|
|||
} |
|||
|
|||
void MainWindow::on_actionSave_triggered() |
|||
{ |
|||
writeFile(); |
|||
} |
@ -0,0 +1,81 @@ |
|||
#ifndef MAINWINDOW_H |
|||
#define MAINWINDOW_H |
|||
|
|||
#include <QMainWindow> |
|||
#include <QFileDialog> |
|||
#include <QtCore> |
|||
#include <QtGui> |
|||
#include <QtXml> |
|||
#include <QDebug> |
|||
#include "XMLReader.h" |
|||
|
|||
QT_BEGIN_NAMESPACE |
|||
namespace Ui { class MainWindow; } |
|||
QT_END_NAMESPACE |
|||
|
|||
class MainWindow : public QMainWindow |
|||
{ |
|||
Q_OBJECT |
|||
|
|||
public: |
|||
MainWindow(QWidget *parent = nullptr); |
|||
~MainWindow(); |
|||
enum eElementType:quint8 |
|||
{ |
|||
root, |
|||
database, |
|||
table, |
|||
field, |
|||
unknown |
|||
}; |
|||
|
|||
|
|||
|
|||
|
|||
private slots: |
|||
void on_actionOpen_triggered(); |
|||
|
|||
void on_treeView_doubleClicked(const QModelIndex &index); |
|||
|
|||
void on_pushButton_clicked(); |
|||
|
|||
void on_pushButton_3_clicked(); |
|||
|
|||
void on_actionSave_triggered(); |
|||
|
|||
private: |
|||
Ui::MainWindow *ui; |
|||
QStandardItemModel *_model; |
|||
QString _fileName; |
|||
//dbData
|
|||
QDomDocument _xmlDoc; |
|||
QDomElement _rootData; |
|||
QDomElement _lastDBElement; |
|||
QDomElement _lastTableElement; |
|||
QVector<QDomElement> _fieldElemensVector; |
|||
//
|
|||
QString _xmlDBAddress; |
|||
//initData
|
|||
QDomDocument _xmlInitDataDoc; |
|||
QDomElement _rootInitData; |
|||
QDomElement _lastDBElementInitData; |
|||
QDomElement _lastTableElementInitData; |
|||
QDomElement _lastEntityElementInitData; |
|||
QDomElement _lastFieldElementInitData; |
|||
XMLReader* _xmlReader; |
|||
|
|||
QVector<QString> _DBNameVector; |
|||
QVector<QDomElement> _DBElementVector; |
|||
eElementType getElementType(QModelIndex indInput); |
|||
bool hasDatabaseChild(QDomElement xmlRoot, QString DBName); |
|||
bool hasTableChild(QDomElement database, QString tableName); |
|||
void initUI(); |
|||
int _fieldIndex = 0; |
|||
|
|||
|
|||
|
|||
void readFile(); |
|||
void writeFile(); |
|||
void hideWidgets(); |
|||
}; |
|||
#endif // MAINWINDOW_H
|
@ -0,0 +1,177 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<ui version="4.0"> |
|||
<class>MainWindow</class> |
|||
<widget class="QMainWindow" name="MainWindow"> |
|||
<property name="geometry"> |
|||
<rect> |
|||
<x>0</x> |
|||
<y>0</y> |
|||
<width>800</width> |
|||
<height>600</height> |
|||
</rect> |
|||
</property> |
|||
<property name="windowTitle"> |
|||
<string>MainWindow</string> |
|||
</property> |
|||
<widget class="QWidget" name="centralwidget"> |
|||
<widget class="QTreeView" name="treeView"> |
|||
<property name="geometry"> |
|||
<rect> |
|||
<x>0</x> |
|||
<y>220</y> |
|||
<width>791</width> |
|||
<height>331</height> |
|||
</rect> |
|||
</property> |
|||
</widget> |
|||
<widget class="QPushButton" name="pushButton"> |
|||
<property name="geometry"> |
|||
<rect> |
|||
<x>11</x> |
|||
<y>55</y> |
|||
<width>89</width> |
|||
<height>25</height> |
|||
</rect> |
|||
</property> |
|||
<property name="text"> |
|||
<string>PushButton</string> |
|||
</property> |
|||
</widget> |
|||
<widget class="QPushButton" name="pushButton_2"> |
|||
<property name="geometry"> |
|||
<rect> |
|||
<x>590</x> |
|||
<y>190</y> |
|||
<width>89</width> |
|||
<height>25</height> |
|||
</rect> |
|||
</property> |
|||
<property name="text"> |
|||
<string>PushButton</string> |
|||
</property> |
|||
</widget> |
|||
<widget class="QPushButton" name="pushButton_3"> |
|||
<property name="geometry"> |
|||
<rect> |
|||
<x>690</x> |
|||
<y>190</y> |
|||
<width>89</width> |
|||
<height>25</height> |
|||
</rect> |
|||
</property> |
|||
<property name="text"> |
|||
<string>PushButton</string> |
|||
</property> |
|||
</widget> |
|||
<widget class="QLabel" name="label"> |
|||
<property name="geometry"> |
|||
<rect> |
|||
<x>10</x> |
|||
<y>170</y> |
|||
<width>47</width> |
|||
<height>17</height> |
|||
</rect> |
|||
</property> |
|||
<property name="text"> |
|||
<string>Input : </string> |
|||
</property> |
|||
</widget> |
|||
<widget class="QLineEdit" name="lineEdit"> |
|||
<property name="geometry"> |
|||
<rect> |
|||
<x>120</x> |
|||
<y>160</y> |
|||
<width>651</width> |
|||
<height>25</height> |
|||
</rect> |
|||
</property> |
|||
</widget> |
|||
<widget class="QLabel" name="label_2"> |
|||
<property name="geometry"> |
|||
<rect> |
|||
<x>11</x> |
|||
<y>119</y> |
|||
<width>40</width> |
|||
<height>17</height> |
|||
</rect> |
|||
</property> |
|||
<property name="text"> |
|||
<string>Type :</string> |
|||
</property> |
|||
</widget> |
|||
<widget class="QComboBox" name="comboBox"> |
|||
<property name="geometry"> |
|||
<rect> |
|||
<x>120</x> |
|||
<y>120</y> |
|||
<width>111</width> |
|||
<height>25</height> |
|||
</rect> |
|||
</property> |
|||
</widget> |
|||
<widget class="QLabel" name="label_4"> |
|||
<property name="geometry"> |
|||
<rect> |
|||
<x>11</x> |
|||
<y>86</y> |
|||
<width>331</width> |
|||
<height>17</height> |
|||
</rect> |
|||
</property> |
|||
<property name="text"> |
|||
<string>TextLabel</string> |
|||
</property> |
|||
</widget> |
|||
<widget class="QLabel" name="label_3"> |
|||
<property name="geometry"> |
|||
<rect> |
|||
<x>11</x> |
|||
<y>21</y> |
|||
<width>491</width> |
|||
<height>17</height> |
|||
</rect> |
|||
</property> |
|||
<property name="text"> |
|||
<string>TextLabel</string> |
|||
</property> |
|||
</widget> |
|||
</widget> |
|||
<widget class="QMenuBar" name="menubar"> |
|||
<property name="geometry"> |
|||
<rect> |
|||
<x>0</x> |
|||
<y>0</y> |
|||
<width>800</width> |
|||
<height>22</height> |
|||
</rect> |
|||
</property> |
|||
<widget class="QMenu" name="menuFile"> |
|||
<property name="title"> |
|||
<string>File</string> |
|||
</property> |
|||
<addaction name="actionOpen"/> |
|||
<addaction name="actionSave"/> |
|||
<addaction name="actionClose"/> |
|||
</widget> |
|||
<addaction name="menuFile"/> |
|||
</widget> |
|||
<widget class="QStatusBar" name="statusbar"/> |
|||
<action name="actionOpen"> |
|||
<property name="text"> |
|||
<string>Open</string> |
|||
</property> |
|||
</action> |
|||
<action name="actionSave"> |
|||
<property name="text"> |
|||
<string>Save</string> |
|||
</property> |
|||
</action> |
|||
<action name="actionClose"> |
|||
<property name="text"> |
|||
<string>Close</string> |
|||
</property> |
|||
</action> |
|||
</widget> |
|||
<resources/> |
|||
<connections/> |
|||
</ui> |
Loading…
Reference in new issue