2 /* This file is part of
3 * ======================================================
5 * LyX, The Document Processor
7 * Copyright 2000 The LyX Team.
9 * ======================================================
15 #include "DialogBase.h"
17 #include "support/utility.hpp"
18 #include "insets/insetcommand.h"
27 /** This class is an XForms GUI base class to insets derived from
30 class FormCommand : public DialogBase, public noncopyable {
33 FormCommand(LyXView *, Dialogs *, string const & );
35 virtual ~FormCommand();
37 /**@name Real per-instance Callback Methods */
39 static int WMHideCB(FL_FORM *, void *);
40 static void OKCB(FL_OBJECT *, long);
41 static void ApplyCB(FL_OBJECT *, long);
42 static void CancelCB(FL_OBJECT *, long);
43 static void InputCB(FL_OBJECT *, long);
47 /**@name Slot Methods */
49 /// Slot launching dialog to (possibly) create a new inset
50 void createInset( string const & );
51 /// Slot launching dialog to an existing inset
52 void showInset( InsetCommand * const );
56 virtual void build() = 0;
57 /// Filter the inputs on callback from xforms
58 virtual void input( long ) = 0;
59 /// Update dialog before showing it
60 virtual void update() = 0;
61 /// Apply from dialog (modify or create inset)
62 virtual void apply() = 0;
63 /// delete derived class variables from hide()
64 virtual void clearStore() {}
65 /// Pointer to the actual instantiation of the xform's form
66 virtual FL_FORM * const form() const = 0;
68 /**@name Protected Data */
70 /** Which LyXFunc do we use?
71 We could modify Dialogs to have a visible LyXFunc* instead and
72 save a couple of bytes per dialog.
75 /** Which Dialogs do we belong to?
76 Used so we can get at the signals we have to connect to.
79 /// pointer to the inset passed through showInset (if any)
80 InsetCommand * inset_;
81 /// the nitty-griity. What is modified and passed back
82 InsetCommandParams params;
86 /// Create the dialog if necessary, update it and display it.
90 /// Explicitly free the dialog.
94 /**@name Private Data */
96 /// Update connection.
100 /// inset::hide connection.
102 /// block opening of form from more than one inset
104 /// dialog title, displayed by WM.