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

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

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

revision 3176 by schoenebeck, Thu May 11 11:36:33 2017 UTC revision 3187 by schoenebeck, Wed May 17 16:14:20 2017 UTC
# Line 23  MacroEditor::MacroEditor() : Line 23  MacroEditor::MacroEditor() :
23    
24      set_default_size(800, 600);      set_default_size(800, 600);
25    
26      //FIXME: Commented out since Gtk::Label is a disaster when it comes to multi line content.      m_labelIntro.set_padding(10, 10);
27      /*m_labelIntro.set_text(  #if GTKMM_MAJOR_VERSION >= 3
28        m_labelIntro.set_line_wrap();
29    #endif
30        m_labelIntro.set_text(
31          _("A macro is a list of parameters and corresponding values which "          _("A macro is a list of parameters and corresponding values which "
32            "should be applied to the instrument editor when the macro is "            "should be applied to the instrument editor when the macro is "
33            "triggered by the user. A macro is triggered either by selecting "            "triggered by the user. Only the parameters listed here will be "
34            "the macro from the \"Macro\" menu, or by hitting the macro's "            "applied to the instrument editor when this macro is triggered, all "
35            "respective keyboard accelerator (F1 to F12).")            "other ones remain untouched. So simply delete parameters here which "
36              "you don't want to be modified by this macro. Double click on a "
37              "value to change it.")
38      );      );
39      m_labelIntro.set_line_wrap();      m_vbox.pack_start(m_labelIntro, Gtk::PACK_SHRINK);
     m_vbox.pack_start(m_labelIntro, Gtk::PACK_SHRINK);*/  
