#include "side-position-interface.hh"
#include "axis-group-interface.hh"
#include "align-interface.hh"
+#include "text-interface.hh"
+#include "system.hh"
#include "translator.icc"
-class New_instrument_name_engraver : public Engraver
+class Instrument_name_engraver : public Engraver
{
public:
- TRANSLATOR_DECLARATIONS (New_instrument_name_engraver);
+ TRANSLATOR_DECLARATIONS (Instrument_name_engraver);
protected:
Spanner *text_spanner_;
void process_music ();
};
-New_instrument_name_engraver::New_instrument_name_engraver ()
+Instrument_name_engraver::Instrument_name_engraver ()
{
text_spanner_ = 0;
}
void
-New_instrument_name_engraver::process_music ()
+Instrument_name_engraver::process_music ()
{
if (!text_spanner_)
{
SCM long_text = get_property ("instrument");
SCM short_text = get_property ("instr");
- if (! (scm_is_string (long_text)
- || scm_is_string (short_text)))
+ if (!(Text_interface::is_markup (long_text)
+ || Text_interface::is_markup (short_text)))
{
long_text = get_property ("vocalName");
short_text = get_property ("vocNam");
}
- if (scm_is_string (long_text)
- || scm_is_string (short_text))
+ if (Text_interface::is_markup (long_text)
+ || Text_interface::is_markup (short_text))
{
text_spanner_ = make_spanner ("InstrumentName", SCM_EOL);
- text_spanner_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn")));
+
+ Grob *col = unsmob_grob (get_property ("currentCommandColumn"));
+ text_spanner_->set_bound (LEFT, col);
text_spanner_->set_property ("text", short_text);
text_spanner_->set_property ("long-text", long_text);
}
}
void
-New_instrument_name_engraver::acknowledge_axis_group (Grob_info info)
+Instrument_name_engraver::acknowledge_axis_group (Grob_info info)
{
if (text_spanner_
&& dynamic_cast<Spanner *> (info.grob ())
}
void
-New_instrument_name_engraver::finalize ()
+Instrument_name_engraver::finalize ()
{
if (text_spanner_)
{
text_spanner_->set_bound (RIGHT,
unsmob_grob (get_property ("currentCommandColumn")));
+
+ Pointer_group_interface::set_ordered (text_spanner_, ly_symbol2scm ("elements"), false);
+
+ System *system = get_root_system (text_spanner_);
+
+ /*
+ UGH, should handle this in Score_engraver.
+ */
+ if (system)
+ Axis_group_interface::add_element (system, text_spanner_);
+ else
+ text_spanner_->programming_error ("can't find root system");
}
}
#include "translator.icc"
-ADD_ACKNOWLEDGER (New_instrument_name_engraver, axis_group);
+ADD_ACKNOWLEDGER (Instrument_name_engraver, axis_group);
-ADD_TRANSLATOR (New_instrument_name_engraver,
+ADD_TRANSLATOR (Instrument_name_engraver,
/* doc */
"Creates a system start text for instrument or vocal names.",
/* create */
"InstrumentName ",
- /* accept */ "",
+ /* accept */
+ "",
/* read */
"vocNam vocalName instrument instr "