traverso-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Traverso-commit] traverso/src core/Song.cpp traverso/songcanvas/...


From: Remon Sijrier
Subject: [Traverso-commit] traverso/src core/Song.cpp traverso/songcanvas/...
Date: Thu, 24 May 2007 13:11:40 +0000

CVSROOT:        /sources/traverso
Module name:    traverso
Changes by:     Remon Sijrier <r_sijrier>       07/05/24 13:11:39

Modified files:
        src/core       : Song.cpp 
        src/traverso/songcanvas: CurveView.cpp PluginChainView.cpp 
                                 PluginChainView.h PluginView.cpp 
                                 PluginView.h SongView.cpp TrackView.cpp 
        src/traverso/widgets: InfoWidgets.cpp InfoWidgets.h 

Log message:
        * Only show plugins in effects mode
        * switch combobox to toolbutton to toggle edit/effects view
        * store edit/effects mode in project file, and reset at startup
        * scale plugin views if the track height becomes small

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Song.cpp?cvsroot=traverso&r1=1.105&r2=1.106
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/CurveView.cpp?cvsroot=traverso&r1=1.48&r2=1.49
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/PluginChainView.cpp?cvsroot=traverso&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/PluginChainView.h?cvsroot=traverso&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/PluginView.cpp?cvsroot=traverso&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/PluginView.h?cvsroot=traverso&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/SongView.cpp?cvsroot=traverso&r1=1.59&r2=1.60
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/TrackView.cpp?cvsroot=traverso&r1=1.33&r2=1.34
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/widgets/InfoWidgets.cpp?cvsroot=traverso&r1=1.31&r2=1.32
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/widgets/InfoWidgets.h?cvsroot=traverso&r1=1.14&r2=1.15

Patches:
Index: core/Song.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/Song.cpp,v
retrieving revision 1.105
retrieving revision 1.106
diff -u -b -r1.105 -r1.106
--- core/Song.cpp       24 May 2007 11:02:07 -0000      1.105
+++ core/Song.cpp       24 May 2007 13:11:37 -0000      1.106
@@ -193,6 +193,7 @@
        set_work_at(e.attribute( "workingFrame", "0").toUInt());
        set_transport_pos(e.attribute( "transportFrame", "0").toUInt());
        set_snapping(e.attribute("snapping", "0").toInt());
+       m_mode = e.attribute("mode", "0").toInt();
        
        m_timeline->set_state(node.firstChildElement("TimeLine"));
 
@@ -232,6 +233,7 @@
        properties.setAttribute("sby", m_sby);
        properties.setAttribute("mastergain", m_gain);
        properties.setAttribute("snapping", m_isSnapOn);
+       properties.setAttribute("mode", m_mode);
        songNode.appendChild(properties);
 
        doc.appendChild(songNode);

Index: traverso/songcanvas/CurveView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/CurveView.cpp,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -b -r1.48 -r1.49
--- traverso/songcanvas/CurveView.cpp   7 May 2007 21:29:07 -0000       1.48
+++ traverso/songcanvas/CurveView.cpp   24 May 2007 13:11:38 -0000      1.49
@@ -202,7 +202,6 @@
        setAcceptsHoverEvents(true);
        
        set_view_mode();
-       
 }
 
 CurveView::~ CurveView( )
@@ -565,6 +564,7 @@
 {
        if (m_sv->get_song()->get_mode() == Song::EFFECTS) {
                show();
+               printf("....\n");
        } else {
                hide();
        }

Index: traverso/songcanvas/PluginChainView.cpp
===================================================================
RCS file: 
/sources/traverso/traverso/src/traverso/songcanvas/PluginChainView.cpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- traverso/songcanvas/PluginChainView.cpp     24 May 2007 10:56:44 -0000      
1.13
+++ traverso/songcanvas/PluginChainView.cpp     24 May 2007 13:11:38 -0000      
1.14
@@ -32,6 +32,7 @@
 #include <Plugin.h>
 
 #include <Track.h>
+#include "Song.h"
 
 #if defined (LV2_SUPPORT)
 #include <LV2Plugin.h>
@@ -46,18 +47,16 @@
 PluginChainView::PluginChainView(SongView* sv, ViewItem* parent, PluginChain* 
chain)
        : ViewItem(parent, parent)
        , m_pluginchain(chain)
-       , m_sv(sv)
 {
        PENTERCONS;
        
        setZValue(parent->zValue() + 2);
+       m_sv = sv;
+       calculate_bounding_rect();
        
 #if QT_VERSION < 0x040300
        parent->scene()->addItem(this);
 #endif
-       m_boundingRect = QRectF(0, 0, 0, 44);
-       
-       hide();
        
        foreach(Plugin* plugin, chain->get_plugin_list()) {
                add_new_pluginview(plugin);
@@ -67,7 +66,9 @@
        connect(chain, SIGNAL(pluginRemoved(Plugin*)), this, 
SLOT(remove_pluginview(Plugin*)));
        connect(m_sv->get_clips_viewport()->horizontalScrollBar(), 
SIGNAL(valueChanged(int)),
                this, SLOT(scrollbar_value_changed(int)));
+       connect(m_sv->get_song(), SIGNAL(modeChanged()), this, 
SLOT(set_view_mode()));
        
+       set_view_mode();
 }
 
 PluginChainView::~PluginChainView( )
@@ -90,7 +91,6 @@
        view->setPos(x, m_boundingRect.height() - 
view->boundingRect().height());
        
        m_pluginViews.append(view);
-       show();
 }
 
 void PluginChainView::remove_pluginview( Plugin * plugin )
@@ -130,5 +130,22 @@
        setPos(value, y());
 }
 
