- 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:
@@ -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
|
||||
|
||||
83
include/bb_track_container.h
Normal file
83
include/bb_track_container.h
Normal 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
|
||||
@@ -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;
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
185
include/track_container_view.h
Normal file
185
include/track_container_view.h
Normal 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
|
||||
Reference in New Issue
Block a user