VR-Forces 4.6 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
toolButtonWrapperWidget.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include <vrvUtil/signalslib.h>
15 #include <QWidget>
16 
17 class QAction;
18 class QHBoxLayout;
19 class QAbstractButton;
20 class QSpacerItem;
21 
22 namespace makVrf
23 {
30  {
31  Q_OBJECT
32 
33  public:
34  struct Layout
35  {
36  QHBoxLayout* layout;
37  std::vector<QAbstractButton*> buttons;
39  QSpacerItem* spacerItem;
40  };
41 
42  public:
43  DtToolButtonWrapperWidget(QWidget* parent, const Qt::WindowFlags& flags = 0);
44 
45  //DTOR
46  virtual ~DtToolButtonWrapperWidget();
47 
48  template <typename T> T* createButton()
49  {
50  T* b = new T(this);
51 
52  b->setFocusPolicy( Qt::NoFocus );
53  b->setIconSize(myIconSize);
54  b->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
55 
56  this->myButtons.push_back(b);
57 
58  return b;
59  }
60 
62  template <typename T> T* addAction(const QString& action, bool resetLayout = true)
63  {
64  T* b = createButton<T>();
65  b->setText(action);
66 
67  if (resetLayout)
68  {
69  this->addToLayout(b);
70  }
71 
72  return b;
73  }
74 
76  template <typename T> T* addAction(const QIcon& icon, bool resetLayout = true)
77  {
78  T* b = createButton<T>();
79  b->setIcon(icon);
80 
81  if (resetLayout)
82  {
83  this->addToLayout(b);
84  }
85 
86  return b;
87  }
88 
90  template <typename T> T* addAction(QAction* act, bool resetLayout = true)
91  {
92  T* b = createButton<T>();
93  b->setAutoRaise(true);
94  b->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
95  b->setDefaultAction(act);
96 
97  if (resetLayout)
98  {
99  this->addToLayout(b);
100  }
101 
102  return b;
103  }
104 
106  virtual int rightMarginForLine(int) const;
107 
110  virtual void setRightMarginForLine(int margin, int line = -1);
111 
113  virtual void removeRightMarginForLine(int line = -1);
114 
116  virtual void removeButton(QAbstractButton*, bool resetLayout = true);
117 
119  virtual void layoutButtons(bool force = false);
120 
123  virtual void setButtons(const std::vector<QAbstractButton*>& buttons, bool deleteCurrentButtons = false);
124 
126  virtual void setLeftToRightLayout(bool);
127  bool leftToRightLayout() const
128  {
129  return myLeftToRightLayout;
130  }
131 
132  bool needsLayout() const
133  {
134  return myNeedsLayout;
135  }
136 
139  virtual void setSizeToFit(bool);
140  bool sizeToFit() const
141  {
142  return mySizeToFit;
143  }
144 
145  int buttonsShown() const
146  {
147  return myButtonsShown;
148  }
149 
150  const std::vector<QAbstractButton*>& buttons() const
151  {
152  return myButtons;
153  }
154 
155  std::vector<QAbstractButton*>& buttons()
156  {
157  return myButtons;
158  }
159 
160  virtual bool hasButton(QAbstractButton*) const;
161 
163  virtual void setIconSize(const QSize&);
164  const QSize& iconSize() const
165  {
166  return myIconSize;
167  }
168 
170  virtual void setIconSpacing(int);
171  int iconSpacing() const
172  {
173  return myIconSpacing;
174  }
175 
177  virtual void clear();
178 
180  virtual void setFixedButtonWidth(int);
181  int fixedButtonWidth() const
182  {
183  return myFixedButtonWidth;
184  }
185 
188  virtual void setFixedButtonHeight(int);
189  int fixedButtonHeight() const
190  {
191  return myFixedButtonHeight;
192  }
193 
195  virtual void setShowMaximum(int);
196  int showMaximum() const
197  {
198  return myShowMaximum;
199  }
200 
202  virtual void setMaximumLines(int);
203  int maximumLines() const
204  {
205  return myMaximumLines;
206  }
207 
208  bool reachedMaximum() const
209  {
210  return myReachedMaximum;
211  }
212 
213  int numRows() const
214  {
215  return myLayouts.size();
216  }
217 
218  const std::vector<Layout>& layouts() const
219  {
220  return myLayouts;
221  }
222 
223  std::vector<Layout>& layouts()
224  {
225  return myLayouts;
226  }
227 
229  virtual void setBlockResizeLayout(bool);
230  bool blockResizeLayout() const
231  {
232  return myBlockResizeLayout;
233  }
234 
236  virtual void setSignalResizeLayout(bool);
237  bool signalResizeLayout() const
238  {
239  return mySignalResizeLayout;
240  }
241 
242  boost::signal<void ()> signal_resizeLayout;
243 
244  public:
245  boost::signal<void ()> signal_buttonsLayedOut;
246  boost::signal<void (Layout&, QAbstractButton*)> signal_buttonLayedOut;
247 
248  protected slots:
249  virtual void layoutFromTimer();
250 
251  protected:
252  virtual void resizeEvent(QResizeEvent*);
253  virtual void showEvent(QShowEvent*);
254  virtual void addToLayout(QAbstractButton*);
255 
256  protected:
257  std::vector<Layout> myLayouts;
258  std::vector<QAbstractButton*> myButtons;
259  std::map<int, int> myRightMarginForLine;
260 
261  QSize myIconSize;
276  };
277 }

Document ID: Generated on Thu Apr 12 03:15:37 EDT 2018 from SVN revision 187986
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)