#include "header.h"
#include "view.h"
-#include "../signal.h"
+#include "signal.h"
#include "../sigsession.h"
#include <assert.h>
#include <boost/foreach.hpp>
+#include <QColorDialog>
#include <QInputDialog>
#include <QMenu>
#include <QMouseEvent>
Header::Header(View &parent) :
QWidget(&parent),
_view(parent),
- _action_set_name(new QAction(tr("Set &Name..."), this))
+ _action_set_name(new QAction(tr("Set &Name..."), this)),
+ _action_set_colour(new QAction(tr("Set &Colour..."), this))
{
setMouseTracking(true);
connect(_action_set_name, SIGNAL(triggered()),
this, SLOT(on_action_set_name_triggered()));
+ connect(_action_set_colour, SIGNAL(triggered()),
+ this, SLOT(on_action_set_colour_triggered()));
}
void Header::paintEvent(QPaintEvent *event)
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
- int offset = -_view.v_offset();
+ const int v_offset = _view.v_offset();
BOOST_FOREACH(const shared_ptr<Signal> s, sigs)
{
assert(s);
const QRect signal_heading_rect(
- 0, offset, w, View::SignalHeight);
+ 0, s->get_v_offset() - v_offset,
+ w, View::SignalHeight);
s->paint_label(painter, signal_heading_rect,
s->pt_in_label_rect(signal_heading_rect, _mouse_point));
-
- offset += View::SignalHeight;
}
painter.end();
const vector< shared_ptr<Signal> > &sigs =
_view.session().get_signals();
- int offset = -_view.v_offset();
+ const int v_offset = _view.v_offset();
BOOST_FOREACH(const shared_ptr<Signal> s, sigs)
{
assert(s);
const QRect signal_heading_rect(
- 0, offset, w, View::SignalHeight);
+ 0, s->get_v_offset() - v_offset,
+ w, View::SignalHeight);
if(s->pt_in_label_rect(signal_heading_rect, _mouse_point)) {
QMenu menu(this);
menu.addAction(_action_set_name);
+ menu.addAction(_action_set_colour);
_context_signal = s;
menu.exec(event->globalPos());
break;
}
-
- offset += View::SignalHeight;
}
}
void Header::on_action_set_name_triggered()
{
- boost::shared_ptr<Signal> context_signal = _context_signal;
+ shared_ptr<view::Signal> context_signal = _context_signal;
if(!context_signal)
return;
context_signal->set_name(new_label);
}
+void Header::on_action_set_colour_triggered()
+{
+ shared_ptr<view::Signal> context_signal = _context_signal;
+ if(!context_signal)
+ return;
+
+ const QColor new_colour = QColorDialog::getColor(
+ context_signal->get_colour(), this, tr("Set Colour"));
+
+ if(new_colour.isValid())
+ context_signal->set_colour(new_colour);
+}
+
} // namespace view
} // namespace pv