Refactor SetupDialog

This commit is contained in:
Johannes Lorenz
2018-12-01 10:16:25 +01:00
parent 3922d25b50
commit cf3d7950b1

View File

@@ -203,126 +203,45 @@ SetupDialog::SetupDialog( ConfigTabs _tab_to_open ) :
const int HeaderSize = 30;
int labelNumber = 0;
auto addLedCheckBox = [&misc_tw, &labelNumber, this](
const char* ledText,
bool initialState,
const char* toggledSlot
){
LedCheckBox * checkBox = new LedCheckBox(tr(ledText), misc_tw);
labelNumber++;
checkBox->move(XDelta, YDelta*labelNumber);
checkBox->setChecked(initialState);
connect(checkBox, SIGNAL(toggled(bool)), this, toggledSlot);
};
LedCheckBox * enable_tooltips = new LedCheckBox(
tr( "Enable tooltips" ),
misc_tw );
labelNumber++;
enable_tooltips->move( XDelta, YDelta*labelNumber );
enable_tooltips->setChecked( m_toolTips );
connect( enable_tooltips, SIGNAL( toggled( bool ) ),
this, SLOT( toggleToolTips( bool ) ) );
LedCheckBox * restart_msg = new LedCheckBox(
tr( "Show restart warning after changing settings" ),
misc_tw );
labelNumber++;
restart_msg->move( XDelta, YDelta*labelNumber );
restart_msg->setChecked( m_warnAfterSetup );
connect( restart_msg, SIGNAL( toggled( bool ) ),
this, SLOT( toggleWarnAfterSetup( bool ) ) );
LedCheckBox * dbfs = new LedCheckBox( tr( "Display volume as dBFS " ),
misc_tw );
labelNumber++;
dbfs->move( XDelta, YDelta*labelNumber );
dbfs->setChecked( m_displaydBFS );
connect( dbfs, SIGNAL( toggled( bool ) ),
this, SLOT( toggleDisplaydBFS( bool ) ) );
LedCheckBox * mmpz = new LedCheckBox(
tr( "Compress project files per default" ),
misc_tw );
labelNumber++;
mmpz->move( XDelta, YDelta*labelNumber );
mmpz->setChecked( m_MMPZ );
connect( mmpz, SIGNAL( toggled( bool ) ),
this, SLOT( toggleMMPZ( bool ) ) );
LedCheckBox * oneitw = new LedCheckBox(
tr( "One instrument track window mode" ),
misc_tw );
labelNumber++;
oneitw->move( XDelta, YDelta*labelNumber );
oneitw->setChecked( m_oneInstrumentTrackWindow );
connect( oneitw, SIGNAL( toggled( bool ) ),
this, SLOT( toggleOneInstrumentTrackWindow( bool ) ) );
LedCheckBox * hqaudio = new LedCheckBox(
tr( "HQ-mode for output audio-device" ),
misc_tw );
labelNumber++;
hqaudio->move( XDelta, YDelta*labelNumber );
hqaudio->setChecked( m_hqAudioDev );
connect( hqaudio, SIGNAL( toggled( bool ) ),
this, SLOT( toggleHQAudioDev( bool ) ) );
LedCheckBox * compacttracks = new LedCheckBox(
tr( "Compact track buttons" ),
misc_tw );
labelNumber++;
compacttracks->move( XDelta, YDelta*labelNumber );
compacttracks->setChecked( m_compactTrackButtons );
connect( compacttracks, SIGNAL( toggled( bool ) ),
this, SLOT( toggleCompactTrackButtons( bool ) ) );
LedCheckBox * syncVST = new LedCheckBox(
tr( "Sync VST plugins to host playback" ),
misc_tw );
labelNumber++;
syncVST->move( XDelta, YDelta*labelNumber );
syncVST->setChecked( m_syncVSTPlugins );
connect( syncVST, SIGNAL( toggled( bool ) ),
this, SLOT( toggleSyncVSTPlugins( bool ) ) );
LedCheckBox * noteLabels = new LedCheckBox(
tr( "Enable note labels in piano roll" ),
misc_tw );
labelNumber++;
noteLabels->move( XDelta, YDelta*labelNumber );
noteLabels->setChecked( m_printNoteLabels );
connect( noteLabels, SIGNAL( toggled( bool ) ),
this, SLOT( toggleNoteLabels( bool ) ) );
LedCheckBox * displayWaveform = new LedCheckBox(
tr( "Enable waveform display by default" ),
misc_tw );
labelNumber++;
displayWaveform->move( XDelta, YDelta*labelNumber );
displayWaveform->setChecked( m_displayWaveform );
connect( displayWaveform, SIGNAL( toggled( bool ) ),
this, SLOT( toggleDisplayWaveform( bool ) ) );
LedCheckBox * disableAutoquit = new LedCheckBox(
tr( "Keep effects running even without input" ),
misc_tw );
labelNumber++;
disableAutoquit->move( XDelta, YDelta*labelNumber );
disableAutoquit->setChecked( m_disableAutoQuit );
connect( disableAutoquit, SIGNAL( toggled( bool ) ),
this, SLOT( toggleDisableAutoquit( bool ) ) );
LedCheckBox * disableBackup = new LedCheckBox(
tr( "Create backup file when saving a project" ),
misc_tw );
labelNumber++;
disableBackup->move( XDelta, YDelta*labelNumber );
disableBackup->setChecked( m_disableBackup );
connect( disableBackup, SIGNAL( toggled( bool ) ),
this, SLOT( toggleDisableBackup( bool ) ) );
LedCheckBox * openLastProject = new LedCheckBox(
tr( "Reopen last project on start" ),
misc_tw );
labelNumber++;
openLastProject->move( XDelta, YDelta*labelNumber );
openLastProject->setChecked( m_openLastProject );
connect( openLastProject, SIGNAL( toggled( bool ) ),
this, SLOT( toggleOpenLastProject( bool ) ) );
addLedCheckBox("Enable tooltips",
m_toolTips, SLOT(toggleToolTips(bool)));
addLedCheckBox("Show restart warning after changing settings",
m_warnAfterSetup, SLOT(toggleWarnAfterSetup(bool)));
addLedCheckBox("Display volume as dBFS ",
m_displaydBFS, SLOT(toggleDisplaydBFS(bool)));
addLedCheckBox("Compress project files per default",
m_MMPZ, SLOT(toggleMMPZ(bool)));
addLedCheckBox("One instrument track window mode",
m_oneInstrumentTrackWindow,
SLOT(toggleOneInstrumentTrackWindow(bool)));
addLedCheckBox("HQ-mode for output audio-device",
m_hqAudioDev, SLOT(toggleHQAudioDev(bool)));
addLedCheckBox("Compact track buttons",
m_compactTrackButtons, SLOT(toggleCompactTrackButtons(bool)));
addLedCheckBox("Sync VST plugins to host playback",
m_syncVSTPlugins, SLOT(toggleSyncVSTPlugins(bool)));
addLedCheckBox("Enable note labels in piano roll",
m_printNoteLabels, SLOT(toggleNoteLabels(bool)));
addLedCheckBox("Enable waveform display by default",
m_displayWaveform, SLOT(toggleDisplayWaveform(bool)));
addLedCheckBox("Keep effects running even without input",
m_disableAutoQuit, SLOT(toggleDisableAutoquit(bool)));
addLedCheckBox("Create backup file when saving a project",
m_disableBackup, SLOT(toggleDisableBackup(bool)));
addLedCheckBox("Reopen last project on start",
m_openLastProject, SLOT(toggleOpenLastProject(bool)));
misc_tw->setFixedHeight( YDelta*labelNumber + HeaderSize );
@@ -432,216 +351,83 @@ SetupDialog::SetupDialog( ConfigTabs _tab_to_open ) :
const int btnStart = 297;
// working-dir
TabWidget * lmms_wd_tw = new TabWidget( tr(
"LMMS working directory" ).toUpper(),
pathSelectors );
lmms_wd_tw->setFixedHeight( 48 );
auto addPathEntry = [&](const char* caption,
const QString& content,
const char* setSlot,
const char* openSlot,
QLineEdit*& lineEdit,
QWidget* twParent,
const char* pixmap = "project_open")
{
TabWidget * newTw = new TabWidget(tr(caption).toUpper(),
twParent);
newTw->setFixedHeight(48);
m_wdLineEdit = new QLineEdit( m_workingDir, lmms_wd_tw );
m_wdLineEdit->setGeometry( 10, 20, txtLength, 16 );
connect( m_wdLineEdit, SIGNAL( textChanged( const QString & ) ), this,
SLOT( setWorkingDir( const QString & ) ) );
lineEdit = new QLineEdit(content, newTw);
lineEdit->setGeometry(10, 20, txtLength, 16);
connect(lineEdit, SIGNAL(textChanged(const QString &)),
this, setSlot);
QPushButton * workingdir_select_btn = new QPushButton(
embed::getIconPixmap( "project_open", 16, 16 ),
"", lmms_wd_tw );
workingdir_select_btn->setFixedSize( 24, 24 );
workingdir_select_btn->move( btnStart, 16 );
connect( workingdir_select_btn, SIGNAL( clicked() ), this,
SLOT( openWorkingDir() ) );
// artwork-dir
TabWidget * artwork_tw = new TabWidget( tr(
"Themes directory" ).toUpper(),
pathSelectors );
artwork_tw->setFixedHeight( 48 );
m_adLineEdit = new QLineEdit( m_artworkDir, artwork_tw );
m_adLineEdit->setGeometry( 10, 20, txtLength, 16 );
connect( m_adLineEdit, SIGNAL( textChanged( const QString & ) ), this,
SLOT( setArtworkDir( const QString & ) ) );
QPushButton * artworkdir_select_btn = new QPushButton(
embed::getIconPixmap( "project_open", 16, 16 ),
"", artwork_tw );
artworkdir_select_btn->setFixedSize( 24, 24 );
artworkdir_select_btn->move( btnStart, 16 );
connect( artworkdir_select_btn, SIGNAL( clicked() ), this,
SLOT( openArtworkDir() ) );
// background artwork file
TabWidget * backgroundArtwork_tw = new TabWidget( tr(
"Background artwork" ).toUpper(), paths );
backgroundArtwork_tw->setFixedHeight( 48 );
m_baLineEdit = new QLineEdit( m_backgroundArtwork,
backgroundArtwork_tw );
m_baLineEdit->setGeometry( 10, 20, txtLength, 16 );
connect( m_baLineEdit, SIGNAL( textChanged( const QString & ) ), this,
SLOT( setBackgroundArtwork( const QString & ) ) );
QPushButton * backgroundartworkdir_select_btn = new QPushButton(
embed::getIconPixmap( "project_open", 16, 16 ),
"", backgroundArtwork_tw );
backgroundartworkdir_select_btn->setFixedSize( 24, 24 );
backgroundartworkdir_select_btn->move( btnStart, 16 );
connect( backgroundartworkdir_select_btn, SIGNAL( clicked() ), this,
SLOT( openBackgroundArtwork() ) );
// vst-dir
TabWidget * vst_tw = new TabWidget( tr(
"VST-plugin directory" ).toUpper(),
pathSelectors );
vst_tw->setFixedHeight( 48 );
m_vdLineEdit = new QLineEdit( m_vstDir, vst_tw );
m_vdLineEdit->setGeometry( 10, 20, txtLength, 16 );
connect( m_vdLineEdit, SIGNAL( textChanged( const QString & ) ), this,
SLOT( setVSTDir( const QString & ) ) );
QPushButton * vstdir_select_btn = new QPushButton(
embed::getIconPixmap( "project_open", 16, 16 ),
"", vst_tw );
vstdir_select_btn->setFixedSize( 24, 24 );
vstdir_select_btn->move( btnStart, 16 );
connect( vstdir_select_btn, SIGNAL( clicked() ), this,
SLOT( openVSTDir() ) );
// gig-dir
TabWidget * gig_tw = new TabWidget( tr(
"GIG directory" ).toUpper(),
pathSelectors );
gig_tw->setFixedHeight( 48 );
m_gigLineEdit = new QLineEdit( m_gigDir, gig_tw );
m_gigLineEdit->setGeometry( 10, 20, txtLength, 16 );
connect( m_gigLineEdit, SIGNAL( textChanged( const QString & ) ), this,
SLOT( setGIGDir( const QString & ) ) );
QPushButton * gigdir_select_btn = new QPushButton(
embed::getIconPixmap( "project_open", 16, 16 ),
"", gig_tw );
gigdir_select_btn->setFixedSize( 24, 24 );
gigdir_select_btn->move( btnStart, 16 );
connect( gigdir_select_btn, SIGNAL( clicked() ), this,
SLOT( openGIGDir() ) );
// sf2-dir
TabWidget * sf2_tw = new TabWidget( tr(
"SF2 directory" ).toUpper(),
pathSelectors );
sf2_tw->setFixedHeight( 48 );
m_sf2LineEdit = new QLineEdit( m_sf2Dir, sf2_tw );
m_sf2LineEdit->setGeometry( 10, 20, txtLength, 16 );
connect( m_sf2LineEdit, SIGNAL( textChanged( const QString & ) ), this,
SLOT( setSF2Dir( const QString & ) ) );
QPushButton * sf2dir_select_btn = new QPushButton(
embed::getIconPixmap( "project_open", 16, 16 ),
"", sf2_tw );
sf2dir_select_btn->setFixedSize( 24, 24 );
sf2dir_select_btn->move( btnStart, 16 );
connect( sf2dir_select_btn, SIGNAL( clicked() ), this,
SLOT( openSF2Dir() ) );
// LADSPA-dir
TabWidget * lad_tw = new TabWidget( tr(
"LADSPA plugin directories" ).toUpper(),
paths );
lad_tw->setFixedHeight( 48 );
m_ladLineEdit = new QLineEdit( m_ladDir, lad_tw );
m_ladLineEdit->setGeometry( 10, 20, txtLength, 16 );
connect( m_ladLineEdit, SIGNAL( textChanged( const QString & ) ), this,
SLOT( setLADSPADir( const QString & ) ) );
QPushButton * laddir_select_btn = new QPushButton(
embed::getIconPixmap( "add_folder", 16, 16 ),
"", lad_tw );
laddir_select_btn->setFixedSize( 24, 24 );
laddir_select_btn->move( btnStart, 16 );
connect( laddir_select_btn, SIGNAL( clicked() ), this,
SLOT( openLADSPADir() ) );
QPushButton * selectBtn = new QPushButton(
embed::getIconPixmap(pixmap, 16, 16),
"", newTw);
selectBtn->setFixedSize(24, 24);
selectBtn->move(btnStart, 16);
connect(selectBtn, SIGNAL(clicked()), this, openSlot);
pathSelectorLayout->addWidget(newTw);
pathSelectorLayout->addSpacing(10);
};
addPathEntry("LMMS working directory", m_workingDir,
SLOT(setWorkingDir(const QString &)),
SLOT(openWorkingDir()),
m_wdLineEdit, pathSelectors);
addPathEntry("GIG directory", m_gigDir,
SLOT(setGIGDir(const QString &)),
SLOT(openGIGDir()),
m_gigLineEdit, pathSelectors);
addPathEntry("SF2 directory", m_sf2Dir,
SLOT(setSF2Dir(const QString &)),
SLOT(openSF2Dir()),
m_sf2LineEdit, pathSelectors);
addPathEntry("VST-plugin directory", m_vstDir,
SLOT(setVSTDir(const QString &)),
SLOT(openVSTDir()),
m_vdLineEdit, pathSelectors);
addPathEntry("LADSPA plugin directories", m_ladDir,
SLOT(setLADSPADir(const QString &)),
SLOT(openLADSPADir()),
m_ladLineEdit, paths,
"add_folder");
#ifdef LMMS_HAVE_STK
// STK-dir
TabWidget * stk_tw = new TabWidget( tr(
"STK rawwave directory" ).toUpper(),
paths );
stk_tw->setFixedHeight( 48 );
m_stkLineEdit = new QLineEdit( m_stkDir, stk_tw );
m_stkLineEdit->setGeometry( 10, 20, txtLength, 16 );
connect( m_stkLineEdit, SIGNAL( textChanged( const QString & ) ), this,
SLOT( setSTKDir( const QString & ) ) );
QPushButton * stkdir_select_btn = new QPushButton(
embed::getIconPixmap( "project_open", 16, 16 ),
"", stk_tw );
stkdir_select_btn->setFixedSize( 24, 24 );
stkdir_select_btn->move( btnStart, 16 );
connect( stkdir_select_btn, SIGNAL( clicked() ), this,
SLOT( openSTKDir() ) );
addPathEntry("STK rawwave directory", m_stkDir,
SLOT(setSTKDir(const QString &)),
SLOT(openSTKDir()),
m_stkLineEdit, paths);
#endif
#ifdef LMMS_HAVE_FLUIDSYNTH
// Soundfont
TabWidget * sf_tw = new TabWidget( tr(
"Default Soundfont File" ).toUpper(), paths );
sf_tw->setFixedHeight( 48 );
m_sfLineEdit = new QLineEdit( m_defaultSoundfont, sf_tw );
m_sfLineEdit->setGeometry( 10, 20, txtLength, 16 );
connect( m_sfLineEdit, SIGNAL( textChanged( const QString & ) ), this,
SLOT( setDefaultSoundfont( const QString & ) ) );
QPushButton * sf_select_btn = new QPushButton(
embed::getIconPixmap( "project_open", 16, 16 ),
"", sf_tw );
sf_select_btn->setFixedSize( 24, 24 );
sf_select_btn->move( btnStart, 16 );
connect( sf_select_btn, SIGNAL( clicked() ), this,
SLOT( openDefaultSoundfont() ) );
#endif
pathSelectors->setLayout( pathSelectorLayout );
pathSelectorLayout->addWidget( lmms_wd_tw );
pathSelectorLayout->addSpacing( 10 );
pathSelectorLayout->addWidget( gig_tw );
pathSelectorLayout->addSpacing( 10 );
pathSelectorLayout->addWidget( sf2_tw );
pathSelectorLayout->addSpacing( 10 );
pathSelectorLayout->addWidget( vst_tw );
pathSelectorLayout->addSpacing( 10 );
pathSelectorLayout->addWidget( lad_tw );
#ifdef LMMS_HAVE_STK
pathSelectorLayout->addSpacing( 10 );
pathSelectorLayout->addWidget( stk_tw );
#endif
#ifdef LMMS_HAVE_FLUIDSYNTH
pathSelectorLayout->addSpacing( 10 );
pathSelectorLayout->addWidget( sf_tw );
#endif
pathSelectorLayout->addSpacing( 10 );
pathSelectorLayout->addWidget( artwork_tw );
pathSelectorLayout->addSpacing( 10 );
addPathEntry("Default Soundfont File", m_defaultSoundfont,
SLOT(setDefaultSoundfont(const QString &)),
SLOT(openDefaultSoundfont()),
m_sfLineEdit, paths);
#endif
addPathEntry("Themes directory", m_artworkDir,
SLOT(setArtworkDir(const QString &)),
SLOT(openArtwortDir()),
m_adLineEdit, pathSelectors);
pathSelectorLayout->addStretch();
pathSelectorLayout->addWidget( backgroundArtwork_tw );
pathSelectorLayout->addSpacing( 10 );
addPathEntry("Background artwork", m_backgroundArtwork,
SLOT(setBackgroundArtwork(const QString &)),
SLOT(openBackgroundArtwork()),
m_baLineEdit, paths);
pathSelectors->setLayout(pathSelectorLayout);
dir_layout->addWidget( pathSelectors );
pathScroll->setWidget( pathSelectors );
pathScroll->setWidgetResizable( true );
dir_layout->addWidget(pathSelectors);
pathScroll->setWidget(pathSelectors);
pathScroll->setWidgetResizable(true);