- splitted track_container.h into track_container.h and track_container_view.h

- splitted bb_editor.h into bb_track_container.h and bb_editor.h
- moved view-component-implementations of trackContainer and bbTrackContainer to src/gui/
- added dummyInstrumentTrack-implementation



git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@829 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
Tobias Doerffel
2008-04-01 20:27:39 +00:00
parent c36e408f2b
commit 9ba283ee94
20 changed files with 1070 additions and 937 deletions

View File

@@ -1,5 +1,5 @@
/*
* bb_editor.h - declaration of class bbEditor, a basic-component of LMMS
* bb_editor.h - view-component of BB-Editor
*
* Copyright (c) 2004-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
*
@@ -26,68 +26,14 @@
#ifndef _BB_EDITOR_H
#define _BB_EDITOR_H
#include "track_container.h"
#include "combobox.h"
#include "track_container_view.h"
class QPixmap;
class bbTrackContainer;
class comboBox;
class toolButton;
class bbTrackContainer : public trackContainer
{
Q_OBJECT
mapPropertyFromModel(int,currentBB,setCurrentBB,m_bbComboBoxModel);
public:
bbTrackContainer( void );
virtual ~bbTrackContainer();
virtual bool play( midiTime _start, const fpp_t _frames,
const f_cnt_t _frame_base,
Sint16 _tco_num = -1 );
// virtual void saveSettings( QDomDocument & _doc, QDomElement & _parent );
// virtual void loadSettings( const QDomElement & _this );
virtual void updateAfterTrackAdd( void );
inline virtual QString nodeName( void ) const
{
return( "bbtrackcontainer" );
}
tact lengthOfBB( int _bb );
inline tact lengthOfCurrentBB( void )
{
return( lengthOfBB( currentBB() ) );
}
int numOfBBs( void ) const;
void removeBB( int _bb );
void swapBB( int _bb1, int _bb2 );
void updateBBTrack( trackContentObject * _tco );
public slots:
void play( void );
void stop( void );
void updateComboBox( void );
void currentBBChanged( void );
private:
void createTCOsForBB( int _bb );
comboBoxModel m_bbComboBoxModel;
friend class bbEditor;
} ;
class bbEditor : public trackContainerView
{
Q_OBJECT

View File

@@ -0,0 +1,83 @@
/*
* bb_track_container.h - model-component of BB-Editor
*
* Copyright (c) 2004-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
*
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
*
* This program 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 (see COPYING); if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA.
*
*/
#ifndef _BB_TRACK_CONTAINER_H
#define _BB_TRACK_CONTAINER_H
#include "track_container.h"
#include "combobox.h"
class bbTrackContainer : public trackContainer
{
Q_OBJECT
mapPropertyFromModel(int,currentBB,setCurrentBB,m_bbComboBoxModel);
public:
bbTrackContainer( void );
virtual ~bbTrackContainer();
virtual bool play( midiTime _start, const fpp_t _frames,
const f_cnt_t _frame_base,
Sint16 _tco_num = -1 );
virtual void updateAfterTrackAdd( void );
inline virtual QString nodeName( void ) const
{
return( "bbtrackcontainer" );
}
tact lengthOfBB( int _bb );
inline tact lengthOfCurrentBB( void )
{
return( lengthOfBB( currentBB() ) );
}
int numOfBBs( void ) const;
void removeBB( int _bb );
void swapBB( int _bb1, int _bb2 );
void updateBBTrack( trackContentObject * _tco );
public slots:
void play( void );
void stop( void );
void updateComboBox( void );
void currentBBChanged( void );
private:
void createTCOsForBB( int _bb );
comboBoxModel m_bbComboBoxModel;
friend class bbEditor;
} ;
#endif

View File

