git-svn-id: svn://db.shs.com.ru/libs@353 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2018-01-31 14:21:22 +00:00
parent 92529d243e
commit 719954fc1b
16 changed files with 395 additions and 21 deletions

View File

@@ -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<double> history;
double last_val;
int avg_size;
XMode mode_;
};

View File

@@ -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<QTabBar * > tbars;
QList<QDockWidget * > tdocks;
SessionManager session;

View File

@@ -3,9 +3,6 @@
<file>lang/qad_application_ru.ts</file>
<file>../icons/application-exit.png</file>
<file>../icons/dialog-close.png</file>
<file>../icons/edit-clear.png</file>
<file>../icons/edit-copy.png</file>
<file>../icons/edit-delete.png</file>
<file>../icons/configure.png</file>
<file>../icons/document-edit.png</file>
<file>../icons/document-new.png</file>
@@ -14,6 +11,7 @@
<file>../icons/document-save-as.png</file>
<file>../icons/document-open.png</file>
<file>../icons/document-close.png</file>
<file>../icons/edit-clear.png</file>
<file>../icons/edit-clear-locationbar-rtl.png</file>
<file>../icons/edit-find.png</file>
<file>../icons/list-add.png</file>
@@ -26,5 +24,7 @@
<file>../icons/edockwidget.png</file>
<file>../icons/historyview.png</file>
<file>../icons/clear-history.png</file>
<file>../icons/layer-visible-off.png</file>
<file>../icons/layer-visible-on.png</file>
</qresource>
</RCC>

View File

@@ -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)

11
qcd_utils/pult/cdpult.qrc Normal file
View File

@@ -0,0 +1,11 @@
<RCC>
<qresource prefix="/">
<file>icons/db-export.png</file>
<file>icons/db-import.png</file>
<file>icons/Apps-accessories-calculator-icon.png</file>
<file>icons/dialog-information.png</file>
<file>icons/dialog-cancel.png</file>
<file>icons/dialog-ok-apply.png</file>
<file>icons/timer.png</file>
</qresource>
</RCC>

View File

