From 91e8bf08c9799cb1041d26bf2ff6b67abf9a420b Mon Sep 17 00:00:00 2001 From: Joel Holdsworth Date: Sat, 5 Oct 2013 12:27:12 +0100 Subject: [PATCH] Integrated ColourButton into popup --- CMakeLists.txt | 5 +++ pv/view/header.cpp | 5 ++- pv/view/signal.cpp | 2 ++ pv/view/trace.cpp | 25 +++++++++++++- pv/view/trace.h | 5 +++ pv/view/tracepalette.cpp | 70 ++++++++++++++++++++++++++++++++++++++++ pv/view/tracepalette.h | 41 +++++++++++++++++++++++ 7 files changed, 151 insertions(+), 2 deletions(-) create mode 100644 pv/view/tracepalette.cpp create mode 100644 pv/view/tracepalette.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 469cb5e2..05af3458 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -138,9 +138,12 @@ set(pulseview_SOURCES pv/view/signal.cpp pv/view/timemarker.cpp pv/view/trace.cpp + pv/view/tracepalette.cpp pv/view/view.cpp pv/view/viewport.cpp pv/view/decode/annotation.cpp + pv/widgets/colourbutton.cpp + pv/widgets/colourpopup.cpp pv/widgets/popup.cpp pv/widgets/wellarray.cpp ) @@ -166,6 +169,8 @@ set(pulseview_HEADERS pv/view/trace.h pv/view/view.h pv/view/viewport.h + pv/widgets/colourbutton.h + pv/widgets/colourpopup.h pv/widgets/wellarray.h ) diff --git a/pv/view/header.cpp b/pv/view/header.cpp index f8f5b638..ba16247a 100644 --- a/pv/view/header.cpp +++ b/pv/view/header.cpp @@ -240,7 +240,10 @@ void Header::on_signals_changed() const vector< shared_ptr > traces(_view.get_traces()); BOOST_FOREACH(shared_ptr t, traces) { assert(t); - connect(t.get(), SIGNAL(text_changed()), this, SLOT(update())); + connect(t.get(), SIGNAL(text_changed()), + this, SLOT(update())); + connect(t.get(), SIGNAL(colour_changed()), + this, SLOT(update())); } } diff --git a/pv/view/signal.cpp b/pv/view/signal.cpp index 96417f2b..dadba05a 100644 --- a/pv/view/signal.cpp +++ b/pv/view/signal.cpp @@ -88,6 +88,8 @@ void Signal::populate_popup_form(QWidget *parent, QFormLayout *form) this, SLOT(on_text_changed(const QString&))); form->addRow(tr("Name"), _name_widget); + + add_colour_option(parent, form); } } // namespace view diff --git a/pv/view/trace.cpp b/pv/view/trace.cpp index ebf28b62..de036a94 100644 --- a/pv/view/trace.cpp +++ b/pv/view/trace.cpp @@ -27,9 +27,10 @@ #include #include "trace.h" +#include "tracepalette.h" #include "view.h" -#include +#include namespace pv { namespace view { @@ -211,6 +212,20 @@ void Trace::paint_axis(QPainter &p, int y, int left, int right) p.drawLine(QPointF(left, y + 0.5f), QPointF(right, y + 0.5f)); } +void Trace::add_colour_option(QWidget *parent, QFormLayout *form) +{ + using pv::widgets::ColourButton; + + ColourButton *const colour_button = new ColourButton( + TracePalette::Rows, TracePalette::Cols, parent); + colour_button->set_palette(TracePalette::Colours); + colour_button->set_colour(_colour); + connect(colour_button, SIGNAL(selected(const QColor&)), + this, SLOT(on_colour_changed(const QColor&))); + + form->addRow(tr("Colour"), colour_button); +} + void Trace::populate_popup_form(QWidget *parent, QFormLayout *form) { QLineEdit *const name_edit = new QLineEdit(parent); @@ -218,6 +233,8 @@ void Trace::populate_popup_form(QWidget *parent, QFormLayout *form) connect(name_edit, SIGNAL(textChanged(const QString&)), this, SLOT(on_text_changed(const QString&))); form->addRow(tr("Name"), name_edit); + + add_colour_option(parent, form); } void Trace::compute_text_size(QPainter &p) @@ -270,5 +287,11 @@ void Trace::on_text_changed(const QString &text) text_changed(); } +void Trace::on_colour_changed(const QColor &colour) +{ + set_colour(colour); + colour_changed(); +} + } // namespace view } // namespace pv diff --git a/pv/view/trace.h b/pv/view/trace.h index 243bc2ad..0b9c509a 100644 --- a/pv/view/trace.h +++ b/pv/view/trace.h @@ -158,6 +158,8 @@ protected: */ void paint_axis(QPainter &p, int y, int left, int right); + void add_colour_option(QWidget *parent, QFormLayout *form); + virtual void populate_popup_form(QWidget *parent, QFormLayout *form); private: @@ -183,8 +185,11 @@ private slots: void on_text_changed(const QString &text); + void on_colour_changed(const QColor &colour); + signals: void text_changed(); + void colour_changed(); protected: pv::SigSession &_session; diff --git a/pv/view/tracepalette.cpp b/pv/view/tracepalette.cpp new file mode 100644 index 00000000..cefb952d --- /dev/null +++ b/pv/view/tracepalette.cpp @@ -0,0 +1,70 @@ +/* + * This file is part of the PulseView project. + * + * Copyright (C) 2013 Joel Holdsworth + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "tracepalette.h" + +namespace pv { +namespace view { + +const QColor TracePalette::Colours[Cols * Rows] = { + + // Light Colours + QColor(0xFC, 0xE9, 0x4F), // Butter + QColor(0xFC, 0xAF, 0x3E), // Orange + QColor(0xE9, 0xB9, 0x6E), // Chocolate + QColor(0x8A, 0xE2, 0x34), // Chameleon + QColor(0x72, 0x9F, 0xCF), // Sky Blue + QColor(0xAD, 0x7F, 0xA8), // Plum + QColor(0xCF, 0x72, 0xC3), // Magenta + QColor(0xEF, 0x29, 0x29), // Scarlet Red + + // Mid Colours + QColor(0xED, 0xD4, 0x00), // Butter + QColor(0xF5, 0x79, 0x00), // Orange + QColor(0xC1, 0x7D, 0x11), // Chocolate + QColor(0x73, 0xD2, 0x16), // Chameleon + QColor(0x34, 0x65, 0xA4), // Sky Blue + QColor(0x75, 0x50, 0x7B), // Plum + QColor(0xA3, 0x34, 0x96), // Magenta + QColor(0xCC, 0x00, 0x00), // Scarlet Red + + // Dark Colours + QColor(0xC4, 0xA0, 0x00), // Butter + QColor(0xCE, 0x5C, 0x00), // Orange + QColor(0x8F, 0x59, 0x02), // Chocolate + QColor(0x4E, 0x9A, 0x06), // Chameleon + QColor(0x20, 0x4A, 0x87), // Sky Blue + QColor(0x5C, 0x35, 0x66), // Plum + QColor(0x87, 0x20, 0x7A), // Magenta + QColor(0xA4, 0x00, 0x00), // Scarlet Red + + // Greys + QColor(0x16, 0x19, 0x1A), // Black + QColor(0x2E, 0x34, 0x36), // Grey 1 + QColor(0x55, 0x57, 0x53), // Grey 2 + QColor(0x88, 0x8A, 0x8F), // Grey 3 + QColor(0xBA, 0xBD, 0xB6), // Grey 4 + QColor(0xD3, 0xD7, 0xCF), // Grey 5 + QColor(0xEE, 0xEE, 0xEC), // Grey 6 + QColor(0xFF, 0xFF, 0xFF), // White +}; + +} // view +} // pv diff --git a/pv/view/tracepalette.h b/pv/view/tracepalette.h new file mode 100644 index 00000000..ae3c69ad --- /dev/null +++ b/pv/view/tracepalette.h @@ -0,0 +1,41 @@ +/* + * This file is part of the PulseView project. + * + * Copyright (C) 2013 Joel Holdsworth + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef PULSEVIEW_PV_TRACEPALETTE_H +#define PULSEVIEW_PV_TRACEPALETTE_H + +#include + +namespace pv { +namespace view { + +class TracePalette +{ +public: + static const unsigned int Cols = 8; + static const unsigned int Rows = 4; + static const QColor Colours[Cols * Rows]; +}; + + +} // view +} // pv + +#endif // PULSEVIEW_PV_VIEW_TRACEPALETTE_H -- 2.30.2