allow to query export profile type
[ardour.git] / libs / ardour / ardour / element_importer.h
index 0a2d5d3fb3c9675152f38035d8eaffb3b65e4767..b6d6ff71669aeaeb7edebcb3a11893d6d196ca7d 100644 (file)
 #include <string>
 #include <utility>
 
-#include <sigc++/signal.h>
-
+#include "pbd/signals.h"
+#include "ardour/libardour_visibility.h"
 #include "ardour/types.h"
 
-using std::string;
-
 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 ();
-       
+
        /** 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
         *
         * @return whther or not the element could be prepared for moving
         */
        bool prepare_move ();
-       
+
        /** Cancels moving of element
         * If the element has been set to be moved, this cancels the move.
         */
        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
@@ -84,44 +86,44 @@ class ElementImporter
         */
        virtual void _move () = 0;
 
-       /** Should take care of all tasks that need to be done 
+       /** 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 
+
+       /// 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 () { 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;