annotate view/Pane.h @ 132:5d3a483856ff

* Add Thumbwheel widget for all our zooming needs * Use QSettings to save/restore window size and position -- precursor to switching our preferences to QSettings as well -- wish I'd noticed it sooner * Only suspend writes (not reads from the underlying cache objects) from the fft caches when repainting the spectrogram -- performance should now be significantly better
author Chris Cannam
date Thu, 03 Aug 2006 15:40:11 +0000
parents 33929e0c3c6b
children 9e6b3e239b9d
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@127 8 This file copyright 2006 Chris Cannam.
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 _PANE_H_
Chris@127 18 #define _PANE_H_
Chris@127 19
Chris@127 20 #include <QFrame>
Chris@127 21 #include <QPoint>
Chris@127 22
Chris@127 23 #include "base/ZoomConstraint.h"
Chris@128 24 #include "View.h"
Chris@127 25 #include "base/Selection.h"
Chris@127 26
Chris@127 27 class QWidget;
Chris@127 28 class QPaintEvent;
Chris@127 29 class Layer;
Chris@127 30
Chris@127 31 class Pane : public View
Chris@127 32 {
Chris@127 33 Q_OBJECT
Chris@127 34
Chris@127 35 public:
Chris@127 36 Pane(QWidget *parent = 0);
Chris@127 37 virtual QString getPropertyContainerIconName() const { return "pane"; }
Chris@127 38
Chris@127 39 virtual bool shouldIlluminateLocalFeatures(const Layer *layer,
Chris@127 40 QPoint &pos) const;
Chris@127 41 virtual bool shouldIlluminateLocalSelection(QPoint &pos,
Chris@127 42 bool &closeToLeft,
Chris@127 43 bool &closeToRight) const;
Chris@127 44
Chris@127 45 void setCentreLineVisible(bool visible);
Chris@127 46 bool getCentreLineVisible() const { return m_centreLineVisible; }
Chris@127 47
Chris@127 48 virtual QString toXmlString(QString indent = "",
Chris@127 49 QString extraAttributes = "") const;
Chris@127 50
Chris@127 51 signals:
Chris@127 52 void paneInteractedWith();
Chris@127 53 void rightButtonMenuRequested(QPoint position);
Chris@127 54
Chris@127 55 public slots:
Chris@127 56 virtual void toolModeChanged();
Chris@127 57
Chris@132 58 virtual void horizontalThumbwheelMoved(int value);
Chris@132 59 virtual void verticalThumbwheelMoved(int value);
Chris@132 60
Chris@127 61 protected:
Chris@127 62 virtual void paintEvent(QPaintEvent *e);
Chris@127 63 virtual void mousePressEvent(QMouseEvent *e);
Chris@127 64 virtual void mouseReleaseEvent(QMouseEvent *e);
Chris@127 65 virtual void mouseMoveEvent(QMouseEvent *e);
Chris@127 66 virtual void mouseDoubleClickEvent(QMouseEvent *e);
Chris@127 67 virtual void leaveEvent(QEvent *e);
Chris@127 68 virtual void wheelEvent(QWheelEvent *e);
Chris@127 69
Chris@127 70 Selection getSelectionAt(int x, bool &closeToLeft, bool &closeToRight) const;
Chris@127 71
Chris@127 72 bool editSelectionStart(QMouseEvent *e);
Chris@127 73 bool editSelectionDrag(QMouseEvent *e);
Chris@127 74 bool editSelectionEnd(QMouseEvent *e);
Chris@127 75 bool selectionIsBeingEdited() const;
Chris@127 76
Chris@127 77 bool m_identifyFeatures;
Chris@127 78 QPoint m_identifyPoint;
Chris@127 79 QPoint m_clickPos;
Chris@127 80 QPoint m_mousePos;
Chris@127 81 bool m_clickedInRange;
Chris@127 82 bool m_shiftPressed;
Chris@127 83 bool m_ctrlPressed;
Chris@127 84 bool m_navigating;
Chris@127 85 bool m_resizing;
Chris@127 86 size_t m_dragCentreFrame;
Chris@127 87 bool m_centreLineVisible;
Chris@127 88 size_t m_selectionStartFrame;
Chris@127 89 Selection m_editingSelection;
Chris@127 90 int m_editingSelectionEdge;
Chris@127 91 };
Chris@127 92
Chris@127 93 #endif
Chris@127 94