#include "inset.h"
#include "ExternalTransforms.h"
-#include "graphics/GraphicsTypes.h"
-
#include "support/filename.h"
+#include "support/translator.h"
#include <boost/scoped_ptr.hpp>
#include <boost/signals/trackable.hpp>
-#include <boost/weak_ptr.hpp>
+
+#include "mailinset.h"
/** No two InsetExternalParams variables can have the same temporary file.
- * This struct has copy-semantics but the copy constructor
+ * This class has copy-semantics but the copy constructor
* and assignment operator simply call the default constructor.
- * Use of this struct enables us to use the compiler-generated
+ * Use of this class enables us to use the compiler-generated
* copy constructor and assignment operator for the
- * InsetExternalParams struct.
+ * InsetExternalParams class.
*/
namespace lyx {
+
namespace external {
-struct TempName {
+class TempName {
+public:
TempName();
TempName(TempName const &);
~TempName();
TempName & operator=(TempName const &);
- std::string const & operator()() const { return tempname_; }
+ support::FileName const & operator()() const { return tempname_; }
private:
- std::string tempname_;
+ support::FileName tempname_;
};
+/// How is the image to be displayed on the LyX screen?
+enum DisplayType {
+ DefaultDisplay,
+ MonochromeDisplay,
+ GrayscaleDisplay,
+ ColorDisplay,
+ PreviewDisplay,
+ NoDisplay
+};
+
+
+/// The translator between the Display enum and corresponding lyx string.
+Translator<DisplayType, std::string> const & displayTranslator();
+
} // namespace external
-} // namespace lyx
/// hold parameters settable from the GUI
-struct InsetExternalParams {
+class InsetExternalParams {
+public:
InsetExternalParams();
void write(Buffer const &, std::ostream &) const;
bool read(Buffer const &, LyXLex &);
/// The name of the tempfile used for manipulations.
- std::string const & tempname() const { return tempname_(); }
+ support::FileName const & tempname() const { return tempname_(); }
/// The template currently in use.
void settemplate(std::string const &);
std::string const & templatename() const { return templatename_; }
/// The external file.
- lyx::support::FileName filename;
+ support::DocFileName filename;
/// How the inset is to be displayed by LyX.
- lyx::graphics::DisplayType display;
+ external::DisplayType display;
/// The scale of the displayed graphic (if shown).
unsigned int lyxscale;
- lyx::external::ClipData clipdata;
- lyx::external::ExtraData extradata;
- lyx::external::ResizeData resizedata;
- lyx::external::RotationData rotationdata;
+ external::ClipData clipdata;
+ external::ExtraData extradata;
+ external::ResizeData resizedata;
+ external::RotationData rotationdata;
+
+ /** if \c true, simply output the filename, maybe wrapped in a
+ * box, rather than generate and display the image etc.
+ */
+ bool draft;
private:
- lyx::external::TempName tempname_;
+ external::TempName tempname_;
std::string templatename_;
};
public:
InsetExternal();
///
- InsetExternal(InsetExternal const &);
- ///
virtual ~InsetExternal();
///
- virtual std::auto_ptr<InsetBase> clone() const;
- ///
- virtual dispatch_result localDispatch(FuncRequest const & cmd);
-
- ///
- virtual InsetOld::Code lyxCode() const { return EXTERNAL_CODE; }
+ virtual InsetBase::Code lyxCode() const { return EXTERNAL_CODE; }
///
virtual EDITABLE editable() const { return IS_EDITABLE; }
///
- void metrics(MetricsInfo &, Dimension &) const;
+ bool metrics(MetricsInfo &, Dimension &) const;
///
void draw(PainterInfo & pi, int x, int y) const;
///
virtual void read(Buffer const &, LyXLex & lex);
/// \returns the number of rows (\n's) of generated code.
- virtual int latex(Buffer const &, std::ostream &,
- LatexRunParams const &) const;
- ///
- virtual int ascii(Buffer const &, std::ostream &, int linelen) const;
+ virtual int latex(Buffer const &, odocstream &,
+ OutputParams const &) const;
///
- virtual int linuxdoc(Buffer const &, std::ostream &) const;
+ virtual int plaintext(Buffer const &, odocstream &,
+ OutputParams const &) const;
///
- virtual int docbook(Buffer const &, std::ostream &,
- bool mixcont) const;
+ virtual int docbook(Buffer const &, odocstream &,
+ OutputParams const &) const;
/// Update needed features for this inset.
virtual void validate(LaTeXFeatures & features) const;
///
InsetExternalParams const & params() const;
+ ///
void setParams(InsetExternalParams const &, Buffer const &);
+ ///
+ void addPreview(graphics::PreviewLoader &) const;
+ ///
+ void edit(LCursor & cur, bool left);
+ ///
+ bool getStatus(LCursor &, FuncRequest const &, FuncStatus &) const;
+protected:
+ InsetExternal(InsetExternal const &);
+ ///
+ virtual void doDispatch(LCursor & cur, FuncRequest & cmd);
private:
- void cache(BufferView *) const;
- BufferView * view() const;
+ virtual std::auto_ptr<InsetBase> doClone() const;
+
/** This method is connected to the graphics loader, so we are
* informed when the image has been loaded.
*/
void statusChanged() const;
+ /** Slot receiving a signal that the external file has changed
+ * and the preview should be regenerated.
+ */
+ void fileChanged() const;
+
/// The current params
InsetExternalParams params_;
/// The thing that actually draws the image on LyX's screen.
boost::scoped_ptr<RenderBase> renderer_;
-
- /// Cached
- mutable boost::weak_ptr<BufferView> view_;
};
-#include "mailinset.h"
-
class InsetExternalMailer : public MailInset {
public:
///
InsetExternal & inset_;
};
+} // namespace lyx
+
#endif