+void PluginChainView::set_view_mode()
+{
+       if (m_sv->get_song()->get_mode() == Song::EFFECTS) {
+               show();
+       } else {
+               hide();
+       }
+}
+
+void PluginChainView::calculate_bounding_rect()
+{
+       int y  = m_parentViewItem->boundingRect().height();
+       m_boundingRect = QRectF(0, 0, 0, y);
+       setPos(pos().x(), - 2);
+       ViewItem::calculate_bounding_rect();
+}
+
 //eof
 

Index: traverso/songcanvas/PluginChainView.h
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/PluginChainView.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- traverso/songcanvas/PluginChainView.h       25 Apr 2007 17:50:47 -0000      
1.6
+++ traverso/songcanvas/PluginChainView.h       24 May 2007 13:11:38 -0000      
1.7
@@ -40,16 +40,20 @@
         ~PluginChainView();
 
         void paint(QPainter* painter, const QStyleOptionGraphicsItem *option, 
QWidget *widget);
+       void calculate_bounding_rect();
 
 private:
        PluginChain* m_pluginchain;
-        SongView* m_sv;
         QList<PluginView* >    m_pluginViews;
 
 public slots:
         void add_new_pluginview(Plugin* plugin);
         void remove_pluginview(Plugin* plugin);
        void scrollbar_value_changed(int value);
+       
+private slots:
+       void set_view_mode();
+
 };
 
 #endif

Index: traverso/songcanvas/PluginView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/PluginView.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- traverso/songcanvas/PluginView.cpp  7 May 2007 18:14:38 -0000       1.16
+++ traverso/songcanvas/PluginView.cpp  24 May 2007 13:11:38 -0000      1.17
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2005-2006 Remon Sijrier
+Copyright (C) 2005-2007 Remon Sijrier
 
 This file is part of Traverso
 
@@ -57,9 +57,9 @@
        m_name = plugin->get_name();
        
        QFontMetrics fm(themer()->get_font("Plugin:fontscale:name"));
-       int fontwidth = fm.width(m_name);
+       m_textwidth = fm.width(m_name);
        
-       m_boundingRect = QRectF(0, 0, fontwidth + 8, 25);
+       calculate_bounding_rect();
        
        setAcceptsHoverEvents(true);
        setCursor(themer()->get_cursor("Plugin"));
@@ -91,11 +91,11 @@
 
        int height, width;
        if (option->state & QStyle::State_MouseOver) {
-               height = 21;
+               height = m_boundingRect.height() + 1;
                width = m_boundingRect.width() + 1;
                color = color.light(120);
        } else {
-               height = 20;
+               height = m_boundingRect.height();
                width = m_boundingRect.width();
        }
        
@@ -140,4 +140,17 @@
        update();
 }
 
+void PluginView::calculate_bounding_rect()
+{
+       int height = 25;
+       int parentheight = m_parentViewItem->boundingRect().height();
+       if (parentheight < 30) {
+               height = parentheight - 4;
+       }
+       int y = parentheight - height;
+       m_boundingRect = QRectF(0, 0, m_textwidth + 8, height);
+       setPos(x(), y);
+}
+
 //eof
+

Index: traverso/songcanvas/PluginView.h
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/PluginView.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- traverso/songcanvas/PluginView.h    24 May 2007 10:56:44 -0000      1.9
+++ traverso/songcanvas/PluginView.h    24 May 2007 13:11:38 -0000      1.10
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2006 Remon Sijrier
+    Copyright (C) 2006-2007 Remon Sijrier
 
     This file is part of Traverso
 
