148 setWindowTitle( tr(
"Preferences" ) );
152 setWindowFlags( windowFlags() | Qt::CustomizeWindowHint |
153 Qt::WindowMinMaxButtonsHint );
164 QSize generalTabWidgetSize( 60, 24 );
179 useLashCheckbox->setChecked( pPref->
m_bsetLash );
181 sBcountOffset->setSize( generalTabWidgetSize );
183 sBstartOffset->setSize( generalTabWidgetSize );
186 sBmaxBars->setSize( generalTabWidgetSize );
188 sBmaxLayers->setSize( generalTabWidgetSize );
190 autosaveSpinBox->setSize( generalTabWidgetSize );
194 rubberbandLineEdit->setText( pathtoRubberband );
196#ifdef H2CORE_HAVE_RUBBERBAND
197 pathToRubberbandExLable->hide();
198 rubberbandLineEdit->hide();
202 languageComboBox->setSize( QSize( 310, 24 ) );
204 QLocale loc( sLang );
205 QString sLabel = loc.nativeLanguageName() +
" (" + loc.nativeCountryName() +
')';
206 languageComboBox->addItem( sLabel, QVariant( sLang ) );
209 QStringList languages;
211 if ( !sPreferredLanguage.isNull() ) {
212 languages << sPreferredLanguage;
214 languages << QLocale::system().uiLanguages();
217 int nLanguage = languageComboBox->findData( QVariant( sLanguage ) );
218 if ( nLanguage != -1 ) {
219 languageComboBox->setCurrentIndex( nLanguage );
226 QSize audioTabWidgetSizeTop( 240, 24 );
228 QSize audioTabWidgetSizeBottom( 184, 24 );
230 driverComboBox->setSize( audioTabWidgetSizeTop );
231 driverComboBox->clear();
232 driverComboBox->addItem(
235 driverComboBox->addItem(
239 const auto sAudioDriver =
241 const auto nAudioDriverIndex = driverComboBox->findText( sAudioDriver );
242 if ( nAudioDriverIndex > -1 ) {
243 driverComboBox->setCurrentIndex( nAudioDriverIndex );
246 driverInfoLbl->setText( tr(
"Select your Audio Driver" ));
247 ERRORLOG( QString(
"Unknown audio driver from preferences [%1]" )
248 .arg( sAudioDriver ) );
250 connect( driverComboBox, SIGNAL(activated(
int)),
this,
255 portaudioHostAPIComboBox->setSize( audioTabWidgetSizeTop );
257 connect( portaudioHostAPIComboBox, SIGNAL(activated(
int)),
this,
260 m_pAudioDeviceTxt->setSize( audioTabWidgetSizeTop );
262 connect( m_pAudioDeviceTxt, SIGNAL(currentTextChanged(
const QString&)),
265 latencyTargetSpinBox->setSize( QSize( 55, 23 ) );
267 connect( latencyTargetSpinBox, SIGNAL(valueChanged(
int)),
this,
270 bufferSizeSpinBox->setSize( audioTabWidgetSizeTop );
272 connect( bufferSizeSpinBox, SIGNAL(valueChanged(
int)),
this,
275 sampleRateComboBox->setSize( audioTabWidgetSizeTop );
278 sampleRateComboBox->setCurrentIndex( 0 );
281 sampleRateComboBox->setCurrentIndex( 1 );
284 sampleRateComboBox->setCurrentIndex( 2 );
287 sampleRateComboBox->setCurrentIndex( 3 );
292 connect( sampleRateComboBox, SIGNAL(editTextChanged(
const QString&)),
this,
302 trackOutputComboBox->setSize( audioTabWidgetSizeTop );
305 trackOutputComboBox->setCurrentIndex( 0 );
308 trackOutputComboBox->setCurrentIndex( 1 );
311 ERRORLOG( QString(
"Unknown JACK track output mode [%1]" )
317 metronomeVolumeSpinBox->setSize( audioTabWidgetSizeBottom );
319 metronomeVolumeSpinBox->setValue(metronomeVol);
322 maxVoicesTxt->setSize( audioTabWidgetSizeBottom );
325 resampleComboBox->setSize( audioTabWidgetSizeBottom );
326 resampleComboBox->setCurrentIndex(
static_cast<int>(pHydrogen->getAudioEngine()->getSampler()->getInterpolateMode() ) );
333 QSize midiTabWidgetSize = QSize( 309, 24 );
334 m_pMidiDriverComboBox->setSize( midiTabWidgetSize );
335 m_pMidiDriverComboBox->clear();
336#ifdef H2CORE_HAVE_ALSA
337 m_pMidiDriverComboBox->addItem(
"ALSA" );
339#ifdef H2CORE_HAVE_PORTMIDI
340 m_pMidiDriverComboBox->addItem(
"PortMidi" );
342#ifdef H2CORE_HAVE_COREMIDI
343 m_pMidiDriverComboBox->addItem(
"CoreMIDI" );
345#ifdef H2CORE_HAVE_JACK
346 m_pMidiDriverComboBox->addItem(
"JACK-MIDI" );
349 if ( m_pMidiDriverComboBox->findText(pPref->
m_sMidiDriver) > -1 ) {
350 m_pMidiDriverComboBox->setCurrentIndex(m_pMidiDriverComboBox->findText(pPref->
m_sMidiDriver));
352 driverInfoLbl->setText( tr(
"Select your MIDI Driver" ) );
355 connect(m_pMidiDriverComboBox, SIGNAL(currentIndexChanged(
int)),
358 midiPortChannelComboBox->setSize( midiTabWidgetSize );
359 midiPortChannelComboBox->setEnabled(
false );
360 midiPortComboBox->setSize( midiTabWidgetSize );
361 midiPortComboBox->setEnabled(
false );
362 connect( midiPortComboBox, SIGNAL(activated(
int)),
this,
366 midiPortComboBox->clear();
367 midiPortComboBox->addItem( pCommonStrings->getPreferencesNone() );
368 if ( pHydrogen->getMidiInput() !=
nullptr ) {
369 std::vector<QString> midiOutList = pHydrogen->getMidiInput()->getOutputPortList();
371 if ( midiOutList.size() != 0 ) {
372 midiPortComboBox->setEnabled(
true );
373 midiPortChannelComboBox->setEnabled(
true );
375 for (uint i = 0; i < midiOutList.size(); i++) {
376 QString sPortName = midiOutList[i];
377 midiPortComboBox->addItem( sPortName );
380 midiPortComboBox->setCurrentIndex( i + 1 );
386 midiOutportComboBox->setSize( midiTabWidgetSize );
387 midiOutportComboBox->clear();
388 midiOutportComboBox->addItem( pCommonStrings->getPreferencesNone() );
389 if ( pHydrogen->getMidiOutput() !=
nullptr ) {
390 std::vector<QString> midiOutList = pHydrogen->getMidiOutput()->getInputPortList();
392 if ( midiOutList.size() != 0 ) {
393 midiOutportComboBox->setEnabled(
true );
394 midiPortChannelComboBox->setEnabled(
true );
396 for (uint i = 0; i < midiOutList.size(); i++) {
397 QString sPortName = midiOutList[i];
398 midiOutportComboBox->addItem( sPortName );
401 midiOutportComboBox->setCurrentIndex( i + 1 );
405 connect( midiOutportComboBox, SIGNAL(activated(
int)),
this,
409 midiPortChannelComboBox->setCurrentIndex( 0 );
432 connect(enableOscCheckbox, SIGNAL(toggled(
bool)),
this, SLOT(
toggleOscCheckBox(
bool )));
433 incomingOscPortSpinBox->setSize( QSize( 66, 24 ) );
437 oscTemporaryPortLabel->show();
438 oscTemporaryPortLabel->setText( QString(
"<b><i><font color=" )
441 .append( tr(
"The select port is unavailable. This instance uses the following temporary port instead:" ) )
442 .append(
"</font></i></b>" ) );
443 oscTemporaryPort->show();
444 oscTemporaryPort->setEnabled(
false );
447 oscTemporaryPortLabel->hide();
448 oscTemporaryPort->hide();
452 enableOscFeedbackCheckbox->hide();
453 incomingOscPortSpinBox->hide();
454 incomingOscPortLabel->hide();
455 oscTemporaryPortLabel->hide();
456 oscTemporaryPort->hide();
461 QSize appearanceTabWidgetSize = QSize( 277, 24 );
462 connect( importThemeButton, SIGNAL(clicked(
bool)), SLOT(
importTheme()));
463 connect( exportThemeButton, SIGNAL(clicked(
bool)), SLOT(
exportTheme()));
464 connect( resetThemeButton, SIGNAL(clicked(
bool)),
this, SLOT(
resetTheme()));
467 fontSizeComboBox->setSize( appearanceTabWidgetSize );
471 connect( fontSizeComboBox, SIGNAL( currentIndexChanged(
int) ),
475 UIChangeWarningLabel->hide();
476 UIChangeWarningLabel->setText( QString(
"<b><i><font color=" )
479 .append( tr(
"For changes of the interface layout to take effect Hydrogen must be restarted." ) )
480 .append(
"</font></i></b>" ) );
482 styleComboBox->setSize( appearanceTabWidgetSize );
483 mixerFalloffComboBox->setSize( appearanceTabWidgetSize );
484 uiLayoutComboBox->setSize( appearanceTabWidgetSize );
485 uiScalingPolicyComboBox->setSize( appearanceTabWidgetSize );
486 iconColorComboBox->setSize( appearanceTabWidgetSize );
487 coloringMethodAuxSpinBox->setSize( appearanceTabWidgetSize );
489 connect( styleComboBox, SIGNAL( activated(
int) ),
this,
491 connect( uiLayoutComboBox, SIGNAL( currentIndexChanged(
int) ),
this,
493 connect( uiScalingPolicyComboBox, SIGNAL( currentIndexChanged(
int) ),
this,
495 connect( mixerFalloffComboBox, SIGNAL( currentIndexChanged(
int) ),
this,
497 connect( iconColorComboBox, SIGNAL(currentIndexChanged(
int)),
this,
499 connect( coloringMethodAuxSpinBox, SIGNAL( valueChanged(
int)),
this, SLOT(
onColorNumberChanged(
int ) ) );
502 int nButtonSize = fontSizeComboBox->height();
506 float fLineWidth = 308;
507 int nButtonsPerLine = std::floor( fLineWidth /
static_cast<float>(nButtonSize + 6) );
509 colorSelectionGrid->setHorizontalSpacing( 4 );
510 for (
int ii = 0; ii <
m_pCurrentTheme->getInterfaceTheme()->m_nMaxPatternColors; ii++ ) {
517 colorSelectionGrid->addWidget( bbutton,
518 std::floor(
static_cast<float>( ii ) /
519 static_cast<float>( nButtonsPerLine ) ),
520 (ii % nButtonsPerLine) + 1);
524 coloringMethodCombo->setSize( appearanceTabWidgetSize );
525 coloringMethodCombo->clear();
526 coloringMethodCombo->addItem(tr(
"Automatic"));
527 coloringMethodCombo->addItem(tr(
"Custom"));
528 connect( coloringMethodCombo, SIGNAL( currentIndexChanged(
int) ),
this, SLOT(
onColoringMethodChanged(
int) ) );
531 colorButton->setAutoFillBackground(
true);
538 pTopLevelItem =
new ColorTreeItem( 0x000, colorTree, tr(
"General" ) );
540 new ColorTreeItem( 0x101, pTopLevelItem, tr(
"Window Text" ) );
542 new ColorTreeItem( 0x103, pTopLevelItem, tr(
"Alternate Base" ) );
545 new ColorTreeItem( 0x106, pTopLevelItem, tr(
"Button Text" ) );
547 new ColorTreeItem( 0x108, pTopLevelItem, tr(
"Mid Light" ) );
550 new ColorTreeItem( 0x10b, pTopLevelItem, tr(
"Shadow Text" ) );
551 new ColorTreeItem( 0x10c, pTopLevelItem, tr(
"Highlight" ) );
552 new ColorTreeItem( 0x10d, pTopLevelItem, tr(
"Highlight Text" ) );
553 new ColorTreeItem( 0x10e, pTopLevelItem, tr(
"Selection Highlight" ) );
554 new ColorTreeItem( 0x10f, pTopLevelItem, tr(
"Selection Inactive" ) );
555 new ColorTreeItem( 0x110, pTopLevelItem, tr(
"Tool Tip Base" ) );
556 new ColorTreeItem( 0x111, pTopLevelItem, tr(
"Tool Tip Text" ) );
558 auto pWidgetItem =
new ColorTreeItem( 0x000, colorTree, tr(
"Widgets" ) );
559 auto pDefaultItem =
new ColorTreeItem( 0x200, pWidgetItem, tr(
"Widget" ) );
560 new ColorTreeItem( 0x201, pWidgetItem, tr(
"Widget Text" ) );
562 new ColorTreeItem( 0x203, pWidgetItem, tr(
"Accent Text" ) );
564 new ColorTreeItem( 0x205, pWidgetItem, tr(
"Button Red Text" ) );
566 new ColorTreeItem( 0x207, pWidgetItem, tr(
"Spin Box Text" ) );
570 pTopLevelItem =
new ColorTreeItem( 0x000, colorTree, tr(
"Song Editor" ) );
571 new ColorTreeItem( 0x300, pTopLevelItem, tr(
"Background" ) );
572 new ColorTreeItem( 0x301, pTopLevelItem, tr(
"Alternate Row" ) );
573 new ColorTreeItem( 0x302, pTopLevelItem, tr(
"Virtual Row" ) );
574 new ColorTreeItem( 0x303, pTopLevelItem, tr(
"Selected Row" ) );
575 new ColorTreeItem( 0x304, pTopLevelItem, tr(
"Selected Row Text" ) );
578 new ColorTreeItem( 0x307, pTopLevelItem, tr(
"Automation Background" ) );
579 new ColorTreeItem( 0x308, pTopLevelItem, tr(
"Automation Line" ) );
580 new ColorTreeItem( 0x309, pTopLevelItem, tr(
"Automation Node" ) );
581 new ColorTreeItem( 0x30a, pTopLevelItem, tr(
"Stacked Mode On" ) );
582 new ColorTreeItem( 0x30b, pTopLevelItem, tr(
"Stacked Mode On Next" ) );
583 new ColorTreeItem( 0x30c, pTopLevelItem, tr(
"Stacked Mode Off Next" ) );
585 pTopLevelItem =
new ColorTreeItem( 0x000, colorTree, tr(
"Pattern Editor" ) );
586 new ColorTreeItem( 0x400, pTopLevelItem, tr(
"Background" ) );
587 new ColorTreeItem( 0x401, pTopLevelItem, tr(
"Alternate Row" ) );
588 new ColorTreeItem( 0x402, pTopLevelItem, tr(
"Selected Row" ) );
589 new ColorTreeItem( 0x403, pTopLevelItem, tr(
"Selected Row Text" ) );
590 new ColorTreeItem( 0x404, pTopLevelItem, tr(
"Octave Row" ) );
592 new ColorTreeItem( 0x406, pTopLevelItem, tr(
"Note (Full Velocity)" ) );
593 new ColorTreeItem( 0x407, pTopLevelItem, tr(
"Note (Default Velocity)" ) );
594 new ColorTreeItem( 0x408, pTopLevelItem, tr(
"Note (Half Velocity)" ) );
595 new ColorTreeItem( 0x409, pTopLevelItem, tr(
"Note (Zero Velocity)" ) );
597 new ColorTreeItem( 0x40b, pTopLevelItem, tr(
"Grid Line 1" ) );
598 new ColorTreeItem( 0x40c, pTopLevelItem, tr(
"Grid Line 2" ) );
599 new ColorTreeItem( 0x40d, pTopLevelItem, tr(
"Grid Line 3" ) );
600 new ColorTreeItem( 0x40e, pTopLevelItem, tr(
"Grid Line 4" ) );
601 new ColorTreeItem( 0x40f, pTopLevelItem, tr(
"Grid Line 5" ) );
602 new ColorTreeItem( 0x410, pTopLevelItem, tr(
"Grid Line 6" ) );
604 colorButton->setEnabled(
false );
606 connect( colorTree, SIGNAL(itemSelectionChanged()),
608 connect( colorButton, SIGNAL(colorChanged()),
610 connect(rslider, SIGNAL(valueChanged(
int)), SLOT(
rsliderChanged(
int)));
611 connect(gslider, SIGNAL(valueChanged(
int)), SLOT(
gsliderChanged(
int)));
612 connect(bslider, SIGNAL(valueChanged(
int)), SLOT(
bsliderChanged(
int)));
613 connect(hslider, SIGNAL(valueChanged(
int)), SLOT(
hsliderChanged(
int)));
614 connect(sslider, SIGNAL(valueChanged(
int)), SLOT(
ssliderChanged(
int)));
615 connect(vslider, SIGNAL(valueChanged(
int)), SLOT(
vsliderChanged(
int)));
617 connect(rval, SIGNAL(valueChanged(
int)), SLOT(
rsliderChanged(
int)));
618 connect(gval, SIGNAL(valueChanged(
int)), SLOT(
gsliderChanged(
int)));
619 connect(bval, SIGNAL(valueChanged(
int)), SLOT(
bsliderChanged(
int)));
620 connect(hval, SIGNAL(valueChanged(
int)), SLOT(
hsliderChanged(
int)));
621 connect(sval, SIGNAL(valueChanged(
int)), SLOT(
ssliderChanged(
int)));
622 connect(vval, SIGNAL(valueChanged(
int)), SLOT(
vsliderChanged(
int)));
627 colorTree->expandItem( pWidgetItem );
628 colorTree->setCurrentItem( pDefaultItem );
804 auto pCommonStrings = pH2App->getCommonStrings();
811 bool bAudioOptionAltered =
false;
816 if ( QMessageBox::information(
818 tr(
"Driver restart required.\n Restart driver?"),
819 QMessageBox::Ok | QMessageBox::Cancel,
820 QMessageBox::Cancel ) == QMessageBox::Cancel ) {
827 if ( pHydrogen->getAudioOutput() ==
nullptr ||
828 dynamic_cast<NullDriver*
>(pHydrogen->getAudioOutput()) !=
nullptr ) {
829 if ( QMessageBox::warning(
830 this,
"Hydrogen", QString(
"%1\n" )
831 .arg( pCommonStrings->getAudioDriverNotPresent() )
832 .append( tr(
"Are you sure you want to proceed?" ) ),
833 QMessageBox::Ok | QMessageBox::Cancel,
834 QMessageBox::Cancel ) == QMessageBox::Cancel ) {
839 if ( pPref->m_fMetronomeVolume != metronomeVolumeSpinBox->value() / 100.0 ) {
840 pPref->m_fMetronomeVolume = metronomeVolumeSpinBox->value() / 100.0;
841 bAudioOptionAltered =
true;
845 if ( pPref->m_nMaxNotes != maxVoicesTxt->value() ) {
846 pPref->m_nMaxNotes = maxVoicesTxt->value();
847 bAudioOptionAltered =
true;
851 if (
static_cast<int>( pHydrogen->getAudioEngine()->getSampler()->getInterpolateMode() ) !=
852 resampleComboBox->currentIndex() ) {
853 switch ( resampleComboBox->currentIndex() ){
870 bAudioOptionAltered =
true;
873 if ( bAudioOptionAltered ) {
882 bool bMidiOptionAltered =
false;
887 midiTable->saveMidiTable();
892 if ( m_pMidiDriverComboBox->currentText() ==
"ALSA" &&
893 pPref->m_sMidiDriver !=
"ALSA" ) {
894 pPref->m_sMidiDriver =
"ALSA";
895 bMidiOptionAltered =
true;
897 else if ( m_pMidiDriverComboBox->currentText() ==
"PortMidi" &&
898 pPref->m_sMidiDriver !=
"PortMidi" ) {
899 pPref->m_sMidiDriver =
"PortMidi";
900 bMidiOptionAltered =
true;
902 else if ( m_pMidiDriverComboBox->currentText() ==
"CoreMIDI" &&
903 pPref->m_sMidiDriver !=
"CoreMIDI" ) {
904 pPref->m_sMidiDriver =
"CoreMIDI";
905 bMidiOptionAltered =
true;
907 else if ( m_pMidiDriverComboBox->currentText() ==
"JACK-MIDI" &&
908 pPref->m_sMidiDriver !=
"JACK-MIDI" ) {
909 pPref->m_sMidiDriver =
"JACK-MIDI";
910 bMidiOptionAltered =
true;
913 if ( pPref->m_bMidiNoteOffIgnore != m_pIgnoreNoteOffCheckBox->isChecked() ) {
914 pPref->m_bMidiNoteOffIgnore = m_pIgnoreNoteOffCheckBox->isChecked();
915 bMidiOptionAltered =
true;
918 if ( pPref->m_bMidiFixedMapping != m_pFixedMapping->isChecked() ) {
919 pPref->m_bMidiFixedMapping = m_pFixedMapping->isChecked();
920 bMidiOptionAltered =
true;
923 if ( pPref->m_bMidiDiscardNoteAfterAction !=
924 m_pDiscardMidiMsgCheckbox->isChecked() ) {
925 pPref->m_bMidiDiscardNoteAfterAction = m_pDiscardMidiMsgCheckbox->isChecked();
926 bMidiOptionAltered =
true;
929 if ( pPref->m_bEnableMidiFeedback !=
930 m_pEnableMidiFeedbackCheckBox->isChecked() ) {
931 pPref->m_bEnableMidiFeedback = m_pEnableMidiFeedbackCheckBox->isChecked();
932 bMidiOptionAltered =
true;
935 QString sNewMidiPortName = midiPortComboBox->currentText();
936 if ( midiPortComboBox->currentIndex() == 0 ) {
939 if ( pPref->m_sMidiPortName != sNewMidiPortName ) {
940 pPref->m_sMidiPortName = sNewMidiPortName;
941 bMidiOptionAltered =
true;
945 QString sNewMidiOutputPortName = midiOutportComboBox->currentText();
946 if ( midiOutportComboBox->currentIndex() == 0 ) {
949 if ( pPref->m_sMidiOutputPortName != sNewMidiOutputPortName ) {
950 pPref->m_sMidiOutputPortName = sNewMidiOutputPortName;
951 bMidiOptionAltered =
true;
955 if ( pPref->m_nMidiChannelFilter !=
956 midiPortChannelComboBox->currentIndex() - 1 ) {
957 pPref->m_nMidiChannelFilter = midiPortChannelComboBox->currentIndex() - 1;
958 bMidiOptionAltered =
true;
961 if ( bMidiOptionAltered ) {
970 bool bOscOptionAltered =
false;
972 if ( enableOscCheckbox->isChecked() != pPref->getOscServerEnabled() ) {
973 pPref->setOscServerEnabled( enableOscCheckbox->isChecked() );
974 pHydrogen->toggleOscServer( enableOscCheckbox->isChecked() );
975 bOscOptionAltered =
true;
978 if ( pPref->getOscFeedbackEnabled() !=
979 enableOscFeedbackCheckbox->isChecked() ) {
980 pPref->setOscFeedbackEnabled( enableOscFeedbackCheckbox->isChecked() );
981 bOscOptionAltered =
true;
984 if ( incomingOscPortSpinBox->value() != pPref->getOscServerPort() ) {
985 pPref->setOscServerPort( incomingOscPortSpinBox->value() );
986 pHydrogen->recreateOscServer();
987 bOscOptionAltered =
true;
990 if ( bOscOptionAltered ) {
999 bool bGeneralOptionAltered =
false;
1001 if ( pPref->isRestoreLastSongEnabled() !=
1002 restoreLastUsedSongCheckbox->isChecked() ) {
1003 pPref->setRestoreLastSongEnabled( restoreLastUsedSongCheckbox->isChecked() );
1004 bGeneralOptionAltered =
true;
1007 if ( pPref->isRestoreLastPlaylistEnabled() !=
1008 restoreLastUsedPlaylistCheckbox->isChecked() ) {
1009 pPref->setRestoreLastPlaylistEnabled( restoreLastUsedPlaylistCheckbox->isChecked() );
1010 bGeneralOptionAltered =
true;
1013 if ( pPref->isPlaylistUsingRelativeFilenames() !=
1014 useRelativePlaylistPathsCheckbox->isChecked() ) {
1015 pPref->setUseRelativeFilenamesForPlaylists( useRelativePlaylistPathsCheckbox->isChecked() );
1016 bGeneralOptionAltered =
true;
1019 if ( pPref->m_bsetLash != useLashCheckbox->isChecked() ) {
1020 pPref->m_bsetLash = useLashCheckbox->isChecked();
1021 bGeneralOptionAltered =
true;
1024 if ( pPref->hideKeyboardCursor() != hideKeyboardCursor->isChecked() ) {
1025 pPref->setHideKeyboardCursor( hideKeyboardCursor->isChecked() );
1026 bGeneralOptionAltered =
true;
1030 if ( pPref->m_rubberBandCLIexecutable != rubberbandLineEdit->text() ) {
1031 pPref->m_rubberBandCLIexecutable = rubberbandLineEdit->text();
1032 bGeneralOptionAltered =
true;
1036 if ( pPref->m_brestartLash ==
true ){
1037 pPref->m_bsetLash = true ;
1040 if ( pPref->m_countOffset != sBcountOffset->value() ) {
1041 pPref->m_countOffset = sBcountOffset->value();
1042 pHydrogen->setBcOffsetAdjust();
1043 bGeneralOptionAltered =
true;
1046 if ( pPref->m_startOffset != sBstartOffset->value() ) {
1047 pPref->m_startOffset = sBstartOffset->value();
1048 pHydrogen->setBcOffsetAdjust();
1049 bGeneralOptionAltered =
true;
1052 if ( pPref->getMaxBars() != sBmaxBars->value() ) {
1053 pPref->setMaxBars( sBmaxBars->value() );
1054 bGeneralOptionAltered =
true;
1057 if ( pPref->getMaxLayers() != sBmaxLayers->value() ) {
1058 pPref->setMaxLayers( sBmaxLayers->value() );
1059 bGeneralOptionAltered =
true;
1062 if ( pPref->m_nAutosavesPerHour != autosaveSpinBox->value() ) {
1063 pPref->m_nAutosavesPerHour = autosaveSpinBox->value();
1069 QString sPreferredLanguage = languageComboBox->currentData().toString();
1071 QMessageBox::information(
this,
"Hydrogen", tr(
"Hydrogen must be restarted for language change to take effect" ));
1072 pPref->setPreferredLanguage( sPreferredLanguage );
1073 bGeneralOptionAltered =
true;
1076 if ( bGeneralOptionAltered ) {
1089 QApplication::setOverrideCursor( Qt::WaitCursor );
1090 pHydrogen->restartDrivers();
1091 QApplication::restoreOverrideCursor();
1096 pPref->savePreferences();
1806 case 0x100:
return &pColorTheme->m_windowColor;
1807 case 0x101:
return &pColorTheme->m_windowTextColor;
1808 case 0x102:
return &pColorTheme->m_baseColor;
1809 case 0x103:
return &pColorTheme->m_alternateBaseColor;
1810 case 0x104:
return &pColorTheme->m_textColor;
1811 case 0x105:
return &pColorTheme->m_buttonColor;
1812 case 0x106:
return &pColorTheme->m_buttonTextColor;
1813 case 0x107:
return &pColorTheme->m_lightColor;
1814 case 0x108:
return &pColorTheme->m_midLightColor;
1815 case 0x109:
return &pColorTheme->m_midColor;
1816 case 0x10a:
return &pColorTheme->m_darkColor;
1817 case 0x10b:
return &pColorTheme->m_shadowTextColor;
1818 case 0x10c:
return &pColorTheme->m_highlightColor;
1819 case 0x10d:
return &pColorTheme->m_highlightedTextColor;
1820 case 0x10e:
return &pColorTheme->m_selectionHighlightColor;
1821 case 0x10f:
return &pColorTheme->m_selectionInactiveColor;
1822 case 0x110:
return &pColorTheme->m_toolTipBaseColor;
1823 case 0x111:
return &pColorTheme->m_toolTipTextColor;
1824 case 0x200:
return &pColorTheme->m_widgetColor;
1825 case 0x201:
return &pColorTheme->m_widgetTextColor;
1826 case 0x202:
return &pColorTheme->m_accentColor;
1827 case 0x203:
return &pColorTheme->m_accentTextColor;
1828 case 0x204:
return &pColorTheme->m_buttonRedColor;
1829 case 0x205:
return &pColorTheme->m_buttonRedTextColor;
1830 case 0x206:
return &pColorTheme->m_spinBoxColor;
1831 case 0x207:
return &pColorTheme->m_spinBoxTextColor;
1832 case 0x208:
return &pColorTheme->m_playheadColor;
1833 case 0x209:
return &pColorTheme->m_cursorColor;
1834 case 0x300:
return &pColorTheme->m_songEditor_backgroundColor;
1835 case 0x301:
return &pColorTheme->m_songEditor_alternateRowColor;
1836 case 0x302:
return &pColorTheme->m_songEditor_virtualRowColor;
1837 case 0x303:
return &pColorTheme->m_songEditor_selectedRowColor;
1838 case 0x304:
return &pColorTheme->m_songEditor_selectedRowTextColor;
1839 case 0x305:
return &pColorTheme->m_songEditor_lineColor;
1840 case 0x306:
return &pColorTheme->m_songEditor_textColor;
1841 case 0x307:
return &pColorTheme->m_songEditor_automationBackgroundColor;
1842 case 0x308:
return &pColorTheme->m_songEditor_automationLineColor;
1843 case 0x309:
return &pColorTheme->m_songEditor_automationNodeColor;
1844 case 0x30a:
return &pColorTheme->m_songEditor_stackedModeOnColor;
1845 case 0x30b:
return &pColorTheme->m_songEditor_stackedModeOnNextColor;
1846 case 0x30c:
return &pColorTheme->m_songEditor_stackedModeOffNextColor;
1847 case 0x400:
return &pColorTheme->m_patternEditor_backgroundColor;
1848 case 0x401:
return &pColorTheme->m_patternEditor_alternateRowColor;
1849 case 0x402:
return &pColorTheme->m_patternEditor_selectedRowColor;
1850 case 0x403:
return &pColorTheme->m_patternEditor_selectedRowTextColor;
1851 case 0x404:
return &pColorTheme->m_patternEditor_octaveRowColor;
1852 case 0x405:
return &pColorTheme->m_patternEditor_textColor;
1853 case 0x406:
return &pColorTheme->m_patternEditor_noteVelocityFullColor;
1854 case 0x407:
return &pColorTheme->m_patternEditor_noteVelocityDefaultColor;
1855 case 0x408:
return &pColorTheme->m_patternEditor_noteVelocityHalfColor;
1856 case 0x409:
return &pColorTheme->m_patternEditor_noteVelocityZeroColor;
1857 case 0x40a:
return &pColorTheme->m_patternEditor_noteOffColor;
1858 case 0x40b:
return &pColorTheme->m_patternEditor_lineColor;
1859 case 0x40c:
return &pColorTheme->m_patternEditor_line1Color;
1860 case 0x40d:
return &pColorTheme->m_patternEditor_line2Color;
1861 case 0x40e:
return &pColorTheme->m_patternEditor_line3Color;
1862 case 0x40f:
return &pColorTheme->m_patternEditor_line4Color;
1863 case 0x410:
return &pColorTheme->m_patternEditor_line5Color;
1864 default:
return nullptr;
1871 std::shared_ptr<H2Core::ColorTheme> pColorTheme ) {
1873 case 0x100: pColorTheme->m_windowColor = color;
1875 case 0x101: pColorTheme->m_windowTextColor = color;
1877 case 0x102: pColorTheme->m_baseColor = color;
1879 case 0x103: pColorTheme->m_alternateBaseColor = color;
1881 case 0x104: pColorTheme->m_textColor = color;
1883 case 0x105: pColorTheme->m_buttonColor = color;
1885 case 0x106: pColorTheme->m_buttonTextColor = color;
1887 case 0x107: pColorTheme->m_lightColor = color;
1889 case 0x108: pColorTheme->m_midLightColor = color;
1891 case 0x109: pColorTheme->m_midColor = color;
1893 case 0x10a: pColorTheme->m_darkColor = color;
1895 case 0x10b: pColorTheme->m_shadowTextColor = color;
1897 case 0x10c: pColorTheme->m_highlightColor = color;
1899 case 0x10d: pColorTheme->m_highlightedTextColor = color;
1901 case 0x10e: pColorTheme->m_selectionHighlightColor = color;
1903 case 0x10f: pColorTheme->m_selectionInactiveColor = color;
1905 case 0x110: pColorTheme->m_toolTipBaseColor = color;
1907 case 0x111: pColorTheme->m_toolTipTextColor = color;
1909 case 0x200: pColorTheme->m_widgetColor = color;
1911 case 0x201: pColorTheme->m_widgetTextColor = color;
1913 case 0x202: pColorTheme->m_accentColor = color;
1915 case 0x203: pColorTheme->m_accentTextColor = color;
1917 case 0x204: pColorTheme->m_buttonRedColor = color;
1919 case 0x205: pColorTheme->m_buttonRedTextColor = color;
1921 case 0x206: pColorTheme->m_spinBoxColor = color;
1923 case 0x207: pColorTheme->m_spinBoxTextColor = color;
1925 case 0x208: pColorTheme->m_playheadColor = color;
1927 case 0x209: pColorTheme->m_cursorColor = color;
1929 case 0x300: pColorTheme->m_songEditor_backgroundColor = color;
1931 case 0x301: pColorTheme->m_songEditor_alternateRowColor = color;
1933 case 0x302: pColorTheme->m_songEditor_virtualRowColor = color;
1935 case 0x303: pColorTheme->m_songEditor_selectedRowColor = color;
1937 case 0x304: pColorTheme->m_songEditor_selectedRowTextColor = color;
1939 case 0x305: pColorTheme->m_songEditor_lineColor = color;
1941 case 0x306: pColorTheme->m_songEditor_textColor = color;
1943 case 0x307: pColorTheme->m_songEditor_automationBackgroundColor = color;
1945 case 0x308: pColorTheme->m_songEditor_automationLineColor = color;
1947 case 0x309: pColorTheme->m_songEditor_automationNodeColor = color;
1949 case 0x30a: pColorTheme->m_songEditor_stackedModeOnColor = color;
1951 case 0x30b: pColorTheme->m_songEditor_stackedModeOnNextColor = color;
1953 case 0x30c: pColorTheme->m_songEditor_stackedModeOffNextColor = color;
1955 case 0x400: pColorTheme->m_patternEditor_backgroundColor = color;
1957 case 0x401: pColorTheme->m_patternEditor_alternateRowColor = color;
1959 case 0x402: pColorTheme->m_patternEditor_selectedRowColor = color;
1961 case 0x403: pColorTheme->m_patternEditor_selectedRowTextColor = color;
1963 case 0x404: pColorTheme->m_patternEditor_octaveRowColor = color;
1965 case 0x405: pColorTheme->m_patternEditor_textColor = color;
1967 case 0x406: pColorTheme->m_patternEditor_noteVelocityFullColor = color;
1969 case 0x407: pColorTheme->m_patternEditor_noteVelocityDefaultColor = color;
1971 case 0x408: pColorTheme->m_patternEditor_noteVelocityHalfColor = color;
1973 case 0x409: pColorTheme->m_patternEditor_noteVelocityZeroColor = color;
1975 case 0x40a: pColorTheme->m_patternEditor_noteOffColor = color;
1977 case 0x40b: pColorTheme->m_patternEditor_lineColor = color;
1979 case 0x40c: pColorTheme->m_patternEditor_line1Color = color;
1981 case 0x40d: pColorTheme->m_patternEditor_line2Color = color;
1983 case 0x40e: pColorTheme->m_patternEditor_line3Color = color;
1985 case 0x40f: pColorTheme->m_patternEditor_line4Color = color;
1987 case 0x410: pColorTheme->m_patternEditor_line5Color = color;