diff --git a/cd_utils/cdutils_types.h b/cd_utils/cdutils_types.h index bc19517..7c31a5a 100644 --- a/cd_utils/cdutils_types.h +++ b/cd_utils/cdutils_types.h @@ -73,10 +73,11 @@ public: XType(const CDType & cdt = CDType()); void setXMode(XMode mode) {mode_ = mode;} void setAvg(int avg) {avg_size = avg;} - double currentValue() const {if (history.isEmpty()) return 0; return history.back();} + double currentValue() const {return last_val;} private: PIVector history; + double last_val; int avg_size; XMode mode_; }; diff --git a/qad/application/emainwindow.h b/qad/application/emainwindow.h index 5fdc335..e7bd332 100644 --- a/qad/application/emainwindow.h +++ b/qad/application/emainwindow.h @@ -53,11 +53,11 @@ class EMainWindow: public QMainWindow public: EMainWindow(QWidget * parent = 0); ~EMainWindow(); - + virtual void reset(bool full = false) {} virtual bool load(const QString & path) {return true;} virtual bool save(const QString & path) {return true;} - + void addSeparator() {} protected: @@ -76,15 +76,15 @@ protected: virtual QSize dockTabsIconSize() const {return iconSize();} virtual QString loadFilter() {return "All files(*)";} virtual QString saveFilter() {return "All files(*)";} - + bool checkSave(); void setChanged(bool yes = true) {isChanged = yes; setWindowModified(yes);} void initMenus(); void initSession(); - + QAction action_show_all_tools, action_hide_all_tools, action_show_all_docks, action_hide_all_docks; - QString file_name, title_src; + QString file_name; QList tbars; QList tdocks; SessionManager session; diff --git a/qad/application/qad_application.qrc b/qad/application/qad_application.qrc index 019fa87..a981101 100644 --- a/qad/application/qad_application.qrc +++ b/qad/application/qad_application.qrc @@ -3,9 +3,6 @@ lang/qad_application_ru.ts ../icons/application-exit.png ../icons/dialog-close.png - ../icons/edit-clear.png - ../icons/edit-copy.png - ../icons/edit-delete.png ../icons/configure.png ../icons/document-edit.png ../icons/document-new.png @@ -14,6 +11,7 @@ ../icons/document-save-as.png ../icons/document-open.png ../icons/document-close.png + ../icons/edit-clear.png ../icons/edit-clear-locationbar-rtl.png ../icons/edit-find.png ../icons/list-add.png @@ -26,5 +24,7 @@ ../icons/edockwidget.png ../icons/historyview.png ../icons/clear-history.png + ../icons/layer-visible-off.png + ../icons/layer-visible-on.png diff --git a/qcd_utils/pult/CMakeLists.txt b/qcd_utils/pult/CMakeLists.txt index 81bae3f..b753d46 100644 --- a/qcd_utils/pult/CMakeLists.txt +++ b/qcd_utils/pult/CMakeLists.txt @@ -3,7 +3,7 @@ file(GLOB SRC "*.h" "*.cpp" "*.ui" "*.qrc" "lang/*.ts") find_qt(${QtVersions} Core Gui) qt_wrap(${SRC} HDRS out_HDR CPPS out_CPP QMS out_QM) qt_add_executable(${PROJECT_NAME} WIN32 out_CPP) -qt_target_link_libraries(${PROJECT_NAME} qad_utils qad_widgets qad_graphic qcd_utils) +qt_target_link_libraries(${PROJECT_NAME} qad_utils qad_widgets qad_graphic qcd_utils qad_application) message(STATUS "Building ${PROJECT_NAME}") if(LIB) if(WIN32) diff --git a/qcd_utils/pult/cdpult.qrc b/qcd_utils/pult/cdpult.qrc new file mode 100644 index 0000000..6558e69 --- /dev/null +++ b/qcd_utils/pult/cdpult.qrc @@ -0,0 +1,11 @@ + + + icons/db-export.png + icons/db-import.png + icons/Apps-accessories-calculator-icon.png + icons/dialog-information.png + icons/dialog-cancel.png + icons/dialog-ok-apply.png + icons/timer.png + + diff --git a/qcd_utils/pult/cdpultwindow.cpp b/qcd_utils/pult/cdpultwindow.cpp index 3d18ac7..6574dd5 100644 --- a/qcd_utils/pult/cdpultwindow.cpp +++ b/qcd_utils/pult/cdpultwindow.cpp @@ -1,13 +1,143 @@ +#include #include "cdpultwindow.h" #include "ui_cdpultwindow.h" +#include "cdutils_k.h" +#include "cdutils_core.h" +#include "qcd_core.h" +#include "qcd_kmodel.h" +#include "qcd_modedialog.h" +#include +#include CDPultWindow::CDPultWindow(QWidget *parent) : EMainWindow(parent), ui(new Ui::CDPultWindow) { + CDUtils::CDCore::instance()->initPult(); + qRegisterMetaType("LogIcon"); + log_icons[OKIcon] = QIcon("://icons/dialog-ok-apply.png"); + log_icons[FailIcon] = QIcon("://icons/dialog-cancel.png"); + log_icons[WaitIcon] = QIcon("://icons/timer.png"); ui->setupUi(this); - + centralWidget()->hide(); + ribbon = new Ribbon(this); + session.setFile("session_cdpult.conf"); + session.addEntry(this); + session.addEntry(ribbon->tabWidget()); + session.load(); + reset(); + CONNECTU(&K, sended, this, KSended); + CONNECTU(&K, received, this, KReceived); + CONNECTU(&K, sendFailed, this, KSendFailed); + CONNECTU(&K, receiveFailed, this, KReceiveFailed); + if (windowState() == Qt::WindowMinimized) + setWindowState(Qt::WindowNoState); } CDPultWindow::~CDPultWindow() { delete ui; } + + +void CDPultWindow::loadFile(const QString & fp) { + load(fp); +} + + +void CDPultWindow::KReceived() { + QMetaObject::invokeMethod(this, "addToLog", Qt::QueuedConnection, Q_ARG(LogIcon, OKIcon), Q_ARG(QString, "K received succesfull")); +} + + +void CDPultWindow::KSended() { + QMetaObject::invokeMethod(this, "addToLog", Qt::QueuedConnection, Q_ARG(LogIcon, OKIcon), Q_ARG(QString, "K sended succesfull")); +} + + +void CDPultWindow::KSendFailed() { + QMetaObject::invokeMethod(this, "addToLog", Qt::QueuedConnection, Q_ARG(LogIcon, FailIcon), Q_ARG(QString, "K NOT sended")); +} + + +void CDPultWindow::KReceiveFailed() { + QMetaObject::invokeMethod(this, "addToLog", Qt::QueuedConnection, Q_ARG(LogIcon, FailIcon), Q_ARG(QString, "K NOT received")); + //addToLog(FailIcon, "K NOT received"); +} + + +void CDPultWindow::closeEvent(QCloseEvent *e) { + EMainWindow::closeEvent(e); + if (!e->isAccepted()) + return; + QApplication::closeAllWindows(); + session.save(); + session.setFile(QString()); +} + + +void CDPultWindow::reset(bool full) { + setWindowTitle(QString("CD Pult")); + ui->viewK->setKFile(""); + ui->viewK->clearK(); + file_name.clear(); + ui->viewK->refresh(); + setChanged(false); +} + + +bool CDPultWindow::load(const QString & path) { + ui->viewK->setKFile(path); + ui->viewK->loadK(); + QFileInfo fi(path); + setWindowTitle(QString("CD Pult - %1").arg(fi.baseName())); + return true; +} + + +bool CDPultWindow::save(const QString & path) { + ui->viewK->setKFile(path); + ui->viewK->saveK(); + QFileInfo fi(path); + setWindowTitle(QString("CD Pult - %1").arg(fi.baseName())); + return true; +} + + +void CDPultWindow::addToLog(LogIcon icon, const QString & msg) { + QListWidgetItem * ni = new QListWidgetItem(log_icons[icon], "(" + QTime::currentTime().toString() + ") " + msg); + bool s = ui->listLog->verticalScrollBar()->value() == ui->listLog->verticalScrollBar()->maximum(); + ui->listLog->addItem(ni); + if (s) ui->listLog->scrollToBottom(); +} + + +void CDPultWindow::on_actionSend_K_triggered() { + if (K.inProgress()) {addToLog(WaitIcon, "processing..."); return;} + addToLog(WaitIcon, "Sending K..."); + ui->viewK->sendK(); +} + + +void CDPultWindow::on_actionReceive_K_triggered() { + if (K.inProgress()) {addToLog(WaitIcon, "processing..."); return;} + addToLog(WaitIcon, "Receiving K..."); + ui->viewK->receiveK(); +} + + +void CDPultWindow::on_actionParse_triggered() { + QString path = QFileDialog::getOpenFileName(this, "Select header file", "", "K Description(k_description.h);;Headers(*.h)"); + if (path.isEmpty()) return; + CDUtils::UpdateModeFlags mode = CDUtils::SaveByName; + if (!K.root().isEmpty()) { + QCDModeDialog cdm; + if (cdm.exec() != QDialog::Accepted) return; + mode = cdm.mode(); + } + ui->viewK->buildFromHeader(path, mode); +} + + +void CDPultWindow::on_actionCalculate_K_triggered() { + ui->viewK->calculateK(); + ui->viewK->refresh(); +} diff --git a/qcd_utils/pult/cdpultwindow.h b/qcd_utils/pult/cdpultwindow.h index 37381df..2887d15 100644 --- a/qcd_utils/pult/cdpultwindow.h +++ b/qcd_utils/pult/cdpultwindow.h @@ -2,32 +2,50 @@ #define CDPULTWINDOW_H #include "emainwindow.h" +#include "ribbon.h" +#include "piobject.h" namespace Ui { class CDPultWindow; } -class CDPultWindow : public EMainWindow +class CDPultWindow : public EMainWindow, public PIObject { Q_OBJECT - + Q_ENUMS(LogIcon) + PIOBJECT(CDPultWindow) public: + enum LogIcon {NoIcon, OKIcon, FailIcon, WaitIcon}; + explicit CDPultWindow(QWidget *parent = 0); ~CDPultWindow(); + void loadFile(const QString & fp); private: + + EVENT_HANDLER(void, KSended); + EVENT_HANDLER(void, KReceived); + EVENT_HANDLER(void, KSendFailed); + EVENT_HANDLER(void, KReceiveFailed); + void closeEvent(QCloseEvent * ); - void timerEvent(QTimerEvent *); void reset(bool full = false); bool load(const QString & path); bool save(const QString & path); - void loadingSession(QPIConfig & conf); - void savingSession(QPIConfig & conf); - void addToErrorList(QString msg); QString loadFilter() {return "CD file(*.dat)";} QString saveFilter() {return "CD file(*.dat)";} + Ui::CDPultWindow *ui; + Ribbon * ribbon; + QMap log_icons; + +private slots: + void addToLog(LogIcon icon, const QString & msg); + void on_actionSend_K_triggered(); + void on_actionReceive_K_triggered(); + void on_actionParse_triggered(); + void on_actionCalculate_K_triggered(); }; #endif // CDPULTWINDOW_H diff --git a/qcd_utils/pult/cdpultwindow.ui b/qcd_utils/pult/cdpultwindow.ui index 9fc05c3..6e441ff 100644 --- a/qcd_utils/pult/cdpultwindow.ui +++ b/qcd_utils/pult/cdpultwindow.ui @@ -11,8 +11,23 @@ - Form + CD Pult + + true + + + QMainWindow::AllowNestedDocks|QMainWindow::AllowTabbedDocks|QMainWindow::AnimatedDocks|QMainWindow::VerticalTabs + + + + + 0 + 0 + + + + @@ -30,6 +45,7 @@ + @@ -37,6 +53,96 @@ + + + + :/icons/document-edit.png:/icons/document-edit.png + + + K + + + 1 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + + :/icons/dialog-information.png:/icons/dialog-information.png + + + Log + + + 4 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QAbstractItemView::NoEditTriggers + + + false + + + true + + + QAbstractItemView::SingleSelection + + + QAbstractItemView::SelectRows + + + QAbstractItemView::ScrollPerPixel + + + QAbstractItemView::ScrollPerPixel + + + + + + @@ -62,14 +168,22 @@ + + + :/icons/document-save-as.png:/icons/document-save-as.png + - SaveAs... + Save As... Ctrl+Shift+S + + + :/icons/db-export.png:/icons/db-export.png + Send K @@ -78,14 +192,22 @@ + + + :/icons/db-import.png:/icons/db-import.png + - Receive_K + Receive K Ctrl+R + + + :/icons/tools-wizard.png:/icons/tools-wizard.png + Parse... @@ -93,15 +215,42 @@ Ctrl+Shift+P + + + + :/icons/Apps-accessories-calculator-icon.png:/icons/Apps-accessories-calculator-icon.png + + + Calculate K + + + Ctrl+Return + + + + + + + + + + + + + + + + + @@ -110,9 +259,72 @@
emainwindow.h
1
+ + EDockWidget + QDockWidget +
edockwidget.h
+ 1 +
+ + CDKView + QTreeView +
qcd_kview.h
+
+ + + - + + + actionSave + triggered() + CDPultWindow + saveFile() + + + -1 + -1 + + + 399 + 299 + + + + + actionSaveAs + triggered() + CDPultWindow + saveAsFile() + + + -1 + -1 + + + 399 + 299 + + + + + actionOpen + triggered() + CDPultWindow + openFile() + + + -1 + -1 + + + 399 + 299 + + + + diff --git a/qcd_utils/pult/icons/Apps-accessories-calculator-icon.png b/qcd_utils/pult/icons/Apps-accessories-calculator-icon.png new file mode 100644 index 0000000..37a3035 Binary files /dev/null and b/qcd_utils/pult/icons/Apps-accessories-calculator-icon.png differ diff --git a/qcd_utils/pult/icons/db-export.png b/qcd_utils/pult/icons/db-export.png new file mode 100644 index 0000000..7cfba88 Binary files /dev/null and b/qcd_utils/pult/icons/db-export.png differ diff --git a/qcd_utils/pult/icons/db-import.png b/qcd_utils/pult/icons/db-import.png new file mode 100644 index 0000000..85bc121 Binary files /dev/null and b/qcd_utils/pult/icons/db-import.png differ diff --git a/qcd_utils/pult/icons/dialog-cancel.png b/qcd_utils/pult/icons/dialog-cancel.png new file mode 100644 index 0000000..ace88ab Binary files /dev/null and b/qcd_utils/pult/icons/dialog-cancel.png differ diff --git a/qcd_utils/pult/icons/dialog-information.png b/qcd_utils/pult/icons/dialog-information.png new file mode 100644 index 0000000..dfe70b9 Binary files /dev/null and b/qcd_utils/pult/icons/dialog-information.png differ diff --git a/qcd_utils/pult/icons/dialog-ok-apply.png b/qcd_utils/pult/icons/dialog-ok-apply.png new file mode 100644 index 0000000..3260f60 Binary files /dev/null and b/qcd_utils/pult/icons/dialog-ok-apply.png differ diff --git a/qcd_utils/pult/icons/timer.png b/qcd_utils/pult/icons/timer.png new file mode 100644 index 0000000..c0b8361 Binary files /dev/null and b/qcd_utils/pult/icons/timer.png differ diff --git a/qcd_utils/pult/main.cpp b/qcd_utils/pult/main.cpp index 8ba665d..1ebd6bf 100644 --- a/qcd_utils/pult/main.cpp +++ b/qcd_utils/pult/main.cpp @@ -6,5 +6,7 @@ int main(int argc, char *argv[]) { QApplication a(argc, argv); CDPultWindow w; w.show(); + if (a.arguments().size() > 1) + w.loadFile(a.arguments()[1]); return a.exec(); }