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("导出所有文件完成");
         }
    }

}
Exemple #2
0
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);
}