/[svn]/gigedit/trunk/src/gigedit/paramedit.cpp
ViewVC logotype

Diff of /gigedit/trunk/src/gigedit/paramedit.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3461 by persson, Sat Feb 2 17:53:36 2019 UTC revision 3738 by schoenebeck, Mon Feb 3 18:47:02 2020 UTC
# Line 137  namespace { Line 137  namespace {
137          // (all other ones that follow [CC 120- CC 127] are hard coded channel          // (all other ones that follow [CC 120- CC 127] are hard coded channel
138          // mode messages, so those are discouraged to be used here)          // mode messages, so those are discouraged to be used here)
139      };      };
140        static const char* const lfoWaveTexts[] = {
141            _("Sine"),
142            _("Triangle"),
143            _("Saw"),
144            _("Square"),
145        };
146  }  }
147    
148  #define controlChangeTextsSize  (sizeof(controlChangeTexts) / sizeof(CCText))  #define controlChangeTextsSize  (sizeof(controlChangeTexts) / sizeof(CCText))
149    #define lfoWaveTextsSize        (sizeof(lfoWaveTexts) / sizeof(char*))
150    
151  LabelWidget::LabelWidget(const char* labelText, Gtk::Widget& widget) :  LabelWidget::LabelWidget(const char* labelText, Gtk::Widget& widget) :
152      label(Glib::ustring(labelText) + ":"),      label(Glib::ustring(labelText) + ":"),
# Line 198  ReadOnlyLabelWidget::ReadOnlyLabelWidget Line 205  ReadOnlyLabelWidget::ReadOnlyLabelWidget
205      text.set_text(rightHandText);      text.set_text(rightHandText);
206  }  }
207    
208    static double stepForDecimals(int decimals) {
209        switch (decimals) {
210            case 0: return 1.0;
211            case 1: return 0.1;
212            case 2: default: return 0.01;
213        }
214    }
215    
216    static double pageForDecimals(int decimals) {
217        switch (decimals) {
218            case 0: return 10.0;
219            case 1: return 1.0;
220            case 2: default: return 0.1;
221        }
222    }
223    
224  NumEntry::NumEntry(const char* labelText, double lower, double upper,  NumEntry::NumEntry(const char* labelText, double lower, double upper,
225                     int decimals) :                     int decimals) :
226      LabelWidget(labelText, box),      LabelWidget(labelText, box),
227  #if (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION < 90) || GTKMM_MAJOR_VERSION < 2  #if (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION < 90) || GTKMM_MAJOR_VERSION < 2
228      adjust(lower, lower, upper, 1, 10),      adjust(lower, lower, upper, stepForDecimals(decimals), pageForDecimals(decimals)),
229  #else  #else
230      adjust(Gtk::Adjustment::create(lower, lower, upper, 1, 10)),      adjust(Gtk::Adjustment::create(lower, lower, upper, stepForDecimals(decimals), pageForDecimals(decimals))),
231  #endif  #endif
232      scale(adjust),      scale(adjust),
233      spinbutton(adjust)      spinbutton(adjust)
# Line 234  NumEntryGain::NumEntryGain(const char* l Line 257  NumEntryGain::NumEntryGain(const char* l
257      coeff(coeff),      coeff(coeff),
258      connected(true)      connected(true)
259  {  {
260        spinbutton.set_increments(0.1, 1.0);
261      spinbutton.signal_value_changed().connect(      spinbutton.signal_value_changed().connect(
262          sigc::mem_fun(*this, &NumEntryGain::value_changed));          sigc::mem_fun(*this, &NumEntryGain::value_changed));
263  }  }
# Line 256  void NumEntryGain::set_value(int32_t val Line 280  void NumEntryGain::set_value(int32_t val
280          this->value = value;          this->value = value;
281    
282          connected = false;          connected = false;
283          bool plus6 = value < 0;          spinbutton.set_value(value / coeff);
         spinbutton.set_value(plus6 ? 0 : value / coeff);  
         set_sensitive(!plus6);  
