mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 13:18:28 +00:00
Removed another historical artefact.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@8587 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
61290c38be
commit
12780bf2b6
@ -1,3 +1,8 @@
|
||||
2004-04-01 Angus Leeming <leeming@lyx.org>
|
||||
|
||||
* README: removed. It refered to the ancient and impossible to
|
||||
understand scheme ;-)
|
||||
|
||||
2004-03-31 Angus Leeming <leeming@lyx.org>
|
||||
|
||||
* ControlButtons.[Ch]:
|
||||
|
@ -1,93 +0,0 @@
|
||||
This directory provides the controllers that act as an interface between the
|
||||
LyX kernel and the GUI-specific implementations of each dialog. It also
|
||||
provides abstract base classes from which GUI-specific implemetations of the
|
||||
ButtonController and each separate dialog should be derived (see
|
||||
ButtonControlBase.[Ch] and ViewBase.h respectively).
|
||||
|
||||
The Controller connects the GUI-specific dialog to any appropriate signals and
|
||||
dispatches any changes in the data to the kernel. It has no knowledge of the
|
||||
actual instantiation of the GUI-dependent View and ButtonController, which
|
||||
should therefore be created elsewhere. Once created, the Controller will take
|
||||
care of their initialisation, management and, ultimately, destruction.
|
||||
|
||||
This leaves the GUI-specific dialog (and its author!) to worry only about the
|
||||
data that it has been created to input/modify.
|
||||
|
||||
This concept has been instatiated for the Citation dialog only at the moment.
|
||||
See xforms-new/FormCitation.[Ch] for an xforms-specific View of the dialog.
|
||||
|
||||
How the code works.
|
||||
===================
|
||||
|
||||
I'll describe Inset-type dialogs (eg, the Citation dialog). Non-inset-type
|
||||
(eg the Document dialog) have similar flow, but the important controller
|
||||
functions are to be found in ControlDialogs.h, not ControlInset.h.
|
||||
|
||||
Let's use the citation dialog as an example.
|
||||
|
||||
The dialog is launched by :
|
||||
a) clicking on an existing inset, emitting the showCitation()
|
||||
(Dialogs.h) signal, connected to the showInset() slot
|
||||
(controllers/ControlInset.h) in theControlCitation c-tor.
|
||||
b) request a new inset (eg from the menubar), emitting a
|
||||
createCitation() signal (Dialogs.h) connected to the createInset()
|
||||
slot (controllers/ControlInset.h) in theControlCitation c-tor.
|
||||
|
||||
The user presses the Ok, Apply, Cancel or Restore buttons. In xforms
|
||||
these are connected to the button controller (xforms/FormCitation.C:
|
||||
build) so:
|
||||
bc().setOK(dialog_->button_ok);
|
||||
bc().setApply(dialog_->button_apply);
|
||||
bc().setCancel(dialog_->button_cancel);
|
||||
bc().setRestore(dialog_->button_restore);
|
||||
The button controller alters the state of the buttons (active/inactive).
|
||||
xforms works by callbacks, so clicking on say the button_ok button
|
||||
causes a callback event to (see FormBase.C)
|
||||
|
||||
extern "C" void C_FormBaseOKCB(FL_OBJECT * ob, long)
|
||||
{
|
||||
GetForm(ob)->OKButton();
|
||||
}
|
||||
|
||||
GetForm() extracts the actual instance of FormCitation that caused the
|
||||
event and calls OKButton() (see controllers/ViewBase.h) which in turn
|
||||
calls the controller's OKButton method. (The ViewBase method exists
|
||||
only because :
|
||||
/** These shortcuts allow (e.g. xform's) global callback functions
|
||||
access to the buttons without making the whole controller_
|
||||
public. */
|
||||
|
||||
So, ultimately, pressing button_ok on the Citation dialog calls
|
||||
ControlBase::OKButton().
|
||||
|
||||
void ControlBase::OKButton()
|
||||
{
|
||||
apply();
|
||||
hide();
|
||||
bc().ok();
|
||||
}
|
||||
|
||||
|
||||
apply() and hide() are pure virtual methods, instantiated in
|
||||
ControlInset.h because the Citation dialog is an inset dialog and all
|
||||
insets are functionally identical.
|
||||
|
||||
template <class Inset, class Params>
|
||||
void ControlInset<Inset, Params>::apply()
|
||||
{
|
||||
if (lv_.buffer()->isReadonly())
|
||||
return;
|
||||
|
||||
view().apply();
|
||||
|
||||
if (inset_ && params() != getParams(*inset_))
|
||||
applyParamsToInset();
|
||||
else
|
||||
applyParamsNoInset();
|
||||
}
|
||||
|
||||
applyParamsToInset() and applyParamsNoInset(); are to be found in
|
||||
FormCommand.[Ch] because the citation inset is derived from
|
||||
InsetCommand and this subset of insets have identical internal
|
||||
structure and so the params can be applied in the same way.
|
||||
|
Loading…
Reference in New Issue
Block a user