annotate view/PaneStack.h @ 183:5f86ae638b04

* Omit translucent blue fill for selection rectangles that are superimposed over layers that use colours for meaningful purposes such as the spectrogram (CHARM change request)
author Chris Cannam
date Fri, 24 Nov 2006 16:56:15 +0000
parents 42118892f428
children 5b7472db612b
rev   line source
Chris@127 1
Chris@127 2 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@127 3
Chris@127 4 /*
Chris@127 5 Sonic Visualiser
Chris@127 6 An audio file viewer and annotation editor.
Chris@127 7 Centre for Digital Music, Queen Mary, University of London.
Chris@182 8 This file copyright 2006 Chris Cannam and QMUL.
Chris@127 9
Chris@127 10 This program is free software; you can redistribute it and/or
Chris@127 11 modify it under the terms of the GNU General Public License as
Chris@127 12 published by the Free Software Foundation; either version 2 of the
Chris@127 13 License, or (at your option) any later version. See the file
Chris@127 14 COPYING included with this distribution for more information.
Chris@127 15 */
Chris@127 16
Chris@127 17 #ifndef _PANESTACK_H_
Chris@127 18 #define _PANESTACK_H_
Chris@127 19
Chris@127 20 #include <QFrame>
Chris@127 21
Chris@127 22 class QWidget;
Chris@127 23 class QLabel;
Chris@127 24 class QStackedWidget;
Chris@127 25 class QSplitter;
Chris@127 26 class QHBoxLayout;
Chris@127 27 class View;
Chris@127 28 class Pane;
Chris@127 29 class Layer;
Chris@127 30 class ViewManager;
Chris@127 31 class PropertyContainer;
Chris@127 32 class PropertyStack;
Chris@127 33
Chris@127 34 class PaneStack : public QFrame
Chris@127 35 {
Chris@127 36 Q_OBJECT
Chris@127 37
Chris@127 38 public:
Chris@127 39 PaneStack(QWidget *parent, ViewManager *viewManager);
Chris@127 40
Chris@127 41 Pane *addPane(bool suppressPropertyBox = false); // I own the returned value
Chris@127 42 void deletePane(Pane *pane); // Deletes the pane, but _not_ its layers
Chris@127 43
Chris@127 44 int getPaneCount() const; // Returns only count of visible panes
Chris@127 45 Pane *getPane(int n); // Of visible panes; I own the returned value
Chris@127 46
Chris@127 47 void hidePane(Pane *pane); // Also removes pane from getPane/getPaneCount
Chris@127 48 void showPane(Pane *pane); // Returns pane to getPane/getPaneCount
Chris@127 49
Chris@127 50 int getHiddenPaneCount() const;
Chris@127 51 Pane *getHiddenPane(int n); // I own the returned value
Chris@127 52
Chris@127 53 void setCurrentPane(Pane *pane);
Chris@127 54 void setCurrentLayer(Pane *pane, Layer *layer);
Chris@127 55 Pane *getCurrentPane();
Chris@127 56
Chris@127 57 enum LayoutStyle {
Chris@179 58 NoPropertyStacks = 0,
Chris@127 59 SinglePropertyStackLayout = 1,
Chris@127 60 PropertyStackPerPaneLayout = 2
Chris@127 61 };
Chris@127 62
Chris@127 63 LayoutStyle getLayoutStyle() const { return m_layoutStyle; }
Chris@127 64 void setLayoutStyle(LayoutStyle style);
Chris@127 65
Chris@127 66 signals:
Chris@127 67 void currentPaneChanged(Pane *pane);
Chris@127 68 void currentLayerChanged(Pane *pane, Layer *layer);
Chris@127 69 void rightButtonMenuRequested(Pane *pane, QPoint position);
Chris@180 70 void propertyStacksResized();
Chris@127 71
Chris@127 72 public slots:
Chris@127 73 void propertyContainerAdded(PropertyContainer *);
Chris@127 74 void propertyContainerRemoved(PropertyContainer *);
Chris@127 75 void propertyContainerSelected(View *client, PropertyContainer *);
Chris@127 76 void paneInteractedWith();
Chris@127 77 void rightButtonMenuRequested(QPoint);
Chris@127 78
Chris@127 79 protected:
Chris@127 80 Pane *m_currentPane;
Chris@127 81
Chris@127 82 struct PaneRec
Chris@127 83 {
Chris@127 84 Pane *pane;
Chris@127 85 QWidget *propertyStack;
Chris@127 86 QLabel *currentIndicator;
Chris@127 87 QFrame *frame;
Chris@127 88 QHBoxLayout *layout;
Chris@127 89 };
Chris@127 90
Chris@127 91 std::vector<PaneRec> m_panes;
Chris@127 92 std::vector<PaneRec> m_hiddenPanes;
Chris@127 93
Chris@127 94 QSplitter *m_splitter;
Chris@127 95 QStackedWidget *m_propertyStackStack;
Chris@127 96
Chris@127 97 ViewManager *m_viewManager; // I don't own this
Chris@127 98 void sizePropertyStacks();
Chris@127 99
Chris@127 100 LayoutStyle m_layoutStyle;
Chris@127 101 };
Chris@127 102
Chris@127 103 #endif
Chris@127 104