LMMS
Loading...
Searching...
No Matches
TrackContentWidget.h
Go to the documentation of this file.
1/*
2 * TrackContentWidget.h - declaration of TrackContentWidget class
3 *
4 * Copyright (c) 2004-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
5 *
6 * This file is part of LMMS - https://lmms.io
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (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 GNU
16 * General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public
19 * License along with this program (see COPYING); if not, write to the
20 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 * Boston, MA 02110-1301 USA.
22 *
23 */
24
25#ifndef LMMS_GUI_TRACK_CONTENT_WIDGET_H
26#define LMMS_GUI_TRACK_CONTENT_WIDGET_H
27
28#include <QWidget>
29
30#include "JournallingObject.h"
31#include "TimePos.h"
32
33class QMimeData; // IWYU pragma: keep
34
35
36namespace lmms
37{
38
39class Track;
40
41namespace gui
42{
43
44class ClipView; // IWYU pragma: keep
45class TrackView;
46
47class TrackContentWidget : public QWidget, public JournallingObject
48{
49 Q_OBJECT
50
51 // qproperties for track background gradients
58
63
65
66public:
69
70 void addClipView( ClipView * clipv );
71 void removeClipView( ClipView * clipv );
72 void removeClipView( int clipNum )
73 {
74 if( clipNum >= 0 && clipNum < m_clipViews.size() )
75 {
76 removeClipView( m_clipViews[clipNum] );
77 }
78 }
79
80 bool canPasteSelection( TimePos clipPos, const QDropEvent *de );
81 bool canPasteSelection( TimePos clipPos, const QMimeData *md, bool allowSameBar = false );
82 bool pasteSelection( TimePos clipPos, QDropEvent * de );
83 bool pasteSelection( TimePos clipPos, const QMimeData * md, bool skipSafetyCheck = false );
84
85 TimePos endPosition( const TimePos & posStart );
86
87 // qproperty access methods
88
89 QBrush darkerColor() const;
90 QBrush lighterColor() const;
91 QBrush coarseGridColor() const;
92 QBrush fineGridColor() const;
93 QBrush horizontalColor() const;
94 QBrush embossColor() const;
95
96 int coarseGridWidth() const;
97 int fineGridWidth() const;
98 int horizontalWidth() const;
99 int embossWidth() const;
100
101 int embossOffset() const;
102
103 void setDarkerColor(const QBrush & c);
104 void setLighterColor(const QBrush & c);
105 void setCoarseGridColor(const QBrush & c);
106 void setFineGridColor(const QBrush & c);
107 void setHorizontalColor(const QBrush & c);
108 void setEmbossColor(const QBrush & c);
109
110 void setCoarseGridWidth(int c);
111 void setFineGridWidth(int c);
112 void setHorizontalWidth(int c);
113 void setEmbossWidth(int c);
114
115 void setEmbossOffset(int c);
116
117public slots:
118 void update();
119 void changePosition( const lmms::TimePos & newPos = TimePos( -1 ) );
121 void updateBackground();
122
123protected:
125 {
127 };
128
129 void contextMenuEvent( QContextMenuEvent * cme ) override;
130 void contextMenuAction( QContextMenuEvent * cme, ContextMenuAction action );
131 void dragEnterEvent( QDragEnterEvent * dee ) override;
132 void dropEvent( QDropEvent * de ) override;
133 void mousePressEvent( QMouseEvent * me ) override;
134 void mouseReleaseEvent( QMouseEvent * me ) override;
135 void paintEvent( QPaintEvent * pe ) override;
136 void resizeEvent( QResizeEvent * re ) override;
137
138 QString nodeName() const override
139 {
140 return "trackcontentwidget";
141 }
142
143 void saveSettings( QDomDocument& doc, QDomElement& element ) override
144 {
145 Q_UNUSED(doc)
146 Q_UNUSED(element)
147 }
148
149 void loadSettings( const QDomElement& element ) override
150 {
151 Q_UNUSED(element)
152 }
153
154
155private:
156 Track * getTrack();
157 TimePos getPosition( int mouseX );
158
160
161 using clipViewVector = QVector<ClipView*>;
163
165
166 // qproperty fields
173
178
180} ;
181
182
183} // namespace gui
184
185} // namespace lmms
186
187#endif // LMMS_GUI_TRACK_CONTENT_WIDGET_H
#define READ(addr)
Definition Ay_Cpu.cpp:92
#define WRITE(addr, data)
Definition Ay_Cpu.cpp:93
#define override
Definition DistrhoDefines.h:73
JournallingObject()
Definition JournallingObject.cpp:36
Definition TimePos.h:68
Base-class for all tracks.
Definition Track.h:68
Definition ClipView.h:52
QVector< ClipView * > clipViewVector
Definition TrackContentWidget.h:161
void changePosition(const lmms::TimePos &newPos=TimePos(-1))
Move the trackContentWidget to a new place in time.
Definition TrackContentWidget.cpp:232
clipViewVector m_clipViews
Definition TrackContentWidget.h:162
int coarseGridWidth
Definition TrackContentWidget.h:59
QBrush m_embossColor
Definition TrackContentWidget.h:172
QPixmap m_background
Definition TrackContentWidget.h:164
QBrush m_darkerColor
Definition TrackContentWidget.h:167
void setFineGridColor(const QBrush &c)
CSS theming qproperty access method.
Definition TrackContentWidget.cpp:784
bool canPasteSelection(TimePos clipPos, const QDropEvent *de)
Returns whether a selection of Clips can be pasted into this.
Definition TrackContentWidget.cpp:345
QBrush horizontalColor
Definition TrackContentWidget.h:56
void setHorizontalWidth(int c)
CSS theming qproperty access method.
Definition TrackContentWidget.cpp:804
int horizontalWidth
Definition TrackContentWidget.h:61
void setCoarseGridColor(const QBrush &c)
CSS theming qproperty access method.
Definition TrackContentWidget.cpp:780
int embossWidth
Definition TrackContentWidget.h:62
ContextMenuAction
Definition TrackContentWidget.h:125
@ Paste
Definition TrackContentWidget.h:126
void contextMenuAction(QContextMenuEvent *cme, ContextMenuAction action)
Definition TrackContentWidget.cpp:708
void paintEvent(QPaintEvent *pe) override
Repaint the trackContentWidget on command.
Definition TrackContentWidget.cpp:628
void dropEvent(QDropEvent *de) override
Respond to a drop event on the trackContentWidget.
Definition TrackContentWidget.cpp:559
Track * getTrack()
Return the track shown by the trackContentWidget.
Definition TrackContentWidget.cpp:663
int m_embossWidth
Definition TrackContentWidget.h:177
TimePos getPosition(int mouseX)
Return the position of the trackContentWidget in bars.
Definition TrackContentWidget.cpp:307
void updateBackground()
Updates the background tile pixmap.
Definition TrackContentWidget.cpp:102
int m_embossOffset
Definition TrackContentWidget.h:179
void setEmbossColor(const QBrush &c)
CSS theming qproperty access method.
Definition TrackContentWidget.cpp:792
QBrush m_coarseGridColor
Definition TrackContentWidget.h:169
TrackView * m_trackView
Definition TrackContentWidget.h:159
void mouseReleaseEvent(QMouseEvent *me) override
Definition TrackContentWidget.cpp:615
void setDarkerColor(const QBrush &c)
CSS theming qproperty access method.
Definition TrackContentWidget.cpp:772
void contextMenuEvent(QContextMenuEvent *cme) override
Definition TrackContentWidget.cpp:682
void setEmbossOffset(int c)
CSS theming qproperty access method.
Definition TrackContentWidget.cpp:812
int m_fineGridWidth
Definition TrackContentWidget.h:175
QBrush lighterColor
Definition TrackContentWidget.h:53
TimePos endPosition(const TimePos &posStart)
Return the end position of the trackContentWidget in Bars.
Definition TrackContentWidget.cpp:675
TrackContentWidget(TrackView *parent)
Create a new trackContentWidget.
Definition TrackContentWidget.cpp:65
void setFineGridWidth(int c)
CSS theming qproperty access method.
Definition TrackContentWidget.cpp:800
QString nodeName() const override
Definition TrackContentWidget.h:138
int embossOffset
Definition TrackContentWidget.h:64
int m_horizontalWidth
Definition TrackContentWidget.h:176
void setLighterColor(const QBrush &c)
CSS theming qproperty access method.
Definition TrackContentWidget.cpp:776
void setEmbossWidth(int c)
CSS theming qproperty access method.
Definition TrackContentWidget.cpp:808
void removeClipView(ClipView *clipv)
Removes the given ClipView from this widget.
Definition TrackContentWidget.cpp:195
bool pasteSelection(TimePos clipPos, QDropEvent *de)
Pastes a selection of Clips onto the track.
Definition TrackContentWidget.cpp:440
void loadSettings(const QDomElement &element) override
Definition TrackContentWidget.h:149
QBrush m_fineGridColor
Definition TrackContentWidget.h:170
void saveSettings(QDomDocument &doc, QDomElement &element) override
Definition TrackContentWidget.h:143
void setHorizontalColor(const QBrush &c)
CSS theming qproperty access method.
Definition TrackContentWidget.cpp:788
QBrush m_horizontalColor
Definition TrackContentWidget.h:171
QBrush coarseGridColor
Definition TrackContentWidget.h:54
void resizeEvent(QResizeEvent *re) override
Updates the background tile pixmap on size changes.
Definition TrackContentWidget.cpp:649
QBrush m_lighterColor
Definition TrackContentWidget.h:168
QBrush fineGridColor
Definition TrackContentWidget.h:55
void dragEnterEvent(QDragEnterEvent *dee) override
Respond to a drag enter event on the trackContentWidget.
Definition TrackContentWidget.cpp:323
int m_coarseGridWidth
Definition TrackContentWidget.h:174
void update()
Update ourselves by updating all the ClipViews attached.
Definition TrackContentWidget.cpp:213
void addClipView(ClipView *clipv)
Adds a ClipView to this widget.
Definition TrackContentWidget.cpp:175
void setCoarseGridWidth(int c)
CSS theming qproperty access method.
Definition TrackContentWidget.cpp:796
void mousePressEvent(QMouseEvent *me) override
Respond to a mouse press on the trackContentWidget.
Definition TrackContentWidget.cpp:577
QBrush embossColor
Definition TrackContentWidget.h:57
int fineGridWidth
Definition TrackContentWidget.h:60
QBrush darkerColor
Definition TrackContentWidget.h:52
Definition TrackView.h:60
unsigned md
Definition inflate.c:944
static uintptr_t parent
Definition pugl.h:1644
Definition AudioPortAudio.cpp:223
Definition AudioAlsa.cpp:35
return c
Definition crypt.c:175