This commit is contained in:
玉宇清音 2023-09-10 13:28:52 +08:00
parent 165d7f85f1
commit 44d05e4032
12 changed files with 79 additions and 24 deletions

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject> <!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.15.0, 2023-09-04T07:38:38. --> <!-- Written by QtCreator 4.15.0, 2023-09-08T22:11:48. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>EnvironmentId</variable> <variable>EnvironmentId</variable>

View File

@ -45,7 +45,7 @@ namespace Presents {
* @param core * @param core
* @param name * @param name
*/ */
virtual void applySetting(const QString &name) = 0; virtual void applySetting(const QString &name, const Config::Configration *cfg) = 0;
/** /**
* @brief 使 * @brief 使
@ -98,6 +98,13 @@ namespace Presents {
*/ */
virtual void create(const QFileInfo &target) = 0; virtual void create(const QFileInfo &target) = 0;
/**
* @brief
* @param cfg_port
* @return
*/
virtual QDialog *createTempConfigPanel(Config::Configration *cfg_port) = 0;
/** /**
* @brief Present实例 * @brief Present实例
* @return * @return

View File

@ -196,6 +196,16 @@ void MainWindow::build_view_menu(QMenu *view) {
view->addSeparator(); view->addSeparator();
auto func = view->addMenu("功能视图"); auto func = view->addMenu("功能视图");
sync_kernel->widgetEnableSync(func, [this]() { return this->core_bind->pjtManager()->isOpenning(); }); sync_kernel->widgetEnableSync(func, [this]() { return this->core_bind->pjtManager()->isOpenning(); });
auto fconfig = view->addAction("视图配置", [this]() {
auto dialog = new QDialog();
auto tabs = new QTabWidget(dialog);
auto layout = new QVBoxLayout(dialog);
layout->addWidget(tabs);
core_bind->docsManager()->loadViewConfigWidgets(tabs);
dialog->exec();
});
sync_kernel->actionEnableSync(fconfig, [this]() { return this->core_bind->pjtManager()->isOpenning(); });
} }
void MainWindow::build_tools_menu(QMenu *tool) { void MainWindow::build_tools_menu(QMenu *tool) {

View File

@ -1,12 +1,13 @@
#include "manager_docs.h" #include "manager_docs.h"
#include "DocsManager.h" #include "DocsManager.h"
#include "keywordshighlighter.h" #include "keywordshighlighter.h"
#include "xapp.h"
using namespace Core; using namespace Core;
using namespace Config; using namespace Config;
using namespace Presents; using namespace Presents;
DocumentsManager::DocumentsManager(Project::ProjectManager *project) : pjtins(project) { initContentViewPlugins(); } DocumentsManager::DocumentsManager(XApp *host) : core_inst(host) { initContentViewPlugins(); }
void DocumentsManager::appendPresent(PresentHost *container) { void DocumentsManager::appendPresent(PresentHost *container) {
if (present_ui.contains(container)) if (present_ui.contains(container))
@ -17,7 +18,7 @@ void DocumentsManager::appendPresent(PresentHost *container) {
void DocumentsManager::removePresent(PresentHost *container) {} void DocumentsManager::removePresent(PresentHost *container) {}
Project::ProjectManager *DocumentsManager::projectManager() const { return pjtins; } Project::ProjectManager *DocumentsManager::projectManager() const { return core_inst->pjtManager(); }
#include "srcedit_defaulttext.h" #include "srcedit_defaulttext.h"
#include "srcedit_storyboard.h" #include "srcedit_storyboard.h"
@ -26,6 +27,18 @@ void DocumentsManager::initContentViewPlugins() {
registPresentType(new StorySourceEditFactory); registPresentType(new StorySourceEditFactory);
} }
void DocumentsManager::loadViewConfigWidgets(QTabWidget *stacked) {
if (!projectManager()->isOpenning())
return;
auto keys = factory_map.keys();
for (auto &it : keys) {
auto panel = factory_map[it]->createTempConfigPanel(projectManager()->configraions());
if (panel)
stacked->addTab(panel, it + "配置");
}
}
QList<QString> DocumentsManager::fileTypes() const { QList<QString> DocumentsManager::fileTypes() const {
QList<QString> all_types; QList<QString> all_types;
for (auto &it : factory_map.keys()) for (auto &it : factory_map.keys())
@ -33,7 +46,7 @@ QList<QString> DocumentsManager::fileTypes() const {
return all_types; return all_types;
} }
void DocumentsManager::createPackage(const Core::Route &link) { pjtins->operateAccess()->newPackage(link.links()); } void DocumentsManager::createPackage(const Core::Route &link) { core_inst->pjtManager()->operateAccess()->newPackage(link.links()); }
void DocumentsManager::createFile(const Core::Route &group_path, const QString &name, const QString &suffix) { void DocumentsManager::createFile(const Core::Route &group_path, const QString &name, const QString &suffix) {
auto all_types = fileTypes(); auto all_types = fileTypes();
@ -47,12 +60,12 @@ void DocumentsManager::createFile(const Core::Route &group_path, const QString &
} }
void DocumentsManager::renameNode(const Core::Route &node_path, const QString &name) { void DocumentsManager::renameNode(const Core::Route &node_path, const QString &name) {
pjtins->operateAccess()->rename(convertPath(node_path), name); core_inst->pjtManager()->operateAccess()->rename(convertPath(node_path), name);
auto activie_file_nodes = actives(); auto activie_file_nodes = actives();
if (activie_file_nodes.contains(node_path)) { if (activie_file_nodes.contains(node_path)) {
auto inst = convertPresent(node_path); auto inst = convertPresent(node_path);
inst->applySetting(name); inst->applySetting(name, core_inst->pjtManager()->configraions());
doc_openning.remove(node_path); doc_openning.remove(node_path);
auto old_link = node_path.links(); auto old_link = node_path.links();
@ -65,7 +78,7 @@ void DocumentsManager::renameNode(const Core::Route &node_path, const QString &n
void DocumentsManager::deleteNode(const Core::Route &node_path) { void DocumentsManager::deleteNode(const Core::Route &node_path) {
auto node_mindex = convertPath(node_path); auto node_mindex = convertPath(node_path);
auto file_nodes = pjtins->queryAccess()->filesGather(node_mindex); auto file_nodes = core_inst->pjtManager()->queryAccess()->filesGather(node_mindex);
auto activie_file_nodes = actives(); auto activie_file_nodes = actives();
QList<Core::Route> path_buff; QList<Core::Route> path_buff;
@ -76,26 +89,26 @@ void DocumentsManager::deleteNode(const Core::Route &node_path) {
} }
closeFile(path_buff); closeFile(path_buff);
pjtins->operateAccess()->deleteT(node_mindex); core_inst->pjtManager()->operateAccess()->deleteT(node_mindex);
} }
void DocumentsManager::openFile(const QList<Route> &doc_paths) { void DocumentsManager::openFile(const QList<Route> &doc_paths) {
for (auto &it : doc_paths) { for (auto &it : doc_paths) {
auto openning = actives(); auto openning = actives();
if (openning.contains(it)) { if (openning.contains(it)) {
doc_openning[it]->applySetting(it.links().last()); doc_openning[it]->applySetting(it.links().last(), core_inst->pjtManager()->configraions());
active(it); active(it);
continue; continue;
} }
auto info = pjtins->queryAccess()->queryInfo(convertPath(it)); auto info = core_inst->pjtManager()->queryAccess()->queryInfo(convertPath(it));
if (!info.isFile()) if (!info.isFile())
throw new SimpleException<QString>("打开文件错误", "指向的节点不是文件节点"); throw new SimpleException<QString>("打开文件错误", "指向的节点不是文件节点");
auto view = factory_map[info.suffix()]->newInst(this, it); auto view = factory_map[info.suffix()]->newInst(this, it);
doc_openning[it] = view; doc_openning[it] = view;
view->load(info); view->load(info);
view->applySetting(it.links().last()); view->applySetting(it.links().last(), core_inst->pjtManager()->configraions());
for (auto &con : present_ui) for (auto &con : present_ui)
if (con->avaliable(view)) { if (con->avaliable(view)) {
@ -126,7 +139,7 @@ void DocumentsManager::closeFile(const QList<Core::Route> &doc_paths) {
QModelIndex DocumentsManager::convertPath(const Core::Route &path) { QModelIndex DocumentsManager::convertPath(const Core::Route &path) {
auto path_list = path.links(); auto path_list = path.links();
auto itor_node = pjtins->model()->item(0); auto itor_node = core_inst->pjtManager()->model()->item(0);
while (path_list.size() > 1) { while (path_list.size() > 1) {
auto item = path_list.takeAt(1); auto item = path_list.takeAt(1);
int idx = 0; int idx = 0;
@ -145,7 +158,7 @@ QModelIndex DocumentsManager::convertPath(const Core::Route &path) {
Route DocumentsManager::convertPath(const QModelIndex &index) { Route DocumentsManager::convertPath(const QModelIndex &index) {
Core::Route path; Core::Route path;
auto item = pjtins->model()->itemFromIndex(index); auto item = core_inst->pjtManager()->model()->itemFromIndex(index);
while (item != nullptr) { while (item != nullptr) {
path.prepend(item->text().trimmed()); path.prepend(item->text().trimmed());
item = item->parent(); item = item->parent();
@ -173,6 +186,10 @@ void DocumentsManager::save() {
auto actives_paths = this->actives(); auto actives_paths = this->actives();
for (auto &p : actives_paths) for (auto &p : actives_paths)
convertPresent(p)->saveAs(); convertPresent(p)->saveAs();
// files
auto pjt = core_inst->pjtManager();
auto list = pjt->queryAccess()->filesWithEnds("storyboard");
} }
QString DocumentsManager::name() const { return NAME(DocumentsManager); } QString DocumentsManager::name() const { return NAME(DocumentsManager); }

View File

@ -53,7 +53,7 @@ namespace Presents {
}; };
} // namespace Presents } // namespace Presents
class XApp;
namespace Core { namespace Core {
/** /**
@ -61,7 +61,7 @@ namespace Core {
*/ */
class DocumentsManager : public Schedule::AccessibleObject { class DocumentsManager : public Schedule::AccessibleObject {
public: public:
DocumentsManager(Project::ProjectManager *project); DocumentsManager(XApp *host);
virtual ~DocumentsManager() = default; virtual ~DocumentsManager() = default;
/** /**
@ -81,6 +81,7 @@ namespace Core {
* @brief * @brief
*/ */
void initContentViewPlugins(); void initContentViewPlugins();
void loadViewConfigWidgets(QTabWidget *stacked);
// ========================================================== // ==========================================================
/** /**
@ -188,7 +189,7 @@ namespace Core {
virtual QString name() const override; virtual QString name() const override;
private: private:
Project::ProjectManager *pjtins; XApp *const core_inst;
QList<Presents::PresentHost *> present_ui; QList<Presents::PresentHost *> present_ui;
QHash<QString, Presents::PresentFactory *> factory_map; QHash<QString, Presents::PresentFactory *> factory_map;

View File

@ -3,7 +3,9 @@
#include <QComboBox> #include <QComboBox>
#include <QFont> #include <QFont>
#include <QGridLayout> #include <QGridLayout>
#include <QLabel>
#include <QMenu> #include <QMenu>
#include <QPushButton>
#include <QSpinBox> #include <QSpinBox>
#include <QTextStream> #include <QTextStream>
#include <libConfig.h> #include <libConfig.h>
@ -30,7 +32,7 @@ void DefaultTextEdit::beforeClose() { mgr_inst->save(); }
DocumentsManager *DefaultTextEdit::docsManager() const { return mgr_inst; } DocumentsManager *DefaultTextEdit::docsManager() const { return mgr_inst; }
void DefaultTextEdit::applySetting(const QString &name) { name_store = name; } void DefaultTextEdit::applySetting(const QString &name, const Configration *cfg) { name_store = name; }
QString DefaultTextEdit::name() const QString DefaultTextEdit::name() const
{ {
@ -95,3 +97,13 @@ void DefaultTextEditFactory::create(const QFileInfo &target) {
base_f.flush(); base_f.flush();
base_f.close(); base_f.close();
} }
QDialog *DefaultTextEditFactory::createTempConfigPanel(Config::Configration *cfg_port) {
auto panel = new QDialog();
panel->setWindowTitle("文本编辑器配置");
auto layout = new QGridLayout(panel);
layout->addWidget(new QLabel("选择字体", panel));
layout->addWidget(new QPushButton("选择字体", panel));
return panel;
}

View File

@ -4,6 +4,7 @@
#include "DocsManager.h" #include "DocsManager.h"
#include <QSyntaxHighlighter> #include <QSyntaxHighlighter>
#include <QDialog>
#include <QFileInfo> #include <QFileInfo>
#include <QTextEdit> #include <QTextEdit>
@ -30,7 +31,7 @@ namespace Presents {
// FilePresent interface // FilePresent interface
public: public:
virtual QWidget *widget() const override; virtual QWidget *widget() const override;
virtual void applySetting(const QString &name) override; virtual void applySetting(const QString &name, const Config::Configration *cfg) override;
virtual QString name() const override; virtual QString name() const override;
virtual void load(const QFileInfo &target_file) override; virtual void load(const QFileInfo &target_file) override;
virtual void saveAs(const QString &path) override; virtual void saveAs(const QString &path) override;
@ -50,9 +51,13 @@ namespace Presents {
public: public:
virtual ~DefaultTextEditFactory() = default; virtual ~DefaultTextEditFactory() = default;
void setPresentFont(Config::Configration *ptr, const QFont &appoint);
QFont getPresentFont(Config::Configration *ptr) const;
// PresentFactory interface // PresentFactory interface
public: public:
virtual void create(const QFileInfo &target) override; virtual void create(const QFileInfo &target) override;
virtual QDialog *createTempConfigPanel(Config::Configration *cfg_port) override;
}; };
} // namespace Presents } // namespace Presents

View File

@ -83,7 +83,7 @@ bool StorySourceEdit::isModified() const
return true; return true;
} }
void StorySourceEdit::applySetting(const QString &name) { this->name_store = name; } void StorySourceEdit::applySetting(const QString &name, const Configration *cfg) { this->name_store = name; }
void StorySourceEdit::jumpTo(const QList<QString> &path) { void StorySourceEdit::jumpTo(const QList<QString> &path) {
// auto fpath = this->absoluteTargetPath(); // auto fpath = this->absoluteTargetPath();
@ -119,3 +119,5 @@ void StorySourceEditFactory::create(const QFileInfo &target) {
base_f.flush(); base_f.flush();
base_f.close(); base_f.close();
} }
QDialog *StorySourceEditFactory::createTempConfigPanel(Config::Configration *cfg_port) { return nullptr; }

View File

@ -37,7 +37,7 @@ namespace Presents {
virtual QString relativeTargetPath(const QDir &base) const override; virtual QString relativeTargetPath(const QDir &base) const override;
virtual QString absoluteTargetPath() const override; virtual QString absoluteTargetPath() const override;
virtual bool isModified() const override; virtual bool isModified() const override;
virtual void applySetting(const QString &name) override; virtual void applySetting(const QString &name, const Config::Configration *cfg) override;
virtual void jumpTo(const QList<QString> &path) override; virtual void jumpTo(const QList<QString> &path) override;
virtual void beforeClose() override; virtual void beforeClose() override;
virtual Core::DocumentsManager *docsManager() const override; virtual Core::DocumentsManager *docsManager() const override;
@ -49,6 +49,7 @@ namespace Presents {
// PresentFactory interface // PresentFactory interface
public: public:
virtual void create(const QFileInfo &target) override; virtual void create(const QFileInfo &target) override;
virtual QDialog *createTempConfigPanel(Config::Configration *cfg_port) override;
}; };
} // namespace Presents } // namespace Presents

View File

@ -22,7 +22,7 @@ DocumentsManager *WelcomePanel::docsManager() const { return nullptr; }
Route WelcomePanel::accessPath() const { return Route(); } Route WelcomePanel::accessPath() const { return Route(); }
void WelcomePanel::applySetting(const QString &name) {} void WelcomePanel::applySetting(const QString &name, const Config::Configration *cfg) {}
void WelcomePanel::load(const QFileInfo &target_file) {} void WelcomePanel::load(const QFileInfo &target_file) {}

View File

@ -22,7 +22,7 @@ namespace Presents {
virtual Core::DocumentsManager *docsManager() const override; virtual Core::DocumentsManager *docsManager() const override;
virtual Core::Route accessPath() const override; virtual Core::Route accessPath() const override;
virtual void applySetting(const QString &name) override; virtual void applySetting(const QString &name, const Config::Configration *cfg) override;
virtual void load(const QFileInfo &target_file) override; virtual void load(const QFileInfo &target_file) override;
virtual void saveAs(const QString &path) override; virtual void saveAs(const QString &path) override;
virtual QString relativeTargetPath(const QDir &base) const override; virtual QString relativeTargetPath(const QDir &base) const override;

View File

@ -15,7 +15,7 @@ XApp::XApp(int argc, char **argv)
: QApplication(argc, argv), : QApplication(argc, argv),
parse_service(new ParseBridge()), parse_service(new ParseBridge()),
project_manager(new XMLProjectManager(this)), project_manager(new XMLProjectManager(this)),
active_docscollect(new DocumentsManager(project_manager)) { active_docscollect(new DocumentsManager(this)) {
gconfig->loadFile("./software.config"); gconfig->loadFile("./software.config");
init_commands(disp_core); init_commands(disp_core);