/[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 1359 by schoenebeck, Sun Sep 30 18:30:52 2007 UTC revision 1460 by persson, Sat Oct 27 12:28:33 2007 UTC
# Line 78  NumEntry::NumEntry(const char* labelText Line 78  NumEntry::NumEntry(const char* labelText
78      LabelWidget(labelText, box)      LabelWidget(labelText, box)
79  {  {
80      spinbutton.set_digits(decimals);      spinbutton.set_digits(decimals);
81        spinbutton.set_value(0);
82      scale.set_draw_value(false);      scale.set_draw_value(false);
83      box.pack_start(spinbutton, Gtk::PACK_SHRINK);      box.pack_start(spinbutton, Gtk::PACK_SHRINK);
84      box.add(scale);      box.add(scale);
# Line 87  NumEntryGain::NumEntryGain(const char* l Line 88  NumEntryGain::NumEntryGain(const char* l
88                             double lower, double upper,                             double lower, double upper,
89                             int decimals, double coeff) :                             int decimals, double coeff) :
90      NumEntry(labelText, lower, upper, decimals),      NumEntry(labelText, lower, upper, decimals),
91      coeff(coeff)      coeff(coeff),
92        value(0),
93        connected(true)
94  {  {
95      spinbutton.signal_value_changed().connect(      spinbutton.signal_value_changed().connect(
96          sigc::mem_fun(*this, &NumEntryGain::value_changed));          sigc::mem_fun(*this, &NumEntryGain::value_changed));
# Line 95  NumEntryGain::NumEntryGain(const char* l Line 98  NumEntryGain::NumEntryGain(const char* l
98    
99  void NumEntryGain::value_changed()  void NumEntryGain::value_changed()
100  {  {
101        if (!connected) return;
102    
103      const double f = pow(10, spinbutton.get_digits());      const double f = pow(10, spinbutton.get_digits());
104      int new_value = round_to_int(spinbutton.get_value() * f);      int new_value = round_to_int(spinbutton.get_value() * f);
105      if (ptr) {      if (new_value != round_to_int(value / coeff * f)) {
106          if (new_value != round_to_int(*ptr / coeff * f))          value = round_to_int(new_value / f * coeff);
107          {          sig_changed();
             sig_to_be_changed.emit();  
             *ptr = round_to_int(new_value / f * coeff);  
             sig_val_changed.emit(new_value);  
             sig_changed.emit();  
         }  
     } else {  
         sig_to_be_changed.emit();  
         sig_val_changed.emit(new_value);  
         sig_changed.emit();  
108      }      }
109  }  }
110    
111  void NumEntryGain::set_ptr(int32_t* ptr)  void NumEntryGain::set_value(int32_t value)
112  {  {
113      this->ptr = 0;      if (value != this->value) {
114      bool plus6 = *ptr < 0;          this->value = value;
115      set_value(plus6 ? 0 : *ptr / coeff);  
116      set_sensitive(!plus6);          connected = false;
117      this->ptr = ptr;          bool plus6 = value < 0;
118            spinbutton.set_value(plus6 ? 0 : value / coeff);
119            set_sensitive(!plus6);
120            connected = true;
121    
122            sig_changed();
123        }
124  }  }
125    
126    
# Line 134  BoolEntryPlus6::BoolEntryPlus6(const cha Line 136  BoolEntryPlus6::BoolEntryPlus6(const cha
136    
137  void BoolEntryPlus6::value_changed()  void BoolEntryPlus6::value_changed()
138  {  {
139      if (ptr) {      if (checkbutton.get_active()) eGain.set_value(plus6value);
140          bool plus6 = checkbutton.get_active();      else if (eGain.get_value() < 0) eGain.set_value(0);
         if (plus6) {  
             eGain.set_value(0);  
             *ptr = plus6value;  
             sig_changed();  
         } else {  
             if (*ptr < 0) {  
                 *ptr = 0;  
                 sig_changed();  
             }  
         }  
         eGain.set_sensitive(!plus6);  
     }  
141  }  }
142    
143  void BoolEntryPlus6::set_ptr(int32_t* ptr)  int32_t BoolEntryPlus6::get_value() const
144  {  {
145      this->ptr = 0;      return eGain.get_value();
146      checkbutton.set_active(*ptr < 0);  }
147      this->ptr = ptr;  
148    void BoolEntryPlus6::set_value(int32_t value)
149    {
150        checkbutton.set_active(value < 0);
151  }  }
152    
153  NumEntryPermille::NumEntryPermille(const char* labelText,  NumEntryPermille::NumEntryPermille(const char* labelText,
154                                     double lower, double upper, int decimals) :                                     double lower, double upper, int decimals) :
155      NumEntry(labelText, lower, upper, decimals)      NumEntry(labelText, lower, upper, decimals),
156        value(0)
157  {  {
158      spinbutton.signal_value_changed().connect(      spinbutton.signal_value_changed().connect(
159          sigc::mem_fun(*this, &NumEntryPermille::value_changed));          sigc::mem_fun(*this, &NumEntryPermille::value_changed));
# Line 167  NumEntryPermille::NumEntryPermille(const Line 161  NumEntryPermille::NumEntryPermille(const
161    
162  void NumEntryPermille::value_changed()  void NumEntryPermille::value_changed()
163  {  {
164      if (ptr) {      uint16_t new_value = uint16_t(spinbutton.get_value() * 10 + 0.5);
165          uint16_t new_value = uint16_t(spinbutton.get_value() * 10 + 0.5);      if (new_value != value) {
166          if (new_value != *ptr) {          value = uint16_t(spinbutton.get_value() * 10 + 0.5);
167              *ptr = uint16_t(spinbutton.get_value() * 10 + 0.5);          sig_changed();
             sig_changed();  
         }  
168      }      }
169  }  }
170    
171  void NumEntryPermille::set_ptr(uint16_t* ptr)  void NumEntryPermille::set_value(uint16_t value)
172  {  {
173      this->ptr = 0;      if (value != this->value) {
174      set_value(*ptr / 10.0);          spinbutton.set_value(value / 10.0);
175      this->ptr = ptr;      }
176  }  }
177    
178    
# Line 240  ChoiceEntryLeverageCtrl::ChoiceEntryLeve Line 232  ChoiceEntryLeverageCtrl::ChoiceEntryLeve
232      combobox.signal_changed().connect(      combobox.signal_changed().connect(
233          sigc::mem_fun(*this, &ChoiceEntryLeverageCtrl::value_changed));          sigc::mem_fun(*this, &ChoiceEntryLeverageCtrl::value_changed));
234      align.add(combobox);      align.add(combobox);
235        value.type = gig::leverage_ctrl_t::type_none;
236        value.controller_number = 0;
237  }  }
238    
239  void ChoiceEntryLeverageCtrl::value_changed()  void ChoiceEntryLeverageCtrl::value_changed()
240  {  {
241      if (ptr) {      int rowno = combobox.get_active_row_number();
242          int rowno = combobox.get_active_row_number();      switch (rowno)
243          switch (rowno)      {
244          {      case -1:
245          case -1:          break;
246              break;      case 0:
247          case 0:          value.type = gig::leverage_ctrl_t::type_none;
248              ptr->type = gig::leverage_ctrl_t::type_none;          break;
249              break;      case 1:
250          case 1:          value.type = gig::leverage_ctrl_t::type_channelaftertouch;
251              ptr->type = gig::leverage_ctrl_t::type_channelaftertouch;          break;
252              break;      case 2:
253          case 2:          value.type = gig::leverage_ctrl_t::type_velocity;
254              ptr->type = gig::leverage_ctrl_t::type_velocity;          break;
255              break;      default:
256          default:          value.type = gig::leverage_ctrl_t::type_controlchange;
257              ptr->type = gig::leverage_ctrl_t::type_controlchange;          int x = 3;
258              int x = 3;          for (int cc = 0 ; cc < 96 ; cc++) {
259              for (int cc = 0 ; cc < 96 ; cc++) {              if (controlChangeTexts[cc + 3]) {
260                  if (controlChangeTexts[cc + 3]) {                  if (rowno == x) {
261                      if (rowno == x) {                      value.controller_number = cc;
262                          ptr->controller_number = cc;                      break;
                         break;  
                     }  
                     x++;  
263                  }                  }
264                    x++;
265              }              }
             break;  
266          }          }
267          if (rowno >= 0) sig_changed();          break;
268      }      }
269        if (rowno >= 0) sig_changed();
270  }  }
271    
272  void ChoiceEntryLeverageCtrl::set_ptr(gig::leverage_ctrl_t* ptr)  void ChoiceEntryLeverageCtrl::set_value(gig::leverage_ctrl_t value)
273  {  {
     this->ptr = 0;  
274      int x;      int x;
275      switch (ptr->type)      switch (value.type)
276      {      {
277      case gig::leverage_ctrl_t::type_none:      case gig::leverage_ctrl_t::type_none:
278          x = 0;          x = 0;
# Line 297  void ChoiceEntryLeverageCtrl::set_ptr(gi Line 288  void ChoiceEntryLeverageCtrl::set_ptr(gi
288          for (int cc = 0 ; cc < 96 ; cc++) {          for (int cc = 0 ; cc < 96 ; cc++) {
289              if (controlChangeTexts[cc + 3]) {              if (controlChangeTexts[cc + 3]) {
290                  x++;                  x++;
291                  if (ptr->controller_number == cc) {                  if (value.controller_number == cc) {
292                      x += 3;                      x += 3;
293                      break;                      break;
294                  }                  }
# Line 309  void ChoiceEntryLeverageCtrl::set_ptr(gi Line 300  void ChoiceEntryLeverageCtrl::set_ptr(gi
300          break;          break;
301      }      }
302      combobox.set_active(x);      combobox.set_active(x);
     this->ptr = ptr;  
303  }  }
304    
305    
306  BoolEntry::BoolEntry(const char* labelText) :  BoolEntry::BoolEntry(const char* labelText) :
307      LabelWidget(labelText, checkbutton),      LabelWidget(labelText, checkbutton),
308      checkbutton(labelText),      checkbutton(labelText)
     ptr(0)  
 {  
     checkbutton.signal_toggled().connect(  
         sigc::mem_fun(*this, &BoolEntry::value_changed));  
 }  
   
 void BoolEntry::value_changed()  
 {  
     if (ptr) {  
         *ptr = checkbutton.get_active();  
         sig_changed();  
     }  
 }  
   
 void BoolEntry::set_ptr(bool* ptr)  
309  {  {
310      this->ptr = 0;      checkbutton.signal_toggled().connect(sig_changed.make_slot());
     checkbutton.set_active(*ptr);  
     this->ptr = ptr;  
311  }  }
312    
313    

Legend:
Removed from v.1359  
changed lines
  Added in v.1460

  ViewVC Help
Powered by ViewVC