Support LV2 log trace messages
[ardour.git] / libs / ardour / ardour / element_importer.h
index 34ab0a7cc6a858d0b9dae5086c9740b6b2fb9035..b6d6ff71669aeaeb7edebcb3a11893d6d196ca7d 100644 (file)
 #include <string>
 #include <utility>
 
-#include <sigc++/signal.h>
-
-#include <ardour/types.h>
-
-using std::string;
+#include "pbd/signals.h"
+#include "ardour/libardour_visibility.h"
+#include "ardour/types.h"
 
 class XMLTree;
 namespace ARDOUR {
 
 class Session;
+class ImportStatus;
 
 /// Virtual interface class for element importers
-class ElementImporter
+class LIBARDOUR_API ElementImporter
 {
   public:
 
        ElementImporter (XMLTree const & source, ARDOUR::Session & session);
-       virtual ~ElementImporter () {};
-       
+       virtual ~ElementImporter ();
+
        /** Returns the element name
         * @return the name of the element
         */
-       virtual string get_name () const { return name; };
-       
+       virtual std::string get_name () const { return name; };
+
        /** Gets a textual representation of the element
         * @return a textual representation on this specific element
         */
-       virtual string get_info () const = 0;
-       
+       virtual std::string get_info () const = 0;
+
+       /** Gets import status, if applicable. */
+       virtual ImportStatus * get_import_status () { return 0; }
+
        /** Prepares to move element
-        * Should take care of all tasks that need to be done 
-        * before moving the element. This includes prompting
-        * the user for more information if necessary.
-        *
-        * If the element can be moved, queued should be set to true.
         *
         * @return whther or not the element could be prepared for moving
         */
-       virtual bool prepare_move () = 0;
-       
+       bool prepare_move ();
+
        /** Cancels moving of element
         * If the element has been set to be moved, this cancels the move.
-        * queued should be set to false.
         */
-       virtual void cancel_move () = 0;
-       
-       /** Moves the element to the taget session
-        * In addition to actually adding the element to the session
-        * changing ids, renaming files etc. should be taken care of.
-        */
-       virtual void move () = 0;
-       
+       void cancel_move ();
+
+       /// Moves the element to the taget session
+       void move ();
+
        /// Check if element is broken. Cannot be moved if broken.
        bool broken () { return _broken; }
-       
+
        /// Signal that requests for anew name
-       static sigc::signal <std::pair<bool, string>, string, string> Rename;
-       
+       static PBD::Signal2<std::pair<bool, std::string>,std::string, std::string> Rename;
+
        /// Signal for ok/cancel prompting
-       static sigc::signal <bool, string> Prompt;
-       
+       static PBD::Signal1<bool,std::string> Prompt;
+
   protected:
+
+       /** Moves the element to the taget session
+        * In addition to actually adding the element to the session
+        * changing ids, renaming files etc. should be taken care of.
+        */
+       virtual void _move () = 0;
+
+       /** Should take care of all tasks that need to be done
+        * before moving the element. This includes prompting
+        * the user for more information if necessary.
+        *
+        * @return whether or not the element can be moved
+        */
+       virtual bool _prepare_move () = 0;
+
+       /// Cancel move
+       virtual void _cancel_move () = 0;
+
        /// Source XML-tree
        XMLTree const & source;
-       
+
        /// Target session
        ARDOUR::Session & session;
-       
+
        /// Ture if the element has been prepared and queued for importing
-       bool    queued;
-       
+       bool queued () { return _queued; }
+
        /// Name of element
-       string  name;
-       
+       std::string  name;
+
        /// The sample rate of the session from which we are importing
-       nframes_t sample_rate;
-       
-       /// Converts smpte time to a string
-       string smpte_to_string(SMPTE::Time & time) const;
-       
+       framecnt_t sample_rate;
+
+       /// Converts timecode time to a string
+       std::string timecode_to_string (Timecode::Time & time) const;
+
        /// Converts samples so that times match the sessions sample rate
-       nframes_t rate_convert_samples (nframes_t samples) const;
-       
+       framecnt_t rate_convert_samples (framecnt_t samples) const;
+
        /// Converts samples so that times match the sessions sample rate (for straight use in XML)
-       string rate_convert_samples (string const & samples) const;
-       
+       std::string rate_convert_samples (std::string const & samples) const;
+
        /// Set element broken
        void set_broken () { _broken = true; }
-       
+
   private:
+       bool _queued;
        bool _broken;
 };