Use same button handling as in XForms frontend

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@1824 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Kalle Dalheimer 2001-03-24 15:59:01 +00:00
parent 3c7b1cf655
commit 0eb38828ca
6 changed files with 78 additions and 51 deletions

View File

@ -10,3 +10,5 @@ FormDocumentDialogBase.h
FormDocumentDialogBase.C
FormCitationDialog.h
FormCitationDialog.C
FormCopyrightDialog.C
FormCopyrightDialog.h

View File

@ -25,6 +25,8 @@
#include "qt2BC.h"
#include "support/LAssert.h"
#include <stdio.h>
FormBase::FormBase(ControlBase & c, string const & t)
: ViewBC<qt2BC>(c), title_(t)
@ -34,17 +36,27 @@ FormBase::FormBase(ControlBase & c, string const & t)
void FormBase::show()
{
if (!form()) {
fprintf( stderr, "FormBase::show() 1\n" );
if (!form()) {
fprintf( stderr, "FormBase::show() 2\n" );
build();
fprintf( stderr, "FormBase::show() 3\n" );
}
fprintf( stderr, "FormBase::show() 4\n" );
update(); // make sure its up-to-date
fprintf( stderr, "FormBase::show() 5\n" );
if (form()->isVisible()) {
fprintf( stderr, "FormBase::show() 6\n" );
form()->raise();
fprintf( stderr, "FormBase::show() 7\n" );
} else {
fprintf( stderr, "FormBase::show() 8\n" );
form()->setCaption( title_.c_str() );
fprintf( stderr, "FormBase::show() 9\n" );
form()->show();
fprintf( stderr, "FormBase::show() 10\n" );
}
}
@ -56,65 +68,52 @@ void FormBase::hide()
}
// PENDING(kalle) Handle this with QValidator?
// void FormBase::InputCB(FL_OBJECT * ob, long data)
// {
// bc().input(input(ob, data));
// }
// ButtonPolicy::SMInput FormBase::input(FL_OBJECT *, long)
// {
// return ButtonPolicy::SMI_VALID;
// }
ButtonPolicy::SMInput FormBase::input(QWidget*, long)
{
return ButtonPolicy::SMI_VALID;
}
namespace {
// FormBase * GetForm(QWidget * ob)
// {
// Assert(ob && ob->form && ob->form->u_vdata);
// FormBase * pre = static_cast<FormBase *>(ob->form->u_vdata);
// return pre;
// }
} // namespace anon
void FormBase::slotWMHide()
{
CancelButton();
}
// extern "C" int C_FormBaseWMHideCB(FL_FORM * form, void *)
// {
// // Close the dialog cleanly, even if the WM is used to do so.
// Assert(form && form->u_vdata);
// FormBase * pre = static_cast<FormBase *>(form->u_vdata);
// pre->CancelButton();
// return FL_CANCEL;
// }
void FormBase::slotApply()
{
ApplyButton();
}
// extern "C" void C_FormBaseApplyCB(FL_OBJECT * ob, long)
// {
// GetForm(ob)->ApplyButton();
// }
void FormBase::slotOK()
{
OKButton();
}
// extern "C" void C_FormBaseOKCB(FL_OBJECT * ob, long)
// {
// GetForm(ob)->OKButton();
// }
void FormBase::slotCancel()
{
CancelButton();
}
// extern "C" void C_FormBaseCancelCB(FL_OBJECT * ob, long)
// {
// FormBase * form = GetForm(ob);
// form->CancelButton();
// }
// extern "C" void C_FormBaseRestoreCB(FL_OBJECT * ob, long)
// {
// GetForm(ob)->RestoreButton();
// }
void FormBase::slotRestore()
{
RestoreButton();
}
// PENDING(kalle) How to handle this?
// extern "C" void C_FormBaseInputCB(FL_OBJECT * ob, long d)
// {
// GetForm(ob)->InputCB(ob, d);

View File

@ -18,6 +18,9 @@
class QDialog;
#include <qfont.h>
#include <qobject.h>
#ifdef __GNUG__
#pragma interface
#endif
@ -30,8 +33,9 @@ class qt2BC;
/** This class is an Qt2 GUI base class.
*/
class FormBase : public ViewBC<qt2BC>
class FormBase : public QObject, public ViewBC<qt2BC>
{
Q_OBJECT
public:
///
FormBase(ControlBase &, string const &);
@ -46,12 +50,28 @@ protected:
/// Create the dialog if necessary, update it and display it.
void show();
protected slots:
// dialog closed from WM
void slotWMHide();
// Apply button clicked
void slotApply();
// OK button clicked
void slotOK();
// Cancel button clicked
void slotCancel();
// Restore button clicked
void slotRestore();
private:
/// Pointer to the actual instantiation of xform's form
virtual QDialog* form() const = 0;
// /** Filter the inputs on callback from xforms
// Return true if inputs are valid. */
// virtual ButtonPolicy::SMInput input(FL_OBJECT *, long);
/** Filter the inputs on callback from xforms
Return true if inputs are valid. */
virtual ButtonPolicy::SMInput input(QWidget*, long);
private:
/// dialog title, displayed by WM.

View File

@ -38,13 +38,15 @@ void FormCopyright::build()
{
// PENDING(kalle) Parent???
dialog_.reset( new FormCopyrightDialogImpl() );
connect( dialog_.get()->closePB, SIGNAL( clicked() ),
this, SLOT( slotCancel() ) );
dialog_->copyrightLA->setText( controller().getCopyright().c_str() );
dialog_->licenseLA->setText( controller().getLicence().c_str() );
dialog_->disclaimerLA->setText( controller().getDisclaimer().c_str() );
// Manage the cancel/close button
bc().setCancel(dialog_->okPB);
bc().setCancel(dialog_->closePB);
bc().refresh();
}

View File

@ -17,7 +17,7 @@
</property>
<property stdset="1">
<name>caption</name>
<string>Form1</string>
<string>Copyright and Warranty</string>
</property>
<vbox>
<property stdset="1">
@ -159,7 +159,7 @@ if not, write to the Free Software Foundation, Inc.,
<class>QPushButton</class>
<property stdset="1">
<name>name</name>
<cstring>okPB</cstring>
<cstring>closePB</cstring>
</property>
<property stdset="1">
<name>sizePolicy</name>
@ -170,7 +170,7 @@ if not, write to the Free Software Foundation, Inc.,
</property>
<property stdset="1">
<name>text</name>
<string>&amp;OK</string>
<string>&amp;Close</string>
</property>
<property stdset="1">
<name>default</name>
@ -181,7 +181,7 @@ if not, write to the Free Software Foundation, Inc.,
</widget>
<connections>
<connection>
<sender>okPB</sender>
<sender>closePB</sender>
<signal>clicked()</signal>
<receiver>FormCopyrightDialog</receiver>
<slot>reject()</slot>

View File

@ -12,6 +12,7 @@ CXXFLAGS += -DQT_CLEAN_NAMESPACE -fno-rtti -fno-exceptions
# moc generated files
BUILTSOURCES = \
moc_FileDialog_private.C \
moc_FormBase.C \
moc_FormCitationDialog.C \
moc_FormCitationDialogImpl.C \
moc_FormCopyrightDialog.C \
@ -160,6 +161,9 @@ dist-hook:
done ; \
done
moc_FormBase.C: FormBase.h
$(MOC) -o $@ $<
FormCitation.C: FormCitationDialog.h
FormCitationDialog.h: FormCitationDialog.ui
$(UIC) -o $@ $<