void DetailExcelWidget::writeJsonFinished(QString filename) { if(!isBatch){ addConsoleInfo("导出%s成功", filename.section("/", -1).toLocal8Bit().data()); }else{ curCount++; if(curCount < BatchTotal){ addConsoleInfo("当前生成进度%d/%d", curCount, BatchTotal); generateVec.at(curCount)->start(); }else{ addConsoleInfo("导出所有文件完成"); } } }
QSQLManager* QSQLManager::getInstance() { if(instance == nullptr){ instance = new QSQLManager(); QString path; QDir dir; path=dir.currentPath(); bool isCreate = QFile::exists(path+"/"+dbname); if(!instance->openDatabase()){ addConsoleInfo("打开数据库失败"); } if(!isCreate){ if(!instance->createTable()){ addConsoleInfo("创建数据表失败"); } } } return instance; }
void DetailExcelWidget::findError(QString filename) { if(!isBatch){ QMessageBox::warning(NULL, "发现错误", filename, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); }else{ curCount++; errorFileList.push_back(filename); if(curCount < BatchTotal){ addConsoleInfo("当前检查进度%d/%d", curCount, BatchTotal); filterVec.at(curCount)->start(); }else{ QString str; for(int i=0; i<errorFileList.size(); i++){ str += errorFileList.at(i); str += "\n"; } addConsoleInfo("检查完成", curCount, BatchTotal); QMessageBox::warning(NULL, "发现错误", str, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); } } }
void MainWindow::on_actionOpenFile_triggered() { QStringList openFiles = QFileDialog::getOpenFileNames(this, "打开ProtoBuf文件", g_saveDir, tr("")); if (openFiles.size() > 0){ g_saveDir = openFiles.at(0).section("/", 0, -2); QListWidget* listWidget = g_listWidget; for (int i = 0; i < openFiles.size(); i++){ QString toFile = openFiles.at(i); auto item = new QListWidgetItem; item->setData(Qt::UserRole, toFile); if(toFile.contains(".")){ item->setText(toFile.section("/", -1).section(".", 0, -2)); }else{ item->setText(toFile.section("/", -1)); } listWidget->addItem(item); } addConsoleInfo("打开%d个文件", openFiles.size()); } }
void DetailExcelWidget::writeToJson() { isBatch = false; BatchGenerateThread* t = new BatchGenerateThread(); connect(t, SIGNAL(writeFinishSignal(QString)), this, SLOT(writeJsonFinished(QString))); generateVec.push_back(t); t->setXlsxFile(file_name); t->addTypeVec(typeVec); QVector<QStringList> vec__; addConsoleInfo("%s %d", file_name.toLocal8Bit().data(), m_vec.size()); for(int i=0; i<m_vec.size(); i++){ auto vecChild = m_vec.at(i); QStringList listChild; for(int n=0; n<vecChild->size(); n++){ auto item = vecChild->at(n); listChild.push_back(item->Checkbox->text()); } vec__.push_back(listChild); } t->addNameVec(vec__); t->start(); }
void ParticleEditor::OpenConfigFile(QString filename) { QFile sFile(fileName); if (sFile.open(QIODevice::ReadOnly | QIODevice::Text)){ QTextStream in(&sFile); QString content = in.readAll(); QJsonParseError jsonError; QJsonDocument document = QJsonDocument::fromJson(content.toLatin1(), &jsonError); if (jsonError.error == QJsonParseError::NoError && document.isObject()){ QJsonObject obj = document.object(); QJsonArray resList = obj["resList"].toArray(); QJsonObject particleData = obj["particleData"].toObject(); resourceView->clearResourceList(); for (int i = 0; i < resList.size(); i++){ resourceView->addRes(resList.at(i).toString()); } auto layer = dynamic_cast<C3DLayer*>(g_Layer); auto particleSystem = layer->getParticleSystem(); auto acclerationMin = Vec3(particleData["accleration_min_x"].toDouble(), particleData["accleration_min_y"].toDouble(), particleData["accleration_min_z"].toDouble()); auto acclerationMax = Vec3(particleData["accleration_max_x"].toDouble(), particleData["accleration_max_y"].toDouble(), particleData["accleration_max_z"].toDouble()); auto sizeMin = Vec3(particleData["size_min_x"].toDouble(), particleData["size_min_y"].toDouble(), particleData["size_min_z"].toDouble()); auto sizeMax = Vec3(particleData["size_max_x"].toDouble(), particleData["size_max_y"].toDouble(), particleData["size_max_z"].toDouble()); auto sizeVelocity = Vec3(particleData["size_velocity_x"].toDouble(), particleData["size_velocity_z"].toDouble(), particleData["size_velocity_z"].toDouble()); auto velocityMin = Vec3(particleData["velocity_min_x"].toDouble(), particleData["velocity_min_y"].toDouble(), particleData["velocity_min_z"].toDouble()); auto velocityMax = Vec3(particleData["velocity_max_x"].toDouble(), particleData["velocity_max_y"].toDouble(), particleData["velocity_max_z"].toDouble()); auto colorMin = Vec3(particleData["color_min_x"].toDouble(), particleData["color_min_y"].toDouble(), particleData["color_min_z"].toDouble()); auto colorMax = Vec3(particleData["color_max_x"].toDouble(), particleData["color_max_y"].toDouble(), particleData["color_max_z"].toDouble()); auto colorVelocity = Vec3(particleData["color_velocity_x"].toDouble(), particleData["color_velocity_y"].toDouble(), particleData["color_velocity_z"].toDouble()); auto life = Vec3(particleData["life_min"].toDouble(), particleData["life_max"].toDouble(), particleData["life_velocity"].toDouble()); particleSystem->resetParticleAccelerationMin(acclerationMin); particleSystem->resetParticleAccelerationMax(acclerationMax); particleSystem->resetParticleSizeMin(sizeMin); particleSystem->resetParticleSizeMax(sizeMax); particleSystem->resetParticleSizeVelocity(sizeVelocity); particleSystem->resetParticleVelocityMin(velocityMin); particleSystem->resetParticleVelocityMax(velocityMax); particleSystem->resetParticleColorMin(colorMin); particleSystem->resetParticleColorMax(colorMax); particleSystem->resetParticleColorVelocity(colorVelocity); particleSystem->resetParticleLifeMin(life.x); particleSystem->resetParticleLifeMax(life.y); particleSystem->resetParticleLife_Velocity(life.z); particleSystem->SetTexture(particleData["texture"].toString().toLocal8Bit().data()); particleSystem->setColor(particleData["m_color_r"].toDouble(), particleData["m_color_g"].toDouble(), particleData["m_color_b"].toDouble(), particleData["m_color_a"].toDouble()); eParticleType _type; switch (particleData["particle_type"].toInt()){ case 0: _type = eParticleType::PT_FIRE; break; case 1: _type = eParticleType::PT_FIREWORK; break; case 2: _type = eParticleType::PT_FOUNTAIN; break; case 3: _type = eParticleType::PT_MAX; break; } layer->resetParticle(particleData["count"].toInt(), _type, { particleData["blendfunc_src"].toInt(), particleData["blendfunc_dst"].toInt() }); controlView->setTarget(particleSystem); controlView->setParticleType(_type); } else{ addConsoleInfo("文件错误"); } } else{ addConsoleInfo("读取文件错误"); } }
void ParticleEditor::SaveConfigFile(QString filename) { FILE* sFile; sFile = fopen(filename.toLocal8Bit().data(), "wb"); if (!sFile){ addConsoleInfo("保存失败"); return; } QVariantMap document; QVariantList resList; QVariantMap particleData; //导出资源 QStringList imageList = resourceView->getImageList(); for (int i = 0; i < imageList.size(); i++){ QVariant res = imageList.at(i); resList.append(res); } //导出粒子 auto layer = dynamic_cast<C3DLayer*>(g_Layer); auto particleSystem = layer->getParticleSystem(); particleData.insert("texture", particleSystem->getTextureFileName().c_str()); particleData.insert("count", particleSystem->getParticleCount()); particleData.insert("particle_type", particleSystem->getParticleType()); particleData.insert("blendfunc_src", particleSystem->getBlendFunc().src); particleData.insert("blendfunc_dst", particleSystem->getBlendFunc().dst); auto data = particleSystem->getParticleData(); particleData.insert("velocity_min_x", data.m_Velocity_Min.x); particleData.insert("velocity_min_y", data.m_Velocity_Min.y); particleData.insert("velocity_min_z", data.m_Velocity_Min.z); particleData.insert("velocity_max_x", data.m_Velocity_Max.x); particleData.insert("velocity_max_y", data.m_Velocity_Max.y); particleData.insert("velocity_max_z", data.m_Velocity_Max.z); particleData.insert("accleration_min_x", data.m_Acceleration_Min.x); particleData.insert("accleration_min_y", data.m_Acceleration_Min.y); particleData.insert("accleration_min_z", data.m_Acceleration_Min.z); particleData.insert("accleration_max_x", data.m_Acceleration_Max.x); particleData.insert("accleration_max_y", data.m_Acceleration_Max.y); particleData.insert("accleration_max_z", data.m_Acceleration_Max.z); particleData.insert("size_min_x", data.m_Size_Min.x); particleData.insert("size_min_y", data.m_Size_Min.y); particleData.insert("size_min_z", data.m_Size_Min.z); particleData.insert("size_max_x", data.m_Size_Max.x); particleData.insert("size_max_y", data.m_Size_Max.y); particleData.insert("size_max_z", data.m_Size_Max.z); particleData.insert("size_velocity_x", data.m_Size_Velocity.x); particleData.insert("size_velocity_y", data.m_Size_Velocity.y); particleData.insert("size_velocity_z", data.m_Size_Velocity.z); particleData.insert("color_min_x", data.m_Color_Min.x); particleData.insert("color_min_y", data.m_Color_Min.y); particleData.insert("color_min_z", data.m_Color_Min.z); particleData.insert("color_max_x", data.m_Color_Max.x); particleData.insert("color_max_y", data.m_Color_Max.y); particleData.insert("color_max_z", data.m_Color_Max.z); particleData.insert("color_velocity_x", data.m_Color_Velocity.x); particleData.insert("color_velocity_y", data.m_Color_Velocity.y); particleData.insert("color_velocity_z", data.m_Color_Velocity.z); particleData.insert("life_min", data.m_Life_Min); particleData.insert("life_max", data.m_Life_Max); particleData.insert("life_velocity", data.m_Life_Velocity); particleData.insert("m_color_r", particleSystem->getColor()[0]); particleData.insert("m_color_g", particleSystem->getColor()[1]); particleData.insert("m_color_b", particleSystem->getColor()[2]); particleData.insert("m_color_a", particleSystem->getColor()[3]); document.insert("resList", resList); document.insert("particleData", particleData); QJsonDocument jsonDocument = QJsonDocument::fromVariant(document); QByteArray array = jsonDocument.toJson(QJsonDocument::Compact); unsigned int count = array.size(); const char* data__ = (const char*)array.data(); fwrite(data__, count, 1, sFile); fclose(sFile); }