diff --git a/src/atelierui.rc b/src/atelierui.rc --- a/src/atelierui.rc +++ b/src/atelierui.rc @@ -9,21 +9,15 @@ - + - - - - - - - + diff --git a/src/icons/application-exit.svg b/src/icons/application-exit.svg new file mode 100644 --- /dev/null +++ b/src/icons/application-exit.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/camera-web.svg b/src/icons/camera-web.svg new file mode 100644 --- /dev/null +++ b/src/icons/camera-web.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/icons/dark_3d.svg b/src/icons/dark_3d.svg new file mode 100644 --- /dev/null +++ b/src/icons/dark_3d.svg @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/src/icons/dark_add.svg b/src/icons/dark_add.svg new file mode 100644 --- /dev/null +++ b/src/icons/dark_add.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/icons/dark_configure.svg b/src/icons/dark_configure.svg new file mode 100644 --- /dev/null +++ b/src/icons/dark_configure.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/icons/dark_connect.svg b/src/icons/dark_connect.svg new file mode 100644 --- /dev/null +++ b/src/icons/dark_connect.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/icons/dark_disconnect.svg b/src/icons/dark_disconnect.svg new file mode 100644 --- /dev/null +++ b/src/icons/dark_disconnect.svg @@ -0,0 +1,22 @@ + + + + + + + diff --git a/src/icons/dark_home.svg b/src/icons/dark_home.svg new file mode 100644 --- /dev/null +++ b/src/icons/dark_home.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/icons/dark_open.svg b/src/icons/dark_open.svg new file mode 100644 --- /dev/null +++ b/src/icons/dark_open.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/icons/dark_pause.svg b/src/icons/dark_pause.svg new file mode 100644 --- /dev/null +++ b/src/icons/dark_pause.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/icons/dark_start.svg b/src/icons/dark_start.svg new file mode 100644 --- /dev/null +++ b/src/icons/dark_start.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/icons/dark_stop.svg b/src/icons/dark_stop.svg new file mode 100644 --- /dev/null +++ b/src/icons/dark_stop.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/icons/kwrite.svg b/src/icons/kwrite.svg new file mode 100644 --- /dev/null +++ b/src/icons/kwrite.svg @@ -0,0 +1,1421 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/icons/light_3d.svg b/src/icons/light_3d.svg new file mode 100644 --- /dev/null +++ b/src/icons/light_3d.svg @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/src/icons/light_add.svg b/src/icons/light_add.svg new file mode 100644 --- /dev/null +++ b/src/icons/light_add.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/icons/light_configure.svg b/src/icons/light_configure.svg new file mode 100644 --- /dev/null +++ b/src/icons/light_configure.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/icons/light_connect.svg b/src/icons/light_connect.svg new file mode 100644 --- /dev/null +++ b/src/icons/light_connect.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/icons/light_disconnect.svg b/src/icons/light_disconnect.svg new file mode 100644 --- /dev/null +++ b/src/icons/light_disconnect.svg @@ -0,0 +1,22 @@ + + + + + + + diff --git a/src/icons/light_home.svg b/src/icons/light_home.svg new file mode 100644 --- /dev/null +++ b/src/icons/light_home.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/icons/light_open.svg b/src/icons/light_open.svg new file mode 100644 --- /dev/null +++ b/src/icons/light_open.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/icons/light_pause.svg b/src/icons/light_pause.svg new file mode 100644 --- /dev/null +++ b/src/icons/light_pause.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/icons/light_start.svg b/src/icons/light_start.svg new file mode 100644 --- /dev/null +++ b/src/icons/light_start.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/icons/light_stop.svg b/src/icons/light_stop.svg new file mode 100644 --- /dev/null +++ b/src/icons/light_stop.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/mainwindow.h b/src/mainwindow.h --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -48,10 +48,10 @@ private: QList m_openFiles; + QString m_theme; KTextEditor::View *m_currEditorView; LateralArea m_lateral; QTabWidget *m_instances; - void setupLateralArea(); void newAtCoreInstance(); void initWidgets(); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -38,6 +38,8 @@ m_currEditorView(nullptr), m_instances(new QTabWidget(this)) { + m_theme = palette().text().color().value() >= QColor(Qt::lightGray).value() ? QString("dark") : QString("light"); + initWidgets(); setupActions(); connect(m_instances, &QTabWidget::tabCloseRequested, [this] (int index){ @@ -132,40 +134,47 @@ guiFactory()->addClient(view); m_currEditorView = view; }); - - setupButton("3d", i18n("&3D"), QIcon::fromTheme("draw-cuboid", QIcon(":/icon/atelier")), new Viewer3D(this)); - setupButton("gcode", i18n("&GCode"), QIcon::fromTheme("accessories-text-editor", QIcon(":/icon/atelier")), gcodeEditor); - setupButton("video", i18n("&Video"), QIcon::fromTheme("camera-web", QIcon(":/icon/atelier")), new VideoMonitorWidget(this)); + setupButton("3d", i18n("&3D"), QIcon::fromTheme("draw-cuboid", QIcon(QString(":/%1/3d").arg(m_theme))), new Viewer3D(this)); + setupButton("gcode", i18n("&GCode"), QIcon::fromTheme("accessories-text-editor", QIcon(":/icon/edit")), gcodeEditor); + setupButton("video", i18n("&Video"), QIcon::fromTheme("camera-web", QIcon(":/icon/video")), new VideoMonitorWidget(this)); buttonLayout->addStretch(); m_lateral.m_toolBar->setLayout(buttonLayout); } void MainWindow::setupActions() { // Actions for the Toolbar QAction *action; - action = actionCollection()->addAction(QStringLiteral("open_gcode")); - action->setIcon(QIcon::fromTheme("document-open", style()->standardIcon(QStyle::SP_DirOpenIcon))); - action->setText(i18n("&Open GCode")); + action = actionCollection()->addAction(QStringLiteral("open")); + action->setIcon(QIcon::fromTheme("document-open", QIcon(QString(":/%1/open").arg(m_theme)))); + + action->setText(i18n("&Open")); actionCollection()->setDefaultShortcut(action, QKeySequence::Open); connect(action, &QAction::triggered, this, &MainWindow::openFile); action = actionCollection()->addAction(QStringLiteral("new_instance")); - action->setIcon(QIcon::fromTheme("list-add", QIcon())); + action->setIcon(QIcon::fromTheme("list-add", QIcon(QString(":/%1/addTab").arg(m_theme)))); + action->setText(i18n("&New Connection")); actionCollection()->setDefaultShortcut(action, QKeySequence::AddTab); connect(action, &QAction::triggered, this, &MainWindow::newAtCoreInstance); action = actionCollection()->addAction(QStringLiteral("profiles")); - action->setIcon(QIcon::fromTheme("document-properties", QIcon())); + action->setIcon(QIcon::fromTheme("document-properties", QIcon(QString(":/%1/configure").arg(m_theme)))); + action->setText(i18n("&Profiles")); connect(action, &QAction::triggered, [this] { std::unique_ptr pd(new ProfilesDialog); pd->exec(); emit(profilesChanged()); }); - action = KStandardAction::quit(this, SLOT(close()), actionCollection()); + action = actionCollection()->addAction(QStringLiteral("quit")); + action->setIcon(QIcon::fromTheme("application-exit", QIcon(":/icon/exit"))); + + action->setText(i18n("&Quit")); + actionCollection()->setDefaultShortcut(action, QKeySequence::Quit); + connect(action, &QAction::triggered, this, &MainWindow::close); setupGUI(Default, ":/atelierui"); } diff --git a/src/resources.qrc b/src/resources.qrc --- a/src/resources.qrc +++ b/src/resources.qrc @@ -1,9 +1,36 @@ ../deploy/atelier.png + icons/application-exit.svg + icons/camera-web.svg + icons/kwrite.svg + + icons/light_configure.svg + icons/light_open.svg + icons/light_3d.svg + icons/light_add.svg + icons/light_home.svg + icons/light_connect.svg + icons/light_disconnect.svg + icons/light_start.svg + icons/light_stop.svg + icons/light_pause.svg + + + icons/dark_configure.svg + icons/dark_open.svg + icons/dark_3d.svg + icons/dark_add.svg + icons/dark_home.svg + icons/dark_connect.svg + icons/dark_disconnect.svg + icons/dark_start.svg + icons/dark_stop.svg + icons/dark_pause.svg + + atelierui.rc - diff --git a/src/widgets/atcoreinstancewidget.h b/src/widgets/atcoreinstancewidget.h --- a/src/widgets/atcoreinstancewidget.h +++ b/src/widgets/atcoreinstancewidget.h @@ -68,6 +68,7 @@ QList m_files; QAction *m_printAction; QSettings m_settings; + QString m_theme; void initConnectsToAtCore(); void printFile(const QUrl& fileName); void pausePrint(); diff --git a/src/widgets/atcoreinstancewidget.cpp b/src/widgets/atcoreinstancewidget.cpp --- a/src/widgets/atcoreinstancewidget.cpp +++ b/src/widgets/atcoreinstancewidget.cpp @@ -30,17 +30,18 @@ m_toolBar(nullptr), m_printAction(nullptr) { + m_theme = palette().text().color().value() >= QColor(Qt::lightGray).value() ? QString("dark") : QString("light") ; ui = new Ui::AtCoreInstanceWidget; ui->setupUi(this); - ui->printProgressWidget->setVisible(false); buildMainToolbar(); buildToolbar(); buildConnectionToolbar(); enableControls(false); updateProfileData(); initConnectsToAtCore(); m_mainToolBar->setHidden(true); + } AtCoreInstanceWidget::~AtCoreInstanceWidget() @@ -54,7 +55,8 @@ m_toolBar = new QToolBar(); auto lb = new QAction; - lb->setIcon(QIcon::fromTheme("go-home", style()->standardIcon(QStyle::SP_DirHomeIcon))); + lb->setIcon(QIcon::fromTheme("go-home", QIcon(QString(":/%1/home").arg(m_theme)))); + lb->setDisabled(true); m_toolBar->addAction(lb); @@ -114,11 +116,12 @@ }); m_mainToolBar->addAction(m_printAction); - auto stopAction = new QAction(QIcon::fromTheme("media-playback-stop", style()->standardIcon(QStyle::SP_MediaStop)), i18n("Stop")); + auto stopAction = new QAction(QIcon::fromTheme("media-playback-stop", QIcon(QString(":/%1/stop").arg(m_theme))), i18n("Stop")); + connect(stopAction, &QAction::triggered, this, &AtCoreInstanceWidget::stopPrint); connect(stopAction, &QAction::triggered, [this](){ m_printAction->setText(i18n("Print")); - m_printAction->setIcon(QIcon::fromTheme("media-playback-start", style()->standardIcon(QStyle::SP_MediaPlay))); + m_printAction->setIcon(QIcon::fromTheme("media-playback-start", QIcon(QString(":/%1/start").arg(m_theme)))); }); m_mainToolBar->addAction(stopAction); @@ -154,7 +157,7 @@ m_connectWidget->setLayout(connectLayout); m_connectToolBar->addWidget(m_connectWidget); - m_connectButton = new QPushButton(QIcon::fromTheme("network-connect", style()->standardIcon(QStyle::SP_DialogCloseButton)), i18n("Connect")); + m_connectButton = new QPushButton(QIcon::fromTheme("network-connect", QIcon(QString(":/%1/connect").arg(m_theme))), i18n("Connect")); m_connectButton->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed); connect(this, &AtCoreInstanceWidget::disableDisconnect, m_connectButton, &QPushButton::setDisabled); connect(m_connectButton, &QPushButton::clicked, this, &AtCoreInstanceWidget::connectButtonClicked); @@ -311,7 +314,7 @@ case AtCore::CONNECTING: { m_core.setSerialTimerInterval(0); m_connectButton->setText(i18n("Disconnect")); - m_connectButton->setIcon(QIcon::fromTheme("network-disconnect")); + m_connectButton->setIcon(QIcon::fromTheme("network-disconnect", QIcon(QString(":/%1/disconnect").arg(m_theme)))); m_connectToolBar->setHidden(true); m_mainToolBar->setHidden(false); stateString = i18n("Connecting..."); @@ -332,7 +335,7 @@ ui->logWidget->addLog(i18n("Serial disconnected")); m_core.setSerialTimerInterval(100); m_connectButton->setText(i18n("Connect")); - m_connectButton->setIcon(QIcon::fromTheme("network-connect")); + m_connectButton->setIcon(QIcon::fromTheme("network-connect",QIcon(QString(":/%1/connect").arg(m_theme)))); m_connectToolBar->setHidden(false); m_mainToolBar->setHidden(true); enableControls(false); @@ -347,18 +350,18 @@ ui->printProgressWidget->setVisible(false); disconnect(&m_core, &AtCore::printProgressChanged, ui->printProgressWidget, &PrintProgressWidget::updateProgressBar); m_printAction->setText(i18n("Print")); - m_printAction->setIcon(QIcon::fromTheme("document-edit", style()->standardIcon(QStyle::SP_MediaPlay))); + m_printAction->setIcon(QIcon::fromTheme("media-playback-start", QIcon(QString(":/%1/start").arg(m_theme)))); } break; case AtCore::BUSY: { stateString = i18n("Printing"); emit disableDisconnect(true); m_printAction->setText(i18n("Pause")); - m_printAction->setIcon(QIcon::fromTheme("media-playback-pause", style()->standardIcon(QStyle::SP_MediaPause))); + m_printAction->setIcon(QIcon::fromTheme("media-playback-pause", QIcon(QString(":/%1/pause").arg(m_theme)))); } break; case AtCore::PAUSE: { stateString = i18n("Paused"); m_printAction->setText(i18n("Resume")); - m_printAction->setIcon(QIcon::fromTheme("media-playback-start", style()->standardIcon(QStyle::SP_MediaPlay))); + m_printAction->setIcon(QIcon::fromTheme("media-playback-start", QIcon(QString(":/%1/start").arg(m_theme)))); } break; case AtCore::STOP: { stateString = i18n("Stoping Print");