lyx_mirror/src/frontends/controllers
Angus Leeming 3d137bfe77 Edwin's updateParagraph patch.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@4837 a592a061-630c-0410-9148-cb99ea01b6c8
2002-08-02 12:28:59 +00:00
..
.cvsignore
biblio.C Rename strip to rtrim 2002-07-28 22:50:13 +00:00
biblio.h get rid of LRegex and LSubstring, use boost::regex instead 2002-05-25 00:19:56 +00:00
ButtonController.h handle some tmpl files in a more sane way 2002-06-10 17:33:05 +00:00
ButtonController.tmpl
ButtonControllerBase.C ws cleanup 2002-03-21 21:21:28 +00:00
ButtonControllerBase.h ws cleanup 2002-03-21 21:21:28 +00:00
ButtonPolicies.C ws cleanup 2002-03-21 21:21:28 +00:00
ButtonPolicies.h ws cleanup 2002-03-21 21:21:28 +00:00
ChangeLog Edwin's updateParagraph patch. 2002-08-02 12:28:59 +00:00
character.C * Split out getLanguageData from character.[Ch] into its own files, 2002-04-29 15:56:36 +00:00
character.h * Split out getLanguageData from character.[Ch] into its own files, 2002-04-29 15:56:36 +00:00
ControlAboutlyx.C *duck* 2002-06-18 15:44:30 +00:00
ControlAboutlyx.h ws cleanup 2002-03-21 21:21:28 +00:00
ControlBibitem.C redraw() cleanup 2002-06-21 02:22:13 +00:00
ControlBibitem.h ws cleanup 2002-03-21 21:21:28 +00:00
ControlBibtex.C Changes to make RH-7.3 be able to run lyx. 2002-07-04 17:45:35 +00:00
ControlBibtex.h Merge Herbert's bibtex patch; it doesn't introduce any new bugs and 2002-06-20 20:41:00 +00:00
ControlButtons.C ws cleanup 2002-03-21 21:21:28 +00:00
ControlButtons.h Some minor cleanup + use of scoped_ptr instead of raw pointer, 2002-06-12 02:54:19 +00:00
ControlCharacter.C LyXView::view() now returns boost::shared_ptr<BufferView> const &. 2002-08-02 09:21:50 +00:00
ControlCharacter.h *duck* 2002-06-18 15:44:30 +00:00
ControlCitation.C *duck* 2002-06-18 15:44:30 +00:00
ControlCitation.h ws cleanup 2002-03-21 21:21:28 +00:00
ControlCommand.C handle some tmpl files in a more sane way 2002-06-10 17:33:05 +00:00
ControlCommand.h ws cleanup 2002-03-21 21:21:28 +00:00
ControlCommandBuffer.C missing changelog and small fix 2002-07-20 17:50:23 +00:00
ControlCommandBuffer.h I fixed the two bugs (Very shallow in fact) 2002-07-19 20:56:31 +00:00
ControlConnections.C 2002-07-02 Lars Gullik Bj�nnes <larsbj@birdstep.com> 2002-07-02 19:23:10 +00:00
ControlConnections.h Switch from SigC signals to boost::signals 2002-05-29 16:21:03 +00:00
ControlDialog_impl.C remove redundant // -*- C++ -*- 2002-01-25 11:26:40 +00:00
ControlDialog_impl.h ws cleanup 2002-03-21 21:21:28 +00:00
ControlDialog.h ws cleanup 2002-03-21 21:21:28 +00:00
ControlDialog.tmpl *duck* 2002-06-18 15:44:30 +00:00
ControlError.C *duck* 2002-06-18 15:44:30 +00:00
ControlError.h ws cleanup 2002-03-21 21:21:28 +00:00
ControlERT.C LyXView::view() now returns boost::shared_ptr<BufferView> const &. 2002-08-02 09:21:50 +00:00
ControlERT.h ws cleanup 2002-03-21 21:21:28 +00:00
ControlExternal.C *duck* 2002-06-18 15:44:30 +00:00
ControlExternal.h ws cleanup 2002-03-21 21:21:28 +00:00
ControlFloat.C handle Wide attribute of floats in their dialog (from Juergen S) 2002-07-24 15:37:17 +00:00
ControlFloat.h handle Wide attribute of floats in their dialog (from Juergen S) 2002-07-24 15:37:17 +00:00
ControlForks.C *duck* 2002-06-18 15:44:30 +00:00
ControlForks.h Switch from SigC signals to boost::signals 2002-05-29 16:21:03 +00:00
ControlGraphics.C latest graphics jumbo patch from herbert 2002-07-22 12:36:41 +00:00
ControlGraphics.h Internationalise the rotation origin strings in the graphics dialog in the 2002-05-01 09:25:51 +00:00
ControlInclude.C fix 459; support epsi and fig formats; fix bug in hu.po 2002-07-04 09:58:16 +00:00
ControlInclude.h ws cleanup 2002-03-21 21:21:28 +00:00
ControlIndex.C *duck* 2002-06-18 15:44:30 +00:00
ControlIndex.h ws cleanup 2002-03-21 21:21:28 +00:00
ControlInset.h handle some tmpl files in a more sane way 2002-06-10 17:33:05 +00:00
ControlInset.tmpl *duck* 2002-06-18 15:44:30 +00:00
ControlLog.C *duck* 2002-06-18 15:44:30 +00:00
ControlLog.h ws cleanup 2002-03-21 21:21:28 +00:00
ControlMinipage.C *duck* 2002-06-18 15:44:30 +00:00
ControlMinipage.h ws cleanup 2002-03-21 21:21:28 +00:00
ControlParagraph.C Edwin's updateParagraph patch. 2002-08-02 12:28:59 +00:00
ControlParagraph.h Edwin's updateParagraph patch. 2002-08-02 12:28:59 +00:00
ControlPreamble.C *duck* 2002-06-18 15:44:30 +00:00
ControlPreamble.h *duck* 2002-06-18 15:44:30 +00:00
ControlPrint.C *duck* 2002-06-18 15:44:30 +00:00
ControlPrint.h *duck* 2002-06-18 15:44:30 +00:00
ControlRef.C fix dispatch calls as suggested by Herbert 2002-07-20 17:27:03 +00:00
ControlRef.h ws cleanup 2002-03-21 21:21:28 +00:00
ControlSearch.C LyXView::view() now returns boost::shared_ptr<BufferView> const &. 2002-08-02 09:21:50 +00:00
ControlSearch.h ws cleanup 2002-03-21 21:21:28 +00:00
ControlSendto.C fix for open of non-existent file, writeFile() change 2002-08-01 22:26:30 +00:00
ControlSendto.h *duck* 2002-06-18 15:44:30 +00:00
ControlShowFile.C *duck* 2002-06-18 15:44:30 +00:00
ControlShowFile.h Add LString.h to ControlShowFile.h 2002-03-06 12:06:34 +00:00
ControlSpellchecker.C remove options from spellchecker 2002-08-01 03:08:01 +00:00
ControlSpellchecker.h remove options from spellchecker 2002-08-01 03:08:01 +00:00
ControlTabularCreate.C *duck* 2002-06-18 15:44:30 +00:00
ControlTabularCreate.h ws cleanup 2002-03-21 21:21:28 +00:00
ControlTexinfo.C Auto-scan for texinfo and bibtex dialogs 2002-06-20 23:35:10 +00:00
ControlTexinfo.h Merge Herbert's bibtex patch; it doesn't introduce any new bugs and 2002-06-20 20:41:00 +00:00
ControlThesaurus.C LyXView::view() now returns boost::shared_ptr<BufferView> const &. 2002-08-02 09:21:50 +00:00
ControlThesaurus.h ws cleanup 2002-03-21 21:21:28 +00:00
ControlToc.C toc support reorganization; changes to xform_helpers; aspect ratio patch from herbert 2002-07-21 15:51:07 +00:00
ControlToc.h toc support reorganization; changes to xform_helpers; aspect ratio patch from herbert 2002-07-21 15:51:07 +00:00
ControlUrl.C *duck* 2002-06-18 15:44:30 +00:00
ControlUrl.h ws cleanup 2002-03-21 21:21:28 +00:00
ControlVCLog.C *duck* 2002-06-18 15:44:30 +00:00
ControlVCLog.h ws cleanup 2002-03-21 21:21:28 +00:00
frnt_lang.C trivial translation fix. 2002-05-21 12:24:49 +00:00
frnt_lang.h Clean-up yesterday's code-splurge and sort the translated language names. 2002-04-30 15:07:03 +00:00
GUI.h 2002-07-02 Lars Gullik Bj�nnes <larsbj@birdstep.com> 2002-07-02 19:23:10 +00:00
helper_funcs.C Those parts of Herbert's natbib patch that either fix bugs or just move 2002-04-15 12:05:07 +00:00
helper_funcs.h Those parts of Herbert's natbib patch that either fix bugs or just move 2002-04-15 12:05:07 +00:00
Makefile.am I fixed the two bugs (Very shallow in fact) 2002-07-19 20:56:31 +00:00
README
tex_helpers.C More compilation fixes. 2002-06-21 16:35:29 +00:00
tex_helpers.h More compilation fixes. 2002-06-21 16:35:29 +00:00
ViewBase.h ws cleanup 2002-03-21 21:21:28 +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.