lyx_mirror/src/insets/insetexternal.h

151 lines
3.9 KiB
C
Raw Normal View History

// -*- C++ -*-
/* This file is part of*
* ======================================================
*
* LyX, The Document Processor
*
* Copyright 1995 Matthias Ettrich
* Copyright 1995-2000 The LyX Team.
*
* ====================================================== */
#ifndef INSET_EXTERNAL_H
#define INSET_EXTERNAL_H
#ifdef __GNUG__
#pragma interface
#endif
#include "insetbutton.h"
#include "LString.h"
#include "../lyx.h"
struct ExternalTemplate;
class InsetExternal : public InsetButton {
public:
InsetExternal();
///
virtual ~InsetExternal();
/// what appears in the minibuffer when opening
virtual const char * EditMessage() const;
///
virtual void Edit(BufferView *, int x, int y, unsigned int button);
///
virtual EDITABLE Editable() const { return IS_EDITABLE; }
///
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.
If the free_spc (freespacing) variable is set, then this inset
is in a free-spacing paragraph.
*/
virtual int Latex(Buffer const *, std::ostream &, bool fragile,
bool free_spc) const;
///
virtual int Ascii(Buffer const *, std::ostream &) const;
///
virtual int Linuxdoc(Buffer const *, std::ostream &) const;
///
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() const;
/// returns the text of the button
virtual string getScreenLabel() const;
/// Callback function for the template drop-down
static void templateCB(FL_OBJECT *, long);
/// Callback function for the browse button
static void browseCB(FL_OBJECT *, long);
/// Callback function for the edit button
static void editCB(FL_OBJECT *, long);
/// Callback function for the view button
static void viewCB(FL_OBJECT *, long);
/// Callback function for the update production button
static void updateCB(FL_OBJECT *, long);
/// Callback function for the ok button
static void okCB(FL_OBJECT *, long);
/// 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 doSubstitution(Buffer const *, string const & s) const;
/// Get the LyX name of the currently selected template in the choice list
string getCurrentTemplate() const;
/// Get a certain template from a LyX name
ExternalTemplate getTemplate(string const & lyxname) const;
/**
* 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 getTemplateName(int n) const;
/// Get a string with all the GUI template names separated by |
string 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;
/// A temp filename
string tempname;
};
#endif