annotate view/PaneStack.h @ 640:c6d705bf1672

Merge from branch "qt5". This revision actually builds with Qt4 (late releases) or Qt5, though it will warn on configure with Qt4.
author Chris Cannam
date Tue, 14 May 2013 12:36:43 +0100
parents a7a89ebe4b02
children 833cd1b8014f
rev   line source
Chris@127 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@127 2
Chris@127 3 /*
Chris@127 4 Sonic Visualiser
Chris@127 5 An audio file viewer and annotation editor.
Chris@127 6 Centre for Digital Music, Queen Mary, University of London.
Chris@182 7 This file copyright 2006 Chris Cannam and QMUL.
Chris@127 8
Chris@127 9 This program is free software; you can redistribute it and/or
Chris@127 10 modify it under the terms of the GNU General Public License as
Chris@127 11 published by the Free Software Foundation; either version 2 of the
Chris@127 12 License, or (at your option) any later version. See the file
Chris@127 13 COPYING included with this distribution for more information.
Chris@127 14 */
Chris@127 15
Chris@127 16 #ifndef _PANESTACK_H_
Chris@127 17 #define _PANESTACK_H_
Chris@127 18
Chris@127 19 #include <QFrame>
Chris@127 20
Chris@323 21 #include <map>
Chris@323 22
Chris@127 23 class QWidget;
Chris@127 24 class QLabel;
Chris@127 25 class QStackedWidget;
Chris@127 26 class QSplitter;
Chris@495 27 class QGridLayout;
Chris@605 28 class QPushButton;
Chris@127 29 class View;
Chris@127 30 class Pane;
Chris@127 31 class Layer;
Chris@127 32 class ViewManager;
Chris@127 33 class PropertyContainer;
Chris@127 34 class PropertyStack;
Chris@127 35
Chris@127 36 class PaneStack : public QFrame
Chris@127 37 {
Chris@127 38 Q_OBJECT
Chris@127 39
Chris@127 40 public:
Chris@127 41 PaneStack(QWidget *parent, ViewManager *viewManager);
Chris@127 42
Chris@127 43 Pane *addPane(bool suppressPropertyBox = false); // I own the returned value
Chris@539 44 Pane *insertPane(int index, bool suppressPropertyBox = false); // I own the returned value
Chris@127 45 void deletePane(Pane *pane); // Deletes the pane, but _not_ its layers
Chris@127 46
Chris@127 47 int getPaneCount() const; // Returns only count of visible panes
Chris@127 48 Pane *getPane(int n); // Of visible panes; I own the returned value
Chris@277 49 int getPaneIndex(Pane *pane); // so getPane(index)==pane; -1 if absent
Chris@127 50
Chris@127 51 void hidePane(Pane *pane); // Also removes pane from getPane/getPaneCount
Chris@127 52 void showPane(Pane *pane); // Returns pane to getPane/getPaneCount
Chris@127 53
Chris@127 54 int getHiddenPaneCount() const;
Chris@127 55 Pane *getHiddenPane(int n); // I own the returned value
Chris@127 56
Chris@127 57 void setCurrentPane(Pane *pane);
Chris@127 58 void setCurrentLayer(Pane *pane, Layer *layer);
Chris@127 59 Pane *getCurrentPane();
Chris@127 60
Chris@127 61 enum LayoutStyle {
Chris@179 62 NoPropertyStacks = 0,
Chris@127 63 SinglePropertyStackLayout = 1,
Chris@127 64 PropertyStackPerPaneLayout = 2
Chris@127 65 };
Chris@127 66
Chris@127 67 LayoutStyle getLayoutStyle() const { return m_layoutStyle; }
Chris@127 68 void setLayoutStyle(LayoutStyle style);
Chris@127 69
Chris@235 70 void setPropertyStackMinWidth(int mw);
Chris@235 71
Chris@320 72 void sizePanesEqually();
Chris@320 73
Chris@127 74 signals:
Chris@127 75 void currentPaneChanged(Pane *pane);
Chris@127 76 void currentLayerChanged(Pane *pane, Layer *layer);
Chris@127 77 void rightButtonMenuRequested(Pane *pane, QPoint position);
Chris@363 78 void propertyStacksResized(int width);
Chris@180 79 void propertyStacksResized();
Chris@189 80 void contextHelpChanged(const QString &);
Chris@127 81
Chris@271 82 void paneAdded(Pane *pane);
Chris@271 83 void paneAdded();
Chris@319 84 void paneHidden(Pane *pane);
Chris@319 85 void paneHidden();
Chris@271 86 void paneAboutToBeDeleted(Pane *pane);
Chris@271 87 void paneDeleted();
Chris@271 88
Chris@312 89 void dropAccepted(Pane *pane, QStringList uriList);
Chris@312 90 void dropAccepted(Pane *pane, QString text);
Chris@312 91
Chris@323 92 void paneDeleteButtonClicked(Pane *pane);
Chris@323 93
Chris@127 94 public slots:
Chris@127 95 void propertyContainerAdded(PropertyContainer *);
Chris@127 96 void propertyContainerRemoved(PropertyContainer *);
Chris@127 97 void propertyContainerSelected(View *client, PropertyContainer *);
Chris@190 98 void viewSelected(View *v);
Chris@127 99 void paneInteractedWith();
Chris@127 100 void rightButtonMenuRequested(QPoint);
Chris@312 101 void paneDropAccepted(QStringList);
Chris@312 102 void paneDropAccepted(QString);
Chris@323 103 void paneDeleteButtonClicked();
Chris@500 104 void indicatorClicked();
Chris@127 105
Chris@127 106 protected:
Chris@127 107 Pane *m_currentPane;
Chris@127 108
Chris@127 109 struct PaneRec
Chris@127 110 {
Chris@127 111 Pane *pane;
Chris@127 112 QWidget *propertyStack;
Chris@605 113 QPushButton *xButton;
Chris@127 114 QLabel *currentIndicator;
Chris@127 115 QFrame *frame;
Chris@495 116 QGridLayout *layout;
Chris@127 117 };
Chris@127 118
Chris@127 119 std::vector<PaneRec> m_panes;
Chris@127 120 std::vector<PaneRec> m_hiddenPanes;
Chris@127 121
Chris@127 122 QSplitter *m_splitter;
Chris@127 123 QStackedWidget *m_propertyStackStack;
Chris@127 124
Chris@127 125 ViewManager *m_viewManager; // I don't own this
Chris@235 126 int m_propertyStackMinWidth;
Chris@127 127 void sizePropertyStacks();
Chris@127 128
Chris@605 129 void showOrHidePaneAccessories();
Chris@605 130
Chris@127 131 LayoutStyle m_layoutStyle;
Chris@127 132 };
Chris@127 133
Chris@127 134 #endif
Chris@127 135