Ticket #8476: midigain-gui.diff

File midigain-gui.diff, 4.5 KB (added by eriktorbjorn, 18 years ago)

Patch against current SVN

  • gui/options.h

     
    9999        CheckboxWidget *_multiMidiCheckbox;
    100100        CheckboxWidget *_mt32Checkbox;
    101101        CheckboxWidget *_enableGSCheckbox;
     102        StaticTextWidget *_midiGainDesc;
     103        SliderWidget *_midiGainSlider;
     104        StaticTextWidget *_midiGainLabel;
    102105       
    103106        //
    104107        // Subtitle controls
  • gui/themes/modern.ini

     
    479479opYoffset=(opYoffset + buttonHeight + midiControlsSpacing)
    480480mcGSCheckbox=mcx opYoffset (kFontHeight + 10 + 142) buttonHeight
    481481opYoffset=(opYoffset + buttonHeight + midiControlsSpacing)
     482mcMidiGainText=mcx (opYoffset + 2) 80 kLineHeight
     483mcMidiGainText.align=kTextAlignRight
     484mcMidiGainSlider=(prev.x2 + 10) opYoffset sliderWidth sliderHeight
     485mcMidiGainLabel=(prev.x2 + 10) (opYoffset + 2) 40 kLineHeight
     486opYoffset=(opYoffset + sliderHeight + midiControlsSpacing)
    482487
    483488[subtitleControls]
    484489sbx=(opXoffset + 10)
  • gui/options.cpp

     
    5858// - aspect ratio, language, platform, debug mode/level, cd drive, joystick, multi midi, native mt32
    5959
    6060enum {
     61        kMidiGainChanged                = 'mgch',
    6162        kMusicVolumeChanged             = 'muvc',
    6263        kSfxVolumeChanged               = 'sfvc',
    6364        kSubtitleToggle                 = 'sttg',
     
    198199                        _soundFont->setLabel("None");
    199200                else
    200201                        _soundFont->setLabel(soundFont);
     202
     203                // MIDI gain setting
     204                char buf[10];
     205
     206                _midiGainSlider->setValue(ConfMan.getInt("midi_gain", _domain));
     207                sprintf(buf, "%.2f", (double)_midiGainSlider->getValue() / 100.0);
     208                _midiGainLabel->setLabel(buf);
    201209        }
    202210
    203211        // Volume options
     
    303311                                ConfMan.setBool("multi_midi", _multiMidiCheckbox->getState(), _domain);
    304312                                ConfMan.setBool("native_mt32", _mt32Checkbox->getState(), _domain);
    305313                                ConfMan.setBool("enable_gs", _enableGSCheckbox->getState(), _domain);
     314                                ConfMan.setInt("midi_gain", _midiGainSlider->getValue(), _domain);
    306315
    307316                                String soundFont(_soundFont->getLabel());
    308317                                if (!soundFont.empty() && (soundFont != "None"))
     
    311320                                ConfMan.removeKey("multi_midi", _domain);
    312321                                ConfMan.removeKey("native_mt32", _domain);
    313322                                ConfMan.removeKey("enable_gs", _domain);
     323                                ConfMan.removeKey("midi_gain", _domain);
    314324                                ConfMan.removeKey("soundfont", _domain);
    315325                        }
    316326                }
     
    359369}
    360370
    361371void OptionsDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data) {
     372        char buf[10];
     373
    362374        switch (cmd) {
     375        case kMidiGainChanged:
     376                sprintf(buf, "%.2f", (double)_midiGainSlider->getValue() / 100.0);
     377                _midiGainLabel->setLabel(buf);
     378                _midiGainLabel->draw();
     379                break;
    363380        case kMusicVolumeChanged:
    364381                _musicVolumeLabel->setValue(_musicVolumeSlider->getValue());
    365382                _musicVolumeLabel->draw();
     
    422439        _multiMidiCheckbox->setEnabled(enabled);
    423440        _mt32Checkbox->setEnabled(enabled);
    424441        _enableGSCheckbox->setEnabled(enabled);
     442        _midiGainDesc->setEnabled(enabled);
     443        _midiGainSlider->setEnabled(enabled);
     444        _midiGainLabel->setEnabled(enabled);
    425445}
    426446
    427447void OptionsDialog::setVolumeSettingsState(bool enabled) {
     
    517537        // GS Extensions setting
    518538        _enableGSCheckbox = new CheckboxWidget(boss, prefix + "mcGSCheckbox", "Enable Roland GS Mode", 0, 0);
    519539
     540        // MIDI gain setting (FluidSynth uses this)
     541        _midiGainDesc = new StaticTextWidget(boss, prefix + "mcMidiGainText", "MIDI gain:");
     542        _midiGainSlider = new SliderWidget(boss, prefix + "mcMidiGainSlider", kMidiGainChanged);
     543        _midiGainSlider->setMinValue(0);
     544        _midiGainSlider->setMaxValue(1000);
     545        _midiGainLabel = new StaticTextWidget(boss, prefix + "mcMidiGainLabel", "1.00");
     546
    520547        _enableMIDISettings = true;
    521548}
    522549
  • gui/theme-config.cpp

     
    363363"opYoffset=(opYoffset + buttonHeight + midiControlsSpacing)\n"
    364364"mcGSCheckbox=mcx opYoffset (kFontHeight + 10 + 142) buttonHeight\n"
    365365"opYoffset=(opYoffset + buttonHeight + midiControlsSpacing)\n"
     366"mcMidiGainText=mcx (opYoffset + 2) 95 kLineHeight\n"
     367"mcMidiGainText.align=kTextAlignRight\n"
     368"mcMidiGainSlider=(prev.x2 + 10) opYoffset sliderWidth sliderHeight\n"
     369"mcMidiGainLabel=(prev.x2 + 10) (opYoffset + 2) 40 kLineHeight\n"
     370"opYoffset=(opYoffset + sliderHeight + midiControlsSpacing)\n"
    366371"\n"
    367372"[subtitleControls]\n"
    368373"sbx=(opXoffset + 10)\n"