pqTabbedMultiViewWidget.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Kitware Inc.
2 // SPDX-FileCopyrightText: Copyright (c) Sandia Corporation
3 // SPDX-License-Identifier: BSD-3-Clause
4 #ifndef pqTabbedMultiViewWidget_h
5 #define pqTabbedMultiViewWidget_h
6 
7 #include "pqComponentsModule.h"
8 #include "vtkType.h" // needed for vtkIdType
9 #include <QCoreApplication>
10 #include <QStyle> // needed for QStyle:StandardPixmap
11 #include <QTabBar> // needed for QTabBar::ButtonPosition
12 #include <QTabWidget> // needed for QTabWidget.
13 
14 class pqMultiViewWidget;
15 class pqProxy;
16 class pqServer;
18 class pqView;
19 class vtkImageData;
21 
28 class PQCOMPONENTS_EXPORT pqTabbedMultiViewWidget : public QWidget
29 {
30  Q_OBJECT
31  typedef QWidget Superclass;
32  Q_PROPERTY(bool readOnly READ readOnly WRITE setReadOnly)
33 public:
34  pqTabbedMultiViewWidget(QWidget* parent = nullptr);
35  ~pqTabbedMultiViewWidget() override;
36 
40  virtual QSize clientSize() const;
41 
46  void setReadOnly(bool val);
47  bool readOnly() const;
48 
53  void setTabVisibility(bool visible);
54  bool tabVisibility() const;
55 
59  vtkSMViewLayoutProxy* layoutProxy() const;
60 
64  bool decorationsVisibility() const;
65 
70  pqMultiViewWidget* findTab(vtkSMViewLayoutProxy*) const;
71 
73 
77  void enableAnnotationFilter(const QString& annotationKey);
78  void disableAnnotationFilter();
79  void setAnnotationFilterMatching(bool matching);
81 
87  void updateVisibleTabs();
88 
93  QList<QString> visibleTabLabels() const;
94 
95 Q_SIGNALS:
99  void viewSizeLocked(bool);
100 
101 public Q_SLOTS:
102  virtual int createTab();
103  virtual int createTab(pqServer*);
104  virtual int createTab(vtkSMViewLayoutProxy*);
105  virtual void closeTab(int);
106 
110  void setCurrentTab(int index);
111 
113 
117  void setDecorationsVisibility(bool);
118  void showDecorations() { this->setDecorationsVisibility(true); }
119  void hideDecorations() { this->setDecorationsVisibility(false); }
121 
125  virtual void toggleFullScreen();
126 
130  virtual void toggleWidgetDecoration();
131 
136  virtual void lockViewSize(const QSize&);
137 
141  virtual void reset();
142 
161  QSize preview(const QSize& previewSize = QSize());
162 
163 protected Q_SLOTS:
167  virtual void proxyAdded(pqProxy*);
168  virtual void proxyRemoved(pqProxy*);
169  virtual void serverRemoved(pqServer*);
170 
175  virtual void currentTabChanged(int);
176 
181  virtual void onStateLoaded();
182 
186  void contextMenuRequested(const QPoint&);
187 
188  void onLayoutNameChanged(pqServerManagerModelItem*);
189 
190 protected: // NOLINT(readability-redundant-access-specifiers)
191  bool eventFilter(QObject* obj, QEvent* event) override;
192 
196  class pqTabWidget : public QTabWidget
197  {
198  typedef QTabWidget Superclass;
199 
200  Q_DECLARE_TR_FUNCTIONS(pqTabWidget);
201 
202  public:
203  pqTabWidget(QWidget* parentWdg = nullptr);
204  ~pqTabWidget() override;
205 
209  virtual void setTabButton(int index, QTabBar::ButtonPosition position, QWidget* wdg);
210 
216  virtual int tabButtonIndex(QWidget* wdg, QTabBar::ButtonPosition position) const;
217 
223  virtual int addAsTab(pqMultiViewWidget* wdg, pqTabbedMultiViewWidget* self);
224 
229  static QString popoutLabelText(bool popped_out);
230 
234  static QStyle::StandardPixmap popoutLabelPixmap(bool popped_out);
235 
240  void setReadOnly(bool val);
241  bool readOnly() const { return this->ReadOnly; }
242 
246  QSize preview(const QSize&);
247 
249 
254  void setTabBarVisibility(bool);
255  bool tabBarVisibility() const { return this->TabBarVisibility; }
257  protected:
258  void createViewSelectorTabIfNeeded(int tabIndex);
259 
260  private:
261  Q_DISABLE_COPY(pqTabWidget)
262  bool ReadOnly;
263  bool TabBarVisibility;
265  };
266 
267 private:
268  Q_DISABLE_COPY(pqTabbedMultiViewWidget)
269 
270  class pqInternals;
271  pqInternals* Internals;
272  friend class pqInternals;
273 };
274 
275 #endif
pqTabbedMultiViewWidget::pqTabWidget::tabBarVisibility
bool tabBarVisibility() const
Get/Set tab bar visibility.
Definition: pqTabbedMultiViewWidget.h:255
pqTabbedMultiViewWidget::hideDecorations
void hideDecorations()
When set to false, all decorations including title frames, separators, tab-bars are hidden.
Definition: pqTabbedMultiViewWidget.h:119
pqView
This is a PQ abstraction of a generic view module.
Definition: pqView.h:26
pqTabbedMultiViewWidget::showDecorations
void showDecorations()
When set to false, all decorations including title frames, separators, tab-bars are hidden.
Definition: pqTabbedMultiViewWidget.h:118
pqTabbedMultiViewWidget
pqTabbedMultiViewWidget is used to to enable adding of multiple pqMultiViewWidget instances in tabs.
Definition: pqTabbedMultiViewWidget.h:28
vtkType.h
pqTabbedMultiViewWidget::pqTabWidget::readOnly
bool readOnly() const
Definition: pqTabbedMultiViewWidget.h:241
position
position
pqServer
pqServer (should be renamed to pqSession) is a pqServerManagerModelItem subclass that represents a vt...
Definition: pqServer.h:35
pqTabbedMultiViewWidget::pqTabWidget
Internal class used as the TabWidget.
Definition: pqTabbedMultiViewWidget.h:196
vtkImageData
pqMultiViewWidget
pqMultiViewWidget is a widget that manages layout of multiple views.
Definition: pqMultiViewWidget.h:28
pqServerManagerModelItem
pqServerManagerModelItem is a element maintained by pqServerManagerModel.
Definition: pqServerManagerModelItem.h:19
pqProxy
This class represents any registered Server Manager proxy.
Definition: pqProxy.h:28
index
index
vtkSMViewLayoutProxy
vtkSMViewLayoutProxy is used by ParaView to layout multiple views in a 2D KD-Tree layout.
Definition: vtkSMViewLayoutProxy.h:39