LMMS
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 {
65 };
66
67 SongEditor( Song * song );
68 ~SongEditor() override = default;
69
70 void saveSettings( QDomDocument& doc, QDomElement& element ) override;
71 void loadSettings( const QDomElement& element ) override;
72
74 float getSnapSize() const;
75 QString getSnapSizeString() const;
76
77 TimeLineWidget* timeLine() const { return m_timeLine; }
79
80public slots:
81 void scrolled( int new_pos );
82 void selectRegionFromPixels(int xStart, int xEnd);
83 void stopSelectRegion();
84 void updateRubberband();
85
87 void setEditModeDraw();
88 void setEditModeKnife();
89 void setEditModeSelect();
91
92 void updatePosition();
93 void updatePositionLine();
94 void selectAllClips( bool select );
95
96protected:
97 void mousePressEvent(QMouseEvent * me) override;
98 void mouseMoveEvent(QMouseEvent * me) override;
99 void mouseReleaseEvent(QMouseEvent * me) override;
100
101private slots:
102 void setMasterVolume( int new_val );
104 void updateMasterVolumeFloat( int new_val );
106
107 void setMasterPitch( int new_val );
109 void updateMasterPitchFloat( int new_val );
111
112 void updateScrollBar(int len);
113
114 void zoomingChanged();
115
116private:
117 void keyPressEvent( QKeyEvent * ke ) override;
118 void wheelEvent( QWheelEvent * we ) override;
119
120 bool allowRubberband() const override;
121 bool knifeMode() const override;
122
123 int calculatePixelsPerBar() const;
125
126 int trackIndexFromSelectionPoint(int yPos);
127 int indexOfTrackView(const TrackView* tv);
128
130
131 QScrollBar * m_leftRightScroll;
132
133 void adjustLeftRightScoll(int value);
134
136
139
143
146
147
151
154
156 EditMode m_ctrlMode; // mode they were in before they hit ctrl
157
158 QPoint m_origin;
166
167 friend class SongEditorWindow;
168
169signals:
172} ;
173
174
175
176
178{
179 Q_OBJECT
180public:
181 SongEditorWindow( Song* song );
182
183 QSize sizeHint() const override;
184
186 void syncEditMode();
187
188protected:
189 void resizeEvent( QResizeEvent * event ) override;
190 void changeEvent( QEvent * ) override;
191
192protected slots:
193 void play() override;
194 void record() override;
195 void recordAccompany() override;
196 void stop() override;
197
198 void lostFocus();
200
201 void updateSnapLabel();
202
203signals:
205 void resized();
206
207private:
212
217 QAction* m_crtlAction;
218
222
225};
226
227} // namespace gui
228
229} // namespace lmms
230
231#endif // LMMS_GUI_SONG_EDITOR_H
Definition ComboBoxModel.h:39
Definition AutomatableModel.h:481
Definition Song.h:65
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 record_step=false)
Constructor.
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:462
void setEditMode(lmms::gui::SongEditor::EditMode mode)
Definition SongEditor.cpp:431
QPoint m_origin
Definition SongEditor.h:158
void setEditModeSelect()
Definition SongEditor.cpp:446
void pixelsPerBarChanged(float)
void selectAllClips(bool select)
Definition SongEditor.cpp:855
int m_trackHeadWidth
Definition SongEditor.h:164
void mouseReleaseEvent(QMouseEvent *me) override
Definition SongEditor.cpp:614
TimeLineWidget * timeLine() const
Definition SongEditor.h:77
EditMode m_mode
Definition SongEditor.h:155
void wheelEvent(QWheelEvent *we) override
Definition SongEditor.cpp:531
bool allowRubberband() const override
Definition SongEditor.cpp:867
void setEditModeDraw()
Definition SongEditor.cpp:436
int calculatePixelsPerBar() const
Convert zoom slider's value to bar width in pixels.
Definition SongEditor.cpp:809
void mouseMoveEvent(QMouseEvent *me) override
Definition SongEditor.cpp:604
void setMasterVolume(int new_val)
Definition SongEditor.cpp:624
void updateScrollBar(int len)
Definition SongEditor.cpp:711
AutomatableSlider * m_masterVolumeSlider
Definition SongEditor.h:141
EditMode
Definition SongEditor.h:61
@ Draw
Definition SongEditor.h:62
@ Knife
Definition SongEditor.h:63
@ Select
Definition SongEditor.h:64
TextFloat * m_mvsStatus
Definition SongEditor.h:144
void adjustLeftRightScoll(int value)
Definition SongEditor.cpp:524
void toggleProportionalSnap()
Definition SongEditor.cpp:451
TimePos m_rubberbandStartTimePos
Definition SongEditor.h:162
int m_rubberbandPixelsPerBar
pixels per bar when selection starts
Definition SongEditor.h:163
bool m_smoothScroll
Definition SongEditor.h:153
QPoint m_mousePos
Definition SongEditor.h:160
void mousePressEvent(QMouseEvent *me) override
Definition SongEditor.cpp:576
AutomatableSlider * m_masterPitchSlider
Definition SongEditor.h:142
void hideMasterVolumeFloat()
Definition SongEditor.cpp:660
bool m_scrollBack
Definition SongEditor.h:152
int trackIndexFromSelectionPoint(int yPos)
Definition SongEditor.cpp:883
bool m_proportionalSnap
Definition SongEditor.h:150
IntModel * m_zoomingModel
Definition SongEditor.h:148
float getSnapSize() const
Return grid size as number of bars.
Definition SongEditor.cpp:293
void updateMasterVolumeFloat(int new_val)
Definition SongEditor.cpp:652
void updateRubberband()
Definition SongEditor.cpp:379
QString getSnapSizeString() const
Definition SongEditor.cpp:311
MeterDialog * m_timeSigDisplay
Definition SongEditor.h:140
~SongEditor() override=default
QScrollBar * m_leftRightScroll
Definition SongEditor.h:131
ComboBoxModel * snappingModel() const
Definition SongEditor.cpp:903
void scrolled(int new_pos)
Definition SongEditor.cpp:329
EditMode m_ctrlMode
Definition SongEditor.h:156
SongEditor(Song *song)
Definition SongEditor.cpp:77
void showMasterVolumeFloat()
Definition SongEditor.cpp:641
void zoomingChanged()
Definition SongEditor.cpp:841
int indexOfTrackView(const TrackView *tv)
Definition SongEditor.cpp:894
void stopSelectRegion()
Definition SongEditor.cpp:371
friend class SongEditorWindow
Definition SongEditor.h:167
bool knifeMode() const override
Definition SongEditor.cpp:875
void loadSettings(const QDomElement &element) override
Definition SongEditor.cpp:284
void setMasterPitch(int new_val)
Definition SongEditor.cpp:668
void updatePositionLine()
Definition SongEditor.cpp:786
PositionLine * positionLine() const
Definition SongEditor.h:78
PositionLine * m_positionLine
Definition SongEditor.h:138
int calculateZoomSliderValue(int pixelsPerBar) const
Convert bar width in pixels to zoom slider value.
Definition SongEditor.cpp:826
QPoint m_scrollPos
Definition SongEditor.h:159
LcdSpinBox * m_tempoSpinBox
Definition SongEditor.h:135
Song * m_song
Definition SongEditor.h:129
void saveSettings(QDomDocument &doc, QDomElement &element) override
Definition SongEditor.cpp:279
void hideMasterPitchFloat()
Definition SongEditor.cpp:703
void showMasterPitchFloat()
Definition SongEditor.cpp:683
TimeLineWidget * m_timeLine
Definition SongEditor.h:137
void updatePosition()
Definition SongEditor.cpp:750
int m_rubberBandStartTrackview
Definition SongEditor.h:161
TextFloat * m_mpsStatus
Definition SongEditor.h:145
void updateMasterPitchFloat(int new_val)
Definition SongEditor.cpp:694
bool m_selectRegion
Definition SongEditor.h:165
ComboBoxModel * m_snappingModel
Definition SongEditor.h:149
void selectRegionFromPixels(int xStart, int xEnd)
Definition SongEditor.cpp:339
void setEditModeKnife()
Definition SongEditor.cpp:441
ComboBox * m_snappingComboBox
Definition SongEditor.h:220
void record() override
Definition SongEditor.cpp:1089
QAction * m_removeBarAction
Definition SongEditor.h:224
QAction * m_drawModeAction
Definition SongEditor.h:214
QAction * m_insertBarAction
Definition SongEditor.h:223
void lostFocus()
Definition SongEditor.cpp:1120
QLabel * m_snapSizeLabel
Definition SongEditor.h:221
QAction * m_addAutomationTrackAction
Definition SongEditor.h:210
void stop() override
Definition SongEditor.cpp:1109
QAction * m_addSampleTrackAction
Definition SongEditor.h:209
QSize sizeHint() const override
Definition SongEditor.cpp:1031
ActionGroup * m_editModeGroup
Definition SongEditor.h:213
AutomatableSlider * m_zoomingSlider
Definition SongEditor.h:219
SongEditorWindow(Song *song)
Definition SongEditor.cpp:911
QAction * m_addPatternTrackAction
Definition SongEditor.h:208
QAction * m_selectModeAction
Definition SongEditor.h:216
void resizeEvent(QResizeEvent *event) override
Definition SongEditor.cpp:1059
QAction * m_knifeModeAction
Definition SongEditor.h:215
void changeEvent(QEvent *) override
Definition SongEditor.cpp:1065
QAction * m_setProportionalSnapAction
Definition SongEditor.h:211
void recordAccompany() override
Definition SongEditor.cpp:1099
void updateSnapLabel()
Definition SongEditor.cpp:1036
void syncEditMode()
Definition SongEditor.cpp:1052
void play() override
Definition SongEditor.cpp:1075
QAction * m_crtlAction
Definition SongEditor.h:217
SongEditor * m_editor
Definition SongEditor.h:185
void adjustUiAfterProjectLoad()
Definition SongEditor.cpp:1132
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
static PuglViewHint int value
Definition pugl.h:1708
Definition AudioPortAudio.cpp:223
Definition AudioAlsa.cpp:35
png_structrp int mode
Definition png.h:1139