From f2b1525b9217f92a3a3dbf015f8e1b3003f6fa0e Mon Sep 17 00:00:00 2001 From: taynpg Date: Tue, 27 Aug 2024 20:15:41 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9Av1.3.1=E4=BF=AE=E5=A4=8DBUG?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 2 +- CMakeLists.txt | 3 ++- MainWidget.cpp | 4 ++-- README.md | 2 +- resource/xml.ico | Bin 5896 -> 16958 bytes resource/xml.png | Bin 9278 -> 0 bytes src/attribute_edit.cpp | 6 +++--- src/config.cpp | 7 ++++--- src/config.h | 2 +- src/data_edit.cpp | 17 ++++++++++------- src/history.cpp | 2 +- src/xml_opr.cpp | 42 +++++++++++++++++++++++------------------ src/xml_opr.h | 1 + 13 files changed, 50 insertions(+), 38 deletions(-) delete mode 100644 resource/xml.png diff --git a/.vscode/settings.json b/.vscode/settings.json index f074984..be26477 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -19,7 +19,7 @@ "visualizerFile": "${workspaceRoot}/.vscode/qt6.natvis" }, "cmake.environment": { - "PATH": "${env:PATH};C:/Qt/6.6.3/msvc2019_64/bin" + "PATH": "${env:PATH};C:/Qt/6.7.2/bin" }, "cmake.options.statusBarVisibility": "visible", "cmake.generator": "Ninja", diff --git a/CMakeLists.txt b/CMakeLists.txt index dd871aa..8321ea1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,7 +13,8 @@ endif() message(STATUS "User home directory: ${USER_HOME}") set(CMAKE_PREFIX_PATH - "C:/Qt/6.6.3/msvc2019_64" + ${CMAKE_PREFIX_PATH} + "C:/Qt/6.7.2" "${USER_HOME}/Qt5.14.2/5.14.2/gcc_64/" ) diff --git a/MainWidget.cpp b/MainWidget.cpp index 7e0c5d7..2a8fbee 100644 --- a/MainWidget.cpp +++ b/MainWidget.cpp @@ -18,7 +18,7 @@ MainWidget::MainWidget(QWidget* parent) : QWidget(parent), ui(new Ui::MainWidget { ui->setupUi(this); - setWindowTitle(u8"OneLevelXmlOpr v1.3.0"); + setWindowTitle(u8"OneLevelXmlOpr v1.3.1"); setWindowIcon(QIcon("://resource/xml.ico")); QScreen* primaryScreen = QGuiApplication::primaryScreen(); @@ -483,7 +483,7 @@ bool MainWidget::edit_property(Element_t* target, int row) } attri_edit_->get_attribute(property); - if (property[0].value != value_pre) { + if (property[0].value == value_pre) { while (xml_.check_key_exists(property)) { CUtil::msg(attri_edit_, u8"不能有相同的key,请检查。"); attri_edit_->exec(); diff --git a/README.md b/README.md index 6d1b694..f6806e2 100644 --- a/README.md +++ b/README.md @@ -4,4 +4,4 @@ # 编译环境 -在 `msvc Qt5.14.2` 和 `vs2017` 环境下通过。 \ No newline at end of file +`windows`下,`Qt6`可正常使用无乱码。 \ No newline at end of file diff --git a/resource/xml.ico b/resource/xml.ico index 8f1f46718045c6666c1eb96be30dfe2e813adf58..1574bde508f58946af5308fc9cda2a545d82fb28 100644 GIT binary patch literal 16958 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 G?Dc<^SPMV^ literal 5896 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 joBV1#9|%SU>(RHc~ES diff --git a/resource/xml.png b/resource/xml.png deleted file mode 100644 index bb8811e7f26b0e0d75de4fbebbc0d6e6d4706873..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9278 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, 0)->text(); QString value = table_->item(i, 1)->text(); - property_.emplace_back(key.toLocal8Bit().constData(), value.toLocal8Bit().constData()); + property_.emplace_back(key.toStdString().c_str(), value.toStdString().c_str()); } is_ok_ = true; close(); } - CAttributeEdit::~CAttributeEdit() { delete ui; @@ -59,7 +59,7 @@ void CAttributeEdit::show_before() is_ok_ = false; - for(auto i = 0; i < property_.size(); ++i) { + for (auto i = 0; i < property_.size(); ++i) { int row = table_->rowCount(); table_->insertRow(row); diff --git a/src/config.cpp b/src/config.cpp index 4a44c1a..8d11e84 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -1,4 +1,5 @@ #include "config.h" + #include #include @@ -13,7 +14,7 @@ void CGroupIni::default_set() QDir dir; std::string path = dir.homePath().toStdString(); fs::path p(path); - p.append(".config"); + p.append(".config/OneLevelXmlOpr"); if (!fs::exists(p)) { fs::create_directories(p); @@ -41,7 +42,7 @@ void CGroupIni::get_all_node(StrVec_t& vec) { vec.clear(); - CSimpleIni::TNamesDepend secs; + CSimpleIniA::TNamesDepend secs; ini_.GetAllSections(secs); for (const auto& sec : secs) { vec.push_back(sec.pItem); @@ -93,7 +94,7 @@ bool CGroupIni::get_item(OneGroupIni& group) return true; } -bool CGroupIni::del_item(const std::string &key) +bool CGroupIni::del_item(const std::string& key) { ini_.Delete(key.c_str(), "MainNodes", true); ini_.Delete(key.c_str(), "RelativeNodes", true); diff --git a/src/config.h b/src/config.h index 2fd8129..51fec0e 100644 --- a/src/config.h +++ b/src/config.h @@ -3,7 +3,7 @@ #include #include - +#include /* [Basic] diff --git a/src/data_edit.cpp b/src/data_edit.cpp index 59e441e..081d12d 100644 --- a/src/data_edit.cpp +++ b/src/data_edit.cpp @@ -1,11 +1,14 @@ #include "data_edit.h" -#include "ui_data_edit.h" -#include -#include + #include -#include + +#include +#include #include +#include + #include "../public_def.h" +#include "ui_data_edit.h" CDataEdit::CDataEdit(QWidget* parent) : QDialog(parent), ui(new Ui::CDataEdit) { @@ -58,7 +61,7 @@ void CDataEdit::import_data() } std::vector valid_data{}; - QStringList list = data.trimmed().split("\n"); + QStringList list = data.trimmed().split("\n"); for (int i = 0; i < list.size(); ++i) { const QString& item = list[i]; if (item.trimmed().isEmpty()) { @@ -70,7 +73,7 @@ void CDataEdit::import_data() } valid_data.push_back(item.toStdString()); } - auto task_count = valid_data.size(); + auto task_count = valid_data.size(); std::size_t success_count{}; if (!xml_opr_->import_newer_data(valid_data, success_count)) { CUtil::msg(this, u8"导入失败。"); @@ -91,7 +94,7 @@ void CDataEdit::showEvent(QShowEvent* event) void CDataEdit::show_before() { QScreen* primaryScreen = QGuiApplication::primaryScreen(); - QRect screenGeometry = primaryScreen->geometry(); + QRect screenGeometry = primaryScreen->geometry(); setMinimumWidth(screenGeometry.width() * 0.8); if (is_import_) { ui->btnCopy->setVisible(false); diff --git a/src/history.cpp b/src/history.cpp index 515d914..c3bccc6 100644 --- a/src/history.cpp +++ b/src/history.cpp @@ -41,7 +41,7 @@ void CHistory::default_set() QDir dir; std::string path = dir.homePath().toStdString(); fs::path p(path); - p.append(".config"); + p.append(".config/OneLevelXmlOpr"); if (!fs::exists(p)) { fs::create_directories(p); diff --git a/src/xml_opr.cpp b/src/xml_opr.cpp index dd4e57d..cb0633f 100644 --- a/src/xml_opr.cpp +++ b/src/xml_opr.cpp @@ -1,7 +1,9 @@ #include "xml_opr.h" -#include "../public_def.h" + #include +#include "../public_def.h" + namespace fs = std::filesystem; CXmlOpr::CXmlOpr() = default; @@ -13,12 +15,13 @@ bool CXmlOpr::open(const std::string& xml_path) if (doc_.LoadFile(CUtil::utf8_to_gbk(xml_path).c_str()) != tinyxml2::XML_SUCCESS) { return false; } + xml_path_ = CUtil::utf8_to_gbk(xml_path); #else if (doc_.LoadFile(xml_path.c_str()) != tinyxml2::XML_SUCCESS) { return false; } -#endif xml_path_ = xml_path; +#endif return true; } @@ -44,21 +47,21 @@ bool CXmlOpr::get_all_elements(std::vector& vec, const std::string& { vec.clear(); - Element_t* temp = parent_node_; + parent_node2_ = parent_node_; if (!unit.empty()) { - temp = temp->FirstChildElement(unit.c_str()); + parent_node2_ = parent_node2_->FirstChildElement(unit.c_str()); } if (!opr_base_.relative_nodes.empty()) { auto v = CUtil::splitString(opr_base_.relative_nodes, ","); // 向下子项跳跃 for (const auto& it : v) { - temp = temp->FirstChildElement(it.c_str()); + parent_node2_ = parent_node2_->FirstChildElement(it.c_str()); } } - auto purpose_node = temp->FirstChildElement(opr_base_.item_key.c_str()); + auto purpose_node = parent_node2_->FirstChildElement(opr_base_.item_key.c_str()); while (purpose_node) { vec.push_back(purpose_node); purpose_node = purpose_node->NextSiblingElement(); @@ -81,7 +84,6 @@ bool CXmlOpr::parse_xml(std::vector& vec) auto nodes = CUtil::splitString(opr_base_.main_nodes, "/"); for (const auto& item : nodes) { - if (item.empty()) { continue; } @@ -93,6 +95,10 @@ bool CXmlOpr::parse_xml(std::vector& vec) } } + if (parent_node_ == nullptr) { + return false; + } + if (opr_base_.is_same) { units_.clear(); auto p = parent_node_->FirstChildElement(); @@ -110,7 +116,7 @@ bool CXmlOpr::parse_xml(std::vector& vec) return true; } -bool CXmlOpr::get_all_unit(std::vector &units) +bool CXmlOpr::get_all_unit(std::vector& units) { units = units_; return true; @@ -121,7 +127,7 @@ void CXmlOpr::copy_and_del(std::vector& vec, std::vector { out.clear(); // 先找到最后一个节点 - Element_t* last_node = parent_node_->LastChildElement(opr_base_.item_key.c_str()); + Element_t* last_node = parent_node2_->LastChildElement(opr_base_.item_key.c_str()); Element_t* last_node_bk = last_node; if (last_node == nullptr) { return; @@ -133,14 +139,14 @@ void CXmlOpr::copy_and_del(std::vector& vec, std::vector last_node = n; } // 删除原有的节点 - Element_t* fnode = parent_node_->FirstChildElement(opr_base_.item_key.c_str()); + Element_t* fnode = parent_node2_->FirstChildElement(opr_base_.item_key.c_str()); Element_t* fnext = fnode->NextSiblingElement(); while (fnode != last_node_bk) { - parent_node_->DeleteChild(fnode); + parent_node2_->DeleteChild(fnode); fnode = fnext; fnext = fnode->NextSiblingElement(); } - parent_node_->DeleteChild(last_node_bk); + parent_node2_->DeleteChild(last_node_bk); } void CXmlOpr::insert_brother_node(Element_t* brother, Element_t* newer) @@ -148,7 +154,7 @@ void CXmlOpr::insert_brother_node(Element_t* brother, Element_t* newer) if (!brother || !newer) { return; } - parent_node_->InsertAfterChild(brother, newer); + parent_node2_->InsertAfterChild(brother, newer); } Element_t* CXmlOpr::copy_element(Element_t* ele) @@ -177,7 +183,7 @@ bool CXmlOpr::check_valid_xml_data(const std::string& data) bool CXmlOpr::check_same_struct(const std::string& data) { - auto* own_ele = parent_node_->FirstChildElement(opr_base_.item_key.c_str()); + auto* own_ele = parent_node2_->FirstChildElement(opr_base_.item_key.c_str()); if (own_ele == nullptr) { return true; } @@ -219,7 +225,7 @@ bool CXmlOpr::check_same_struct(const std::string& data) bool CXmlOpr::import_newer_data(const std::vector& vec, std::size_t& success_count) { success_count = 0; - auto* last_item = parent_node_->LastChildElement(opr_base_.item_key.c_str()); + auto* last_item = parent_node2_->LastChildElement(opr_base_.item_key.c_str()); if (last_item == nullptr) { return false; } @@ -244,7 +250,7 @@ bool CXmlOpr::import_newer_data(const std::vector& vec, std::size_t void CXmlOpr::del_element(Element_t* ele) { - parent_node_->DeleteChild(ele); + parent_node2_->DeleteChild(ele); } bool CXmlOpr::check_key_exists(const Property_t& property) @@ -252,7 +258,7 @@ bool CXmlOpr::check_key_exists(const Property_t& property) if (keys_.size() < 1 || property.size() < 1) { return false; } - return check_key_exists(property[0].key); + return check_key_exists(property[0].value); } bool CXmlOpr::check_key_exists(const std::string& key) @@ -260,7 +266,7 @@ bool CXmlOpr::check_key_exists(const std::string& key) if (keys_.size() < 1 || key.empty()) { return false; } - Element_t* purpose_node = parent_node_->FirstChildElement(opr_base_.item_key.c_str()); + Element_t* purpose_node = parent_node2_->FirstChildElement(opr_base_.item_key.c_str()); while (purpose_node) { const char* value = purpose_node->Attribute(keys_[0].c_str()); if (key == std::string(value)) { diff --git a/src/xml_opr.h b/src/xml_opr.h index 1f8e3b4..d9f92d8 100644 --- a/src/xml_opr.h +++ b/src/xml_opr.h @@ -52,6 +52,7 @@ private: OneGroupIni opr_base_{}; std::string xml_path_{}; Element_t* parent_node_{}; + Element_t* parent_node2_{}; std::vector keys_{}; std::vector units_{}; };