@@ -1,13 +1,143 @@
#include <QCloseEvent>
#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 <QFileDialog>
#include <QScrollBar>
CDPultWindow::CDPultWindow(QWidget *parent) : EMainWindow(parent), ui(new Ui::CDPultWindow) {
CDUtils::CDCore::instance()->initPult();
qRegisterMetaType<LogIcon>("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();
}

View File

@@ -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<LogIcon, QIcon> 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

View File

@@ -11,8 +11,23 @@
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
<string>CD Pult</string>
</property>
<property name="dockNestingEnabled">
<bool>true</bool>
</property>
<property name="dockOptions">
<set>QMainWindow::AllowNestedDocks|QMainWindow::AllowTabbedDocks|QMainWindow::AnimatedDocks|QMainWindow::VerticalTabs</set>
</property>
<widget class="QWidget" name="central">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3"/>
</widget>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
@@ -30,6 +45,7 @@
<addaction name="actionSave"/>
<addaction name="actionSaveAs"/>
<addaction name="separator"/>
<addaction name="actionCalculate_K"/>
<addaction name="actionSend_K"/>
<addaction name="actionReceive_K"/>
<addaction name="separator"/>
@@ -37,6 +53,96 @@
</widget>
<addaction name="menuMain"/>
</widget>
<widget class="EDockWidget" name="dockCDKView">
<property name="windowIcon">
<iconset resource="../../qad/application/qad_application.qrc">
<normaloff>:/icons/document-edit.png</normaloff>:/icons/document-edit.png</iconset>
</property>
<property name="windowTitle">
<string>K</string>
</property>
<attribute name="dockWidgetArea">
<number>1</number>
</attribute>
<widget class="QWidget" name="dockWidgetContents">
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="CDKView" name="viewK"/>
</item>
</layout>
</widget>
</widget>
<widget class="EDockWidget" name="dockLog">
<property name="windowIcon">
<iconset resource="cdpult.qrc">
<normaloff>:/icons/dialog-information.png</normaloff>:/icons/dialog-information.png</iconset>
</property>
<property name="windowTitle">
<string>Log</string>
</property>
<attribute name="dockWidgetArea">
<number>4</number>
</attribute>
<widget class="QWidget" name="dockWidgetContents_2">
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QListWidget" name="listLog">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="showDropIndicator" stdset="0">
<bool>false</bool>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="verticalScrollMode">
<enum>QAbstractItemView::ScrollPerPixel</enum>
</property>
<property name="horizontalScrollMode">
<enum>QAbstractItemView::ScrollPerPixel</enum>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<action name="actionOpen">
<property name="icon">
<iconset resource="../../qad/application/qad_application.qrc">
@@ -62,14 +168,22 @@
</property>
</action>
<action name="actionSaveAs">
<property name="icon">
<iconset resource="../../qad/application/qad_application.qrc">
<normaloff>:/icons/document-save-as.png</normaloff>:/icons/document-save-as.png</iconset>
</property>
<property name="text">
<string>SaveAs...</string>
<string>Save As...</string>
</property>
<property name="shortcut">
<string>Ctrl+Shift+S</string>
</property>
</action>
<action name="actionSend_K">
<property name="icon">
<iconset resource="cdpult.qrc">
<normaloff>:/icons/db-export.png</normaloff>:/icons/db-export.png</iconset>
</property>
<property name="text">
<string>Send K</string>
</property>
@@ -78,14 +192,22 @@
</property>
</action>
<action name="actionReceive_K">
<property name="icon">
<iconset resource="cdpult.qrc">
<normaloff>:/icons/db-import.png</normaloff>:/icons/db-import.png</iconset>
</property>
<property name="text">
<string>Receive_K</string>
<string>Receive K</string>
</property>
<property name="shortcut">
<string>Ctrl+R</string>
</property>
</action>
<action name="actionParse">
<property name="icon">
<iconset resource="../../qad/widgets/qad_widgets.qrc">
<normaloff>:/icons/tools-wizard.png</normaloff>:/icons/tools-wizard.png</iconset>
</property>
<property name="text">
<string>Parse...</string>
</property>
@@ -93,15 +215,42 @@
<string>Ctrl+Shift+P</string>
</property>
</action>
<action name="actionCalculate_K">
<property name="icon">
<iconset resource="../../qad/graphic/qpicalculator/qpicalculator.qrc">
<normaloff>:/icons/Apps-accessories-calculator-icon.png</normaloff>:/icons/Apps-accessories-calculator-icon.png</iconset>
</property>
<property name="text">
<string>Calculate K</string>
</property>
<property name="shortcut">
<string>Ctrl+Return</string>
</property>
</action>
<addaction name="actionOpen"/>
<addaction name="actionSave"/>
<addaction name="actionSaveAs"/>
<addaction name="actionSend_K"/>
<addaction name="actionReceive_K"/>
<addaction name="actionParse"/>
<addaction name="actionCalculate_K"/>
<addaction name="menuMain"/>
<addaction name="separator"/>
<addaction name="separator"/>
<addaction name="separator"/>
<addaction name="separator"/>
<addaction name="separator"/>
<addaction name="separator"/>
<addaction name="separator"/>
<addaction name="separator"/>
<addaction name="separator"/>
<addaction name="separator"/>
<addaction name="separator"/>
<addaction name="separator"/>
<addaction name="separator"/>
<addaction name="separator"/>
<addaction name="separator"/>
<addaction name="separator"/>
</widget>
<customwidgets>
<customwidget>
@@ -110,9 +259,72 @@
<header>emainwindow.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>EDockWidget</class>
<extends>QDockWidget</extends>
<header>edockwidget.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>CDKView</class>
<extends>QTreeView</extends>
<header>qcd_kview.h</header>
</customwidget>
</customwidgets>
<resources>
<include location="../../qad/application/qad_application.qrc"/>
<include location="../../qad/graphic/qpicalculator/qpicalculator.qrc"/>
<include location="../../qad/widgets/qad_widgets.qrc"/>
<include location="cdpult.qrc"/>
</resources>
<connections/>
<connections>
<connection>
<sender>actionSave</sender>
<signal>triggered()</signal>
<receiver>CDPultWindow</receiver>
<slot>saveFile()</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>399</x>
<y>299</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionSaveAs</sender>
<signal>triggered()</signal>
<receiver>CDPultWindow</receiver>
<slot>saveAsFile()</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>399</x>
<y>299</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionOpen</sender>
<signal>triggered()</signal>
<receiver>CDPultWindow</receiver>
<slot>openFile()</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>399</x>
<y>299</y>
</hint>
</hints>
</connection>
</connections>
</ui>

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View File

@@ -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();
}