mainwindow.cpp 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. #include "MainWindow.h"
  2. #include <qfiledialog.h>
  3. #include <qsettings.h>
  4. #include <qdatastream.h>
  5. #include <qfile.h>
  6. #include <qtextstream.h>
  7. #include <qmessagebox.h>
  8. #include <QTextStream>
  9. #include "MessageException.h"
  10. #include "TableHelper.h"
  11. #include "DebugUtil.h"
  12. #include "WzExcel.h"
  13. MainWindow::MainWindow(QWidget *parent)
  14. : QMainWindow(parent)
  15. {
  16. ui.setupUi(this);
  17. QSettings setting("config.ini", QSettings::IniFormat);
  18. ui.modelPath->setText(setting.value("modelPath").toString());
  19. ui.servicePath->setText(setting.value("servicePath").toString());
  20. ui.widgetPath->setText(setting.value("widgetPath").toString());
  21. }
  22. void MainWindow::onModelPath()
  23. {
  24. QString path = QFileDialog::getExistingDirectory(this);
  25. ui.modelPath->setText(path);
  26. QSettings setting("config.ini", QSettings::IniFormat);
  27. setting.setValue("modelPath", path);
  28. }
  29. void MainWindow::onServicePath()
  30. {
  31. QString path = QFileDialog::getExistingDirectory(this);
  32. ui.servicePath->setText(path);
  33. QSettings setting("config.ini", QSettings::IniFormat);
  34. setting.setValue("servicePath", path);
  35. }
  36. void MainWindow::onWidgetPath()
  37. {
  38. QString path = QFileDialog::getExistingDirectory(this);
  39. ui.widgetPath->setText(path);
  40. QSettings setting("config.ini", QSettings::IniFormat);
  41. setting.setValue("widgetPath", path);
  42. }
  43. void MainWindow::onGenerate()
  44. {
  45. QString entityName = ui.entityName->text();
  46. if(entityName.isEmpty()){
  47. ui.entityName->setFocus();
  48. return;
  49. }
  50. QString modelName = ui.modelName->text();
  51. QString serviceName = ui.serviceName->text();
  52. QString widgetName = ui.widgetName->text();
  53. if (modelName.isEmpty())
  54. modelName = entityName + "Model";
  55. if (serviceName.isEmpty())
  56. serviceName = entityName + "Service";
  57. if (widgetName.isEmpty())
  58. widgetName = entityName + "Widget";
  59. createModel(modelName, entityName);
  60. createService(serviceName, entityName);
  61. if (ui.MultipleSelect->isChecked())
  62. createMultipleWidget(widgetName, modelName, serviceName, entityName,ui.name->text().trimmed());
  63. else
  64. createWidget(widgetName, modelName, serviceName, entityName, ui.name->text().trimmed());
  65. QMessageBox::information(this, "", "success");
  66. }
  67. void MainWindow::onTableFilePath()
  68. {
  69. QString filename = QFileDialog::getExistingDirectory(this);
  70. ui.tableFilePath->setText(filename);
  71. QSettings setting("config.ini", QSettings::IniFormat);
  72. setting.setValue("TableFilePath",filename);
  73. setting.sync();
  74. }
  75. void MainWindow::onExcelPath()
  76. {
  77. QString path = QFileDialog::getOpenFileName(this);
  78. ui.excelPath->setText(path);
  79. }
  80. void MainWindow::onGenerateTable()
  81. {
  82. WzExcel excelHelper(ui.excelPath->text().trimmed());
  83. try
  84. {
  85. excelHelper.open();
  86. }
  87. catch (MessageException &e)
  88. {
  89. excelHelper.close();
  90. QMessageBox::information(this,"提示",e.getMessage());
  91. return;
  92. }
  93. QString tablename = excelHelper.getValue(0,1).toString();
  94. Debug(tablename);
  95. int rows = excelHelper.getRows();
  96. QList<QPair<QString,QString>> fieldAndTypes;
  97. QList<QPair<QString,QString>> fieldAndComments;
  98. for (int row = 2 ; row < rows ; row++)
  99. {
  100. QString copmment = excelHelper.getValue(row,0).toString();
  101. QString name = excelHelper.getValue(row,1).toString();
  102. QString type = excelHelper.getValue(row,2).toString();
  103. fieldAndTypes << qMakePair(name,type);
  104. fieldAndComments << qMakePair(name,copmment);
  105. }
  106. excelHelper.close();
  107. QStringList contents;
  108. contents << TableHelper::createTable(tablename,fieldAndTypes)
  109. << TableHelper::createPrimaryAlter(tablename)
  110. << TableHelper::createComment(tablename,fieldAndComments)
  111. << TableHelper::createSeq(tablename)
  112. << TableHelper::createTrigger(tablename);
  113. write(ui.tableFilePath->text().trimmed() + "/" + tablename + ".txt",contents.join("\n"));
  114. ui.textEdit->setText(contents.join("\n\n"));
  115. }
  116. QString MainWindow::readAll(const QString &filename)
  117. {
  118. QFile file(filename);
  119. if (!file.open(QIODevice::ReadOnly))
  120. return "";
  121. QTextStream in(&file);
  122. in.setCodec("UTF-8");
  123. QString txt = in.readAll();
  124. file.close();
  125. return txt;
  126. }
  127. void MainWindow::write(const QString &filename, const QString &content)
  128. {
  129. QFile file(filename);
  130. if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate))
  131. return ;
  132. QTextStream out(&file);
  133. out.setCodec("UTF-8");
  134. out << content;
  135. file.close();
  136. }
  137. void MainWindow::createModel(const QString &modelName, const QString &entityName)
  138. {
  139. QString modelH = readAll("template/model.h.template");
  140. modelH = modelH.arg(modelName).arg(entityName);
  141. QString modelCpp = readAll("template/model.cpp.template");
  142. modelCpp = modelCpp.arg(modelName).arg(entityName);
  143. QString path = ui.modelPath->text().trimmed();
  144. QString modelHFilename = QString("%1/%2.h").arg(path).arg(modelName);
  145. write(modelHFilename, modelH);
  146. QString modelCppFilename = QString("%1/%2.cpp").arg(path).arg(modelName);
  147. write(modelCppFilename, modelCpp);
  148. }
  149. void MainWindow::createService(const QString &serviceName, const QString &entityName)
  150. {
  151. QString serviceH = readAll("template/service.h.template");
  152. serviceH = serviceH.arg(serviceName);
  153. QString serviceCpp = readAll("template/service.cpp.template");
  154. serviceCpp = serviceCpp.arg(serviceName).arg(entityName);
  155. QString path = ui.servicePath->text().trimmed();
  156. QString modelHFilename = QString("%1/%2.h").arg(path).arg(serviceName);
  157. write(modelHFilename, serviceH);
  158. QString modelCppFilename = QString("%1/%2.cpp").arg(path).arg(serviceName);
  159. write(modelCppFilename, serviceCpp);
  160. }
  161. void MainWindow::createWidget(const QString &widgetName, const QString &modelName, const QString &serviceName, const QString &entityName, const QString &name)
  162. {
  163. QString widgetH = readAll("template/widget.h.template");
  164. widgetH = widgetH.arg(widgetName).arg(modelName).arg(serviceName);
  165. QString widgetCpp = readAll("template/widget.cpp.template");
  166. widgetCpp = widgetCpp.arg(widgetName).arg(entityName).arg(modelName).arg(serviceName).arg(name);
  167. QString widgetUi = readAll("template/widget.ui.template");
  168. widgetUi = widgetUi.arg(widgetName);
  169. QString path = ui.widgetPath->text().trimmed();
  170. QString widgetHFilename = QString("%1/%2.h").arg(path).arg(widgetName);
  171. write(widgetHFilename, widgetH);
  172. QString widgetCppFilename = QString("%1/%2.cpp").arg(path).arg(widgetName);
  173. write(widgetCppFilename, widgetCpp);
  174. QString widgetUiFilename = QString("%1/%2.ui").arg(path).arg(widgetName);
  175. write(widgetUiFilename, widgetUi);
  176. }
  177. void MainWindow::createMultipleWidget(const QString &widgetName, const QString &modelName, const QString &serviceName, const QString &entityName,const QString &name)
  178. {
  179. QString widgetH = readAll("template/MultipleWidget.h.template");
  180. widgetH = widgetH.arg(widgetName).arg(modelName).arg(serviceName).arg(entityName);
  181. QString widgetCpp = readAll("template/MultipleWidget.cpp.template");
  182. widgetCpp = widgetCpp.arg(widgetName).arg(entityName).arg(modelName).arg(serviceName).arg(name);
  183. QString widgetUi = readAll("template/MultipleWidget.ui.template");
  184. widgetUi = widgetUi.arg(widgetName);
  185. QString path = ui.widgetPath->text().trimmed();
  186. QString widgetHFilename = QString("%1/%2.h").arg(path).arg(widgetName);
  187. write(widgetHFilename, widgetH);
  188. QString widgetCppFilename = QString("%1/%2.cpp").arg(path).arg(widgetName);
  189. write(widgetCppFilename, widgetCpp);
  190. QString widgetUiFilename = QString("%1/%2.ui").arg(path).arg(widgetName);
  191. write(widgetUiFilename, widgetUi);
  192. }