/[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 1460 by persson, Sat Oct 27 12:28:33 2007 UTC revision 2169 by persson, Sun Mar 6 07:51:04 2011 UTC
# Line 1  Line 1 
1  /*  /*
2   * Copyright (C) 2006, 2007 Andreas Persson   * Copyright (C) 2006-2011 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    
20    #include <cstring>
21    
22  #include "paramedit.h"  #include "paramedit.h"
23    
24    #include "global.h"
25    #include "compat.h"
26    
27  namespace {  namespace {
28      const char* const controlChangeTexts[] = {      const char* const controlChangeTexts[] = {
29          "none", "channelaftertouch", "velocity",          _("none"), _("channelaftertouch"), _("velocity"),
30          0,          0,
31          "modwheel", // "Modulation Wheel or Lever",          _("modwheel"), // "Modulation Wheel or Lever",
32          "breath", // "Breath Controller",          _("breath"), // "Breath Controller",
33          0,          0,
34          "foot", // "Foot Controller",          _("foot"), // "Foot Controller",
35          "portamentotime", // "Portamento Time",          _("portamentotime"), // "Portamento Time",
36          0, 0, 0, 0, 0, 0,          0, 0, 0, 0, 0, 0,
37          "effect1", // "Effect Control 1",          _("effect1"), // "Effect Control 1",
38          "effect2", // "Effect Control 2",          _("effect2"), // "Effect Control 2",
39          0, 0,          0, 0,
40          "genpurpose1", // "General Purpose Controller 1",          _("genpurpose1"), // "General Purpose Controller 1",
41          "genpurpose2", // "General Purpose Controller 2",          _("genpurpose2"), // "General Purpose Controller 2",
42          "genpurpose3", // "General Purpose Controller 3",          _("genpurpose3"), // "General Purpose Controller 3",
43          "genpurpose4", // "General Purpose Controller 4",          _("genpurpose4"), // "General Purpose Controller 4",
44          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, 0, 0, 0, 0, 0,
45          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, 0, 0, 0, 0, 0,
46          0, 0, 0, 0, 0, 0,          0, 0, 0, 0, 0, 0,
47          "sustainpedal", // "Damper Pedal on/off (Sustain)",          _("sustainpedal"), // "Damper Pedal on/off (Sustain)",
48          "portamento", // "Portamento On/Off",          _("portamento"), // "Portamento On/Off",
49          "sostenuto", // "Sustenuto On/Off",          _("sostenuto"), // "Sustenuto On/Off",
50          "softpedal", // "Soft Pedal On/Off",          _("softpedal"), // "Soft Pedal On/Off",
51          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
52          "genpurpose5", // "General Purpose Controller 5",          _("genpurpose5"), // "General Purpose Controller 5",
53          "genpurpose6", // "General Purpose Controller 6",          _("genpurpose6"), // "General Purpose Controller 6",
54          "genpurpose7", // "General Purpose Controller 7",          _("genpurpose7"), // "General Purpose Controller 7",
55          "genpurpose8", // "General Purpose Controller 8",          _("genpurpose8"), // "General Purpose Controller 8",
56          0, 0, 0, 0, 0, 0, 0,          0, 0, 0, 0, 0, 0, 0,
57          "effect1depth", // "Effects 1 Depth",          _("effect1depth"), // "Effects 1 Depth",
58          "effect2depth", // "Effects 2 Depth",          _("effect2depth"), // "Effects 2 Depth",
59          "effect3depth", // "Effects 3 Depth",          _("effect3depth"), // "Effects 3 Depth",
60          "effect4depth", // "Effects 4 Depth",          _("effect4depth"), // "Effects 4 Depth",
61          "effect5depth", // "Effects 5 Depth"          _("effect5depth"), // "Effects 5 Depth"
62      };      };
63  }  }
64    
# Line 61  LabelWidget::LabelWidget(const char* lab Line 66  LabelWidget::LabelWidget(const char* lab
66      label(Glib::ustring(labelText) + ":"),      label(Glib::ustring(labelText) + ":"),
67      widget(widget)      widget(widget)
68  {  {
69      label.set_alignment(Gtk::ALIGN_LEFT);      label.set_alignment(Gtk::ALIGN_START);
70  }  }
71    
72  void LabelWidget::set_sensitive(bool sensitive)  void LabelWidget::set_sensitive(bool sensitive)
# Line 72  void LabelWidget::set_sensitive(bool sen Line 77  void LabelWidget::set_sensitive(bool sen
77    
78  NumEntry::NumEntry(const char* labelText, double lower, double upper,  NumEntry::NumEntry(const char* labelText, double lower, double upper,
79                     int decimals) :                     int decimals) :
80        LabelWidget(labelText, box),
81    #if (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION < 90) || GTKMM_MAJOR_VERSION < 2
82      adjust(lower, lower, upper, 1, 10),      adjust(lower, lower, upper, 1, 10),
83    #else
84        adjust(Gtk::Adjustment::create(lower, lower, upper, 1, 10)),
85    #endif
86      scale(adjust),      scale(adjust),
87      spinbutton(adjust),      spinbutton(adjust)
     LabelWidget(labelText, box)  
88  {  {
89      spinbutton.set_digits(decimals);      spinbutton.set_digits(decimals);
90      spinbutton.set_value(0);      spinbutton.set_value(0);
# Line 88  NumEntryGain::NumEntryGain(const char* l Line 97  NumEntryGain::NumEntryGain(const char* l
97                             double lower, double upper,                             double lower, double upper,
98                             int decimals, double coeff) :                             int decimals, double coeff) :
99      NumEntry(labelText, lower, upper, decimals),      NumEntry(labelText, lower, upper, decimals),
     coeff(coeff),  
100      value(0),      value(0),
101        coeff(coeff),
102      connected(true)      connected(true)
103  {  {
104      spinbutton.signal_value_changed().connect(      spinbutton.signal_value_changed().connect(
# Line 186  NoteEntry::NoteEntry(const char* labelTe Line 195  NoteEntry::NoteEntry(const char* labelTe
195  }  }
196    
197  const char* notes[] = {  const char* notes[] = {
198      "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"      _("C"), _("C#"), _("D"), _("D#"), _("E"), _("F"),_("F#"),
199        _("G"), _("G#"), _("A"), _("A#"), _("B")
200  };  };
201    
202    
# Line 221  bool NoteEntry::on_output() Line 231  bool NoteEntry::on_output()
231  }  }
232    
233  ChoiceEntryLeverageCtrl::ChoiceEntryLeverageCtrl(const char* labelText) :  ChoiceEntryLeverageCtrl::ChoiceEntryLeverageCtrl(const char* labelText) :
234      align(0, 0, 0, 0),      LabelWidget(labelText, align),
235      LabelWidget(labelText, align)      align(0, 0, 0, 0)
236  {  {
237      for (int i = 0 ; i < 99 ; i++) {      for (int i = 0 ; i < 99 ; i++) {
238          if (controlChangeTexts[i]) {          if (controlChangeTexts[i]) {
239    #if (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION < 90) || GTKMM_MAJOR_VERSION < 2
240              combobox.append_text(controlChangeTexts[i]);              combobox.append_text(controlChangeTexts[i]);
241    #else
242                combobox.append(controlChangeTexts[i]);
243    #endif
244          }          }
245      }      }
246      combobox.signal_changed().connect(      combobox.signal_changed().connect(
# Line 255  void ChoiceEntryLeverageCtrl::value_chan Line 269  void ChoiceEntryLeverageCtrl::value_chan
269      default:      default:
270          value.type = gig::leverage_ctrl_t::type_controlchange;          value.type = gig::leverage_ctrl_t::type_controlchange;
271          int x = 3;          int x = 3;
272          for (int cc = 0 ; cc < 96 ; cc++) {          for (uint cc = 0 ; cc < 96 ; cc++) {
273              if (controlChangeTexts[cc + 3]) {              if (controlChangeTexts[cc + 3]) {
274                  if (rowno == x) {                  if (rowno == x) {
275                      value.controller_number = cc;                      value.controller_number = cc;
# Line 285  void ChoiceEntryLeverageCtrl::set_value( Line 299  void ChoiceEntryLeverageCtrl::set_value(
299          break;          break;
300      case gig::leverage_ctrl_t::type_controlchange:      case gig::leverage_ctrl_t::type_controlchange:
301          x = -1;          x = -1;
302          for (int cc = 0 ; cc < 96 ; cc++) {          for (uint cc = 0 ; cc < 96 ; cc++) {
303              if (controlChangeTexts[cc + 3]) {              if (controlChangeTexts[cc + 3]) {
304                  x++;                  x++;
305                  if (value.controller_number == cc) {                  if (value.controller_number == cc) {
# Line 314  BoolEntry::BoolEntry(const char* labelTe Line 328  BoolEntry::BoolEntry(const char* labelTe
328  StringEntry::StringEntry(const char* labelText) :  StringEntry::StringEntry(const char* labelText) :
329      LabelWidget(labelText, entry)      LabelWidget(labelText, entry)
330  {  {
331      entry.signal_changed().connect(      entry.signal_changed().connect(sig_changed.make_slot());
         sigc::mem_fun(*this, &StringEntry::value_changed));  
332  }  }
333    
334  void StringEntry::value_changed()  StringEntryMultiLine::StringEntryMultiLine(const char* labelText) :
335        LabelWidget(labelText, frame)
336  {  {
337      if (ptr) {      text_buffer = text_view.get_buffer();
338          *ptr = entry.get_text();      frame.set_shadow_type(Gtk::SHADOW_IN);
339          sig_changed();      frame.add(text_view);
340      }      text_buffer->signal_changed().connect(sig_changed.make_slot());
341    }
342    
343    gig::String StringEntryMultiLine::get_value() const
344    {
345        Glib::ustring value = text_buffer->get_text();
346        for (int i = 0 ; (i = value.find("\x0a", i)) >= 0 ; i += 2)
347            value.replace(i, 1, "\x0d\x0a");
348        return value;
349  }  }
350    
351  void StringEntry::set_ptr(gig::String* ptr)  void StringEntryMultiLine::set_value(gig::String value)
352  {  {
353      this->ptr = 0;      for (int i = 0 ; (i = value.find("\x0d\x0a", i, 2)) >= 0 ; i++)
354      entry.set_text(*ptr);          value.replace(i, 2, "\x0a");
355      this->ptr = ptr;      text_buffer->set_text(value);
356  }  }

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

  ViewVC Help
Powered by ViewVC