aboutsummaryrefslogtreecommitdiff
path: root/gui
diff options
context:
space:
mode:
authorEugene Sandulenko2006-06-11 20:51:14 +0000
committerEugene Sandulenko2006-06-11 20:51:14 +0000
commit4867a75918d11d19eec59d955109455cb4a36432 (patch)
tree767b1c40e8bfdcfac0f93e9c62dc049fede3ba9c /gui
parent62e286c30f8d2f9f2a55ed5741c805e43fc11867 (diff)
downloadscummvm-rg350-4867a75918d11d19eec59d955109455cb4a36432.tar.gz
scummvm-rg350-4867a75918d11d19eec59d955109455cb4a36432.tar.bz2
scummvm-rg350-4867a75918d11d19eec59d955109455cb4a36432.zip
Patch #1336171: "MIDI gain setting for FluidSynth" with slight modifications
of PSP theme to fit new slider into MIDI tab. svn-id: r23033
Diffstat (limited to 'gui')
-rw-r--r--gui/options.cpp27
-rw-r--r--gui/options.h3
-rw-r--r--gui/theme-config.cpp5
-rw-r--r--gui/themes/modern.ini9
4 files changed, 42 insertions, 2 deletions
diff --git a/gui/options.cpp b/gui/options.cpp
index 75835191af..79f2044589 100644
--- a/gui/options.cpp
+++ b/gui/options.cpp
@@ -58,6 +58,7 @@ namespace GUI {
// - aspect ratio, language, platform, debug mode/level, cd drive, joystick, multi midi, native mt32
enum {
+ kMidiGainChanged = 'mgch',
kMusicVolumeChanged = 'muvc',
kSfxVolumeChanged = 'sfvc',
kSubtitleToggle = 'sttg',
@@ -199,6 +200,13 @@ void OptionsDialog::open() {
_soundFont->setLabel("None");
else
_soundFont->setLabel(soundFont);
+
+ // MIDI gain setting
+ char buf[10];
+
+ _midiGainSlider->setValue(ConfMan.getInt("midi_gain", _domain));
+ sprintf(buf, "%.2f", (double)_midiGainSlider->getValue() / 100.0);
+ _midiGainLabel->setLabel(buf);
}
// Volume options
@@ -304,6 +312,7 @@ void OptionsDialog::close() {
ConfMan.setBool("multi_midi", _multiMidiCheckbox->getState(), _domain);
ConfMan.setBool("native_mt32", _mt32Checkbox->getState(), _domain);
ConfMan.setBool("enable_gs", _enableGSCheckbox->getState(), _domain);
+ ConfMan.setInt("midi_gain", _midiGainSlider->getValue(), _domain);
String soundFont(_soundFont->getLabel());
if (!soundFont.empty() && (soundFont != "None"))
@@ -312,6 +321,7 @@ void OptionsDialog::close() {
ConfMan.removeKey("multi_midi", _domain);
ConfMan.removeKey("native_mt32", _domain);
ConfMan.removeKey("enable_gs", _domain);
+ ConfMan.removeKey("midi_gain", _domain);
ConfMan.removeKey("soundfont", _domain);
}
}
@@ -360,7 +370,14 @@ void OptionsDialog::close() {
}
void OptionsDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data) {
+ char buf[10];
+
switch (cmd) {
+ case kMidiGainChanged:
+ sprintf(buf, "%.2f", (double)_midiGainSlider->getValue() / 100.0);
+ _midiGainLabel->setLabel(buf);
+ _midiGainLabel->draw();
+ break;
case kMusicVolumeChanged:
_musicVolumeLabel->setValue(_musicVolumeSlider->getValue());
_musicVolumeLabel->draw();
@@ -423,6 +440,9 @@ void OptionsDialog::setMIDISettingsState(bool enabled) {
_multiMidiCheckbox->setEnabled(enabled);
_mt32Checkbox->setEnabled(enabled);
_enableGSCheckbox->setEnabled(enabled);
+ _midiGainDesc->setEnabled(enabled);
+ _midiGainSlider->setEnabled(enabled);
+ _midiGainLabel->setEnabled(enabled);
}
void OptionsDialog::setVolumeSettingsState(bool enabled) {
@@ -518,6 +538,13 @@ void OptionsDialog::addMIDIControls(GuiObject *boss, const String &prefix) {
// GS Extensions setting
_enableGSCheckbox = new CheckboxWidget(boss, prefix + "mcGSCheckbox", "Enable Roland GS Mode", 0, 0);
+ // MIDI gain setting (FluidSynth uses this)
+ _midiGainDesc = new StaticTextWidget(boss, prefix + "mcMidiGainText", "MIDI gain:");
+ _midiGainSlider = new SliderWidget(boss, prefix + "mcMidiGainSlider", kMidiGainChanged);
+ _midiGainSlider->setMinValue(0);
+ _midiGainSlider->setMaxValue(1000);
+ _midiGainLabel = new StaticTextWidget(boss, prefix + "mcMidiGainLabel", "1.00");
+
_enableMIDISettings = true;
}
diff --git a/gui/options.h b/gui/options.h
index adc238c558..cbbac85a00 100644
--- a/gui/options.h
+++ b/gui/options.h
@@ -99,6 +99,9 @@ private:
CheckboxWidget *_multiMidiCheckbox;
CheckboxWidget *_mt32Checkbox;
CheckboxWidget *_enableGSCheckbox;
+ StaticTextWidget *_midiGainDesc;
+ SliderWidget *_midiGainSlider;
+ StaticTextWidget *_midiGainLabel;
//
// Subtitle controls
diff --git a/gui/theme-config.cpp b/gui/theme-config.cpp
index 691681f151..e8fa2a963a 100644
--- a/gui/theme-config.cpp
+++ b/gui/theme-config.cpp
@@ -366,6 +366,11 @@ const char *Theme::_defaultConfigINI =
"opYoffset=(opYoffset + buttonHeight + midiControlsSpacing)\n"
"mcGSCheckbox=mcx opYoffset (kFontHeight + 10 + 142) buttonHeight\n"
"opYoffset=(opYoffset + buttonHeight + midiControlsSpacing)\n"
+"mcMidiGainText=mcx (opYoffset + 2) 95 kLineHeight\n"
+"mcMidiGainText.align=kTextAlignRight\n"
+"mcMidiGainSlider=(prev.x2 + 10) opYoffset sliderWidth sliderHeight\n"
+"mcMidiGainLabel=(prev.x2 + 10) (opYoffset + 2) 40 kLineHeight\n"
+"opYoffset=(opYoffset + sliderHeight + midiControlsSpacing)\n"
"\n"
"[subtitleControls]\n"
"sbx=(opXoffset + 10)\n"
diff --git a/gui/themes/modern.ini b/gui/themes/modern.ini
index d1c53a0382..711a5c0857 100644
--- a/gui/themes/modern.ini
+++ b/gui/themes/modern.ini
@@ -482,6 +482,11 @@ mcMt32Checkbox=mcx opYoffset (kFontHeight + 10 + 256) buttonHeight
opYoffset=(opYoffset + buttonHeight + midiControlsSpacing)
mcGSCheckbox=mcx opYoffset (kFontHeight + 10 + 142) buttonHeight
opYoffset=(opYoffset + buttonHeight + midiControlsSpacing)
+mcMidiGainText=mcx (opYoffset + 2) 80 kLineHeight
+mcMidiGainText.align=kTextAlignRight
+mcMidiGainSlider=(prev.x2 + 10) opYoffset sliderWidth sliderHeight
+mcMidiGainLabel=(prev.x2 + 10) (opYoffset + 2) 40 kLineHeight
+opYoffset=(opYoffset + sliderHeight + midiControlsSpacing)
[subtitleControls]
sbx=(opXoffset + 10)
@@ -537,9 +542,9 @@ use=320xY
def_buttonWidth=100
def_buttonHeight=23
def_insetX=20
-def_insetY=(4 + kLineHeight)
+def_insetY=10
def_insetW=(w - buttonWidth - 17 * 2 - insetX)
-def_insetH=(h - 23 - insetY)
+def_insetH=(h - 13 - insetY)
def_launcherVersionX=50
def_launcherVersionY=5
def_volumeControlsInAudio=false