lmms
Cross-platform music production software
Loading...
Searching...
No Matches
SongEditor.h
Go to the documentation of this file.
1/*
2 * SongEditor.h - declaration of class SongEditor, a window where you can
3 * setup your songs
4 *
5 * Copyright (c) 2004-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
6 *
7 * This file is part of LMMS - https://lmms.io
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public
11 * License as published by the Free Software Foundation; either
12 * version 2 of the License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public
20 * License along with this program (see COPYING); if not, write to the
21 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
22 * Boston, MA 02110-1301 USA.
23 *
24 */
25
26#ifndef LMMS_GUI_SONG_EDITOR_H
27#define LMMS_GUI_SONG_EDITOR_H
28
29#include "Editor.h"
30#include "TrackContainerView.h"
31
32class QLabel;
33class QScrollBar;
34
35namespace lmms
36{
37
38class IntModel;
39class Song;
40class ComboBoxModel;
41
42namespace gui
43{
44
45
46class ActionGroup;
48class ComboBox;
49class LcdSpinBox;
50class MeterDialog;
51class PositionLine;
52class TextFloat;
53class TimeLineWidget;
54
55
57{
58 Q_OBJECT
59public:
60 enum class EditMode
61 {
62 Draw,
63 Knife,
64 Select
65 };
66
67 SongEditor( Song * song );
68 ~SongEditor() override;
69
70 void saveSettings( QDomDocument& doc, QDomElement& element ) override;
71 void loadSettings( const QDomElement& element ) override;
72
74
76 float getSnapSize() const;
77
78 QString getSnapSizeString() const;
79
80 TimeLineWidget* timeLine() const { return m_timeLine; }
82
83public slots:
84 void scrolled( int new_pos );
85 void selectRegionFromPixels(int xStart, int xEnd);
86 void stopSelectRegion();
87 void updateRubberband();
88
90 void setEditModeDraw();
91 void setEditModeKnife();
92 void setEditModeSelect();
94
95 void updatePosition();
96 void updatePositionLine();
97 void selectAllClips( bool select );
98
99protected:
100 void mousePressEvent(QMouseEvent * me) override;
101 void mouseMoveEvent(QMouseEvent * me) override;
102 void mouseReleaseEvent(QMouseEvent * me) override;
103
104private slots:
105 void setMasterVolume( int new_val );
107 void updateMasterVolumeFloat( int new_val );
109
110 void setMasterPitch( int new_val );
112 void updateMasterPitchFloat( int new_val );
114
115 void updateScrollBar(int len);
116
117 void zoomingChanged();
118
119private:
120 void keyPressEvent( QKeyEvent * ke ) override;
121 void wheelEvent( QWheelEvent * we ) override;
122
123 bool allowRubberband() const override;
124 bool knifeMode() const override;
125
127 int calculatePixelsPerBar() const;
128
131
132 int trackIndexFromSelectionPoint(int yPos);
133 int indexOfTrackView(const TrackView* tv);
134
136
137 QScrollBar * m_leftRightScroll;
138
139 void adjustLeftRightScoll(int value);
140
142
145
149
152
153
157
160
163
164 QPoint m_origin;
172
173 friend class SongEditorWindow;
174
175signals:
178} ;
179
180
181
182
184{
185 Q_OBJECT
186public:
187 SongEditorWindow( Song* song );
188
189 QSize sizeHint() const override;
190
192 void syncEditMode();
193
194protected:
195 void resizeEvent( QResizeEvent * event ) override;
196 void changeEvent( QEvent * ) override;
197
198protected slots:
199 void play() override;
200 void record() override;
201 void recordAccompany() override;
202 void stop() override;
203
204 void lostFocus();
206
207 void updateSnapLabel();
208
209signals:
211 void resized();
212
213private:
218
223 QAction* m_crtlAction;
224
228
231};
232
233} // namespace gui
234
235} // namespace lmms
236
237#endif // LMMS_GUI_SONG_EDITOR_H
Definition ComboBoxModel.h:39
Definition AutomatableModel.h:486
Definition Song.h:67
Definition TimePos.h:68
Convenience subclass of QActionGroup.
Definition ActionGroup.h:39
Definition AutomatableSlider.h:37
Definition ComboBox.h:38
Editor(bool record=false, bool stepRecord=false)
Definition Editor.cpp:91
Definition LcdSpinBox.h:35
Definition MeterDialog.h:40
Definition PositionLine.h:37
Definition SongEditor.h:57
void keyPressEvent(QKeyEvent *ke) override
Definition SongEditor.cpp:466
void setEditMode(lmms::gui::SongEditor::EditMode mode)
Definition SongEditor.cpp:435
QPoint m_origin
Definition SongEditor.h:164
void setEditModeSelect()
Definition SongEditor.cpp:450
void pixelsPerBarChanged(float)
void selectAllClips(bool select)
Definition SongEditor.cpp:860
int m_trackHeadWidth
Definition SongEditor.h:170
void mouseReleaseEvent(QMouseEvent *me) override
Definition SongEditor.cpp:621
TimeLineWidget * timeLine() const
Definition SongEditor.h:80
EditMode m_mode
Definition SongEditor.h:161
void wheelEvent(QWheelEvent *we) override
Definition SongEditor.cpp:538
bool allowRubberband() const override
Definition SongEditor.cpp:872
void setEditModeDraw()
Definition SongEditor.cpp:440
int calculatePixelsPerBar() const
Convert zoom slider's value to bar width in pixels.
Definition SongEditor.cpp:815
void mouseMoveEvent(QMouseEvent *me) override
Definition SongEditor.cpp:611
void setMasterVolume(int new_val)
Definition SongEditor.cpp:631
void updateScrollBar(int len)
Definition SongEditor.cpp:718
AutomatableSlider * m_masterVolumeSlider
Definition SongEditor.h:147
EditMode
Definition SongEditor.h:61
TextFloat * m_mvsStatus
Definition SongEditor.h:150
void adjustLeftRightScoll(int value)
Definition SongEditor.cpp:531
void toggleProportionalSnap()
Definition SongEditor.cpp:455
TimePos m_rubberbandStartTimePos
Definition SongEditor.h:168
int m_rubberbandPixelsPerBar
Pixels per bar when selection starts.
Definition SongEditor.h:169
bool m_smoothScroll
Definition SongEditor.h:159
QPoint m_mousePos
Definition SongEditor.h:166
void mousePressEvent(QMouseEvent *me) override
Definition SongEditor.cpp:583
AutomatableSlider * m_masterPitchSlider
Definition SongEditor.h:148
void hideMasterVolumeFloat()
Definition SongEditor.cpp:667
bool m_scrollBack
Definition SongEditor.h:158
int trackIndexFromSelectionPoint(int yPos)
Definition SongEditor.cpp:888
bool m_proportionalSnap
Definition SongEditor.h:156
IntModel * m_zoomingModel
Definition SongEditor.h:154
float getSnapSize() const
Return grid size as number of bars.
Definition SongEditor.cpp:297
void updateMasterVolumeFloat(int new_val)
Definition SongEditor.cpp:659
void updateRubberband()
Definition SongEditor.cpp:383
QString getSnapSizeString() const
Definition SongEditor.cpp:315
MeterDialog * m_timeSigDisplay
Definition SongEditor.h:146
QScrollBar * m_leftRightScroll
Definition SongEditor.h:137
ComboBoxModel * snappingModel() const
Definition SongEditor.cpp:908
void scrolled(int new_pos)
Definition SongEditor.cpp:333
EditMode m_ctrlMode
Mode they were in before they hit ctrl.
Definition SongEditor.h:162
SongEditor(Song *song)
Definition SongEditor.cpp:77
void showMasterVolumeFloat()
Definition SongEditor.cpp:648
void zoomingChanged()
Definition SongEditor.cpp:846
int indexOfTrackView(const TrackView *tv)
Definition SongEditor.cpp:899
void stopSelectRegion()
Definition SongEditor.cpp:375
friend class SongEditorWindow
Definition SongEditor.h:173
bool knifeMode() const override
Definition SongEditor.cpp:880
void loadSettings(const QDomElement &element) override
Definition SongEditor.cpp:289
void setMasterPitch(int new_val)
Definition SongEditor.cpp:675
void updatePositionLine()
Definition SongEditor.cpp:793
PositionLine * positionLine() const
Definition SongEditor.h:81
PositionLine * m_positionLine
Definition SongEditor.h:144
int calculateZoomSliderValue(int pixelsPerBar) const
Convert bar width in pixels to zoom slider value.
Definition SongEditor.cpp:831
QPoint m_scrollPos
Definition SongEditor.h:165
LcdSpinBox * m_tempoSpinBox
Definition SongEditor.h:141
Song * m_song
Definition SongEditor.h:135
void saveSettings(QDomDocument &doc, QDomElement &element) override
Definition SongEditor.cpp:284
void hideMasterPitchFloat()
Definition SongEditor.cpp:710
void showMasterPitchFloat()
Definition SongEditor.cpp:690
TimeLineWidget * m_timeLine
Definition SongEditor.h:143
void updatePosition()
Definition SongEditor.cpp:757
int m_rubberBandStartTrackview
Definition SongEditor.h:167
TextFloat * m_mpsStatus
Definition SongEditor.h:151
void updateMasterPitchFloat(int new_val)
Definition SongEditor.cpp:701
bool m_selectRegion
Definition SongEditor.h:171
ComboBoxModel * m_snappingModel
Definition SongEditor.h:155
void selectRegionFromPixels(int xStart, int xEnd)
Definition SongEditor.cpp:343
void setEditModeKnife()
Definition SongEditor.cpp:445
ComboBox * m_snappingComboBox
Definition SongEditor.h:226
void record() override
Definition SongEditor.cpp:1094
QAction * m_removeBarAction
Definition SongEditor.h:230
QAction * m_drawModeAction
Definition SongEditor.h:220
QAction * m_insertBarAction
Definition SongEditor.h:229
void lostFocus()
Definition SongEditor.cpp:1125
QLabel * m_snapSizeLabel
Definition SongEditor.h:227
QAction * m_addAutomationTrackAction
Definition SongEditor.h:216
void stop() override
Definition SongEditor.cpp:1114
QAction * m_addSampleTrackAction
Definition SongEditor.h:215
QSize sizeHint() const override
Definition SongEditor.cpp:1036
ActionGroup * m_editModeGroup
Definition SongEditor.h:219
AutomatableSlider * m_zoomingSlider
Definition SongEditor.h:225
SongEditorWindow(Song *song)
Definition SongEditor.cpp:916
QAction * m_addPatternTrackAction
Definition SongEditor.h:214
QAction * m_selectModeAction
Definition SongEditor.h:222
void resizeEvent(QResizeEvent *event) override
Definition SongEditor.cpp:1064
QAction * m_knifeModeAction
Definition SongEditor.h:221
void changeEvent(QEvent *) override
Definition SongEditor.cpp:1070
QAction * m_setProportionalSnapAction
Definition SongEditor.h:217
void recordAccompany() override
Definition SongEditor.cpp:1104
void updateSnapLabel()
Definition SongEditor.cpp:1041
void syncEditMode()
Definition SongEditor.cpp:1057
void play() override
Definition SongEditor.cpp:1080
QAction * m_crtlAction
Definition SongEditor.h:223
SongEditor * m_editor
Definition SongEditor.h:191
void adjustUiAfterProjectLoad()
Definition SongEditor.cpp:1137
Definition TextFloat.h:38
Definition TimeLineWidget.h:54
float pixelsPerBar() const
Definition TrackContainerView.h:95
TrackContainerView(TrackContainer *tc)
Definition TrackContainerView.cpp:77
Definition TrackView.h:60
Definition AudioPortAudio.cpp:209
Definition RemotePluginBase.cpp:34