@@ -35,6 +35,7 @@
class automationEditor;
class bbEditor;
class bbTrackContainer;
class dummyTrackContainer;
class fxMixer;
class fxMixerView;
class projectJournal;
@@ -147,6 +148,7 @@ private:
static song * s_song;
static bbTrackContainer * s_bbTrackContainer;
static projectJournal * s_projectJournal;
static dummyTrackContainer * s_dummyTC;
// GUI
static mainWindow * s_mainWindow;

View File

@@ -27,7 +27,7 @@
#ifndef _SONG_EDITOR_H
#define _SONG_EDITOR_H
#include "track_container.h"
#include "track_container_view.h"
#include "lcd_spinbox.h"
#include "automatable_slider.h"

View File

@@ -27,17 +27,12 @@
#ifndef _TRACK_CONTAINER_H
#define _TRACK_CONTAINER_H
#include <QtGui/QScrollArea>
#include <QtCore/QVector>
#include <QtGui/QWidget>
#include "track.h"
#include "journalling_object.h"
class trackContainerView;
class QVBoxLayout;
class instrumentTrack;
class trackContainer : public model, public journallingObject
@@ -79,9 +74,6 @@ public:
}
//const QList<track *> tracks( void ) const;
signals:
void trackAdded( track * _track );
@@ -96,148 +88,30 @@ private:
} ;
class trackContainerView : public QWidget, public modelView,
public journallingObject
class dummyTrackContainer : public trackContainer
{
Q_OBJECT
public:
trackContainerView( trackContainer * _tc );
virtual ~trackContainerView();
dummyTrackContainer( void );
QWidget * contentWidget( void )
virtual ~dummyTrackContainer()
{
return( m_scrollArea );
}
inline const midiTime & currentPosition( void ) const
{
return( m_currentPosition );
}
virtual bool fixedTCOs( void ) const
{
return( FALSE );
}
inline float pixelsPerTact( void ) const
{
return( m_ppt );
}
void setPixelsPerTact( int _ppt );
const trackView * trackViewAt( const int _y ) const;
virtual bool allowRubberband( void ) const;
inline bool rubberBandActive( void ) const
{
return( m_rubberBand->isVisible() );
}
inline QVector<selectableObject *> selectedObjects( void )
{
if( allowRubberband() == TRUE )
{
return( m_rubberBand->selectedObjects() );
}
return( QVector<selectableObject *>() );
}
trackContainer * model( void )
{
return( m_tc );
}
const trackContainer * model( void ) const
{
return( m_tc );
}
void moveTrackViewUp( trackView * _tv );
void moveTrackViewDown( trackView * _tv );
// -- for usage by trackView only ---------------
trackView * addTrackView( trackView * _tv );
void removeTrackView( trackView * _tv );
// -------------------------------------------------------
void clearAllTracks( void );
virtual QString nodeName( void ) const
{
return( "trackcontainerview" );
return( "dummytrackcontainer" );
}
public slots:
void realignTracks( void );
void createTrackView( track * _t );
protected:
static const int DEFAULT_PIXELS_PER_TACT = 16;
const QList<trackView *> & trackViews( void ) const
instrumentTrack * dummyInstrumentTrack( void )
{
return( m_trackViews );
return( m_dummyInstrumentTrack );
}
virtual void dragEnterEvent( QDragEnterEvent * _dee );
virtual void dropEvent( QDropEvent * _de );
virtual void mousePressEvent( QMouseEvent * _me );
virtual void mouseMoveEvent( QMouseEvent * _me );
virtual void mouseReleaseEvent( QMouseEvent * _me );
virtual void resizeEvent( QResizeEvent * );
virtual void undoStep( journalEntry & _je );
virtual void redoStep( journalEntry & _je );
midiTime m_currentPosition;
private:
enum Actions
{
AddTrack,
RemoveTrack
} ;
class scrollArea : public QScrollArea
{
public:
scrollArea( trackContainerView * _parent );
virtual ~scrollArea();
protected:
virtual void wheelEvent( QWheelEvent * _we );
private:
trackContainerView * m_trackContainerView;
} ;
trackContainer * m_tc;
typedef QList<trackView *> trackViewList;
trackViewList m_trackViews;
scrollArea * m_scrollArea;
QVBoxLayout * m_scrollLayout;
float m_ppt;
rubberBand * m_rubberBand;
QPoint m_origin;
signals:
void positionChanged( const midiTime & _pos );
instrumentTrack * m_dummyInstrumentTrack;
} ;
#endif

