hydrogen 1.2.6
PatternEditorPanel.h
Go to the documentation of this file.
1/*
2 * Hydrogen
3 * Copyright(c) 2002-2008 by Alex >Comix< Cominu [comix@users.sourceforge.net]
4 * Copyright(c) 2008-2025 The hydrogen development team [hydrogen-devel@lists.sourceforge.net]
5 *
6 * http://www.hydrogen-music.org
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY, without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program. If not, see https://www.gnu.org/licenses
20 *
21 */
22
23
24#ifndef PATTERN_EDITOR_PANEL_H
25#define PATTERN_EDITOR_PANEL_H
26
27#include <core/Object.h>
30
31#include "PianoRollEditor.h"
32#include "../EventListener.h"
33#include "../Widgets/LCDCombo.h"
35
36class Button;
37class Fader;
42class PianoRollEditor;
43class ClickableLabel;
44class LCDSpinBox;
45
47
48namespace H2Core
49{
50 class Pattern;
51}
52
56
57class PatternEditorPanel : public QWidget, protected WidgetWithScalableFont<8, 10, 12>, public EventListener, public H2Core::Object<PatternEditorPanel>
58{
60 Q_OBJECT
61
62 public:
63 explicit PatternEditorPanel(QWidget *parent);
65
75 const QScrollArea* getDrumPatternEditorScrollArea() const { return m_pEditorScrollView; }
76 const QScrollArea* getPianoRollEditorScrollArea() const { return m_pPianoRollScrollView; }
77 const QScrollArea* getNoteVelocityScrollArea() const { return m_pNoteVelocityScrollView; }
78 const QScrollArea* getNotePanScrollArea() const { return m_pNotePanScrollView; }
79 const QScrollArea* getNoteLeadLagScrollArea() const { return m_pNoteLeadLagScrollView; }
80 const QScrollArea* getNoteNoteKeyScrollArea() const { return m_pNoteNoteKeyScrollView; }
81 const QScrollArea* getNoteProbabilityScrollArea() const { return m_pNoteProbabilityScrollView; }
82 const QScrollBar* getVerticalScrollBar() const { return m_pPatternEditorVScrollBar; }
83 const QScrollBar* getHorizontalScrollBar() const { return m_pPatternEditorHScrollBar; }
85
86
87 void updateSLnameLabel();
88
89 // Implements EventListener interface
90 virtual void selectedPatternChangedEvent() override;
91 virtual void selectedInstrumentChangedEvent() override;
92 virtual void patternModifiedEvent() override;
93 virtual void playingPatternsChangedEvent() override;
94 virtual void drumkitLoadedEvent() override;
95 virtual void updateSongEvent( int nValue ) override;
96 virtual void songModeActivationEvent() override;
97 virtual void stackedModeActivationEvent( int ) override;
98 virtual void songSizeChangedEvent() override;
99 virtual void patternEditorLockedEvent() override;
100 virtual void relocationEvent() override;
101 // ~ Implements EventListener interface
102
103 void ensureCursorVisible();
104 int getCursorPosition();
105 void setCursorPosition(int nCursorPosition);
106 int moveCursorLeft( int n = 1 );
107 int moveCursorRight( int n = 1 );
108
109 void selectInstrumentNotes( int nInstrument );
110
111 void updatePatternInfo();
112
113 void updateEditors( bool bPatternOnly = false );
114
115 void patternSizeChangedAction( int nLength, double fDenominator,
116 int nSelectedPatternNumber );
117
118 public slots:
119 void showDrumEditor();
120 void showPianoRollEditor();
122
123 private slots:
124 void gridResolutionChanged( int nSelected );
125 void propertiesComboChanged( int nSelected );
128
129 void hearNotesBtnClick();
131
133
135 void contentsMoving(int dummy);
136 void on_patternEditorVScroll(int);
137 void on_patternEditorHScroll(int);
138
139
140 void zoomInBtnClicked();
141 void zoomOutBtnClicked();
142
143 void patternSizeChanged( double );
145
146 private:
147 void updateStyleSheet();
148
152 QLabel * m_pSLlabel;
153
156 QWidget* m_pSizeResol;
157 QWidget* m_pRec;
158
164
165 // Editor top
171
177 // ~Editor top
178
179 //note properties combo
181
182 // drum editor
185
186 // piano roll editor
189
190 // ruler
191 QScrollArea* m_pRulerScrollView;
193
194 // instr list
197
198 // note velocity editor
201
202 // note pan editor
205
206 // note leadlag editor
209
210 // note notekey editor
213
214 // note probability editor
217
220
221 // TOOLBAR
224 // ~ TOOLBAR
225
228
230
231 // Cursor positioning
234 // ~ Cursor
235
236 virtual void dragEnterEvent(QDragEnterEvent *event) override;
237 virtual void dropEvent(QDropEvent *event) override;
238
239 virtual void resizeEvent(QResizeEvent *ev) override;
240 virtual void showEvent(QShowEvent *ev) override;
241};
242
243
244
245
246#endif
#define H2_OBJECT(name)
Definition Object.h:227
patternEditorRightClickMode
@ LEAD_LAG_SELECTED
@ PAN_SELECTED
@ VELOCITY_SELECTED
Generic Button with SVG icons or text.
Definition Button.h:60
Custom QLabel that emits a signal when clicked.
Drum pattern editor.
Custom fader widget.
Definition Fader.h:44
Pattern class is a Note container.
Definition Pattern.h:46
Changes
Bitwise or-able options showing which part of the Preferences were altered using the PreferencesDialo...
Custom spin box.
Definition LCDSpinBox.h:50
NotePropertiesEditor is (currently) a single class instantiated in different "modes" to select which ...
void selectInstrumentNotes(int nInstrument)
NotePropertiesRuler * getPanEditor()
ClickableLabel * m_pQuantizeEventsLbl
NotePropertiesRuler::Mode getNotePropertiesMode() const
void setCursorPosition(int nCursorPosition)
const QScrollArea * getNotePanScrollArea() const
QScrollArea * m_pEditorScrollView
PianoRollEditor * getPianoRollEditor()
QScrollArea * m_pPianoRollScrollView
QScrollBar * m_pPatternEditorVScrollBar
const QScrollArea * getNoteLeadLagScrollArea() const
NotePropertiesRuler * m_pNoteVelocityEditor
PianoRollEditor * m_pPianoRollEditor
QScrollArea * m_pNoteProbabilityScrollView
LCDSpinBox * m_pLCDSpinBoxNumerator
QScrollArea * m_pNoteNoteKeyScrollView
bool m_bArmPatternSizeSpinBoxes
Indicates whether the LCD spin boxes for the pattern size have been altered by Hydrogen or by the use...
NotePropertiesRuler * m_pNoteProbabilityEditor
ClickableLabel * m_pHearNotesLbl
const QScrollArea * getDrumPatternEditorScrollArea() const
void gridResolutionChanged(int nSelected)
NotePropertiesRuler * getVelocityEditor()
virtual void resizeEvent(QResizeEvent *ev) override
const QScrollBar * getVerticalScrollBar() const
virtual void patternModifiedEvent() override
NotePropertiesRuler * getNoteKeyEditor()
void updatePatternSizeLCD()
Batch version for setting the values of the pattern size spin boxes.
void onPreferencesChanged(H2Core::Preferences::Changes changes)
const QScrollArea * getNoteNoteKeyScrollArea() const
void updateEditors(bool bPatternOnly=false)
virtual void updateSongEvent(int nValue) override
PatternEditorInstrumentList * getInstrumentList()
virtual void stackedModeActivationEvent(int) override
virtual void songModeActivationEvent() override
QScrollArea * m_pRulerScrollView
QScrollBar * m_pPatternEditorHScrollBar
QScrollArea * m_pNoteLeadLagScrollView
virtual void drumkitLoadedEvent() override
void syncToExternalHorizontalScrollbar(int)
virtual void dragEnterEvent(QDragEnterEvent *event) override
virtual void showEvent(QShowEvent *ev) override
ClickableLabel * m_pResolutionLbl
void propertiesComboChanged(int nSelected)
NotePropertiesRuler * m_pNotePanEditor
virtual void selectedInstrumentChangedEvent() override
virtual void songSizeChangedEvent() override
virtual void playingPatternsChangedEvent() override
PatternEditorPanel(QWidget *parent)
PatternEditorRuler * m_pPatternEditorRuler
PatternEditorRuler * getPatternEditorRuler()
PatternEditorInstrumentList * m_pInstrumentList
DrumPatternEditor * m_pDrumPatternEditor
ClickableLabel * m_pShowPianoLbl
virtual void relocationEvent() override
NotePropertiesRuler * getLeadLagEditor()
const QScrollArea * getNoteVelocityScrollArea() const
const QScrollBar * getHorizontalScrollBar() const
NotePropertiesRuler * getProbabilityEditor()
const QScrollArea * getPianoRollEditorScrollArea() const
QScrollArea * m_pNotePanScrollView
virtual void dropEvent(QDropEvent *event) override
ClickableLabel * m_pPatternSizeLbl
NotePropertiesRuler * m_pNoteLeadLagEditor
virtual void selectedPatternChangedEvent() override
QScrollArea * m_pNoteVelocityScrollView
H2Core::Pattern * m_pPattern
QScrollArea * m_pInstrListScrollView
const QScrollArea * getNoteProbabilityScrollArea() const
virtual void patternEditorLockedEvent() override
NotePropertiesRuler * m_pNoteNoteKeyEditor
DrumPatternEditor * getDrumPatternEditor()
void patternSizeChangedAction(int nLength, double fDenominator, int nSelectedPatternNumber)
void contentsMoving(int dummy)
richiamato dall'uso dello scroll del mouse
LCDSpinBox * m_pLCDSpinBoxDenominator
Widget is affected by the "Font size" settings in the PreferencesDialog.