QtNovelUI/WordsIDE/manager_docs.h

150 lines
4.2 KiB
C
Raw Normal View History

#ifndef VISUABLE_PROJECT_CONTROLLER
#define VISUABLE_PROJECT_CONTROLLER
#include "appcore.h"
#include <QTreeView>
#include <QWidget>
#include <libProjectManager.h>
#include <commandsdispatcher.h>
namespace Components {
class PresentContainer
{
public:
virtual ~PresentContainer() = default;
/**
* @brief
* @param ins
*/
virtual void append(MakeTools::ContentPresent *ins) = 0;
/**
* @brief
* @param ins
*/
virtual void active(MakeTools::ContentPresent *ins) = 0;
/**
* @brief
* @param ins
*/
virtual void remove(MakeTools::ContentPresent *ins) = 0;
};
/**
* @brief
*/
class DocumentManager : public Schedule::AccessibleObject
{
Q_OBJECT
public:
DocumentManager(Core::AppCore *src, Project::ProjectManager *project, PresentContainer *con);
virtual ~DocumentManager() = default;
/**
* @brief
* @param path [/x_name]+
*/
void newPackage(const QString &path_str);
/**
* @brief Index
* @param group
* @param name
* @throw SimpleException
*/
void newPackage(const QString &group_path, const QString &name);
/**
* @brief
* @return {txt, storychain, }
*/
QList<QString> fileTypes() const;
/**
* @brief
* @param group
* @param name
* @param suffix
* @throw SimpleException
*/
void newFile(const QString &group_path, const QString &name, const QString &suffix);
QModelIndex converter(const QString &path);
QString converter(const QModelIndex &index);
/**
* @brief
* @param node
* @throw SimpleException
*/
void removeNode(const QString &node_path);
/**
* @brief
* @param node Index
* @param name
* @throw SimpleException
*/
void renameNode(const QString &node_path, const QString &name);
/**
* @brief
* @param file_node
* @throw SimpleException
*/
void openFile(const QString &file_node);
/**
* @brief
* @return
*/
QList<QString> actives() const;
/**
* @brief null
* @param node
* @return null或打开的展示实例
*/
MakeTools::ContentPresent* activePresentOf(const QString &node_path);
/**
* @brief
* @param docs
*/
void save(const QList<QString> &docs = QList<QString>());
/**
* @brief
* @param docs
*/
void close(const QList<QString> &doc_paths = QList<QString>());
/**
* @brief ModelIndex
* @param ins
*/
QString pathOf(MakeTools::ContentPresent *ins) const;
/**
* @brief
* @param target
* @return
*/
QModelIndex pathOf(const QFileInfo &target) const;
// AccessibleObject interface
public:
virtual QString name() const override;
private:
Core::AppCore *const rtcore;
Project::ProjectManager *pjtins;
PresentContainer *front_end;
QHash<QString, MakeTools::ContentPresent*> doc_openning;
};
}
#endif // VISUABLE_PROJECT_CONTROLLER