svgui  1.9
Pane.h
Go to the documentation of this file.
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2 
3 /*
4  Sonic Visualiser
5  An audio file viewer and annotation editor.
6  Centre for Digital Music, Queen Mary, University of London.
7  This file copyright 2006 Chris Cannam and QMUL.
8 
9  This program is free software; you can redistribute it and/or
10  modify it under the terms of the GNU General Public License as
11  published by the Free Software Foundation; either version 2 of the
12  License, or (at your option) any later version. See the file
13  COPYING included with this distribution for more information.
14 */
15 
16 #ifndef _PANE_H_
17 #define _PANE_H_
18 
19 #include <QFrame>
20 #include <QPoint>
21 
22 #include "base/ZoomConstraint.h"
23 #include "View.h"
24 #include "base/Selection.h"
25 
26 class QWidget;
27 class QPaintEvent;
28 class Layer;
29 class Thumbwheel;
30 class Panner;
32 class KeyReference;
33 
34 class Pane : public View
35 {
36  Q_OBJECT
37 
38 public:
39  Pane(QWidget *parent = 0);
40  virtual QString getPropertyContainerIconName() const { return "pane"; }
41 
42  virtual bool shouldIlluminateLocalFeatures(const Layer *layer,
43  QPoint &pos) const;
44  virtual bool shouldIlluminateLocalSelection(QPoint &pos,
45  bool &closeToLeft,
46  bool &closeToRight) const;
47 
48  void setCentreLineVisible(bool visible);
49  bool getCentreLineVisible() const { return m_centreLineVisible; }
50 
51  virtual int getFirstVisibleFrame() const;
52 
53  virtual int getVerticalScaleWidth() const;
54 
55  virtual QImage *toNewImage(int f0, int f1);
56  virtual QImage *toNewImage() { return View::toNewImage(); }
57  virtual QSize getImageSize(int f0, int f1);
58  virtual QSize getImageSize() { return View::getImageSize(); }
59 
60  virtual void toXml(QTextStream &stream, QString indent = "",
61  QString extraAttributes = "") const;
62 
63  static void registerShortcuts(KeyReference &kr);
64 
65  enum PaneType {
66  Normal = 0,
67  TonyMain = 1,
69  };
70 
71 signals:
72  void paneInteractedWith();
73  void rightButtonMenuRequested(QPoint position);
74  void dropAccepted(QStringList uriList);
75  void dropAccepted(QString text);
76  void doubleClickSelectInvoked(int frame);
77  void regionOutlined(QRect rect);
78 
79 public slots:
80  virtual void toolModeChanged();
81  virtual void zoomWheelsEnabledChanged();
82  virtual void viewZoomLevelChanged(View *v, int z, bool locked);
83  virtual void modelAlignmentCompletionChanged();
84 
85  virtual void horizontalThumbwheelMoved(int value);
86  virtual void verticalThumbwheelMoved(int value);
87  virtual void verticalZoomChanged();
88  virtual void verticalPannerMoved(float x, float y, float w, float h);
89  virtual void editVerticalPannerExtents();
90 
91  virtual void layerParametersChanged();
92 
93  virtual void propertyContainerSelected(View *, PropertyContainer *pc);
94 
95  void zoomToRegion(QRect r);
96 
97  void mouseEnteredWidget();
98  void mouseLeftWidget();
99 
100 protected slots:
102 
103 protected:
104  virtual void paintEvent(QPaintEvent *e);
105  virtual void mousePressEvent(QMouseEvent *e);
106  virtual void mouseReleaseEvent(QMouseEvent *e);
107  virtual void mouseMoveEvent(QMouseEvent *e);
108  virtual void mouseDoubleClickEvent(QMouseEvent *e);
109  virtual void enterEvent(QEvent *e);
110  virtual void leaveEvent(QEvent *e);
111  virtual void wheelEvent(QWheelEvent *e);
112  virtual void resizeEvent(QResizeEvent *e);
113  virtual void dragEnterEvent(QDragEnterEvent *e);
114  virtual void dropEvent(QDropEvent *e);
115 
116  void wheelVertical(int sign, Qt::KeyboardModifiers);
117  void wheelHorizontal(int sign, Qt::KeyboardModifiers);
118  void wheelHorizontalFine(int pixels, Qt::KeyboardModifiers);
119 
120  void drawVerticalScale(QRect r, Layer *, QPainter &);
121  void drawFeatureDescription(Layer *, QPainter &);
122  void drawCentreLine(int, QPainter &, bool omitLine);
123  void drawModelTimeExtents(QRect, QPainter &, const Model *);
124  void drawDurationAndRate(QRect, const Model *, int, QPainter &);
125  void drawWorkTitle(QRect, QPainter &, const Model *);
126  void drawLayerNames(QRect, QPainter &);
127  void drawEditingSelection(QPainter &);
128  void drawAlignmentStatus(QRect, QPainter &, const Model *, bool down);
129 
130  virtual bool render(QPainter &paint, int x0, int f0, int f1);
131 
132  Selection getSelectionAt(int x, bool &closeToLeft, bool &closeToRight) const;
133 
134  bool editSelectionStart(QMouseEvent *e);
135  bool editSelectionDrag(QMouseEvent *e);
136  bool editSelectionEnd(QMouseEvent *e);
137  bool selectionIsBeingEdited() const;
138 
139  void updateHeadsUpDisplay();
140  void updateVerticalPanner();
141 
143  bool getTopLayerDisplayExtents(float &valueMin, float &valueMax,
144  float &displayMin, float &displayMax,
145  QString *unit = 0);
146  bool setTopLayerDisplayExtents(float displayMin, float displayMax);
147 
148  void dragTopLayer(QMouseEvent *e);
149  void dragExtendSelection(QMouseEvent *e);
150  void updateContextHelp(const QPoint *pos);
151  void edgeScrollMaybe(int x);
152 
154 
155  void schedulePlaybackFrameMove(int frame);
156 
159  QPoint m_clickPos;
160  QPoint m_mousePos;
165 
168  bool m_editing;
176  mutable int m_scaleWidth;
177 
179 
180  enum DragMode {
185  };
187 
188  DragMode updateDragMode(DragMode currentMode,
189  QPoint origin,
190  QPoint currentPoint,
191  bool canMoveHorizontal,
192  bool canMoveVertical,
193  bool resistHorizontal,
194  bool resistVertical);
195 
201 
203 
206 
207  static QCursor *m_measureCursor1;
208  static QCursor *m_measureCursor2;
209 };
210 
211 #endif
212 
static QCursor * m_measureCursor1
!! ugh
Definition: Pane.h:207
void drawFeatureDescription(Layer *, QPainter &)
Definition: Pane.cpp:664
static void registerShortcuts(KeyReference &kr)
Definition: Pane.cpp:1252
bool m_resizing
Definition: Pane.h:167
Very trivial enhancement to QPushButton to make it emit signals when the mouse enters and leaves (for...
Definition: Pane.h:34
virtual QImage * toNewImage()
Definition: Pane.h:56
bool m_playbackFrameMoveScheduled
Definition: Pane.h:204
virtual int getFirstVisibleFrame() const
Definition: Pane.cpp:1178
bool m_identifyFeatures
Definition: Pane.h:157
The base class for visual representations of the data found in a Model.
Definition: Layer.h:52
bool m_clickedInRange
Definition: Pane.h:161
virtual void wheelEvent(QWheelEvent *e)
Definition: Pane.cpp:2245
virtual void layerParametersChanged()
Definition: Pane.cpp:2495
NotifyingPushButton * m_reset
Definition: Pane.h:200
void zoomToRegion(QRect r)
Definition: Pane.cpp:1848
virtual void enterEvent(QEvent *e)
Definition: Pane.cpp:2223
virtual void mouseMoveEvent(QMouseEvent *e)
Definition: Pane.cpp:1582
virtual int getVerticalScaleWidth() const
Definition: Pane.cpp:552
void drawLayerNames(QRect, QPainter &)
Definition: Pane.cpp:910
virtual void resizeEvent(QResizeEvent *e)
Definition: Pane.cpp:2239
static QCursor * m_measureCursor2
Definition: Pane.h:208
virtual bool render(QPainter &paint, int x0, int f0, int f1)
Definition: Pane.cpp:1089
virtual void dragEnterEvent(QDragEnterEvent *e)
Definition: Pane.cpp:2502
Selection m_editingSelection
Definition: Pane.h:174
bool setTopLayerDisplayExtents(float displayMin, float displayMax)
Definition: Pane.cpp:1244
void edgeScrollMaybe(int x)
Definition: Pane.cpp:2122
virtual void mouseReleaseEvent(QMouseEvent *e)
Definition: Pane.cpp:1454
DragMode
Definition: Pane.h:180
void mouseEnteredWidget()
Definition: Pane.cpp:2846
void dragTopLayer(QMouseEvent *e)
Definition: Pane.cpp:1910
bool getCentreLineVisible() const
Definition: Pane.h:49
int m_dragCentreFrame
Definition: Pane.h:170
void dropAccepted(QStringList uriList)
bool m_editing
Definition: Pane.h:168
int m_selectionStartFrame
Definition: Pane.h:173
virtual QImage * toNewImage()
Definition: View.cpp:2441
int m_editingSelectionEdge
Definition: Pane.h:175
bool m_navigating
Definition: Pane.h:166
virtual void propertyContainerSelected(View *, PropertyContainer *pc)
Definition: Pane.cpp:2712
void drawVerticalScale(QRect r, Layer *, QPainter &)
Definition: Pane.cpp:559
PaneType
Definition: Pane.h:65
void doubleClickSelectInvoked(int frame)
Selection getSelectionAt(int x, bool &closeToLeft, bool &closeToRight) const
Definition: Pane.cpp:1187
virtual void viewZoomLevelChanged(View *v, int z, bool locked)
Definition: Pane.cpp:2693
Definition: Panner.h:21
virtual void mouseDoubleClickEvent(QMouseEvent *e)
Definition: Pane.cpp:2150
virtual void mousePressEvent(QMouseEvent *e)
Definition: Pane.cpp:1289
Thumbwheel * m_hthumb
Definition: Pane.h:198
void drawEditingSelection(QPainter &)
Definition: Pane.cpp:968
void regionOutlined(QRect rect)
virtual void horizontalThumbwheelMoved(int value)
Definition: Pane.cpp:2385
virtual QString getPropertyContainerIconName() const
Definition: Pane.h:40
void paneInteractedWith()
QPoint m_identifyPoint
Definition: Pane.h:158
virtual void toolModeChanged()
Definition: Pane.cpp:2632
virtual bool shouldIlluminateLocalSelection(QPoint &pos, bool &closeToLeft, bool &closeToRight) const
Definition: Pane.cpp:361
virtual void leaveEvent(QEvent *e)
Definition: Pane.cpp:2229
virtual QSize getImageSize()
Definition: View.cpp:2469
virtual void paintEvent(QPaintEvent *e)
Definition: Pane.cpp:406
float m_dragStartMinValue
Definition: Pane.h:171
virtual void editVerticalPannerExtents()
Definition: Pane.cpp:2470
Layer * getTopFlexiNoteLayer()
Definition: Pane.cpp:1277
bool editSelectionDrag(QMouseEvent *e)
Definition: Pane.cpp:2571
void playbackScheduleTimerElapsed()
Definition: Pane.cpp:1445
Thumbwheel * m_vthumb
Definition: Pane.h:199
bool editSelectionStart(QMouseEvent *e)
Definition: Pane.cpp:2553
bool m_centreLineVisible
Definition: Pane.h:172
void updateVerticalPanner()
Definition: Pane.cpp:302
void wheelVertical(int sign, Qt::KeyboardModifiers)
Definition: Pane.cpp:2305
bool getTopLayerDisplayExtents(float &valueMin, float &valueMax, float &displayMin, float &displayMax, QString *unit=0)
Definition: Pane.cpp:1229
void mouseLeftWidget()
Definition: Pane.cpp:2863
bool selectionIsBeingEdited() const
Definition: Pane.cpp:387
void rightButtonMenuRequested(QPoint position)
bool canTopLayerMoveVertical()
Definition: Pane.cpp:1220
virtual void verticalZoomChanged()
Definition: Pane.cpp:2739
virtual QSize getImageSize()
Definition: Pane.h:58
QWidget * m_headsUpDisplay
Definition: Pane.h:196
bool m_ctrlPressed
Definition: Pane.h:163
void drawAlignmentStatus(QRect, QPainter &, const Model *, bool down)
Definition: Pane.cpp:818
QPoint m_mousePos
Definition: Pane.h:160
bool editSelectionEnd(QMouseEvent *e)
Definition: Pane.cpp:2580
void schedulePlaybackFrameMove(int frame)
Definition: Pane.cpp:1436
void drawModelTimeExtents(QRect, QPainter &, const Model *)
Definition: Pane.cpp:787
void updateHeadsUpDisplay()
Definition: Pane.cpp:104
virtual bool shouldIlluminateLocalFeatures(const Layer *layer, QPoint &pos) const
Definition: Pane.cpp:337
int m_playbackFrameMoveTo
Definition: Pane.h:205
virtual void modelAlignmentCompletionChanged()
Definition: Pane.cpp:871
void wheelHorizontal(int sign, Qt::KeyboardModifiers)
Definition: Pane.cpp:2352
View is the base class of widgets that display one or more overlaid views of data against a horizonta...
Definition: View.h:50
void wheelHorizontalFine(int pixels, Qt::KeyboardModifiers)
Definition: Pane.cpp:2362
void drawCentreLine(int, QPainter &, bool omitLine)
Definition: Pane.cpp:717
virtual void verticalThumbwheelMoved(int value)
Definition: Pane.cpp:2437
virtual void verticalPannerMoved(float x, float y, float w, float h)
Definition: Pane.cpp:2457
virtual void dropEvent(QDropEvent *e)
Definition: Pane.cpp:2523
bool m_releasing
Definition: Pane.h:169
bool m_shiftPressed
Definition: Pane.h:162
DragMode updateDragMode(DragMode currentMode, QPoint origin, QPoint currentPoint, bool canMoveHorizontal, bool canMoveVertical, bool resistHorizontal, bool resistVertical)
Definition: Pane.cpp:2014
virtual void toXml(QTextStream &stream, QString indent="", QString extraAttributes="") const
Definition: Pane.cpp:2869
Pane(QWidget *parent=0)
Definition: Pane.cpp:68
void updateContextHelp(const QPoint *pos)
Definition: Pane.cpp:2754
virtual void zoomWheelsEnabledChanged()
Definition: Pane.cpp:2686
void dragExtendSelection(QMouseEvent *e)
Definition: Pane.cpp:2073
Panner * m_vpan
Definition: Pane.h:197
int m_scaleWidth
Definition: Pane.h:176
void drawWorkTitle(QRect, QPainter &, const Model *)
Definition: Pane.cpp:878
int m_pendingWheelAngle
Definition: Pane.h:178
bool m_altPressed
Definition: Pane.h:164
bool m_mouseInWidget
Definition: Pane.h:202
QPoint m_clickPos
Definition: Pane.h:159
void setCentreLineVisible(bool visible)
Definition: Pane.cpp:399
DragMode m_dragMode
Definition: Pane.h:186
void drawDurationAndRate(QRect, const Model *, int, QPainter &)
Definition: Pane.cpp:1039