284          connected = true;          connected = true;
285    
286          sig_changed();          sig_changed();
# Line 266  void NumEntryGain::set_value(int32_t val Line 288  void NumEntryGain::set_value(int32_t val
288  }  }
289    
290    
 BoolEntryPlus6::BoolEntryPlus6(const char* labelText, NumEntryGain& eGain, int32_t plus6value) :  
     LabelWidget(labelText, checkbutton),  
     checkbutton(labelText),  
     eGain(eGain),  
     plus6value(plus6value)  
 {  
     checkbutton.signal_toggled().connect(  
         sigc::mem_fun(*this, &BoolEntryPlus6::value_changed));  
 }  
   
 void BoolEntryPlus6::on_show_tooltips_changed() {  
     LabelWidget::on_show_tooltips_changed();  
   
     eGain.on_show_tooltips_changed();  
 }  
   
 void BoolEntryPlus6::value_changed()  
 {  
     if (checkbutton.get_active()) eGain.set_value(plus6value);  
     else if (eGain.get_value() < 0) eGain.set_value(0);  
 }  
   
 int32_t BoolEntryPlus6::get_value() const  
 {  
     return eGain.get_value();  
 }  
   
 void BoolEntryPlus6::set_value(int32_t value)  
 {  
     checkbutton.set_active(value < 0);  
 }  
   