@@ -17,7 +17,6 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA.
 
-    $Id: PluginView.h,v 1.9 2007/05/24 10:56:44 r_sijrier Exp $
 */
 
 #ifndef PLUGIN_VIEW_H
@@ -46,19 +45,18 @@
        PluginView(PluginChainView* pcv, PluginChain* chain, Plugin* plugin, 
int index);
         ~PluginView();
 
-       enum {Type = UserType + 5};
-        
        Plugin* get_plugin();
         void set_index(int index);
 
         void paint(QPainter* painter, const QStyleOptionGraphicsItem *option, 
QWidget *widget);
-       int type() const;
+       void calculate_bounding_rect();
 
 private:
        PluginChain*    m_pluginchain;
        Plugin*         m_plugin;
 
         int            m_index;
+       int             m_textwidth;
         QString                m_name;
        
 #if defined (LV2_SUPPORT)
@@ -73,8 +71,6 @@
        void repaint();
 };
 
-inline int PluginView::type() const {return Type;}
-
 #endif
 
 //eof

Index: traverso/songcanvas/SongView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/SongView.cpp,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -b -r1.59 -r1.60
--- traverso/songcanvas/SongView.cpp    23 May 2007 12:53:54 -0000      1.59
+++ traverso/songcanvas/SongView.cpp    24 May 2007 13:11:38 -0000      1.60
@@ -85,8 +85,6 @@
        m_hScrollBar = songwidget->m_hScrollBar;
        m_actOnPlayHead = true;
        
-       m_song->set_editing_mode();
-       
        m_clipsViewPort->scene()->addItem(this);
        
        m_playCursor = new PlayHead(this, m_song, m_clipsViewPort);

Index: traverso/songcanvas/TrackView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/TrackView.cpp,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -b -r1.33 -r1.34
--- traverso/songcanvas/TrackView.cpp   11 May 2007 13:09:23 -0000      1.33
+++ traverso/songcanvas/TrackView.cpp   24 May 2007 13:11:38 -0000      1.34
@@ -168,6 +168,9 @@
        if (PluginSelectorDialog::instance()->exec() == QDialog::Accepted) {
                Plugin* plugin = 
PluginSelectorDialog::instance()->get_selected_plugin();
                if (plugin) {
+                       // Force showing into effects mode, just in case the 
user adds
+                       // a plugin in edit mode, which means it won't show up!
+                       m_sv->get_song()->set_effects_mode();
                        return m_track->add_plugin(plugin);
                }
        }

