// -*- C++ -*-
/* This file is part of*
- * ======================================================
+ * ======================================================
*
* LyX, The Document Processor
- *
+ *
* Copyright 1995 Matthias Ettrich
* Copyright 1995-2000 The LyX Team.
*
#endif
#include "insetbutton.h"
+#include "ExternalTemplate.h"
#include "LString.h"
-#include "../lyx.h"
+#include <sigc++/signal_system.h>
-struct ExternalTemplate;
+#ifdef SIGC_CXX_NAMESPACES
+using SigC::Signal0;
+#endif
///
class InsetExternal : public InsetButton {
public:
+ /// hold parameters settable from the GUI
+ struct InsetExternalParams {
+ InsetExternalParams(string const & f = string(),
+ string const & p = string(),
+ ExternalTemplate const & t = ExternalTemplate())
+ : filename(f), parameters(p), templ(t) {}
+ /// the filename
+ string filename;
+ /// the parameters of the current choice
+ string parameters;
+ /// the current template used
+ ExternalTemplate templ;
+ };
+
InsetExternal();
///
virtual ~InsetExternal();
virtual void Write(Buffer const *, std::ostream &) const;
///
virtual void Read(Buffer const *, LyXLex & lex);
+
/** returns the number of rows (\n's) of generated tex code.
fragile == true means, that the inset should take care about
fragile commands by adding a \protect before.
*/
virtual int Latex(Buffer const *, std::ostream &, bool fragile,
bool free_spc) const;
- ///
+ /// write ASCII output to the ostream
virtual int Ascii(Buffer const *, std::ostream &, int linelen) const;
- ///
+ /// write LinuxDoc output to the ostream
virtual int Linuxdoc(Buffer const *, std::ostream &) const;
- ///
+ /// write DocBook output to the ostream
virtual int DocBook(Buffer const *, std::ostream &) const;
+
/// Updates needed features for this inset.
virtual void Validate(LaTeXFeatures & features) const;
/// returns LyX code associated with the inset. Used for TOC, ...)
virtual Inset::Code LyxCode() const { return EXTERNAL_CODE; }
-
+
///
virtual Inset * Clone(Buffer const &) const;
/// returns the text of the button
virtual string const getScreenLabel() const;
- /// Callback function for the template drop-down
- static void templateCB(FL_OBJECT *, long);
+ // The following public members are used from the frontends code
+
+ /// set the parameters from a Params structure
+ virtual void setFromParams(InsetExternalParams const &);
- /// Callback function for the browse button
- static void browseCB(FL_OBJECT *, long);
+ /// update the file represented by the template
+ void updateExternal() const;
- /// Callback function for the edit button
- static void editCB(FL_OBJECT *, long);
+ /// edit file of this template
+ void editExternal() const;
- /// Callback function for the view button
- static void viewCB(FL_OBJECT *, long);
+ /// view file of this template
+ void viewExternal() const;
- /// Callback function for the update production button
- static void updateCB(FL_OBJECT *, long);
+ /// return a copy of our current params
+ InsetExternalParams params() const;
- /// Callback function for the ok button
- static void okCB(FL_OBJECT *, long);
+ /// hide connection
+ Signal0<void> hideDialog;
- /// Callback function for the cancel button
- static void cancelCB(FL_OBJECT *, long);
private:
/// Write the output for a specific file format
int write(string const & format, Buffer const *,
std::ostream &) const;
- /// Apply the changes
- void doApply(BufferView * bv);
-
/// Execute this command in the directory of this document
void executeCommand(string const & s, Buffer const * buf) const;
- /// Update if automatic
- void automaticUpdate(BufferView const *) const;
-
- /// Do update
- void doUpdate(BufferView const *) const;
- /// Do edit
- void doEdit(BufferView const *) const;
- /// Do view
- void doView(BufferView const *) const;
-
/// Substitute meta-variables in this string
string const doSubstitution(Buffer const *, string const & s) const;
- /** Get the LyX name of the currently selected
- template in the choice list
- */
- string const getCurrentTemplate() const;
-
- /// Get a certain template from a LyX name
- ExternalTemplate const getTemplate(string const & lyxname) const;
+ /// our owning view
+ BufferView * view;
- /**
- Get the number starting from 1 of a template with a
- specific LyX name for the choice list
- */
- int getTemplateNumber(string const & guiname) const;
-
- /// Get the LyX name of a template with a given number starting from 1
- string const getTemplateName(int n) const;
-
- /// Get a string with all the GUI template names separated by |
- string const getTemplateString() const;
-
- ///
- struct Holder {
- InsetExternal * inset;
- BufferView * view;
- };
- ///
- Holder holder;
-
- /// The external inset form
- FD_form_external * form_external;
-
- ///
- string templatename;
-
- ///
- string filename;
-
- ///
- string parameters;
+ /// the current params
+ InsetExternalParams params_;
/// A temp filename
string tempname;