40    
41      // create Macro treeview (including its data model)      // create Macro treeview (including its data model)
42      m_treeStoreMacro = MacroTreeStore::create(m_treeModelMacro);      m_treeStoreMacro = MacroTreeStore::create(m_treeModelMacro);
# Line 54  MacroEditor::MacroEditor() : Line 58  MacroEditor::MacroEditor() :
58          //column->set_renderer(m_valueCellRenderer, m_treeModelMacro.m_col_value);          //column->set_renderer(m_valueCellRenderer, m_treeModelMacro.m_col_value);
59          column->add_attribute(m_valueCellRenderer.property_text(),          column->add_attribute(m_valueCellRenderer.property_text(),
60                                m_treeModelMacro.m_col_value);                                m_treeModelMacro.m_col_value);
61          //column->add_attribute(m_valueCellRenderer.property_has_entry(),          column->add_attribute(m_valueCellRenderer.property_has_entry(),
62          //                      m_treeModelMacro.m_col_allowTextEntry);                                m_treeModelMacro.m_col_allowTextEntry);
63          column->add_attribute(m_valueCellRenderer.property_editable(),          column->add_attribute(m_valueCellRenderer.property_editable(),
64                                m_treeModelMacro.m_col_editable);                                m_treeModelMacro.m_col_editable);
65          column->add_attribute(m_valueCellRenderer.property_model(),          column->add_attribute(m_valueCellRenderer.property_model(),
# Line 148  MacroEditor::MacroEditor() : Line 152  MacroEditor::MacroEditor() :
152          sigc::mem_fun(*this, &MacroEditor::onKeyReleased)          sigc::mem_fun(*this, &MacroEditor::onKeyReleased)
153      );      );
154    
155        m_deleteButton.set_tooltip_text(_("Delete the selected parameters from this macro."));
156        m_inverseDeleteButton.set_tooltip_text(_("Delete all parameters from this macro except the selected ones."));
157    
158      show_all_children();      show_all_children();
159      updateStatus();      updateStatus();
160  }  }
# Line 189  Glib::RefPtr<Gtk::ListStore> MacroEditor Line 196  Glib::RefPtr<Gtk::ListStore> MacroEditor
196      return refOptions;      return refOptions;
197  }  }
198    
199    inline static Serialization::String _boolToStr(bool b) {
200        // 'NO' intentional all uper case in contrast to 'Yes', simply because I
201        // find them easier distinguishable that way on quick readings
202        return b ? "Yes" : "NO";
203    }
204    
205    static const char* _boolOptions[] = { "Yes", "NO", NULL };
206    
207  void MacroEditor::buildTreeView(const Gtk::TreeModel::Row& parentRow, const Serialization::Object& parentObject) {  void MacroEditor::buildTreeView(const Gtk::TreeModel::Row& parentRow, const Serialization::Object& parentObject) {
208      for (int iMember = 0; iMember < parentObject.members().size(); ++iMember) {      for (int iMember = 0; iMember < parentObject.members().size(); ++iMember) {
209          const Serialization::Member& member = parentObject.members()[iMember];          const Serialization::Member& member = parentObject.members()[iMember];
# Line 198  void MacroEditor::buildTreeView(const Gt Line 213  void MacroEditor::buildTreeView(const Gt
213          row[m_treeModelMacro.m_col_name] = gig_to_utf8(member.name());          row[m_treeModelMacro.m_col_name] = gig_to_utf8(member.name());
214          row[m_treeModelMacro.m_col_type] = gig_to_utf8(member.type().asLongDescr());          row[m_treeModelMacro.m_col_type] = gig_to_utf8(member.type().asLongDescr());
215          row[m_treeModelMacro.m_col_uid]  = object.uid();          row[m_treeModelMacro.m_col_uid]  = object.uid();
216          row[m_treeModelMacro.m_col_allowTextEntry] = false;          row[m_treeModelMacro.m_col_allowTextEntry] = true;
217    
218          if (object.type().isClass()) {          if (object.type().isClass()) {
219              row[m_treeModelMacro.m_col_value] = "(class)";              row[m_treeModelMacro.m_col_value] = "(class)";
# Line 215  void MacroEditor::buildTreeView(const Gt Line 230  void MacroEditor::buildTreeView(const Gt
230                  Glib::RefPtr<Gtk::ListStore> refOptions = createComboOptions(allKeys);                  Glib::RefPtr<Gtk::ListStore> refOptions = createComboOptions(allKeys);
231                  row[m_treeModelMacro.m_col_options] = refOptions;                  row[m_treeModelMacro.m_col_options] = refOptions;
232              }              }
233            } else if (object.type().isBool()) {
234                row[m_treeModelMacro.m_col_value] =  _boolToStr( m_macro.valueAsBool(object) );
235                row[m_treeModelMacro.m_col_editable] = true;
236                Glib::RefPtr<Gtk::ListStore> refOptions = createComboOptions(_boolOptions);
237                row[m_treeModelMacro.m_col_options] = refOptions;
238                row[m_treeModelMacro.m_col_allowTextEntry] = false;
239          } else {          } else {
240              row[m_treeModelMacro.m_col_value] = m_macro.valueAsString(object);              row[m_treeModelMacro.m_col_value] = m_macro.valueAsString(object);
241              row[m_treeModelMacro.m_col_editable] = true;              row[m_treeModelMacro.m_col_editable] = true;
# Line 331  void MacroEditor::onMacroTreeViewRowValu Line 352  void MacroEditor::onMacroTreeViewRowValu
352              // no auto correct here yet (due to numeric vs. textual values)              // no auto correct here yet (due to numeric vs. textual values)
353              if (row[m_treeModelMacro.m_col_value] != value)              if (row[m_treeModelMacro.m_col_value] != value)
354                  row[m_treeModelMacro.m_col_value] = value;                  row[m_treeModelMacro.m_col_value] = value;
355            } else if (object.type().isBool()) {
356                m_macro.setAutoValue(object, gigvalue);
357                Serialization::String sBoolean = _boolToStr( m_macro.valueAsBool(object) );
358                // potentially auto correct (i.e. when type is bool, user entered '5' -> yields 'Yes')
359                if (row[m_treeModelMacro.m_col_value] != sBoolean)
360                    row[m_treeModelMacro.m_col_value] = sBoolean;
361          } else {          } else {
362              m_macro.setAutoValue(object, gigvalue);              m_macro.setAutoValue(object, gigvalue);
363              // potentially auto correct (i.e. when type is bool, user entered 5 -> yields 1)              // potentially auto correct (i.e. when type is bool, user entered 5 -> yields 1)

Legend:
Removed from v.3176  
changed lines
  Added in v.3187

  ViewVC Help
Powered by ViewVC