X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fxforms%2FFormDocument.C;h=b144834f81f986e5e7b8d1a036d0d9f372b05045;hb=eba67bc3120dc301bf193c3f3b570f51f00a4654;hp=b059aea40f62852e0d47e3f95195c17aeaf9f6ed;hpb=783c043a7e2cde3dac318f819894d4e312fe30c1;p=lyx.git diff --git a/src/frontends/xforms/FormDocument.C b/src/frontends/xforms/FormDocument.C index b059aea40f..b144834f81 100644 --- a/src/frontends/xforms/FormDocument.C +++ b/src/frontends/xforms/FormDocument.C @@ -16,13 +16,11 @@ #endif #include "lyx_gui_misc.h" -#include "gettext.h" #include FORMS_H_LOCATION #include XPM_H_LOCATION #include "FormDocument.h" #include "form_document.h" -#include "xform_macros.h" #include "Dialogs.h" #include "layout.h" #include "combox.h" @@ -39,11 +37,6 @@ #include "Liason.h" #include "CutAndPaste.h" #include "bufferview_funcs.h" -#include "ButtonController.h" - -#ifdef SIGC_CXX_NAMESPACES -using SigC::slot; -#endif #ifdef CXX_WORKING_NAMESPACES using Liason::setMinibuffer; @@ -51,39 +44,52 @@ using Liason::setMinibuffer; #define USE_CLASS_COMBO 1 -C_RETURNCB(FormDocument, WMHideCB) -C_GENERICCB(FormDocument, InputCB) -C_GENERICCB(FormDocument, OKCB) -C_GENERICCB(FormDocument, ApplyCB) -C_GENERICCB(FormDocument, CancelCB) -C_GENERICCB(FormDocument, RestoreCB) -C_GENERICCB(FormDocument, ChoiceClassCB) -C_GENERICCB(FormDocument, BulletPanelCB) -C_GENERICCB(FormDocument, BulletDepthCB) -C_GENERICCB(FormDocument, InputBulletLaTeXCB) -C_GENERICCB(FormDocument, ChoiceBulletSizeCB) - - FormDocument::FormDocument(LyXView * lv, Dialogs * d) - : dialog_(0), paper_(0), class_(0), language_(0), options_(0), - bullets_(0), lv_(lv), d_(d), u_(0), h_(0), - status(POPUP_UNMODIFIED) , - bc_(new ButtonController(_("Cancel"), - _("Close"))) + : FormBaseBD(lv, d, _("Document Layout"), + new NoRepeatedApplyReadOnlyPolicy), + dialog_(0), paper_(0), class_(0), language_(0), options_(0), + bullets_(0), current_bullet_panel(0), current_bullet_depth(0), + fbullet(0), combo_language(0), combo_doc_class(0) { // let the popup be shown // This is a permanent connection so we won't bother // storing a copy because we won't be disconnecting. d->showLayoutDocument.connect(slot(this, &FormDocument::show)); - current_bullet_depth = 0; - current_bullet_panel = 0; } FormDocument::~FormDocument() { - free(); - delete bc_; +#ifdef USE_CLASS_COMBO + delete combo_doc_class; +#endif + delete class_; + delete paper_; + delete combo_language; + delete language_; + delete options_; + delete bullets_; + delete dialog_; +} + + +void FormDocument::redraw() +{ + if( form() && form()->visible ) + fl_redraw_form( form() ); + else + return; + + FL_FORM * outer_form = fl_get_active_folder(dialog_->tabbed_folder); + if (outer_form && outer_form->visible) + fl_redraw_form( outer_form ); +} + + +FL_FORM * FormDocument::form() const +{ + if (dialog_) return dialog_->form; + return 0; } @@ -94,12 +100,16 @@ void FormDocument::build() // the tabbed folder dialog_ = build_tabbed_document(); - // manage the restore, ok, apply and cancel/close buttons - bc_->setOK(dialog_->button_ok); - bc_->setApply(dialog_->button_apply); - bc_->setCancel(dialog_->button_cancel); - bc_->setUndoAll(dialog_->button_restore); - bc_->refresh(); + // Manage the restore, ok, apply, restore and cancel/close buttons + bc_.setOK(dialog_->button_ok); + bc_.setApply(dialog_->button_apply); + bc_.setCancel(dialog_->button_cancel); + bc_.setUndoAll(dialog_->button_restore); + bc_.refresh(); + + // Workaround dumb xforms sizing bug + minw_ = form()->w; + minh_ = form()->h; // the document paper form paper_ = build_doc_paper(); @@ -111,31 +121,31 @@ void FormDocument::build() "| A4 small Margins (only portrait) " "| A4 very small Margins (only portrait) " "| A4 very wide margins (only portrait) ")); - fl_set_input_return(paper_->input_custom_width, FL_RETURN_ALWAYS); - fl_set_input_return(paper_->input_custom_height, FL_RETURN_ALWAYS); - fl_set_input_return(paper_->input_top_margin, FL_RETURN_ALWAYS); - fl_set_input_return(paper_->input_bottom_margin, FL_RETURN_ALWAYS); - fl_set_input_return(paper_->input_left_margin, FL_RETURN_ALWAYS); - fl_set_input_return(paper_->input_right_margin, FL_RETURN_ALWAYS); - fl_set_input_return(paper_->input_head_height, FL_RETURN_ALWAYS); - fl_set_input_return(paper_->input_head_sep, FL_RETURN_ALWAYS); - fl_set_input_return(paper_->input_foot_skip, FL_RETURN_ALWAYS); - - bc_->addReadOnly (paper_->choice_paperpackage); - bc_->addReadOnly (paper_->greoup_radio_orientation); - bc_->addReadOnly (paper_->radio_portrait); - bc_->addReadOnly (paper_->radio_landscape); - bc_->addReadOnly (paper_->choice_papersize2); - bc_->addReadOnly (paper_->push_use_geometry); - bc_->addReadOnly (paper_->input_custom_width); - bc_->addReadOnly (paper_->input_custom_height); - bc_->addReadOnly (paper_->input_top_margin); - bc_->addReadOnly (paper_->input_bottom_margin); - bc_->addReadOnly (paper_->input_left_margin); - bc_->addReadOnly (paper_->input_right_margin); - bc_->addReadOnly (paper_->input_head_height); - bc_->addReadOnly (paper_->input_head_sep); - bc_->addReadOnly (paper_->input_foot_skip); + fl_set_input_return(paper_->input_custom_width, FL_RETURN_CHANGED); + fl_set_input_return(paper_->input_custom_height, FL_RETURN_CHANGED); + fl_set_input_return(paper_->input_top_margin, FL_RETURN_CHANGED); + fl_set_input_return(paper_->input_bottom_margin, FL_RETURN_CHANGED); + fl_set_input_return(paper_->input_left_margin, FL_RETURN_CHANGED); + fl_set_input_return(paper_->input_right_margin, FL_RETURN_CHANGED); + fl_set_input_return(paper_->input_head_height, FL_RETURN_CHANGED); + fl_set_input_return(paper_->input_head_sep, FL_RETURN_CHANGED); + fl_set_input_return(paper_->input_foot_skip, FL_RETURN_CHANGED); + + bc_.addReadOnly (paper_->choice_paperpackage); + bc_.addReadOnly (paper_->greoup_radio_orientation); + bc_.addReadOnly (paper_->radio_portrait); + bc_.addReadOnly (paper_->radio_landscape); + bc_.addReadOnly (paper_->choice_papersize2); + bc_.addReadOnly (paper_->push_use_geometry); + bc_.addReadOnly (paper_->input_custom_width); + bc_.addReadOnly (paper_->input_custom_height); + bc_.addReadOnly (paper_->input_top_margin); + bc_.addReadOnly (paper_->input_bottom_margin); + bc_.addReadOnly (paper_->input_left_margin); + bc_.addReadOnly (paper_->input_right_margin); + bc_.addReadOnly (paper_->input_head_height); + bc_.addReadOnly (paper_->input_head_sep); + bc_.addReadOnly (paper_->input_foot_skip); // the document class form class_ = build_doc_class(); @@ -146,14 +156,15 @@ void FormDocument::build() obj = class_->choice_doc_class; fl_addto_form(class_->form); combo_doc_class = new Combox(FL_COMBOX_DROPLIST); - combo_doc_class->add(obj->x, obj->y, obj->w, obj->h, 200); + combo_doc_class->add(obj->x, obj->y, obj->w, obj->h, 400, + dialog_->tabbed_folder); combo_doc_class->shortcut("#C",1); combo_doc_class->setcallback(ComboInputCB, this); fl_end_form(); for (LyXTextClassList::const_iterator cit = textclasslist.begin(); cit != textclasslist.end(); ++cit) { - combo_doc_class->addto((*cit).description().c_str()); + combo_doc_class->addto((*cit).description()); } #else fl_clear_choice(class_->choice_doc_class); @@ -173,26 +184,27 @@ void FormDocument::build() "default|empty|plain|headings|fancy"); fl_addto_choice(class_->choice_doc_skip, _(" Smallskip | Medskip | Bigskip | Length ")); - fl_set_input_return(class_->input_doc_skip, FL_RETURN_ALWAYS); - fl_set_input_return(class_->input_doc_spacing, FL_RETURN_ALWAYS); + fl_set_input_return(class_->input_doc_extra, FL_RETURN_CHANGED); + fl_set_input_return(class_->input_doc_skip, FL_RETURN_CHANGED); + fl_set_input_return(class_->input_doc_spacing, FL_RETURN_CHANGED); - bc_->addReadOnly (class_->radio_doc_indent); - bc_->addReadOnly (class_->radio_doc_skip); + bc_.addReadOnly (class_->radio_doc_indent); + bc_.addReadOnly (class_->radio_doc_skip); #ifndef USE_CLASS_COMBO - bc_->addReadOnly (class_->choice_doc_class); + bc_.addReadOnly (class_->choice_doc_class); #endif - bc_->addReadOnly (class_->choice_doc_pagestyle); - bc_->addReadOnly (class_->choice_doc_fonts); - bc_->addReadOnly (class_->choice_doc_fontsize); - bc_->addReadOnly (class_->radio_doc_sides_one); - bc_->addReadOnly (class_->radio_doc_sides_two); - bc_->addReadOnly (class_->radio_doc_columns_one); - bc_->addReadOnly (class_->radio_doc_columns_two); - bc_->addReadOnly (class_->input_doc_extra); - bc_->addReadOnly (class_->input_doc_skip); - bc_->addReadOnly (class_->choice_doc_skip); - bc_->addReadOnly (class_->choice_doc_spacing); - bc_->addReadOnly (class_->input_doc_spacing); + bc_.addReadOnly (class_->choice_doc_pagestyle); + bc_.addReadOnly (class_->choice_doc_fonts); + bc_.addReadOnly (class_->choice_doc_fontsize); + bc_.addReadOnly (class_->radio_doc_sides_one); + bc_.addReadOnly (class_->radio_doc_sides_two); + bc_.addReadOnly (class_->radio_doc_columns_one); + bc_.addReadOnly (class_->radio_doc_columns_two); + bc_.addReadOnly (class_->input_doc_extra); + bc_.addReadOnly (class_->input_doc_skip); + bc_.addReadOnly (class_->choice_doc_skip); + bc_.addReadOnly (class_->choice_doc_spacing); + bc_.addReadOnly (class_->input_doc_spacing); // the document language form language_ = build_doc_language(); @@ -204,26 +216,30 @@ void FormDocument::build() obj = language_->choice_language; fl_addto_form(language_->form); combo_language = new Combox(FL_COMBOX_DROPLIST); - combo_language->add(obj->x, obj->y, obj->w, obj->h, 200); + combo_language->add(obj->x, obj->y, obj->w, obj->h, 400, + dialog_->tabbed_folder); combo_language->shortcut("#L",1); combo_language->setcallback(ComboInputCB, this); fl_end_form(); // "default" is not part of the languages array any more. +#ifdef DO_USE_DEFAULT_LANGUAGE combo_language->addto("default"); - for(Languages::const_iterator cit = languages.begin(); +#endif + for (Languages::const_iterator cit = languages.begin(); cit != languages.end(); ++cit) { - combo_language->addto((*cit).second.lang().c_str()); + combo_language->addto((*cit).second.lang()); } fl_addto_choice(language_->choice_quotes_language, _(" ``text'' | ''text'' | ,,text`` | ,,text'' |" " «text» | »text« ")); - bc_->addReadOnly (language_->choice_language); - bc_->addReadOnly (language_->choice_inputenc); + bc_.addReadOnly (language_->choice_language); + bc_.addReadOnly (language_->choice_inputenc); // the document options form options_ = build_doc_options(); + fl_set_input_return(options_->input_float_placement, FL_RETURN_CHANGED); fl_set_counter_bounds(options_->slider_secnumdepth,-2,5); fl_set_counter_bounds(options_->slider_tocdepth,-1,5); fl_set_counter_step(options_->slider_secnumdepth,1,1); @@ -234,11 +250,11 @@ void FormDocument::build() fl_addto_choice(options_->choice_postscript_driver, tex_graphics[n]); } - bc_->addReadOnly (options_->slider_secnumdepth); - bc_->addReadOnly (options_->slider_tocdepth); - bc_->addReadOnly (options_->check_use_amsmath); - bc_->addReadOnly (options_->input_float_placement); - bc_->addReadOnly (options_->choice_postscript_driver); + bc_.addReadOnly (options_->slider_secnumdepth); + bc_.addReadOnly (options_->slider_tocdepth); + bc_.addReadOnly (options_->check_use_amsmath); + bc_.addReadOnly (options_->input_float_placement); + bc_.addReadOnly (options_->choice_postscript_driver); // the document bullets form bullets_ = build_doc_bullet(); @@ -249,8 +265,10 @@ void FormDocument::build() fl_set_input_return(bullets_->input_bullet_latex, FL_RETURN_CHANGED); fl_set_input_maxchars(bullets_->input_bullet_latex, 80); - fl_set_form_atclose(dialog_->form, - C_FormDocumentWMHideCB, 0); + bc_.addReadOnly (bullets_->bmtable_bullet_panel); + bc_.addReadOnly (bullets_->choice_bullet_size); + bc_.addReadOnly (bullets_->input_bullet_latex); + fl_addto_tabfolder(dialog_->tabbed_folder,_("Document"), class_->form); fl_addto_tabfolder(dialog_->tabbed_folder,_("Paper"), @@ -271,36 +289,6 @@ void FormDocument::build() } -void FormDocument::show() -{ - if (!dialog_) - build(); - - update(); // make sure its up-to-date - if (dialog_->form->visible) { - fl_raise_form(dialog_->form); - } else { - fl_show_form(dialog_->form, - FL_PLACE_MOUSE | FL_FREE_SIZE, - FL_TRANSIENT, _("Document Layout")); - u_ = d_->updateBufferDependent.connect( - slot(this, &FormDocument::update)); - h_ = d_->hideBufferDependent.connect( - slot(this, &FormDocument::hide)); - } -} - - -void FormDocument::hide() -{ - if (dialog_->form->visible) { - fl_hide_form(dialog_->form); - u_.disconnect(); - h_.disconnect(); - } -} - - void FormDocument::apply() { if (!lv_->view()->available() || !dialog_) @@ -320,6 +308,94 @@ void FormDocument::apply() } +void FormDocument::cancel() +{ + // this avoids confusion when reopening + BufferParams & param = lv_->buffer()->params; + param.temp_bullets[0] = param.user_defined_bullets[0]; + param.temp_bullets[1] = param.user_defined_bullets[1]; + param.temp_bullets[2] = param.user_defined_bullets[2]; + param.temp_bullets[3] = param.user_defined_bullets[3]; + hide(); +} + + +void FormDocument::update() +{ + if (!dialog_) + return; + + checkReadOnly(); + + BufferParams const & params = lv_->buffer()->params; + + class_update(params); + paper_update(params); + language_update(params); + options_update(params); + bullets_update(params); +} + + +bool FormDocument::input( FL_OBJECT * ob, long data ) +{ + State cb = static_cast( data ); + + switch (cb) { + case CHECKCHOICECLASS: + CheckChoiceClass(ob, 0); + break; + case CHOICEBULLETSIZE: + ChoiceBulletSize(ob, 0); + break; + case INPUTBULLETLATEX: + InputBulletLaTeX(ob, 0); + break; + case BULLETDEPTH1: + case BULLETDEPTH2: + case BULLETDEPTH3: + case BULLETDEPTH4: + BulletDepth(ob, cb); + break; + case BULLETPANEL1: + case BULLETPANEL2: + case BULLETPANEL3: + case BULLETPANEL4: + case BULLETPANEL5: + case BULLETPANEL6: + BulletPanel(ob, cb); + break; + case BULLETBMTABLE: + BulletBMTable(ob, 0); + break; + default: + break; + } + + switch (data) { + case INPUT: + case CHECKCHOICECLASS: + case CHOICEBULLETSIZE: + case INPUTBULLETLATEX: + case BULLETBMTABLE: + return CheckDocumentInput(ob, 0); + default: + break; + } + + return true; +} + + +void FormDocument::ComboInputCB(int, void * v, Combox * combox) +{ + FormDocument * pre = static_cast(v); + if (combox == pre->combo_doc_class) + pre->CheckChoiceClass(0, 0); + pre->bc_.valid(pre->CheckDocumentInput(0,0)); +} + + bool FormDocument::class_apply() { bool redo = false; @@ -336,9 +412,9 @@ bool FormDocument::class_apply() params.pagestyle = fl_get_choice_text(class_->choice_doc_pagestyle); #ifdef USE_CLASS_COMBO - unsigned int new_class = combo_doc_class->get() - 1; + unsigned int const new_class = combo_doc_class->get() - 1; #else - unsigned int new_class = fl_get_choice(class_->choice_doc_class) - 1; + unsigned int const new_class = fl_get_choice(class_->choice_doc_class) - 1; #endif if (params.textclass != new_class) { // try to load new_class @@ -369,14 +445,14 @@ bool FormDocument::class_apply() _("Errors loading new document class."), _("Reverting to original document class.")); #ifdef USE_CLASS_COMBO - combo_doc_class->select(params.textclass + 1); + combo_doc_class->select(int(params.textclass) + 1); #else fl_set_choice(class_->choice_doc_class, params.textclass + 1); #endif } } - char tmpsep = params.paragraph_separation; + BufferParams::PARSEP tmpsep = params.paragraph_separation; if (fl_get_button(class_->radio_doc_indent)) params.paragraph_separation = BufferParams::PARSEP_INDENT; else @@ -417,7 +493,7 @@ bool FormDocument::class_apply() params.sides = LyXTextClass::OneSide; Spacing tmpSpacing = params.spacing; - switch(fl_get_choice(class_->choice_doc_spacing)) { + switch (fl_get_choice(class_->choice_doc_spacing)) { case 1: lyxerr[Debug::INFO] << "Spacing: SINGLE\n"; params.spacing.set(Spacing::Single); @@ -449,8 +525,10 @@ void FormDocument::paper_apply() { BufferParams & params = lv_->buffer()->params; - params.papersize2 = fl_get_choice(paper_->choice_papersize2)-1; - params.paperpackage = fl_get_choice(paper_->choice_paperpackage)-1; + params.papersize2 = + static_cast(fl_get_choice(paper_->choice_papersize2)-1); + params.paperpackage = + static_cast(fl_get_choice(paper_->choice_paperpackage)-1); params.use_geometry = fl_get_button(paper_->push_use_geometry); if (fl_get_button(paper_->radio_landscape)) params.orientation = BufferParams::ORIENTATION_LANDSCAPE; @@ -475,7 +553,7 @@ bool FormDocument::language_apply() InsetQuotes::quote_language lga = InsetQuotes::EnglishQ; bool redo = false; - switch(fl_get_choice(language_->choice_quotes_language) - 1) { + switch (fl_get_choice(language_->choice_quotes_language) - 1) { case 0: lga = InsetQuotes::EnglishQ; break; @@ -501,14 +579,10 @@ bool FormDocument::language_apply() else params.quotes_times = InsetQuotes::DoubleQ; - Language const * old_language = params.language_info; - params.language = combo_language->getline(); - Languages::iterator lit = languages.find(params.language); - - Language const * new_language; - if (lit != languages.end()) - new_language = &(*lit).second; - else + Language const * old_language = params.language; + Language const * new_language = + languages.getLanguage(combo_language->getline()); + if (!new_language) new_language = default_language; if (old_language != new_language @@ -518,7 +592,7 @@ bool FormDocument::language_apply() if (old_language != new_language) { redo = true; } - params.language_info = new_language; + params.language = new_language; params.inputenc = fl_get_choice_text(language_->choice_inputenc); return redo; @@ -561,34 +635,6 @@ void FormDocument::bullets_apply() } -void FormDocument::cancel() -{ - // this avoids confusion when reopening - BufferParams & param = lv_->buffer()->params; - param.temp_bullets[0] = param.user_defined_bullets[0]; - param.temp_bullets[1] = param.user_defined_bullets[1]; - param.temp_bullets[2] = param.user_defined_bullets[2]; - param.temp_bullets[3] = param.user_defined_bullets[3]; -} - - -void FormDocument::update() -{ - if (!dialog_) - return; - - checkReadOnly(); - - BufferParams const & params = lv_->buffer()->params; - - class_update(params); - paper_update(params); - language_update(params); - options_update(params); - bullets_update(params); -} - - void FormDocument::class_update(BufferParams const & params) { if (!class_) @@ -598,7 +644,7 @@ void FormDocument::class_update(BufferParams const & params) #ifdef USE_CLASS_COMBO combo_doc_class->select_text( - textclasslist.DescOfClass(params.textclass).c_str()); + textclasslist.DescOfClass(params.textclass)); #else fl_set_choice_text(class_->choice_doc_class, textclasslist.DescOfClass(params.textclass).c_str()); @@ -643,7 +689,7 @@ void FormDocument::class_update(BufferParams const & params) } fl_set_button(class_->radio_doc_sides_one, 0); fl_set_button(class_->radio_doc_sides_two, 0); - if (params.sides == 2) + if (params.sides == LyXTextClass::TwoSides) fl_set_button(class_->radio_doc_sides_two, 1); else fl_set_button(class_->radio_doc_sides_one, 1); @@ -689,7 +735,7 @@ void FormDocument::language_update(BufferParams const & params) if (!language_) return; - combo_language->select_text(params.language.c_str()); + combo_language->select_text(params.language->lang()); fl_set_choice_text(language_->choice_inputenc, params.inputenc.c_str()); fl_set_choice(language_->choice_quotes_language, params.quotes_language + 1); fl_set_button(language_->radio_single, 0); @@ -759,15 +805,6 @@ void FormDocument::bullets_update(BufferParams const & params) fl_activate_object(fbullet); fl_set_object_lcol(fbullet, FL_BLACK); } - if (lv_->buffer()->isReadonly()) { - fl_deactivate_object (bullets_->bmtable_bullet_panel); - fl_deactivate_object (bullets_->choice_bullet_size); - fl_deactivate_object (bullets_->input_bullet_latex); - } else { - fl_activate_object (bullets_->bmtable_bullet_panel); - fl_activate_object (bullets_->choice_bullet_size); - fl_activate_object (bullets_->input_bullet_latex); - } fl_set_button(bullets_->radio_bullet_depth_1, 1); fl_set_input(bullets_->input_bullet_latex, @@ -777,118 +814,9 @@ void FormDocument::bullets_update(BufferParams const & params) } -void FormDocument::free() -{ - if (dialog_) { - hide(); - if (class_) { -#ifdef USE_CLASS_COMBO - delete combo_doc_class; -#endif - fl_free_form(class_->form); - delete class_; - class_ = 0; - } - if (paper_) { - fl_free_form(paper_->form); - delete paper_; - paper_ = 0; - } - if (language_) { - delete combo_language; - fl_free_form(language_->form); - delete language_; - language_ = 0; - } - if (options_) { - fl_free_form(options_->form); - delete options_; - options_ = 0; - } - if (bullets_) { - fl_free_form(bullets_->form); - delete bullets_; - bullets_ = 0; - } - fl_free_form(dialog_->form); - delete dialog_; - dialog_ = 0; - } -} - - -int FormDocument::WMHideCB(FL_FORM * form, void *) -{ - // Ensure that the signals (u and h) are disconnected even if the - // window manager is used to close the popup. - FormDocument * pre = static_cast(form->u_vdata); - pre->hide(); - pre->bc_->hide(); - return FL_CANCEL; -} - - -void FormDocument::OKCB(FL_OBJECT * ob, long) -{ - FormDocument * pre = static_cast(ob->form->u_vdata); - pre->apply(); - pre->hide(); - pre->bc_->ok(); -} - - -void FormDocument::ApplyCB(FL_OBJECT * ob, long) -{ - FormDocument * pre = static_cast(ob->form->u_vdata); - pre->apply(); - pre->bc_->apply(); -} - - -void FormDocument::CancelCB(FL_OBJECT * ob, long) -{ - FormDocument * pre = static_cast(ob->form->u_vdata); - pre->cancel(); - pre->hide(); - pre->bc_->cancel(); -} - - -void FormDocument::RestoreCB(FL_OBJECT * ob, long) -{ - FormDocument * pre = static_cast(ob->form->u_vdata); - pre->update(); - pre->bc_->undoAll(); -} - - -void FormDocument::InputCB(FL_OBJECT * ob, long) -{ - FormDocument * pre = static_cast(ob->form->u_vdata); - pre->bc_->valid(pre->CheckDocumentInput(ob,0)); -} - - -void FormDocument::ComboInputCB(int, void * v, Combox * combox) -{ - FormDocument * pre = static_cast(v); - if (combox == pre->combo_doc_class) - pre->CheckChoiceClass(0, 0); - pre->bc_->valid(pre->CheckDocumentInput(0,0)); -} - - -void FormDocument::ChoiceClassCB(FL_OBJECT * ob, long) -{ - FormDocument * pre = static_cast(ob->form->u_vdata); - pre->CheckChoiceClass(ob,0); - pre->bc_->valid(pre->CheckDocumentInput(ob,0)); -} - - void FormDocument::checkReadOnly() { - if (bc_->readOnly(lv_->buffer()->isReadonly())) { + if (bc_.readOnly(lv_->buffer()->isReadonly())) { combo_doc_class->deactivate(); combo_language->deactivate(); fl_set_object_label(dialog_->text_warning, @@ -905,6 +833,7 @@ void FormDocument::checkReadOnly() void FormDocument::checkMarginValues() { +#if 0 int const allEmpty = (!strlen(fl_get_input(paper_->input_top_margin)) && !strlen(fl_get_input(paper_->input_bottom_margin)) && !strlen(fl_get_input(paper_->input_left_margin)) && @@ -916,12 +845,14 @@ void FormDocument::checkMarginValues() !strlen(fl_get_input(paper_->input_custom_height))); if (!allEmpty) fl_set_button(paper_->push_use_geometry, 1); +#endif } + bool FormDocument::CheckDocumentInput(FL_OBJECT * ob, long) { string str; - char val; + int val; bool ok = true; char const * input; @@ -1008,14 +939,6 @@ bool FormDocument::CheckDocumentInput(FL_OBJECT * ob, long) } -void FormDocument::ChoiceBulletSizeCB(FL_OBJECT * ob, long) -{ - FormDocument * pre = static_cast(ob->form->u_vdata); - pre->ChoiceBulletSize(ob,0); - pre->bc_->valid(pre->CheckDocumentInput(ob,0)); -} - - void FormDocument::ChoiceBulletSize(FL_OBJECT * ob, long /*data*/ ) { BufferParams & param = lv_->buffer()->params; @@ -1027,14 +950,6 @@ void FormDocument::ChoiceBulletSize(FL_OBJECT * ob, long /*data*/ ) } -void FormDocument::InputBulletLaTeXCB(FL_OBJECT * ob, long) -{ - FormDocument * pre = static_cast(ob->form->u_vdata); - pre->InputBulletLaTeX(ob,0); - pre->bc_->valid(pre->CheckDocumentInput(ob,0)); -} - - void FormDocument::InputBulletLaTeX(FL_OBJECT *, long) { BufferParams & param = lv_->buffer()->params; @@ -1044,14 +959,7 @@ void FormDocument::InputBulletLaTeX(FL_OBJECT *, long) } -void FormDocument::BulletDepthCB(FL_OBJECT * ob, long) -{ - FormDocument * pre = static_cast(ob->form->u_vdata); - pre->BulletDepth(ob,0); -} - - -void FormDocument::BulletDepth(FL_OBJECT * ob, long data) +void FormDocument::BulletDepth(FL_OBJECT * ob, State cb) { /* Should I do the following: */ /* 1. change to the panel that the current bullet belongs in */ @@ -1063,9 +971,19 @@ void FormDocument::BulletDepth(FL_OBJECT * ob, long data) /* maybe try to support the others later */ BufferParams & param = lv_->buffer()->params; + int data = 0; + if (cb == BULLETDEPTH1 ) + data = 0; + else if (cb == BULLETDEPTH2 ) + data = 1; + else if (cb == BULLETDEPTH3 ) + data = 2; + else if (cb == BULLETDEPTH4 ) + data = 3; + switch (fl_get_button_numb(ob)) { case 3: - // right mouse button resets to default + // right mouse button resets to default param.temp_bullets[data] = ITEMIZE_DEFAULTS[data]; default: current_bullet_depth = data; @@ -1077,18 +995,25 @@ void FormDocument::BulletDepth(FL_OBJECT * ob, long data) } -void FormDocument::BulletPanelCB(FL_OBJECT * ob, long data) -{ - FormDocument * pre = static_cast(ob->form->u_vdata); - pre->BulletPanel(ob,data); -} - - -void FormDocument::BulletPanel(FL_OBJECT * /*ob*/, long data) +void FormDocument::BulletPanel(FL_OBJECT * /*ob*/, State cb) { /* Here we have to change the background pixmap to that selected */ /* by the user. (eg. standard.xpm, psnfss1.xpm etc...) */ + int data = 0; + if (cb == BULLETPANEL1 ) + data = 0; + else if (cb == BULLETPANEL2 ) + data = 1; + else if (cb == BULLETPANEL3 ) + data = 2; + else if (cb == BULLETPANEL4 ) + data = 3; + else if (cb == BULLETPANEL5 ) + data = 4; + else if (cb == BULLETPANEL6 ) + data = 5; + if (data != current_bullet_panel) { fl_freeze_form(bullets_->form); current_bullet_panel = data; @@ -1096,24 +1021,24 @@ void FormDocument::BulletPanel(FL_OBJECT * /*ob*/, long data) /* free the current pixmap */ fl_free_bmtable_pixmap(bullets_->bmtable_bullet_panel); string new_panel; - switch (data) { + switch (cb) { /* display the new one */ - case 0 : + case BULLETPANEL1 : new_panel = "standard"; break; - case 1 : + case BULLETPANEL2 : new_panel = "amssymb"; break; - case 2 : + case BULLETPANEL3 : new_panel = "psnfss1"; break; - case 3 : + case BULLETPANEL4 : new_panel = "psnfss2"; break; - case 4 : + case BULLETPANEL5 : new_panel = "psnfss3"; break; - case 5 : + case BULLETPANEL6 : new_panel = "psnfss4"; break; default : @@ -1125,21 +1050,13 @@ void FormDocument::BulletPanel(FL_OBJECT * /*ob*/, long data) } new_panel += ".xpm"; fl_set_bmtable_pixmap_file(bullets_->bmtable_bullet_panel, 6, 6, - LibFileSearch("images", new_panel.c_str()).c_str()); + LibFileSearch("images", new_panel).c_str()); fl_redraw_object(bullets_->bmtable_bullet_panel); fl_unfreeze_form(bullets_->form); } } -void FormDocument::BulletBMTableCB(FL_OBJECT * ob, long) -{ - FormDocument * pre = static_cast(ob->form->u_vdata); - pre->BulletBMTable(ob,0); - pre->bc_->valid(pre->CheckDocumentInput(ob,0)); -} - - void FormDocument::BulletBMTable(FL_OBJECT * ob, long /*data*/ ) { /* handle the user input by setting the current bullet depth's pixmap */ @@ -1164,15 +1081,13 @@ void FormDocument::CheckChoiceClass(FL_OBJECT * ob, long) ob = class_->choice_doc_class; ProhibitInput(lv_->view()); - int tc; - string tct; #ifdef USE_CLASS_COMBO - tc = combo_doc_class->get() - 1; - tct = combo_doc_class->getline(); + int tc = combo_doc_class->get() - 1; + string tct = combo_doc_class->getline(); #else - tc = fl_get_choice(ob) - 1; - tct = fl_get_choice_text(ob); + int tc = fl_get_choice(ob) - 1; + string tct = fl_get_choice_text(ob); #endif if (textclasslist.Load(tc)) { if (AskQuestion(_("Should I set some parameters to"), tct, @@ -1189,7 +1104,7 @@ void FormDocument::CheckChoiceClass(FL_OBJECT * ob, long) _("Unable to switch to new document class."), _("Reverting to original document class.")); #ifdef USE_CLASS_COMBO - combo_doc_class->select(lv_->buffer()->params.textclass + 1); + combo_doc_class->select(int(lv_->buffer()->params.textclass) + 1); #else fl_set_choice(class_->choice_doc_class, lv_->buffer()->params.textclass + 1);