Added a label context bar action

This commit is contained in:
Joel Holdsworth 2013-05-19 12:24:17 +01:00
parent b1264f5650
commit 9e40e83daf
6 changed files with 68 additions and 1 deletions

View File

@ -57,6 +57,7 @@ AnalogSignal::~AnalogSignal()
const list<QAction*> AnalogSignal::get_context_bar_actions()
{
list<QAction*> actions;
actions.push_back(&_name_action);
return actions;
}

View File

@ -54,6 +54,9 @@ Header::Header(View &parent) :
connect(_action_set_colour, SIGNAL(triggered()),
this, SLOT(on_action_set_colour_triggered()));
connect(&_view.session(), SIGNAL(signals_changed()),
this, SLOT(on_signals_changed()));
connect(&_view, SIGNAL(signals_moved()),
this, SLOT(on_signals_moved()));
}
@ -256,6 +259,15 @@ void Header::on_action_set_colour_triggered()
context_signal->set_colour(new_colour);
}
void Header::on_signals_changed()
{
const vector< shared_ptr<Signal> > sigs(_view.session().get_signals());
BOOST_FOREACH(shared_ptr<Signal> s, sigs) {
assert(s);
connect(s.get(), SIGNAL(text_changed()), this, SLOT(update()));
}
}
void Header::on_signals_moved()
{
update();

View File

@ -63,6 +63,8 @@ private:
void contextMenuEvent(QContextMenuEvent *event);
private slots:
void on_signals_changed();
void on_action_set_name_triggered();
void on_action_set_colour_triggered();

View File

@ -67,6 +67,7 @@ LogicSignal::~LogicSignal()
const list<QAction*> LogicSignal::get_context_bar_actions()
{
list<QAction*> actions;
actions.push_back(&_name_action);
return actions;
}

View File

@ -35,12 +35,42 @@ const int Signal::LabelHitPadding = 2;
const QPen Signal::SignalAxisPen(QColor(128, 128, 128, 64));
const char *const ProbeNames[] = {
"CLK",
"DATA",
"IN",
"OUT",
"RST",
"Tx",
"Rx",
"EN",
"SCLK",
"MOSI",
"MISO",
"/SS",
"SDA",
"SCL"
};
Signal::Signal(const sr_probe *const probe) :
_probe(probe),
_name(probe->name),
_v_offset(0)
_v_offset(0),
_name_action(NULL),
_name_widget(),
_updating_name_widget(false)
{
assert(_probe);
_name_action.setDefaultWidget(&_name_widget);
_name_widget.setEditable(true);
for(unsigned int i = 0; i < countof(ProbeNames); i++)
_name_widget.insertItem(i, ProbeNames[i]);
_name_widget.setEditText(probe->name);
connect(&_name_widget, SIGNAL(editTextChanged(const QString&)),
this, SLOT(on_text_changed(const QString&)));
}
QString Signal::get_name() const
@ -51,6 +81,9 @@ QString Signal::get_name() const
void Signal::set_name(QString name)
{
_name = name;
_updating_name_widget = true;
_name_widget.setEditText(name);
_updating_name_widget = false;
}
QColor Signal::get_colour() const
@ -165,5 +198,11 @@ QRectF Signal::get_label_rect(int y, int right)
label_size.width(), label_size.height());
}
void Signal::on_text_changed(const QString &text)
{
_name = text;
text_changed();
}
} // namespace view
} // namespace pv

View File

@ -24,10 +24,12 @@
#include <boost/shared_ptr.hpp>
#include <QColor>
#include <QComboBox>
#include <QPainter>
#include <QPen>
#include <QRect>
#include <QString>
#include <QWidgetAction>
#include <stdint.h>
@ -150,6 +152,12 @@ private:
*/
QRectF get_label_rect(int y, int right);
private slots:
void on_text_changed(const QString &text);
signals:
void text_changed();
protected:
const sr_probe *const _probe;
@ -158,6 +166,10 @@ protected:
int _v_offset;
QSizeF _text_size;
QWidgetAction _name_action;
QComboBox _name_widget;
bool _updating_name_widget;
};
} // namespace view