Index: traverso/widgets/InfoWidgets.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/widgets/InfoWidgets.cpp,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -b -r1.31 -r1.32
--- traverso/widgets/InfoWidgets.cpp    24 May 2007 11:53:25 -0000      1.31
+++ traverso/widgets/InfoWidgets.cpp    24 May 2007 13:11:39 -0000      1.32
@@ -531,26 +531,23 @@
        m_snapAct->setCheckable(true);
        m_snapAct->setToolTip(tr("Snap items to edges of other items while 
dragging."));
        m_snap->setDefaultAction(m_snapAct);
-       m_snap->setFocusPolicy(Qt::NoFocus);
 
        m_follow = new QToolButton(this);
        m_followAct = new QAction(tr("S&croll Playback"), this);
        m_followAct->setCheckable(true);
        m_followAct->setToolTip(tr("Keep play cursor in view while playing or 
recording."));
        m_follow->setDefaultAction(m_followAct);
-       m_follow->setFocusPolicy(Qt::NoFocus);
        
-       m_mode = new QComboBox(this);
-       m_mode->addItem("Mode: Edit");
-       m_mode->addItem("Mode: Effects");
-       m_mode->setFocusPolicy(Qt::NoFocus);
+       m_effectButton = new QToolButton(this);
+       m_effectButton->setMinimumWidth(110);
+       m_effectAction = new QAction(tr("&Show Effects"), this);
+       m_effectAction->setCheckable(false);
        
        m_record = new QToolButton(this);
        m_recAction = new QAction(tr("Record"), this);
        m_recAction->setCheckable(true);
        m_recAction->setToolTip(tr("Toggle recording state on/off"));
        m_record->setDefaultAction(m_recAction);
-       m_record->setFocusPolicy(Qt::NoFocus);
        m_record->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
        
        
@@ -559,7 +556,6 @@
        action->setIcon(QIcon(find_pixmap(":/undo-16")));
        action->setShortcuts(QKeySequence::Undo);
        undobutton->setDefaultAction(action);
-       undobutton->setFocusPolicy(Qt::NoFocus);
        undobutton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
        undobutton->setText(tr("Undo"));
        connect(action, SIGNAL(triggered( bool )), &pm(), SLOT(undo()));
@@ -585,7 +581,7 @@
        lay->addStretch(1);
        lay->addWidget(m_playhead);
        lay->addStretch(5);
-       lay->addWidget(m_mode);
+       lay->addWidget(m_effectButton);
        lay->addWidget(m_songselectbox);
                
        setLayout(lay);
@@ -597,7 +593,7 @@
        connect(m_snapAct, SIGNAL(triggered(bool)), this, 
SLOT(snap_state_changed(bool)));
        connect(m_followAct, SIGNAL(triggered(bool)), this, 
SLOT(follow_state_changed(bool)));
        connect(&config(), SIGNAL(configChanged()), this, 
SLOT(update_follow_state()));
-       connect(m_mode, SIGNAL(currentIndexChanged(int)), this, 
SLOT(mode_index_changed(int)));
+       connect(m_effectButton, SIGNAL(clicked()), this, 
SLOT(effect_button_clicked()));
        connect(m_recAction, SIGNAL(triggered(bool)), this, 
SLOT(recording_button_state_changed(bool)));
        
        update_follow_state();
@@ -627,18 +623,18 @@
        
        if (m_song) {
                connect(m_song, SIGNAL(snapChanged()), this, 
SLOT(update_snap_state()));
-               connect(m_song, SIGNAL(modeChanged()), this, 
SLOT(update_mode_state()));
+               connect(m_song, SIGNAL(modeChanged()), this, 
SLOT(update_effects_state()));
                connect(m_song, SIGNAL(recordingStateChanged()), this, 
SLOT(update_recording_state()));
                update_snap_state();
-               update_mode_state();
+               update_effects_state();
                update_recording_state();
                m_snapAct->setEnabled(true);
-               m_mode->setEnabled(true);
+               m_effectButton->setEnabled(true);
                m_record->setEnabled(true);
                m_follow->setEnabled(true);
        } else {
                m_snapAct->setEnabled(false);
-               m_mode->setEnabled(false);
+               m_effectButton->setEnabled(false);
                m_record->setEnabled(false);
                m_follow->setEnabled(false);
        }
@@ -649,12 +645,12 @@
        m_snapAct->setChecked(m_song->is_snap_on());
 }
 
-void SongInfo::update_mode_state()
+void SongInfo::update_effects_state()
 {
        if (m_song->get_mode() == Song::EDIT) {
-               m_mode->setCurrentIndex(0);
+               m_effectButton->setText(tr("Show Effects"));
        } else {
-               m_mode->setCurrentIndex(1);
+               m_effectButton->setText(tr("Hide Effects"));
        }
 }
 
@@ -677,12 +673,12 @@
        config().save();
 }
 
-void SongInfo::mode_index_changed(int index)
+void SongInfo::effect_button_clicked()
 {
-       if (index == 0) {
-               m_song->set_editing_mode();
-       } else {
+       if (m_song->get_mode() == Song::EDIT) {
                m_song->set_effects_mode();
+       } else {
+               m_song->set_editing_mode();
        }
 }
 

Index: traverso/widgets/InfoWidgets.h
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/widgets/InfoWidgets.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- traverso/widgets/InfoWidgets.h      17 May 2007 16:35:02 -0000      1.14
+++ traverso/widgets/InfoWidgets.h      24 May 2007 13:11:39 -0000      1.15
@@ -189,9 +189,9 @@
        void update_snap_state();
        void snap_state_changed(bool state);
        void update_follow_state();
-       void update_mode_state();
+       void update_effects_state();
        void follow_state_changed(bool state);
-       void mode_index_changed(int index);
+       void effect_button_clicked();
        void recording_button_state_changed(bool state);
        void update_recording_state();
        void song_selector_song_added(Song* song);
@@ -203,12 +203,13 @@
 private:
        PlayHeadInfo*   m_playhead;
        QToolButton*    m_snap;
-       QComboBox*      m_mode;
+       QToolButton*    m_effectButton;
        QComboBox*      m_songselectbox;
        QAction*        m_snapAct;
        QToolButton*    m_follow;
        QAction*        m_followAct;
        QAction*        m_recAction;
+       QAction*        m_effectAction;
        QToolButton*    m_record;
 };
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]