99 std::vector<QPoint> & selectCells );
104 int yScrollTarget( QScrollArea *pScrollArea,
int *pnPatternInView );
183 setCursor( Qt::CrossCursor );
198 virtual void paintEvent(QPaintEvent *ev)
override;
201 virtual void enterEvent( QEvent *ev )
override;
202 virtual void leaveEvent( QEvent *ev )
override;
210 void drawPattern(
int pos,
int number,
bool invertColour,
double width );
306 virtual void dropEvent(QDropEvent *event)
override;
337 virtual void paintEvent( QPaintEvent *ev )
override;
386 static int tickToColumn(
float fTick, uint nGridWidth );
438 virtual void paintEvent( QPaintEvent *ev )
override;
441 virtual void leaveEvent( QEvent* ev )
override;
442 virtual bool event( QEvent* ev )
override;
453 void showToolTip(
const QPoint& pos,
const QPoint& globalPos );
455 void drawTempoMarker( std::shared_ptr<const H2Core::Timeline::TempoMarker> pTempoMarker,
456 bool bEmphasize, QPainter& painter );
462 QRect
calcTempoMarkerRect( std::shared_ptr<const H2Core::Timeline::TempoMarker> pTempoMarker,
463 bool bEmphasize =
false )
const;
static const uint SONG_EDITOR_MAX_GRID_WIDTH
static const uint SONG_EDITOR_MIN_GRID_WIDTH
The audio engine deals with two distinct #TransportPosition.
Pattern class is a Note container.
Changes
Bitwise or-able options showing which part of the Preferences were altered using the PreferencesDialo...
Selection management for editor widgets.
Song editor pattern list.
virtual void timelineUpdateEvent(int nValue) override
void setRowSelection(RowSelection rowSelection)
QPixmap m_playingPattern_empty_Pixmap
virtual void mousePressEvent(QMouseEvent *ev) override
Single click, select the next pattern.
QPixmap m_playingPattern_on_Pixmap
QPixmap m_playingPattern_off_Pixmap
QPixmap m_labelBackgroundSelected
void patternPopup_properties()
virtual void mouseDoubleClickEvent(QMouseEvent *ev) override
virtual void stackedModeActivationEvent(int nValue) override
virtual void leaveEvent(QEvent *ev)
void fillRangeWithPattern(FillRange *r, int nPattern)
H2Core::Pattern * m_pPatternBeingEdited
virtual void mouseMoveEvent(QMouseEvent *event) override
void movePatternLine(int, int)
virtual void patternModifiedEvent() override
void onPreferencesChanged(H2Core::Preferences::Changes changes)
int m_nRowHovered
Specifies the row the mouse cursor is currently hovered over.
void patternPopup_export()
void acceptPatternPropertiesDialogSettings(QString newPatternName, QString newPatternInfo, QString newPatternCategory, int patternNr)
virtual void songModeActivationEvent() override
void togglePattern(int)
Start/stop playing a pattern in "pattern mode".
H2Core::AudioEngine * m_pAudioEngine
DragScroller * m_pDragScroller
QPixmap m_labelBackgroundDark
SongEditorPatternList(const SongEditorPatternList &)=delete
virtual void dragEnterEvent(QDragEnterEvent *event) override
drag & drop
static const uint m_nInitialHeight
void patternPopup_duplicate()
void patternPopup_delete()
SongEditorPatternList & operator=(const SongEditorPatternList &rhs)=delete
void inlineEditPatternName(int row)
void patternPopup_virtualPattern()
virtual void playingPatternsChangedEvent() override
QTimer * m_pHighlightLockedTimer
SongEditorPatternList(QWidget *parent)
QPixmap * m_pBackgroundPixmap
virtual void relocationEvent() override
QPoint __drag_start_position
virtual void paintEvent(QPaintEvent *ev) override
void inlineEditingEntered()
virtual void dropEvent(QDropEvent *event) override
virtual void selectedPatternChangedEvent() override
void invalidateBackground()
void revertPatternPropertiesDialogSettings(QString oldPatternName, QString oldPatternInfo, QString oldPatternCategory, int patternNr)
virtual void patternEditorLockedEvent() override
QPixmap m_labelBackgroundLight
virtual void nextPatternsChangedEvent() override
H2Core::Hydrogen * m_pHydrogen
void inlineEditingFinished()
bool m_bBackgroundInvalid
virtual void timelineUpdateEvent(int nValue) override
virtual void mouseMoveEvent(QMouseEvent *ev) override
float m_fTick
Cached position of the playhead.
static constexpr uint m_nHeight
virtual void timelineActivationEvent() override
virtual void mousePressEvent(QMouseEvent *ev) override
HoveredRow
Indicated the part of the widget the cursor is hovering over.
@ TempoMarker
Upper half until the lower end of the tempo marker text.
@ None
Cursor is not hovering the widget.
@ Tag
Still part of the upper half, but only the last m_nTagHeight pixels.
int columnToX(int nColumn) const
Calculates the position in pixel required to the painter for a particular nColumn of the grid.
int m_nColumn
Cached and coarsed-grained position of the playhead.
void showTagWidget(int nColumn)
void drawTempoMarker(std::shared_ptr< const H2Core::Timeline::TempoMarker > pTempoMarker, bool bEmphasize, QPainter &painter)
static int tickToColumn(float fTick, uint nGridWidth)
void showBpmWidget(int nColumn)
virtual void patternModifiedEvent() override
void onPreferencesChanged(H2Core::Preferences::Changes changes)
virtual void songModeActivationEvent() override
H2Core::AudioEngine * m_pAudioEngine
virtual void leaveEvent(QEvent *ev) override
void showToolTip(const QPoint &pos, const QPoint &globalPos)
virtual void tempoChangedEvent(int) override
virtual void mouseReleaseEvent(QMouseEvent *ev) override
virtual bool event(QEvent *ev) override
void setGridWidth(uint width)
int xToColumn(int nX) const
SongEditorPositionRuler(QWidget *parent)
virtual void songSizeChangedEvent() override
virtual void playingPatternsChangedEvent() override
virtual void updateSongEvent(int) override
QPixmap * m_pBackgroundPixmap
virtual void relocationEvent() override
int m_nActiveColumns
Area covering the length of the song columns.
int m_nActiveBpmWidgetColumn
virtual void paintEvent(QPaintEvent *ev) override
void invalidateBackground()
QRect calcTempoMarkerRect(std::shared_ptr< const H2Core::Timeline::TempoMarker > pTempoMarker, bool bEmphasize=false) const
virtual void jackTimebaseStateChangedEvent() override
~SongEditorPositionRuler()
H2Core::Hydrogen * m_pHydrogen
bool m_bBackgroundInvalid
virtual bool canDragElements() override
Can elements be dragged as well as being selected? This may change to suit widget's current state.
virtual void mouseDragUpdateEvent(QMouseEvent *ev) override
virtual void mouseMoveEvent(QMouseEvent *ev) override
float m_fTick
Cached position of the playhead.
virtual void keyReleaseEvent(QKeyEvent *ev) override
virtual void mousePressEvent(QMouseEvent *ev) override
virtual void updateModifiers(QInputEvent *ev)
virtual void selectionMoveEndEvent(QInputEvent *ev) override
virtual QRect getKeyboardCursorRect() override
Calculate screen space occupied by keyboard cursor.
void drawPattern(int pos, int number, bool invertColour, double width)
QPoint columnRowToXy(QPoint p)
void modifyPatternCellsAction(std::vector< QPoint > &addCells, std::vector< QPoint > &deleteCells, std::vector< QPoint > &selectCells)
Modify many pattern cells at once, for use in a single efficient undo/redo action.
QPoint m_currentMousePosition
void updatePosition(float fTick)
QPixmap * m_pSequencePixmap
void setPatternActive(int nColumn, int nRow, bool bActivate)
SongEditorPanel * m_pSongEditorPanel
bool m_bSequenceChanged
Pattern sequence or selection has changed, so must be redrawn.
QPoint xyToColumnRow(QPoint p)
virtual void patternModifiedEvent() override
void onPreferencesChanged(H2Core::Preferences::Changes changes)
static constexpr int nMargin
virtual std::vector< SelectionIndex > elementsIntersecting(QRect r) override
Find list of elements which intersect a rectangular area.
virtual void updateWidget() override
Selection or selection-related visual elements have changed, widget needs to be updated.
virtual void focusInEvent(QFocusEvent *ev) override
H2Core::AudioEngine * m_pAudioEngine
bool m_bDrawingActiveCell
In "draw" mode, whether we're activating pattern cells ("drawing") or deactivating ("erasing") is set...
virtual void leaveEvent(QEvent *ev) override
virtual void keyPressEvent(QKeyEvent *ev) override
virtual void mouseReleaseEvent(QMouseEvent *ev) override
virtual void validateSelection() override
Ensure that the Selection contains only valid elements.
QScrollArea * m_pScrollView
void setGridWidth(uint width)
virtual void mouseDragStartEvent(QMouseEvent *ev) override
virtual void endMouseGesture() override
void copy()
Copy a selection of cells to an XML representation in the clipboard.
virtual void focusOutEvent(QFocusEvent *ev) override
Selection< QPoint > m_selection
virtual void startMouseLasso(QMouseEvent *ev) override
SongEditor(QWidget *parent, QScrollArea *pScrollView, SongEditorPanel *pSongEditorPanel)
int yScrollTarget(QScrollArea *pScrollArea, int *pnPatternInView)
Calculate a target Y scroll value for tracking a playing song.
QPixmap * m_pBackgroundPixmap
QPoint m_previousMousePosition
Mouse position during selection gestures (used to detect crossing cell boundaries)
std::map< QPoint, GridCell > m_gridCells
virtual void mouseDragEndEvent(QMouseEvent *ev) override
virtual void relocationEvent() override
void clearThePatternSequenceVector(QString filename)
int getCursorColumn() const
virtual void mouseClickEvent(QMouseEvent *ev) override
virtual void paintEvent(QPaintEvent *ev) override
void togglePatternActive(int nColumn, int nRow)
void drawFocus(QPainter &painter)
void invalidateBackground()
virtual void patternEditorLockedEvent() override
QPoint m_previousGridOffset
virtual void enterEvent(QEvent *ev) override
H2Core::Hydrogen * m_pHydrogen
QPoint movingGridOffset() const
Quantise the selection move offset to the sequence grid.
bool m_bBackgroundInvalid
void updateEditorandSetTrue()