#ifndef DIALOG_H
#define DIALOG_H
-#include "lfuns.h"
+#include "FuncCode.h"
-#include <string>
+#include "insets/InsetCode.h"
+
+#include "support/strfwd.h"
+
+#include <QString>
-class QString;
class QWidget;
namespace lyx {
class Buffer;
class BufferView;
class FuncRequest;
+class Inset;
namespace frontend {
DOCBOOK
};
-
/** \c Dialog collects the different parts of a Model-Controller-View
* split of a generic dialog together.
*/
/// \param lv is the access point for the dialog to the LyX kernel.
/// \param name is the identifier given to the dialog by its parent
/// container.
- Dialog(GuiView & lv, std::string const & name);
+ /// \param title is the window title used for decoration.
+ Dialog(GuiView & lv, QString const & name, QString const & title);
virtual ~Dialog();
/// \param data is a string encoding of the data to be displayed.
/// It is passed to the Controller to be translated into a useable form.
virtual void showData(std::string const & data);
- virtual void updateData(std::string const & data);
//@}
+ /// \return inset at current cursor location.
+ Inset const * inset(InsetCode code) const;
+
/** Check whether we may apply our data.
*
* The buttons are disabled if not and (re-)enabled if yes.
/// Hide the dialog from sight
void hideView();
- /// Create the dialog if necessary, update it and display it.
+ /// Prepare dialog and display it.
void showView();
+ /// Prepare dialog before view.
+ void prepareView();
+
+ /// Decide wether the dialog should grab thekeyboard focus when shown.
+ /// This method defaults to true, override if a different behaviour
+ /// is wanted.
+ virtual bool wantInitialFocus() const { return true; }
+
/// Update the display of the dialog whilst it is still visible.
virtual void updateView() = 0;
//@}
/// Dialog identifier.
- /// FIXME for Andre': Now that Dialog is entirely within qt4/
- /// We can use QString instead in order to avoid <string> inclusion
- /// or we can pimpl name_.
- std::string const & name() const;
+ QString name() const { return name_; }
//@{
/** Enable the controller to initialise its data structures.
/// Enable the Controller to dispatch its data back to the LyX kernel.
virtual void dispatchParams() = 0;
+ /** \return true if the dialog should be updated when the
+ * buffer has changed.
+ */
+ virtual bool isBufferDependent() const = 0;
+
/** \return true if the dialog should be shown only when
* a buffer is open.
*/
- virtual bool isBufferDependent() const = 0;
+ virtual bool needBufferOpen() const = 0;
/** \return true if the dialog can apply data also
* for ReadOnly buffers.
* It should be used in dispatchParams(), too for consistency reasons.
* \returns the lfun that is sent for applying the data.
*/
- virtual kb_action getLfun() const { return LFUN_INSET_APPLY; }
+ virtual FuncCode getLfun() const { return LFUN_INSET_APPLY; }
/** Check whether we may apply our data.
*
*/
virtual bool disconnectOnApply() const { return false; }
- /** \return true if Dialog::View::show() should not display the dialog
- * after running update. Currently, only ControlSpellchecker
- * makes use of that.
- */
- virtual bool exitEarly() const { return false; }
//@}
/** \c Kernel part: a wrapper making the LyX kernel available to the dialog.
* stored by the dialog are not applied to the inset currently
* connected to the dialog. Instead, they will be used to generate
* a new inset at the cursor position.
- * \param name is used to identify the dialog to the kernel.
*/
void disconnect() const;
//@{
bool isBufferAvailable() const;
bool isBufferReadonly() const;
- std::string const bufferFilepath() const;
+ QString bufferFilePath() const;
//@}
/// The type of the current buffer.
* We should aim to reduce/remove these from the interface.
*/
//@{
- GuiView & lyxview() { return *lyxview_; }
- GuiView const & lyxview() const { return *lyxview_; }
-
- Buffer & buffer();
+ GuiView const & lyxview() const { return lyxview_; }
+ /// Current buffer
Buffer const & buffer() const;
-
- BufferView * bufferview();
+ /// Main document buffer
+ Buffer const & documentBuffer() const;
+ /// Current BufferView
BufferView const * bufferview() const;
//@}
protected:
+ ///
+ void setTitle(QString const & title) { title_ = title; }
+ ///
virtual void apply();
+ /// To be called when the buffer view has changed
+ virtual void onBufferViewChanged() = 0;
private:
/** The Dialog's name is the means by which a dialog identifies
- * itself to the LyXView.
+ * itself to the GuiView.
*/
- std::string const name_;
+ QString const name_;
///
- GuiView * lyxview_;
+ QString title_;
+ ///
+ GuiView & lyxview_;
/// intentionally unimplemented, therefore uncopiable
Dialog(Dialog const &);
void operator=(Dialog const &);
-
};