diff --git a/qcd_utils/CMakeLists.txt b/qcd_utils/CMakeLists.txt index 9ce1c4d..821e3d6 100644 --- a/qcd_utils/CMakeLists.txt +++ b/qcd_utils/CMakeLists.txt @@ -20,7 +20,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_library(${PROJECT_NAME} SHARED out_CPP) -qt_target_link_libraries(${PROJECT_NAME} pip qad_utils qad_widgets cd_utils piqt) +qt_target_link_libraries(${PROJECT_NAME} pip qad_utils qad_widgets qad_graphic cd_utils piqt) message(STATUS "Building ${PROJECT_NAME}") if(LIBPROJECT) diff --git a/qcd_utils/pult/cdgraphic.cpp b/qcd_utils/pult/cdgraphic.cpp deleted file mode 100644 index 1e5d099..0000000 --- a/qcd_utils/pult/cdgraphic.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "cdgraphic.h" -#include "cdutils_core.h" -#include "cdutils_x.h" -#include "graphic.h" -#include "piqt.h" - -using namespace CDUtils; - - -CDGraphicWidget::CDGraphicWidget(QWidget * p): QWidget(p), Ui::CDGraphicWidget() { - setupUi(this); - graphic->setGraphicsCount(0); -} diff --git a/qcd_utils/pult/cdgraphic.h b/qcd_utils/pult/cdgraphic.h deleted file mode 100644 index ae02a18..0000000 --- a/qcd_utils/pult/cdgraphic.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef CDGRAPHIC_H -#define CDGRAPHIC_H - -#include -#include "ui_cdgraphic.h" -#include - -namespace CDUtils { - class CDType; - class CDSection; -} - -class Graphic; - - -class CDGraphicWidget: public QWidget, public Ui::CDGraphicWidget { - Q_OBJECT -public: - CDGraphicWidget(QWidget * p = 0); - - -private: - -private slots: - -signals: - -}; - - -#endif // CDGRAPHIC_H diff --git a/qcd_utils/pult/cdgraphics.cpp b/qcd_utils/pult/cdgraphics.cpp index 6dccc54..4e6ae98 100644 --- a/qcd_utils/pult/cdgraphics.cpp +++ b/qcd_utils/pult/cdgraphics.cpp @@ -1,4 +1,5 @@ #include "cdgraphics.h" +#include "ui_cdgraphic.h" #include "cdutils_core.h" #include "cdutils_x.h" #include "qcd_core.h" @@ -46,8 +47,8 @@ GDockWidget::GDockWidget(QString title, QMainWindow * p): QDockWidget(title, p) menu_x = new QMenu(this); menu_x->setTitle(trUtf8("Remove X")); graphic = new CDGraphicWidget(); - graphic->graphic->viewport()->setAcceptDrops(true); - graphic->graphic->viewport()->installEventFilter(this); + graphic->graphic()->viewport()->setAcceptDrops(true); + graphic->graphic()->viewport()->installEventFilter(this); setWidget(graphic); } @@ -57,9 +58,9 @@ void GDockWidget::addX(const CDType & t) { PIDeque xp = t.path(); if (x_list.contains(xp)) return; x_list << xp; - int gind = graphic->graphic->graphicsCount(); - graphic->graphic->setGraphicsCount(gind + 1); - graphic->graphic->setGraphicName(PI2QString(t.pathString().join(".")), gind); + int gind = graphic->graphic()->graphicsCount(); + graphic->graphic()->setGraphicsCount(gind + 1); + graphic->graphic()->setGraphicName(PI2QString(t.pathString().join(".")), gind); } @@ -68,9 +69,9 @@ void GDockWidget::drawX(const PIMap > & data) { PIString sp = CDCore::pathToString(x_list[i]); const PIVector & ch(data[sp]); for (int j = 0; j < ch.size_s(); ++j) - graphic->graphic->addPoint(ch[j], i, false); + graphic->graphic()->addPoint(ch[j], i, false); } - graphic->graphic->updateGraphics(); + graphic->graphic()->updateGraphics(); } @@ -78,9 +79,9 @@ QByteArray GDockWidget::save() const { ChunkStream cs; cs.add(1, windowTitle()) .add(2, getList(x_list)) - .add(3, graphic->graphic->save()) - .add(4, graphic->evalHistory->expression()) - .add(5, graphic->evalVisible->expression()); + .add(3, graphic->graphic()->save()) + .add(4, graphic->ui->evalHistory->expression()) + .add(5, graphic->ui->evalVisible->expression()); return cs.data(); } @@ -92,9 +93,9 @@ void GDockWidget::load(QByteArray ba) { switch (cs.read()) { case 1: setWindowTitle(cs.getData()); break; case 2: x_list = setList(cs.getData()); break; - case 3: graphic->graphic->load(cs.getData()); break; - case 4: graphic->evalHistory->setExpression(cs.getData()); break; - case 5: graphic->evalVisible->setExpression(cs.getData()); break; + case 3: graphic->graphic()->load(cs.getData()); break; + case 4: graphic->ui->evalHistory->setExpression(cs.getData()); break; + case 5: graphic->ui->evalVisible->setExpression(cs.getData()); break; default: break; } } @@ -132,13 +133,13 @@ bool GDockWidget::eventFilter(QObject * o, QEvent * e) { void GDockWidget::contextMenuEvent(QContextMenuEvent * e) { - if (graphic->graphic->underMouse()) return; + if (graphic->graphic()->underMouse()) return; qDeleteAll(menu_x->actions()); menu_x->clear(); - for (int i = 0; i < graphic->graphic->graphicsCount(); ++i) { + for (int i = 0; i < graphic->graphic()->graphicsCount(); ++i) { QPixmap icon(da->iconSize()); - icon.fill(graphic->graphic->graphic(i).pen.color()); - QAction * a = new QAction(QIcon(icon), graphic->graphic->graphic(i).name, this); + icon.fill(graphic->graphic()->graphic(i).pen.color()); + QAction * a = new QAction(QIcon(icon), graphic->graphic()->graphic(i).name, this); a->setData(i); connect(a, SIGNAL(triggered(bool)), this, SLOT(removeX())); menu_x->addAction(a); @@ -176,7 +177,7 @@ void GDockWidget::removeX() { int ind = a->data().toInt(); if (ind < 0 || ind >= x_list.size_s()) return; x_list.remove(ind); - graphic->graphic->removeGraphic(ind); + graphic->graphic()->removeGraphic(ind); } @@ -302,7 +303,7 @@ void CDGraphics::on_buttonAdd_clicked() { void CDGraphics::on_buttonClear_clicked() { foreach (GDockWidget * d, docks) - d->graphic->graphic->clear(); + d->graphic->graphic()->clear(); } diff --git a/qcd_utils/pult/cdgraphics.h b/qcd_utils/pult/cdgraphics.h index 0d4ff6a..76e6ac2 100644 --- a/qcd_utils/pult/cdgraphics.h +++ b/qcd_utils/pult/cdgraphics.h @@ -5,7 +5,7 @@ #include #include #include "ui_cdgraphics.h" -#include "cdgraphic.h" +#include "qcd_graphic.h" #include namespace CDUtils { diff --git a/qcd_utils/pult/cdpultwindow.cpp b/qcd_utils/pult/cdpultwindow.cpp index 3c93be2..81b16c2 100644 --- a/qcd_utils/pult/cdpultwindow.cpp +++ b/qcd_utils/pult/cdpultwindow.cpp @@ -14,6 +14,7 @@ #include "qcodeedit.h" #include #include +#include using namespace CDUtils; @@ -22,6 +23,7 @@ CDPultWindow::CDPultWindow(QWidget *parent) : EMainWindow(parent), Ui::CDPultWin setupUi(this); centralWidget()->hide(); CDCore::instance()->initPult(); + def_config = codeConfig->text(); new ConfigHighlighter(codeConfig->document()); widgetK->setType(CDUtils::CDType::cdK); widgetX->setType(CDUtils::CDType::cdX); @@ -82,6 +84,7 @@ void CDPultWindow::apply(bool sessions) { dockCDKView->setVisible(checkHasK->isChecked()); dockCDXView->setVisible(checkHasX->isChecked()); dockCDCView->setVisible(checkHasC->isChecked()); + QMetaObject::invokeMethod(this, "changedDock", Qt::QueuedConnection); } @@ -103,6 +106,7 @@ void CDPultWindow::reset(bool full) { bool CDPultWindow::load(const QString & path) { + qApp->setOverrideCursor(Qt::WaitCursor); QPIConfig conf(path, QIODevice::ReadOnly); QAD::File f = editFileK->value().value(); checkSyncFiles->setChecked(false); @@ -111,16 +115,21 @@ bool CDPultWindow::load(const QString & path) { editFileC->setValue(QVariant::fromValue(QAD::File(conf.getValue("file_c").value(), f.filter))); checkSyncFiles->setChecked(conf.getValue("sync_files")); lineSessionName->setText(conf.getValue("session_name")); + last_icon = conf.getValue("icon_path", "").value(); + setAppIcon(conf.getValue("icon", QByteArray())); checkHasK->setChecked(conf.getValue("has_k")); checkHasX->setChecked(conf.getValue("has_x")); checkHasC->setChecked(conf.getValue("has_c")); checkDefaultConfig->setChecked(conf.getValue("default_config")); codeConfig->setText(QByteArray2QString(conf.getValue("config", QByteArray()))); + if (codeConfig->text().isEmpty()) + codeConfig->setText(def_config); session_gr = conf.getValue("session_gr", QByteArray()); session_mw = conf.getValue("session_mw", QByteArray()); setChanged(false); file_name = path; apply(true); + qApp->restoreOverrideCursor(); return true; } @@ -135,6 +144,8 @@ bool CDPultWindow::save(const QString & path) { conf.setValue("file_c", editFileC->value().value().file); conf.setValue("sync_files", checkSyncFiles->isChecked()); conf.setValue("session_name", lineSessionName->text()); + conf.setValue("icon_path", last_icon); + conf.setValue("icon", appIcon()); conf.setValue("has_k", checkHasK->isChecked()); conf.setValue("has_x", checkHasX->isChecked()); conf.setValue("has_c", checkHasC->isChecked()); @@ -161,6 +172,30 @@ void CDPultWindow::savingSession(QPIConfig & conf) { } +QByteArray CDPultWindow::appIcon() const { + QByteArray ret; + if (icon.isNull()) return ret; + QBuffer buff(&ret); + buff.open(QIODevice::WriteOnly); + icon.save(&buff, "png"); + //qDebug() << "s" << ret.size(); + return ret; +} + + +void CDPultWindow::setAppIcon(QByteArray ba) { + if (ba.isEmpty()) { + icon = QImage(); + setWindowIcon(QIcon()); + return; + } + //qDebug() << "l" << ba.size(); + icon = QImage::fromData(ba); + setWindowIcon(QIcon(QPixmap::fromImage(icon))); + //qDebug() << QApplication::windowIcon().availableSizes(); +} + + void CDPultWindow::addToLog(CDViewWidget::LogIcon icon, const QString & msg) { QListWidgetItem * ni = new QListWidgetItem(log_icons[icon], "(" + QTime::currentTime().toString() + ") " + msg); bool s = listLog->verticalScrollBar()->value() == listLog->verticalScrollBar()->maximum(); @@ -210,3 +245,14 @@ void CDPultWindow::on_buttonSessionApply_clicked() { void CDPultWindow::on_lineSessionName_textChanged(const QString & t) { setWindowTitle(QString("CD Pult - %1").arg(t)); } + + +void CDPultWindow::on_buttonIcon_clicked() { + QList ifl = QImageReader::supportedImageFormats(); + QStringList sfl; foreach (QByteArray s, ifl) sfl << ("*." + QString(s).toLower()); + QString f = QFileDialog::getOpenFileName(this, tr("Select icon"), last_icon, tr("Images") + " (" + sfl.join(" ") + ")"); + if (f.isEmpty()) return; + last_icon = f; + icon = QImage(last_icon); + setWindowIcon(QIcon(QPixmap::fromImage(icon))); +} diff --git a/qcd_utils/pult/cdpultwindow.h b/qcd_utils/pult/cdpultwindow.h index f63ad39..bf95b08 100644 --- a/qcd_utils/pult/cdpultwindow.h +++ b/qcd_utils/pult/cdpultwindow.h @@ -30,9 +30,14 @@ private: void loadingSession(QPIConfig & conf); void savingSession(QPIConfig & conf); + QByteArray appIcon() const; + void setAppIcon(QByteArray ba); + Ribbon * ribbon; QMap log_icons; QByteArray session_gr, session_mw; + QString def_config, last_icon; + QImage icon; private slots: void addToLog(CDViewWidget::LogIcon icon, const QString & msg); @@ -40,6 +45,7 @@ private slots: void on_buttonSessionApply_clicked(); void on_lineSessionName_textChanged(const QString & t); + void on_buttonIcon_clicked(); }; #endif // CDPULTWINDOW_H diff --git a/qcd_utils/pult/cdpultwindow.ui b/qcd_utils/pult/cdpultwindow.ui index 5e9f885..8d3c0a7 100644 --- a/qcd_utils/pult/cdpultwindow.ui +++ b/qcd_utils/pult/cdpultwindow.ui @@ -46,12 +46,6 @@ - - - - - - @@ -150,43 +144,6 @@ - - - - - - Load ... - - - - :/icons/document-open-recent.png:/icons/document-open-recent.png - - - - - - - Save ... - - - - :/icons/document-save.png:/icons/document-save.png - - - - - - - Save as ... - - - - :/icons/document-save-as.png:/icons/document-save-as.png - - - - - @@ -214,7 +171,22 @@ - + + + + + + + + Select icon + + + + :/icons/view-preview.png:/icons/view-preview.png + + + + @@ -387,61 +359,9 @@ device.cd = eth://udp:${ip.pult}:27002:${ip.app}:27001 #s Ctrl+Shift+S - - - - :/icons/db-export.png:/icons/db-export.png - - - Send K - - - Ctrl+D - - - - - - :/icons/db-import.png:/icons/db-import.png - - - Receive K - - - Ctrl+R - - - - - - :/icons/tools-wizard.png:/icons/tools-wizard.png - - - Parse... - - - Ctrl+Shift+P - - - - - - :/icons/Apps-accessories-calculator-icon.png:/icons/Apps-accessories-calculator-icon.png - - - Calculate K - - - Ctrl+Return - - - - - - @@ -464,6 +384,8 @@ device.cd = eth://udp:${ip.pult}:27002:${ip.app}:27001 #s + + @@ -509,7 +431,6 @@ device.cd = eth://udp:${ip.pult}:27002:${ip.app}:27001 #s - @@ -594,54 +515,6 @@ device.cd = eth://udp:${ip.pult}:27002:${ip.app}:27001 #s - - buttonSessionLoad - clicked() - CDPultWindow - openFile() - - - 589 - 68 - - - 803 - 62 - - - - - buttonSessionSave - clicked() - CDPultWindow - saveFile() - - - 671 - 70 - - - 806 - 48 - - - - - buttonSessionSaveAs - clicked() - CDPultWindow - saveAsFile() - - - 754 - 66 - - - 805 - 106 - - - checkDefaultConfig toggled(bool) diff --git a/qcd_utils/pult/cdviewwidget.ui b/qcd_utils/pult/cdviewwidget.ui index 00e18e6..5b0ff0b 100644 --- a/qcd_utils/pult/cdviewwidget.ui +++ b/qcd_utils/pult/cdviewwidget.ui @@ -29,30 +29,19 @@ - - - + + + - Save + Send - - :/icons/document-save.png:/icons/document-save.png + + :/icons/flame.png:/icons/flame.png - - - - Load - - - - :/icons/document-open.png:/icons/document-open.png - - - - + Receive @@ -63,7 +52,61 @@ - + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 20 + 20 + + + + + + + + Load + + + + :/icons/document-open.png:/icons/document-open.png + + + + + + + Save + + + + :/icons/document-save.png:/icons/document-save.png + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 20 + 20 + + + + + Update description ... @@ -74,16 +117,21 @@ - - - - Send + + + + Qt::Horizontal - - - :/icons/flame.png:/icons/flame.png + + QSizePolicy::Expanding - + + + 1 + 20 + + + diff --git a/qcd_utils/qcd_graphic.cpp b/qcd_utils/qcd_graphic.cpp new file mode 100644 index 0000000..5583495 --- /dev/null +++ b/qcd_utils/qcd_graphic.cpp @@ -0,0 +1,30 @@ +#include "qcd_graphic.h" +#include "ui_qcd_graphic.h" +#include "cdutils_core.h" +#include "cdutils_x.h" +#include "graphic.h" +#include "piqt.h" + +using namespace CDUtils; + + +CDGraphicWidget::CDGraphicWidget(QWidget * p): QWidget(p) { + ui = new Ui::CDGraphicWidget(); + ui->setupUi(this); + ui->graphic->setGraphicsCount(0); +} + + +Graphic * CDGraphicWidget::graphic() const { + return ui->graphic; +} + + +void CDGraphicWidget::setConfigVisible(bool on) { + ui->widgetConfig->setVisible(on); +} + + +bool CDGraphicWidget::isConfigVisible() const { + return ui->widgetConfig->isVisible(); +} diff --git a/qcd_utils/qcd_graphic.h b/qcd_utils/qcd_graphic.h new file mode 100644 index 0000000..a554a07 --- /dev/null +++ b/qcd_utils/qcd_graphic.h @@ -0,0 +1,40 @@ +#ifndef QCD_GRAPHIC_H +#define QCD_GRAPHIC_H + +#include +#include + +namespace CDUtils { + class CDType; + class CDSection; +} + +namespace Ui { + class CDGraphicWidget; +} + +class Graphic; + + +class CDGraphicWidget: public QWidget { + Q_OBJECT + friend class CDGraphics; + friend class GDockWidget; +public: + CDGraphicWidget(QWidget * p = 0); + + Graphic * graphic() const; + void setConfigVisible(bool on); + bool isConfigVisible() const; + +private: + Ui::CDGraphicWidget * ui; + +private slots: + +signals: + +}; + + +#endif // QCD_GRAPHIC_H diff --git a/qcd_utils/pult/cdgraphic.ui b/qcd_utils/qcd_graphic.ui similarity index 100% rename from qcd_utils/pult/cdgraphic.ui rename to qcd_utils/qcd_graphic.ui