mainwindow.cpp 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  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. MainWindow::MainWindow(QWidget *parent)
  9. : QMainWindow(parent)
  10. {
  11. ui.setupUi(this);
  12. QSettings setting("config.ini", QSettings::IniFormat);
  13. ui.modelPath->setText(setting.value("modelPath").toString());
  14. ui.servicePath->setText(setting.value("servicePath").toString());
  15. ui.widgetPath->setText(setting.value("widgetPath").toString());
  16. }
  17. void MainWindow::onModelPath()
  18. {
  19. QString path = QFileDialog::getExistingDirectory(this);
  20. ui.modelPath->setText(path);
  21. QSettings setting("config.ini", QSettings::IniFormat);
  22. setting.setValue("modelPath", path);
  23. }
  24. void MainWindow::onServicePath()
  25. {
  26. QString path = QFileDialog::getExistingDirectory(this);
  27. ui.servicePath->setText(path);
  28. QSettings setting("config.ini", QSettings::IniFormat);
  29. setting.setValue("servicePath", path);
  30. }
  31. void MainWindow::onWidgetPath()
  32. {
  33. QString path = QFileDialog::getExistingDirectory(this);
  34. ui.widgetPath->setText(path);
  35. QSettings setting("config.ini", QSettings::IniFormat);
  36. setting.setValue("widgetPath", path);
  37. }
  38. void MainWindow::onGenerate()
  39. {
  40. QString entityName = ui.entityName->text();
  41. if(entityName.isEmpty()){
  42. ui.entityName->setFocus();
  43. return;
  44. }
  45. QString modelName = ui.modelName->text();
  46. QString serviceName = ui.serviceName->text();
  47. QString widgetName = ui.widgetName->text();
  48. if (modelName.isEmpty())
  49. modelName = entityName + "Model";
  50. if (serviceName.isEmpty())
  51. serviceName = entityName + "Service";
  52. if (widgetName.isEmpty())
  53. widgetName = entityName + "Widget";
  54. createModel(modelName, entityName);
  55. createService(serviceName, entityName);
  56. if (ui.MultipleSelect->isChecked())
  57. createMultipleWidget(widgetName, modelName, serviceName, entityName,ui.name->text().trimmed());
  58. else
  59. createWidget(widgetName, modelName, serviceName, entityName, ui.name->text().trimmed());
  60. QMessageBox::information(this, "", "success");
  61. }
  62. QString MainWindow::readAll(const QString &filename)
  63. {
  64. QFile file(filename);
  65. if (!file.open(QIODevice::ReadOnly))
  66. return "";
  67. QTextStream in(&file);
  68. in.setCodec("UTF-8");
  69. QString txt = in.readAll();
  70. file.close();
  71. return txt;
  72. }
  73. void MainWindow::write(const QString &filename, const QString &content)
  74. {
  75. QFile file(filename);
  76. if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate))
  77. return ;
  78. QTextStream out(&file);
  79. out.setCodec("UTF-8");
  80. out << content;
  81. file.close();
  82. }
  83. void MainWindow::createModel(const QString &modelName, const QString &entityName)
  84. {
  85. QString modelH = readAll("template/model.h.template");
  86. modelH = modelH.arg(modelName).arg(entityName);
  87. QString modelCpp = readAll("template/model.cpp.template");
  88. modelCpp = modelCpp.arg(modelName).arg(entityName);
  89. QString path = ui.modelPath->text().trimmed();
  90. QString modelHFilename = QString("%1/%2.h").arg(path).arg(modelName);
  91. write(modelHFilename, modelH);
  92. QString modelCppFilename = QString("%1/%2.cpp").arg(path).arg(modelName);
  93. write(modelCppFilename, modelCpp);
  94. }
  95. void MainWindow::createService(const QString &serviceName, const QString &entityName)
  96. {
  97. QString serviceH = readAll("template/service.h.template");
  98. serviceH = serviceH.arg(serviceName);
  99. QString serviceCpp = readAll("template/service.cpp.template");
  100. serviceCpp = serviceCpp.arg(serviceName).arg(entityName);
  101. QString path = ui.servicePath->text().trimmed();
  102. QString modelHFilename = QString("%1/%2.h").arg(path).arg(serviceName);
  103. write(modelHFilename, serviceH);
  104. QString modelCppFilename = QString("%1/%2.cpp").arg(path).arg(serviceName);
  105. write(modelCppFilename, serviceCpp);
  106. }
  107. void MainWindow::createWidget(const QString &widgetName, const QString &modelName, const QString &serviceName, const QString &entityName, const QString &name)
  108. {
  109. QString widgetH = readAll("template/widget.h.template");
  110. widgetH = widgetH.arg(widgetName).arg(modelName).arg(serviceName);
  111. QString widgetCpp = readAll("template/widget.cpp.template");
  112. widgetCpp = widgetCpp.arg(widgetName).arg(entityName).arg(modelName).arg(serviceName).arg(name);
  113. QString widgetUi = readAll("template/widget.ui.template");
  114. widgetUi = widgetUi.arg(widgetName);
  115. QString path = ui.widgetPath->text().trimmed();
  116. QString widgetHFilename = QString("%1/%2.h").arg(path).arg(widgetName);
  117. write(widgetHFilename, widgetH);
  118. QString widgetCppFilename = QString("%1/%2.cpp").arg(path).arg(widgetName);
  119. write(widgetCppFilename, widgetCpp);
  120. QString widgetUiFilename = QString("%1/%2.ui").arg(path).arg(widgetName);
  121. write(widgetUiFilename, widgetUi);
  122. }
  123. void MainWindow::createMultipleWidget(const QString &widgetName, const QString &modelName, const QString &serviceName, const QString &entityName,const QString &name)
  124. {
  125. QString widgetH = readAll("template/MultipleWidget.h.template");
  126. widgetH = widgetH.arg(widgetName).arg(modelName).arg(serviceName).arg(entityName);
  127. QString widgetCpp = readAll("template/MultipleWidget.cpp.template");
  128. widgetCpp = widgetCpp.arg(widgetName).arg(entityName).arg(modelName).arg(serviceName).arg(name);
  129. QString widgetUi = readAll("template/MultipleWidget.ui.template");
  130. widgetUi = widgetUi.arg(widgetName);
  131. QString path = ui.widgetPath->text().trimmed();
  132. QString widgetHFilename = QString("%1/%2.h").arg(path).arg(widgetName);
  133. write(widgetHFilename, widgetH);
  134. QString widgetCppFilename = QString("%1/%2.cpp").arg(path).arg(widgetName);
  135. write(widgetCppFilename, widgetCpp);
  136. QString widgetUiFilename = QString("%1/%2.ui").arg(path).arg(widgetName);
  137. write(widgetUiFilename, widgetUi);
  138. }