/[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 2538 by schoenebeck, Tue Apr 22 16:13:50 2014 UTC revision 3151 by schoenebeck, Fri May 5 18:44:59 2017 UTC
# Line 1  Line 1 
1  /*  /*
2   * Copyright (C) 2006-2014 Andreas Persson   * Copyright (C) 2006-2015 Andreas Persson
3   *   *
4   * This program is free software; you can redistribute it and/or   * This program is free software; you can redistribute it and/or
5   * modify it under the terms of the GNU General Public License as   * modify it under the terms of the GNU General Public License as
# Line 17  Line 17 
17   * 02110-1301 USA.   * 02110-1301 USA.
18   */   */
19    
 #include <cstring>  
   
20  #include "paramedit.h"  #include "paramedit.h"
21    
22  #include "global.h"  #include "global.h"
23  #include "compat.h"  #include "compat.h"
24    #include "Settings.h"
25    
26  std::string gig_encoding("CP1252");  #include <gtkmm/messagedialog.h>
   
 Glib::ustring gig_to_utf8(const gig::String& gig_string) {  
     return Glib::convert_with_fallback(gig_string, "UTF-8", gig_encoding, "?");  
 }  
   
 gig::String gig_from_utf8(const Glib::ustring& utf8_string) {  
     return Glib::convert_with_fallback(utf8_string, gig_encoding, "UTF-8", "?");  
 }  
   
27    
28  namespace {  namespace {
29      const char* const controlChangeTexts[] = {      struct CCText {
30          _("none"), _("channelaftertouch"), _("velocity"),          const char* const txt;
31          0, // bank select MSB (hard coded in sampler, so discouraged to be used here, even though considerable)          bool isExtension; ///< True if this is a controller only supported by LinuxSampler, but not supperted by Gigasampler/GigaStudio.
32          _("modwheel"), // "Modulation Wheel or Lever",      };
33          _("breath"), // "Breath Controller",      static const CCText controlChangeTexts[] = {
34          _("undefined"),          // 3 special ones (not being CCs)
35          _("foot"), // "Foot Controller",          { _("none") }, { _("channelaftertouch") }, { _("velocity") },
36          _("portamentotime"), // "Portamento Time",          {0}, // bank select MSB (hard coded in sampler, so discouraged to be used here, even though considerable)
37          _("data entry MSB"),          { _("modwheel") }, // "Modulation Wheel or Lever",
38          _("volume"),          { _("breath") }, // "Breath Controller",
39          _("balance"),          { _("undefined"), true },
40          _("undefined"),          { _("foot") }, // "Foot Controller",
41          _("pan"),          { _("portamentotime") }, // "Portamento Time",
42          _("expression"),          { _("data entry MSB"), true },
43          _("effect1"), // "Effect Control 1",          { _("volume"), true },
44          _("effect2"), // "Effect Control 2",          { _("balance"), true },
45          _("undefined"),          { _("undefined"), true },
46          _("undefined"),          { _("pan"), true },
47          _("genpurpose1"), // "General Purpose Controller 1",          { _("expression"), true },
48          _("genpurpose2"), // "General Purpose Controller 2",          { _("effect1") }, // "Effect Control 1",
49          _("genpurpose3"), // "General Purpose Controller 3",          { _("effect2") }, // "Effect Control 2",
50          _("genpurpose4"), // "General Purpose Controller 4",          { _("undefined"), true },
51          _("undefined"),          { _("undefined"), true },
52          _("undefined"),          { _("genpurpose1") }, // "General Purpose Controller 1",
53          _("undefined"),          { _("genpurpose2") }, // "General Purpose Controller 2",
54          _("undefined"),          { _("genpurpose3") }, // "General Purpose Controller 3",
55          _("undefined"),          { _("genpurpose4") }, // "General Purpose Controller 4",
56          _("undefined"),          { _("undefined"), true },
57          _("undefined"),          { _("undefined"), true },
58          _("undefined"),          { _("undefined"), true },
59          _("undefined"),          { _("undefined"), true },
60          _("undefined"),          { _("undefined"), true },
61          _("undefined"),          { _("undefined"), true },
62          _("undefined"),          { _("undefined"), true },
63            { _("undefined"), true },
64            { _("undefined"), true },
65            { _("undefined"), true },
66            { _("undefined"), true },
67            { _("undefined"), true },
68                    
69          // LSB variant of the various controllers above          // LSB variant of the various controllers above
70          // (so discouraged to be used here for now)          // (so discouraged to be used here for now)
71          0, 0, 0, 0, 0, 0, 0,          {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
72          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,          {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
73          0, 0, 0, 0, 0, 0,          {0}, {0}, {0}, {0},
74                    
75          _("sustainpedal"), // "Damper Pedal on/off (Sustain)",          { _("sustainpedal") }, // "Damper Pedal on/off (Sustain)",
76          _("portamento"), // "Portamento On/Off",          { _("portamento") }, // "Portamento On/Off",
77          _("sostenuto"), // "Sustenuto On/Off",          { _("sostenuto") }, // "Sustenuto On/Off",
78          _("softpedal"), // "Soft Pedal On/Off",          { _("softpedal") }, // "Soft Pedal On/Off",
79          _("legato"),          { _("legato"), true },
80          _("hold2"),          { _("hold2"), true },
81          _("soundvariation"),          { _("soundvariation"), true },
82          _("timbre"),          { _("timbre"), true },
83          _("releasetime"),          { _("releasetime"), true },
84          _("attacktime"),          { _("attacktime"), true },
85          _("brightness"),          { _("brightness"), true },
86          _("decaytime"),          { _("decaytime"), true },
87          _("vibratorate"),          { _("vibratorate"), true },
88          _("vibratodepth"),          { _("vibratodepth"), true },
89          _("vibratodelay"),          { _("vibratodelay"), true },
90          _("undefined"),          { _("undefined"), true },
91          _("genpurpose5"), // "General Purpose Controller 5",          { _("genpurpose5") }, // "General Purpose Controller 5",
92          _("genpurpose6"), // "General Purpose Controller 6",          { _("genpurpose6") }, // "General Purpose Controller 6",
93          _("genpurpose7"), // "General Purpose Controller 7",          { _("genpurpose7") }, // "General Purpose Controller 7",
94          _("genpurpose8"), // "General Purpose Controller 8",          { _("genpurpose8") }, // "General Purpose Controller 8",
95          _("portamentoctrl"),          { _("portamentoctrl"), true },
96          _("undefined"),          { _("undefined"), true },
97          _("undefined"),          { _("undefined"), true },
98          _("undefined"),          { _("undefined"), true },
99          0, // high resolution velocity prefix (so discouraged to be used here)          {0}, // high resolution velocity prefix (so discouraged to be used here)
100          _("undefined"),          { _("undefined"), true },
101          _("undefined"),          { _("undefined"), true },
102          _("effect1depth"), // "Effects 1 Depth",          { _("effect1depth") }, // "Effects 1 Depth",
103          _("effect2depth"), // "Effects 2 Depth",          { _("effect2depth") }, // "Effects 2 Depth",
104          _("effect3depth"), // "Effects 3 Depth",          { _("effect3depth") }, // "Effects 3 Depth",
105          _("effect4depth"), // "Effects 4 Depth",          { _("effect4depth") }, // "Effects 4 Depth",
106          _("effect5depth"), // "Effects 5 Depth"          { _("effect5depth") }, // "Effects 5 Depth"
107          _("dataincrement"),          { _("dataincrement"), true },
108          _("datadecrement"),          { _("datadecrement"), true },
109          0, // NRPN LSB (so discouraged to be used here)          {0}, // NRPN LSB (so discouraged to be used here)
110          0, // NRPN MSB (so discouraged to be used here)          {0}, // NRPN MSB (so discouraged to be used here)
111          0, // RPN LSB (so discouraged to be used here)          {0}, // RPN LSB (so discouraged to be used here)
112          0, // RPN MSB (so discouraged to be used here)          {0}, // RPN MSB (so discouraged to be used here)
113          _("undefined"),          { _("undefined"), true },
114          _("undefined"),          { _("undefined"), true },
115          _("undefined"),          { _("undefined"), true },
116          _("undefined"),          { _("undefined"), true },
117          _("undefined"),          { _("undefined"), true },
118          _("undefined"),          { _("undefined"), true },
119          _("undefined"),          { _("undefined"), true },
120          _("undefined"),          { _("undefined"), true },
121          _("undefined"),          { _("undefined"), true },
122          _("undefined"),          { _("undefined"), true },
123          _("undefined"),          { _("undefined"), true },
124          _("undefined"),          { _("undefined"), true },
125          _("undefined"),          { _("undefined"), true },
126          _("undefined"),          { _("undefined"), true },
127          _("undefined"),          { _("undefined"), true },
128          _("undefined"),          { _("undefined"), true },
129          _("undefined"),          { _("undefined"), true },
130          _("undefined") // CC 119          { _("undefined"), true } // CC 119
131          // (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
132          // mode messages, so those are discouraged to be used here)          // mode messages, so those are discouraged to be used here)
133      };      };
134  }  }
135    
136  #define controlChangeTextsSize  (sizeof(controlChangeTexts) / sizeof(char*))  #define controlChangeTextsSize  (sizeof(controlChangeTexts) / sizeof(CCText))
137    
138  LabelWidget::LabelWidget(const char* labelText, Gtk::Widget& widget) :  LabelWidget::LabelWidget(const char* labelText, Gtk::Widget& widget) :
139      label(Glib::ustring(labelText) + ":"),      label(Glib::ustring(labelText) + ":"),
# Line 153  void LabelWidget::set_sensitive(bool sen Line 148  void LabelWidget::set_sensitive(bool sen
148      widget.set_sensitive(sensitive);      widget.set_sensitive(sensitive);
149  }  }
150    
151    ReadOnlyLabelWidget::ReadOnlyLabelWidget(const char* leftHandText)
152        : LabelWidget(leftHandText, text)
153    {
154        text.set_alignment(Gtk::ALIGN_START, Gtk::ALIGN_START);
155    }
156    
157    ReadOnlyLabelWidget::ReadOnlyLabelWidget(const char* leftHandText, const char* rightHandText)
158       : LabelWidget(leftHandText, text)
159    {
160        text.set_alignment(Gtk::ALIGN_START, Gtk::ALIGN_START);
161        text.set_text(rightHandText);
162    }
163    
164  NumEntry::NumEntry(const char* labelText, double lower, double upper,  NumEntry::NumEntry(const char* labelText, double lower, double upper,
165                     int decimals) :                     int decimals) :
166      LabelWidget(labelText, box),      LabelWidget(labelText, box),
# Line 348  ChoiceEntryLeverageCtrl::ChoiceEntryLeve Line 356  ChoiceEntryLeverageCtrl::ChoiceEntryLeve
356      align(0, 0, 0, 0)      align(0, 0, 0, 0)
357  {  {
358      for (int i = 0 ; i < controlChangeTextsSize ; i++) {      for (int i = 0 ; i < controlChangeTextsSize ; i++) {
359          if (controlChangeTexts[i]) {          if (controlChangeTexts[i].txt) {
360              const int cc = i - 3;              const int cc = i - 3;
361              Glib::ustring s = (i < 3)              Glib::ustring s = (i < 3)
362                  ? controlChangeTexts[i]                  ? controlChangeTexts[i].txt
363                  : Glib::ustring::compose("CC%1: %2", cc, controlChangeTexts[i]);                  : Glib::ustring::compose("CC%1: %2%3", cc, controlChangeTexts[i].txt, controlChangeTexts[i].isExtension ? " [EXT]" : "");
364  #if (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION < 24) || GTKMM_MAJOR_VERSION < 2  #if (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION < 24) || GTKMM_MAJOR_VERSION < 2
365              combobox.append_text(s);              combobox.append_text(s);
366  #else  #else
# Line 387  void ChoiceEntryLeverageCtrl::value_chan Line 395  void ChoiceEntryLeverageCtrl::value_chan
395          value.type = gig::leverage_ctrl_t::type_controlchange;          value.type = gig::leverage_ctrl_t::type_controlchange;
396          int x = 3;          int x = 3;
397          for (uint cc = 0 ; cc < controlChangeTextsSize - 3 ; cc++) {          for (uint cc = 0 ; cc < controlChangeTextsSize - 3 ; cc++) {
398              if (controlChangeTexts[cc + 3]) {              if (controlChangeTexts[cc + 3].txt) {
399                  if (rowno == x) {                  if (rowno == x) {
400                      value.controller_number = cc;                      value.controller_number = cc;
401                        if (controlChangeTexts[cc + 3].isExtension &&
402                            Settings::singleton()->warnUserOnExtensions)
403                        {
404                            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.)");
405                            Gtk::MessageDialog msg(
406                                txt, true, Gtk::MESSAGE_WARNING
407                            );
408                            msg.run();
409                        }
410                      break;                      break;
411                  }                  }
412                  x++;                  x++;
# Line 418  void ChoiceEntryLeverageCtrl::set_value( Line 435  void ChoiceEntryLeverageCtrl::set_value(
435          comboIndex = -1;          comboIndex = -1;
436          int x = 3;          int x = 3;
437          for (uint cc = 0 ; cc < controlChangeTextsSize - 3 ; cc++) {          for (uint cc = 0 ; cc < controlChangeTextsSize - 3 ; cc++) {
438              if (controlChangeTexts[cc + 3]) {              if (controlChangeTexts[cc + 3].txt) {
439                  if (value.controller_number == cc) {                  if (value.controller_number == cc) {
440                      comboIndex = x;                      comboIndex = x;
441                      break;                      break;

Legend:
Removed from v.2538  
changed lines
  Added in v.3151

  ViewVC Help
Powered by ViewVC