lyx_mirror/src/frontends/controllers/ControlDialog.tmpl

81 lines
1.5 KiB
Cheetah
Raw Normal View History

// -*- C++ -*-
/**
* \file ControlDialog.tmpl
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Angus Leeming
*
* Full author contact details are available in file CREDITS
*
* ControlDialog is a base class and so these templatised methods will be
* instantiated if this file is #included in the derived classes' .C file.
*/
#include "ControlDialog.h"
#include "ButtonController.h"
#include "ViewBase.h"
template <class Base>
ControlDialog<Base>::ControlDialog(LyXView & lv, Dialogs & d)
: Base(lv, d), dialog_built_(false)
{}
template <class Base>
void ControlDialog<Base>::show()
{
if (isBufferDependent() && !bufferIsAvailable())
return;
connect();
if (!dialog_built_) {
view().build();
dialog_built_ = true;
}
setParams();
if (this->emergency_exit_) {
hide();
return;
}
bc().readOnly(bufferIsReadonly());
view().show();
// The widgets may not be valid, so refresh the button controller
bc().refresh();
}
template <class Base>
void ControlDialog<Base>::update()
{
if (isBufferDependent() && !bufferIsAvailable())
return;
setParams();
if (this->emergency_exit_) {
hide();
return;
}
bc().readOnly(bufferIsReadonly());
view().update();
// The widgets may not be valid, so refresh the button controller
bc().refresh();
}
template <class Base>
void ControlDialog<Base>::hide()
{
this->emergency_exit_ = false;
clearParams();
disconnect();
view().hide();
}