FIX: 修正文件路径逻辑
parent
b944572204
commit
769effe49c
|
@ -3,6 +3,8 @@
|
||||||
#include "DataManager/ProjectDataManager.h"
|
#include "DataManager/ProjectDataManager.h"
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
|
#include <QFile>
|
||||||
|
#include <QDir>
|
||||||
|
|
||||||
EditorWidgetItem::EditorWidgetItem(QString filePath,QWidget *parent) : QWidget(parent)
|
EditorWidgetItem::EditorWidgetItem(QString filePath,QWidget *parent) : QWidget(parent)
|
||||||
{
|
{
|
||||||
|
@ -66,7 +68,7 @@ EditorWidgetItem::EditorWidgetItem(QString filePath,QWidget *parent) : QWidget(p
|
||||||
ProjectDataManager::Instance()->addProjectData(data);
|
ProjectDataManager::Instance()->addProjectData(data);
|
||||||
// end test
|
// end test
|
||||||
QJsonObject source = jsonDoc.object();
|
QJsonObject source = jsonDoc.object();
|
||||||
elementManager = new ElementManager(source,Renderer::ElementRenderer::instance());
|
elementManager = new ElementManager(source, QFileInfo(filePath).absolutePath());
|
||||||
layerManager = new LayerManager(source, elementManager);
|
layerManager = new LayerManager(source, elementManager);
|
||||||
elementInfoDisplayWidget->setElementManager(elementManager);
|
elementInfoDisplayWidget->setElementManager(elementManager);
|
||||||
treeWidget->elementManager = elementManager;
|
treeWidget->elementManager = elementManager;
|
||||||
|
@ -125,6 +127,23 @@ void EditorWidgetItem::save() const
|
||||||
void EditorWidgetItem::saveAs(QString filePath) const
|
void EditorWidgetItem::saveAs(QString filePath) const
|
||||||
{
|
{
|
||||||
saveImpl(filePath);
|
saveImpl(filePath);
|
||||||
|
QString srcHome = QFileInfo(this->filePath).absolutePath();
|
||||||
|
if (!QDir(QFileInfo(filePath).absolutePath() + "/svg").exists())
|
||||||
|
{
|
||||||
|
QDir().mkdir(QFileInfo(filePath).absolutePath() + "/svg");
|
||||||
|
}
|
||||||
|
for (auto& ele : elementManager->elements)
|
||||||
|
{
|
||||||
|
auto e = dynamic_cast<SimpleElement*>(ele);
|
||||||
|
if (e != nullptr)
|
||||||
|
{
|
||||||
|
QString fileName = e->jsonSource["data"].toObject()["include"].toString();
|
||||||
|
QString src = srcHome + fileName;
|
||||||
|
QString dst = QFileInfo(filePath).absolutePath() + fileName;
|
||||||
|
QFile::copy(src, dst);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditorWidgetItem::saveImpl(QString filePath) const
|
void EditorWidgetItem::saveImpl(QString filePath) const
|
||||||
|
|
|
@ -1,16 +1,20 @@
|
||||||
#include "ElementManager.h"
|
#include "ElementManager.h"
|
||||||
ElementManager::ElementManager(QJsonObject source,Renderer::ElementRenderer* renderer)
|
#include <QFileInfo>
|
||||||
|
#include <QDir>
|
||||||
|
#include <QFile>
|
||||||
|
|
||||||
|
ElementManager::ElementManager(QJsonObject source, QString fileHome)
|
||||||
{
|
{
|
||||||
auto elementsJson = source.value("elements").toArray();
|
auto elementsJson = source.value("elements").toArray();
|
||||||
|
this->fileHome = fileHome;
|
||||||
int index = 0;
|
int index = 0;
|
||||||
for (auto elementJson : elementsJson)
|
for (auto elementJson : elementsJson)
|
||||||
{
|
{
|
||||||
if (elementJson.toObject().value("type").toString() == "group")
|
if (elementJson.toObject().value("type").toString() == "group")
|
||||||
elements.push_back(new GroupElement());
|
elements.push_back(new GroupElement());
|
||||||
else
|
else
|
||||||
elements.push_back(new SimpleElement(elementJson.toObject()));
|
elements.push_back(new SimpleElement(elementJson.toObject(), fileHome));
|
||||||
(*elements.rbegin())->name = elementJson.toObject().value("name").toString();
|
(*elements.rbegin())->name = elementJson.toObject().value("name").toString();
|
||||||
(*elements.rbegin())->renderer = renderer;
|
|
||||||
}
|
}
|
||||||
for (auto element : elements)
|
for (auto element : elements)
|
||||||
element->index = index++;
|
element->index = index++;
|
||||||
|
@ -90,9 +94,11 @@ void ElementManager::createGroupElement(QString name, FolderLayerWrapper* source
|
||||||
void ElementManager::createSimpleElement(QString name, QString filePath) {
|
void ElementManager::createSimpleElement(QString name, QString filePath) {
|
||||||
QJsonObject json;
|
QJsonObject json;
|
||||||
QJsonObject data;
|
QJsonObject data;
|
||||||
data.insert("include", filePath);
|
QFile fileSrc(filePath);
|
||||||
|
QFile::copy(filePath, QDir::cleanPath(fileHome + "/svg/" + QFileInfo(filePath).fileName()));
|
||||||
|
data.insert("include", "/svg/"+QFileInfo(filePath).fileName());
|
||||||
json.insert("data", data);
|
json.insert("data", data);
|
||||||
auto element = new SimpleElement(json);
|
auto element = new SimpleElement(json, fileHome);
|
||||||
element->name = name;
|
element->name = name;
|
||||||
addElement(element);
|
addElement(element);
|
||||||
}
|
}
|
|
@ -14,9 +14,10 @@ class ElementManager
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
vector<GraphicElement *> elements;
|
vector<GraphicElement *> elements;
|
||||||
|
QString fileHome;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ElementManager(QJsonObject source,Renderer::ElementRenderer *renderer);
|
ElementManager(QJsonObject source, QString fileHome);
|
||||||
~ElementManager();
|
~ElementManager();
|
||||||
void addElement(GraphicElement *element);
|
void addElement(GraphicElement *element);
|
||||||
void removeElement(GraphicElement *pElement);
|
void removeElement(GraphicElement *pElement);
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
#include "util/SvgFileLoader.h"
|
#include "util/SvgFileLoader.h"
|
||||||
#include <QGuiApplication>
|
#include <QGuiApplication>
|
||||||
#include <QScreen>
|
#include <QScreen>
|
||||||
|
#include <QDir>
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
PixelPath SimpleElement::getPaintObject() const
|
PixelPath SimpleElement::getPaintObject() const
|
||||||
|
@ -23,13 +25,13 @@ void SimpleElement::loadSvgFile(const QString& filePath)
|
||||||
qDebug() << "load svg file success " << painterPath.elementCount() << (isClosed() ? "is" : "not") << "closed";
|
qDebug() << "load svg file success " << painterPath.elementCount() << (isClosed() ? "is" : "not") << "closed";
|
||||||
}
|
}
|
||||||
|
|
||||||
SimpleElement::SimpleElement(QJsonObject jsonSource) : jsonSource(jsonSource)
|
SimpleElement::SimpleElement(QJsonObject jsonSource, QString fileHome) : jsonSource(jsonSource)
|
||||||
{
|
{
|
||||||
painterPath.clear();
|
painterPath.clear();
|
||||||
filePath = jsonSource["data"].toObject()["include"].toString();
|
filePath = jsonSource["data"].toObject()["include"].toString();
|
||||||
//loadSvgFile("D:\\Projects\\BigC\\svg\\3.svg");
|
//loadSvgFile("D:\\Projects\\BigC\\svg\\3.svg");
|
||||||
QFileInfo info(filePath);
|
QFileInfo info(QDir::cleanPath(fileHome + "/" + filePath));
|
||||||
loadSvgFile(filePath);
|
loadSvgFile(info.absoluteFilePath());
|
||||||
}
|
}
|
||||||
|
|
||||||
GroupElement::GroupElement(FolderLayerWrapper* sourceLayer)
|
GroupElement::GroupElement(FolderLayerWrapper* sourceLayer)
|
||||||
|
|
|
@ -46,7 +46,7 @@ public:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QJsonObject toJson() const override;
|
QJsonObject toJson() const override;
|
||||||
SimpleElement(QJsonObject jsonSource);
|
SimpleElement(QJsonObject jsonSource, QString fileHome);
|
||||||
SimpleElement(QString filePath);
|
SimpleElement(QString filePath);
|
||||||
~SimpleElement() = default;
|
~SimpleElement() = default;
|
||||||
PixelPath getPaintObject() const override;
|
PixelPath getPaintObject() const override;
|
||||||
|
|
|
@ -75,7 +75,7 @@ FolderLayerWrapper::FolderLayerWrapper(QJsonObject json, ElementManager *element
|
||||||
}
|
}
|
||||||
|
|
||||||
LeafLayerWrapper::LeafLayerWrapper(QJsonObject json, ElementManager* elementManager, FolderLayerWrapper* parent)
|
LeafLayerWrapper::LeafLayerWrapper(QJsonObject json, ElementManager* elementManager, FolderLayerWrapper* parent)
|
||||||
: LayerWrapper(json, parent),
|
: LayerWrapper(json, parent, elementManager),
|
||||||
wrappedElement(elementManager->getElementById(json.value("element").toInt())),
|
wrappedElement(elementManager->getElementById(json.value("element").toInt())),
|
||||||
styles(LayerStyleContainer::fromJson(wrappedElement->isClosed(), json.value("styles").toArray()))
|
styles(LayerStyleContainer::fromJson(wrappedElement->isClosed(), json.value("styles").toArray()))
|
||||||
{
|
{
|
||||||
|
@ -255,7 +255,8 @@ QJsonObject FolderLayerWrapper::toJson() const
|
||||||
QJsonObject json = LayerWrapper::toJson();
|
QJsonObject json = LayerWrapper::toJson();
|
||||||
QJsonArray childrenJson;
|
QJsonArray childrenJson;
|
||||||
for (auto& child : children)
|
for (auto& child : children)
|
||||||
childrenJson.push_back(child->toJson());
|
if(child != nullptr)
|
||||||
|
childrenJson.push_back(child->toJson());
|
||||||
json.insert("children", childrenJson);
|
json.insert("children", childrenJson);
|
||||||
json.insert("is-folder", true);
|
json.insert("is-folder", true);
|
||||||
if(this->getReferencedBy() != -1)
|
if(this->getReferencedBy() != -1)
|
||||||
|
@ -268,7 +269,7 @@ QJsonObject FolderLayerWrapper::toJson() const
|
||||||
QJsonObject LeafLayerWrapper::toJson() const
|
QJsonObject LeafLayerWrapper::toJson() const
|
||||||
{
|
{
|
||||||
QJsonObject json = LayerWrapper::toJson();
|
QJsonObject json = LayerWrapper::toJson();
|
||||||
json.insert("element", wrappedElement->index);
|
json.insert("element", elementManager->getElementIndex(wrappedElement));
|
||||||
json.insert("is-folder", false);
|
json.insert("is-folder", false);
|
||||||
json.insert("styles", styles.toJson());
|
json.insert("styles", styles.toJson());
|
||||||
return json;
|
return json;
|
||||||
|
|
|
@ -59,6 +59,7 @@ void LayerTreeWidget::popMenu(const QPoint &pos)
|
||||||
connect(dialog, &LayerCreateWidget::LayerInfoReturned, this, [this, layer](QJsonObject jsonObj) {
|
connect(dialog, &LayerCreateWidget::LayerInfoReturned, this, [this, layer](QJsonObject jsonObj) {
|
||||||
auto folderLayer = dynamic_cast<FolderLayerWrapper*>(layer);
|
auto folderLayer = dynamic_cast<FolderLayerWrapper*>(layer);
|
||||||
LayerWrapper* newLayer;
|
LayerWrapper* newLayer;
|
||||||
|
qDebug() << this->elementManager;
|
||||||
if(jsonObj.value("is-folder").toBool())
|
if(jsonObj.value("is-folder").toBool())
|
||||||
newLayer = new FolderLayerWrapper(jsonObj, this->elementManager, folderLayer);
|
newLayer = new FolderLayerWrapper(jsonObj, this->elementManager, folderLayer);
|
||||||
else
|
else
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#include <QJsondocument>
|
#include <QJsondocument>
|
||||||
#include "PainterPathUtil.h"
|
#include "PainterPathUtil.h"
|
||||||
#include <queue>
|
#include <queue>
|
||||||
|
#include <QFileInfo>
|
||||||
|
|
||||||
using Renderer::Painting;
|
using Renderer::Painting;
|
||||||
using Renderer::BaseElement;
|
using Renderer::BaseElement;
|
||||||
|
@ -37,7 +38,7 @@ Painting PaintingUtil::transfromToPainting(QString jsonFilePath) {
|
||||||
glm::bvec2 flip(0, 0);
|
glm::bvec2 flip(0, 0);
|
||||||
QJsonObject jsonObj = readJsonFile(jsonFilePath);
|
QJsonObject jsonObj = readJsonFile(jsonFilePath);
|
||||||
qDebug() << jsonObj;
|
qDebug() << jsonObj;
|
||||||
shared_ptr<ElementManager> elementManager = make_shared<ElementManager>(jsonObj, Renderer::ElementRenderer::instance());
|
shared_ptr<ElementManager> elementManager = make_shared<ElementManager>(jsonObj, QFileInfo(jsonFilePath).absolutePath());
|
||||||
shared_ptr<LayerManager> layerManager = make_shared<LayerManager>(jsonObj, elementManager.get());
|
shared_ptr<LayerManager> layerManager = make_shared<LayerManager>(jsonObj, elementManager.get());
|
||||||
//qDebug() << elementManager->toJson();
|
//qDebug() << elementManager->toJson();
|
||||||
//qDebug() << layerManager->toJson();
|
//qDebug() << layerManager->toJson();
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
"name": "ababa",
|
"name": "ababa",
|
||||||
"type": "svg-file",
|
"type": "svg-file",
|
||||||
"data": {
|
"data": {
|
||||||
"include": "../svg/2.svg"
|
"include": "/svg/2.svg"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
"name": "ababa2",
|
"name": "ababa2",
|
||||||
"type": "svg-file",
|
"type": "svg-file",
|
||||||
"data": {
|
"data": {
|
||||||
"include": "../svg/0.svg"
|
"include": "/svg/0.svg"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
Loading…
Reference in New Issue