mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-10 20:04:46 +00:00
merge GuiBC<.,.> into Qt2BC
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19979 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
8906059a0a
commit
af8621ea73
@ -87,60 +87,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/** A templatised instantiation of the ButtonController's View requiring the
|
|
||||||
* gui-frontend widgets.
|
|
||||||
*/
|
|
||||||
template <class Button, class Widget>
|
|
||||||
class GuiBC : public BCView {
|
|
||||||
public:
|
|
||||||
///
|
|
||||||
GuiBC(ButtonController const & parent,
|
|
||||||
docstring const & cancel, docstring const & close);
|
|
||||||
|
|
||||||
//@{
|
|
||||||
/** Store pointers to these widgets. The pointers are _not_
|
|
||||||
* owned by GuiBC.
|
|
||||||
*/
|
|
||||||
void setOK(Button * obj) { okay_ = obj; }
|
|
||||||
void setApply(Button * obj) { apply_ = obj; }
|
|
||||||
void setCancel(Button * obj) { cancel_ = obj; }
|
|
||||||
void setRestore(Button * obj) { restore_ = obj; }
|
|
||||||
//@}
|
|
||||||
|
|
||||||
/** Add a pointer to the list of widgets whose activation
|
|
||||||
* state is dependent upon the read-only status of the
|
|
||||||
* underlying buffer.
|
|
||||||
*/
|
|
||||||
void addReadOnly(Widget * obj) { read_only_.push_back(obj); }
|
|
||||||
|
|
||||||
/// Refresh the status of the Ok, Apply, Restore, Cancel buttons.
|
|
||||||
virtual void refresh() const;
|
|
||||||
/// Refresh the status of any widgets in the read_only list
|
|
||||||
virtual void refreshReadOnly() const;
|
|
||||||
|
|
||||||
private:
|
|
||||||
/// Enable/Disable a widget
|
|
||||||
virtual void setWidgetEnabled(Widget * obj, bool enable) const = 0;
|
|
||||||
/// Enable/Disable a button
|
|
||||||
virtual void setButtonEnabled(Button * obj, bool enable) const = 0;
|
|
||||||
/// Set the Label on the button
|
|
||||||
virtual void setButtonLabel(Button * obj, docstring const & label) const = 0;
|
|
||||||
|
|
||||||
docstring const cancel_label_;
|
|
||||||
docstring const close_label_;
|
|
||||||
|
|
||||||
Button * okay_;
|
|
||||||
Button * apply_;
|
|
||||||
Button * cancel_;
|
|
||||||
Button * restore_;
|
|
||||||
|
|
||||||
typedef std::list<Widget *> Widgets;
|
|
||||||
Widgets read_only_;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace frontend
|
} // namespace frontend
|
||||||
} // namespace lyx
|
} // namespace lyx
|
||||||
|
|
||||||
#include "BCView.tmpl"
|
|
||||||
|
|
||||||
#endif // BCVIEW_H
|
#endif // BCVIEW_H
|
||||||
|
@ -1,80 +0,0 @@
|
|||||||
// -*- C++ -*-
|
|
||||||
/**
|
|
||||||
* \file ButtonController.tmpl
|
|
||||||
* This file is part of LyX, the document processor.
|
|
||||||
* Licence details can be found in the file COPYING.
|
|
||||||
*
|
|
||||||
* \author Allan Rae
|
|
||||||
* \author Angus Leeming
|
|
||||||
* \author Baruch Even
|
|
||||||
*
|
|
||||||
* Full author contact details are available in file CREDITS
|
|
||||||
*
|
|
||||||
* GuiBC is a base class and so these templatised methods will be
|
|
||||||
* instantiated if this file is #included in the derived classes' .C file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "BCView.h"
|
|
||||||
#include "ButtonPolicy.h"
|
|
||||||
#include "debug.h"
|
|
||||||
|
|
||||||
namespace lyx {
|
|
||||||
namespace frontend {
|
|
||||||
|
|
||||||
template <class Button, class Widget>
|
|
||||||
GuiBC<Button, Widget>::GuiBC(ButtonController const & parent,
|
|
||||||
lyx::docstring const & cancel, lyx::docstring const & close)
|
|
||||||
: BCView(parent),
|
|
||||||
cancel_label_(cancel), close_label_(close),
|
|
||||||
okay_(0), apply_(0), cancel_(0), restore_(0)
|
|
||||||
{}
|
|
||||||
|
|
||||||
|
|
||||||
template <class Button, class Widget>
|
|
||||||
void GuiBC<Button, Widget>::refresh() const
|
|
||||||
{
|
|
||||||
lyxerr[Debug::GUI] << "Calling BC refresh()" << std::endl;
|
|
||||||
|
|
||||||
bool const all_valid = checkWidgets();
|
|
||||||
|
|
||||||
if (okay_) {
|
|
||||||
bool const enabled =
|
|
||||||
all_valid && bp().buttonStatus(ButtonPolicy::OKAY);
|
|
||||||
setButtonEnabled(okay_, enabled);
|
|
||||||
}
|
|
||||||
if (apply_) {
|
|
||||||
bool const enabled =
|
|
||||||
all_valid && bp().buttonStatus(ButtonPolicy::APPLY);
|
|
||||||
setButtonEnabled(apply_, enabled);
|
|
||||||
}
|
|
||||||
if (restore_) {
|
|
||||||
bool const enabled =
|
|
||||||
all_valid && bp().buttonStatus(ButtonPolicy::RESTORE);
|
|
||||||
setButtonEnabled(restore_, enabled);
|
|
||||||
}
|
|
||||||
if (cancel_) {
|
|
||||||
bool const enabled = bp().buttonStatus(ButtonPolicy::CANCEL);
|
|
||||||
if (enabled)
|
|
||||||
setButtonLabel(cancel_, cancel_label_);
|
|
||||||
else
|
|
||||||
setButtonLabel(cancel_, close_label_);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <class Button, class Widget>
|
|
||||||
void GuiBC<Button, Widget>::refreshReadOnly() const
|
|
||||||
{
|
|
||||||
if (read_only_.empty()) return;
|
|
||||||
|
|
||||||
bool const enable = !bp().isReadOnly();
|
|
||||||
|
|
||||||
typename Widgets::const_iterator end = read_only_.end();
|
|
||||||
typename Widgets::const_iterator iter = read_only_.begin();
|
|
||||||
for (; iter != end; ++iter) {
|
|
||||||
setWidgetEnabled(*iter, enable);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace frontend
|
|
||||||
} // namespace lyx
|
|
@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
#include "ButtonController.h"
|
#include "ButtonController.h"
|
||||||
#include "BCView.h"
|
#include "BCView.h"
|
||||||
|
#include "debug.h"
|
||||||
|
|
||||||
namespace lyx {
|
namespace lyx {
|
||||||
namespace frontend {
|
namespace frontend {
|
||||||
|
@ -110,7 +110,8 @@ void nextState(ButtonPolicy::State & state,
|
|||||||
ButtonPolicy::StateMachine const & s_m,
|
ButtonPolicy::StateMachine const & s_m,
|
||||||
char const * function_name = "nextState")
|
char const * function_name = "nextState")
|
||||||
{
|
{
|
||||||
if (ButtonPolicy::SMI_NOOP == in) return;
|
if (ButtonPolicy::SMI_NOOP == in)
|
||||||
|
return;
|
||||||
|
|
||||||
ButtonPolicy::State tmp = s_m[state][in];
|
ButtonPolicy::State tmp = s_m[state][in];
|
||||||
|
|
||||||
@ -191,15 +192,11 @@ void PreferencesPolicy::input(SMInput input)
|
|||||||
{
|
{
|
||||||
// The APPLIED state is persistent. Next time the dialog is opened,
|
// The APPLIED state is persistent. Next time the dialog is opened,
|
||||||
// the user will be able to press 'Save'.
|
// the user will be able to press 'Save'.
|
||||||
if (SMI_CANCEL == input
|
if (SMI_CANCEL == input || SMI_HIDE == input) {
|
||||||
|| SMI_HIDE == input) {
|
|
||||||
if (state_ != APPLIED)
|
if (state_ != APPLIED)
|
||||||
state_ = INITIAL;
|
state_ = INITIAL;
|
||||||
} else {
|
} else {
|
||||||
nextState(state_,
|
nextState(state_, input, state_machine_, "PreferencesPolicy");
|
||||||
input,
|
|
||||||
state_machine_,
|
|
||||||
"PreferencesPolicy");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -250,8 +247,7 @@ void OkCancelPolicy::input(SMInput input)
|
|||||||
//lyxerr << "OkCancelPolicy::input" << endl;
|
//lyxerr << "OkCancelPolicy::input" << endl;
|
||||||
|
|
||||||
// CANCEL and HIDE always take us to INITIAL for all cases
|
// CANCEL and HIDE always take us to INITIAL for all cases
|
||||||
if (SMI_CANCEL == input
|
if (SMI_CANCEL == input || SMI_HIDE == input) {
|
||||||
|| SMI_HIDE == input) {
|
|
||||||
state_ = INITIAL;
|
state_ = INITIAL;
|
||||||
} else {
|
} else {
|
||||||
nextState(state_, input, state_machine_, "OkCancelPolicy");
|
nextState(state_, input, state_machine_, "OkCancelPolicy");
|
||||||
@ -324,13 +320,10 @@ void OkCancelReadOnlyPolicy::input(SMInput input)
|
|||||||
//lyxerr << "OkCancelReadOnlyPolicy::input" << endl;
|
//lyxerr << "OkCancelReadOnlyPolicy::input" << endl;
|
||||||
|
|
||||||
// CANCEL and HIDE always take us to INITIAL for all cases
|
// CANCEL and HIDE always take us to INITIAL for all cases
|
||||||
if (SMI_CANCEL == input
|
if (SMI_CANCEL == input || SMI_HIDE == input) {
|
||||||
|| SMI_HIDE == input) {
|
|
||||||
state_ = INITIAL;
|
state_ = INITIAL;
|
||||||
} else {
|
} else {
|
||||||
nextState(state_,
|
nextState(state_, input, state_machine_,
|
||||||
input,
|
|
||||||
state_machine_,
|
|
||||||
"OkCancelReadOnlyPolicy");
|
"OkCancelReadOnlyPolicy");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -402,13 +395,10 @@ void NoRepeatedApplyReadOnlyPolicy::input(SMInput input)
|
|||||||
//lyxerr << "NoReapeatedApplyReadOnlyPolicy::input" << endl;
|
//lyxerr << "NoReapeatedApplyReadOnlyPolicy::input" << endl;
|
||||||
|
|
||||||
// CANCEL and HIDE always take us to INITIAL for all cases
|
// CANCEL and HIDE always take us to INITIAL for all cases
|
||||||
if (SMI_CANCEL == input
|
if (SMI_CANCEL == input || SMI_HIDE == input) {
|
||||||
|| SMI_HIDE == input) {
|
|
||||||
state_ = INITIAL;
|
state_ = INITIAL;
|
||||||
} else {
|
} else {
|
||||||
nextState(state_,
|
nextState(state_, input, state_machine_,
|
||||||
input,
|
|
||||||
state_machine_,
|
|
||||||
"NoRepeatedApplyReadOnlyPolicy");
|
"NoRepeatedApplyReadOnlyPolicy");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -494,13 +484,10 @@ void OkApplyCancelReadOnlyPolicy::input(SMInput input)
|
|||||||
//lyxerr << "OkApplyCancelReadOnlyPolicy::input" << endl;
|
//lyxerr << "OkApplyCancelReadOnlyPolicy::input" << endl;
|
||||||
|
|
||||||
// CANCEL and HIDE always take us to INITIAL for all cases
|
// CANCEL and HIDE always take us to INITIAL for all cases
|
||||||
if (SMI_CANCEL == input
|
if (SMI_CANCEL == input || SMI_HIDE == input) {
|
||||||
|| SMI_HIDE == input) {
|
|
||||||
state_ = INITIAL;
|
state_ = INITIAL;
|
||||||
} else {
|
} else {
|
||||||
nextState(state_,
|
nextState(state_, input, state_machine_,
|
||||||
input,
|
|
||||||
state_machine_,
|
|
||||||
"OkApplyCancelReadOnlyPolicy");
|
"OkApplyCancelReadOnlyPolicy");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -560,13 +547,10 @@ void OkApplyCancelPolicy::input(SMInput input)
|
|||||||
//lyxerr << "OkApplyCancelPolicy::input" << endl;
|
//lyxerr << "OkApplyCancelPolicy::input" << endl;
|
||||||
|
|
||||||
// CANCEL and HIDE always take us to INITIAL for all cases
|
// CANCEL and HIDE always take us to INITIAL for all cases
|
||||||
if (SMI_CANCEL == input
|
if (SMI_CANCEL == input || SMI_HIDE == input) {
|
||||||
|| SMI_HIDE == input) {
|
|
||||||
state_ = INITIAL;
|
state_ = INITIAL;
|
||||||
} else {
|
} else {
|
||||||
nextState(state_,
|
nextState(state_, input, state_machine_,
|
||||||
input,
|
|
||||||
state_machine_,
|
|
||||||
"OkApplyCancelPolicy");
|
"OkApplyCancelPolicy");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -618,13 +602,10 @@ void NoRepeatedApplyPolicy::input(SMInput input)
|
|||||||
//lyxerr << "NoRepeatedApplyPolicy::input" << endl;
|
//lyxerr << "NoRepeatedApplyPolicy::input" << endl;
|
||||||
|
|
||||||
// CANCEL and HIDE always take us to INITIAL for all cases
|
// CANCEL and HIDE always take us to INITIAL for all cases
|
||||||
if (SMI_CANCEL == input
|
if (SMI_CANCEL == input || SMI_HIDE == input) {
|
||||||
|| SMI_HIDE == input) {
|
|
||||||
state_ = INITIAL;
|
state_ = INITIAL;
|
||||||
} else {
|
} else {
|
||||||
nextState(state_,
|
nextState(state_, input, state_machine_,
|
||||||
input,
|
|
||||||
state_machine_,
|
|
||||||
"NoRepeatedApplyPolicy");
|
"NoRepeatedApplyPolicy");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
#ifndef BUTTONPOLICY_H
|
#ifndef BUTTONPOLICY_H
|
||||||
#define BUTTONPOLICY_H
|
#define BUTTONPOLICY_H
|
||||||
|
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <boost/utility.hpp>
|
#include <boost/utility.hpp>
|
||||||
|
|
||||||
@ -60,7 +59,7 @@ namespace frontend {
|
|||||||
without requiring a change of the dialog contents. If no repeating is
|
without requiring a change of the dialog contents. If no repeating is
|
||||||
allowed the Ok+Apply buttons are deactivated. The Preferences dialog
|
allowed the Ok+Apply buttons are deactivated. The Preferences dialog
|
||||||
has its own special version of repeated apply handling because its Ok
|
has its own special version of repeated apply handling because its Ok
|
||||||
button is actually a Save button -- its always reasonable to Save the
|
button is actually a Save button -- it is always reasonable to Save the
|
||||||
preferences if the dialog has changed since the last save.
|
preferences if the dialog has changed since the last save.
|
||||||
|
|
||||||
The IgnorantPolicy is a special case that allows anything.
|
The IgnorantPolicy is a special case that allows anything.
|
||||||
@ -205,9 +204,7 @@ public:
|
|||||||
return button & outputs_[state_];
|
return button & outputs_[state_];
|
||||||
}
|
}
|
||||||
/// Are we in a read-only state?
|
/// Are we in a read-only state?
|
||||||
virtual bool isReadOnly() const {
|
virtual bool isReadOnly() const { return false; }
|
||||||
return false;
|
|
||||||
}
|
|
||||||
private:
|
private:
|
||||||
/// Current state.
|
/// Current state.
|
||||||
State state_;
|
State state_;
|
||||||
@ -320,8 +317,6 @@ class OkApplyCancelReadOnlyPolicy : public ButtonPolicy {
|
|||||||
public:
|
public:
|
||||||
///
|
///
|
||||||
OkApplyCancelReadOnlyPolicy();
|
OkApplyCancelReadOnlyPolicy();
|
||||||
///
|
|
||||||
//virtual ~OkApplyCancelReadOnlyPolicy() {}
|
|
||||||
|
|
||||||
/// Trigger a transition with this input.
|
/// Trigger a transition with this input.
|
||||||
virtual void input(SMInput);
|
virtual void input(SMInput);
|
||||||
@ -356,8 +351,6 @@ class OkApplyCancelPolicy : public ButtonPolicy {
|
|||||||
public:
|
public:
|
||||||
///
|
///
|
||||||
OkApplyCancelPolicy();
|
OkApplyCancelPolicy();
|
||||||
///
|
|
||||||
//virtual ~OkApplyCancelPolicy() {}
|
|
||||||
|
|
||||||
/// Trigger a transition with this input.
|
/// Trigger a transition with this input.
|
||||||
virtual void input(SMInput);
|
virtual void input(SMInput);
|
||||||
@ -366,9 +359,7 @@ public:
|
|||||||
return button & outputs_[state_];
|
return button & outputs_[state_];
|
||||||
}
|
}
|
||||||
/// Are we in a read-only state?
|
/// Are we in a read-only state?
|
||||||
virtual bool isReadOnly() const {
|
virtual bool isReadOnly() const { return false; }
|
||||||
return false;
|
|
||||||
}
|
|
||||||
private:
|
private:
|
||||||
/// Current state.
|
/// Current state.
|
||||||
State state_;
|
State state_;
|
||||||
@ -389,8 +380,6 @@ class NoRepeatedApplyPolicy : public ButtonPolicy {
|
|||||||
public:
|
public:
|
||||||
///
|
///
|
||||||
NoRepeatedApplyPolicy();
|
NoRepeatedApplyPolicy();
|
||||||
///
|
|
||||||
//virtual ~NoRepeatedApplyPolicy() {}
|
|
||||||
|
|
||||||
/// Trigger a transition with this input.
|
/// Trigger a transition with this input.
|
||||||
virtual void input(SMInput);
|
virtual void input(SMInput);
|
||||||
@ -399,9 +388,7 @@ public:
|
|||||||
return button & outputs_[state_];
|
return button & outputs_[state_];
|
||||||
}
|
}
|
||||||
/// Are we in a read-only state?
|
/// Are we in a read-only state?
|
||||||
virtual bool isReadOnly() const {
|
virtual bool isReadOnly() const { return false; }
|
||||||
return false;
|
|
||||||
}
|
|
||||||
private:
|
private:
|
||||||
/// Current state.
|
/// Current state.
|
||||||
State state_;
|
State state_;
|
||||||
@ -423,8 +410,6 @@ class PreferencesPolicy : public ButtonPolicy {
|
|||||||
public:
|
public:
|
||||||
///
|
///
|
||||||
PreferencesPolicy();
|
PreferencesPolicy();
|
||||||
///
|
|
||||||
//virtual ~PreferencesPolicy() {}
|
|
||||||
|
|
||||||
/// Trigger a transition with this input.
|
/// Trigger a transition with this input.
|
||||||
virtual void input(SMInput);
|
virtual void input(SMInput);
|
||||||
@ -433,9 +418,7 @@ public:
|
|||||||
return button & outputs_[state_];
|
return button & outputs_[state_];
|
||||||
}
|
}
|
||||||
/// Are we in a read-only state?
|
/// Are we in a read-only state?
|
||||||
virtual bool isReadOnly() const {
|
virtual bool isReadOnly() const { return false; }
|
||||||
return false;
|
|
||||||
}
|
|
||||||
private:
|
private:
|
||||||
/// Current state.
|
/// Current state.
|
||||||
State state_;
|
State state_;
|
||||||
@ -454,18 +437,12 @@ private:
|
|||||||
*/
|
*/
|
||||||
class IgnorantPolicy : public ButtonPolicy {
|
class IgnorantPolicy : public ButtonPolicy {
|
||||||
public:
|
public:
|
||||||
//virtual ~IgnorantPolicy() {}
|
|
||||||
|
|
||||||
/// Trigger a transition with this input.
|
/// Trigger a transition with this input.
|
||||||
virtual void input(SMInput) {}
|
virtual void input(SMInput) {}
|
||||||
/// Activation status of a button.
|
/// Activation status of a button.
|
||||||
virtual bool buttonStatus(Button) const {
|
virtual bool buttonStatus(Button) const { return true; }
|
||||||
return true;
|
|
||||||
}
|
|
||||||
/// Are we in a read-only state?
|
/// Are we in a read-only state?
|
||||||
virtual bool isReadOnly() const {
|
virtual bool isReadOnly() const { return false; }
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace frontend
|
} // namespace frontend
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
#include "frontends/LyXView.h"
|
#include "frontends/LyXView.h"
|
||||||
|
|
||||||
|
#include "debug.h"
|
||||||
#include "FuncRequest.h"
|
#include "FuncRequest.h"
|
||||||
#include "FuncStatus.h"
|
#include "FuncStatus.h"
|
||||||
#include "LyXFunc.h"
|
#include "LyXFunc.h"
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
include $(top_srcdir)/config/common.am
|
include $(top_srcdir)/config/common.am
|
||||||
|
|
||||||
EXTRA_DIST = BCView.tmpl
|
|
||||||
|
|
||||||
AM_CPPFLAGS += -I$(top_srcdir)/src $(BOOST_INCLUDES)
|
AM_CPPFLAGS += -I$(top_srcdir)/src $(BOOST_INCLUDES)
|
||||||
|
|
||||||
|
EXTRA_DIST =
|
||||||
|
|
||||||
pkglib_LTLIBRARIES = liblyxcontrollers.la
|
pkglib_LTLIBRARIES = liblyxcontrollers.la
|
||||||
|
|
||||||
SOURCEFILES = \
|
SOURCEFILES = \
|
||||||
|
@ -12,38 +12,6 @@
|
|||||||
|
|
||||||
#include "Dialogs.h"
|
#include "Dialogs.h"
|
||||||
|
|
||||||
#include "ControlAboutlyx.h"
|
|
||||||
#include "ControlBibtex.h"
|
|
||||||
#include "ControlBox.h"
|
|
||||||
#include "ControlBranch.h"
|
|
||||||
#include "ControlChanges.h"
|
|
||||||
#include "ControlCharacter.h"
|
|
||||||
#include "ControlDocument.h"
|
|
||||||
#include "ControlEmbeddedFiles.h"
|
|
||||||
#include "ControlErrorList.h"
|
|
||||||
#include "ControlERT.h"
|
|
||||||
#include "ControlExternal.h"
|
|
||||||
#include "ControlFloat.h"
|
|
||||||
#include "ControlGraphics.h"
|
|
||||||
#include "ControlInclude.h"
|
|
||||||
#include "ControlListings.h"
|
|
||||||
#include "ControlLog.h"
|
|
||||||
#include "ControlViewSource.h"
|
|
||||||
#include "ControlMath.h"
|
|
||||||
#include "ControlNote.h"
|
|
||||||
#include "ControlParagraph.h"
|
|
||||||
#include "ControlPrefs.h"
|
|
||||||
#include "ControlPrint.h"
|
|
||||||
#include "ControlRef.h"
|
|
||||||
#include "ControlSearch.h"
|
|
||||||
#include "ControlSendto.h"
|
|
||||||
#include "ControlShowFile.h"
|
|
||||||
#include "ControlSpellchecker.h"
|
|
||||||
#include "ControlTabular.h"
|
|
||||||
#include "ControlTabularCreate.h"
|
|
||||||
#include "ControlVSpace.h"
|
|
||||||
#include "ControlWrap.h"
|
|
||||||
|
|
||||||
#include "Qt2BC.h"
|
#include "Qt2BC.h"
|
||||||
#include "ButtonController.h"
|
#include "ButtonController.h"
|
||||||
#include "DockView.h"
|
#include "DockView.h"
|
||||||
|
@ -12,7 +12,9 @@
|
|||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#include "Qt2BC.h"
|
#include "Qt2BC.h"
|
||||||
#include "qt_helpers.h"
|
#include "BCView.h"
|
||||||
|
#include "ButtonPolicy.h"
|
||||||
|
#include "debug.h"
|
||||||
|
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QLineEdit>
|
#include <QLineEdit>
|
||||||
@ -20,21 +22,59 @@
|
|||||||
namespace lyx {
|
namespace lyx {
|
||||||
namespace frontend {
|
namespace frontend {
|
||||||
|
|
||||||
Qt2BC::Qt2BC(ButtonController const & parent,
|
|
||||||
docstring const & cancel, docstring const & close)
|
Qt2BC::Qt2BC(ButtonController const & parent)
|
||||||
: GuiBC<QPushButton, QWidget>(parent, cancel, close)
|
: BCView(parent), okay_(0), apply_(0), cancel_(0), restore_(0)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
void Qt2BC::setButtonEnabled(QPushButton * obj, bool enabled) const
|
void Qt2BC::refresh() const
|
||||||
{
|
{
|
||||||
obj->setEnabled(enabled);
|
lyxerr[Debug::GUI] << "Calling BC refresh()" << std::endl;
|
||||||
|
|
||||||
|
bool const all_valid = checkWidgets();
|
||||||
|
|
||||||
|
if (okay_) {
|
||||||
|
bool const enabled =
|
||||||
|
all_valid && bp().buttonStatus(ButtonPolicy::OKAY);
|
||||||
|
okay_->setEnabled(enabled);
|
||||||
|
}
|
||||||
|
if (apply_) {
|
||||||
|
bool const enabled =
|
||||||
|
all_valid && bp().buttonStatus(ButtonPolicy::APPLY);
|
||||||
|
apply_->setEnabled(enabled);
|
||||||
|
}
|
||||||
|
if (restore_) {
|
||||||
|
bool const enabled =
|
||||||
|
all_valid && bp().buttonStatus(ButtonPolicy::RESTORE);
|
||||||
|
restore_->setEnabled(enabled);
|
||||||
|
}
|
||||||
|
if (cancel_) {
|
||||||
|
bool const enabled = bp().buttonStatus(ButtonPolicy::CANCEL);
|
||||||
|
if (enabled)
|
||||||
|
cancel_->setText(toqstr(_("Cancel")));
|
||||||
|
else
|
||||||
|
cancel_->setText(toqstr(_("Close")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Qt2BC::refreshReadOnly() const
|
||||||
|
{
|
||||||
|
if (read_only_.empty()) return;
|
||||||
|
|
||||||
|
bool const enable = !bp().isReadOnly();
|
||||||
|
|
||||||
|
Widgets::const_iterator end = read_only_.end();
|
||||||
|
Widgets::const_iterator iter = read_only_.begin();
|
||||||
|
for (; iter != end; ++iter) {
|
||||||
|
setWidgetEnabled(*iter, enable);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Qt2BC::setWidgetEnabled(QWidget * obj, bool enabled) const
|
void Qt2BC::setWidgetEnabled(QWidget * obj, bool enabled) const
|
||||||
{
|
{
|
||||||
// yuck, rtti, but the user comes first
|
|
||||||
if (QLineEdit * le = qobject_cast<QLineEdit*>(obj))
|
if (QLineEdit * le = qobject_cast<QLineEdit*>(obj))
|
||||||
le->setReadOnly(!enabled);
|
le->setReadOnly(!enabled);
|
||||||
else
|
else
|
||||||
@ -43,11 +83,5 @@ void Qt2BC::setWidgetEnabled(QWidget * obj, bool enabled) const
|
|||||||
obj->setFocusPolicy(enabled ? Qt::StrongFocus : Qt::NoFocus);
|
obj->setFocusPolicy(enabled ? Qt::StrongFocus : Qt::NoFocus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Qt2BC::setButtonLabel(QPushButton * obj, docstring const & label) const
|
|
||||||
{
|
|
||||||
obj->setText(toqstr(label));
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace frontend
|
} // namespace frontend
|
||||||
} // namespace lyx
|
} // namespace lyx
|
||||||
|
@ -29,21 +29,44 @@ namespace frontend {
|
|||||||
the activation policy and which buttons correspond to which output of the
|
the activation policy and which buttons correspond to which output of the
|
||||||
state machine.
|
state machine.
|
||||||
*/
|
*/
|
||||||
class Qt2BC : public GuiBC<QPushButton, QWidget> {
|
|
||||||
|
class Qt2BC : public BCView
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
///
|
///
|
||||||
Qt2BC(ButtonController const &,
|
Qt2BC(ButtonController const & parent);
|
||||||
docstring const & = _("Cancel"),
|
|
||||||
docstring const & = _("Close"));
|
|
||||||
private:
|
|
||||||
/// Updates the button sensitivity (enabled/disabled)
|
|
||||||
void setButtonEnabled(QPushButton *, bool enabled) const;
|
|
||||||
|
|
||||||
|
//@{
|
||||||
|
/** Store pointers to these widgets.
|
||||||
|
*/
|
||||||
|
void setOK(QPushButton * obj) { okay_ = obj; }
|
||||||
|
void setApply(QPushButton * obj) { apply_ = obj; }
|
||||||
|
void setCancel(QPushButton * obj) { cancel_ = obj; }
|
||||||
|
void setRestore(QPushButton * obj) { restore_ = obj; }
|
||||||
|
//@}
|
||||||
|
|
||||||
|
/** Add a pointer to the list of widgets whose activation
|
||||||
|
* state is dependent upon the read-only status of the
|
||||||
|
* underlying buffer.
|
||||||
|
*/
|
||||||
|
void addReadOnly(QWidget * obj) { read_only_.push_back(obj); }
|
||||||
|
|
||||||
|
/// Refresh the status of the Ok, Apply, Restore, Cancel buttons.
|
||||||
|
virtual void refresh() const;
|
||||||
|
/// Refresh the status of any widgets in the read_only list
|
||||||
|
virtual void refreshReadOnly() const;
|
||||||
|
|
||||||
|
private:
|
||||||
/// Updates the widget sensitivity (enabled/disabled)
|
/// Updates the widget sensitivity (enabled/disabled)
|
||||||
void setWidgetEnabled(QWidget *, bool enabled) const;
|
void setWidgetEnabled(QWidget *, bool enabled) const;
|
||||||
|
|
||||||
/// Set the label on the button
|
QPushButton * okay_;
|
||||||
void setButtonLabel(QPushButton *, docstring const & label) const;
|
QPushButton * apply_;
|
||||||
|
QPushButton * cancel_;
|
||||||
|
QPushButton * restore_;
|
||||||
|
|
||||||
|
typedef std::list<QWidget *> Widgets;
|
||||||
|
Widgets read_only_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace frontend
|
} // namespace frontend
|
||||||
|
Loading…
Reference in New Issue
Block a user