InstrumentTrackView: added one-window-mode + global piano focus
Added a one-window-mode which allows to have only one instrument track
window open at a time. The content of this window is replaced each time
you open a different track.
Furthermore added global reception and forwarding of key events to the
piano widget of the top-most instrument track window. This for example
enables the user to play test sounds while tweaking some effects in a
different subwindow.
(cherry picked from commit 93681760d2)
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
* InstrumentTrack.h - declaration of class InstrumentTrack, a track + window
|
||||
* which holds an instrument-plugin
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
* Copyright (c) 2004-2010 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
@@ -41,6 +41,7 @@
|
||||
|
||||
class QLineEdit;
|
||||
template<class T> class QQueue;
|
||||
template<class T> class QStack;
|
||||
class ArpeggiatorView;
|
||||
class ChordCreatorView;
|
||||
class EffectRackView;
|
||||
@@ -258,6 +259,10 @@ public:
|
||||
return castModel<InstrumentTrack>();
|
||||
}
|
||||
|
||||
static InstrumentTrackWindow * topLevelInstrumentTrackWindow()
|
||||
{
|
||||
return s_windowStack.isEmpty() ? NULL : s_windowStack.top();
|
||||
}
|
||||
|
||||
QMenu * midiMenu()
|
||||
{
|
||||
@@ -266,7 +271,7 @@ public:
|
||||
|
||||
void freeInstrumentTrackWindow();
|
||||
|
||||
static void cleanupWindowPool();
|
||||
static void cleanupWindowCache();
|
||||
|
||||
|
||||
protected:
|
||||
@@ -287,7 +292,8 @@ private slots:
|
||||
private:
|
||||
InstrumentTrackWindow * m_window;
|
||||
|
||||
static QQueue<InstrumentTrackWindow *> s_windows;
|
||||
static QQueue<InstrumentTrackWindow *> s_windowCache;
|
||||
static QStack<InstrumentTrackWindow *> s_windowStack;
|
||||
|
||||
// widgets in track-settings-widget
|
||||
trackLabelButton * m_tlb;
|
||||
@@ -334,9 +340,11 @@ public:
|
||||
return castModel<InstrumentTrack>();
|
||||
}
|
||||
|
||||
void setInstrumentTrackView( InstrumentTrackView * _tv )
|
||||
void setInstrumentTrackView( InstrumentTrackView * _tv );
|
||||
|
||||
PianoView * pianoView()
|
||||
{
|
||||
m_itv = _tv;
|
||||
return m_pianoView;
|
||||
}
|
||||
|
||||
static void dragEnterEventGeneric( QDragEnterEvent * _dee );
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* PianoView.h - declaration of PianoView, an interactive piano/keyboard-widget
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
* Copyright (c) 2004-2010 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
@@ -43,10 +43,13 @@ public:
|
||||
static int getKeyFromKeyEvent( QKeyEvent * _ke );
|
||||
|
||||
|
||||
protected:
|
||||
virtual void modelChanged();
|
||||
public:
|
||||
virtual void keyPressEvent( QKeyEvent * ke );
|
||||
virtual void keyReleaseEvent( QKeyEvent * ke );
|
||||
|
||||
|
||||
protected:
|
||||
virtual void modelChanged();
|
||||
virtual void contextMenuEvent( QContextMenuEvent * _me );
|
||||
virtual void paintEvent( QPaintEvent * );
|
||||
virtual void mousePressEvent( QMouseEvent * me );
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* setup_dialog.h - dialog for setting up LMMS
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
* Copyright (c) 2005-2010 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
@@ -104,6 +104,7 @@ private slots:
|
||||
|
||||
void toggleDisableChActInd( bool _disabled );
|
||||
void toggleManualChPiano( bool _enabled );
|
||||
void toggleOneInstrumentTrackWindow( bool _enabled );
|
||||
|
||||
|
||||
private:
|
||||
@@ -148,6 +149,7 @@ private:
|
||||
|
||||
bool m_disableChActInd;
|
||||
bool m_manualChPiano;
|
||||
bool m_oneInstrumentTrackWindow;
|
||||
|
||||
typedef QMap<QString, AudioDevice::setupWidget *> AswMap;
|
||||
typedef QMap<QString, MidiClient::setupWidget *> MswMap;
|
||||
|
||||
Reference in New Issue
Block a user