lbajardsilogic@0: lbajardsilogic@0: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ lbajardsilogic@0: lbajardsilogic@0: /* lbajardsilogic@0: Sonic Visualiser lbajardsilogic@0: An audio file viewer and annotation editor. lbajardsilogic@0: Centre for Digital Music, Queen Mary, University of London. lbajardsilogic@0: This file copyright 2006 Chris Cannam and QMUL. lbajardsilogic@0: lbajardsilogic@0: This program is free software; you can redistribute it and/or lbajardsilogic@0: modify it under the terms of the GNU General Public License as lbajardsilogic@0: published by the Free Software Foundation; either version 2 of the lbajardsilogic@0: License, or (at your option) any later version. See the file lbajardsilogic@0: COPYING included with this distribution for more information. lbajardsilogic@0: */ lbajardsilogic@0: lbajardsilogic@0: #ifndef _PANESTACK_H_ lbajardsilogic@0: #define _PANESTACK_H_ lbajardsilogic@0: lbajardsilogic@0: #include lbajardsilogic@0: lbajardsilogic@0: class QWidget; lbajardsilogic@0: class QLabel; lbajardsilogic@0: class QStackedWidget; lbajardsilogic@0: class QSplitter; lbajardsilogic@0: class QHBoxLayout; lbajardsilogic@0: class View; lbajardsilogic@0: class Pane; lbajardsilogic@0: class Layer; lbajardsilogic@0: class ViewManager; lbajardsilogic@0: class PropertyContainer; lbajardsilogic@0: class PropertyStack; lbajardsilogic@0: lbajardsilogic@0: class PaneStack : public QFrame lbajardsilogic@0: { lbajardsilogic@0: Q_OBJECT lbajardsilogic@0: lbajardsilogic@0: public: lbajardsilogic@0: PaneStack(QWidget *parent, ViewManager *viewManager); lbajardsilogic@0: lbajardsilogic@0: Pane *addPane(bool suppressPropertyBox = false); // I own the returned value lbajardsilogic@0: void deletePane(Pane *pane); // Deletes the pane, but _not_ its layers lbajardsilogic@0: lbajardsilogic@0: int getPaneCount() const; // Returns only count of visible panes lbajardsilogic@0: Pane *getPane(int n); // Of visible panes; I own the returned value lbajardsilogic@0: lbajardsilogic@0: void hidePane(Pane *pane); // Also removes pane from getPane/getPaneCount lbajardsilogic@0: void showPane(Pane *pane); // Returns pane to getPane/getPaneCount lbajardsilogic@0: lbajardsilogic@0: int getHiddenPaneCount() const; lbajardsilogic@0: Pane *getHiddenPane(int n); // I own the returned value lbajardsilogic@0: lbajardsilogic@0: void setCurrentPane(Pane *pane); lbajardsilogic@0: void setCurrentLayer(Pane *pane, Layer *layer); lbajardsilogic@0: Pane *getCurrentPane(); lbajardsilogic@0: lbajardsilogic@0: void setPropertyStackMinWidth(int mw); lbajardsilogic@0: lbajardsilogic@0: signals: lbajardsilogic@0: void currentPaneChanged(Pane *pane); lbajardsilogic@0: void currentLayerChanged(Pane *pane, Layer *layer); lbajardsilogic@0: void rightButtonMenuRequested(Pane *pane, QPoint position); lbajardsilogic@0: void propertyStacksResized(); lbajardsilogic@0: void contextHelpChanged(const QString &); benoitrigolleau@66: void newPaneAdded(Pane *pane); benoitrigolleau@66: void paneDeleted(Pane *pane); lbajardsilogic@0: lbajardsilogic@0: public slots: lbajardsilogic@0: void propertyContainerAdded(PropertyContainer *); lbajardsilogic@0: void propertyContainerRemoved(PropertyContainer *); lbajardsilogic@0: void propertyContainerSelected(View *client, PropertyContainer *); lbajardsilogic@0: void viewSelected(View *v); lbajardsilogic@0: void paneInteractedWith(); lbajardsilogic@0: void rightButtonMenuRequested(QPoint); lbajardsilogic@0: lbajardsilogic@0: protected: lbajardsilogic@101: lbajardsilogic@101: void resizePane(); lbajardsilogic@101: lbajardsilogic@0: Pane *m_currentPane; lbajardsilogic@0: lbajardsilogic@0: struct PaneRec lbajardsilogic@0: { lbajardsilogic@0: Pane *pane; lbajardsilogic@0: QWidget *propertyStack; lbajardsilogic@0: QLabel *currentIndicator; lbajardsilogic@0: QFrame *frame; lbajardsilogic@0: QHBoxLayout *layout; lbajardsilogic@0: }; lbajardsilogic@0: lbajardsilogic@0: std::vector m_panes; lbajardsilogic@0: std::vector m_hiddenPanes; lbajardsilogic@0: lbajardsilogic@0: QSplitter *m_splitter; lbajardsilogic@0: QStackedWidget *m_propertyStackStack; lbajardsilogic@0: lbajardsilogic@0: ViewManager *m_viewManager; // I don't own this lbajardsilogic@0: int m_propertyStackMinWidth; lbajardsilogic@0: void sizePropertyStacks(); lbajardsilogic@0: lbajardsilogic@0: }; lbajardsilogic@0: lbajardsilogic@0: #endif lbajardsilogic@0: