X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fxforms%2FFormDocument.C;h=b88a029bcd595b2a92c06c4c030935156abb0dc0;hb=06c830f488023d8ff5c22cccee22c4effc8f65c3;hp=2c47d4c7e7d861a5f0bdec2b6b19eee94babf703;hpb=8ffebf9c9f7edc80d415c0586ca78f5c2c7aa7e4;p=lyx.git diff --git a/src/frontends/xforms/FormDocument.C b/src/frontends/xforms/FormDocument.C index 2c47d4c7e7..b88a029bcd 100644 --- a/src/frontends/xforms/FormDocument.C +++ b/src/frontends/xforms/FormDocument.C @@ -3,7 +3,7 @@ * * LyX, The Document Processor * - * Copyright 2000 The LyX Team. + * Copyright 2000-2001 The LyX Team. * * @author Jürgen Vigna * @@ -11,13 +11,14 @@ #include +#include FORMS_H_LOCATION +#include XPM_H_LOCATION + #ifdef __GNUG_ #pragma implementation #endif #include "lyx_gui_misc.h" -#include FORMS_H_LOCATION -#include XPM_H_LOCATION #include "FormDocument.h" #include "form_document.h" @@ -30,6 +31,7 @@ #include "vspace.h" #include "bmtable.h" #include "support/filetools.h" +#include "support/lstrings.h" #include "language.h" #include "LyXView.h" #include "BufferView.h" @@ -37,45 +39,38 @@ #include "Liason.h" #include "CutAndPaste.h" #include "bufferview_funcs.h" +#include "xforms_helpers.h" +#include "debug.h" -#ifdef CXX_WORKING_NAMESPACES using Liason::setMinibuffer; -#endif - -#define USE_CLASS_COMBO 1 +using SigC::slot; FormDocument::FormDocument(LyXView * lv, Dialogs * d) - : 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) + : FormBaseBD(lv, d, _("Document Layout")), fbullet(0) { - // let the popup be shown + // 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->showLayoutDocument.connect(slot(this, &FormDocument::show)); + d->showDocument.connect(slot(this, &FormDocument::show)); } -FormDocument::~FormDocument() +void FormDocument::redraw() { -#ifdef USE_CLASS_COMBO - delete combo_doc_class; -#endif - delete class_; - delete paper_; - delete combo_language; - delete language_; - delete options_; - delete bullets_; - delete dialog_; + 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; + if (dialog_.get()) return dialog_->form; return 0; } @@ -85,21 +80,16 @@ void FormDocument::build() int n; // 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(); + dialog_.reset(build_tabbed_document()); - // Workaround dumb xforms sizing bug - minw_ = form()->w; - minh_ = form()->h; + // 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().setRestore(dialog_->button_restore); // the document paper form - paper_ = build_doc_paper(); + paper_.reset(build_doc_paper()); fl_addto_choice(paper_->choice_papersize2, _(" Default | Custom | USletter | USlegal " "| USexecutive | A3 | A4 | A5 | B3 | B4 | B5 ")); @@ -108,58 +98,52 @@ 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(); + class_.reset(build_doc_class()); FL_OBJECT * obj; -#ifdef USE_CLASS_COMBO // The language is a combo-box and has to be inserted manually obj = class_->choice_doc_class; + fl_deactivate_object(obj); 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, 400); + combo_doc_class.reset(new Combox(FL_COMBOX_DROPLIST)); + 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()); + combo_doc_class->addto(cit->description()); } -#else - fl_clear_choice(class_->choice_doc_class); - for (LyXTextClassList::const_iterator cit = textclasslist.begin(); - cit != textclasslist.end(); ++cit) - { - fl_addto_choice(class_->choice_doc_class,(*cit).description().c_str()); - } -#endif + fl_addto_choice(class_->choice_doc_spacing, _(" Single | OneHalf | Double | Other ")); fl_addto_choice(class_->choice_doc_fontsize, "default|10|11|12"); @@ -170,59 +154,60 @@ 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); - - bc_.addReadOnly (class_->radio_doc_indent); - bc_.addReadOnly (class_->radio_doc_skip); -#ifndef USE_CLASS_COMBO - 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); + 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_->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(); + language_.reset(build_doc_language()); fl_addto_choice(language_->choice_inputenc, - "default|auto|latin1|latin2|latin5" + "default|auto|latin1|latin2|latin5|latin9" "|koi8-r|koi8-u|cp866|cp1251|iso88595"); // The language is a combo-box and has to be inserted manually obj = language_->choice_language; + fl_deactivate_object(obj); fl_addto_form(language_->form); - combo_language = new Combox(FL_COMBOX_DROPLIST); - combo_language->add(obj->x, obj->y, obj->w, obj->h, 400); + combo_language.reset(new Combox(FL_COMBOX_DROPLIST)); + 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"); -#endif - for(Languages::const_iterator cit = languages.begin(); + + for (Languages::const_iterator cit = languages.begin(); cit != languages.end(); ++cit) { - combo_language->addto((*cit).second.lang()); + 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_inputenc); + bc().addReadOnly (language_->choice_quotes_language); + bc().addReadOnly (language_->radio_single); + bc().addReadOnly (language_->radio_double); // the document options form - options_ = build_doc_options(); + options_.reset(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); @@ -232,15 +217,19 @@ void FormDocument::build() for (n=0; tex_graphics[n][0]; ++n) { fl_addto_choice(options_->choice_postscript_driver, tex_graphics[n]); } + fl_addto_choice(options_->choice_citation_format, + _(" Author-year | Numerical ")); bc_.addReadOnly (options_->slider_secnumdepth); bc_.addReadOnly (options_->slider_tocdepth); bc_.addReadOnly (options_->check_use_amsmath); + bc_.addReadOnly (options_->check_use_natbib); + bc_.addReadOnly (options_->choice_citation_format); bc_.addReadOnly (options_->input_float_placement); bc_.addReadOnly (options_->choice_postscript_driver); // the document bullets form - bullets_ = build_doc_bullet(); + bullets_.reset(build_doc_bullet()); fl_addto_choice(bullets_->choice_bullet_size, _(" default | tiny | script | footnote | small |" " normal | large | Large | LARGE | huge | Huge")); @@ -248,9 +237,11 @@ void FormDocument::build() fl_set_input_return(bullets_->input_bullet_latex, FL_RETURN_CHANGED); fl_set_input_maxchars(bullets_->input_bullet_latex, 80); - bc_.addReadOnly (bullets_->bmtable_bullet_panel); - bc_.addReadOnly (bullets_->choice_bullet_size); - bc_.addReadOnly (bullets_->input_bullet_latex); + bc().addReadOnly (bullets_->bmtable_bullet_panel); + bc().addReadOnly (bullets_->choice_bullet_size); + bc().addReadOnly (bullets_->input_bullet_latex); + bc().addReadOnly (bullets_->radio_bullet_depth); + bc().addReadOnly (bullets_->radio_bullet_panel); fl_addto_tabfolder(dialog_->tabbed_folder,_("Document"), class_->form); @@ -264,7 +255,7 @@ void FormDocument::build() bullets_->form); if ((XpmVersion < 4) || (XpmVersion == 4 && XpmRevision < 7)) { lyxerr << _("Your version of libXpm is older than 4.7.\n" - "The `bullet' tab of the document popup " + "The `bullet' tab of the document dialog " "has been disabled") << '\n'; fl_deactivate_object(fbullet); fl_set_object_lcol(fbullet, FL_INACTIVE); @@ -274,7 +265,7 @@ void FormDocument::build() void FormDocument::apply() { - if (!lv_->view()->available() || !dialog_) + if (!lv_->view()->available() || !dialog_.get()) return; bool redo = class_apply(); @@ -305,7 +296,7 @@ void FormDocument::cancel() void FormDocument::update() { - if (!dialog_) + if (!dialog_.get()) return; checkReadOnly(); @@ -324,7 +315,7 @@ bool FormDocument::input( FL_OBJECT * ob, long data ) { State cb = static_cast( data ); - switch( cb ) { + switch (cb) { case CHECKCHOICECLASS: CheckChoiceClass(ob, 0); break; @@ -355,7 +346,7 @@ bool FormDocument::input( FL_OBJECT * ob, long data ) break; } - switch( data ) { + switch (data) { case INPUT: case CHECKCHOICECLASS: case CHOICEBULLETSIZE: @@ -373,9 +364,9 @@ bool FormDocument::input( FL_OBJECT * ob, long data ) void FormDocument::ComboInputCB(int, void * v, Combox * combox) { FormDocument * pre = static_cast(v); - if (combox == pre->combo_doc_class) + if (combox == pre->combo_doc_class.get()) pre->CheckChoiceClass(0, 0); - pre->bc_.valid(pre->CheckDocumentInput(0,0)); + pre->bc().valid(pre->CheckDocumentInput(0,0)); } @@ -394,19 +385,15 @@ bool FormDocument::class_apply() params.fontsize = fl_get_choice_text(class_->choice_doc_fontsize); params.pagestyle = fl_get_choice_text(class_->choice_doc_pagestyle); -#ifdef USE_CLASS_COMBO unsigned int const new_class = combo_doc_class->get() - 1; -#else - unsigned int const new_class = fl_get_choice(class_->choice_doc_class) - 1; -#endif + if (params.textclass != new_class) { // try to load new_class if (textclasslist.Load(new_class)) { // successfully loaded redo = true; setMinibuffer(lv_, _("Converting document to new document class...")); - CutAndPaste cap; - int ret = cap.SwitchLayoutsBetweenClasses( + int ret = CutAndPaste::SwitchLayoutsBetweenClasses( params.textclass, new_class, lv_->buffer()->paragraph); if (ret) { @@ -427,12 +414,7 @@ bool FormDocument::class_apply() WriteAlert(_("Conversion Errors!"), _("Errors loading new document class."), _("Reverting to original document class.")); -#ifdef USE_CLASS_COMBO combo_doc_class->select(int(params.textclass) + 1); -#else - fl_set_choice(class_->choice_doc_class, - params.textclass + 1); -#endif } } BufferParams::PARSEP tmpsep = params.paragraph_separation; @@ -476,7 +458,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); @@ -536,7 +518,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; @@ -571,7 +553,7 @@ bool FormDocument::language_apply() if (old_language != new_language && old_language->RightToLeft() == new_language->RightToLeft() && !lv_->buffer()->isMultiLingual()) - lv_->buffer()->ChangeLanguage(old_language, new_language); + lv_->buffer()->changeLanguage(old_language, new_language); if (old_language != new_language) { redo = true; } @@ -590,6 +572,9 @@ bool FormDocument::options_apply() params.graphicsDriver = fl_get_choice_text(options_->choice_postscript_driver); params.use_amsmath = fl_get_button(options_->check_use_amsmath); + params.use_natbib = fl_get_button(options_->check_use_natbib); + params.use_numerical_citations = + fl_get_choice(options_->choice_citation_format)-1; int tmpchar = int(fl_get_counter_value(options_->slider_secnumdepth)); if (params.secnumdepth != tmpchar) @@ -620,18 +605,13 @@ void FormDocument::bullets_apply() void FormDocument::class_update(BufferParams const & params) { - if (!class_) + if (!class_.get()) return; LyXTextClass const & tclass = textclasslist.TextClass(params.textclass); -#ifdef USE_CLASS_COMBO combo_doc_class->select_text( textclasslist.DescOfClass(params.textclass)); -#else - fl_set_choice_text(class_->choice_doc_class, - textclasslist.DescOfClass(params.textclass).c_str()); -#endif fl_set_choice_text(class_->choice_doc_fonts, params.fonts.c_str()); fl_clear_choice(class_->choice_doc_fontsize); fl_addto_choice(class_->choice_doc_fontsize, "default"); @@ -715,7 +695,7 @@ void FormDocument::class_update(BufferParams const & params) void FormDocument::language_update(BufferParams const & params) { - if (!language_) + if (!language_.get()) return; combo_language->select_text(params.language->lang()); @@ -732,12 +712,15 @@ void FormDocument::language_update(BufferParams const & params) void FormDocument::options_update(BufferParams const & params) { - if (!options_) + if (!options_.get()) return; fl_set_choice_text(options_->choice_postscript_driver, params.graphicsDriver.c_str()); fl_set_button(options_->check_use_amsmath, params.use_amsmath); + fl_set_button(options_->check_use_natbib, params.use_natbib); + fl_set_choice(options_->choice_citation_format, + int(params.use_numerical_citations)+1); fl_set_counter_value(options_->slider_secnumdepth, params.secnumdepth); fl_set_counter_value(options_->slider_tocdepth, params.tocdepth); if (!params.float_placement.empty()) @@ -750,7 +733,7 @@ void FormDocument::options_update(BufferParams const & params) void FormDocument::paper_update(BufferParams const & params) { - if (!paper_) + if (!paper_.get()) return; fl_set_choice(paper_->choice_papersize2, params.papersize2 + 1); @@ -777,17 +760,13 @@ void FormDocument::paper_update(BufferParams const & params) void FormDocument::bullets_update(BufferParams const & params) { - if (!bullets_ || ((XpmVersion<4) || (XpmVersion==4 && XpmRevision<7))) + if (!bullets_.get() || ((XpmVersion<4) || (XpmVersion==4 && XpmRevision<7))) return; - if (lv_->buffer()->isLinuxDoc()) { - fl_deactivate_object(fbullet); - fl_set_object_lcol(fbullet, FL_INACTIVE); - return; - } else { - fl_activate_object(fbullet); - fl_set_object_lcol(fbullet, FL_BLACK); - } + bool const isLinuxDoc = lv_->buffer()->isLinuxDoc(); + setEnabled(fbullet, !isLinuxDoc); + + if (isLinuxDoc) return; fl_set_button(bullets_->radio_bullet_depth_1, 1); fl_set_input(bullets_->input_bullet_latex, @@ -799,7 +778,7 @@ void FormDocument::bullets_update(BufferParams const & params) 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, @@ -816,19 +795,21 @@ void FormDocument::checkReadOnly() void FormDocument::checkMarginValues() { - 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)) && - !strlen(fl_get_input(paper_->input_right_margin)) && - !strlen(fl_get_input(paper_->input_head_height)) && - !strlen(fl_get_input(paper_->input_head_sep)) && - !strlen(fl_get_input(paper_->input_foot_skip)) && - !strlen(fl_get_input(paper_->input_custom_width)) && - !strlen(fl_get_input(paper_->input_custom_height))); - if (!allEmpty) - fl_set_button(paper_->push_use_geometry, 1); + bool const not_empty = + strlen(fl_get_input(paper_->input_top_margin)) || + strlen(fl_get_input(paper_->input_bottom_margin)) || + strlen(fl_get_input(paper_->input_left_margin)) || + strlen(fl_get_input(paper_->input_right_margin)) || + strlen(fl_get_input(paper_->input_head_height)) || + strlen(fl_get_input(paper_->input_head_sep)) || + strlen(fl_get_input(paper_->input_foot_skip)) || + strlen(fl_get_input(paper_->input_custom_width)) || + strlen(fl_get_input(paper_->input_custom_height)); + if (not_empty) + fl_set_button(paper_->push_use_geometry, 1); } + bool FormDocument::CheckDocumentInput(FL_OBJECT * ob, long) { string str; @@ -952,13 +933,13 @@ void FormDocument::BulletDepth(FL_OBJECT * ob, State cb) BufferParams & param = lv_->buffer()->params; int data = 0; - if( cb == BULLETDEPTH1 ) + if (cb == BULLETDEPTH1 ) data = 0; - else if ( cb == BULLETDEPTH2 ) + else if (cb == BULLETDEPTH2 ) data = 1; - else if ( cb == BULLETDEPTH3 ) + else if (cb == BULLETDEPTH3 ) data = 2; - else if ( cb == BULLETDEPTH4 ) + else if (cb == BULLETDEPTH4 ) data = 3; switch (fl_get_button_numb(ob)) { @@ -981,17 +962,17 @@ void FormDocument::BulletPanel(FL_OBJECT * /*ob*/, State cb) /* by the user. (eg. standard.xpm, psnfss1.xpm etc...) */ int data = 0; - if( cb == BULLETPANEL1 ) + if (cb == BULLETPANEL1 ) data = 0; - else if ( cb == BULLETPANEL2 ) + else if (cb == BULLETPANEL2 ) data = 1; - else if ( cb == BULLETPANEL3 ) + else if (cb == BULLETPANEL3 ) data = 2; - else if ( cb == BULLETPANEL4 ) + else if (cb == BULLETPANEL4 ) data = 3; - else if ( cb == BULLETPANEL5 ) + else if (cb == BULLETPANEL5 ) data = 4; - else if ( cb == BULLETPANEL6 ) + else if (cb == BULLETPANEL6 ) data = 5; if (data != current_bullet_panel) { @@ -1060,20 +1041,17 @@ void FormDocument::CheckChoiceClass(FL_OBJECT * ob, long) if (!ob) ob = class_->choice_doc_class; - ProhibitInput(lv_->view()); + lv_->prohibitInput(); -#ifdef USE_CLASS_COMBO - int tc = combo_doc_class->get() - 1; - string tct = combo_doc_class->getline(); -#else - int tc = fl_get_choice(ob) - 1; - string tct = fl_get_choice_text(ob); -#endif + unsigned int tc = combo_doc_class->get() - 1; if (textclasslist.Load(tc)) { - if (AskQuestion(_("Should I set some parameters to"), tct, - _("the defaults of this document class?"))) { - BufferParams & params = lv_->buffer()->params; + // we use a copy of the bufferparams because we do not + // want to modify them yet. + BufferParams params = lv_->buffer()->params; + if (params.textclass != tc + && AskQuestion(_("Should I set some parameters to"), + _("the defaults of this document class?"))) { params.textclass = tc; params.useClassDefaults(); UpdateLayoutDocument(params); @@ -1083,20 +1061,15 @@ void FormDocument::CheckChoiceClass(FL_OBJECT * ob, long) WriteAlert(_("Conversion Errors!"), _("Unable to switch to new document class."), _("Reverting to original document class.")); -#ifdef USE_CLASS_COMBO combo_doc_class->select(int(lv_->buffer()->params.textclass) + 1); -#else - fl_set_choice(class_->choice_doc_class, - lv_->buffer()->params.textclass + 1); -#endif } - AllowInput(lv_->view()); + lv_->allowInput(); } void FormDocument::UpdateLayoutDocument(BufferParams const & params) { - if (!dialog_) + if (!dialog_.get()) return; checkReadOnly();