/* FormCopyright.C * FormCopyright Interface Class Implementation */ #include #include FORMS_H_LOCATION #ifdef __GNUG__ #pragma implementation #endif #include "xform_macros.h" #include "form_copyright.h" #include "FormCopyright.h" #include "Dialogs.h" #include "LyXView.h" #include "lyx_gui_misc.h" #include "gettext.h" C_RETURNCB(FormCopyright, WMHideCB) C_GENERICCB(FormCopyright, OKCB) FormCopyright::FormCopyright(LyXView * lv, Dialogs * d) : dialog_(0), lv_(lv), d_(d), h_(0) { // let the dialog be shown // This is a permanent connection so we won't bother // storing a copy because we won't be disconnecting. d->showCopyright.connect(slot(this, &FormCopyright::show)); } FormCopyright::~FormCopyright() { delete dialog_; } void FormCopyright::build() { dialog_ = build_copyright(); fl_set_form_atclose(dialog_->form, C_FormCopyrightWMHideCB, 0); } void FormCopyright::show() { if (!dialog_) { build(); } if (dialog_->form->visible) { fl_raise_form(dialog_->form); } else { fl_show_form(dialog_->form, FL_PLACE_MOUSE, FL_FULLBORDER, _("Copyright and Warranty")); h_ = d_->hideAll.connect(slot(this, &FormCopyright::hide)); } } void FormCopyright::hide() { if (dialog_ && dialog_->form && dialog_->form->visible) { fl_hide_form(dialog_->form); h_.disconnect(); } } int FormCopyright::WMHideCB(FL_FORM * form, void *) { // Ensure that the signal h is disconnected even if the // window manager is used to close the dialog. FormCopyright * pre = static_cast(form->u_vdata); pre->hide(); return FL_CANCEL; } void FormCopyright::OKCB(FL_OBJECT * ob, long) { FormCopyright * pre = static_cast(ob->form->u_vdata); pre->hide(); }