提交 adaecd59 编写于 作者: 丁劲犇's avatar 丁劲犇 😸

加入文档系统。文档系统使用markdown,允许各个模块通过三种方式提供文档。

1. 可执行.md
2. 可执行.exe.md
3. 可执行.documents/index.md

文档可以包括图片和链接。
上级 df1f92bc
......@@ -52,6 +52,7 @@ set(PRJ_HEADERS_CORE
)
set(PRJ_HEADERS_GUI
gui/taskbusplatformfrm.h
gui/handbookview.h
gui/pdesignerview.h
gui/taskmodule.h
gui/tgraphicstaskitem.h
......@@ -72,6 +73,7 @@ set(PRJ_SOURCES_GUI
gui/taskbusplatformfrm_project.cpp
gui/dlgabout.cpp
gui/pdesignerview.cpp
gui/handbookview.cpp
gui/taskmodule.cpp
gui/tgraphicstaskitem.cpp
gui/custom_item_editor.cpp
......@@ -79,6 +81,7 @@ set(PRJ_SOURCES_GUI
)
set(PRJ_FORMS
gui/taskbusplatformfrm.ui
gui/handbookview.ui
gui/pdesignerview.ui
gui/dlgabout.ui
......
#include "dlgabout.h"
#include "ui_dlgabout.h"
#include <QUrl>
#include <QDateTime>
DlgAbout::DlgAbout(QWidget *parent) :
QDialog(parent),
ui(new Ui::DlgAbout)
{
ui->setupUi(this);
ui->textBrowser_About->
setText("Taskbus is a cross-platform"
setText(tr("Taskbus is a cross-platform"
" multi-process cooperation framework for non-professional "
"developers, with four features of process based, "
"language independent, compiler independent, and architecture Independent.\n"
"by goldenhawking@163.com, Colored Eagle Studio, 2016,2017,2018,2019");
"by Colored Eagle Studio, 2016~%1").arg(QDateTime::currentDateTime().date().year()));
}
DlgAbout::~DlgAbout()
......
#include "handbookview.h"
#include "ui_handbookview.h"
HandbookView::HandbookView(QWidget *parent) :
QWidget(parent),
ui(new Ui::HandbookView)
{
ui->setupUi(this);
connect (ui->textBrowser_help, &QTextBrowser::backwardAvailable,ui->pushButton_backward,&QPushButton::setEnabled);
connect (ui->textBrowser_help, &QTextBrowser::forwardAvailable,ui->pushButton_forward,&QPushButton::setEnabled);
connect (ui->pushButton_forward,&QPushButton::pressed,ui->textBrowser_help, &QTextBrowser::forward);
connect (ui->pushButton_backward,&QPushButton::pressed,ui->textBrowser_help, &QTextBrowser::backward);
connect (ui->textBrowser_help, &QTextBrowser::sourceChanged,[&](QUrl u){
ui->lineEdit_url->setText(u.toDisplayString());
});
}
HandbookView::~HandbookView()
{
delete ui;
}
void HandbookView::setUrl(QString urlstr,QString FailedString)
{
if (urlstr.length())
{
QUrl u = QUrl::fromLocalFile(urlstr);
ui->textBrowser_help->setSource(u,QTextDocument::MarkdownResource);
}
else
{
ui->textBrowser_help->setMarkdown(
"# Documents Does NOT Exist\r\n\r\n"
"You can write documents with markdown in any place below:\r\n\r\n"
+FailedString
);
}
}
#ifndef HANDBOOKVIEW_H
#define HANDBOOKVIEW_H
#include <QWidget>
namespace Ui {
class HandbookView;
}
class HandbookView : public QWidget
{
Q_OBJECT
public:
explicit HandbookView(QWidget *parent = nullptr);
~HandbookView();
public:
void setUrl(QString urlstr, QString FailedString = "");
private:
Ui::HandbookView *ui;
};
#endif // HANDBOOKVIEW_H
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>HandbookView</class>
<widget class="QWidget" name="HandbookView">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>640</width>
<height>480</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="pushButton_backward">
<property name="text">
<string>Backward</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_forward">
<property name="text">
<string>Forward</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>URL</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_url">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QTextBrowser" name="textBrowser_help">
<property name="autoFormatting">
<set>QTextEdit::AutoNone</set>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
......@@ -10,6 +10,7 @@
#include <QSettings>
#include <QDateTime>
#include "pdesignerview.h"
#include "handbookview.h"
#include "watchdog/tbwatchdog.h"
#include "dlgabout.h"
......@@ -323,23 +324,21 @@ void taskBusPlatformFrm::on_actionhideWindow_toggled(bool arg1)
void taskBusPlatformFrm::on_listView_modules_doubleClicked(const QModelIndex &index)
{
QMdiSubWindow * sub = ui->mdiArea->activeSubWindow();
if (sub)
if (ui->listView_modules->model())
{
PDesignerView * dv = qobject_cast<PDesignerView *>(sub->widget());
if (dv)
{
if (ui->listView_modules->model())
{
QModelIndexList lst;
lst<<index;
QMimeData * d = ui->listView_modules->model()->mimeData(lst);
if (d)
dv->addCell(d);
}
taskModule * mod = qobject_cast<taskModule *>(ui->listView_modules->model());
if (!mod)
return;
int r = index.row();
QStringList functions = mod->function_names();
if (r<0 || r>=functions.size())
return;
QString func = functions.at(r);
QString exe = mod->function_exec(func);
load_doucment(func,exe);
}
}
}
void taskBusPlatformFrm::on_checkBox_showCmd_stateChanged(int /*arg1*/)
......@@ -358,3 +357,55 @@ void taskBusPlatformFrm::slot_cmd_show(QMap<QString,QVariant> cmd)
m_pCmdViewModel->removeRows(0,m_pCmdViewModel->rowCount()-keepRows);
ui->listView_commands->scrollToBottom();
}
void taskBusPlatformFrm::load_doucment(QString func,QString exe)
{
//OpenDocuments
QFileInfo info(exe);
QString baseName = info.path()+"/"+
info.completeBaseName();
QString urlstr;
QString FailedString;
FailedString += exe+".md" + "\n\n";
FailedString += baseName+".md" + "\n\n";
FailedString += baseName+".documents/index.md" + "\n\n";
if (QFileInfo::exists(exe+".md"))
urlstr = exe+".md";
else if (QFileInfo::exists(baseName+".md"))
urlstr = baseName+".md";
else if (QFileInfo::exists(baseName+".documents/index.md"))
urlstr = baseName+".documents/index.md";
QList<QMdiSubWindow *> AllSubWnds = ui->mdiArea->subWindowList();
QString title = tr("DOC:") + func;
//Find existing window
QMdiSubWindow * wnd = nullptr;
foreach (QMdiSubWindow * w, AllSubWnds)
{
if (w->windowTitle()==title)
{
wnd = w;
ui->mdiArea->setActiveSubWindow(w);
break;
}
}
if (!wnd )
{
HandbookView * view = new HandbookView(this);
if (view)
{
view->setWindowTitle(title);
wnd = ui->mdiArea->addSubWindow(view);
view->show();
view->setUrl(urlstr,FailedString);
wnd->setWindowTitle(title);
}
}
}
void taskBusPlatformFrm::on_action_Help_triggered()
{
load_doucment("taskBus",QCoreApplication::applicationFilePath());
}
......@@ -43,6 +43,8 @@ private slots:
void on_listView_modules_doubleClicked(const QModelIndex &index);
void on_checkBox_showCmd_stateChanged(int arg1);
void on_action_Help_triggered();
signals:
void showSplash(QString msg,Qt::Alignment, QColor);
void hideSplash();
......@@ -51,6 +53,7 @@ protected:
void closeEvent(QCloseEvent * event) override;
void load_modules(QStringList lstNames);
void save_default_modules();
void load_doucment(QString func,QString exeFile);
private:
Ui::taskBus *ui;
QSystemTrayIcon * m_pTrayIcon = nullptr;
......
......@@ -90,7 +90,7 @@
<x>0</x>
<y>0</y>
<width>800</width>
<height>25</height>
<height>22</height>
</rect>
</property>
<widget class="QMenu" name="menu_Application">
......@@ -125,6 +125,7 @@
<string>&amp;Help</string>
</property>
<addaction name="action_About"/>
<addaction name="action_Help"/>
</widget>
<addaction name="menu_Moudles"/>
<addaction name="menu_Application"/>
......@@ -172,9 +173,6 @@
<height>524287</height>
</size>
</property>
<property name="features">
<set>QDockWidget::AllDockWidgetFeatures</set>
</property>
<property name="windowTitle">
<string>Mod&amp;ules</string>
</property>
......@@ -251,9 +249,6 @@
<height>103</height>
</size>
</property>
<property name="features">
<set>QDockWidget::AllDockWidgetFeatures</set>
</property>
<property name="windowTitle">
<string>P&amp;roperties</string>
</property>
......@@ -317,9 +312,6 @@
<property name="floating">
<bool>false</bool>
</property>
<property name="features">
<set>QDockWidget::AllDockWidgetFeatures</set>
</property>
<property name="windowTitle">
<string>Messa&amp;ges</string>
</property>
......@@ -545,6 +537,11 @@
<string>Save Project &amp;As...</string>
</property>
</action>
<action name="action_Help">
<property name="text">
<string>&amp;Help</string>
</property>
</action>
<zorder>dockWidget_message</zorder>
<zorder>dockWidget_watch</zorder>
<zorder>dockWidget_cmd</zorder>
......
......@@ -36,9 +36,9 @@ void taskBusPlatformFrm::on_action_Save_Project_triggered()
if (sub)
{
PDesignerView * dv = qobject_cast<PDesignerView *>(sub->widget());
QString oldfm = dv->fullFileName();
if (dv)
{
QString oldfm = dv->fullFileName();
QSettings settings(inifile(),QSettings::IniFormat);
QString strLastModuleDir = settings.value("history/strLastSaveDir","./").toString();
QString dirstr = strLastModuleDir;
......@@ -89,9 +89,9 @@ void taskBusPlatformFrm::on_action_Save_Project_As_triggered()
if (sub)
{
PDesignerView * dv = qobject_cast<PDesignerView *>(sub->widget());
QString oldfm = dv->fullFileName();
if (dv)
{
QString oldfm = dv->fullFileName();
QSettings settings(inifile(),QSettings::IniFormat);
QString strLastModuleDir = settings.value("history/strLastSaveDir","./").toString();
QString dirstr = strLastModuleDir;
......
......@@ -26,6 +26,13 @@
<source>&amp;Close</source>
<translation>关闭&amp;C)</translation>
</message>
<message>
<location filename="gui/dlgabout.cpp" line="11"/>
<source>Taskbus is a cross-platform multi-process cooperation framework for non-professional developers, with four features of process based, language independent, compiler independent, and architecture Independent.
by Colored Eagle Studio, 2016~%1</source>
<translation>taskBus 是一个为非计算机专业开发者进行敏捷开发准备的跨平台多进程合作框架它具有四个特点基于多进程语言无关编译器无关架构无关
彩鹰工作室2016~%1</translation>
</message>
</context>
<context>
<name>FormStatus</name>
......@@ -36,6 +43,29 @@
<translation>窗体</translation>
</message>
</context>
<context>
<name>HandbookView</name>
<message>
<location filename="gui/handbookview.ui" line="14"/>
<source>Form</source>
<translation>窗体</translation>
</message>
<message>
<location filename="gui/handbookview.ui" line="22"/>
<source>Backward</source>
<translation>回退</translation>
</message>
<message>
<location filename="gui/handbookview.ui" line="29"/>
<source>Forward</source>
<translation>前进</translation>
</message>
<message>
<location filename="gui/handbookview.ui" line="36"/>
<source>URL</source>
<translation>网址</translation>
</message>
</context>
<context>
<name>PDesignerView</name>
<message>
......@@ -408,96 +438,97 @@
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="125"/>
<location filename="gui/taskbusplatformfrm.ui" line="542"/>
<source>&amp;Help</source>
<translation>帮助(&amp;H)</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="136"/>
<location filename="gui/taskbusplatformfrm.ui" line="137"/>
<source>General</source>
<translatorcomment>通用</translatorcomment>
<translation></translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="179"/>
<location filename="gui/taskbusplatformfrm.ui" line="177"/>
<source>Mod&amp;ules</source>
<oldsource>Modules</oldsource>
<translation>模块(&amp;u)</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="258"/>
<location filename="gui/taskbusplatformfrm.ui" line="253"/>
<source>P&amp;roperties</source>
<oldsource>Properties</oldsource>
<translation>属性(&amp;R)</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="324"/>
<location filename="gui/taskbusplatformfrm.ui" line="316"/>
<source>Messa&amp;ges</source>
<oldsource>Messages</oldsource>
<translation>消息(&amp;G)</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="367"/>
<location filename="gui/taskbusplatformfrm.ui" line="359"/>
<source>Status</source>
<translation>状态</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="397"/>
<location filename="gui/taskbusplatformfrm.ui" line="389"/>
<source>comma&amp;nds</source>
<translation>指令(&amp;n)</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="432"/>
<location filename="gui/taskbusplatformfrm.ui" line="424"/>
<source>Show</source>
<translation>显示</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="445"/>
<location filename="gui/taskbusplatformfrm.ui" line="437"/>
<source>&amp;Exit</source>
<translation>退出(&amp;e)</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="448"/>
<location filename="gui/taskbusplatformfrm.ui" line="440"/>
<source>Exit from this application.</source>
<translation>退出当前程序</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="457"/>
<location filename="gui/taskbusplatformfrm.ui" line="449"/>
<source>&amp;Load Module</source>
<translation>载入模块(&amp;L)</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="460"/>
<location filename="gui/taskbusplatformfrm.ui" line="452"/>
<source>Load a module executable file from disk.</source>
<translation>从磁盘的可执行文件模块载入元数据</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="472"/>
<location filename="gui/taskbusplatformfrm.ui" line="464"/>
<source>Start &amp;project</source>
<oldsource>&amp;Start project</oldsource>
<translation>执行(&amp;P)</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="475"/>
<location filename="gui/taskbusplatformfrm.ui" line="467"/>
<source>Start current project.</source>
<translation>执行当前工程</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="484"/>
<location filename="gui/taskbusplatformfrm.ui" line="476"/>
<source>&amp;New Project</source>
<translation>新建工程(&amp;N)</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="487"/>
<location filename="gui/taskbusplatformfrm.ui" line="479"/>
<source>Create New Project</source>
<translation>建立新工程</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="537"/>
<location filename="gui/taskbusplatformfrm.ui" line="529"/>
<source>&amp;Hide</source>
<translation>隐藏&amp;H)</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="545"/>
<location filename="gui/taskbusplatformfrm.ui" line="537"/>
<source>Save Project &amp;As...</source>
<translation>工程另存为&amp;A)...</translation>
</message>
......@@ -523,27 +554,27 @@
<translation type="vanished">显示/隐藏属性窗口</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="496"/>
<location filename="gui/taskbusplatformfrm.ui" line="488"/>
<source>&amp;Open Project</source>
<translation>打开工程(&amp;O)</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="505"/>
<location filename="gui/taskbusplatformfrm.ui" line="497"/>
<source>&amp;Save Project</source>
<translation>保存工程(&amp;S)</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="510"/>
<location filename="gui/taskbusplatformfrm.ui" line="502"/>
<source>&amp;About</source>
<translation>关于(&amp;A)</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="522"/>
<location filename="gui/taskbusplatformfrm.ui" line="514"/>
<source>S&amp;top project</source>
<translation>终止运行(&amp;T)</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="525"/>
<location filename="gui/taskbusplatformfrm.ui" line="517"/>
<source>stop current project</source>
<translation>停止执行当前工程</translation>
</message>
......@@ -556,7 +587,7 @@
<translation type="vanished">隐藏至任务栏图标&amp;h</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.ui" line="540"/>
<location filename="gui/taskbusplatformfrm.ui" line="532"/>
<source>hide window and show tray icon</source>
<translation>把主界面隐藏起来到状态栏图标里</translation>
</message>
......@@ -568,19 +599,19 @@
<context>
<name>taskBusPlatformFrm</name>
<message>
<location filename="gui/taskbusplatformfrm.cpp" line="29"/>
<location filename="gui/taskbusplatformfrm.cpp" line="30"/>
<location filename="gui/taskbusplatformfrm.cpp" line="33"/>
<location filename="gui/taskbusplatformfrm.cpp" line="31"/>
<location filename="gui/taskbusplatformfrm.cpp" line="34"/>
<source>All</source>
<translation>所有</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.cpp" line="190"/>
<location filename="gui/taskbusplatformfrm.cpp" line="191"/>
<source>Init Modules...</source>
<translation>初始化...</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.cpp" line="190"/>
<location filename="gui/taskbusplatformfrm.cpp" line="191"/>
<source>Init modules from default_mods.text</source>
<translation>正在从 default_mods.text 加载模块</translation>
</message>
......@@ -589,35 +620,40 @@
<translation type="vanished">进程总线工作室</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.cpp" line="192"/>
<location filename="gui/taskbusplatformfrm.cpp" line="193"/>
<source>Succeed.</source>
<translation>成功</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.cpp" line="192"/>
<location filename="gui/taskbusplatformfrm.cpp" line="193"/>
<source>Init modules from default_mods.text succeed!</source>
<translation>成功从default_mods.text加载模块</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.cpp" line="296"/>
<location filename="gui/taskbusplatformfrm.cpp" line="297"/>
<source>Still running</source>
<translation>项目仍在运行中</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.cpp" line="296"/>
<location filename="gui/taskbusplatformfrm.cpp" line="297"/>
<source>Project is still running, please stop all projects first.</source>
<translation>项目仍在运行请先关闭后再退出</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.cpp" line="302"/>
<location filename="gui/taskbusplatformfrm.cpp" line="303"/>
<source>Close without saving?</source>
<translation>不保存就关闭吗</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.cpp" line="302"/>
<location filename="gui/taskbusplatformfrm.cpp" line="303"/>
<source>Project has been modified, Close it anyway?</source>
<translation>项目已经编辑了是否不保存就继续关闭</translation>
</message>
<message>
<location filename="gui/taskbusplatformfrm.cpp" line="380"/>
<source>DOC:</source>
<translation>文档:</translation>
</message>
<message>
<source>Save?</source>
<translation type="vanished">保存</translation>
......
......@@ -54,6 +54,7 @@ SOURCES += \
gui/dlgabout.cpp \
gui/main.cpp \
gui/pdesignerview.cpp \
gui/handbookview.cpp \
gui/taskmodule.cpp \
gui/tgraphicstaskitem.cpp \
core/process_prctl.cpp \
......@@ -66,6 +67,7 @@ HEADERS += \
core/tasknode.h \
core/taskcell.h \
core/taskproject.h \
gui/handbookview.h \
gui/taskbusplatformfrm.h \
gui/pdesignerview.h \
gui/taskmodule.h \
......@@ -82,6 +84,7 @@ HEADERS += \
FORMS += \
gui/taskbusplatformfrm.ui \
gui/handbookview.ui \
gui/pdesignerview.ui \
gui/dlgabout.ui
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册