diff --git a/include/InstrumentFunctionViews.h b/include/InstrumentFunctionViews.h index 3b4334147..29bb0640a 100644 --- a/include/InstrumentFunctionViews.h +++ b/include/InstrumentFunctionViews.h @@ -1,7 +1,7 @@ /* * InstrumentFunctionViews.h - views for instrument-functions-tab * - * Copyright (c) 2004-2009 Tobias Doerffel + * Copyright (c) 2004-2014 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -44,7 +44,7 @@ class ChordCreatorView : public QWidget, public ModelView { Q_OBJECT public: - ChordCreatorView( ChordCreator * _cc, QWidget * _parent ); + ChordCreatorView( ChordCreator* cc, QWidget* parent = NULL ); virtual ~ChordCreatorView(); @@ -67,7 +67,7 @@ class ArpeggiatorView : public QWidget, public ModelView { Q_OBJECT public: - ArpeggiatorView( Arpeggiator * _arp, QWidget * _parent ); + ArpeggiatorView( Arpeggiator* arp, QWidget* parent = NULL ); virtual ~ArpeggiatorView(); @@ -81,8 +81,6 @@ private: TempoSyncKnob * m_arpTimeKnob; knob * m_arpGateKnob; - QLabel * m_arpDirectionLbl; - comboBox * m_arpDirectionComboBox; comboBox * m_arpModeComboBox; diff --git a/src/gui/widgets/InstrumentFunctionViews.cpp b/src/gui/widgets/InstrumentFunctionViews.cpp index 1e8e29ad3..543d9c6c4 100644 --- a/src/gui/widgets/InstrumentFunctionViews.cpp +++ b/src/gui/widgets/InstrumentFunctionViews.cpp @@ -23,6 +23,7 @@ */ #include +#include #include "InstrumentFunctions.h" #include "InstrumentFunctionViews.h" @@ -37,44 +38,37 @@ #include "tooltip.h" - -const int CHORDS_GROUPBOX_X = 4; -const int CHORDS_GROUPBOX_Y = 5; -const int CHORDS_GROUPBOX_WIDTH = 242; -const int CHORDS_GROUPBOX_HEIGHT = 65; -const int ARP_GROUPBOX_X = CHORDS_GROUPBOX_X; -const int ARP_GROUPBOX_Y = 10 + CHORDS_GROUPBOX_Y + CHORDS_GROUPBOX_HEIGHT; -const int ARP_GROUPBOX_WIDTH = CHORDS_GROUPBOX_WIDTH; -const int ARP_GROUPBOX_HEIGHT = 240 - ARP_GROUPBOX_Y; - - - -ChordCreatorView::ChordCreatorView( ChordCreator * _cc, QWidget * _parent ) : - QWidget( _parent ), +ChordCreatorView::ChordCreatorView( ChordCreator* cc, QWidget* parent ) : + QWidget( parent ), ModelView( NULL, this ), - m_cc( _cc ), - m_chordsGroupBox( new groupBox( tr( "CHORDS" ), this ) ), - m_chordsComboBox( new comboBox( m_chordsGroupBox ) ), - m_chordRangeKnob( new knob( knobBright_26, m_chordsGroupBox ) ) + m_cc( cc ), + m_chordsGroupBox( new groupBox( tr( "STACKING" ) ) ), + m_chordsComboBox( new comboBox() ), + m_chordRangeKnob( new knob( knobBright_26 ) ) { - move( CHORDS_GROUPBOX_X, CHORDS_GROUPBOX_Y ); - setFixedSize( 250, CHORDS_GROUPBOX_HEIGHT ); - m_chordsGroupBox->setGeometry( 0, 0, CHORDS_GROUPBOX_WIDTH, - CHORDS_GROUPBOX_HEIGHT ); + QHBoxLayout* topLayout = new QHBoxLayout( this ); + topLayout->setMargin( 0 ); + topLayout->addWidget( m_chordsGroupBox ); + QGridLayout* mainLayout = new QGridLayout( m_chordsGroupBox ); + mainLayout->setContentsMargins( 8, 18, 8, 8 ); + mainLayout->setColumnStretch( 0, 1 ); + mainLayout->setHorizontalSpacing( 20 ); + mainLayout->setVerticalSpacing( 1 ); - m_chordsComboBox->setGeometry( 10, 25, 140, 22 ); - + QLabel* chordLabel = new QLabel( tr( "Chord:" ) ); + chordLabel->setFont( pointSize<8>( chordLabel->font() ) ); m_chordRangeKnob->setLabel( tr( "RANGE" ) ); - m_chordRangeKnob->move( 164, 24 ); - m_chordRangeKnob->setHintText( tr( "Chord range:" ) + " ", " " + - tr( "octave(s)" ) ); + m_chordRangeKnob->setHintText( tr( "Chord range:" ) + " ", " " + tr( "octave(s)" ) ); m_chordRangeKnob->setWhatsThis( tr( "Use this knob for setting the chord range in octaves. " "The selected chord will be played within specified " "number of octaves." ) ); + mainLayout->addWidget( chordLabel, 0, 0 ); + mainLayout->addWidget( m_chordsComboBox, 1, 0 ); + mainLayout->addWidget( m_chordRangeKnob, 0, 1, 2, 1, Qt::AlignHCenter ); } @@ -102,22 +96,27 @@ void ChordCreatorView::modelChanged() -ArpeggiatorView::ArpeggiatorView( Arpeggiator * _arp, QWidget * _parent ) : - QWidget( _parent ), +ArpeggiatorView::ArpeggiatorView( Arpeggiator* arp, QWidget* parent ) : + QWidget( parent ), ModelView( NULL, this ), - m_a( _arp ), - m_arpGroupBox( new groupBox( tr( "ARPEGGIO" ), this ) ), - m_arpComboBox( new comboBox( m_arpGroupBox) ), - m_arpRangeKnob( new knob( knobBright_26, m_arpGroupBox ) ), - m_arpTimeKnob( new TempoSyncKnob( knobBright_26, m_arpGroupBox ) ), - m_arpGateKnob( new knob( knobBright_26, m_arpGroupBox ) ), - m_arpDirectionComboBox( new comboBox( m_arpGroupBox ) ), - m_arpModeComboBox( new comboBox( m_arpGroupBox ) ) + m_a( arp ), + m_arpGroupBox( new groupBox( tr( "ARPEGGIO" ) ) ), + m_arpComboBox( new comboBox() ), + m_arpRangeKnob( new knob( knobBright_26 ) ), + m_arpTimeKnob( new TempoSyncKnob( knobBright_26 ) ), + m_arpGateKnob( new knob( knobBright_26 ) ), + m_arpDirectionComboBox( new comboBox() ), + m_arpModeComboBox( new comboBox() ) { - move( ARP_GROUPBOX_X, ARP_GROUPBOX_Y ); - setFixedSize( 250, ARP_GROUPBOX_HEIGHT ); - m_arpGroupBox->setGeometry( 0, 0, ARP_GROUPBOX_WIDTH, - ARP_GROUPBOX_HEIGHT ); + QHBoxLayout* topLayout = new QHBoxLayout( this ); + topLayout->setMargin( 0 ); + topLayout->addWidget( m_arpGroupBox ); + + QGridLayout* mainLayout = new QGridLayout( m_arpGroupBox ); + mainLayout->setContentsMargins( 8, 18, 8, 8 ); + mainLayout->setColumnStretch( 0, 1 ); + mainLayout->setHorizontalSpacing( 20 ); + mainLayout->setVerticalSpacing( 1 ); m_arpGroupBox->setWhatsThis( tr( "An arpeggio is a method playing (especially plucked) " @@ -130,13 +129,8 @@ ArpeggiatorView::ArpeggiatorView( Arpeggiator * _arp, QWidget * _parent ) : "possible chords, you can select." ) ); - m_arpComboBox->setGeometry( 10, 25, 140, 22 ); - - m_arpRangeKnob->setLabel( tr( "RANGE" ) ); - m_arpRangeKnob->move( 164, 24 ); - m_arpRangeKnob->setHintText( tr( "Arpeggio range:" ) + " ", " " + - tr( "octave(s)" ) ); + m_arpRangeKnob->setHintText( tr( "Arpeggio range:" ) + " ", " " + tr( "octave(s)" ) ); m_arpRangeKnob->setWhatsThis( tr( "Use this knob for setting the arpeggio range in octaves. " "The selected arpeggio will be played within specified " @@ -144,9 +138,7 @@ ArpeggiatorView::ArpeggiatorView( Arpeggiator * _arp, QWidget * _parent ) : m_arpTimeKnob->setLabel( tr( "TIME" ) ); - m_arpTimeKnob->move( 164, 70 ); - m_arpTimeKnob->setHintText( tr( "Arpeggio time:" ) + " ", " " + - tr( "ms" ) ); + m_arpTimeKnob->setHintText( tr( "Arpeggio time:" ) + " ", " " + tr( "ms" ) ); m_arpTimeKnob->setWhatsThis( tr( "Use this knob for setting the arpeggio time in " "milliseconds. The arpeggio time specifies how long " @@ -154,7 +146,6 @@ ArpeggiatorView::ArpeggiatorView( Arpeggiator * _arp, QWidget * _parent ) : m_arpGateKnob->setLabel( tr( "GATE" ) ); - m_arpGateKnob->move( 204, 70 ); m_arpGateKnob->setHintText( tr( "Arpeggio gate:" ) + " ", tr( "%" ) ); m_arpGateKnob->setWhatsThis( tr( "Use this knob for setting the arpeggio gate. The " @@ -162,18 +153,28 @@ ArpeggiatorView::ArpeggiatorView( Arpeggiator * _arp, QWidget * _parent ) : "arpeggio-tone that should be played. With this you " "can make cool staccato arpeggios." ) ); - m_arpDirectionLbl = new QLabel( tr( "Direction:" ), m_arpGroupBox ); - m_arpDirectionLbl->setGeometry( 10, 60, 64, 10 ); - m_arpDirectionLbl->setFont( pointSize<8>( m_arpDirectionLbl->font() ) ); + QLabel* arpChordLabel = new QLabel( tr( "Chord:" ) ); + arpChordLabel->setFont( pointSize<8>( arpChordLabel->font() ) ); - m_arpDirectionComboBox->setGeometry( 10, 74, 140, 22 ); + QLabel* arpDirectionLabel = new QLabel( tr( "Direction:" ) ); + arpDirectionLabel->setFont( pointSize<8>( arpDirectionLabel->font() ) ); + QLabel* arpModeLabel = new QLabel( tr( "Mode:" ) ); + arpModeLabel->setFont( pointSize<8>( arpModeLabel->font() ) ); - QLabel * mode_lbl = new QLabel( tr( "Mode:" ), m_arpGroupBox ); - mode_lbl->setGeometry( 10, 110, 64, 10 ); - mode_lbl->setFont( pointSize<8>( mode_lbl->font() ) ); + mainLayout->addWidget( arpChordLabel, 0, 0 ); + mainLayout->addWidget( m_arpComboBox, 1, 0 ); + mainLayout->addWidget( arpDirectionLabel, 3, 0 ); + mainLayout->addWidget( m_arpDirectionComboBox, 4, 0 ); + mainLayout->addWidget( arpModeLabel, 6, 0 ); + mainLayout->addWidget( m_arpModeComboBox, 7, 0 ); - m_arpModeComboBox->setGeometry( 10, 124, 128, 22 ); + mainLayout->addWidget( m_arpRangeKnob, 0, 1, 2, 1, Qt::AlignHCenter ); + mainLayout->addWidget( m_arpTimeKnob, 3, 1, 2, 1, Qt::AlignHCenter ); + mainLayout->addWidget( m_arpGateKnob, 6, 1, 2, 1, Qt::AlignHCenter ); + + mainLayout->setRowMinimumHeight( 2, 10 ); + mainLayout->setRowMinimumHeight( 5, 10 ); } diff --git a/src/tracks/InstrumentTrack.cpp b/src/tracks/InstrumentTrack.cpp index 1e46f54a1..2b15cceca 100644 --- a/src/tracks/InstrumentTrack.cpp +++ b/src/tracks/InstrumentTrack.cpp @@ -1351,10 +1351,22 @@ InstrumentTrackWindow::InstrumentTrackWindow( InstrumentTrackView * _itv ) : // create tab-widgets m_ssView = new InstrumentSoundShapingView( m_tabWidget ); + + // FUNC tab QWidget* instrumentFunctions = new QWidget( m_tabWidget ); - m_chordView = new ChordCreatorView( &m_track->m_chordCreator, instrumentFunctions ); - m_arpView= new ArpeggiatorView( &m_track->m_arpeggiator, instrumentFunctions ); + QVBoxLayout* instrumentFunctionsLayout = new QVBoxLayout( instrumentFunctions ); + instrumentFunctionsLayout->setMargin( 5 ); + m_chordView = new ChordCreatorView( &m_track->m_chordCreator ); + m_arpView= new ArpeggiatorView( &m_track->m_arpeggiator ); + + instrumentFunctionsLayout->addWidget( m_chordView ); + instrumentFunctionsLayout->addWidget( m_arpView ); + instrumentFunctionsLayout->addStretch(); + + // MIDI tab m_midiView = new InstrumentMidiIOView( m_tabWidget ); + + // FX tab m_effectView = new EffectRackView( m_track->m_audioPort.effects(), m_tabWidget ); m_tabWidget->addTab( m_ssView, tr( "ENV/LFO" ), 1 );