lyx_mirror/src/frontends/controllers
Angus Leeming 120e59bc97 64 bit compile fixes.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@8525 a592a061-630c-0410-9148-cb99ea01b6c8
2004-03-24 17:06:17 +00:00
..
.cvsignore
BCView.C If I ever see another licence blurb again, it'll be too soon... 2003-08-23 00:17:00 +00:00
BCView.h add <string> and other small fixes to make 2003-10-07 06:45:25 +00:00
BCView.tmpl The std::string mammoth path. 2003-10-06 15:43:21 +00:00
biblio.C Add support for the jurabib package (www.jurabib.org), a package for elegant BibTeX references, as requested in bug 408. 2004-03-07 14:33:17 +00:00
biblio.h Add support for the jurabib package (www.jurabib.org), a package for elegant BibTeX references, as requested in bug 408. 2004-03-07 14:33:17 +00:00
ButtonController.C Change Assert to BOOST_ASSERT. 2003-09-09 17:25:35 +00:00
ButtonController.h Finish the task of removing all cruft from the header files. 2003-09-07 21:25:37 +00:00
ButtonPolicies.C If I ever see another licence blurb again, it'll be too soon... 2003-08-23 00:17:00 +00:00
ButtonPolicies.h Replace LString.h with support/std_string.h, 2003-09-05 17:23:11 +00:00
ChangeLog 64 bit compile fixes. 2004-03-24 17:06:17 +00:00
character.C lyxfont.h no longer #includes LColor.h. 2003-09-16 09:01:15 +00:00
character.h The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlAboutlyx.C The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlAboutlyx.h The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlBibtex.C Handle Qt-style file filters like 2004-01-08 10:59:51 +00:00
ControlBibtex.h Handle Qt-style file filters like 2004-01-08 10:59:51 +00:00
ControlBox.C No trailing whitespace left in src... 2003-10-13 09:43:15 +00:00
ControlBox.h No trailing whitespace left in src... 2003-10-13 09:43:15 +00:00
ControlBranch.C Overhaul the branches code. 2003-12-14 16:33:56 +00:00
ControlBranch.h Overhaul the branches code. 2003-12-14 16:33:56 +00:00
ControlButtons.C Change Assert to BOOST_ASSERT. 2003-09-09 17:25:35 +00:00
ControlButtons.h If I ever see another licence blurb again, it'll be too soon... 2003-08-23 00:17:00 +00:00
ControlChanges.C The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlChanges.h The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlCharacter.C The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlCharacter.h The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlCitation.C Add support for the jurabib package (www.jurabib.org), a package for elegant BibTeX references, as requested in bug 408. 2004-03-07 14:33:17 +00:00
ControlCitation.h Add support for the jurabib package (www.jurabib.org), a package for elegant BibTeX references, as requested in bug 408. 2004-03-07 14:33:17 +00:00
ControlCommand.C Remove a whole heap of redundant functions from classes derived from 2003-12-11 15:23:15 +00:00
ControlCommand.h The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlCommandBuffer.C IU stuff + shuffling things from BV::dispatch to LyXText::dispatch 2004-02-13 07:30:59 +00:00
ControlCommandBuffer.h add <string> and other small fixes to make 2003-10-07 06:45:25 +00:00
ControlConnections.C Use Buffer const reference in most placees possible. 2003-08-28 07:41:31 +00:00
ControlConnections.h Use Buffer const reference in most placees possible. 2003-08-28 07:41:31 +00:00
ControlDialog_impl.C If I ever see another licence blurb again, it'll be too soon... 2003-08-23 00:17:00 +00:00
ControlDialog_impl.h If I ever see another licence blurb again, it'll be too soon... 2003-08-23 00:17:00 +00:00
ControlDialog.h If I ever see another licence blurb again, it'll be too soon... 2003-08-23 00:17:00 +00:00
ControlDialog.tmpl make lyx compile with gcc 3.4. remove some warnings. 2003-07-18 08:46:00 +00:00
ControlDocument.C Overhaul the branches code. 2003-12-14 16:33:56 +00:00
ControlDocument.h Overhaul the branches code. 2003-12-14 16:33:56 +00:00
ControlErrorList.C 64 bit compile fixes. 2004-03-24 17:06:17 +00:00
ControlErrorList.h The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlERT.C The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlERT.h move 'Inline' state from InsetERT to InsetCollapsable 2003-12-02 07:15:42 +00:00
ControlExternal.C std:: changes, stupid stuff 2004-01-28 16:21:29 +00:00
ControlExternal.h Handle Qt-style file filters like 2004-01-08 10:59:51 +00:00
ControlFloat.C The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlFloat.h The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlGraphics.C Handle Qt-style file filters like 2004-01-08 10:59:51 +00:00
ControlGraphics.h Handle Qt-style file filters like 2004-01-08 10:59:51 +00:00
ControlInclude.C Handle Qt-style file filters like 2004-01-08 10:59:51 +00:00
ControlInclude.h Handle Qt-style file filters like 2004-01-08 10:59:51 +00:00
ControlLog.C Rationalize the interface to the log dialog. 2003-12-05 13:37:23 +00:00
ControlLog.h Rationalize the interface to the log dialog. 2003-12-05 13:37:23 +00:00
ControlMath.C Make some functors adaptable and related small stuff. 2004-01-07 17:57:47 +00:00
ControlMath.h The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlNote.C InsetNote clean-up. 2003-12-10 17:28:14 +00:00
ControlNote.h InsetNote clean-up. 2003-12-10 17:28:14 +00:00
ControlParagraph.C The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlParagraph.h Convert the Search/Replace dialog to the cleaner MCV scheme. 2004-01-26 00:43:56 +00:00
ControlPreamble.C The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlPreamble.h The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlPrefs.C Handle Qt-style file filters like 2004-01-08 10:59:51 +00:00
ControlPrefs.h Handle Qt-style file filters like 2004-01-08 10:59:51 +00:00
ControlPrint.C Georg Baum\'s no-tempdir patch 2004-02-25 12:00:53 +00:00
ControlPrint.h Handle Qt-style file filters like 2004-01-08 10:59:51 +00:00
ControlRef.C The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlRef.h The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlSearch.C Convert the Search/Replace dialog to the cleaner MCV scheme. 2004-01-26 00:43:56 +00:00
ControlSearch.h Convert the Search/Replace dialog to the cleaner MCV scheme. 2004-01-26 00:43:56 +00:00
ControlSendto.C Georg Baum\'s no-tempdir patch 2004-02-25 12:00:53 +00:00
ControlSendto.h The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlShowFile.C The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlShowFile.h The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlSpellchecker.C 64 bit compile fixes. 2004-03-24 17:06:17 +00:00
ControlSpellchecker.h spellcheck cleanup 2003-11-04 00:26:50 +00:00
ControlTabular.C The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlTabular.h The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlTabularCreate.C The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlTabularCreate.h The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlTexinfo.C The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlTexinfo.h The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlThesaurus.C the monster patch 2004-01-15 17:34:44 +00:00
ControlThesaurus.h The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlToc.C The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlToc.h The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlVSpace.C The VSpace fixes (removal of VSPACE::NONE) from Michael and myself 2003-12-01 14:16:27 +00:00
ControlVSpace.h move space above/below from Paragraph into a separate vspace inset. 2003-11-28 15:53:34 +00:00
ControlWrap.C The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ControlWrap.h The std::string mammoth path. 2003-10-06 15:43:21 +00:00
Dialog.C partial fix to Bug 1251. The bug is still present, but only when pressing 'esc' for exiting the index dialog. 2004-01-09 08:52:53 +00:00
Dialog.h The std::string mammoth path. 2003-10-06 15:43:21 +00:00
frnt_lang.C The func.diff patch. Functors work and some tiny cleanup. 2004-01-31 15:30:24 +00:00
frnt_lang.h Fix a bunch of doxygen warnings. 2003-10-08 11:31:51 +00:00
GUI.h Finish the task of removing all cruft from the header files. 2003-09-07 21:25:37 +00:00
helper_funcs.C Handle Qt-style file filters like 2004-01-08 10:59:51 +00:00
helper_funcs.h Handle Qt-style file filters like 2004-01-08 10:59:51 +00:00
Kernel.C The std::string mammoth path. 2003-10-06 15:43:21 +00:00
Kernel.h The std::string mammoth path. 2003-10-06 15:43:21 +00:00
Makefile.am Remove the Forks dialog. 2004-03-17 21:21:47 +00:00
README Get rid of trailing whitespace 'noise' in future patches for the 2003-09-09 18:27:24 +00:00
tex_helpers.C The std::string mammoth path. 2003-10-06 15:43:21 +00:00
tex_helpers.h add <string> and other small fixes to make 2003-10-07 06:45:25 +00:00
ViewBase.C The std::string mammoth path. 2003-10-06 15:43:21 +00:00
ViewBase.h The std::string mammoth path. 2003-10-06 15:43:21 +00:00

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.