diff --git a/taskbusplatform/CMakeLists.txt b/taskbusplatform/CMakeLists.txt index bbdbc097dac429b67c1e9f99e103e8dd9c0cba41..becbedff94279cc686c59b678215708ab2e4be6a 100644 --- a/taskbusplatform/CMakeLists.txt +++ b/taskbusplatform/CMakeLists.txt @@ -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 diff --git a/taskbusplatform/gui/dlgabout.cpp b/taskbusplatform/gui/dlgabout.cpp index bdbc30134168ef67f354232deba64b6f17949273..13b99333a61f5bbb504f8403ec55364424f2b0a1 100644 --- a/taskbusplatform/gui/dlgabout.cpp +++ b/taskbusplatform/gui/dlgabout.cpp @@ -1,17 +1,18 @@ #include "dlgabout.h" #include "ui_dlgabout.h" #include +#include 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() diff --git a/taskbusplatform/gui/handbookview.cpp b/taskbusplatform/gui/handbookview.cpp new file mode 100644 index 0000000000000000000000000000000000000000..45e09c93a9b0145dd2b17b1586192ea2309ff615 --- /dev/null +++ b/taskbusplatform/gui/handbookview.cpp @@ -0,0 +1,41 @@ +#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 + ); + } + + + +} diff --git a/taskbusplatform/gui/handbookview.h b/taskbusplatform/gui/handbookview.h new file mode 100644 index 0000000000000000000000000000000000000000..b14be11957c438e1084680464ea654dcf5100599 --- /dev/null +++ b/taskbusplatform/gui/handbookview.h @@ -0,0 +1,23 @@ +#ifndef HANDBOOKVIEW_H +#define HANDBOOKVIEW_H + +#include + +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 diff --git a/taskbusplatform/gui/handbookview.ui b/taskbusplatform/gui/handbookview.ui new file mode 100644 index 0000000000000000000000000000000000000000..bdd487be0d8ff84743ca0669c10964cfa59c11d0 --- /dev/null +++ b/taskbusplatform/gui/handbookview.ui @@ -0,0 +1,63 @@ + + + HandbookView + + + + 0 + 0 + 640 + 480 + + + + Form + + + + + + + + Backward + + + + + + + Forward + + + + + + + URL + + + + + + + true + + + + + + + + + QTextEdit::AutoNone + + + true + + + + + + + + diff --git a/taskbusplatform/gui/taskbusplatformfrm.cpp b/taskbusplatform/gui/taskbusplatformfrm.cpp index 8351a16dca03c6b4b58e9a8d7b7204278b3ee917..5407f5a8a234280dd20a79e8a71abd63a3047e14 100644 --- a/taskbusplatform/gui/taskbusplatformfrm.cpp +++ b/taskbusplatform/gui/taskbusplatformfrm.cpp @@ -10,6 +10,7 @@ #include #include #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(sub->widget()); - if (dv) - { - if (ui->listView_modules->model()) - { - QModelIndexList lst; - lst<listView_modules->model()->mimeData(lst); - if (d) - dv->addCell(d); - } + taskModule * mod = qobject_cast(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 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 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()); +} + diff --git a/taskbusplatform/gui/taskbusplatformfrm.h b/taskbusplatform/gui/taskbusplatformfrm.h index cea0b59af1113d9856cc857f99c40d1b11b06736..7f4c06fc02957ba53f00f3f07aed4e304df936b3 100644 --- a/taskbusplatform/gui/taskbusplatformfrm.h +++ b/taskbusplatform/gui/taskbusplatformfrm.h @@ -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; diff --git a/taskbusplatform/gui/taskbusplatformfrm.ui b/taskbusplatform/gui/taskbusplatformfrm.ui index 882c82be370699cdbc54bdd672dde9f4ae3436e5..fc6104f41948ecc0d3157d541a3a5fdde7b81ea5 100644 --- a/taskbusplatform/gui/taskbusplatformfrm.ui +++ b/taskbusplatform/gui/taskbusplatformfrm.ui @@ -90,7 +90,7 @@ 0 0 800 - 25 + 22 @@ -125,6 +125,7 @@ &Help + @@ -172,9 +173,6 @@ 524287 - - QDockWidget::AllDockWidgetFeatures - Mod&ules @@ -251,9 +249,6 @@ 103 - - QDockWidget::AllDockWidgetFeatures - P&roperties @@ -317,9 +312,6 @@ false - - QDockWidget::AllDockWidgetFeatures - Messa&ges @@ -545,6 +537,11 @@ Save Project &As... + + + &Help + + dockWidget_message dockWidget_watch dockWidget_cmd diff --git a/taskbusplatform/gui/taskbusplatformfrm_project.cpp b/taskbusplatform/gui/taskbusplatformfrm_project.cpp index 88aebb7d5af62d46d4f5c0c934c61257f4eb4f18..f09d5ee9d91127d022d9c879b38656d49dc35ffd 100644 --- a/taskbusplatform/gui/taskbusplatformfrm_project.cpp +++ b/taskbusplatform/gui/taskbusplatformfrm_project.cpp @@ -36,9 +36,9 @@ void taskBusPlatformFrm::on_action_Save_Project_triggered() if (sub) { PDesignerView * dv = qobject_cast(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(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; diff --git a/taskbusplatform/taskBusPlatform_zh_CN.qm b/taskbusplatform/taskBusPlatform_zh_CN.qm index 238e5df560b9053d36120b671d61bc1835ddbad3..3763a9018e19aaad5bed764fb772e4eb2f5356e8 100644 Binary files a/taskbusplatform/taskBusPlatform_zh_CN.qm and b/taskbusplatform/taskBusPlatform_zh_CN.qm differ diff --git a/taskbusplatform/taskBusPlatform_zh_CN.ts b/taskbusplatform/taskBusPlatform_zh_CN.ts index 3cd9df5933b0673b90830947dfb0815c97afbd54..c1e598265fb3de362bcf16e5e1e2391cca63334b 100644 --- a/taskbusplatform/taskBusPlatform_zh_CN.ts +++ b/taskbusplatform/taskBusPlatform_zh_CN.ts @@ -26,6 +26,13 @@ &Close 关闭(&C) + + + 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 + taskBus 是一个为非计算机专业开发者进行敏捷开发准备的跨平台多进程合作框架。它具有四个特点:基于多进程、语言无关、编译器无关、架构无关。 +彩鹰工作室,2016~%1 + FormStatus @@ -36,6 +43,29 @@ 窗体 + + HandbookView + + + Form + 窗体 + + + + Backward + 回退 + + + + Forward + 前进 + + + + URL + 网址 + + PDesignerView @@ -408,96 +438,97 @@ + &Help 帮助(&H) - + General 通用 - + Mod&ules Modules 模块(&u) - + P&roperties Properties 属性(&R) - + Messa&ges Messages 消息(&G) - + Status 状态 - + comma&nds 指令(&n) - + Show 显示 - + &Exit 退出(&e) - + Exit from this application. 退出当前程序。 - + &Load Module 载入模块(&L) - + Load a module executable file from disk. 从磁盘的可执行文件模块载入元数据。 - + Start &project &Start project 执行(&P) - + Start current project. 执行当前工程。 - + &New Project 新建工程(&N) - + Create New Project 建立新工程 - + &Hide 隐藏(&H) - + Save Project &As... 工程另存为(&A)... @@ -523,27 +554,27 @@ 显示/隐藏属性窗口 - + &Open Project 打开工程(&O) - + &Save Project 保存工程(&S) - + &About 关于(&A) - + S&top project 终止运行(&T) - + stop current project 停止执行当前工程 @@ -556,7 +587,7 @@ 隐藏至任务栏图标(&h) - + hide window and show tray icon 把主界面隐藏起来,到状态栏图标里 @@ -568,19 +599,19 @@ taskBusPlatformFrm - - + + All 所有 - + Init Modules... 初始化... - + Init modules from default_mods.text 正在从 default_mods.text 加载模块 @@ -589,35 +620,40 @@ 进程总线工作室 - + Succeed. 成功。 - + Init modules from default_mods.text succeed! 成功从default_mods.text加载模块! - + Still running 项目仍在运行中 - + Project is still running, please stop all projects first. 项目仍在运行,请先关闭后再退出。 - + Close without saving? 不保存就关闭吗? - + Project has been modified, Close it anyway? 项目已经编辑了,是否不保存就继续关闭? + + + DOC: + 文档: + Save? 保存? diff --git a/taskbusplatform/taskbusplatform.pro b/taskbusplatform/taskbusplatform.pro index 944d5e8b73a3dc50494bc716da6be450e669e3ca..195eed79de79747ccbf5c5f92190533edf48d282 100644 --- a/taskbusplatform/taskbusplatform.pro +++ b/taskbusplatform/taskbusplatform.pro @@ -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