annotate view/PaneStack.h @ 855:57efeb75880d

Simplify some logic where loop was used with an unconditional "break" that meant it could only happen once (from coverity scan)
author Chris Cannam
date Wed, 03 Sep 2014 12:05:45 +0100
parents 4c8ca536b54f
children 99373ca20caf 4a578a360011
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@712 71
Chris@712 72 void setShowPaneAccessories(bool show); // current indicator, close button
Chris@235 73
Chris@320 74 void sizePanesEqually();
Chris@320 75
Chris@127 76 signals:
Chris@127 77 void currentPaneChanged(Pane *pane);
Chris@127 78 void currentLayerChanged(Pane *pane, Layer *layer);
Chris@127 79 void rightButtonMenuRequested(Pane *pane, QPoint position);
Chris@363 80 void propertyStacksResized(int width);
Chris@180 81 void propertyStacksResized();
Chris@189 82 void contextHelpChanged(const QString &);
Chris@127 83
Chris@271 84 void paneAdded(Pane *pane);
Chris@271 85 void paneAdded();
Chris@319 86 void paneHidden(Pane *pane);
Chris@319 87 void paneHidden();
Chris@271 88 void paneAboutToBeDeleted(Pane *pane);
Chris@271 89 void paneDeleted();
Chris@271 90
Chris@312 91 void dropAccepted(Pane *pane, QStringList uriList);
Chris@312 92 void dropAccepted(Pane *pane, QString text);
Chris@312 93
Chris@323 94 void paneDeleteButtonClicked(Pane *pane);
Chris@323 95
Chris@806 96 void doubleClickSelectInvoked(int frame);
Chris@716 97
Chris@127 98 public slots:
Chris@127 99 void propertyContainerAdded(PropertyContainer *);
Chris@127 100 void propertyContainerRemoved(PropertyContainer *);
Chris@127 101 void propertyContainerSelected(View *client, PropertyContainer *);
Chris@190 102 void viewSelected(View *v);
Chris@127 103 void paneInteractedWith();
Chris@127 104 void rightButtonMenuRequested(QPoint);
Chris@312 105 void paneDropAccepted(QStringList);
Chris@312 106 void paneDropAccepted(QString);
Chris@323 107 void paneDeleteButtonClicked();
Chris@500 108 void indicatorClicked();
Chris@127 109
Chris@127 110 protected:
Chris@127 111 Pane *m_currentPane;
Chris@127 112
Chris@127 113 struct PaneRec
Chris@127 114 {
Chris@127 115 Pane *pane;
Chris@127 116 QWidget *propertyStack;
Chris@605 117 QPushButton *xButton;
Chris@127 118 QLabel *currentIndicator;
Chris@127 119 QFrame *frame;
Chris@495 120 QGridLayout *layout;
Chris@127 121 };
Chris@127 122
Chris@127 123 std::vector<PaneRec> m_panes;
Chris@127 124 std::vector<PaneRec> m_hiddenPanes;
Chris@127 125
Chris@712 126 bool m_showAccessories;
Chris@712 127
Chris@127 128 QSplitter *m_splitter;
Chris@127 129 QStackedWidget *m_propertyStackStack;
Chris@127 130
Chris@127 131 ViewManager *m_viewManager; // I don't own this
Chris@235 132 int m_propertyStackMinWidth;
Chris@127 133 void sizePropertyStacks();
Chris@127 134
Chris@605 135 void showOrHidePaneAccessories();
Chris@605 136
Chris@127 137 LayoutStyle m_layoutStyle;
Chris@127 138 };
Chris@127 139
Chris@127 140 #endif
Chris@127 141