#include "default_textpresent.h" #include "keywordshightlighter.h" #include #include #include #include #include #include using namespace Components; using namespace Parse::Result; using namespace Enhancement; using namespace Core; DefaultTextPresent:: DefaultTextPresent() :edit_square(new QTextEdit){} void DefaultTextPresent::modeReset(const QString &) const { } QList DefaultTextPresent::modes() const { return QList() << "文本"; } QString DefaultTextPresent::currentMode() const { return modes()[0]; } void DefaultTextPresent::jumpTo(const QList &path) { } std::tuple DefaultTextPresent::create(const QDir &target, const QString &name, const QString &suffix) { auto x = target.filePath(QString("%1.%2").arg(name, suffix)); if(QFileInfo::exists(x)) return std::make_tuple(false, x); QFile xf(x); if(!xf.open(QIODevice::WriteOnly|QIODevice::Text)) throw new std::exception(QString("指定文件无法建立:" + x).toLocal8Bit()); return std::make_tuple(true, target.relativeFilePath(x)); } MakeTools::ContentPresent * DefaultTextPresent::newInst() const { return new DefaultTextPresent(); } void DefaultTextPresent::applySetting(const QString &name, Core::AppCore *core) { name_store = name; } QString DefaultTextPresent::name() const { return name_store; } void DefaultTextPresent::load(const QFileInfo &target_file) { if(!target_file.exists()) throw new std::exception(QString("指定文件未找到:%1").arg(target_file.absoluteFilePath()).toLocal8Bit()); target_file_path = target_file.canonicalFilePath(); QFile bin(target_file_path); if(!bin.open(QIODevice::ReadOnly | QIODevice::Text)) throw new std::exception(QString("指定文件无法打开:%1").arg(target_file.absoluteFilePath()).toLocal8Bit()); QTextStream tin(&bin); tin.setCodec("UTF-8"); auto content = tin.readAll(); this->edit_square->setText(content); } void DefaultTextPresent::saveAs(const QString &path) { if(!path.isEmpty()) target_file_path = path; QFile bout(target_file_path); if(!bout.open(QIODevice::WriteOnly|QIODevice::Text)) throw new std::exception(QString("指定文件无法打开:%1").arg(target_file_path).toLocal8Bit()); QTextStream tout(&bout); tout.setCodec("UTF-8"); tout << this->edit_square->toPlainText(); tout.flush(); } QString DefaultTextPresent::targetPath(const QDir &base) const { if(target_file_path == "") return ""; return base.relativeFilePath(target_file_path); } bool DefaultTextPresent::isModified() const { return true; } QList DefaultTextPresent::suffixes() const { return QStringList() << "txt" << "*"; } QString DefaultTextPresent::absulateTargetPath() const { return target_file_path; } QWidget * DefaultTextPresent::widget() const { return edit_square; } QString DefaultTextPresent::getText() const { return edit_square->toPlainText(); }