291  NumEntryPermille::NumEntryPermille(const char* labelText,  NumEntryPermille::NumEntryPermille(const char* labelText,
292                                     double lower, double upper, int decimals) :                                     double lower, double upper, int decimals) :
293      NumEntry(labelText, lower, upper, decimals),      NumEntry(labelText, lower, upper, decimals),
# Line 461  void ChoiceEntryLeverageCtrl::on_show_to Line 451  void ChoiceEntryLeverageCtrl::on_show_to
451      combobox.set_has_tooltip(b);      combobox.set_has_tooltip(b);
452  }  }
453    
454    static void _showGigFormatExtWarning() {
455        if (!Settings::singleton()->warnUserOnExtensions) return;
456        Glib::ustring txt =
457            _("<b>Format Extension</b>\n\nAll options marked with \"<b>[EXT]</b>\" are an extension to the original gig sound format. They will only work with LinuxSampler, but they will <b>not work</b> with Gigasampler/GigaStudio!\n\n(You may disable this warning in the <i>Settings</i> menu.)");
458        Gtk::MessageDialog msg(txt, true, Gtk::MESSAGE_WARNING);
459        msg.run();
460    }
461    
462  void ChoiceEntryLeverageCtrl::value_changed()  void ChoiceEntryLeverageCtrl::value_changed()
463  {  {
464      int rowno = combobox.get_active_row_number();      int rowno = combobox.get_active_row_number();
# Line 484  void ChoiceEntryLeverageCtrl::value_chan Line 482  void ChoiceEntryLeverageCtrl::value_chan
482              if (controlChangeTexts[cc + 3].txt) {              if (controlChangeTexts[cc + 3].txt) {
483                  if (rowno == x) {                  if (rowno == x) {
484                      value.controller_number = cc;                      value.controller_number = cc;
485                      if (controlChangeTexts[cc + 3].isExtension &&                      if (controlChangeTexts[cc + 3].isExtension) {
486                          Settings::singleton()->warnUserOnExtensions)                          _showGigFormatExtWarning();
                     {  
                         Glib::ustring txt = _("<b>Format Extension</b>\n\nAll controllers marked with \"<b>[EXT]</b>\" are an extension to the original gig sound format. They will only work with LinuxSampler, but they will <b>not work</b> with Gigasampler/GigaStudio!\n\n(You may disable this warning in the <i>Settings</i> menu.)");  
                         Gtk::MessageDialog msg(  
                             txt, true, Gtk::MESSAGE_WARNING  
                         );  
                         msg.run();  
487                      }                      }
488                      break;                      break;
489                  }                  }
# Line 539  void ChoiceEntryLeverageCtrl::set_value( Line 531  void ChoiceEntryLeverageCtrl::set_value(
531  }  }
532    
533    
534    ChoiceEntryLfoWave::ChoiceEntryLfoWave(const char* labelText) :
535    #if HAS_GTKMM_ALIGNMENT
536        LabelWidget(labelText, align),
537        align(0, 0, 0, 0)
538    #else
539        LabelWidget(labelText, combobox)
540    #endif
541    {
542        for (int i = 0 ; i < lfoWaveTextsSize; i++) {
543            if (lfoWaveTexts[i]) {
544                Glib::ustring s = (i == 0)
545                    ? lfoWaveTexts[i]
546                    : Glib::ustring::compose("%1 [EXT]", lfoWaveTexts[i]);
547    #if (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION < 24) || GTKMM_MAJOR_VERSION < 2
548                combobox.append_text(s);
549    #else
550                combobox.append(s);
551    #endif
552            }
553        }
554        //combobox.set_wrap_width(4);
555        combobox.signal_changed().connect(
556            sigc::mem_fun(*this, &ChoiceEntryLfoWave::value_changed));
557    #if HAS_GTKMM_ALIGNMENT
558        align.add(combobox);
559    #else
560        combobox.set_halign(Gtk::Align::FILL);
561        combobox.set_valign(Gtk::Align::FILL);
562    #endif
563        value = gig::lfo_wave_sine;
564    }
565    
566    void ChoiceEntryLfoWave::on_show_tooltips_changed() {
567        LabelWidget::on_show_tooltips_changed();
568    
569        const bool b = Settings::singleton()->showTooltips;
570        combobox.set_has_tooltip(b);
571    }
572    
573    void ChoiceEntryLfoWave::value_changed() {
574        const int rowno = combobox.get_active_row_number();
575        switch (rowno) {
576            case -1:
577                break;
578            case 0:
579                value = gig::lfo_wave_sine;
580                break;
581            case 1:
582                value = gig::lfo_wave_triangle;
583                _showGigFormatExtWarning();
584                break;
585            case 2:
586                value = gig::lfo_wave_saw;
587                _showGigFormatExtWarning();
588                break;
589            case 3:
590                value = gig::lfo_wave_square;
591                _showGigFormatExtWarning();
592                break;
593        }
594        if (rowno >= 0) sig_changed();
595    }
596    
597    void ChoiceEntryLfoWave::set_value(gig::lfo_wave_t value) {
598        int comboIndex;
599        switch (value) {
600            case gig::lfo_wave_sine:
601                comboIndex = 0;
602                break;
603            case gig::lfo_wave_triangle:
604                comboIndex = 1;
605                break;
606            case gig::lfo_wave_saw:
607                comboIndex = 2;
608                break;
609            case gig::lfo_wave_square:
610                comboIndex = 3;
611                break;
612            default:
613                comboIndex = -1;
614                break;
615        }
616        combobox.set_active(comboIndex);
617    }
618    
619    
620  BoolBox::BoolBox(const char* labelText) : Gtk::CheckButton(labelText) {  BoolBox::BoolBox(const char* labelText) : Gtk::CheckButton(labelText) {
621      signal_toggled().connect(sig_changed.make_slot());      signal_toggled().connect(sig_changed.make_slot());
622      Settings::singleton()->showTooltips.get_proxy().signal_changed().connect(      Settings::singleton()->showTooltips.get_proxy().signal_changed().connect(
# Line 625  void Table::add(BoolEntry& boolentry) Line 703  void Table::add(BoolEntry& boolentry)
703  {  {
704  #if USE_GTKMM_GRID  #if USE_GTKMM_GRID
705      attach(boolentry.widget, 0, rowno, 2);      attach(boolentry.widget, 0, rowno, 2);
 #else  
     attach(boolentry.widget, 0, 2, rowno, rowno + 1,  
            Gtk::FILL, Gtk::SHRINK);  
 #endif  
     rowno++;  
 }  
   
 void Table::add(BoolEntryPlus6& boolentry)  
 {  
 #if USE_GTKMM_GRID  
     attach(boolentry.widget, 0, rowno, 2);  
706  #else  #else
707      attach(boolentry.widget, 0, 2, rowno, rowno + 1,      attach(boolentry.widget, 0, 2, rowno, rowno + 1,
708             Gtk::FILL, Gtk::SHRINK);             Gtk::FILL, Gtk::SHRINK);

Legend:
Removed from v.3461  
changed lines
  Added in v.3738

  ViewVC Help
Powered by ViewVC