]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/property-engraver.cc
release: 1.3.120
[lilypond.git] / lily / property-engraver.cc
index 67b48089a33ac2528ec1fb1f88e2c3b0c3716890..4ece8f391927ecc1ceb4b71c40fad3eedd5d9584 100644 (file)
@@ -10,7 +10,7 @@
 #include "lily-guile.hh"
 #include "engraver.hh"
 #include "dictionary.hh"
-#include "score-element.hh"
+#include "grob.hh"
 #include "scm-hash.hh"
 #include "translator-group.hh"
 
@@ -24,12 +24,12 @@ class Property_engraver : public Engraver
     UGH. Junk Dictionary
   */
   Scheme_hash_table *prop_dict_;       // junkme
-  void apply_properties (SCM, Score_element*, Translator_group *origin);
+  void apply_properties (SCM, Grob*, Translator_group *origin);
 
 protected:
-  virtual void acknowledge_element (Score_element_info ei);
-  virtual void do_creation_processing ();
-  virtual void do_removal_processing ();
+  virtual void acknowledge_grob (Grob_info ei);
+  virtual void initialize ();
+  virtual void finalize ();
 public:
   ~Property_engraver();
   Property_engraver();
@@ -43,7 +43,7 @@ Property_engraver::Property_engraver()
   prop_dict_ = 0;
 }
 void
-Property_engraver::do_removal_processing()
+Property_engraver::finalize()
 {
   
 }
@@ -55,7 +55,7 @@ Property_engraver::~Property_engraver ()
 }
 
 void
-Property_engraver::do_creation_processing ()
+Property_engraver::initialize ()
 {
   prop_dict_ = new Scheme_hash_table;
 
@@ -68,9 +68,9 @@ Property_engraver::do_creation_processing ()
 }
 
 void
-Property_engraver::acknowledge_element (Score_element_info i)
+Property_engraver::acknowledge_grob (Grob_info i)
 {
 SCM ifs = i.elem_l_->get_elt_property ("interfaces");
SCM ifs = i.elem_l_->get_grob_property ("interfaces");
   SCM props;
   for (; gh_pair_p (ifs); ifs = gh_cdr (ifs))
     {      
@@ -88,7 +88,7 @@ Property_engraver::acknowledge_element (Score_element_info i)
 
 
 void
-Property_engraver::apply_properties (SCM p, Score_element *e, Translator_group*origin)
+Property_engraver::apply_properties (SCM p, Grob *e, Translator_group*origin)
 {
   for (; gh_pair_p (p); p = gh_cdr (p))
     {
@@ -109,56 +109,44 @@ Property_engraver::apply_properties (SCM p, Score_element *e, Translator_group*o
   
       SCM val = get_property (prop_sym);
 
-      if (val == SCM_UNDEFINED)
+      if (val == SCM_EOL)
        ;                       // Not defined in context.
       else if (gh_apply (type_p, scm_listify (val, SCM_UNDEFINED))
               == SCM_BOOL_T)   // defined and  right type: do it
        {
-         e->set_elt_property (elt_prop_sym, val);
-
-         SCM errport = scm_current_error_port ();
-         scm_display (prop_sym, errport);
-         scm_puts (_(" is deprecated. Use\n \\property ").ch_C(), errport);
-
-         scm_puts (origin->type_str_.ch_C(), errport);
-         scm_puts (".", errport);
-         
-         SCM name = e->get_elt_property ("meta");
-         name = scm_assoc (ly_symbol2scm ("name"), name);
-         scm_display (gh_cdr(name), errport);
-         scm_puts(" \\push #'",errport);
-         scm_display (elt_prop_sym,errport);
-         scm_puts ( " = #",errport);
-         if (gh_string_p (val))
-           scm_puts ("\"", errport);
-         scm_display (val, scm_current_error_port ());
-         if (gh_string_p (val))
-           scm_puts ("\"", errport);
-         scm_puts ("\n", errport);
+         e->set_grob_property (elt_prop_sym, val);
+
+         SCM meta = e->get_grob_property ("meta");
+         SCM name = scm_assoc (ly_symbol2scm ("name"), meta);
+         warning (_f ("%s is deprecated.  Use\n \\property %s.%s \\override #'%s = #%s",
+                      ly_symbol2string (prop_sym).ch_C (),
+                      origin->type_str_.ch_C (),
+                      ly_scm2string (gh_cdr (name)).ch_C (),
+                      ly_symbol2string (elt_prop_sym).ch_C (),
+                      ly_scm2string (ly_write2scm (val)).ch_C ()));
        }
       else
 
        /*
-           we don't print a warning if VAL == #f, because we would
+           we don't print a warning if VAL == (), because we would
            get lots of warnings when we restore stuff to default, eg.
 
-           slurDash = #1 [...] slurDash = ##f
+           slurDash = #1 [...] slurDash = ()
 
            should not cause "type error: slurDash expects number not
-           boolean"
+           boolean
 
        */
-       if (val != SCM_BOOL_F)
+       if (val != SCM_EOL)
          {                     // not the right type: error message.
            SCM errport = scm_current_error_port ();
-           warning (_("Wrong type for property"));
-           scm_display (prop_sym, errport);
-           scm_puts (", type predicate: ", errport);
-           scm_display (type_p, errport);
-           scm_puts (", value found: ", errport);
-           scm_display (val, errport);
-           scm_puts (" type: ", errport);
-           scm_display (ly_type (val), errport);
+           SCM typefunc = scm_eval2 (ly_symbol2scm ("type-name"), SCM_EOL);
+           SCM type_name = gh_call1 (typefunc, type_p);
+           warning (_f ("Wrong type for property: %s, type: %s, value found: %s, type: %s",
+                        ly_symbol2string (prop_sym).ch_C (),
+                        ly_scm2string (type_name).ch_C (),
+                        ly_scm2string (ly_write2scm (val)).ch_C (),
+                        ly_scm2string (ly_type (val)).ch_C ()));
            scm_puts ("\n", errport);
          }
     }