QtNovelUI/WordsIDE/storyboardspresent.cpp

57 lines
1.7 KiB
C++
Raw Normal View History

2022-11-25 01:18:54 +00:00
#include "storyboardspresent.h"
#include <QSplitter>
#include <QVBoxLayout>
using namespace Components;
using namespace Parse::Result;
StoryBoardsPresent::StoryBoardsPresent(Core::AppCore *core, QWidget *parent)
: QWidget(parent), core_ins(core),
tree_view(new QTreeView(this)), details_view(new QTextEdit(this)),
model_base(new QStandardItemModel(this))
{
tree_view->setModel(model_base);
auto layout = new QVBoxLayout(this);
layout->setMargin(0);
auto splitter= new QSplitter(Qt::Vertical, this);
layout->addWidget(splitter);
splitter->addWidget(tree_view);
splitter->addWidget(details_view);
details_view->setReadOnly(true);
connect(tree_view, &QTreeView::expanded, [this](){
tree_view->resizeColumnToContents(0);
tree_view->resizeColumnToContents(1);
});
}
void StoryBoardsPresent::refresh()
{
model_base->clear();
model_base->setHorizontalHeaderLabels(QStringList() << "名称" << "单元");
auto storys = core_ins->parseCore()->allStoryBoards();
for(auto &b : storys){
auto item = new QStandardItem(static_cast<NamedNode*>(b)->name()[0]);
item->setEditable(false);
model_base->appendRow(item);
auto refers = b->children();
for(auto &ref : refers){
if(ref->typeValue() != NODE_FRAGMENTREFERENCE)
continue;
QList<QStandardItem*> row;
row << new QStandardItem("@"+static_cast<NamedNode*>(ref)->name()[0]);
row.last()->setEditable(false);
row << new QStandardItem(static_cast<NamedNode*>(ref)->name()[1]);
row.last()->setEditable(false);
item->appendRow(row);
}
}
}