[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Traverso-commit] traverso/src commands/MoveClip.cpp traverso/son...
From: |
Remon Sijrier |
Subject: |
[Traverso-commit] traverso/src commands/MoveClip.cpp traverso/son... |
Date: |
Tue, 10 Apr 2007 17:11:49 +0000 |
CVSROOT: /sources/traverso
Module name: traverso
Changes by: Remon Sijrier <r_sijrier> 07/04/10 17:11:49
Modified files:
src/commands : MoveClip.cpp
src/traverso/songcanvas: AudioClipView.cpp AudioClipView.h
CurveView.cpp MarkerView.cpp
MarkerView.h TimeLineView.cpp
src/traverso : traverso.pro
Added files:
src/traverso/songcanvas: PositionIndicator.cpp
PositionIndicator.h
Log message:
* Drag Marker fixes
* Convenience class PositionIndicator added, both Drag Marker and Move
Clip updated
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/commands/MoveClip.cpp?cvsroot=traverso&r1=1.29&r2=1.30
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/AudioClipView.cpp?cvsroot=traverso&r1=1.35&r2=1.36
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/AudioClipView.h?cvsroot=traverso&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/CurveView.cpp?cvsroot=traverso&r1=1.24&r2=1.25
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/MarkerView.cpp?cvsroot=traverso&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/MarkerView.h?cvsroot=traverso&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/TimeLineView.cpp?cvsroot=traverso&r1=1.18&r2=1.19
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/PositionIndicator.cpp?cvsroot=traverso&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/PositionIndicator.h?cvsroot=traverso&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/traverso.pro?cvsroot=traverso&r1=1.41&r2=1.42
Patches:
Index: commands/MoveClip.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/commands/MoveClip.cpp,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -b -r1.29 -r1.30
--- commands/MoveClip.cpp 6 Apr 2007 09:29:03 -0000 1.29
+++ commands/MoveClip.cpp 10 Apr 2007 17:11:48 -0000 1.30
@@ -155,6 +155,7 @@
d->origTrackStartFrame = m_clip->get_track_start_frame();
d->origTrackEndFrame = m_clip->get_track_end_frame();
d->resync = config().get_property("AudioClip", "SyncDuringDrag",
false).toBool();
+ d->view->set_dragging(true);
}
@@ -193,6 +194,8 @@
m_clip->set_left_edge(m_oldOppositeEdge);
}
+ d->view->set_dragging(false);
+
return 1;
}
Index: traverso/songcanvas/AudioClipView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/AudioClipView.cpp,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -b -r1.35 -r1.36
--- traverso/songcanvas/AudioClipView.cpp 2 Apr 2007 09:52:31 -0000
1.35
+++ traverso/songcanvas/AudioClipView.cpp 10 Apr 2007 17:11:48 -0000
1.36
@@ -29,6 +29,7 @@
#include "TrackView.h"
#include "FadeView.h"
#include "CurveView.h"
+#include "PositionIndicator.h"
#include "Themer.h"
#include <Config.h>
@@ -43,7 +44,10 @@
AudioClipView::AudioClipView(SongView* sv, TrackView* parent, AudioClip* clip )
- : ViewItem(parent, clip), m_tv(parent), m_clip(clip)
+ : ViewItem(parent, clip)
+ , m_tv(parent)
+ , m_clip(clip)
+ , m_dragging(false)
{
PENTERCONS;
@@ -59,6 +63,7 @@
m_waitingForPeaks = false;
m_progress = m_peakloadingcount = 0;
+ m_posIndicator = 0;
m_song = m_clip->get_song();
if (FadeCurve* curve = m_clip->get_fade_in()) {
@@ -196,6 +201,10 @@
// curveView->paint(painter, option, widget);
}
+ if (m_dragging) {
+ m_posIndicator->set_value(frame_to_smpte(x() *
m_sv->scalefactor, m_song->get_rate()));
+ }
+
painter->restore();
// printf("drawing clip\n");
@@ -691,10 +700,30 @@
m_boundingRect = QRectF(0, 0, (newPos / m_sv->scalefactor), m_height);
QRect updaterect = QRect(m_oldRecordingPos, 0, newPos,
m_boundingRect.height());
- update();
+ update(updaterect);
m_oldRecordingPos = newPos;
}
+void AudioClipView::set_dragging(bool dragging)
+{
+ if (dragging) {
+ if (! m_posIndicator) {
+ m_posIndicator = new PositionIndicator(this);
+ scene()->addItem(m_posIndicator);
+ m_posIndicator->set_position(2,
get_childview_y_offset() + 1);
+ }
+ } else {
+ if (m_posIndicator) {
+ scene()->removeItem(m_posIndicator);
+ delete m_posIndicator;
+ m_posIndicator = 0;
+ }
+ }
+
+ m_dragging = dragging;
+}
+
+
//eof
Index: traverso/songcanvas/AudioClipView.h
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/AudioClipView.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- traverso/songcanvas/AudioClipView.h 2 Apr 2007 09:52:31 -0000 1.17
+++ traverso/songcanvas/AudioClipView.h 10 Apr 2007 17:11:48 -0000 1.18
@@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-$Id: AudioClipView.h,v 1.17 2007/04/02 09:52:31 r_sijrier Exp $
+$Id: AudioClipView.h,v 1.18 2007/04/10 17:11:48 r_sijrier Exp $
*/
#ifndef AUDIO_CLIP_VIEW_H
@@ -36,6 +36,7 @@
class TrackView;
class FadeView;
class Peak;
+class PositionIndicator;
class AudioClipView : public ViewItem
{
@@ -60,6 +61,7 @@
TrackView* get_trackview() const {return m_tv;}
void set_trackview(TrackView* view) {m_tv = view;}
+ void set_dragging(bool dragging);
void load_theme_data();
@@ -73,6 +75,7 @@
Song* m_song;
CurveView* curveView;
QList<Peak*> m_peakloadinglist;
+ PositionIndicator* m_posIndicator;
QPixmap clipNamePixmapActive;
QPixmap clipNamePixmapInActive;
@@ -84,6 +87,7 @@
bool m_waitingForPeaks;
bool m_mergedView;
bool m_classicView;
+ bool m_dragging;
int m_height;
int m_infoAreaHeight;
int m_mimimumheightforinfoarea;
Index: traverso/songcanvas/CurveView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/CurveView.cpp,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- traverso/songcanvas/CurveView.cpp 2 Apr 2007 21:05:43 -0000 1.24
+++ traverso/songcanvas/CurveView.cpp 10 Apr 2007 17:11:48 -0000 1.25
@@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-$Id: CurveView.cpp,v 1.24 2007/04/02 21:05:43 r_sijrier Exp $
+$Id: CurveView.cpp,v 1.25 2007/04/10 17:11:48 r_sijrier Exp $
*/
#include "CurveView.h"
@@ -463,7 +463,6 @@
void CurveView::node_moved( )
{
- printf("CurveView::node_moved()\n");
CurveNodeView* prev = 0;
CurveNodeView* next = 0;
Index: traverso/songcanvas/MarkerView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/MarkerView.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- traverso/songcanvas/MarkerView.cpp 2 Apr 2007 00:35:14 -0000 1.8
+++ traverso/songcanvas/MarkerView.cpp 10 Apr 2007 17:11:48 -0000 1.9
@@ -23,8 +23,10 @@
#include "SongView.h"
#include "Themer.h"
#include "ClipsViewPort.h"
+#include "PositionIndicator.h"
#include <QColor>
+#include <Song.h>
#include <Marker.h>
#include <Utils.h>
#include <QDebug>
@@ -33,10 +35,12 @@
MarkerView::MarkerView(Marker* marker, SongView* sv, ViewItem* parentView)
: ViewItem(parentView, marker)
+ , m_dragging(false)
{
m_sv = sv;
m_marker = marker;
m_active = false;
+ m_posIndicator = 0;
load_theme_data();
@@ -54,7 +58,7 @@
painter->setRenderHint(QPainter::Antialiasing);
painter->setFont( QFont( "Bitstream Vera Sans", 7) );
- painter->setPen(QColor("#000000"));
+ painter->setPen(QColor(Qt::black));
painter->setBrush(m_fillColor);
const QPointF pts[3] = {
@@ -69,6 +73,11 @@
painter->drawLine(MARKER_WIDTH/2, 9, MARKER_WIDTH/2,
(int)m_boundingRect.height());
}
+ if (m_dragging) {
+ m_posIndicator->set_value(frame_to_smpte( (x() +
m_boundingRect.width() / 2 ) * m_sv->scalefactor,
+ m_sv->get_song()->get_rate()));
+ }
+
painter->restore();
}
@@ -92,7 +101,7 @@
void MarkerView::update_position()
{
// markerwidth / 2 == center of markerview !
- setPos(m_marker->get_when() / m_sv->scalefactor - MARKER_WIDTH / 2, 0);
+ setPos( (long)(m_marker->get_when() / m_sv->scalefactor) -
(MARKER_WIDTH / 2), 0);
}
void MarkerView::set_position(int i)
@@ -126,4 +135,24 @@
update();
}
+void MarkerView::set_dragging(bool dragging)
+{
+ if (dragging) {
+ if (! m_posIndicator) {
+ m_posIndicator = new PositionIndicator(this);
+ scene()->addItem(m_posIndicator);
+ m_posIndicator->set_position(15, 0);
+ }
+ } else {
+ if (m_posIndicator) {
+ scene()->removeItem(m_posIndicator);
+ delete m_posIndicator;
+ m_posIndicator = 0;
+ }
+ }
+
+ m_dragging = dragging;
+}
+
//eof
+
Index: traverso/songcanvas/MarkerView.h
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/MarkerView.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- traverso/songcanvas/MarkerView.h 25 Mar 2007 20:01:09 -0000 1.5
+++ traverso/songcanvas/MarkerView.h 10 Apr 2007 17:11:48 -0000 1.6
@@ -27,6 +27,7 @@
class Marker;
class SongView;
class QColor;
+class PositionIndicator;
class MarkerView : public ViewItem
{
@@ -41,6 +42,7 @@
void load_theme_data();
void set_active(bool);
void set_position(int);
+ void set_dragging(bool dragging);
Marker* get_marker() const {return m_marker;}
@@ -48,6 +50,8 @@
Marker* m_marker;
QColor m_fillColor;
bool m_active;
+ bool m_dragging;
+ PositionIndicator* m_posIndicator;
private slots:
void update_position();
Index: traverso/songcanvas/TimeLineView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/TimeLineView.cpp,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- traverso/songcanvas/TimeLineView.cpp 9 Apr 2007 15:22:01 -0000
1.18
+++ traverso/songcanvas/TimeLineView.cpp 10 Apr 2007 17:11:48 -0000
1.19
@@ -38,6 +38,7 @@
#include <Command.h>
#include <defines.h>
#include <AddRemove.h>
+#include <CommandGroup.h>
#include <QDebug>
@@ -52,6 +53,9 @@
class DragMarker : public Command
{
Q_OBJECT
+ Q_CLASSINFO("move_left", tr("Move Left"))
+ Q_CLASSINFO("move_right", tr("Move right"))
+
public:
DragMarker(MarkerView* mview, double scalefactor, const QString& des);
@@ -64,7 +68,7 @@
private :
Marker* m_marker;
- MarkerView* m_mview;
+ MarkerView* m_view;
nframes_t m_origWhen;
nframes_t m_newWhen;
double m_scalefactor;
@@ -81,8 +85,8 @@
DragMarker::DragMarker(MarkerView* mview, double scalefactor, const QString&
des)
: Command(mview->get_marker(), des)
{
- m_mview = mview;
- m_marker= m_mview->get_marker();
+ m_view = mview;
+ m_marker= m_view->get_marker();
m_scalefactor = scalefactor;
}
@@ -91,22 +95,22 @@
return 1;
}
-int DragMarker::finish_hold()
-{
- m_marker->set_snappable(true);
- m_mview->get_songview()->start_shuttle(false);
- return do_action();
-}
-
int DragMarker::begin_hold()
{
m_origWhen = m_newWhen = m_marker->get_when();
m_marker->set_snappable(false);
- m_mview->get_songview()->start_shuttle(true, true);
-
+ m_view->get_songview()->start_shuttle(true, true);
+ m_view->set_dragging(true);
return 1;
}
+int DragMarker::finish_hold()
+{
+ m_marker->set_snappable(true);
+ m_view->get_songview()->start_shuttle(false);
+ m_view->set_dragging(false);
+ return do_action();
+}
int DragMarker::do_action()
{
@@ -123,28 +127,39 @@
void DragMarker::move_left(bool )
{
// Move 1 pixel to the left
- m_newWhen = m_newWhen + (uint) ( 1 * m_scalefactor);
+ long newpos = m_newWhen - (uint) ( 1 * m_scalefactor);
+ if (newpos < 0) {
+ newpos = 0;
+ }
+ m_newWhen = newpos;
do_action();
}
void DragMarker::move_right(bool )
{
// Move 1 pixel to the right
- m_newWhen = m_newWhen - (uint) ( 1 * m_scalefactor);
+ m_newWhen = m_newWhen + (uint) ( 1 * m_scalefactor);
do_action();
}
int DragMarker::jog()
{
- m_newWhen = (uint) (cpointer().scene_x() * m_scalefactor);
+ long newpos = (uint) (cpointer().scene_x() * m_scalefactor);
if (m_marker->get_timeline()->get_song()->is_snap_on()) {
SnapList* slist =
m_marker->get_timeline()->get_song()->get_snap_list();
- m_newWhen = slist->get_snap_value(m_newWhen);
+ newpos = slist->get_snap_value(newpos);
}
- m_mview->set_position(int(m_newWhen / m_scalefactor));
- m_mview->get_songview()->update_shuttle_factor();
+ if (newpos < 0 ) {
+ newpos = 0;
+ }
+
+ m_newWhen = newpos;
+ m_view->set_position(int(m_newWhen / m_scalefactor));
+
+ m_view->get_songview()->update_shuttle_factor();
+
return 1;
}
@@ -304,7 +319,7 @@
if (m_blinkingMarker) {
m_blinkingMarker->set_active(true);
- m_blinkTimer.start(40);
+// m_blinkTimer.start(40);
}
}
@@ -318,7 +333,7 @@
return;
}
- m_blinkTimer.stop();
+// m_blinkTimer.stop();
if (m_blinkingMarker) {
// TODO add these functions, or something else to
// let the user know which marker is to be moved!
@@ -378,12 +393,13 @@
{
QList<Marker*> lst = m_timeline->get_markers();
+ CommandGroup* group = new CommandGroup(m_timeline, tr("Clear Markers"));
+
foreach(Marker *m, lst) {
- AddRemove *ar = (AddRemove*) m_timeline->remove_marker(m);
- Command::process_command(ar);
+ group->add_command(m_timeline->remove_marker(m));
}
- return 0;
+ return group;
}
void TimeLineView::load_theme_data()
Index: traverso/traverso.pro
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/traverso.pro,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -b -r1.41 -r1.42
--- traverso/traverso.pro 5 Apr 2007 13:15:06 -0000 1.41
+++ traverso/traverso.pro 10 Apr 2007 17:11:49 -0000 1.42
@@ -55,7 +55,8 @@
dialogs/project/NewSongDialog.h \
dialogs/project/NewProjectDialog.h \
dialogs/project/OpenProjectDialog.h \
- dialogs/project/NewTrackDialog.h
+ dialogs/project/NewTrackDialog.h \
+ songcanvas/PositionIndicator.h
SOURCES += \
Traverso.cpp \
AudioSourcesTreeWidget.cpp \
@@ -86,7 +87,8 @@
dialogs/project/NewSongDialog.cpp \
dialogs/project/NewProjectDialog.cpp \
dialogs/project/OpenProjectDialog.cpp \
- dialogs/project/NewTrackDialog.cpp
+ dialogs/project/NewTrackDialog.cpp \
+ songcanvas/PositionIndicator.cpp
FORMS += ui/ExportWidget.ui \
ui/AudioSourcesManagerWidget.ui \
ui/PluginSelectorDialog.ui \
Index: traverso/songcanvas/PositionIndicator.cpp
===================================================================
RCS file: traverso/songcanvas/PositionIndicator.cpp
diff -N traverso/songcanvas/PositionIndicator.cpp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ traverso/songcanvas/PositionIndicator.cpp 10 Apr 2007 17:11:48 -0000
1.1
@@ -0,0 +1,71 @@
+/*
+ Copyright (C) 2007 Remon Sijrier
+
+ This file is part of Traverso
+
+ Traverso is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+*/
+
+#include "PositionIndicator.h"
+
+#include "SongView.h"
+
+#include <QColor>
+#include <Utils.h>
+
+PositionIndicator::PositionIndicator(ViewItem* parentView)
+ : ViewItem(parentView, 0)
+{
+ calculate_bounding_rect();
+}
+
+void PositionIndicator::paint(QPainter * painter, const
QStyleOptionGraphicsItem * option, QWidget * widget)
+{
+ Q_UNUSED(option);
+ Q_UNUSED(widget);
+
+ painter->drawPixmap(0, 0, m_background);
+ painter->drawText(m_boundingRect, Qt::AlignVCenter, m_value);
+}
+
+void PositionIndicator::calculate_bounding_rect()
+{
+ prepareGeometryChange();
+ m_boundingRect = QRectF(0, 0, 65, 14);
+
+ m_background = QPixmap(m_boundingRect.width(), m_boundingRect.height());
+ m_background.fill(QColor(Qt::transparent));
+
+ QPainter painter(&m_background);
+ painter.setRenderHint(QPainter::Antialiasing);
+ painter.setBrush(QColor(255, 255, 255, 225));
+ painter.setPen(Qt::NoPen);
+ int rounding = 10;
+ painter.drawRoundRect(0, 0, m_boundingRect.width(),
m_boundingRect.height(), rounding, rounding);
+}
+
+void PositionIndicator::set_position(int x, int y)
+{
+ setPos(x, y);
+}
+
+void PositionIndicator::set_value(const QString & value)
+{
+ m_value = value;
+}
+
+//eof
+
Index: traverso/songcanvas/PositionIndicator.h
===================================================================
RCS file: traverso/songcanvas/PositionIndicator.h
diff -N traverso/songcanvas/PositionIndicator.h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ traverso/songcanvas/PositionIndicator.h 10 Apr 2007 17:11:48 -0000
1.1
@@ -0,0 +1,49 @@
+/*
+ Copyright (C) 2007 Remon Sijrier
+
+ This file is part of Traverso
+
+ Traverso is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+*/
+
+#ifndef POSITION_INDICATOR_H
+#define POSITION_INDICATOR_H
+
+#include "ViewItem.h"
+#include <QPixmap>
+
+class PositionIndicator : public ViewItem
+{
+ Q_OBJECT
+
+public:
+ PositionIndicator(ViewItem* parent);
+ ~PositionIndicator() {}
+
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
QWidget *widget);
+ void calculate_bounding_rect();
+ void set_position(int x, int y);
+
+ void set_value(const QString& value);
+
+private:
+ QString m_value;
+ QPixmap m_background;
+};
+
+#endif
+
+//eof
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Traverso-commit] traverso/src commands/MoveClip.cpp traverso/son...,
Remon Sijrier <=