diff --git a/interface/interface_en.ts b/interface/interface_en.ts index c924e76330..3446903bb3 100644 --- a/interface/interface_en.ts +++ b/interface/interface_en.ts @@ -162,49 +162,49 @@ RunningScriptsWidget - + Form - - + + <html><head/><body><p><span style=" font-size:18pt;">Running Scripts</span></p></body></html> - - + + <html><head/><body><p><span style=" font-weight:600;">Currently running</span></p></body></html> - - + + Reload All - - + + Stop All - - + + <html><head/><body><p><span style=" font-weight:600;">Recently loaded</span></p></body></html> - - + + (click a script or use the 1-9 keys to load and run it) - - + + There are no scripts currently running. diff --git a/interface/src/ui/RunningScriptsWidget.cpp b/interface/src/ui/RunningScriptsWidget.cpp index 2238cab2df..66664dcc8c 100644 --- a/interface/src/ui/RunningScriptsWidget.cpp +++ b/interface/src/ui/RunningScriptsWidget.cpp @@ -1,5 +1,5 @@ // -// RunningScripts.cpp +// RunningScriptsWidget.cpp // interface // // Created by Mohammed Nafees on 03/28/2014. @@ -9,6 +9,8 @@ #include "RunningScriptsWidget.h" #include +#include +#include #include #include "Application.h" @@ -22,25 +24,17 @@ RunningScriptsWidget::RunningScriptsWidget(QDockWidget *parent) : // remove the title bar (see the Qt docs on setTitleBarWidget) setTitleBarWidget(new QWidget()); - ui->runningScriptsTableWidget->setColumnCount(2); - ui->runningScriptsTableWidget->verticalHeader()->setVisible(false); - ui->runningScriptsTableWidget->horizontalHeader()->setVisible(false); - ui->runningScriptsTableWidget->setSelectionMode(QAbstractItemView::NoSelection); - ui->runningScriptsTableWidget->setShowGrid(false); - ui->runningScriptsTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); - ui->runningScriptsTableWidget->setColumnWidth(0, 235); - ui->runningScriptsTableWidget->setColumnWidth(1, 25); - connect(ui->runningScriptsTableWidget, &QTableWidget::cellClicked, this, &RunningScriptsWidget::stopScript); + _runningScriptsTable = new ScriptsTableWidget(ui->runningScriptsTableWidget); + _runningScriptsTable->setColumnCount(2); + _runningScriptsTable->setColumnWidth(0, 245); + _runningScriptsTable->setColumnWidth(1, 22); + connect(_runningScriptsTable, &QTableWidget::cellClicked, this, &RunningScriptsWidget::stopScript); - ui->recentlyLoadedScriptsTableWidget->setColumnCount(2); - ui->recentlyLoadedScriptsTableWidget->verticalHeader()->setVisible(false); - ui->recentlyLoadedScriptsTableWidget->horizontalHeader()->setVisible(false); - ui->recentlyLoadedScriptsTableWidget->setSelectionMode(QAbstractItemView::NoSelection); - ui->recentlyLoadedScriptsTableWidget->setShowGrid(false); - ui->recentlyLoadedScriptsTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); - ui->recentlyLoadedScriptsTableWidget->setColumnWidth(0, 25); - ui->recentlyLoadedScriptsTableWidget->setColumnWidth(1, 235); - connect(ui->recentlyLoadedScriptsTableWidget, &QTableWidget::cellClicked, + _recentlyLoadedScriptsTable = new ScriptsTableWidget(ui->recentlyLoadedScriptsTableWidget); + _recentlyLoadedScriptsTable->setColumnCount(2); + _recentlyLoadedScriptsTable->setColumnWidth(0, 25); + _recentlyLoadedScriptsTable->setColumnWidth(1, 235); + connect(_recentlyLoadedScriptsTable, &QTableWidget::cellClicked, this, &RunningScriptsWidget::loadScript); connect(ui->hideWidgetButton, &QPushButton::clicked, @@ -58,25 +52,24 @@ RunningScriptsWidget::~RunningScriptsWidget() void RunningScriptsWidget::setRunningScripts(const QStringList& list) { - ui->runningScriptsTableWidget->setRowCount(list.size()); + _runningScriptsTable->setRowCount(list.size()); ui->noRunningScriptsLabel->setVisible(list.isEmpty()); ui->currentlyRunningLabel->setVisible(!list.isEmpty()); - ui->line1->setVisible(!list.isEmpty()); ui->runningScriptsTableWidget->setVisible(!list.isEmpty()); ui->reloadAllButton->setVisible(!list.isEmpty()); ui->stopAllButton->setVisible(!list.isEmpty()); for (int i = 0; i < list.size(); ++i) { QTableWidgetItem *scriptName = new QTableWidgetItem; - scriptName->setText(list.at(i)); + scriptName->setText(QFileInfo(list.at(i)).fileName()); scriptName->setToolTip(list.at(i)); - scriptName->setTextAlignment(Qt::AlignCenter); + scriptName->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter); QTableWidgetItem *closeIcon = new QTableWidgetItem; - closeIcon->setIcon(QIcon(":/images/kill-script.svg")); + closeIcon->setIcon(QIcon(QPixmap(":/images/kill-script.svg").scaledToHeight(12))); - ui->runningScriptsTableWidget->setItem(i, 0, scriptName); - ui->runningScriptsTableWidget->setItem(i, 1, closeIcon); + _runningScriptsTable->setItem(i, 0, scriptName); + _runningScriptsTable->setItem(i, 1, closeIcon); } createRecentlyLoadedScriptsTable(); @@ -146,17 +139,37 @@ void RunningScriptsWidget::keyPressEvent(QKeyEvent *e) } } +void RunningScriptsWidget::paintEvent(QPaintEvent *) +{ + QPainter painter(this); + painter.setPen(QColor::fromRgb(196, 196, 196)); + + if (ui->currentlyRunningLabel->isVisible()) { + // line below the 'Currently Running' label + painter.drawLine(20, ui->currentlyRunningLabel->y() + ui->currentlyRunningLabel->height(), + width() - 20, ui->currentlyRunningLabel->y() + ui->currentlyRunningLabel->height()); + } + + if (ui->recentlyLoadedLabel->isVisible()) { + // line below the 'Recently loaded' label + painter.drawLine(20, ui->recentlyLoadedLabel->y() + ui->recentlyLoadedLabel->height(), + width() - 20, ui->recentlyLoadedLabel->y() + ui->recentlyLoadedLabel->height()); + } + + painter.end(); +} + void RunningScriptsWidget::stopScript(int row, int column) { if (column == 1) { // make sure the user has clicked on the close icon - _lastStoppedScript = ui->runningScriptsTableWidget->item(row, 0)->text(); - emit stopScriptName(ui->runningScriptsTableWidget->item(row, 0)->text()); + _lastStoppedScript = _runningScriptsTable->item(row, 0)->toolTip(); + emit stopScriptName(_runningScriptsTable->item(row, 0)->toolTip()); } } void RunningScriptsWidget::loadScript(int row, int column) { - Application::getInstance()->loadScript(ui->recentlyLoadedScriptsTableWidget->item(row, column)->text()); + Application::getInstance()->loadScript(_recentlyLoadedScriptsTable->item(row, column)->toolTip()); } void RunningScriptsWidget::allScriptsStopped() @@ -183,21 +196,30 @@ void RunningScriptsWidget::createRecentlyLoadedScriptsTable() } ui->recentlyLoadedLabel->setVisible(!_recentlyLoadedScripts.isEmpty()); - ui->line2->setVisible(!_recentlyLoadedScripts.isEmpty()); ui->recentlyLoadedScriptsTableWidget->setVisible(!_recentlyLoadedScripts.isEmpty()); ui->recentlyLoadedInstruction->setVisible(!_recentlyLoadedScripts.isEmpty()); int limit = _recentlyLoadedScripts.size() > 9 ? 9 : _recentlyLoadedScripts.size(); - ui->recentlyLoadedScriptsTableWidget->setRowCount(limit); + _recentlyLoadedScriptsTable->setRowCount(limit); for (int i = 0; i < limit; ++i) { QTableWidgetItem *scriptName = new QTableWidgetItem; - scriptName->setText(_recentlyLoadedScripts.at(i)); + scriptName->setText(QFileInfo(_recentlyLoadedScripts.at(i)).fileName()); scriptName->setToolTip(_recentlyLoadedScripts.at(i)); - scriptName->setTextAlignment(Qt::AlignCenter); + scriptName->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter); QTableWidgetItem *number = new QTableWidgetItem; number->setText(QString::number(i+1) + "."); + number->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter); - ui->recentlyLoadedScriptsTableWidget->setItem(i, 0, number); - ui->recentlyLoadedScriptsTableWidget->setItem(i, 1, scriptName); + _recentlyLoadedScriptsTable->setItem(i, 0, number); + _recentlyLoadedScriptsTable->setItem(i, 1, scriptName); } + + int y = ui->recentlyLoadedScriptsTableWidget->y() + 15; + for (int i = 0; i < _recentlyLoadedScriptsTable->rowCount(); ++i) { + y += _recentlyLoadedScriptsTable->rowHeight(i); + } + + ui->recentlyLoadedInstruction->setGeometry(20, y, width() - 20, ui->recentlyLoadedInstruction->height()); + + repaint(); } diff --git a/interface/src/ui/RunningScriptsWidget.h b/interface/src/ui/RunningScriptsWidget.h index d92927347f..51c19028cd 100644 --- a/interface/src/ui/RunningScriptsWidget.h +++ b/interface/src/ui/RunningScriptsWidget.h @@ -1,5 +1,5 @@ // -// RunningScripts.h +// RunningScriptsWidget.h // interface // // Created by Mohammed Nafees on 03/28/2014. @@ -8,9 +8,10 @@ #ifndef __hifi__RunningScriptsWidget__ #define __hifi__RunningScriptsWidget__ -// Qt #include +#include "ScriptsTableWidget.h" + namespace Ui { class RunningScriptsWidget; } @@ -28,7 +29,8 @@ signals: void stopScriptName(const QString& name); protected: - void keyPressEvent(QKeyEvent *e); + virtual void keyPressEvent(QKeyEvent *e); + virtual void paintEvent(QPaintEvent *); private slots: void stopScript(int row, int column); @@ -37,6 +39,8 @@ private slots: private: Ui::RunningScriptsWidget *ui; + ScriptsTableWidget *_runningScriptsTable; + ScriptsTableWidget *_recentlyLoadedScriptsTable; QStringList _recentlyLoadedScripts; QString _lastStoppedScript; diff --git a/interface/src/ui/ScriptsTableWidget.cpp b/interface/src/ui/ScriptsTableWidget.cpp new file mode 100644 index 0000000000..e954500022 --- /dev/null +++ b/interface/src/ui/ScriptsTableWidget.cpp @@ -0,0 +1,41 @@ +// +// ScriptsTableWidget.cpp +// interface +// +// Created by Mohammed Nafees on 04/03/2014. +// Copyright (c) 2014 High Fidelity, Inc. All rights reserved. + +#include "ScriptsTableWidget.h" + +#include +#include +#include +#include +#include + +ScriptsTableWidget::ScriptsTableWidget(QWidget *parent) : + QTableWidget(parent) +{ + verticalHeader()->setVisible(false); + horizontalHeader()->setVisible(false); + setShowGrid(false); + setSelectionMode(QAbstractItemView::NoSelection); + setEditTriggers(QAbstractItemView::NoEditTriggers); + setStyleSheet("background: transparent;"); + setGeometry(0, 0, parent->width(), parent->height()); +} + +void ScriptsTableWidget::paintEvent(QPaintEvent *event) +{ + QPainter painter(viewport()); + painter.setPen(QColor::fromRgb(196, 196, 196)); + + int y = 0; + for (int i = 0; i < rowCount(); ++i) { + painter.drawLine(0, rowHeight(i) + y, width(), rowHeight(i) + y); + y += rowHeight(i); + } + painter.end(); + + QTableWidget::paintEvent(event); +} diff --git a/interface/src/ui/ScriptsTableWidget.h b/interface/src/ui/ScriptsTableWidget.h new file mode 100644 index 0000000000..f4726ab26d --- /dev/null +++ b/interface/src/ui/ScriptsTableWidget.h @@ -0,0 +1,23 @@ +// +// ScriptsTableWidget.h +// interface +// +// Created by Mohammed Nafees on 04/03/2014. +// Copyright (c) 2014 High Fidelity, Inc. All rights reserved. + +#ifndef __hifi__ScriptsTableWidget__ +#define __hifi__ScriptsTableWidget__ + +#include + +class ScriptsTableWidget : public QTableWidget +{ + Q_OBJECT +public: + explicit ScriptsTableWidget(QWidget *parent); + +protected: + virtual void paintEvent(QPaintEvent *event); +}; + +#endif /* defined(__hifi__ScriptsTableWidget__) */ diff --git a/interface/ui/runningScriptsWidget.ui b/interface/ui/runningScriptsWidget.ui index 9494d4ed09..d35caf0d77 100644 --- a/interface/ui/runningScriptsWidget.ui +++ b/interface/ui/runningScriptsWidget.ui @@ -27,7 +27,8 @@ font-family: Helvetica, Arial, "DejaVu Sans"; - color: #0e7077; + color: #0e7077; +font-size: 20pt; <html><head/><body><p><span style=" font-size:18pt;">Running Scripts</span></p></body></html> @@ -43,7 +44,8 @@ font-family: Helvetica, Arial, "DejaVu Sans"; - color: #0e7077; + color: #0e7077; +font-size: 14pt; <html><head/><body><p><span style=" font-weight:600;">Currently running</span></p></body></html> @@ -61,10 +63,14 @@ font-family: Helvetica, Arial, "DejaVu Sans"; PointingHandCursor + + false + background: #0e7077; color: #fff; -border-radius: 6px; +border-radius: 6px; +font: 14pt 75pt; Reload All @@ -89,7 +95,8 @@ border-radius: 6px; background: #0e7077; color: #fff; -border-radius: 6px; +border-radius: 6px; +font: 14pt 75pt; Stop All @@ -109,28 +116,13 @@ border-radius: 6px; - color: #0e7077; + color: #0e7077; +font-size: 14pt; <html><head/><body><p><span style=" font-weight:600;">Recently loaded</span></p></body></html> - - - - 20 - 300 - 271 - 8 - - - - - - - Qt::Horizontal - - @@ -141,7 +133,8 @@ border-radius: 6px; - color: #95a5a6; + color: #95a5a6; +font-size: 14pt; (click a script or use the 1-9 keys to load and run it) @@ -179,59 +172,17 @@ border-radius: 6px; true - - - - 20 - 70 - 271 - 141 - - - - background: transparent; - - - + 20 60 271 - 8 - - - - - - - Qt::Horizontal - - - - - - 20 - 310 - 271 - 281 - - - - background: transparent; - - - - - - 20 - 40 - 271 51 - font: 14px; + font: 14pt; There are no scripts currently running. @@ -240,6 +191,34 @@ border-radius: 6px; Qt::AlignCenter + + + + 20 + 300 + 270 + 280 + + + + background: transparent; +font-size: 14pt; + + + + + + 20 + 60 + 270 + 140 + + + + background: transparent; +font-size: 14pt; + +