svgui  1.9
PaneStack.h
Go to the documentation of this file.
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2 
3 /*
4  Sonic Visualiser
5  An audio file viewer and annotation editor.
6  Centre for Digital Music, Queen Mary, University of London.
7  This file copyright 2006 Chris Cannam and QMUL.
8 
9  This program is free software; you can redistribute it and/or
10  modify it under the terms of the GNU General Public License as
11  published by the Free Software Foundation; either version 2 of the
12  License, or (at your option) any later version. See the file
13  COPYING included with this distribution for more information.
14 */
15 
16 #ifndef _PANESTACK_H_
17 #define _PANESTACK_H_
18 
19 #include <QFrame>
20 
21 #include <map>
22 
23 class QWidget;
24 class QLabel;
25 class QStackedWidget;
26 class QSplitter;
27 class QGridLayout;
28 class QPushButton;
29 class View;
30 class Pane;
31 class Layer;
32 class ViewManager;
33 class PropertyContainer;
34 class PropertyStack;
35 
36 class PaneStack : public QFrame
37 {
38  Q_OBJECT
39 
40 public:
41  PaneStack(QWidget *parent, ViewManager *viewManager);
42 
43  Pane *addPane(bool suppressPropertyBox = false); // I own the returned value
44  Pane *insertPane(int index, bool suppressPropertyBox = false); // I own the returned value
45  void deletePane(Pane *pane); // Deletes the pane, but _not_ its layers
46 
47  int getPaneCount() const; // Returns only count of visible panes
48  Pane *getPane(int n); // Of visible panes; I own the returned value
49  int getPaneIndex(Pane *pane); // so getPane(index)==pane; -1 if absent
50 
51  void hidePane(Pane *pane); // Also removes pane from getPane/getPaneCount
52  void showPane(Pane *pane); // Returns pane to getPane/getPaneCount
53 
54  int getHiddenPaneCount() const;
55  Pane *getHiddenPane(int n); // I own the returned value
56 
57  void setCurrentPane(Pane *pane);
58  void setCurrentLayer(Pane *pane, Layer *layer);
60 
61  enum LayoutStyle {
65  };
66 
68  void setLayoutStyle(LayoutStyle style);
69 
70  void setPropertyStackMinWidth(int mw);
71 
72  void setShowPaneAccessories(bool show); // current indicator, close button
73 
74  void sizePanesEqually();
75 
76 signals:
77  void currentPaneChanged(Pane *pane);
78  void currentLayerChanged(Pane *pane, Layer *layer);
79  void rightButtonMenuRequested(Pane *pane, QPoint position);
80  void propertyStacksResized(int width);
81  void propertyStacksResized();
82  void contextHelpChanged(const QString &);
83 
84  void paneAdded(Pane *pane);
85  void paneAdded();
86  void paneHidden(Pane *pane);
87  void paneHidden();
88  void paneAboutToBeDeleted(Pane *pane);
89  void paneDeleted();
90 
91  void dropAccepted(Pane *pane, QStringList uriList);
92  void dropAccepted(Pane *pane, QString text);
93 
94  void paneDeleteButtonClicked(Pane *pane);
95 
96  void doubleClickSelectInvoked(int frame);
97 
98 public slots:
99  void propertyContainerAdded(PropertyContainer *);
100  void propertyContainerRemoved(PropertyContainer *);
101  void propertyContainerSelected(View *client, PropertyContainer *);
102  void viewSelected(View *v);
103  void paneInteractedWith();
104  void rightButtonMenuRequested(QPoint);
105  void paneDropAccepted(QStringList);
106  void paneDropAccepted(QString);
108  void indicatorClicked();
109 
110 protected:
112 
113  struct PaneRec
114  {
116  QWidget *propertyStack;
117  QPushButton *xButton;
119  QFrame *frame;
120  QGridLayout *layout;
121  };
122 
123  std::vector<PaneRec> m_panes;
124  std::vector<PaneRec> m_hiddenPanes;
125 
127 
128  QSplitter *m_splitter;
129  QStackedWidget *m_propertyStackStack;
130 
131  ViewManager *m_viewManager; // I don't own this
133  void sizePropertyStacks();
134 
136 
138 };
139 
140 #endif
141 
Pane * getHiddenPane(int n)
Definition: PaneStack.cpp:240
Pane * getPane(int n)
Definition: PaneStack.cpp:219
int getPaneCount() const
Definition: PaneStack.cpp:324
Definition: Pane.h:34
The base class for visual representations of the data found in a Model.
Definition: Layer.h:52
void setShowPaneAccessories(bool show)
Definition: PaneStack.cpp:65
void hidePane(Pane *pane)
Definition: PaneStack.cpp:336
void propertyStacksResized()
PaneStack(QWidget *parent, ViewManager *viewManager)
Definition: PaneStack.cpp:39
int m_propertyStackMinWidth
Definition: PaneStack.h:132
void dropAccepted(Pane *pane, QStringList uriList)
void paneHidden()
ViewManager * m_viewManager
Definition: PaneStack.h:131
void sizePanesEqually()
Definition: PaneStack.cpp:603
void paneDeleteButtonClicked()
Definition: PaneStack.cpp:579
std::vector< PaneRec > m_panes
Definition: PaneStack.h:123
QLabel * currentIndicator
Definition: PaneStack.h:118
void paneAdded()
void doubleClickSelectInvoked(int frame)
int getHiddenPaneCount() const
Definition: PaneStack.cpp:330
QPushButton * xButton
Definition: PaneStack.h:117
void paneAboutToBeDeleted(Pane *pane)
void propertyContainerAdded(PropertyContainer *)
Definition: PaneStack.cpp:471
LayoutStyle getLayoutStyle() const
Definition: PaneStack.h:67
QSplitter * m_splitter
Definition: PaneStack.h:128
LayoutStyle m_layoutStyle
Definition: PaneStack.h:137
void propertyContainerRemoved(PropertyContainer *)
Definition: PaneStack.cpp:477
QWidget * propertyStack
Definition: PaneStack.h:116
int getPaneIndex(Pane *pane)
Definition: PaneStack.cpp:229
Pane * getCurrentPane()
Definition: PaneStack.cpp:465
void indicatorClicked()
Definition: PaneStack.cpp:590
void showOrHidePaneAccessories()
Definition: PaneStack.cpp:311
void propertyContainerSelected(View *client, PropertyContainer *)
Definition: PaneStack.cpp:483
void deletePane(Pane *pane)
Definition: PaneStack.cpp:246
void setLayoutStyle(LayoutStyle style)
Definition: PaneStack.cpp:185
void contextHelpChanged(const QString &)
void paneDeleted()
void setCurrentLayer(Pane *pane, Layer *layer)
Definition: PaneStack.cpp:433
void setPropertyStackMinWidth(int mw)
Definition: PaneStack.cpp:175
void currentPaneChanged(Pane *pane)
QGridLayout * layout
Definition: PaneStack.h:120
QStackedWidget * m_propertyStackStack
Definition: PaneStack.h:129
View is the base class of widgets that display one or more overlaid views of data against a horizonta...
Definition: View.h:50
Pane * m_currentPane
Definition: PaneStack.h:111
void setCurrentPane(Pane *pane)
Definition: PaneStack.cpp:393
The ViewManager manages properties that may need to be synchronised between separate Views.
Definition: ViewManager.h:73
void showPane(Pane *pane)
Definition: PaneStack.cpp:369
Pane * addPane(bool suppressPropertyBox=false)
Definition: PaneStack.cpp:71
void viewSelected(View *v)
Definition: PaneStack.cpp:504
void sizePropertyStacks()
Definition: PaneStack.cpp:527
void rightButtonMenuRequested(Pane *pane, QPoint position)
bool m_showAccessories
Definition: PaneStack.h:126
void paneInteractedWith()
Definition: PaneStack.cpp:511
std::vector< PaneRec > m_hiddenPanes
Definition: PaneStack.h:124
void paneDropAccepted(QStringList)
Definition: PaneStack.cpp:565
void currentLayerChanged(Pane *pane, Layer *layer)
Pane * insertPane(int index, bool suppressPropertyBox=false)
Definition: PaneStack.cpp:77