mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 10:00:33 +00:00
* A controller-view split of the math panel and its daughter dialogs.
* Get rid of FormBaseDeprecated. * Merge FormBase and FeedbackController. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@5715 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
267e4d92ea
commit
1a0655a514
@ -1,3 +1,10 @@
|
||||
2002-11-25 Angus Leeming <leeming@lyx.org>
|
||||
|
||||
* ControlDialog.h (hide, update): move from protected to public.
|
||||
|
||||
* ControlMath.[Ch]: add controllers for the main math panel dialog and
|
||||
for any daughter dialogs stored by the main panel.
|
||||
|
||||
2002-11-21 Angus Leeming <leeming@lyx.org>
|
||||
|
||||
* ControlDocument.[Ch] (classApply): no longer returns bool.
|
||||
|
@ -34,12 +34,12 @@ public:
|
||||
* Publicly accessible so that it can be invoked by the Dialogs class.
|
||||
*/
|
||||
virtual void show();
|
||||
protected:
|
||||
/// Hide the dialog.
|
||||
virtual void hide();
|
||||
/// Update the dialog.
|
||||
virtual void update();
|
||||
|
||||
protected:
|
||||
/// clean-up on hide.
|
||||
virtual void clearParams() {}
|
||||
/// set the params before show or update
|
||||
|
@ -12,10 +12,106 @@
|
||||
#include <config.h>
|
||||
|
||||
#include "ControlMath.h"
|
||||
#include "ViewBase.h"
|
||||
|
||||
#include "debug.h"
|
||||
#include "funcrequest.h"
|
||||
|
||||
#include "frontends/LyXView.h"
|
||||
|
||||
#include "support/lstrings.h"
|
||||
#include "support/filetools.h"
|
||||
#include "debug.h"
|
||||
|
||||
|
||||
ControlMath::ControlMath(LyXView & lv, Dialogs & d)
|
||||
: ControlDialogBD(lv, d)
|
||||
{}
|
||||
|
||||
|
||||
void ControlMath::apply()
|
||||
{
|
||||
view().apply();
|
||||
}
|
||||
|
||||
|
||||
void ControlMath::dispatchFunc(kb_action action, string const & arg) const
|
||||
{
|
||||
lv_.dispatch(FuncRequest(action, arg));
|
||||
}
|
||||
|
||||
|
||||
void ControlMath::insertSymbol(string const & sym, bool bs) const
|
||||
{
|
||||
if (bs)
|
||||
lv_.dispatch(FuncRequest(LFUN_INSERT_MATH, '\\' + sym));
|
||||
else
|
||||
lv_.dispatch(FuncRequest(LFUN_INSERT_MATH, sym));
|
||||
}
|
||||
|
||||
|
||||
void ControlMath::addDaughter(void * key, ViewBase * v,
|
||||
ButtonControllerBase * bc)
|
||||
{
|
||||
if (daughters_.find(key) != daughters_.end())
|
||||
return;
|
||||
|
||||
daughters_[key] = DaughterPtr(new GUIMathSub(lv_, d_, *this, v, bc));
|
||||
}
|
||||
|
||||
|
||||
void ControlMath::showDaughter(void * key)
|
||||
{
|
||||
Store::iterator it = daughters_.find(key);
|
||||
GUIMathSub * const new_active =
|
||||
(it == daughters_.end()) ? 0 : it->second.get();
|
||||
|
||||
if (active_ != new_active) {
|
||||
if (active_ )
|
||||
active_->controller().hide();
|
||||
active_ = new_active;
|
||||
}
|
||||
|
||||
if (active_)
|
||||
active_->controller().show();
|
||||
}
|
||||
|
||||
|
||||
|
||||
ControlMathSub::ControlMathSub(LyXView & lv, Dialogs & d, ControlMath const & p)
|
||||
: ControlDialogBD(lv, d),
|
||||
parent_(p)
|
||||
{}
|
||||
|
||||
|
||||
void ControlMathSub::apply()
|
||||
{
|
||||
view().apply();
|
||||
}
|
||||
|
||||
|
||||
void ControlMathSub::dispatchFunc(kb_action action, string const & arg) const
|
||||
{
|
||||
parent_.dispatchFunc(action, arg);
|
||||
}
|
||||
|
||||
|
||||
void ControlMathSub::insertSymbol(string const & sym, bool bs) const
|
||||
{
|
||||
parent_.insertSymbol(sym, bs);
|
||||
}
|
||||
|
||||
|
||||
GUIMathSub::GUIMathSub(LyXView & lv, Dialogs & d,
|
||||
ControlMath const & p,
|
||||
ViewBase * v,
|
||||
ButtonControllerBase * bc)
|
||||
: controller_(lv, d, p), bc_(bc), view_(v)
|
||||
{
|
||||
controller_.setView(*view_);
|
||||
controller_.setButtonController(*bc_);
|
||||
view_->setController(controller_);
|
||||
}
|
||||
|
||||
|
||||
char const * function_names[] = {
|
||||
"arccos", "arcsin", "arctan", "arg", "bmod",
|
||||
|
@ -6,6 +6,7 @@
|
||||
*
|
||||
* \author Alejandro Aguilar Sierra
|
||||
* \author John Levon
|
||||
* \author Angus Leeming
|
||||
*
|
||||
* Full author contact details are available in file CREDITS
|
||||
*/
|
||||
@ -13,8 +14,92 @@
|
||||
#ifndef CONTROL_MATH_H
|
||||
#define CONTROL_MATH_H
|
||||
|
||||
#include "commandtags.h"
|
||||
#include "ControlDialog_impl.h"
|
||||
|
||||
#include "ButtonController.h"
|
||||
#include "ButtonPolicies.h"
|
||||
|
||||
#include "LString.h"
|
||||
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#include <map>
|
||||
|
||||
|
||||
class GUIMathSub;
|
||||
|
||||
|
||||
class ControlMath : public ControlDialogBD {
|
||||
public:
|
||||
///
|
||||
ControlMath(LyXView &, Dialogs &);
|
||||
|
||||
/// dispatch an LFUN
|
||||
void dispatchFunc(kb_action act, string const & arg = string()) const;
|
||||
/// dispatch a symbol insert
|
||||
void insertSymbol(string const & sym, bool bs = true) const;
|
||||
|
||||
///
|
||||
void addDaughter(void * key, ViewBase * v, ButtonControllerBase * bc);
|
||||
///
|
||||
void showDaughter(void *);
|
||||
|
||||
private:
|
||||
///
|
||||
virtual void apply();
|
||||
|
||||
///
|
||||
typedef boost::shared_ptr<GUIMathSub> DaughterPtr;
|
||||
///
|
||||
typedef std::map<void *, DaughterPtr> Store;
|
||||
|
||||
/** The store of all daughter dialogs.
|
||||
* The map uses the button on the main panel to identify them.
|
||||
*/
|
||||
Store daughters_;
|
||||
|
||||
/// A pointer to the currently active daughter dialog.
|
||||
GUIMathSub * active_;
|
||||
};
|
||||
|
||||
|
||||
class ControlMathSub : public ControlDialogBD {
|
||||
public:
|
||||
///
|
||||
ControlMathSub(LyXView &, Dialogs &, ControlMath const & p);
|
||||
|
||||
/// dispatch an LFUN
|
||||
void dispatchFunc(kb_action act, string const & arg = string()) const;
|
||||
/// dispatch a symbol insert
|
||||
void insertSymbol(string const & sym, bool bs = true) const;
|
||||
|
||||
private:
|
||||
///
|
||||
virtual void apply();
|
||||
///
|
||||
ControlMath const & parent_;
|
||||
};
|
||||
|
||||
|
||||
class GUIMathSub {
|
||||
public:
|
||||
///
|
||||
GUIMathSub(LyXView & lv, Dialogs & d,
|
||||
ControlMath const & p,
|
||||
ViewBase * v,
|
||||
ButtonControllerBase * bc);
|
||||
///
|
||||
ControlMathSub & controller() { return controller_; }
|
||||
|
||||
private:
|
||||
///
|
||||
ControlMathSub controller_;
|
||||
///
|
||||
boost::scoped_ptr<ButtonControllerBase> bc_;
|
||||
///
|
||||
boost::scoped_ptr<ViewBase> view_;
|
||||
};
|
||||
|
||||
|
||||
extern char const * function_names[];
|
||||
extern int const nr_function_names;
|
||||
extern char const * latex_arrow[];
|
||||
|
@ -1,3 +1,32 @@
|
||||
2002-11-25 Angus Leeming <leeming@lyx.org>
|
||||
|
||||
* Dialogs_impl.h:
|
||||
* Dialogs2.C: no need to include math sub dialog header files.
|
||||
Use standard MCV implementation of main math panel dialog.
|
||||
|
||||
* FormBaseDeprecated.[Ch]:
|
||||
* FeedbackController.[Ch]: removed.
|
||||
|
||||
* FormBase.[Ch]: Merge the contents of FeedbackController into here
|
||||
also.
|
||||
(FormCB): make the controller methods publicly accessible.
|
||||
|
||||
* forms/form_maths_deco.fd:
|
||||
* forms/form_maths_delim.fd:
|
||||
* forms/form_maths_matrix.fd:
|
||||
* forms/form_maths_panel.fd:
|
||||
* forms/form_maths_space.fd:
|
||||
* forms/form_maths_style.fd: s/Deprecated//
|
||||
|
||||
* FormMathsBitmap.[Ch]:
|
||||
* FormMathsDeco.[Ch]:
|
||||
* FormMathsDelim.[Ch]:
|
||||
* FormMathsMatrix.[Ch]:
|
||||
* FormMathsPanel.[Ch]:
|
||||
* FormMathsSpace.[Ch]:
|
||||
* FormMathsStyle.[Ch]: implement a Controller-View split of the math
|
||||
dialogs.
|
||||
|
||||
2002-11-22 Angus Leeming <leeming@lyx.org>
|
||||
|
||||
The first step towards a math dialog controller...
|
||||
|
@ -141,7 +141,7 @@ void Dialogs::showLogFile()
|
||||
|
||||
void Dialogs::showMathPanel()
|
||||
{
|
||||
pimpl_->mathpanel.show();
|
||||
pimpl_->mathpanel.controller().show();
|
||||
}
|
||||
|
||||
|
||||
|
@ -87,26 +87,10 @@
|
||||
#include "ControlShowFile.h"
|
||||
#include "FormShowFile.h"
|
||||
|
||||
#include "FormMathsBitmap.h"
|
||||
|
||||
#include "ControlMath.h"
|
||||
#include "FormMathsPanel.h"
|
||||
#include "forms/form_maths_panel.h"
|
||||
|
||||
#include "FormMathsDeco.h"
|
||||
#include "forms/form_maths_deco.h"
|
||||
|
||||
#include "FormMathsDelim.h"
|
||||
#include "forms/form_maths_delim.h"
|
||||
|
||||
#include "FormMathsMatrix.h"
|
||||
#include "forms/form_maths_matrix.h"
|
||||
|
||||
#include "FormMathsSpace.h"
|
||||
#include "forms/form_maths_space.h"
|
||||
|
||||
#include "FormMathsStyle.h"
|
||||
#include "forms/form_maths_style.h"
|
||||
|
||||
#include "ControlMinipage.h"
|
||||
#include "FormMinipage.h"
|
||||
#include "forms/form_minipage.h"
|
||||
@ -225,7 +209,8 @@ IndexDialog;
|
||||
typedef GUI<ControlLog, FormLog, OkCancelPolicy, xformsBC>
|
||||
LogFileDialog;
|
||||
|
||||
typedef FormMathsPanel MathPanelDialog;
|
||||
typedef GUI<ControlMath, FormMathsPanel, OkCancelReadOnlyPolicy, xformsBC>
|
||||
MathPanelDialog;
|
||||
|
||||
typedef GUI<ControlMinipage, FormMinipage, NoRepeatedApplyReadOnlyPolicy, xformsBC>
|
||||
MinipageDialog;
|
||||
|
@ -1,191 +0,0 @@
|
||||
/**
|
||||
* \file FeedbackController.C
|
||||
* 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
|
||||
*/
|
||||
|
||||
/* A common interface for posting feedback messages to a message widget in
|
||||
* xforms.
|
||||
* Derive FormBase and FormBaseDeprecated from it, so daughter classes of
|
||||
* either can use the same interface.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma implementation
|
||||
#endif
|
||||
|
||||
#include "FeedbackController.h"
|
||||
#include "gettext.h" // _()
|
||||
#include "xforms_helpers.h" // formatted
|
||||
#include "support/LAssert.h"
|
||||
|
||||
#include "BoostFormat.h"
|
||||
|
||||
#include FORMS_H_LOCATION
|
||||
|
||||
FeedbackController::FeedbackController()
|
||||
: warning_posted_(false), message_widget_(0)
|
||||
{}
|
||||
|
||||
|
||||
FeedbackController::~FeedbackController()
|
||||
{}
|
||||
|
||||
|
||||
void FeedbackController::setMessageWidget(FL_OBJECT * ob)
|
||||
{
|
||||
lyx::Assert(ob && ob->objclass == FL_TEXT);
|
||||
message_widget_ = ob;
|
||||
fl_set_object_lsize(message_widget_, FL_NORMAL_SIZE);
|
||||
}
|
||||
|
||||
|
||||
// preemptive handler for feedback messages
|
||||
void FeedbackController::MessageCB(FL_OBJECT * ob, int event)
|
||||
{
|
||||
lyx::Assert(ob);
|
||||
|
||||
switch (event) {
|
||||
case FL_ENTER:
|
||||
{
|
||||
string const feedback = getFeedback(ob);
|
||||
if (feedback.empty() && warning_posted_)
|
||||
break;
|
||||
|
||||
warning_posted_ = false;
|
||||
postMessage(getFeedback(ob));
|
||||
break;
|
||||
}
|
||||
|
||||
case FL_LEAVE:
|
||||
if (!warning_posted_)
|
||||
clearMessage();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#if FL_VERSION > 0 || FL_REVISION >= 89
|
||||
extern "C" {
|
||||
|
||||
void fl_show_tooltip(const char *, int, int);
|
||||
|
||||
void fl_hide_tooltip();
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
void FeedbackController::PrehandlerCB(FL_OBJECT * ob, int event, int key)
|
||||
{
|
||||
lyx::Assert(ob);
|
||||
|
||||
if (ob->objclass == FL_INPUT && event == FL_PUSH && key == 2) {
|
||||
// Trigger an input event when pasting in an xforms input object
|
||||
// using the middle mouse button.
|
||||
InputCB(ob, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (event != FL_ENTER && event != FL_LEAVE)
|
||||
return;
|
||||
|
||||
if (ob->objclass == FL_TABFOLDER) {
|
||||
// This prehandler is used to work-around an xforms bug and
|
||||
// ensures that the form->x, form->y coords of the active
|
||||
// tabfolder are up to date.
|
||||
|
||||
// The tabfolder itself can be very narrow, being just
|
||||
// the visible border to the tabs.
|
||||
// We thus use both FL_ENTER and FL_LEAVE as flags,
|
||||
// in case the FL_ENTER event is not caught.
|
||||
|
||||
FL_FORM * const folder = fl_get_active_folder(ob);
|
||||
if (folder && folder->window) {
|
||||
fl_get_winorigin(folder->window,
|
||||
&(folder->x), &(folder->y));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (message_widget_) {
|
||||
// Post feedback as the mouse enters the object,
|
||||
// remove it as the mouse leaves.
|
||||
MessageCB(ob, event);
|
||||
}
|
||||
|
||||
#if FL_VERSION > 0 || FL_REVISION >= 89
|
||||
// Tooltips are not displayed on browser widgets due to an xforms' bug.
|
||||
// This is a work-around:
|
||||
if (ob->objclass == FL_BROWSER) {
|
||||
if (event == FL_ENTER && ob->tooltip && *(ob->tooltip)) {
|
||||
fl_show_tooltip(ob->tooltip, ob->form->x + ob->x,
|
||||
ob->form->y + ob->y + ob->h + 1);
|
||||
} else if (event == FL_LEAVE) {
|
||||
fl_hide_tooltip();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void FeedbackController::postWarning(string const & warning)
|
||||
{
|
||||
warning_posted_ = true;
|
||||
postMessage(warning);
|
||||
}
|
||||
|
||||
|
||||
void FeedbackController::clearMessage()
|
||||
{
|
||||
lyx::Assert(message_widget_);
|
||||
|
||||
warning_posted_ = false;
|
||||
|
||||
string const existing = message_widget_->label
|
||||
? message_widget_->label : string();
|
||||
if (existing.empty())
|
||||
return;
|
||||
|
||||
// This trick is needed to get xforms to clear the label...
|
||||
fl_set_object_label(message_widget_, "");
|
||||
fl_hide_object(message_widget_);
|
||||
}
|
||||
|
||||
|
||||
void FeedbackController::postMessage(string const & message)
|
||||
{
|
||||
lyx::Assert(message_widget_);
|
||||
|
||||
int const width = message_widget_->w - 10;
|
||||
|
||||
#if USE_BOOST_FORMAT
|
||||
boost::format fmter = warning_posted_ ?
|
||||
boost::format(_("WARNING! %1$s")) :
|
||||
boost::format("%1$s");
|
||||
fmter % message;
|
||||
|
||||
string const str = formatted(fmter.str(), width, FL_NORMAL_SIZE);
|
||||
#else
|
||||
string const tmp = warning_posted_ ?
|
||||
_("WARNING!") + string(" ") + message :
|
||||
message;
|
||||
|
||||
string const str = formatted(tmp, width, FL_NORMAL_SIZE);
|
||||
#endif
|
||||
|
||||
fl_set_object_label(message_widget_, str.c_str());
|
||||
FL_COLOR const label_color = warning_posted_ ? FL_RED : FL_LCOL;
|
||||
fl_set_object_lcol(message_widget_, label_color);
|
||||
|
||||
if (!message_widget_->visible)
|
||||
fl_show_object(message_widget_);
|
||||
}
|
@ -1,77 +0,0 @@
|
||||
// -*- C++ -*-
|
||||
/**
|
||||
* \file FeedbackController.h
|
||||
* 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
|
||||
**/
|
||||
|
||||
/* A common interface for posting feedback messages to a message widget in
|
||||
* xforms.
|
||||
* Derive FormBase and FormBaseDeprecated from it, so daughter classes of
|
||||
* either can interface tooltips in the same way.
|
||||
*/
|
||||
|
||||
#ifndef FEEDBACKCONTROLLER_H
|
||||
#define FEEDBACKCONTROLLER_H
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma interface
|
||||
#endif
|
||||
|
||||
#include "forms_fwd.h"
|
||||
#include "LString.h"
|
||||
|
||||
class FeedbackController
|
||||
{
|
||||
public:
|
||||
///
|
||||
FeedbackController();
|
||||
///
|
||||
virtual ~FeedbackController();
|
||||
|
||||
/** Input callback function, invoked only by the xforms callback
|
||||
interface. Is defined by FormBase, FormBaseDeprecated. */
|
||||
virtual void InputCB(FL_OBJECT *, long) = 0;
|
||||
|
||||
/** Message callback function, invoked only by the xforms callback
|
||||
interface */
|
||||
void MessageCB(FL_OBJECT *, int event);
|
||||
|
||||
/** Prehandler callback function, invoked only by the xforms callback
|
||||
interface */
|
||||
void PrehandlerCB(FL_OBJECT * ob, int event, int key);
|
||||
|
||||
protected:
|
||||
/** Pass the class a pointer to the message_widget so that it can
|
||||
post the message */
|
||||
void setMessageWidget(FL_OBJECT * message_widget);
|
||||
|
||||
/** Send the warning message from the daughter class to the
|
||||
message_widget direct. The message will persist till the mouse
|
||||
movesto a new object. */
|
||||
void postWarning(string const & warning);
|
||||
/// Reset the message_widget_
|
||||
void clearMessage();
|
||||
|
||||
private:
|
||||
/** Get the feedback message for ob.
|
||||
Called if warning_posted_ == false. */
|
||||
virtual string const getFeedback(FL_OBJECT * /* ob */)
|
||||
{ return string(); }
|
||||
|
||||
/// Post the feedback message for ob to message_widget_
|
||||
void postMessage(string const & message);
|
||||
|
||||
/** Variable used to decide whether to remove the existing feedback
|
||||
message or not (if it is in fact a warning) */
|
||||
bool warning_posted_;
|
||||
|
||||
/// The widget to display the feedback
|
||||
FL_OBJECT * message_widget_;
|
||||
};
|
||||
|
||||
#endif // FEEDBACKCONTROLLER_H
|
@ -20,6 +20,10 @@
|
||||
#include "xformsBC.h"
|
||||
#include "xforms_resize.h"
|
||||
#include "Tooltips.h"
|
||||
#include "xforms_helpers.h" // formatted
|
||||
|
||||
#include "gettext.h" // _()
|
||||
#include "BoostFormat.h"
|
||||
|
||||
#include "support/LAssert.h"
|
||||
#include "support/filetools.h" // LibFileSearch
|
||||
@ -29,22 +33,28 @@
|
||||
extern "C" {
|
||||
|
||||
#if FL_VERSION > 0 || FL_REVISION >= 89
|
||||
// This should be in forms.h but isn't
|
||||
|
||||
// These should be in forms.h but aren't
|
||||
void fl_show_tooltip(const char *, int, int);
|
||||
|
||||
void fl_hide_tooltip();
|
||||
|
||||
#endif
|
||||
|
||||
// Callback function invoked by xforms when the dialog is closed by the
|
||||
// window manager
|
||||
// window manager.
|
||||
static int C_WMHideCB(FL_FORM * form, void *);
|
||||
|
||||
// Callback function invoked by the xforms pre- and post-handler routines
|
||||
// Callback function invoked by the xforms pre-handler routine.
|
||||
static int C_PrehandlerCB(FL_OBJECT *, int, FL_Coord, FL_Coord, int, void *);
|
||||
|
||||
} // extern "C"
|
||||
|
||||
|
||||
FormBase::FormBase(string const & t, bool allowResize)
|
||||
: ViewBase(), minw_(0), minh_(0), allow_resize_(allowResize),
|
||||
: ViewBase(),
|
||||
warning_posted_(false), message_widget_(0),
|
||||
minw_(0), minh_(0), allow_resize_(allowResize),
|
||||
title_(t), icon_pixmap_(0), icon_mask_(0),
|
||||
tooltips_(new Tooltips())
|
||||
{}
|
||||
@ -184,6 +194,14 @@ void FormBase::setPrehandler(FL_OBJECT * ob)
|
||||
}
|
||||
|
||||
|
||||
void FormBase::setMessageWidget(FL_OBJECT * ob)
|
||||
{
|
||||
lyx::Assert(ob && ob->objclass == FL_TEXT);
|
||||
message_widget_ = ob;
|
||||
fl_set_object_lsize(message_widget_, FL_NORMAL_SIZE);
|
||||
}
|
||||
|
||||
|
||||
void FormBase::InputCB(FL_OBJECT * ob, long data)
|
||||
{
|
||||
// It is possible to set the choice to 0 when using the
|
||||
@ -202,6 +220,141 @@ ButtonPolicy::SMInput FormBase::input(FL_OBJECT *, long)
|
||||
}
|
||||
|
||||
|
||||
// preemptive handler for feedback messages
|
||||
void FormBase::MessageCB(FL_OBJECT * ob, int event)
|
||||
{
|
||||
lyx::Assert(ob);
|
||||
|
||||
switch (event) {
|
||||
case FL_ENTER:
|
||||
{
|
||||
string const feedback = getFeedback(ob);
|
||||
if (feedback.empty() && warning_posted_)
|
||||
break;
|
||||
|
||||
warning_posted_ = false;
|
||||
postMessage(getFeedback(ob));
|
||||
break;
|
||||
}
|
||||
|
||||
case FL_LEAVE:
|
||||
if (!warning_posted_)
|
||||
clearMessage();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FormBase::PrehandlerCB(FL_OBJECT * ob, int event, int key)
|
||||
{
|
||||
lyx::Assert(ob);
|
||||
|
||||
if (ob->objclass == FL_INPUT && event == FL_PUSH && key == 2) {
|
||||
// Trigger an input event when pasting in an xforms input object
|
||||
// using the middle mouse button.
|
||||
InputCB(ob, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (event != FL_ENTER && event != FL_LEAVE)
|
||||
return;
|
||||
|
||||
if (ob->objclass == FL_TABFOLDER) {
|
||||
// This prehandler is used to work-around an xforms bug and
|
||||
// ensures that the form->x, form->y coords of the active
|
||||
// tabfolder are up to date.
|
||||
|
||||
// The tabfolder itself can be very narrow, being just
|
||||
// the visible border to the tabs.
|
||||
// We thus use both FL_ENTER and FL_LEAVE as flags,
|
||||
// in case the FL_ENTER event is not caught.
|
||||
|
||||
FL_FORM * const folder = fl_get_active_folder(ob);
|
||||
if (folder && folder->window) {
|
||||
fl_get_winorigin(folder->window,
|
||||
&(folder->x), &(folder->y));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (message_widget_) {
|
||||
// Post feedback as the mouse enters the object,
|
||||
// remove it as the mouse leaves.
|
||||
MessageCB(ob, event);
|
||||
}
|
||||
|
||||
#if FL_VERSION > 0 || FL_REVISION >= 89
|
||||
// Tooltips are not displayed on browser widgets due to an xforms' bug.
|
||||
// This is a work-around:
|
||||
if (ob->objclass == FL_BROWSER) {
|
||||
if (event == FL_ENTER && ob->tooltip && *(ob->tooltip)) {
|
||||
fl_show_tooltip(ob->tooltip, ob->form->x + ob->x,
|
||||
ob->form->y + ob->y + ob->h + 1);
|
||||
} else if (event == FL_LEAVE) {
|
||||
fl_hide_tooltip();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void FormBase::postWarning(string const & warning)
|
||||
{
|
||||
warning_posted_ = true;
|
||||
postMessage(warning);
|
||||
}
|
||||
|
||||
|
||||
void FormBase::clearMessage()
|
||||
{
|
||||
lyx::Assert(message_widget_);
|
||||
|
||||
warning_posted_ = false;
|
||||
|
||||
string const existing = message_widget_->label
|
||||
? message_widget_->label : string();
|
||||
if (existing.empty())
|
||||
return;
|
||||
|
||||
// This trick is needed to get xforms to clear the label...
|
||||
fl_set_object_label(message_widget_, "");
|
||||
fl_hide_object(message_widget_);
|
||||
}
|
||||
|
||||
|
||||
void FormBase::postMessage(string const & message)
|
||||
{
|
||||
lyx::Assert(message_widget_);
|
||||
|
||||
#if USE_BOOST_FORMAT
|
||||
boost::format fmter = warning_posted_ ?
|
||||
boost::format(_("WARNING! %1$s")) :
|
||||
boost::format("%1$s");
|
||||
|
||||
int const width = message_widget_->w - 10;
|
||||
string const str = formatted(boost::io::str(fmter % message),
|
||||
width, FL_NORMAL_SIZE);
|
||||
#else
|
||||
string const tmp = warning_posted_ ?
|
||||
_("WARNING!") + string(" ") + message :
|
||||
message;
|
||||
|
||||
string const str = formatted(tmp, width, FL_NORMAL_SIZE);
|
||||
#endif
|
||||
|
||||
fl_set_object_label(message_widget_, str.c_str());
|
||||
FL_COLOR const label_color = warning_posted_ ? FL_RED : FL_LCOL;
|
||||
fl_set_object_lcol(message_widget_, label_color);
|
||||
|
||||
if (!message_widget_->visible)
|
||||
fl_show_object(message_widget_);
|
||||
}
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
FormBase * GetForm(FL_OBJECT * ob)
|
||||
|
@ -21,7 +21,6 @@
|
||||
|
||||
#include "ViewBase.h"
|
||||
#include "ButtonPolicies.h"
|
||||
#include "FeedbackController.h"
|
||||
#include "forms_fwd.h"
|
||||
|
||||
#include "LString.h"
|
||||
@ -34,7 +33,7 @@ class Tooltips;
|
||||
|
||||
/** This class is an XForms GUI base class.
|
||||
*/
|
||||
class FormBase : public ViewBase, public FeedbackController
|
||||
class FormBase : public ViewBase
|
||||
{
|
||||
public:
|
||||
///
|
||||
@ -42,11 +41,22 @@ public:
|
||||
///
|
||||
virtual ~FormBase();
|
||||
|
||||
/** input callback function. invoked only by the xforms callback
|
||||
* interface
|
||||
/** Input callback function.
|
||||
* Invoked only by the xforms callback interface
|
||||
*/
|
||||
void InputCB(FL_OBJECT *, long);
|
||||
|
||||
/** Message callback function.
|
||||
* Invoked only by the xforms callback interface
|
||||
*/
|
||||
void MessageCB(FL_OBJECT *, int event);
|
||||
|
||||
/** Prehandler callback function.
|
||||
* Invoked only by the xforms callback interface
|
||||
*/
|
||||
void PrehandlerCB(FL_OBJECT * ob, int event, int key);
|
||||
|
||||
///
|
||||
Tooltips & tooltips();
|
||||
|
||||
protected:
|
||||
@ -65,6 +75,17 @@ protected:
|
||||
*/
|
||||
static void setPrehandler(FL_OBJECT * ob);
|
||||
|
||||
/** Pass the class a pointer to the message_widget so that it can
|
||||
post the message */
|
||||
void setMessageWidget(FL_OBJECT * message_widget);
|
||||
|
||||
/** Send the warning message from the daughter class to the
|
||||
message_widget direct. The message will persist till the mouse
|
||||
movesto a new object. */
|
||||
void postWarning(string const & warning);
|
||||
/// Reset the message_widget_
|
||||
void clearMessage();
|
||||
|
||||
///
|
||||
xformsBC & bc();
|
||||
|
||||
@ -84,6 +105,20 @@ private:
|
||||
*/
|
||||
void prepare_to_show();
|
||||
|
||||
/** Get the feedback message for ob.
|
||||
Called if warning_posted_ == false. */
|
||||
virtual string const getFeedback(FL_OBJECT * /* ob */)
|
||||
{ return string(); }
|
||||
|
||||
/// Post the feedback message for ob to message_widget_
|
||||
void postMessage(string const & message);
|
||||
|
||||
/** Variable used to decide whether to remove the existing feedback
|
||||
message or not (if it is in fact a warning) */
|
||||
bool warning_posted_;
|
||||
/// The widget to display the feedback
|
||||
FL_OBJECT * message_widget_;
|
||||
|
||||
/// The dialog's minimum allowable dimensions.
|
||||
int minw_;
|
||||
///
|
||||
@ -131,13 +166,15 @@ FL_FORM * FormDB<Dialog>::form() const
|
||||
template <class Controller, class Base>
|
||||
class FormCB: public Base
|
||||
{
|
||||
protected:
|
||||
///
|
||||
FormCB(string const &, bool allowResize = true);
|
||||
public:
|
||||
/// The parent controller
|
||||
Controller & controller();
|
||||
///
|
||||
Controller const & controller() const;
|
||||
|
||||
protected:
|
||||
///
|
||||
FormCB(string const &, bool allowResize = true);
|
||||
};
|
||||
|
||||
|
||||
|
@ -1,360 +0,0 @@
|
||||
/**
|
||||
* \file FormBaseDeprecated.C
|
||||
* 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
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma implementation
|
||||
#endif
|
||||
|
||||
#include "Dialogs.h"
|
||||
#include "FormBaseDeprecated.h"
|
||||
#include "xformsBC.h"
|
||||
#include "xforms_resize.h"
|
||||
#include "Tooltips.h"
|
||||
#include FORMS_H_LOCATION
|
||||
|
||||
#include "lyxrc.h"
|
||||
|
||||
#include "frontends/LyXView.h"
|
||||
|
||||
#include "support/LAssert.h"
|
||||
#include "support/filetools.h" // LibFileSearch
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
|
||||
extern "C" {
|
||||
|
||||
#if FL_VERSION > 0 || FL_REVISION >= 89
|
||||
// This should be in forms.h but isn't
|
||||
void fl_hide_tooltip();
|
||||
#endif
|
||||
|
||||
// Callback function invoked by xforms when the dialog is closed by the
|
||||
// window manager
|
||||
static int C_WMHideCB(FL_FORM *, void *);
|
||||
|
||||
// Callback function invoked by the xforms pre- and post-handler routines
|
||||
static int C_PrehandlerCB(FL_OBJECT *, int, FL_Coord, FL_Coord, int, void *);
|
||||
|
||||
} // extern "C"
|
||||
|
||||
|
||||
FormBaseDeprecated::FormBaseDeprecated(LyXView & lv, Dialogs & d,
|
||||
string const & t, bool allowResize)
|
||||
: lv_(lv), d_(d), title_(t), icon_pixmap_(0), icon_mask_(0),
|
||||
minw_(0), minh_(0), allow_resize_(allowResize),
|
||||
tooltips_(new Tooltips())
|
||||
{}
|
||||
|
||||
|
||||
FormBaseDeprecated::~FormBaseDeprecated()
|
||||
{
|
||||
if (icon_pixmap_)
|
||||
XFreePixmap(fl_get_display(), icon_pixmap_);
|
||||
|
||||
delete tooltips_;
|
||||
}
|
||||
|
||||
|
||||
Tooltips & FormBaseDeprecated::tooltips()
|
||||
{
|
||||
return *tooltips_;
|
||||
}
|
||||
|
||||
|
||||
void FormBaseDeprecated::redraw()
|
||||
{
|
||||
if (form() && form()->visible)
|
||||
fl_redraw_form(form());
|
||||
}
|
||||
|
||||
|
||||
void FormBaseDeprecated::connect()
|
||||
{
|
||||
fl_set_form_minsize(form(), minw_, minh_);
|
||||
r_ = d_.redrawGUI().connect(boost::bind(&FormBaseDeprecated::redraw, this));
|
||||
}
|
||||
|
||||
|
||||
void FormBaseDeprecated::disconnect()
|
||||
{
|
||||
h_.disconnect();
|
||||
r_.disconnect();
|
||||
}
|
||||
|
||||
|
||||
void FormBaseDeprecated::prepare_to_show()
|
||||
{
|
||||
build();
|
||||
|
||||
double const scale = get_scale_to_fit(form());
|
||||
if (scale > 1.001)
|
||||
scale_form_horizontally(form(), scale);
|
||||
|
||||
bc().refresh();
|
||||
|
||||
// work around dumb xforms sizing bug
|
||||
minw_ = form()->w;
|
||||
minh_ = form()->h;
|
||||
|
||||
fl_set_form_atclose(form(), C_WMHideCB, 0);
|
||||
|
||||
// set the title for the minimized form
|
||||
if (!lyxrc.dialogs_iconify_with_main)
|
||||
fl_winicontitle(form()->window, title_.c_str());
|
||||
|
||||
// assign an icon to the form
|
||||
string const iconname = LibFileSearch("images", "lyx", "xpm");
|
||||
if (!iconname.empty()) {
|
||||
unsigned int w, h;
|
||||
icon_pixmap_ = fl_read_pixmapfile(fl_root,
|
||||
iconname.c_str(),
|
||||
&w,
|
||||
&h,
|
||||
&icon_mask_,
|
||||
0, 0, 0);
|
||||
fl_set_form_icon(form(), icon_pixmap_, icon_mask_);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FormBaseDeprecated::show()
|
||||
{
|
||||
if (!form()) {
|
||||
prepare_to_show();
|
||||
}
|
||||
|
||||
// make sure the form is up to date.
|
||||
fl_freeze_form(form());
|
||||
update();
|
||||
fl_unfreeze_form(form());
|
||||
|
||||
if (form()->visible) {
|
||||
fl_raise_form(form());
|
||||
/* This XMapWindow() will hopefully ensure that
|
||||
* iconified dialogs are de-iconified. Mad props
|
||||
* out to those crazy Xlib guys for forgetting a
|
||||
* XDeiconifyWindow(). At least WindowMaker, when
|
||||
* being notified of the redirected MapRequest will
|
||||
* specifically de-iconify. From source, fvwm2 seems
|
||||
* to do the same.
|
||||
*/
|
||||
XMapWindow(fl_get_display(), form()->window);
|
||||
} else {
|
||||
connect();
|
||||
|
||||
// calls to fl_set_form_minsize/maxsize apply only to the next
|
||||
// fl_show_form(), so this comes first.
|
||||
fl_set_form_minsize(form(), minw_, minh_);
|
||||
if (!allow_resize_)
|
||||
fl_set_form_maxsize(form(), minw_, minh_);
|
||||
|
||||
string const maximize_title = "LyX: " + title_;
|
||||
int const iconify_policy =
|
||||
lyxrc.dialogs_iconify_with_main ? FL_TRANSIENT : 0;
|
||||
|
||||
fl_show_form(form(),
|
||||
FL_PLACE_MOUSE | FL_FREE_SIZE,
|
||||
iconify_policy,
|
||||
maximize_title.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FormBaseDeprecated::hide()
|
||||
{
|
||||
#if FL_VERSION > 0 || FL_REVISION >= 89
|
||||
// Does no harm if none is visible and ensures that the tooltip form
|
||||
// is hidden should the dialog be closed from the keyboard.
|
||||
fl_hide_tooltip();
|
||||
#endif
|
||||
|
||||
// xforms sometimes tries to process a hint-type MotionNotify, and
|
||||
// use XQueryPointer, without verifying if the window still exists.
|
||||
// So we try to clear out motion events in the queue before the
|
||||
// DestroyNotify
|
||||
XSync(fl_get_display(), false);
|
||||
|
||||
if (form() && form()->visible) {
|
||||
// some dialogs might do things to the form first
|
||||
// such as the nested tabfolder problem in Preferences
|
||||
disconnect();
|
||||
fl_hide_form(form());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FormBaseDeprecated::setPrehandler(FL_OBJECT * ob)
|
||||
{
|
||||
lyx::Assert(ob);
|
||||
fl_set_object_prehandler(ob, C_PrehandlerCB);
|
||||
}
|
||||
|
||||
|
||||
void FormBaseDeprecated::WMHideCB()
|
||||
{
|
||||
hide();
|
||||
bc().hide();
|
||||
}
|
||||
|
||||
|
||||
void FormBaseDeprecated::ApplyCB()
|
||||
{
|
||||
apply();
|
||||
bc().apply();
|
||||
}
|
||||
|
||||
|
||||
void FormBaseDeprecated::OKCB()
|
||||
{
|
||||
ok();
|
||||
bc().ok();
|
||||
}
|
||||
|
||||
|
||||
void FormBaseDeprecated::CancelCB()
|
||||
{
|
||||
cancel();
|
||||
bc().cancel();
|
||||
}
|
||||
|
||||
|
||||
void FormBaseDeprecated::InputCB(FL_OBJECT * ob, long data)
|
||||
{
|
||||
// It is possible to set the choice to 0 when using the
|
||||
// keyboard shortcuts. This work-around deals with the problem.
|
||||
if (ob && ob->objclass == FL_CHOICE && fl_get_choice(ob) < 1) {
|
||||
fl_set_choice(ob, 1);
|
||||
}
|
||||
|
||||
bc().valid(input(ob, data));
|
||||
}
|
||||
|
||||
|
||||
void FormBaseDeprecated::RestoreCB()
|
||||
{
|
||||
bc().restore();
|
||||
restore();
|
||||
}
|
||||
|
||||
|
||||
FormBaseBI::FormBaseBI(LyXView & lv, Dialogs & d, string const & t,
|
||||
bool allowResize)
|
||||
: FormBaseDeprecated(lv, d, t, allowResize)
|
||||
{}
|
||||
|
||||
|
||||
void FormBaseBI::connect()
|
||||
{
|
||||
h_ = d_.hideAll.connect(boost::bind(&FormBaseBI::hide, this));
|
||||
FormBaseDeprecated::connect();
|
||||
}
|
||||
|
||||
|
||||
FormBaseBD::FormBaseBD(LyXView & lv, Dialogs & d, string const & t,
|
||||
bool allowResize)
|
||||
: FormBaseDeprecated(lv, d, t, allowResize)
|
||||
{}
|
||||
|
||||
|
||||
void FormBaseBD::connect()
|
||||
{
|
||||
u_ = d_.updateBufferDependent.
|
||||
connect(boost::bind(&FormBaseBD::updateSlot, this, _1));
|
||||
h_ = d_.hideBufferDependent.
|
||||
connect(boost::bind(&FormBaseBD::hide, this));
|
||||
FormBaseDeprecated::connect();
|
||||
}
|
||||
|
||||
|
||||
void FormBaseBD::disconnect()
|
||||
{
|
||||
u_.disconnect();
|
||||
FormBaseDeprecated::disconnect();
|
||||
}
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
FormBaseDeprecated * GetForm(FL_OBJECT * ob)
|
||||
{
|
||||
lyx::Assert(ob && ob->form && ob->form->u_vdata);
|
||||
FormBaseDeprecated * ptr =
|
||||
static_cast<FormBaseDeprecated *>(ob->form->u_vdata);
|
||||
return ptr;
|
||||
}
|
||||
|
||||
} // namespace anon
|
||||
|
||||
|
||||
extern "C" {
|
||||
|
||||
void C_FormBaseDeprecatedApplyCB(FL_OBJECT * ob, long)
|
||||
{
|
||||
GetForm(ob)->ApplyCB();
|
||||
}
|
||||
|
||||
|
||||
void C_FormBaseDeprecatedOKCB(FL_OBJECT * ob, long)
|
||||
{
|
||||
GetForm(ob)->OKCB();
|
||||
}
|
||||
|
||||
|
||||
void C_FormBaseDeprecatedCancelCB(FL_OBJECT * ob, long)
|
||||
{
|
||||
GetForm(ob)->CancelCB();
|
||||
}
|
||||
|
||||
|
||||
void C_FormBaseDeprecatedInputCB(FL_OBJECT * ob, long d)
|
||||
{
|
||||
GetForm(ob)->InputCB(ob, d);
|
||||
}
|
||||
|
||||
|
||||
void C_FormBaseDeprecatedRestoreCB(FL_OBJECT * ob, long)
|
||||
{
|
||||
GetForm(ob)->RestoreCB();
|
||||
}
|
||||
|
||||
static int C_WMHideCB(FL_FORM * form, void *)
|
||||
{
|
||||
// Close the dialog cleanly, even if the WM is used to do so.
|
||||
lyx::Assert(form && form->u_vdata);
|
||||
FormBaseDeprecated * ptr =
|
||||
static_cast<FormBaseDeprecated *>(form->u_vdata);
|
||||
ptr->WMHideCB();
|
||||
return FL_CANCEL;
|
||||
}
|
||||
|
||||
static int C_PrehandlerCB(FL_OBJECT * ob, int event,
|
||||
FL_Coord, FL_Coord, int key, void *)
|
||||
{
|
||||
// Note that the return value is important in the pre-emptive handler.
|
||||
// Don't return anything other than 0.
|
||||
lyx::Assert(ob);
|
||||
|
||||
// Don't Assert this one, as it can happen quite naturally when things
|
||||
// are being deleted in the d-tor.
|
||||
//Assert(ob->form);
|
||||
if (!ob->form) return 0;
|
||||
|
||||
FormBaseDeprecated * ptr =
|
||||
static_cast<FormBaseDeprecated *>(ob->form->u_vdata);
|
||||
|
||||
if (ptr)
|
||||
ptr->PrehandlerCB(ob, event, key);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // extern "C"
|
@ -1,189 +0,0 @@
|
||||
// -*- C++ -*-
|
||||
/**
|
||||
* \file FormBaseDeprecated.h
|
||||
* 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
|
||||
*/
|
||||
|
||||
/* A base class for those remaining xforms dialogs that haven't yet undergone
|
||||
* the controller-view split.
|
||||
* It is meant to be used solely as the parent class to FormBaseBI
|
||||
* and FormBaseBD.
|
||||
*/
|
||||
|
||||
#ifndef FORMBASEDEPRECATED_H
|
||||
#define FORMBASEDEPRECATED_H
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma interface
|
||||
#endif
|
||||
|
||||
#include "xformsBC.h"
|
||||
#include "FeedbackController.h"
|
||||
#include "forms_fwd.h"
|
||||
|
||||
#include "LString.h"
|
||||
#include <boost/utility.hpp>
|
||||
#include <boost/signals/connection.hpp>
|
||||
#include <X11/Xlib.h> // for Pixmap
|
||||
|
||||
class Buffer;
|
||||
class Dialogs;
|
||||
class LyXView;
|
||||
class Tooltips;
|
||||
|
||||
class FormBaseDeprecated : boost::noncopyable, public FeedbackController
|
||||
{
|
||||
public:
|
||||
///
|
||||
FormBaseDeprecated(LyXView &, Dialogs &, string const &, bool);
|
||||
///
|
||||
virtual ~FormBaseDeprecated();
|
||||
|
||||
/// Callback functions
|
||||
void WMHideCB();
|
||||
///
|
||||
void ApplyCB();
|
||||
///
|
||||
void OKCB();
|
||||
///
|
||||
void CancelCB();
|
||||
///
|
||||
void InputCB(FL_OBJECT *, long);
|
||||
///
|
||||
void RestoreCB();
|
||||
|
||||
Tooltips & tooltips();
|
||||
|
||||
/// Create the dialog if necessary, update it and display it.
|
||||
virtual void show();
|
||||
/// Hide the dialog.
|
||||
virtual void hide();
|
||||
|
||||
protected: // methods
|
||||
|
||||
/// Pointer to the actual instantiation of the ButtonController.
|
||||
virtual xformsBC & bc() = 0;
|
||||
|
||||
/** Redraw the form (on receipt of a Signal indicating, for example,
|
||||
* that the xform colors have been re-mapped).
|
||||
* Must be virtual because dialogs with tabbed folders will need to
|
||||
* redraw the form for each tab.
|
||||
*/
|
||||
virtual void redraw();
|
||||
|
||||
/// Update the dialog.
|
||||
virtual void update() {}
|
||||
/// Connect signals. Also perform any necessary initialisation.
|
||||
virtual void connect();
|
||||
/// Disconnect signals. Also perform any necessary housekeeping.
|
||||
virtual void disconnect();
|
||||
/// Build the dialog
|
||||
virtual void build() = 0;
|
||||
/** Filter the inputs on callback from xforms
|
||||
* Return true if inputs are valid.
|
||||
*/
|
||||
virtual bool input(FL_OBJECT *, long) {
|
||||
return true;
|
||||
}
|
||||
/// Apply from dialog (modify or create inset)
|
||||
virtual void apply() {}
|
||||
/// OK from dialog
|
||||
virtual void ok() {
|
||||
apply();
|
||||
hide();
|
||||
}
|
||||
/// Cancel from dialog
|
||||
virtual void cancel() {
|
||||
hide();
|
||||
}
|
||||
/// Restore from dialog
|
||||
virtual void restore() {
|
||||
update();
|
||||
}
|
||||
/// Pointer to the actual instantiation of xform's form
|
||||
virtual FL_FORM * form() const = 0;
|
||||
|
||||
/** Prepare the way to:
|
||||
* 1. display feedback as the mouse moves over ob. This feedback will
|
||||
* typically be rather more verbose than just a tooltip.
|
||||
* 2. activate the button controller after a paste with the middle
|
||||
* mouse button.
|
||||
*/
|
||||
static void setPrehandler(FL_OBJECT * ob);
|
||||
|
||||
/** Which LyXFunc do we use?
|
||||
* We could modify Dialogs to have a visible LyXFunc* instead and
|
||||
* save a couple of bytes per dialog.
|
||||
*/
|
||||
LyXView & lv_;
|
||||
/// Used so we can get at the signals we have to connect to.
|
||||
Dialogs & d_;
|
||||
/// Hide connection.
|
||||
boost::signals::connection h_;
|
||||
/// Redraw connection.
|
||||
boost::signals::connection r_;
|
||||
/// dialog title, displayed by WM.
|
||||
string title_;
|
||||
|
||||
private:
|
||||
/** Called on the first show() request, initialising various bits and
|
||||
* pieces.
|
||||
*/
|
||||
void prepare_to_show();
|
||||
|
||||
/// Passed to the window manager to give a pretty little symbol ;-)
|
||||
Pixmap icon_pixmap_;
|
||||
///
|
||||
Pixmap icon_mask_;
|
||||
/// The dialog's minimum allowable dimensions.
|
||||
int minw_;
|
||||
///
|
||||
int minh_;
|
||||
/// Can the dialog be resized after it has been created?
|
||||
bool allow_resize_;
|
||||
///
|
||||
Tooltips * tooltips_;
|
||||
};
|
||||
|
||||
|
||||
/** This class is an XForms GUI base class for Buffer Independent dialogs.
|
||||
* Such dialogs do not require an update Connection although they may use
|
||||
* an update() function which is also supported by restore().
|
||||
*/
|
||||
class FormBaseBI : public FormBaseDeprecated {
|
||||
protected:
|
||||
/// Constructor
|
||||
FormBaseBI(LyXView &, Dialogs &, string const &,
|
||||
bool allowResize = true);
|
||||
|
||||
/// Connect signals
|
||||
virtual void connect();
|
||||
};
|
||||
|
||||
|
||||
/** This class is an XForms GUI base class for Buffer Dependent dialogs
|
||||
*/
|
||||
class FormBaseBD : public FormBaseDeprecated {
|
||||
protected:
|
||||
/// Constructor
|
||||
FormBaseBD(LyXView &, Dialogs &, string const &,
|
||||
bool allowResize = true);
|
||||
|
||||
/// Connect signals
|
||||
virtual void connect();
|
||||
/// Disconnect signals
|
||||
virtual void disconnect();
|
||||
/// bool indicates if a buffer switch took place
|
||||
virtual void updateSlot(bool) { update(); }
|
||||
|
||||
/// Update connection.
|
||||
boost::signals::connection u_;
|
||||
};
|
||||
|
||||
|
||||
#endif // FORMBASEDEPRECATED_H
|
@ -17,8 +17,10 @@
|
||||
#endif
|
||||
|
||||
#include "FormMathsBitmap.h"
|
||||
#include "ControlMath.h"
|
||||
#include "xformsBC.h"
|
||||
|
||||
#include "bmtable.h"
|
||||
#include "debug.h"
|
||||
#include "forms_gettext.h"
|
||||
#include "gettext.h"
|
||||
#include "support/LAssert.h"
|
||||
@ -26,20 +28,26 @@
|
||||
#include XPM_H_LOCATION
|
||||
|
||||
#include <algorithm>
|
||||
#include <iomanip>
|
||||
|
||||
extern "C" void C_FormBaseCancelCB(FL_OBJECT *, long);
|
||||
extern "C" void C_FormBaseInputCB(FL_OBJECT *, long);
|
||||
|
||||
using std::vector;
|
||||
using std::endl;
|
||||
using std::setw;
|
||||
using std::max;
|
||||
|
||||
extern "C" void C_FormBaseDeprecatedCancelCB(FL_OBJECT *, long);
|
||||
extern "C" void C_FormBaseDeprecatedInputCB(FL_OBJECT *, long);
|
||||
|
||||
FormMathsBitmap::FormMathsBitmap(LyXView & lv, Dialogs & d,
|
||||
FormMathsPanel const & p, string const & t,
|
||||
vector<string> const & l)
|
||||
: FormMathsSub(lv, d, p, t, false),
|
||||
FD_maths_bitmap::~FD_maths_bitmap()
|
||||
{
|
||||
if (form->visible) fl_hide_form(form);
|
||||
fl_free_form(form);
|
||||
}
|
||||
|
||||
|
||||
typedef FormCB<ControlMathSub, FormDB<FD_maths_bitmap> > base_class;
|
||||
|
||||
|
||||
FormMathsBitmap::FormMathsBitmap(string const & t, vector<string> const & l)
|
||||
: base_class(t, false),
|
||||
latex_(l), ww_(0), x_(0), y_(0), w_(0), h_(0)
|
||||
{
|
||||
ww_ = 2 * FL_abs(FL_BOUND_WIDTH);
|
||||
@ -48,62 +56,74 @@ FormMathsBitmap::FormMathsBitmap(LyXView & lv, Dialogs & d,
|
||||
}
|
||||
|
||||
|
||||
FormMathsBitmap::~FormMathsBitmap()
|
||||
void FormMathsBitmap::addBitmap(int nt, int nx, int ny, int bw, int bh,
|
||||
unsigned char const * data, bool vert)
|
||||
{
|
||||
if (!form())
|
||||
return;
|
||||
bitmaps_.push_back(BitmapStore(nt, nx, ny, bw, bh, data, vert));
|
||||
|
||||
if (form()->visible) fl_hide_form(form());
|
||||
fl_free_form(form());
|
||||
int wx = bw + ww_ / 2;
|
||||
int wy = bh + ww_ / 2;
|
||||
wx += (wx % nx);
|
||||
wy += (wy % ny);
|
||||
|
||||
if (vert) {
|
||||
y_ += wy + 8;
|
||||
h_ = max(y_, h_);
|
||||
w_ = max(x_ + wx + ww_, w_);
|
||||
} else {
|
||||
x_ += wx + 8;
|
||||
w_ = max(x_, w_);
|
||||
h_ = max(y_ + wy + ww_, h_);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
FL_FORM * FormMathsBitmap::form() const
|
||||
{
|
||||
return form_.get();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void FormMathsBitmap::build()
|
||||
{
|
||||
lyx::Assert(bitmaps_.size() > 0);
|
||||
|
||||
h_+= 50; // Allow room for a Close button
|
||||
h_+= 42; // Allow room for a Close button
|
||||
|
||||
form_.reset(fl_bgn_form(FL_UP_BOX, w_, h_), fl_free_form);
|
||||
form_->u_vdata = this;
|
||||
FD_maths_bitmap * fdui = new FD_maths_bitmap;
|
||||
|
||||
fdui->form = fl_bgn_form(FL_UP_BOX, w_, h_);
|
||||
fdui->form->u_vdata = this;
|
||||
|
||||
fl_add_box(FL_UP_BOX, 0, 0, w_, h_, "");
|
||||
|
||||
x_ = 0;
|
||||
y_ = 0;
|
||||
for (vector<bm_ptr>::const_iterator it = bitmaps_.begin();
|
||||
int y_close = 0;
|
||||
for (vector<BitmapStore>::const_iterator it = bitmaps_.begin();
|
||||
it < bitmaps_.end(); ++it) {
|
||||
FL_OBJECT * obj = it->get();
|
||||
FL_OBJECT * obj = buildBitmap(*it);
|
||||
|
||||
fl_add_object(form_.get(), obj);
|
||||
bc().addReadOnly(obj);
|
||||
|
||||
y_ = max(y_, obj->y + obj->h);
|
||||
y_close = max(y_close, obj->y + obj->h);
|
||||
}
|
||||
bitmaps_.clear();
|
||||
|
||||
char const * const label = _("Close|^[");
|
||||
x_ = (form_->w - 90) / 2;
|
||||
y_ += 10;
|
||||
x_ = (fdui->form->w - 90) / 2;
|
||||
y_ = y_close + 10;
|
||||
|
||||
FL_OBJECT * button_close =
|
||||
fl_add_button(FL_NORMAL_BUTTON, x_, y_, 90, 30, idex(_(label)));
|
||||
fl_set_button_shortcut(button_close, scex(_(label)), 1);
|
||||
fl_set_object_lsize(button_close, FL_NORMAL_SIZE);
|
||||
fl_set_object_callback(button_close, C_FormBaseDeprecatedCancelCB, 0);
|
||||
fl_set_object_callback(button_close, C_FormBaseCancelCB, 0);
|
||||
|
||||
fl_end_form();
|
||||
|
||||
bc().setCancel(button_close);
|
||||
fdui->form->fdui = fdui;
|
||||
|
||||
dialog_.reset(fdui);
|
||||
bc().setCancel(dialog_->button_close);
|
||||
}
|
||||
|
||||
|
||||
void FormMathsBitmap::addBitmap(int nt, int nx, int ny, int bw, int bh,
|
||||
unsigned char const * data, bool vert)
|
||||
|
||||
FL_OBJECT * FormMathsBitmap::buildBitmap(BitmapStore const & bmstore)
|
||||
{
|
||||
// Add a bitmap to a button panel: one bitmap per panel.
|
||||
// nt is the number of buttons and nx, ny the nr. of buttons
|
||||
@ -116,41 +136,43 @@ void FormMathsBitmap::addBitmap(int nt, int nx, int ny, int bw, int bh,
|
||||
//
|
||||
// The scaling of the bitmap on top of the buttons will be
|
||||
// correct if the nx, ny values are given correctly.
|
||||
int wx = bw + ww_ / 2;
|
||||
int wy = bh + ww_ / 2;
|
||||
wx += (wx % nx);
|
||||
wy += (wy % ny);
|
||||
FL_OBJECT * obj = fl_create_bmtable(1, x_, y_, wx, wy, "");
|
||||
int wx = bmstore.bw + ww_ / 2;
|
||||
int wy = bmstore.bh + ww_ / 2;
|
||||
wx += (wx % bmstore.nx);
|
||||
wy += (wy % bmstore.ny);
|
||||
|
||||
FL_OBJECT * obj = fl_add_bmtable(1, x_, y_, wx, wy, "");
|
||||
fl_set_object_lcol(obj, FL_BLUE);
|
||||
fl_set_object_boxtype(obj, FL_UP_BOX);
|
||||
fl_set_bmtable_data(obj, nx, ny, bw, bh, data);
|
||||
fl_set_bmtable_maxitems(obj, nt);
|
||||
fl_set_object_callback(obj, C_FormBaseDeprecatedInputCB, 0);
|
||||
fl_set_bmtable_data(obj, bmstore.nx, bmstore.ny, bmstore.bw, bmstore.bh,
|
||||
bmstore.data);
|
||||
fl_set_bmtable_maxitems(obj, bmstore.nt);
|
||||
fl_set_object_callback(obj, C_FormBaseInputCB, 0);
|
||||
|
||||
if (vert) {
|
||||
if (bmstore.vert) {
|
||||
y_ += wy + 8;
|
||||
h_ = max(y_, h_);
|
||||
w_ = max(x_ + wx + ww_, w_);
|
||||
} else {
|
||||
x_ += wx + 8;
|
||||
w_ = max(x_, w_);
|
||||
h_ = max(y_ + wy + ww_, h_);
|
||||
}
|
||||
|
||||
bitmaps_.push_back(bm_ptr(obj, fl_free_object));
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
||||
int FormMathsBitmap::GetIndex(FL_OBJECT * ob)
|
||||
int FormMathsBitmap::GetIndex(FL_OBJECT * ob_in)
|
||||
{
|
||||
int k = 0;
|
||||
for (vector<bm_ptr>::const_iterator it = bitmaps_.begin();
|
||||
it < bitmaps_.end(); ++it) {
|
||||
if (it->get() == ob)
|
||||
|
||||
for (FL_OBJECT * ob = form()->first; ob; ob = ob->next) {
|
||||
if (ob->objclass != FL_BMTABLE)
|
||||
continue;
|
||||
|
||||
if (ob == ob_in)
|
||||
return k + fl_get_bmtable(ob);
|
||||
else
|
||||
k += fl_get_bmtable_maxitems(it->get());
|
||||
k += fl_get_bmtable_maxitems(ob);
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -159,22 +181,22 @@ void FormMathsBitmap::apply()
|
||||
{
|
||||
string::size_type const i = latex_chosen_.find(' ');
|
||||
if (i != string::npos) {
|
||||
parent_.dispatchFunc(LFUN_MATH_MODE);
|
||||
parent_.insertSymbol(latex_chosen_.substr(0,i));
|
||||
parent_.insertSymbol(latex_chosen_.substr(i + 1), false);
|
||||
controller().dispatchFunc(LFUN_MATH_MODE);
|
||||
controller().insertSymbol(latex_chosen_.substr(0,i));
|
||||
controller().insertSymbol(latex_chosen_.substr(i + 1), false);
|
||||
} else
|
||||
parent_.insertSymbol(latex_chosen_);
|
||||
controller().insertSymbol(latex_chosen_);
|
||||
}
|
||||
|
||||
|
||||
bool FormMathsBitmap::input(FL_OBJECT * ob, long)
|
||||
ButtonPolicy::SMInput FormMathsBitmap::input(FL_OBJECT * ob, long)
|
||||
{
|
||||
int const i = GetIndex(ob);
|
||||
|
||||
if (i < 0)
|
||||
return false;
|
||||
return ButtonPolicy::SMI_INVALID;
|
||||
|
||||
latex_chosen_ = latex_[i];
|
||||
apply();
|
||||
return true;
|
||||
return ButtonPolicy::SMI_VALID;
|
||||
}
|
||||
|
@ -14,35 +14,51 @@
|
||||
#ifndef FORM_MATHSBITMAP_H
|
||||
#define FORM_MATHSBITMAP_H
|
||||
|
||||
#include "LString.h"
|
||||
#include "FormMathsPanel.h"
|
||||
|
||||
#include <boost/shared_ptr.hpp>
|
||||
|
||||
#include <vector>
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma interface
|
||||
#endif
|
||||
|
||||
#include "FormBase.h"
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#include <vector>
|
||||
|
||||
struct BitmapStore
|
||||
{
|
||||
BitmapStore(int nt_in, int nx_in, int ny_in, int bw_in, int bh_in,
|
||||
unsigned char const * data_in, bool vert_in)
|
||||
: nt(nt_in), nx(nx_in), ny(ny_in), bw(bw_in), bh(bh_in),
|
||||
data(data_in), vert(vert_in)
|
||||
{}
|
||||
|
||||
int nt;
|
||||
int nx;
|
||||
int ny;
|
||||
int bw;
|
||||
int bh;
|
||||
unsigned char const * data;
|
||||
bool vert;
|
||||
};
|
||||
|
||||
|
||||
struct FD_maths_bitmap
|
||||
{
|
||||
~FD_maths_bitmap();
|
||||
FL_FORM * form;
|
||||
FL_OBJECT * button_close;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* This class provides an XForms implementation of a maths bitmap form.
|
||||
*/
|
||||
class FormMathsBitmap : public FormMathsSub {
|
||||
///
|
||||
friend class FormMathsPanel;
|
||||
|
||||
class ControlMathSub;
|
||||
|
||||
class FormMathsBitmap : public FormCB<ControlMathSub, FormDB<FD_maths_bitmap> >
|
||||
{
|
||||
public:
|
||||
///
|
||||
typedef boost::shared_ptr<FL_OBJECT> bm_ptr;
|
||||
///
|
||||
typedef boost::shared_ptr<FL_FORM> fl_ptr;
|
||||
|
||||
///
|
||||
FormMathsBitmap(LyXView &, Dialogs & d, FormMathsPanel const &,
|
||||
string const &, std::vector<string> const &);
|
||||
///
|
||||
~FormMathsBitmap();
|
||||
FormMathsBitmap(string const &, std::vector<string> const &);
|
||||
///
|
||||
void addBitmap(int, int, int, int, int, unsigned char const *,
|
||||
bool = true);
|
||||
@ -51,24 +67,27 @@ private:
|
||||
///
|
||||
int GetIndex(FL_OBJECT *);
|
||||
|
||||
/// Build the dialog
|
||||
virtual void build();
|
||||
/// apply the data
|
||||
///
|
||||
virtual void apply();
|
||||
/// input handler
|
||||
bool input(FL_OBJECT *, long);
|
||||
///
|
||||
virtual void build();
|
||||
///
|
||||
virtual ButtonPolicy::SMInput input(FL_OBJECT *, long);
|
||||
/// Not needed.
|
||||
virtual void update() {}
|
||||
|
||||
/// Pointer to the actual instantiation of the xforms form
|
||||
virtual FL_FORM * form() const;
|
||||
///
|
||||
FL_OBJECT * buildBitmap(BitmapStore const & bmstore);
|
||||
|
||||
/// The latex names associated with each symbol
|
||||
std::vector<string> latex_;
|
||||
/// The latex name chosen
|
||||
string latex_chosen_;
|
||||
/// Real GUI implementation
|
||||
fl_ptr form_;
|
||||
/// The bitmap tables
|
||||
std::vector<bm_ptr> bitmaps_;
|
||||
|
||||
/** Temporary store for bitmap data passed to addBitmap()
|
||||
* but before the FL_OBJECT is created in build().
|
||||
*/
|
||||
std::vector<BitmapStore> bitmaps_;
|
||||
|
||||
/// Border width
|
||||
int ww_;
|
||||
|
@ -20,26 +20,21 @@
|
||||
#include "ControlMath.h"
|
||||
#include "FormMathsDeco.h"
|
||||
#include "forms/form_maths_deco.h"
|
||||
#include "xformsBC.h"
|
||||
|
||||
#include "bmtable.h"
|
||||
#include FORMS_H_LOCATION
|
||||
|
||||
#include "deco.xbm"
|
||||
|
||||
|
||||
FormMathsDeco::FormMathsDeco(LyXView & lv, Dialogs & d,
|
||||
FormMathsPanel const & p)
|
||||
: FormMathsSub(lv, d, p, _("Maths Decorations & Accents"), false)
|
||||
typedef FormCB<ControlMathSub, FormDB<FD_maths_deco> > base_class;
|
||||
|
||||
FormMathsDeco::FormMathsDeco()
|
||||
: base_class(_("Maths Decorations & Accents"), false)
|
||||
{}
|
||||
|
||||
|
||||
FL_FORM * FormMathsDeco::form() const
|
||||
{
|
||||
if (dialog_.get())
|
||||
return dialog_->form;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void FormMathsDeco::build()
|
||||
{
|
||||
dialog_.reset(build_maths_deco(this));
|
||||
@ -61,19 +56,19 @@ void FormMathsDeco::build()
|
||||
void FormMathsDeco::apply()
|
||||
{
|
||||
if (deco_ < nr_latex_deco)
|
||||
parent_.insertSymbol(latex_deco[deco_]);
|
||||
controller().insertSymbol(latex_deco[deco_]);
|
||||
}
|
||||
|
||||
|
||||
bool FormMathsDeco::input(FL_OBJECT * ob, long)
|
||||
ButtonPolicy::SMInput FormMathsDeco::input(FL_OBJECT * ob, long)
|
||||
{
|
||||
deco_ = fl_get_bmtable(ob);
|
||||
if (deco_ < 0)
|
||||
return false;
|
||||
return ButtonPolicy::SMI_INVALID;
|
||||
//if (ob == dialog_->bmtable_deco1)
|
||||
// deco_ += 0;
|
||||
if (ob == dialog_->bmtable_deco2)
|
||||
deco_ += 12;
|
||||
apply();
|
||||
return true;
|
||||
return ButtonPolicy::SMI_VALID;
|
||||
}
|
||||
|
@ -18,37 +18,31 @@
|
||||
#pragma interface
|
||||
#endif
|
||||
|
||||
#include "FormMathsPanel.h"
|
||||
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
#include "FormBase.h"
|
||||
|
||||
class ControlMathSub;
|
||||
struct FD_maths_deco;
|
||||
|
||||
/**
|
||||
* This class provides an XForms implementation of the maths deco.
|
||||
*/
|
||||
class FormMathsDeco : public FormMathsSub {
|
||||
class FormMathsDeco : public FormCB<ControlMathSub, FormDB<FD_maths_deco> > {
|
||||
public:
|
||||
///
|
||||
FormMathsDeco(LyXView &, Dialogs &, FormMathsPanel const &);
|
||||
FormMathsDeco();
|
||||
|
||||
private:
|
||||
/// Build the dialog
|
||||
virtual void build();
|
||||
/// Apply from dialog (modify or create inset)
|
||||
///
|
||||
virtual void apply();
|
||||
/// Input selection:
|
||||
virtual bool input(FL_OBJECT *, long);
|
||||
|
||||
/// Pointer to the actual instantiation of the xforms form
|
||||
virtual FL_FORM * form() const;
|
||||
|
||||
// Real GUI implementation
|
||||
boost::scoped_ptr<FD_maths_deco> dialog_;
|
||||
///
|
||||
virtual void build();
|
||||
///
|
||||
virtual ButtonPolicy::SMInput input(FL_OBJECT *, long);
|
||||
/// Not needed.
|
||||
virtual void update() {}
|
||||
|
||||
/// Current choice
|
||||
int deco_;
|
||||
|
||||
};
|
||||
|
||||
#endif // FORM_MATHSDECO_H
|
||||
|
@ -19,15 +19,11 @@
|
||||
|
||||
#include "FormMathsDelim.h"
|
||||
#include "forms/form_maths_delim.h"
|
||||
#include "ControlMath.h"
|
||||
#include "xformsBC.h"
|
||||
|
||||
#include "bmtable.h"
|
||||
|
||||
#include "debug.h"
|
||||
#include "funcrequest.h"
|
||||
#include "lyxfunc.h"
|
||||
|
||||
#include "frontends/LyXView.h"
|
||||
|
||||
#include "support/lstrings.h"
|
||||
|
||||
#include "Lsstream.h"
|
||||
@ -54,20 +50,14 @@ static char const * delim_values[] = {
|
||||
|
||||
using std::endl;
|
||||
|
||||
FormMathsDelim::FormMathsDelim(LyXView & lv, Dialogs & d,
|
||||
FormMathsPanel const & p)
|
||||
: FormMathsSub(lv, d, p, _("Maths Delimiters"), false)
|
||||
|
||||
typedef FormCB<ControlMathSub, FormDB<FD_maths_delim> > base_class;
|
||||
|
||||
FormMathsDelim::FormMathsDelim()
|
||||
: base_class(_("Maths Delimiters"), false)
|
||||
{}
|
||||
|
||||
|
||||
FL_FORM * FormMathsDelim::form() const
|
||||
{
|
||||
if (dialog_.get())
|
||||
return dialog_->form;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void FormMathsDelim::build()
|
||||
{
|
||||
dialog_.reset(build_maths_delim(this));
|
||||
@ -102,11 +92,17 @@ void FormMathsDelim::apply()
|
||||
|
||||
ostringstream os;
|
||||
os << delim_values[left] << ' ' << delim_values[right];
|
||||
parent_.dispatchFunc(LFUN_MATH_DELIM, STRCONV(os.str()));
|
||||
controller().dispatchFunc(LFUN_MATH_DELIM, STRCONV(os.str()));
|
||||
}
|
||||
|
||||
|
||||
bool FormMathsDelim::input(FL_OBJECT *, long)
|
||||
void FormMathsDelim::update()
|
||||
{
|
||||
bc().valid();
|
||||
}
|
||||
|
||||
|
||||
ButtonPolicy::SMInput FormMathsDelim::input(FL_OBJECT *, long)
|
||||
{
|
||||
int left = int(dialog_->radio_left->u_ldata);
|
||||
int right= int(dialog_->radio_right->u_ldata);
|
||||
@ -149,5 +145,5 @@ bool FormMathsDelim::input(FL_OBJECT *, long)
|
||||
dialog_->radio_left->u_ldata = left;
|
||||
dialog_->radio_right->u_ldata = right;
|
||||
|
||||
return true;
|
||||
return ButtonPolicy::SMI_VALID;
|
||||
}
|
||||
|
@ -18,33 +18,28 @@
|
||||
#pragma interface
|
||||
#endif
|
||||
|
||||
#include "FormMathsPanel.h"
|
||||
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
#include "FormBase.h"
|
||||
|
||||
class ControlMathSub;
|
||||
struct FD_maths_delim;
|
||||
|
||||
/**
|
||||
* This class provides an XForms implementation of the maths delim.
|
||||
*/
|
||||
class FormMathsDelim : public FormMathsSub {
|
||||
class FormMathsDelim : public FormCB<ControlMathSub, FormDB<FD_maths_delim> > {
|
||||
public:
|
||||
///
|
||||
FormMathsDelim(LyXView &, Dialogs &, FormMathsPanel const &);
|
||||
FormMathsDelim();
|
||||
|
||||
private:
|
||||
/// Build the dialog
|
||||
virtual void build();
|
||||
/// input handler
|
||||
virtual bool input(FL_OBJECT *, long);
|
||||
/// Apply from dialog (modify or create inset)
|
||||
///
|
||||
virtual void apply();
|
||||
|
||||
/// Pointer to the actual instantiation of the xforms form
|
||||
virtual FL_FORM * form() const;
|
||||
|
||||
// Real GUI implementation
|
||||
boost::scoped_ptr<FD_maths_delim> dialog_;
|
||||
///
|
||||
virtual void build();
|
||||
///
|
||||
virtual ButtonPolicy::SMInput input(FL_OBJECT *, long);
|
||||
///
|
||||
virtual void update();
|
||||
};
|
||||
|
||||
#endif // FORM_MATHSDELIM_H
|
||||
|
@ -19,11 +19,8 @@
|
||||
|
||||
#include "FormMathsMatrix.h"
|
||||
#include "forms/form_maths_matrix.h"
|
||||
|
||||
#include "funcrequest.h"
|
||||
#include "lyxfunc.h"
|
||||
|
||||
#include "frontends/LyXView.h"
|
||||
#include "ControlMath.h"
|
||||
#include "xformsBC.h"
|
||||
|
||||
#include "support/LAssert.h"
|
||||
#include "support/lyxalgo.h" // lyx::count
|
||||
@ -59,20 +56,13 @@ extern "C" {
|
||||
}
|
||||
|
||||
|
||||
FormMathsMatrix::FormMathsMatrix(LyXView & lv, Dialogs & d,
|
||||
FormMathsPanel const & p)
|
||||
: FormMathsSub(lv, d, p, _("Maths Matrix"), false)
|
||||
typedef FormCB<ControlMathSub, FormDB<FD_maths_matrix> > base_class;
|
||||
|
||||
FormMathsMatrix::FormMathsMatrix()
|
||||
: base_class(_("Maths Matrix"), false)
|
||||
{}
|
||||
|
||||
|
||||
FL_FORM * FormMathsMatrix::form() const
|
||||
{
|
||||
if (dialog_.get())
|
||||
return dialog_->form;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void FormMathsMatrix::build()
|
||||
{
|
||||
dialog_.reset(build_maths_matrix(this));
|
||||
@ -105,15 +95,20 @@ void FormMathsMatrix::apply()
|
||||
|
||||
ostringstream os;
|
||||
os << nx << ' ' << ny << ' ' << c << ' ' << sh;
|
||||
parent_.dispatchFunc(LFUN_INSERT_MATRIX, STRCONV(os.str()));
|
||||
controller().dispatchFunc(LFUN_INSERT_MATRIX, STRCONV(os.str()));
|
||||
}
|
||||
|
||||
|
||||
void FormMathsMatrix::update()
|
||||
{
|
||||
bc().valid();
|
||||
}
|
||||
|
||||
bool FormMathsMatrix::input(FL_OBJECT * ob, long)
|
||||
|
||||
ButtonPolicy::SMInput FormMathsMatrix::input(FL_OBJECT * ob, long)
|
||||
{
|
||||
if (ob == dialog_->choice_valign ||
|
||||
ob == dialog_->slider_rows) return true;
|
||||
ob == dialog_->slider_rows) return ButtonPolicy::SMI_VALID;
|
||||
|
||||
int const nx = int(fl_get_slider_value(dialog_->slider_columns)+0.5);
|
||||
for (int i = 0; i < nx; ++i)
|
||||
@ -123,7 +118,7 @@ bool FormMathsMatrix::input(FL_OBJECT * ob, long)
|
||||
|
||||
fl_set_input(dialog_->input_halign, h_align_str);
|
||||
fl_redraw_object(dialog_->input_halign);
|
||||
return true;
|
||||
return ButtonPolicy::SMI_VALID;
|
||||
}
|
||||
|
||||
|
||||
|
@ -18,34 +18,31 @@
|
||||
#pragma interface
|
||||
#endif
|
||||
|
||||
#include "FormMathsPanel.h"
|
||||
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
#include "FormBase.h"
|
||||
|
||||
class ControlMathSub;
|
||||
struct FD_maths_matrix;
|
||||
|
||||
/**
|
||||
* This class provides an XForms implementation of the maths matrix.
|
||||
*/
|
||||
class FormMathsMatrix : public FormMathsSub {
|
||||
class FormMathsMatrix : public FormCB<ControlMathSub, FormDB<FD_maths_matrix> >
|
||||
{
|
||||
public:
|
||||
FormMathsMatrix(LyXView &, Dialogs &, FormMathsPanel const &);
|
||||
///
|
||||
FormMathsMatrix();
|
||||
///
|
||||
int AlignFilter(char const *, int);
|
||||
|
||||
private:
|
||||
/// Build the dialog
|
||||
virtual void build();
|
||||
/// input handler
|
||||
virtual bool input(FL_OBJECT *, long);
|
||||
/// Apply from dialog (modify or create inset)
|
||||
///
|
||||
virtual void apply();
|
||||
|
||||
/// Pointer to the actual instantiation of the xforms form
|
||||
virtual FL_FORM * form() const;
|
||||
|
||||
// Real GUI implementation
|
||||
boost::scoped_ptr<FD_maths_matrix> dialog_;
|
||||
///
|
||||
virtual void build();
|
||||
///
|
||||
virtual ButtonPolicy::SMInput input(FL_OBJECT *, long);
|
||||
///
|
||||
virtual void update();
|
||||
};
|
||||
|
||||
#endif // FORM_MATHSMATRIX_H
|
||||
|
@ -18,17 +18,9 @@
|
||||
#endif
|
||||
|
||||
#include "ControlMath.h"
|
||||
|
||||
#include "frontends/LyXView.h"
|
||||
#include "FormMathsPanel.h"
|
||||
#include "forms/form_maths_panel.h"
|
||||
#include "funcrequest.h"
|
||||
|
||||
#include "forms/form_maths_deco.h"
|
||||
#include "forms/form_maths_delim.h"
|
||||
#include "forms/form_maths_matrix.h"
|
||||
#include "forms/form_maths_space.h"
|
||||
#include "forms/form_maths_style.h"
|
||||
#include "xformsBC.h"
|
||||
|
||||
#include "FormMathsBitmap.h"
|
||||
#include "FormMathsDeco.h"
|
||||
@ -37,8 +29,13 @@
|
||||
#include "FormMathsSpace.h"
|
||||
#include "FormMathsStyle.h"
|
||||
|
||||
#include "forms/form_maths_deco.h"
|
||||
#include "forms/form_maths_delim.h"
|
||||
#include "forms/form_maths_matrix.h"
|
||||
#include "forms/form_maths_space.h"
|
||||
#include "forms/form_maths_style.h"
|
||||
|
||||
#include FORMS_H_LOCATION
|
||||
#include <boost/bind.hpp>
|
||||
|
||||
#include "deco.xpm"
|
||||
#include "delim.xpm"
|
||||
@ -66,29 +63,27 @@
|
||||
#include "ams_ops.xbm"
|
||||
|
||||
|
||||
FormMathsPanel::FormMathsPanel(LyXView & lv, Dialogs & d)
|
||||
: FormBaseBD(lv, d, _("Maths Panel")),
|
||||
active_(0), bc_(_("Close"))
|
||||
typedef FormCB<ControlMath, FormDB<FD_maths_panel> > base_class;
|
||||
|
||||
FormMathsPanel::FormMathsPanel()
|
||||
: base_class(_("Maths Panel"))
|
||||
{}
|
||||
|
||||
|
||||
FL_FORM * FormMathsPanel::form() const
|
||||
{
|
||||
return dialog_.get() ? dialog_->form : 0;
|
||||
}
|
||||
|
||||
|
||||
FormMathsBitmap * FormMathsPanel::addDaughter(FL_OBJECT * button,
|
||||
FormMathsBitmap * FormMathsPanel::addDaughter(void * key,
|
||||
string const & title,
|
||||
char const * const * data,
|
||||
int size)
|
||||
{
|
||||
char const * const * end = data + size;
|
||||
FormMathsBitmap * bitmap =
|
||||
new FormMathsBitmap(lv_, d_, *this, title,
|
||||
std::vector<string>(data, end));
|
||||
daughters_[button] = DaughterDialog(bitmap);
|
||||
return bitmap;
|
||||
char const * const * const end = data + size;
|
||||
FormMathsBitmap * const view =
|
||||
new FormMathsBitmap(title, std::vector<string>(data, end));
|
||||
|
||||
typedef ButtonController<IgnorantPolicy, xformsBC> BC;
|
||||
BC * const bc = new BC;
|
||||
|
||||
controller().addDaughter(key, view, bc);
|
||||
return view;
|
||||
}
|
||||
|
||||
|
||||
@ -121,16 +116,19 @@ void FormMathsPanel::build()
|
||||
fl_set_pixmap_data(dialog_->button_equation,
|
||||
const_cast<char**>(equation));
|
||||
|
||||
daughters_[dialog_->button_deco] =
|
||||
DaughterDialog(new FormMathsDeco(lv_, d_, *this));
|
||||
daughters_[dialog_->button_delim] =
|
||||
DaughterDialog(new FormMathsDelim(lv_, d_, *this));
|
||||
daughters_[dialog_->button_matrix] =
|
||||
DaughterDialog(new FormMathsMatrix(lv_, d_, *this));
|
||||
daughters_[dialog_->button_space] =
|
||||
DaughterDialog(new FormMathsSpace(lv_, d_, *this));
|
||||
daughters_[dialog_->button_style] =
|
||||
DaughterDialog(new FormMathsStyle(lv_, d_, *this));
|
||||
typedef ButtonController<IgnorantPolicy, xformsBC> BC_ignorant;
|
||||
typedef ButtonController<OkApplyCancelReadOnlyPolicy, xformsBC> BC_ok;
|
||||
|
||||
controller().addDaughter(dialog_->button_deco,
|
||||
new FormMathsDeco, new BC_ignorant);
|
||||
controller().addDaughter(dialog_->button_delim,
|
||||
new FormMathsDelim, new BC_ok);
|
||||
controller().addDaughter(dialog_->button_matrix,
|
||||
new FormMathsMatrix, new BC_ok);
|
||||
controller().addDaughter(dialog_->button_space,
|
||||
new FormMathsSpace, new BC_ignorant);
|
||||
controller().addDaughter(dialog_->button_style,
|
||||
new FormMathsStyle, new BC_ignorant);
|
||||
|
||||
FormMathsBitmap * bitmap;
|
||||
bitmap = addDaughter(dialog_->button_arrow, _("Arrows"),
|
||||
@ -198,24 +196,7 @@ void FormMathsPanel::build()
|
||||
}
|
||||
|
||||
|
||||
void FormMathsPanel::showDaughter(FL_OBJECT * button)
|
||||
{
|
||||
Store::iterator it = daughters_.find(button);
|
||||
FormMathsSub * const new_active =
|
||||
(it == daughters_.end()) ? 0 : it->second.get();
|
||||
|
||||
if (active_ != new_active) {
|
||||
if (active_ && active_->isVisible())
|
||||
active_->hide();
|
||||
active_ = new_active;
|
||||
}
|
||||
|
||||
if (active_ && !active_->isVisible())
|
||||
active_->show();
|
||||
}
|
||||
|
||||
|
||||
bool FormMathsPanel::input(FL_OBJECT * ob, long)
|
||||
ButtonPolicy::SMInput FormMathsPanel::input(FL_OBJECT * ob, long)
|
||||
{
|
||||
if (ob == dialog_->button_arrow ||
|
||||
ob == dialog_->button_boperator ||
|
||||
@ -234,59 +215,32 @@ bool FormMathsPanel::input(FL_OBJECT * ob, long)
|
||||
ob == dialog_->button_deco ||
|
||||
ob == dialog_->button_space ||
|
||||
ob == dialog_->button_style) {
|
||||
showDaughter(ob);
|
||||
controller().showDaughter(ob);
|
||||
|
||||
} else if (ob == dialog_->button_super) {
|
||||
dispatchFunc(LFUN_SUPERSCRIPT);
|
||||
controller().dispatchFunc(LFUN_SUPERSCRIPT);
|
||||
|
||||
} else if (ob == dialog_->button_sub) {
|
||||
dispatchFunc(LFUN_SUBSCRIPT);
|
||||
controller().dispatchFunc(LFUN_SUBSCRIPT);
|
||||
|
||||
// } else if (ob == dialog_->???) {
|
||||
// dispatchFunc(LFUN_SUBSCRIPT);
|
||||
// dispatchFunc(LFUN_LEFT);
|
||||
// dispatchFunc(LFUN_SUPERSCRIPT);
|
||||
// controller().dispatchFunc(LFUN_SUBSCRIPT);
|
||||
// controller().dispatchFunc(LFUN_LEFT);
|
||||
// controller().dispatchFunc(LFUN_SUPERSCRIPT);
|
||||
|
||||
} else if (ob == dialog_->button_equation) {
|
||||
dispatchFunc(LFUN_MATH_DISPLAY);
|
||||
controller().dispatchFunc(LFUN_MATH_DISPLAY);
|
||||
|
||||
} else if (ob == dialog_->button_frac) {
|
||||
insertSymbol("frac");
|
||||
controller().insertSymbol("frac");
|
||||
|
||||
} else if (ob == dialog_->button_sqrt) {
|
||||
insertSymbol("sqrt");
|
||||
controller().insertSymbol("sqrt");
|
||||
|
||||
} else if (ob == dialog_->browser_funcs) {
|
||||
int const i = fl_get_browser(dialog_->browser_funcs) - 1;
|
||||
insertSymbol(function_names[i]);
|
||||
controller().insertSymbol(function_names[i]);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void FormMathsPanel::insertSymbol(string const & sym, bool bs) const
|
||||
{
|
||||
if (bs)
|
||||
lv_.dispatch(FuncRequest(LFUN_INSERT_MATH, '\\' + sym));
|
||||
else
|
||||
lv_.dispatch(FuncRequest(LFUN_INSERT_MATH, sym));
|
||||
}
|
||||
|
||||
|
||||
void FormMathsPanel::dispatchFunc(kb_action action, string const & arg) const
|
||||
{
|
||||
lv_.dispatch(FuncRequest(action, arg));
|
||||
}
|
||||
|
||||
|
||||
FormMathsSub::FormMathsSub(LyXView & lv, Dialogs & d, FormMathsPanel const & p,
|
||||
string const & t, bool allowResize)
|
||||
: FormBaseBD(lv, d, t, allowResize), parent_(p), bc_(_("Close"))
|
||||
{}
|
||||
|
||||
|
||||
bool FormMathsSub::isVisible() const
|
||||
{
|
||||
return form() ? form()->visible : false;
|
||||
return ButtonPolicy::SMI_VALID;
|
||||
}
|
||||
|
@ -14,104 +14,40 @@
|
||||
#ifndef FORM_MATHSPANEL_H
|
||||
#define FORM_MATHSPANEL_H
|
||||
|
||||
#include "commandtags.h"
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma interface
|
||||
#endif
|
||||
|
||||
#include "FormBaseDeprecated.h"
|
||||
#include "FormBase.h"
|
||||
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#include <map>
|
||||
|
||||
class FormMathsBitmap;
|
||||
class FormMathsSub;
|
||||
class ControlMath;
|
||||
struct FD_maths_panel;
|
||||
class FormMathsBitmap;
|
||||
|
||||
/**
|
||||
* This class provides an XForms implementation of the maths panel.
|
||||
*/
|
||||
class FormMathsPanel : public FormBaseBD {
|
||||
class FormMathsPanel : public FormCB<ControlMath, FormDB<FD_maths_panel> > {
|
||||
public:
|
||||
///
|
||||
FormMathsPanel(LyXView &, Dialogs &);
|
||||
/// dispatch an LFUN:
|
||||
void dispatchFunc(kb_action action,
|
||||
string const & arg = string()) const;
|
||||
/// dispatch a symbol insert
|
||||
void insertSymbol(string const & sym, bool bs = true) const;
|
||||
FormMathsPanel();
|
||||
|
||||
private:
|
||||
/// Pointer to the actual instantiation of the ButtonController.
|
||||
virtual xformsBC & bc();
|
||||
/// Not needed.
|
||||
virtual void apply() {}
|
||||
///
|
||||
virtual void update() {}
|
||||
|
||||
/// Build the dialog
|
||||
///
|
||||
virtual void build();
|
||||
/// input handler
|
||||
virtual bool input(FL_OBJECT *, long);
|
||||
|
||||
/// Pointer to the actual instantiation of the xforms form
|
||||
virtual FL_FORM * form() const;
|
||||
|
||||
// Real GUI implementation
|
||||
boost::scoped_ptr<FD_maths_panel> dialog_;
|
||||
///
|
||||
virtual ButtonPolicy::SMInput input(FL_OBJECT *, long);
|
||||
|
||||
/** Add a bitmap dialog to the store of all daughters_ and
|
||||
* return a pointer to the dialog, so that bitmaps can be added to it.
|
||||
*/
|
||||
FormMathsBitmap * addDaughter(FL_OBJECT * button, string const & title,
|
||||
FormMathsBitmap * addDaughter(void * button, string const & title,
|
||||
char const * const * data, int size);
|
||||
|
||||
///
|
||||
void showDaughter(FL_OBJECT *);
|
||||
|
||||
///
|
||||
typedef boost::shared_ptr<FormMathsSub> DaughterDialog;
|
||||
typedef std::map<FL_OBJECT *, DaughterDialog> Store;
|
||||
|
||||
/** The store of all daughter dialogs.
|
||||
* The map uses the button on the main panel to identify them.
|
||||
*/
|
||||
Store daughters_;
|
||||
|
||||
/// A pointer to the currently active daughter dialog.
|
||||
FormMathsSub * active_;
|
||||
|
||||
/// The ButtonController.
|
||||
ButtonController<OkCancelReadOnlyPolicy, xformsBC> bc_;
|
||||
};
|
||||
|
||||
|
||||
class FormMathsSub : public FormBaseBD {
|
||||
public:
|
||||
///
|
||||
FormMathsSub(LyXView &, Dialogs &, FormMathsPanel const &,
|
||||
string const &, bool allowResize = true);
|
||||
|
||||
///
|
||||
bool isVisible() const;
|
||||
|
||||
protected:
|
||||
/// Pointer to the actual instantiation of the ButtonController.
|
||||
virtual xformsBC & bc();
|
||||
/// The parent Maths Panel
|
||||
FormMathsPanel const & parent_;
|
||||
private:
|
||||
/// The ButtonController
|
||||
ButtonController<IgnorantPolicy, xformsBC> bc_;
|
||||
};
|
||||
|
||||
|
||||
inline
|
||||
xformsBC & FormMathsSub::bc()
|
||||
{
|
||||
return bc_;
|
||||
}
|
||||
|
||||
inline
|
||||
xformsBC & FormMathsPanel::bc()
|
||||
{
|
||||
return bc_;
|
||||
}
|
||||
#endif // FORM_MATHSPANEL_H
|
||||
|
@ -19,25 +19,21 @@
|
||||
|
||||
#include "FormMathsSpace.h"
|
||||
#include "forms/form_maths_space.h"
|
||||
#include "ControlMath.h"
|
||||
#include "xformsBC.h"
|
||||
|
||||
#include FORMS_H_LOCATION
|
||||
|
||||
extern char * latex_mathspace[];
|
||||
|
||||
FormMathsSpace::FormMathsSpace(LyXView & lv, Dialogs & d,
|
||||
FormMathsPanel const & p)
|
||||
: FormMathsSub(lv, d, p, _("Maths Spacing"), false),
|
||||
typedef FormCB<ControlMathSub, FormDB<FD_maths_space> > base_class;
|
||||
|
||||
FormMathsSpace::FormMathsSpace()
|
||||
: base_class(_("Maths Spacing"), false),
|
||||
space_(-1)
|
||||
{}
|
||||
|
||||
|
||||
FL_FORM * FormMathsSpace::form() const
|
||||
{
|
||||
if (dialog_.get())
|
||||
return dialog_->form;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void FormMathsSpace::build()
|
||||
{
|
||||
dialog_.reset(build_maths_space(this));
|
||||
@ -60,10 +56,10 @@ void FormMathsSpace::build()
|
||||
void FormMathsSpace::apply()
|
||||
{
|
||||
if (space_ >= 0)
|
||||
parent_.insertSymbol(latex_mathspace[space_]);
|
||||
controller().insertSymbol(latex_mathspace[space_]);
|
||||
}
|
||||
|
||||
bool FormMathsSpace::input(FL_OBJECT *, long data)
|
||||
ButtonPolicy::SMInput FormMathsSpace::input(FL_OBJECT *, long data)
|
||||
{
|
||||
space_ = -1;
|
||||
|
||||
@ -71,5 +67,5 @@ bool FormMathsSpace::input(FL_OBJECT *, long data)
|
||||
space_ = short(data);
|
||||
apply();
|
||||
}
|
||||
return true;
|
||||
return ButtonPolicy::SMI_VALID;
|
||||
}
|
||||
|
@ -18,33 +18,28 @@
|
||||
#pragma interface
|
||||
#endif
|
||||
|
||||
#include "FormMathsPanel.h"
|
||||
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
#include "FormBase.h"
|
||||
|
||||
class ControlMathSub;
|
||||
struct FD_maths_space;
|
||||
|
||||
/**
|
||||
* This class provides an XForms implementation of the maths space.
|
||||
*/
|
||||
class FormMathsSpace : public FormMathsSub {
|
||||
class FormMathsSpace : public FormCB<ControlMathSub, FormDB<FD_maths_space> > {
|
||||
public:
|
||||
///
|
||||
FormMathsSpace(LyXView &, Dialogs &, FormMathsPanel const &);
|
||||
FormMathsSpace();
|
||||
|
||||
private:
|
||||
/// Build the dialog
|
||||
virtual void build();
|
||||
/// input handler
|
||||
virtual bool input(FL_OBJECT *, long);
|
||||
/// Apply from dialog (modify or create inset)
|
||||
///
|
||||
virtual void apply();
|
||||
|
||||
/// Pointer to the actual instantiation of the xforms form
|
||||
virtual FL_FORM * form() const;
|
||||
|
||||
// Real GUI implementation
|
||||
boost::scoped_ptr<FD_maths_space> dialog_;
|
||||
///
|
||||
virtual void build();
|
||||
///
|
||||
virtual ButtonPolicy::SMInput input(FL_OBJECT *, long);
|
||||
/// Not needed.
|
||||
virtual void update() {}
|
||||
|
||||
/// The current choice.
|
||||
int space_;
|
||||
|
@ -20,9 +20,10 @@
|
||||
|
||||
#include "FormMathsStyle.h"
|
||||
#include "forms/form_maths_style.h"
|
||||
#include "bmtable.h"
|
||||
#include "ControlMath.h"
|
||||
#include "xformsBC.h"
|
||||
|
||||
#include "debug.h"
|
||||
#include "bmtable.h"
|
||||
|
||||
#include FORMS_H_LOCATION
|
||||
|
||||
@ -39,22 +40,14 @@ kb_action latex_mathfontcmds[] = {
|
||||
};
|
||||
|
||||
|
||||
typedef FormCB<ControlMathSub, FormDB<FD_maths_style> > base_class;
|
||||
|
||||
FormMathsStyle::FormMathsStyle(LyXView & lv, Dialogs & d,
|
||||
FormMathsPanel const & p)
|
||||
: FormMathsSub(lv, d, p, _("Maths Styles & Fonts"), false),
|
||||
FormMathsStyle::FormMathsStyle()
|
||||
: base_class(_("Maths Styles & Fonts"), false),
|
||||
style_(-1)
|
||||
{}
|
||||
|
||||
|
||||
FL_FORM * FormMathsStyle::form() const
|
||||
{
|
||||
if (dialog_.get())
|
||||
return dialog_->form;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void FormMathsStyle::build()
|
||||
{
|
||||
dialog_.reset(build_maths_style(this));
|
||||
@ -86,21 +79,23 @@ void FormMathsStyle::build()
|
||||
void FormMathsStyle::apply()
|
||||
{
|
||||
if ((style_ >= 0) && (style_ < 4))
|
||||
parent_.insertSymbol(latex_mathstyle[style_]);
|
||||
controller().insertSymbol(latex_mathstyle[style_]);
|
||||
else if ((style_ >= 4) && (style_ < 14))
|
||||
parent_.dispatchFunc(latex_mathfontcmds[style_ - 4]);
|
||||
controller().dispatchFunc(latex_mathfontcmds[style_-4]);
|
||||
}
|
||||
|
||||
|
||||
bool FormMathsStyle::input(FL_OBJECT * ob, long data)
|
||||
ButtonPolicy::SMInput FormMathsStyle::input(FL_OBJECT * ob, long data)
|
||||
{
|
||||
style_ = fl_get_bmtable(ob);
|
||||
if (style_ < 0) return false;
|
||||
if (style_ < 0) return ButtonPolicy::SMI_INVALID;
|
||||
|
||||
//if (ob == dialog_->bmtable_style1) style_ += 0;
|
||||
if (ob == dialog_->bmtable_style2) style_ += 1;
|
||||
if (ob == dialog_->bmtable_font1) style_ += 4;
|
||||
if (ob == dialog_->bmtable_font2) style_ += 9;
|
||||
if (data >= 12) style_ = short(data);
|
||||
apply();
|
||||
return true;
|
||||
|
||||
return ButtonPolicy::SMI_VALID;
|
||||
}
|
||||
|
@ -18,33 +18,28 @@
|
||||
#pragma interface
|
||||
#endif
|
||||
|
||||
#include "FormMathsPanel.h"
|
||||
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
#include "FormBase.h"
|
||||
|
||||
class ControlMathSub;
|
||||
struct FD_maths_style;
|
||||
|
||||
/**
|
||||
* This class provides an XForms implementation of the maths style.
|
||||
*/
|
||||
class FormMathsStyle : public FormMathsSub {
|
||||
class FormMathsStyle : public FormCB<ControlMathSub, FormDB<FD_maths_style> > {
|
||||
public:
|
||||
///
|
||||
FormMathsStyle(LyXView &, Dialogs &, FormMathsPanel const &);
|
||||
FormMathsStyle();
|
||||
|
||||
private:
|
||||
/// Build the dialog
|
||||
virtual void build();
|
||||
/// input handler
|
||||
virtual bool input(FL_OBJECT *, long);
|
||||
/// Apply from dialog (modify or create inset)
|
||||
///
|
||||
virtual void apply();
|
||||
|
||||
/// Pointer to the actual instantiation of the xforms form
|
||||
virtual FL_FORM * form() const;
|
||||
|
||||
// Real GUI implementation
|
||||
boost::scoped_ptr<FD_maths_style> dialog_;
|
||||
///
|
||||
virtual void build();
|
||||
///
|
||||
virtual ButtonPolicy::SMInput input(FL_OBJECT *, long);
|
||||
/// Not needed.
|
||||
virtual void update() {}
|
||||
|
||||
/// The current choice.
|
||||
int style_;
|
||||
|
@ -54,8 +54,6 @@ libxforms_la_SOURCES = \
|
||||
Dialogs_impl.h \
|
||||
DropDown.h \
|
||||
DropDown.C \
|
||||
FeedbackController.C \
|
||||
FeedbackController.h \
|
||||
FileDialog.C \
|
||||
FontInfo.C \
|
||||
FontInfo.h \
|
||||
@ -65,8 +63,6 @@ libxforms_la_SOURCES = \
|
||||
FormAboutlyx.h \
|
||||
FormBase.C \
|
||||
FormBase.h \
|
||||
FormBaseDeprecated.C \
|
||||
FormBaseDeprecated.h \
|
||||
FormBibitem.C \
|
||||
FormBibitem.h \
|
||||
FormBibtex.C \
|
||||
|
@ -46,7 +46,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: bmtable_deco1
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
@ -64,7 +64,7 @@ shortcut: ^M
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_close
|
||||
callback: C_FormBaseDeprecatedCancelCB
|
||||
callback: C_FormBaseCancelCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
@ -82,7 +82,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: bmtable_deco2
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 0
|
||||
|
||||
==============================
|
||||
|
@ -46,7 +46,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: bmtable
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
@ -64,7 +64,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_close
|
||||
callback: C_FormBaseDeprecatedCancelCB
|
||||
callback: C_FormBaseCancelCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
@ -82,7 +82,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_pix
|
||||
callback: C_FormBaseDeprecatedApplyCB
|
||||
callback: C_FormBaseApplyCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
@ -100,7 +100,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_apply
|
||||
callback: C_FormBaseDeprecatedApplyCB
|
||||
callback: C_FormBaseApplyCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
@ -118,7 +118,7 @@ shortcut: ^M
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_ok
|
||||
callback: C_FormBaseDeprecatedOKCB
|
||||
callback: C_FormBaseOKCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
|
@ -46,7 +46,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: slider_rows
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 0
|
||||
bounds: 1 20
|
||||
precision: 0
|
||||
@ -67,7 +67,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: slider_columns
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 0
|
||||
bounds: 1 20
|
||||
precision: 0
|
||||
@ -88,7 +88,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: choice_valign
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
@ -106,7 +106,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: input_halign
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
@ -124,7 +124,7 @@ shortcut: ^M
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_ok
|
||||
callback: C_FormBaseDeprecatedOKCB
|
||||
callback: C_FormBaseOKCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
@ -142,7 +142,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_apply
|
||||
callback: C_FormBaseDeprecatedApplyCB
|
||||
callback: C_FormBaseApplyCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
@ -160,7 +160,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_close
|
||||
callback: C_FormBaseDeprecatedCancelCB
|
||||
callback: C_FormBaseCancelCB
|
||||
argument: 0
|
||||
|
||||
==============================
|
||||
|
@ -46,7 +46,7 @@ shortcut: ^M
|
||||
resize: FL_RESIZE_NONE
|
||||
gravity: FL_SouthEast FL_SouthEast
|
||||
name: button_close
|
||||
callback: C_FormBaseDeprecatedCancelCB
|
||||
callback: C_FormBaseCancelCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
@ -64,7 +64,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_SouthEast
|
||||
name: browser_funcs
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
h_pref: FL_OFF
|
||||
|
||||
@ -83,7 +83,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_greek
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
@ -101,7 +101,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_arrow
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
@ -119,7 +119,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_boperator
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
@ -137,7 +137,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_brelats
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
@ -155,7 +155,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_misc
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
@ -173,7 +173,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_equation
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
@ -191,7 +191,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_sqrt
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
@ -209,7 +209,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_frac
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
@ -227,7 +227,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_delim
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
@ -245,7 +245,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_matrix
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
@ -263,7 +263,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_deco
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
@ -281,7 +281,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_space
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
@ -299,7 +299,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_dots
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
@ -317,7 +317,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_varsize
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
@ -335,7 +335,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_sub
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
@ -353,7 +353,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_super
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
@ -371,7 +371,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_style
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
@ -389,7 +389,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_ams_arrows
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
@ -407,7 +407,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_ams_brel
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
@ -425,7 +425,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_ams_nrel
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
@ -443,7 +443,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_ams_ops
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
@ -461,7 +461,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_ams_misc
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument:
|
||||
|
||||
==============================
|
||||
|
@ -64,7 +64,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_negative
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
@ -82,7 +82,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_negmedspace
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 1
|
||||
|
||||
--------------------
|
||||
@ -100,7 +100,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_negthickspace
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 2
|
||||
|
||||
--------------------
|
||||
@ -118,7 +118,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_thick
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 5
|
||||
|
||||
--------------------
|
||||
@ -136,7 +136,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_twoquadratin
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 7
|
||||
|
||||
--------------------
|
||||
@ -172,7 +172,7 @@ shortcut: ^M
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_close
|
||||
callback: C_FormBaseDeprecatedCancelCB
|
||||
callback: C_FormBaseCancelCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
@ -190,7 +190,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_quadratin
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 6
|
||||
|
||||
--------------------
|
||||
@ -208,7 +208,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_thin
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 3
|
||||
|
||||
--------------------
|
||||
@ -226,7 +226,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_medium
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 4
|
||||
|
||||
==============================
|
||||
|
@ -46,7 +46,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: bmtable_font2
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
@ -64,7 +64,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: bmtable_style1
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
@ -82,7 +82,7 @@ shortcut: ^M
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_close
|
||||
callback: C_FormBaseDeprecatedCancelCB
|
||||
callback: C_FormBaseCancelCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
@ -100,7 +100,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: bmtable_style2
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
@ -118,7 +118,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: bmtable_font1
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
@ -136,7 +136,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_reset
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 13
|
||||
|
||||
--------------------
|
||||
@ -154,7 +154,7 @@ shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_textrm
|
||||
callback: C_FormBaseDeprecatedInputCB
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 12
|
||||
|
||||
==============================
|
||||
|
Loading…
Reference in New Issue
Block a user