From d9973e88041a6fbb8b4520ebaf8379e088a33098 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=89=E5=AE=87=E6=B8=85=E9=9F=B3?= <2422523675@qq.com> Date: Fri, 16 Dec 2022 15:08:33 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=84=E9=81=BF=E4=BA=86=E6=97=A0=E6=95=88?= =?UTF-8?q?=E7=9A=84=E5=BC=95=E7=94=A8=E5=A4=84=E7=90=86=EF=BC=8C=E6=95=85?= =?UTF-8?q?=E4=BA=8B=E7=BC=96=E6=8E=92=E6=98=BE=E7=A4=BA=E8=AF=A6=E6=83=85?= =?UTF-8?q?=EF=BC=8C=E5=88=A0=E9=99=A4=E4=BA=86=E6=97=A0=E6=95=88=E7=9A=84?= =?UTF-8?q?=E9=AB=98=E4=BA=AE=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- QtNovelDesc.pro.user | 2 +- WordsIDE/SourceEditView.cpp | 1 - WordsIDE/storyboardsourceedit.cpp | 2 -- WordsIDE/storyboardspresent.cpp | 33 +++++++++++++++++++++++++++++ WordsIDE/storychainsourceeditor.cpp | 2 -- WordsIDE/storyunitsourceedit.cpp | 2 -- WordsIDE/storyvolumesourceedit.cpp | 2 -- libParse/parsechecks.cpp | 6 ++++++ 8 files changed, 40 insertions(+), 10 deletions(-) diff --git a/QtNovelDesc.pro.user b/QtNovelDesc.pro.user index f8748d8..b776c7b 100644 --- a/QtNovelDesc.pro.user +++ b/QtNovelDesc.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/WordsIDE/SourceEditView.cpp b/WordsIDE/SourceEditView.cpp index a28bc01..84ccfdb 100644 --- a/WordsIDE/SourceEditView.cpp +++ b/WordsIDE/SourceEditView.cpp @@ -58,7 +58,6 @@ void TextContentEdit::reloadConfigrations(QList configs) default_font.setPointSize(font_size.toInt()); this->textDocument()->setDefaultFont(default_font); - this->rehighlighter(); } void TextContentEdit::rehighlighter() diff --git a/WordsIDE/storyboardsourceedit.cpp b/WordsIDE/storyboardsourceedit.cpp index 39c8a55..7acfe3b 100644 --- a/WordsIDE/storyboardsourceedit.cpp +++ b/WordsIDE/storyboardsourceedit.cpp @@ -40,7 +40,6 @@ void StoryBoardSourceEdit::reloadConfigrations(QList con default_font.setPointSize(font_size.toInt()); this->textDocument()->setDefaultFont(default_font); - this->rehighlighter(); } void StoryBoardSourceEdit::modeReset(const QString &) const{} @@ -67,7 +66,6 @@ void StoryBoardSourceEdit::initSource(Core::AppCore *core, const QFileInfo &src, FormattedTextEdit::initSource(core, src, parent); static_cast(words_highlighter) ->reset(core->parseCore()->queryDocument(src)); - rehighlighter(); } void StoryBoardSourceEdit::jumpTo(const QList &path) diff --git a/WordsIDE/storyboardspresent.cpp b/WordsIDE/storyboardspresent.cpp index 4d1e7e1..d6d47f9 100644 --- a/WordsIDE/storyboardspresent.cpp +++ b/WordsIDE/storyboardspresent.cpp @@ -26,6 +26,8 @@ StoryBoardsPresent::StoryBoardsPresent(Core::AppCore *core, QWidget *parent) tree_view->resizeColumnToContents(0); tree_view->resizeColumnToContents(1); }); + + connect(tree_view, &QTreeView::clicked, this, &StoryBoardsPresent::show_current_details); } void StoryBoardsPresent::refresh() @@ -53,4 +55,35 @@ void StoryBoardsPresent::refresh() item->appendRow(row); } } + + this->tree_view->resizeColumnToContents(0); +} + +void StoryBoardsPresent::show_current_details(const QModelIndex &idx) +{ + if(!idx.isValid()) + return; + + details_view->clear(); + auto item = model_base->itemFromIndex(idx.sibling(idx.row(), 0)); + if(item->parent() == nullptr){ + auto node = core_ins->parseCore()->queryStoryBoard(item->text()); + + auto children = node.first()->children(); + for(auto &it : children){ + if(it->typeValue() != NODE_FRAGMENTREFERENCE){ + details_view->append(it->toString()); + } + } + } + else{ + auto node = core_ins->parseCore()->queryStoryBoard(item->parent()->text()); + auto point = core_ins->parseCore()->queryStoryFragmentRefer(node.first(), item->text().mid(1)); + + auto children = point.first()->children(); + for(auto &it : children){ + details_view->append(it->toString()); + } + } + } diff --git a/WordsIDE/storychainsourceeditor.cpp b/WordsIDE/storychainsourceeditor.cpp index 9f24f94..0bf438a 100644 --- a/WordsIDE/storychainsourceeditor.cpp +++ b/WordsIDE/storychainsourceeditor.cpp @@ -46,7 +46,6 @@ void StoryChainSourceEdit::initSource(Core::AppCore *core, const QFileInfo &src, this->doc_ins = core->parseCore()->queryDocument(src); this->core_ins = core; static_cast(this->highter_ins)->reset(doc_ins); - rehighlighter(); } FileExtensionFactory *StoryChainSourceEdit::factory() const @@ -66,7 +65,6 @@ void StoryChainSourceEdit::reloadConfigrations(QList con default_font.setPointSize(font_size.toInt()); this->textDocument()->setDefaultFont(default_font); - this->rehighlighter(); } void StoryChainSourceEdit::rehighlighter() diff --git a/WordsIDE/storyunitsourceedit.cpp b/WordsIDE/storyunitsourceedit.cpp index 2dcbd2e..53c721e 100644 --- a/WordsIDE/storyunitsourceedit.cpp +++ b/WordsIDE/storyunitsourceedit.cpp @@ -38,7 +38,6 @@ void StoryUnitSourceEdit::reloadConfigrations(QList conf default_font.setPointSize(font_size.toInt()); this->textDocument()->setDefaultFont(default_font); - this->rehighlighter(); } void StoryUnitSourceEdit::modeReset(const QString &) const @@ -73,7 +72,6 @@ void StoryUnitSourceEdit::initSource(Core::AppCore *core, const QFileInfo &src, FormattedTextEdit::initSource(core, src, parent); static_cast(words_highlighter) ->reset(core->parseCore()->queryDocument(src)); - rehighlighter(); } void StoryUnitSourceEdit::jumpTo(const QList &path) diff --git a/WordsIDE/storyvolumesourceedit.cpp b/WordsIDE/storyvolumesourceedit.cpp index 2801681..04589e3 100644 --- a/WordsIDE/storyvolumesourceedit.cpp +++ b/WordsIDE/storyvolumesourceedit.cpp @@ -28,7 +28,6 @@ void StoryVolumeSourceEdit::reloadConfigrations(QList co default_font.setPointSize(font_size.toInt()); this->textDocument()->setDefaultFont(default_font); - this->rehighlighter(); } void StoryVolumeSourceEdit::resetProcsType(const QString &suffix) @@ -70,7 +69,6 @@ void StoryVolumeSourceEdit::initSource(Core::AppCore *core, const QFileInfo &src FormattedTextEdit::initSource(core, src, parent); static_cast(words_highlighter) ->reset(core->parseCore()->queryDocument(src)); - rehighlighter(); } void StoryVolumeSourceEdit::rehighlighter() diff --git a/libParse/parsechecks.cpp b/libParse/parsechecks.cpp index e285cce..e4cc7d4 100644 --- a/libParse/parsechecks.cpp +++ b/libParse/parsechecks.cpp @@ -22,7 +22,13 @@ bool CheckTools::FragmentsCheck::check(QList &reasons) cons if(ref->typeValue() == NODE_FRAGMENTREFERENCE){ auto ins_ref = static_cast(ref); auto u = core_ins->queryStoryUnit(ins_ref->unit()); + if(!u.size()) + continue; + auto frag = core_ins->queryStoryFragment(u[0], ins_ref->fragment()); + if(!frag.size()) + continue; + auto frag_ins = static_cast(frag[0]); bool isvalid;