99 std::vector<QPoint> & selectCells );
104 int yScrollTarget( QScrollArea *pScrollArea,
int *pnPatternInView );
186 setCursor( Qt::CrossCursor );
201 virtual void paintEvent(QPaintEvent *ev)
override;
204#ifdef H2CORE_HAVE_QT6
205 virtual void enterEvent( QEnterEvent *ev )
override;
207 virtual void enterEvent( QEvent *ev )
override;
209 virtual void leaveEvent( QEvent *ev )
override;
217 void drawPattern(
int pos,
int number,
bool invertColour,
double width );
313 virtual void dropEvent(QDropEvent *event)
override;
344 virtual void paintEvent( QPaintEvent *ev )
override;
392 static int tickToColumn(
float fTick, uint nGridWidth );
445 virtual void paintEvent( QPaintEvent *ev )
override;
447 virtual void leaveEvent( QEvent* ev )
override;
448 virtual bool event( QEvent* ev )
override;
459 void showToolTip(
const QPoint& pos,
const QPoint& globalPos );
461 void drawTempoMarker( std::shared_ptr<const H2Core::Timeline::TempoMarker> pTempoMarker,
462 bool bEmphasize, QPainter& painter );
468 QRect
calcTempoMarkerRect( std::shared_ptr<const H2Core::Timeline::TempoMarker> pTempoMarker,
469 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...
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
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()
static constexpr uint m_nInitialHeight
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.
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.
static constexpr int m_nMinimumHeight
int m_nActiveBpmWidgetColumn
virtual void paintEvent(QPaintEvent *ev) override
void invalidateBackground()
virtual void jackTimebaseStateChangedEvent(int nState) override
QRect calcTempoMarkerRect(std::shared_ptr< const H2Core::Timeline::TempoMarker > pTempoMarker, bool bEmphasize=false) const
~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
virtual void updateWidget() override
virtual void focusInEvent(QFocusEvent *ev) override
H2Core::AudioEngine * m_pAudioEngine
bool m_bDrawingActiveCell
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
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)
static constexpr int m_nMinimumHeight
Default value of Preferences::m_nSongEditorGridHeight * 5 (patterns)
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()