TAMSVIZ
Visualization and annotation tool for ROS
guicommon.h
1 // TAMSVIZ
2 // (c) 2020 Philipp Ruppel
3 
4 #pragma once
5 
6 #include <QtWidgets>
7 
8 #include <memory>
9 #include <vector>
10 
11 #include "../core/log.h"
12 
13 class TreeWidget : public QTreeWidget {
14 public:
15  QModelIndex indexFromItem(QTreeWidgetItem *item, int column = 0) const {
16  return QTreeWidget::indexFromItem(item, column);
17  }
18  QTreeWidgetItem *itemFromIndex(const QModelIndex &index) const {
19  return QTreeWidget::itemFromIndex(index);
20  }
21 };
22 
23 void startOnMainThreadAsync(const std::function<void()> &fun);
24 
25 void startOnObjectThreadAsync(QObject *object,
26  const std::function<void()> &fun);
27 
28 QIcon _createTextIcon(const QString &str);
29 #define TEXT_ICON(str) \
30  ([]() { \
31  static QIcon icon = _createTextIcon(str); \
32  return icon; \
33  }())
34 
35 QIcon _createMaterialIcon(const QString &str, double padding = 0.1);
36 #define MATERIAL_ICON(...) \
37  ([]() { \
38  static QIcon icon = _createMaterialIcon(__VA_ARGS__); \
39  return icon; \
40  }())
41 
42 QIcon _create_FA_R_Icon(const QString &str, double padding = 0.1);
43 #define FA_R_ICON(...) \
44  ([]() { \
45  static QIcon icon = _create_FA_R_Icon(__VA_ARGS__); \
46  return icon; \
47  }())
48 
49 QIcon _create_FA_S_Icon(const QString &str, double padding = 0.1);
50 #define FA_S_ICON(...) \
51  ([]() { \
52  static QIcon icon = _create_FA_S_Icon(__VA_ARGS__); \
53  return icon; \
54  }())
55 
56 class FlatButton : public QPushButton {
57  void init();
58 
59 public:
60  FlatButton() { init(); }
61  FlatButton(const QIcon &icon) {
62  setIcon(icon);
63  init();
64  }
65  FlatButton(const QIcon &icon, const QString &text) {
66  setIcon(icon);
67  setText(text);
68  init();
69  }
70  FlatButton(const QString &text) {
71  setText(text);
72  init();
73  }
74  virtual QSize minimumSizeHint() const override;
75  virtual QSize sizeHint() const override;
76  virtual void paintEvent(QPaintEvent *event) override;
77  ~FlatButton();
78 };