View File

@@ -0,0 +1,185 @@
/*
* track_container_view.h - view-component for trackContainer
*
* Copyright (c) 2004-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
*
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
*
* This program 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 (see COPYING); if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA.
*
*/
#ifndef _TRACK_CONTAINER_VIEW_H
#define _TRACK_CONTAINER_VIEW_H
#include <QtGui/QScrollArea>
#include <QtCore/QVector>
#include <QtGui/QWidget>
#include "track.h"
#include "journalling_object.h"
class QVBoxLayout;
class trackContainer;
class trackContainerView : public QWidget, public modelView,
public journallingObject
{
Q_OBJECT
public:
trackContainerView( trackContainer * _tc );
virtual ~trackContainerView();
QWidget * contentWidget( void )
{
return( m_scrollArea );
}
inline const midiTime & currentPosition( void ) const
{
return( m_currentPosition );
}
virtual bool fixedTCOs( void ) const
{
return( FALSE );
}
inline float pixelsPerTact( void ) const
{
return( m_ppt );
}
void setPixelsPerTact( int _ppt );
const trackView * trackViewAt( const int _y ) const;
virtual bool allowRubberband( void ) const;
inline bool rubberBandActive( void ) const
{
return( m_rubberBand->isVisible() );
}
inline QVector<selectableObject *> selectedObjects( void )
{
if( allowRubberband() == TRUE )
{
return( m_rubberBand->selectedObjects() );
}
return( QVector<selectableObject *>() );
}
trackContainer * model( void )
{
return( m_tc );
}
const trackContainer * model( void ) const
{
return( m_tc );
}
void moveTrackViewUp( trackView * _tv );
void moveTrackViewDown( trackView * _tv );
// -- for usage by trackView only ---------------
trackView * addTrackView( trackView * _tv );
void removeTrackView( trackView * _tv );
// -------------------------------------------------------
void clearAllTracks( void );
virtual QString nodeName( void ) const
{
return( "trackcontainerview" );
}
public slots:
void realignTracks( void );
void createTrackView( track * _t );
protected:
static const int DEFAULT_PIXELS_PER_TACT = 16;
const QList<trackView *> & trackViews( void ) const
{
return( m_trackViews );
}
virtual void dragEnterEvent( QDragEnterEvent * _dee );
virtual void dropEvent( QDropEvent * _de );
virtual void mousePressEvent( QMouseEvent * _me );
virtual void mouseMoveEvent( QMouseEvent * _me );
virtual void mouseReleaseEvent( QMouseEvent * _me );
virtual void resizeEvent( QResizeEvent * );
virtual void undoStep( journalEntry & _je );
virtual void redoStep( journalEntry & _je );
midiTime m_currentPosition;
private:
enum Actions
{
AddTrack,
RemoveTrack
} ;
class scrollArea : public QScrollArea
{
public:
scrollArea( trackContainerView * _parent );
virtual ~scrollArea();
protected:
virtual void wheelEvent( QWheelEvent * _we );
private:
trackContainerView * m_trackContainerView;
} ;
trackContainer * m_tc;
typedef QList<trackView *> trackViewList;
trackViewList m_trackViews;
scrollArea * m_scrollArea;
QVBoxLayout * m_scrollLayout;
float m_ppt;
rubberBand * m_rubberBand;
QPoint m_origin;
signals:
void positionChanged( const midiTime & _pos );
} ;
#endif