Cabana: drag to adjust signal size (#26172)

* drag to adjust signal size

* rename

* override setSelection

* use signal color as selection color while resing

* helper funtion

* hide tooltip if not in signal

* cleanup

* cabana: remove unused metatype (#26175)

remove unused metatype

* cabana: improve signal highlight on hover (#26161)

* just change font color

* merge master

* cleanup
old-commit-hash: d6a0f1c25a
This commit is contained in:
Dean Lee
2022-10-21 04:09:49 +08:00
committed by GitHub
parent e31ca17926
commit 8e68208690
4 changed files with 101 additions and 43 deletions
+9 -9
View File
@@ -12,10 +12,11 @@ public:
BinaryItemDelegate(QObject *parent);
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override;
void setSelectionColor(const QColor &color) { selection_color = color; }
private:
QFont small_font, hex_font;
QColor highlight_color;
QColor selection_color;
};
class BinaryViewModel : public QAbstractTableModel {
@@ -48,13 +49,6 @@ private:
std::vector<Item> items;
};
// the default QItemSelectionModel does not support our selection mode.
class BinarySelectionModel : public QItemSelectionModel {
public:
BinarySelectionModel(QAbstractItemModel *model = nullptr) : QItemSelectionModel(model) {}
void select(const QItemSelection &selection, QItemSelectionModel::SelectionFlags command) override;
};
class BinaryView : public QTableView {
Q_OBJECT
@@ -66,15 +60,21 @@ public:
const Signal *hoveredSignal() const { return hovered_sig; }
signals:
void cellsSelected(int start_bit, int size);
void signalHovered(const Signal *sig);
void addSignal(int from, int size);
void resizeSignal(const Signal *sig, int from, int size);
private:
void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags) override;
void mousePressEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
void mouseReleaseEvent(QMouseEvent *event) override;
void leaveEvent(QEvent *event) override;
const Signal *getResizingSignal() const;
QString msg_id;
QModelIndex anchor_index;
BinaryViewModel *model;
BinaryItemDelegate *delegate;
const Signal *hovered_sig = nullptr;
};