]> git.lyx.org Git - lyx.git/blobdiff - src/mover.h
Fix 3188, update the labels at each Caption insertion.
[lyx.git] / src / mover.h
index 951636bfdc343e35c9c91b051bfcaefe6fcfbbcc..79a6a01f998da0015b05a84287f4789999884862 100644 (file)
@@ -18,6 +18,8 @@
 
 namespace lyx {
 
+namespace support { class FileName; }
+
 /**
  *  Utility to copy a file of a specified format from one place to another.
  *  This base class simply invokes the command support::copy().
@@ -34,10 +36,8 @@ public:
         *  \returns true if successful.
         */
        bool
-       copy(std::string const & from, std::string const & to) const
-       {
-               return do_copy(from, to, to);
-       }
+       copy(support::FileName const & from, support::FileName const & to,
+            unsigned long int mode = (unsigned long int)-1) const;
 
        /** Copy file @c from to @c to.
         *  \see SpecialisedMover::SpecialisedMover() for an explanation of
@@ -48,10 +48,11 @@ public:
         *  \returns true if successful.
         */
        bool
-       copy(std::string const & from, std::string const & to,
-            std::string const & latex) const
+       copy(support::FileName const & from, support::FileName const & to,
+            std::string const & latex,
+            unsigned long int mode = (unsigned long int)-1) const
        {
-               return do_copy(from, to, latex);
+               return do_copy(from, to, latex, mode);
        }
 
        /** Rename file @c from as @c to.
@@ -61,10 +62,7 @@ public:
         *  \returns true if successful.
         */
        bool
-       rename(std::string const & from, std::string const & to) const
-       {
-               return do_rename(from, to, to);
-       }
+       rename(support::FileName const & from, support::FileName const & to) const;
 
        /** Rename file @c from as @c to.
         *  \see SpecialisedMover::SpecialisedMover() for an explanation of
@@ -75,7 +73,7 @@ public:
         *  \returns true if successful.
         */
        bool
-       rename(std::string const & from, std::string const & to,
+       rename(support::FileName const & from, support::FileName const & to,
               std::string const & latex) const
        {
                return do_rename(from, to, latex);
@@ -83,11 +81,11 @@ public:
 
 protected:
        virtual bool
-       do_copy(std::string const & from, std::string const & to,
-               std::string const &) const;
+       do_copy(support::FileName const & from, support::FileName const & to,
+               std::string const &, unsigned long int mode) const;
 
        virtual bool
-       do_rename(std::string const & from, std::string const & to,
+       do_rename(support::FileName const & from, support::FileName const & to,
                  std::string const &) const;
 };
 
@@ -106,6 +104,8 @@ class SpecialisedMover : public Mover
 public:
        SpecialisedMover() {}
 
+       virtual ~SpecialisedMover() {}
+
        /** @c command should be of the form
         *  <code>
         *      python $$s/scripts/fig_copy.py $$i $$o $$l
@@ -130,11 +130,11 @@ public:
 
 private:
        virtual bool
-       do_copy(std::string const & from, std::string const & to,
-               std::string const & latex) const;
+       do_copy(support::FileName const & from, support::FileName const & to,
+               std::string const & latex, unsigned long int mode) const;
 
        virtual bool
-       do_rename(std::string const & from, std::string const & to,
+       do_rename(support::FileName const & from, support::FileName const & to,
                  std::string const & latex) const;
 
        std::string command_;
@@ -164,9 +164,9 @@ private:
        typedef std::map<std::string, SpecialisedMover> SpecialsMap;
 
 public:
-       typedef SpecialsMap::const_iterator iterator;
-       iterator begin() const { return specials_.begin(); }
-       iterator end() const { return specials_.end(); }
+       typedef SpecialsMap::const_iterator const_iterator;
+       const_iterator begin() const { return specials_.begin(); }
+       const_iterator end() const { return specials_.end(); }
 
 private:
        Mover default_;
@@ -174,8 +174,14 @@ private:
 };
 
 
-extern Movers movers;
-extern Movers system_movers;
+extern Movers & theMovers();
+/// @c returns the Mover registered for format @c fmt.
+extern Mover const & getMover(std::string  const & fmt);
+/** Register a specialised @c command to be used to copy a file
+ *  of format @c fmt.
+ */
+extern void setMover(std::string const & fmt, std::string const & command);
+extern Movers & theSystemMovers();
 
 
 } // namespace lyx