Allow markers to be selected

This commit is contained in:
Thomas Wilshaw
2021-10-22 22:15:51 +01:00
parent ca807b7b66
commit 853dbc0066
11 changed files with 94 additions and 2 deletions
+29 -2
View File
@@ -31,7 +31,8 @@ namespace olive {
Marker::Marker(QWidget *parent) :
QWidget(parent),
marker_color_(7) //green FIXME: add default color to config
marker_color_(7), //green FIXME: add default color to config
active_(false)
{
setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
setMinimumSize(20, 20);
@@ -40,6 +41,16 @@ Marker::Marker(QWidget *parent) :
connect(this, &Marker::customContextMenuRequested, this, &Marker::ShowContextMenu);
}
void Marker::set_active(bool active)
{
active_ = active;
}
bool Marker::active()
{
return active_;
}
void Marker::paintEvent(QPaintEvent *event)
{
QFontMetrics fm = fontMetrics();
@@ -54,7 +65,11 @@ void Marker::paintEvent(QPaintEvent *event)
int x = half_width; //3
QPainter p(this);
p.setPen(Qt::black);
if (active_) {
p.setPen(Qt::white);
} else {
p.setPen(Qt::black);
}
p.setBrush(ColorCoding::GetColor(marker_color_).toQColor());
p.setRenderHint(QPainter::Antialiasing);
@@ -73,6 +88,15 @@ void Marker::paintEvent(QPaintEvent *event)
p.drawPolygon(points, 6);
}
void Marker::mousePressEvent(QMouseEvent* e)
{
if (e->button() == Qt::LeftButton) {
active_ = !active_;
update();
emit markerSelected(this);
}
}
void Marker::ShowContextMenu() {
Menu m(this);
@@ -81,6 +105,9 @@ void Marker::ShowContextMenu() {
connect(&color_coding_menu, &ColorLabelMenu::ColorSelected, this, &Marker::ColorChanged);
m.addMenu(&color_coding_menu);
m.addSeparator();
MenuShared::instance()->AddItemsForEditMenu(&m, false);
m.exec(QCursor::pos());
}
+8
View File
@@ -22,6 +22,7 @@
#define MARKER_H
#include <QWidget>
#include <QMouseEvent>
#include <QPushButton>
#include "common/define.h"
@@ -34,11 +35,15 @@ class Marker : public QWidget {
public:
Marker(QWidget* parent = nullptr);
void set_active(bool active);
bool active();
public slots:
void SetColor(int c);
protected:
void paintEvent(QPaintEvent* event) override;
virtual void mousePressEvent(QMouseEvent* event) override;
//virtual void mouseReleaseEvent(QMouseEvent* event) override;
//virtual void mouseDoubleClickEvent(QMouseEvent* event) override;
@@ -46,11 +51,14 @@ class Marker : public QWidget {
//void MouseClicked();
//void MouseDoubleClicked();
void ColorChanged(int c);
void markerSelected(Marker* marker);
private:
int marker_color_;
bool active_;
private slots:
void ShowContextMenu();
};