annotate view/Pane.h @ 150:b1a3a9400284

* Add a bit of resistance to pane dragging so as to make it harder to inadvertently drag in the other axis from the one you intended
author Chris Cannam
date Fri, 22 Sep 2006 16:46:10 +0000
parents a859b87162ca
children d0b95a8cac96
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@133 30 class Thumbwheel;
Chris@127 31
Chris@127 32 class Pane : public View
Chris@127 33 {
Chris@127 34 Q_OBJECT
Chris@127 35
Chris@127 36 public:
Chris@127 37 Pane(QWidget *parent = 0);
Chris@127 38 virtual QString getPropertyContainerIconName() const { return "pane"; }
Chris@127 39
Chris@127 40 virtual bool shouldIlluminateLocalFeatures(const Layer *layer,
Chris@127 41 QPoint &pos) const;
Chris@127 42 virtual bool shouldIlluminateLocalSelection(QPoint &pos,
Chris@127 43 bool &closeToLeft,
Chris@127 44 bool &closeToRight) const;
Chris@127 45
Chris@127 46 void setCentreLineVisible(bool visible);
Chris@127 47 bool getCentreLineVisible() const { return m_centreLineVisible; }
Chris@127 48
Chris@127 49 virtual QString toXmlString(QString indent = "",
Chris@127 50 QString extraAttributes = "") const;
Chris@127 51
Chris@127 52 signals:
Chris@127 53 void paneInteractedWith();
Chris@127 54 void rightButtonMenuRequested(QPoint position);
Chris@127 55
Chris@127 56 public slots:
Chris@127 57 virtual void toolModeChanged();
Chris@133 58 virtual void zoomWheelsEnabledChanged();
Chris@133 59 virtual void zoomLevelChanged();
Chris@127 60
Chris@132 61 virtual void horizontalThumbwheelMoved(int value);
Chris@132 62 virtual void verticalThumbwheelMoved(int value);
Chris@133 63 virtual void verticalZoomChanged();
Chris@133 64
Chris@133 65 virtual void propertyContainerSelected(View *, PropertyContainer *pc);
Chris@132 66
Chris@127 67 protected:
Chris@127 68 virtual void paintEvent(QPaintEvent *e);
Chris@127 69 virtual void mousePressEvent(QMouseEvent *e);
Chris@127 70 virtual void mouseReleaseEvent(QMouseEvent *e);
Chris@127 71 virtual void mouseMoveEvent(QMouseEvent *e);
Chris@127 72 virtual void mouseDoubleClickEvent(QMouseEvent *e);
Chris@127 73 virtual void leaveEvent(QEvent *e);
Chris@127 74 virtual void wheelEvent(QWheelEvent *e);
Chris@133 75 virtual void resizeEvent(QResizeEvent *e);
Chris@127 76
Chris@127 77 Selection getSelectionAt(int x, bool &closeToLeft, bool &closeToRight) const;
Chris@127 78
Chris@127 79 bool editSelectionStart(QMouseEvent *e);
Chris@127 80 bool editSelectionDrag(QMouseEvent *e);
Chris@127 81 bool editSelectionEnd(QMouseEvent *e);
Chris@127 82 bool selectionIsBeingEdited() const;
Chris@127 83
Chris@133 84 void updateHeadsUpDisplay();
Chris@133 85
Chris@127 86 bool m_identifyFeatures;
Chris@127 87 QPoint m_identifyPoint;
Chris@127 88 QPoint m_clickPos;
Chris@127 89 QPoint m_mousePos;
Chris@127 90 bool m_clickedInRange;
Chris@127 91 bool m_shiftPressed;
Chris@127 92 bool m_ctrlPressed;
Chris@127 93 bool m_navigating;
Chris@127 94 bool m_resizing;
Chris@127 95 size_t m_dragCentreFrame;
Chris@136 96 float m_dragStartMinValue;
Chris@127 97 bool m_centreLineVisible;
Chris@127 98 size_t m_selectionStartFrame;
Chris@127 99 Selection m_editingSelection;
Chris@127 100 int m_editingSelectionEdge;
Chris@133 101
Chris@150 102 enum DragMode {
Chris@150 103 UnresolvedDrag,
Chris@150 104 VerticalDrag,
Chris@150 105 HorizontalDrag,
Chris@150 106 FreeDrag
Chris@150 107 };
Chris@150 108 DragMode m_dragMode;
Chris@150 109
Chris@133 110 QWidget *m_headsUpDisplay;
Chris@133 111 Thumbwheel *m_hthumb;
Chris@133 112 Thumbwheel *m_vthumb;
Chris@127 113 };
Chris@127 114
Chris@127 115 #endif
Chris@127 116