X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Ffrontends%2Fqt2%2FQDocument.C;h=13dec25629563e26985df0465fb40acabcee6702;hb=bd1f4fa8f231577c5edd181f1048fe41db877ddb;hp=94732b5fef9e6f0bb21e41359e0ad02e8c949ab7;hpb=3995f53261f7a91955a64c29bced051d5884181f;p=lyx.git diff --git a/src/frontends/qt2/QDocument.C b/src/frontends/qt2/QDocument.C index 94732b5fef..13dec25629 100644 --- a/src/frontends/qt2/QDocument.C +++ b/src/frontends/qt2/QDocument.C @@ -2,7 +2,7 @@ * \file QDocument.C * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. - * + * * \author Edwin Leuven * * Full author contact details are available in file CREDITS @@ -10,12 +10,7 @@ #include -#ifdef __GNUG__ -#pragma implementation -#endif - -#include "gettext.h" - +#include "qt_helpers.h" #include "ControlDocument.h" #include "QDocument.h" @@ -26,149 +21,198 @@ #include "helper_funcs.h" // getSecond() #include "insets/insetquotes.h" #include "frnt_lang.h" +#include "lyxrc.h" // defaultUnit #include "tex-strings.h" // tex_graphics -#include "support/lstrings.h" // tostr() +#include "support/tostr.h" #include "support/filetools.h" // LibFileSearch() +#include "support/BoostFormat.h" #include "lyxtextclasslist.h" #include "vspace.h" #include "bufferparams.h" +#include "qt_helpers.h" +#include "floatplacement.h" #include #include #include #include #include -#include +#include #include #include #include "lengthcombo.h" +#include "QBrowseBox.h" + #include +using std::vector; + typedef Qt2CB > base_class; + QDocument::QDocument() - : base_class(_("Document Settings")) + : base_class(_("LyX: Document Settings")) { vector const langs = frnt::getLanguageData(false); lang_ = getSecond(langs); } +namespace { + +char const * encodings[] = { "LaTeX default", "latin1", "latin2", + "latin3", "latin4", "latin5", "latin9", + "koi8-r", "koi8-u", "cp866", "cp1251", + "iso88595", "pt154", 0 +}; + +} + + void QDocument::build_dialog() { dialog_.reset(new QDocumentDialog(this)); - /* biblio */ - dialog_->biblioModule->citeStyleCO->insertItem(_("Author-year")); - dialog_->biblioModule->citeStyleCO->insertItem(_("Numerical")); + // biblio + dialog_->biblioModule->citeStyleCO->insertItem(qt_("Author-year")); + dialog_->biblioModule->citeStyleCO->insertItem(qt_("Numerical")); dialog_->biblioModule->citeStyleCO->setCurrentItem(0); - /* language & quotes */ + // language & quotes vector const langs = frnt::getLanguageData(false); vector::const_iterator lit = langs.begin(); vector::const_iterator lend = langs.end(); for (; lit != lend; ++lit) { dialog_->langModule->languageCO->insertItem( - lit->first.c_str()); + toqstr(lit->first)); } - - dialog_->langModule->quoteStyleCO->insertItem(_("``text''")); - dialog_->langModule->quoteStyleCO->insertItem(_("''text''")); - dialog_->langModule->quoteStyleCO->insertItem(_(",,text``")); - dialog_->langModule->quoteStyleCO->insertItem(_(",,text''")); - dialog_->langModule->quoteStyleCO->insertItem(_("«text»")); - dialog_->langModule->quoteStyleCO->insertItem(_("»text«")); - - /* packages */ - char const * items[] = {"default","auto","latin1","latin2", - "latin3","latin4","latin5","latin9", - "koi8-r","koi8-u","cp866","cp1251", - "iso88595","pt154",0}; - dialog_->packagesModule->encodingCO->insertStrList(items); - - dialog_->packagesModule->lspacingCO->insertItem( - _("Single"),Spacing::Single); - dialog_->packagesModule->lspacingCO->insertItem( - _("OneHalf"),Spacing::Onehalf); - dialog_->packagesModule->lspacingCO->insertItem( - _("Double"),Spacing::Double); - dialog_->packagesModule->lspacingCO->insertItem( - _("Custom"),Spacing::Other); - - int n; - for (n=0; tex_graphics[n][0]; ++n) { - QString enc = tex_graphics[n]; - dialog_->packagesModule->psdriverCO->insertItem(enc); + + int i = 0; + while (encodings[i]) { + dialog_->langModule->encodingCO->insertItem(qt_(encodings[i++])); } - /* paper */ - QStringList papersize_; - papersize_ << _("Default") << _("Custom") << _("US letter") << _("US legal") - << _("US executive") << _("A3") << _("A4") << _("A5") - << _("B3") << _("B4") << _("B5"); - dialog_->paperModule->papersizeCO->insertStringList(papersize_); + dialog_->langModule->quoteStyleCO->insertItem(qt_("``text''")); + dialog_->langModule->quoteStyleCO->insertItem(qt_("''text''")); + dialog_->langModule->quoteStyleCO->insertItem(qt_(",,text``")); + dialog_->langModule->quoteStyleCO->insertItem(qt_(",,text''")); + dialog_->langModule->quoteStyleCO->insertItem(qt_("«text»")); + dialog_->langModule->quoteStyleCO->insertItem(qt_("»text«")); + + // packages + for (int n = 0; tex_graphics[n][0]; ++n) { + QString enc = tex_graphics[n]; + dialog_->latexModule->psdriverCO->insertItem(enc); + } - /* layout */ + // paper + QComboBox * cb = dialog_->pageLayoutModule->papersizeCO; + cb->insertItem(qt_("Default")); + cb->insertItem(qt_("Custom")); + cb->insertItem(qt_("US letter")); + cb->insertItem(qt_("US legal")); + cb->insertItem(qt_("US executive")); + cb->insertItem(qt_("A3")); + cb->insertItem(qt_("A4")); + cb->insertItem(qt_("A5")); + cb->insertItem(qt_("B3")); + cb->insertItem(qt_("B4")); + cb->insertItem(qt_("B5")); + + // layout for (LyXTextClassList::const_iterator cit = textclasslist.begin(); cit != textclasslist.end(); ++cit) { - dialog_->layoutModule->classCO->insertItem(cit->description().c_str()); + if (cit->isTeXClassAvailable()) { + dialog_->latexModule->classCO->insertItem(toqstr(cit->description())); + } else { + string item = +#if USE_BOOST_FORMAT + boost::io::str(boost::format(_("Unavailable: %1$s")) % cit->description()); +#else + _("Unavailable: ") + cit->description(); +#endif + dialog_->latexModule->classCO->insertItem(toqstr(item)); + } } - for (n=0; tex_fonts[n][0]; ++n) { + for (int n = 0; tex_fonts[n][0]; ++n) { QString font = tex_fonts[n]; - dialog_->layoutModule->fontsCO->insertItem(font); + dialog_->textLayoutModule->fontsCO->insertItem(font); } - - dialog_->layoutModule->fontsizeCO->insertItem(_("default")); - dialog_->layoutModule->fontsizeCO->insertItem(_("10")); - dialog_->layoutModule->fontsizeCO->insertItem(_("11")); - dialog_->layoutModule->fontsizeCO->insertItem(_("12")); - - dialog_->layoutModule->skipCO->insertItem(_("Smallskip")); - dialog_->layoutModule->skipCO->insertItem(_("Medskip")); - dialog_->layoutModule->skipCO->insertItem(_("Bigskip")); - dialog_->layoutModule->skipCO->insertItem(_("Length")); - - dialog_->layoutModule->pagestyleCO->insertItem(_("default")); - dialog_->layoutModule->pagestyleCO->insertItem(_("empty")); - dialog_->layoutModule->pagestyleCO->insertItem(_("plain")); - dialog_->layoutModule->pagestyleCO->insertItem(_("headings")); - dialog_->layoutModule->pagestyleCO->insertItem(_("fancy")); - - /* margins */ + + dialog_->textLayoutModule->fontsizeCO->insertItem(qt_("default")); + dialog_->textLayoutModule->fontsizeCO->insertItem(qt_("10")); + dialog_->textLayoutModule->fontsizeCO->insertItem(qt_("11")); + dialog_->textLayoutModule->fontsizeCO->insertItem(qt_("12")); + + dialog_->textLayoutModule->skipCO->insertItem(qt_("SmallSkip")); + dialog_->textLayoutModule->skipCO->insertItem(qt_("MedSkip")); + dialog_->textLayoutModule->skipCO->insertItem(qt_("BigSkip")); + dialog_->textLayoutModule->skipCO->insertItem(qt_("Length")); + + dialog_->pageLayoutModule->pagestyleCO->insertItem(qt_("default")); + dialog_->pageLayoutModule->pagestyleCO->insertItem(qt_("empty")); + dialog_->pageLayoutModule->pagestyleCO->insertItem(qt_("plain")); + dialog_->pageLayoutModule->pagestyleCO->insertItem(qt_("headings")); + dialog_->pageLayoutModule->pagestyleCO->insertItem(qt_("fancy")); + + dialog_->textLayoutModule->lspacingCO->insertItem( + qt_("Single"), Spacing::Single); + dialog_->textLayoutModule->lspacingCO->insertItem( + qt_("OneHalf"), Spacing::Onehalf); + dialog_->textLayoutModule->lspacingCO->insertItem( + qt_("Double"), Spacing::Double); + dialog_->textLayoutModule->lspacingCO->insertItem( + qt_("Custom"), Spacing::Other); + + // margins dialog_->setMargins(0); - string const bmtablefile = LibFileSearch("images", "standard", "xpm"); - QString s = bmtablefile.c_str(); - qWarning("%d",s); - // Manage the restore, ok, apply, restore and cancel/close buttons - bc().setOK(dialog_->okPB); - bc().setApply(dialog_->applyPB); - bc().setCancel(dialog_->cancelPB); - bc().setRestore(dialog_->restorePB); + bcview().setOK(dialog_->okPB); + bcview().setApply(dialog_->applyPB); + bcview().setCancel(dialog_->closePB); + bcview().setRestore(dialog_->restorePB); +} + + +void QDocument::showPreamble() +{ + dialog_->showPreamble(); } void QDocument::apply() { - /* preamble */ - controller().params().preamble = - dialog_->preambleModule->preambleMLE->text().latin1(); - - /* biblio */ - controller().params().use_natbib = + BufferParams & params = controller().params(); + + // preamble + params.preamble = + fromqstr(dialog_->preambleModule->preambleMLE->text()); + + // biblio + params.use_natbib = dialog_->biblioModule->natbibCB->isChecked(); - controller().params().use_numerical_citations = + params.use_numerical_citations = dialog_->biblioModule->citeStyleCO->currentItem(); - /* language & quotes */ + // language & quotes if (dialog_->langModule->singleQuoteRB->isChecked()) - controller().params().quotes_times = InsetQuotes::SingleQ; + params.quotes_times = InsetQuotes::SingleQ; else - controller().params().quotes_times = InsetQuotes::DoubleQ; + params.quotes_times = InsetQuotes::DoubleQ; + + if (dialog_->langModule->defaultencodingCB->isChecked()) { + params.inputenc = "auto"; + } else { + int i = dialog_->langModule->encodingCO->currentItem(); + if (i == 0) { + params.inputenc = "default"; + } else { + params.inputenc = encodings[i]; + } + } - InsetQuotes::quote_language lga = InsetQuotes::EnglishQ; switch (dialog_->langModule->quoteStyleCO->currentItem()) { case 0: @@ -190,179 +234,160 @@ void QDocument::apply() lga = InsetQuotes::DanishQ; break; } - controller().params().quotes_language = lga; + params.quotes_language = lga; int const pos = dialog_->langModule->languageCO->currentItem(); - controller().params().language = languages.getLanguage(lang_[pos]); + params.language = languages.getLanguage(lang_[pos]); + + // numbering + params.tocdepth = dialog_->numberingModule->tocSL->value(); + params.secnumdepth = dialog_->numberingModule->depthSL->value(); + + // bullets + params.user_defined_bullets[0] = dialog_->bulletsModule->getBullet(0); + params.user_defined_bullets[1] = dialog_->bulletsModule->getBullet(1); + params.user_defined_bullets[2] = dialog_->bulletsModule->getBullet(2); + params.user_defined_bullets[3] = dialog_->bulletsModule->getBullet(3); + + // packages + params.graphicsDriver = + fromqstr(dialog_->latexModule->psdriverCO->currentText()); + + if (dialog_->mathsModule->amsautoCB->isChecked()) { + params.use_amsmath = BufferParams::AMS_AUTO; + } else { + if (dialog_->mathsModule->amsCB->isChecked()) + params.use_amsmath = BufferParams::AMS_ON; + else + params.use_amsmath = BufferParams::AMS_OFF; + } + + // layout + params.textclass = + dialog_->latexModule->classCO->currentItem(); - /* numbering */ - controller().params().secnumdepth = - dialog_->numberingModule->tocDepthSB->value(); - controller().params().tocdepth = - dialog_->numberingModule->sectionnrDepthSB->value(); + params.fonts = + fromqstr(dialog_->textLayoutModule->fontsCO->currentText()); - /* packages */ - switch (dialog_->packagesModule->lspacingCO->currentItem()) { + params.fontsize = + fromqstr(dialog_->textLayoutModule->fontsizeCO->currentText()); + + params.pagestyle = + fromqstr(dialog_->pageLayoutModule->pagestyleCO->currentText()); + + switch (dialog_->textLayoutModule->lspacingCO->currentItem()) { case 0: - controller().params().spacing.set(Spacing::Single); + params.spacing.set(Spacing::Single); break; case 1: - controller().params().spacing.set(Spacing::Onehalf); + params.spacing.set(Spacing::Onehalf); break; case 2: - controller().params().spacing.set(Spacing::Double); + params.spacing.set(Spacing::Double); break; case 3: - controller().params().spacing.set(Spacing::Other, - dialog_->packagesModule-> + params.spacing.set(Spacing::Other, + dialog_->textLayoutModule-> lspacingLE->text().toFloat() ); break; } - - controller().params().graphicsDriver = - dialog_->packagesModule->psdriverCO->currentText().latin1(); - - controller().params().use_amsmath = - dialog_->packagesModule->amsCB->isChecked(); - - controller().params().inputenc = - dialog_->packagesModule->encodingCO->currentText().latin1(); - - /* layout */ - controller().params().textclass = - dialog_->layoutModule->classCO->currentItem(); - - //bool succes = controller().classApply(); - - controller().params().fonts = - dialog_->layoutModule->fontsCO->currentText().latin1(); - - controller().params().fontsize = - dialog_->layoutModule->fontsizeCO->currentText().latin1(); - - controller().params().pagestyle = - dialog_->layoutModule->pagestyleCO->currentText().latin1(); - - if (dialog_->layoutModule->indentRB->isChecked()) - controller().params().paragraph_separation = BufferParams::PARSEP_INDENT; + + if (dialog_->textLayoutModule->twoColumnCB->isChecked()) + params.columns = 2; else - controller().params().paragraph_separation = BufferParams::PARSEP_SKIP; + params.columns = 1; - switch (dialog_->layoutModule->skipCO->currentItem()) { + if (dialog_->textLayoutModule->indentRB->isChecked()) + params.paragraph_separation = BufferParams::PARSEP_INDENT; + else + params.paragraph_separation = BufferParams::PARSEP_SKIP; + + switch (dialog_->textLayoutModule->skipCO->currentItem()) { case 0: - controller().params().setDefSkip(VSpace(VSpace::SMALLSKIP)); + params.setDefSkip(VSpace(VSpace::SMALLSKIP)); break; case 1: - controller().params().setDefSkip(VSpace(VSpace::MEDSKIP)); + params.setDefSkip(VSpace(VSpace::MEDSKIP)); break; case 2: - controller().params().setDefSkip(VSpace(VSpace::BIGSKIP)); + params.setDefSkip(VSpace(VSpace::BIGSKIP)); break; case 3: { LyXLength::UNIT unit = - dialog_->layoutModule->skipLengthCO-> + dialog_->textLayoutModule->skipLengthCO-> currentLengthItem(); double length = - dialog_->layoutModule->skipLE->text().toDouble(); + dialog_->textLayoutModule->skipLE->text().toDouble(); VSpace vs = VSpace(LyXGlueLength(LyXLength(length,unit))); - controller().params().setDefSkip(vs); + params.setDefSkip(vs); break; } default: // DocumentDefskipCB assures that this never happens - controller().params().setDefSkip(VSpace(VSpace::MEDSKIP)); + // so Assert then !!! - jbl + params.setDefSkip(VSpace(VSpace::MEDSKIP)); break; } - controller().params().options = - dialog_->layoutModule->optionsLE->text().latin1(); - - controller().params().float_placement = - dialog_->layoutModule->floatPlacementLE->text().latin1(); - - /* paper */ - controller().params().papersize2 = - dialog_->paperModule->papersizeCO->currentItem(); - - controller().params().paperwidth = - LyXLength(dialog_->paperModule->paperwidthLE->text().toDouble(), - dialog_->paperModule->paperwidthUnitCO->currentLengthItem() - ).asString(); - - controller().params().paperheight = - LyXLength(dialog_->paperModule->paperheightLE->text().toDouble(), - dialog_->paperModule->paperheightUnitCO->currentLengthItem() - ).asString(); - - if (dialog_->paperModule->twoColumnCB->isChecked()) - controller().params().columns = 2; - else - controller().params().columns = 1; - - if (dialog_->paperModule->facingPagesCB->isChecked()) - controller().params().sides = LyXTextClass::TwoSides; + params.options = + fromqstr(dialog_->latexModule->optionsLE->text()); + + params.float_placement = dialog_->floatModule->get(); + + // paper + params.papersize2 = BufferParams::VMARGIN_PAPER_TYPE( + dialog_->pageLayoutModule->papersizeCO->currentItem()); + + params.paperwidth = widgetsToLength(dialog_->pageLayoutModule->paperwidthLE, + dialog_->pageLayoutModule->paperwidthUnitCO); + + params.paperheight = widgetsToLength(dialog_->pageLayoutModule->paperheightLE, + dialog_->pageLayoutModule->paperheightUnitCO); + + if (dialog_->pageLayoutModule->facingPagesCB->isChecked()) + params.sides = LyXTextClass::TwoSides; else - controller().params().sides = LyXTextClass::OneSide; - - if (dialog_->paperModule->landscapeRB->isChecked()) - controller().params().orientation = BufferParams::ORIENTATION_LANDSCAPE; + params.sides = LyXTextClass::OneSide; + + if (dialog_->pageLayoutModule->landscapeRB->isChecked()) + params.orientation = BufferParams::ORIENTATION_LANDSCAPE; else - controller().params().orientation = BufferParams::ORIENTATION_PORTRAIT; + params.orientation = BufferParams::ORIENTATION_PORTRAIT; - /* margins */ - controller().params().use_geometry = - dialog_->marginsModule->marginCO->currentItem()==1; + // margins + params.use_geometry = + (dialog_->marginsModule->marginCO->currentItem() == 1); int margin = dialog_->marginsModule->marginCO->currentItem(); - if (margin>0) { + if (margin > 0) { margin = margin - 1; } - controller().params().paperpackage = char(margin); - - controller().params().leftmargin = - LyXLength(dialog_->marginsModule->innerLE->text().toDouble(), - dialog_->marginsModule->innerUnit->currentLengthItem() - ).asString(); - - controller().params().topmargin = - LyXLength(dialog_->marginsModule->topLE->text().toDouble(), - dialog_->marginsModule->topUnit->currentLengthItem() - ).asString(); + params.paperpackage = BufferParams::PAPER_PACKAGES(margin); + // set params.papersize from params.papersize2 + // and params.paperpackage + params.setPaperStuff(); - controller().params().rightmargin = - LyXLength(dialog_->marginsModule->outerLE->text().toDouble(), - dialog_->marginsModule->outerUnit->currentLengthItem() - ).asString(); + MarginsModuleBase const * m(dialog_->marginsModule); + params.leftmargin = widgetsToLength(m->innerLE, m->innerUnit); - controller().params().bottommargin = - LyXLength(dialog_->marginsModule->bottomLE->text().toDouble(), - dialog_->marginsModule->bottomUnit->currentLengthItem() - ).asString(); + params.topmargin = widgetsToLength(m->topLE, m->topUnit); + params.rightmargin = widgetsToLength(m->outerLE, m->outerUnit); - controller().params().headheight = - LyXLength(dialog_->marginsModule->headheightLE->text().toDouble(), - dialog_->marginsModule->headheightUnit->currentLengthItem() - ).asString(); + params.bottommargin = widgetsToLength(m->bottomLE, m->bottomUnit); + params.headheight = widgetsToLength(m->headheightLE, m->headheightUnit); - controller().params().headsep = - LyXLength(dialog_->marginsModule->headsepLE->text().toDouble(), - dialog_->marginsModule->headsepUnit->currentLengthItem() - ).asString(); - - - controller().params().footskip = - LyXLength(dialog_->marginsModule->footskipLE->text().toDouble(), - dialog_->marginsModule->footskipUnit->currentLengthItem() - ).asString(); + params.headsep = widgetsToLength(m->headsepLE, m->headsepUnit); + params.footskip = widgetsToLength(m->footskipLE, m->footskipUnit); } + namespace { /** Return the position of val in the vector if found. @@ -381,109 +406,140 @@ findPos(std::vector const & vec, A const & val) } // namespace anom + void QDocument::update_contents() { if (!dialog_.get()) return; - /* preamble */ - QString preamble = controller().params().preamble.c_str(); + BufferParams const & params = controller().params(); + + // set the default unit + // FIXME: move to controller + LyXLength::UNIT defaultUnit = LyXLength::CM; + switch (lyxrc.default_papersize) { + case BufferParams::PAPER_DEFAULT: break; + + case BufferParams::PAPER_USLETTER: + case BufferParams::PAPER_LEGALPAPER: + case BufferParams::PAPER_EXECUTIVEPAPER: + defaultUnit = LyXLength::IN; + break; + + case BufferParams::PAPER_A3PAPER: + case BufferParams::PAPER_A4PAPER: + case BufferParams::PAPER_A5PAPER: + case BufferParams::PAPER_B5PAPER: + defaultUnit = LyXLength::CM; + break; + } + + // preamble + QString preamble = toqstr(params.preamble); dialog_->preambleModule->preambleMLE->setText(preamble); - /* biblio */ + // biblio dialog_->biblioModule->natbibCB->setChecked( - controller().params().use_natbib); + params.use_natbib); dialog_->biblioModule->citeStyleCO->setCurrentItem( - controller().params().use_numerical_citations ? 1 : 0); - - /* language & quotes */ + params.use_numerical_citations ? 1 : 0); + + // language & quotes dialog_->langModule->singleQuoteRB->setChecked( - controller().params().quotes_times == InsetQuotes::SingleQ); + params.quotes_times == InsetQuotes::SingleQ); dialog_->langModule->doubleQuoteRB->setChecked( - controller().params().quotes_times == InsetQuotes::DoubleQ); - + params.quotes_times == InsetQuotes::DoubleQ); + int const pos = int(findPos(lang_, - controller().params().language->lang())); + params.language->lang())); dialog_->langModule->languageCO->setCurrentItem(pos); dialog_->langModule->quoteStyleCO->setCurrentItem( - controller().params().quotes_language); - - /* numbering */ - dialog_->numberingModule->tocDepthSB->setValue( - controller().params().secnumdepth); - dialog_->numberingModule->sectionnrDepthSB->setValue( - controller().params().tocdepth); - - /* packages */ - QStringList enc; - enc << "default" << "auto" << "latin1" << "latin2" << "latin3" << - "latin4" << "latin5" << "latin9" << "koi8-r" << "koi8-u" << - "cp866" << "cp1251" << "iso88595" << "pt154"; - int pos2 = 0; - for (QStringList::Iterator it = enc.begin(); - it!=enc.end(); ++it) { - if (*it==controller().params().inputenc.c_str()) { - dialog_->packagesModule->encodingCO->setCurrentItem(pos2); + params.quotes_language); + + dialog_->langModule->defaultencodingCB->setChecked(true); + + if (params.inputenc != "auto") { + dialog_->langModule->defaultencodingCB->setChecked(false); + if (params.inputenc == "default") { + dialog_->langModule->encodingCO->setCurrentItem(0); + } else { + int i = 0; + while (encodings[i]) { + if (encodings[i] == params.inputenc) + dialog_->langModule->encodingCO->setCurrentItem(i); + ++i; + } } - ++pos2; } - - - QString text = controller().params().graphicsDriver.c_str(); - int nitem = dialog_->packagesModule->psdriverCO->count(); - for (int n=0; nnumberingModule->tocSL->setValue(params.tocdepth); + dialog_->numberingModule->depthSL->setValue(params.secnumdepth); + dialog_->updateNumbering(); + + // bullets + dialog_->bulletsModule->setBullet(0,params.user_defined_bullets[0]); + dialog_->bulletsModule->setBullet(1,params.user_defined_bullets[1]); + dialog_->bulletsModule->setBullet(2,params.user_defined_bullets[2]); + dialog_->bulletsModule->setBullet(3,params.user_defined_bullets[3]); + + // packages + QString text = toqstr(params.graphicsDriver); + int nitem = dialog_->latexModule->psdriverCO->count(); + for (int n = 0; n < nitem ; ++n) { QString enc = tex_graphics[n]; - if (enc==text) { - dialog_->packagesModule->psdriverCO->setCurrentItem(n); + if (enc == text) { + dialog_->latexModule->psdriverCO->setCurrentItem(n); } } - - - dialog_->packagesModule->amsCB->setChecked( - controller().params().use_amsmath); - - dialog_->packagesModule->lspacingCO-> - setCurrentItem(controller().params().spacing.getSpace()); - if (controller().params().spacing.getSpace()== - Spacing::Other) { - dialog_->packagesModule->lspacingLE->setText( - tostr(controller().params().spacing.getValue()).c_str()); - dialog_->setLSpacing(3); - } - /* layout */ - for (int n = 0; nlayoutModule->classCO->count(); ++n) { - if (dialog_->layoutModule->classCO->text(n)== - controller().textClass().description().c_str()) { - dialog_->layoutModule->classCO->setCurrentItem(n); - break; - } + + dialog_->mathsModule->amsCB->setChecked( + params.use_amsmath == BufferParams::AMS_ON); + dialog_->mathsModule->amsautoCB->setChecked( + params.use_amsmath == BufferParams::AMS_AUTO); + + switch (params.spacing.getSpace()) { + case Spacing::Other: nitem = 3; break; + case Spacing::Double: nitem = 2; break; + case Spacing::Onehalf: nitem = 1; break; + case Spacing::Default: case Spacing::Single: nitem = 0; break; } + + // layout + dialog_->latexModule->classCO->setCurrentItem(params.textclass); + dialog_->updateFontsize(controller().textClass().opt_fontsize(), - controller().params().fontsize); - + params.fontsize); + dialog_->updatePagestyle(controller().textClass().opt_pagestyle(), - controller().params().pagestyle); - - - for (int n=0; tex_fonts[n][0]; ++n) { - if (tex_fonts[n]==controller().params().fonts) { - dialog_->layoutModule->fontsCO->setCurrentItem(n); + params.pagestyle); + + for (int n = 0; tex_fonts[n][0]; ++n) { + if (tex_fonts[n] == params.fonts) { + dialog_->textLayoutModule->fontsCO->setCurrentItem(n); break; } } - if (controller().params().paragraph_separation + dialog_->textLayoutModule->lspacingCO->setCurrentItem(nitem); + if (params.spacing.getSpace() == Spacing::Other) { + dialog_->textLayoutModule->lspacingLE->setText( + toqstr(tostr(params.spacing.getValue()))); + dialog_->setLSpacing(3); + } + + if (params.paragraph_separation == BufferParams::PARSEP_INDENT) { - dialog_->layoutModule->indentRB->setChecked(true); + dialog_->textLayoutModule->indentRB->setChecked(true); } else { - dialog_->layoutModule->skipRB->setChecked(true); + dialog_->textLayoutModule->skipRB->setChecked(true); } - + int skip = 0; - switch (controller().params().getDefSkip().kind()) { + switch (params.getDefSkip().kind()) { case VSpace::SMALLSKIP: skip = 0; break; @@ -496,105 +552,101 @@ void QDocument::update_contents() case VSpace::LENGTH: { skip = 3; - string const length = controller().params().getDefSkip().asLyXCommand(); - dialog_->layoutModule->skipLengthCO->setCurrentItem(LyXLength(length).unit()); - dialog_->layoutModule->skipLE->setText(tostr(LyXLength(length).value()).c_str()); + string const length = params.getDefSkip().asLyXCommand(); + dialog_->textLayoutModule->skipLengthCO->setCurrentItem(LyXLength(length).unit()); + dialog_->textLayoutModule->skipLE->setText(toqstr(tostr(LyXLength(length).value()))); break; } default: skip = 0; break; } - dialog_->layoutModule->skipCO->setCurrentItem(skip); + dialog_->textLayoutModule->skipCO->setCurrentItem(skip); dialog_->setSkip(skip); - if (!controller().params().options.empty()) { - dialog_->layoutModule->optionsLE->setText( - controller().params().options.c_str()); + dialog_->textLayoutModule->twoColumnCB->setChecked( + params.columns == 2); + + if (!params.options.empty()) { + dialog_->latexModule->optionsLE->setText( + toqstr(params.options)); } else { - dialog_->layoutModule->optionsLE->setText(""); + dialog_->latexModule->optionsLE->setText(""); } - - /* paper */ - int const psize = controller().params().papersize2; - dialog_->paperModule->papersizeCO->setCurrentItem(psize); + + dialog_->floatModule->set(params.float_placement); + + // paper + int const psize = params.papersize2; + dialog_->pageLayoutModule->papersizeCO->setCurrentItem(psize); dialog_->setMargins(psize); dialog_->setCustomPapersize(psize); bool const landscape = - controller().params().orientation == BufferParams::ORIENTATION_LANDSCAPE; - dialog_->paperModule->landscapeRB->setChecked(landscape); - dialog_->paperModule->portraitRB->setChecked(!landscape); - - dialog_->paperModule->facingPagesCB->setChecked( - controller().params().sides == LyXTextClass::TwoSides); - - dialog_->paperModule->twoColumnCB->setChecked( - controller().params().columns == 2); - - dialog_->paperModule->paperwidthUnitCO->setCurrentItem( - LyXLength(controller().params().paperwidth).unit()); - - dialog_->paperModule->paperwidthLE->setText( - tostr(LyXLength(controller().params().paperwidth).value()).c_str()); - - dialog_->paperModule->paperheightUnitCO->setCurrentItem( - LyXLength(controller().params().paperheight).unit()); - - dialog_->paperModule->paperheightLE->setText( - tostr(LyXLength(controller().params().paperheight).value()).c_str()); - - /* margins */ - int item = controller().params().paperpackage; - if (controller().params().use_geometry) { + params.orientation == BufferParams::ORIENTATION_LANDSCAPE; + dialog_->pageLayoutModule->landscapeRB->setChecked(landscape); + dialog_->pageLayoutModule->portraitRB->setChecked(!landscape); + + dialog_->pageLayoutModule->facingPagesCB->setChecked( + params.sides == LyXTextClass::TwoSides); + + + + lengthToWidgets(dialog_->pageLayoutModule->paperwidthLE, + dialog_->pageLayoutModule->paperwidthUnitCO, params.paperwidth, defaultUnit); + + lengthToWidgets(dialog_->pageLayoutModule->paperheightLE, + dialog_->pageLayoutModule->paperheightUnitCO, params.paperheight, defaultUnit); + + // margins + + MarginsModuleBase * m(dialog_->marginsModule); + + int item = params.paperpackage; + if (params.use_geometry) { item = 1; - } else if (item>0) { + } else if (item > 0) { item = item + 1; } - dialog_->marginsModule->marginCO->setCurrentItem(item); + m->marginCO->setCurrentItem(item); dialog_->setCustomMargins(item); - dialog_->marginsModule->topUnit->setCurrentItem( - LyXLength(controller().params().topmargin).unit()); - dialog_->marginsModule->topLE->setText( - tostr(LyXLength(controller().params().topmargin).value()).c_str()); - - dialog_->marginsModule->bottomUnit->setCurrentItem( - LyXLength(controller().params().bottommargin).unit()); - dialog_->marginsModule->bottomLE->setText( - tostr(LyXLength(controller().params().bottommargin).value()).c_str()); - - dialog_->marginsModule->innerUnit->setCurrentItem( - LyXLength(controller().params().leftmargin).unit()); - dialog_->marginsModule->innerLE->setText( - tostr(LyXLength(controller().params().leftmargin).value()).c_str()); - - dialog_->marginsModule->outerUnit->setCurrentItem( - LyXLength(controller().params().rightmargin).unit()); - dialog_->marginsModule->outerLE->setText( - tostr(LyXLength(controller().params().rightmargin).value()).c_str()); - - dialog_->marginsModule->headheightUnit->setCurrentItem( - LyXLength(controller().params().headheight).unit()); - dialog_->marginsModule->headheightLE->setText( - tostr(LyXLength(controller().params().headheight).value()).c_str()); - - dialog_->marginsModule->headsepUnit->setCurrentItem( - LyXLength(controller().params().headsep).unit()); - dialog_->marginsModule->headsepLE->setText( - tostr(LyXLength(controller().params().headsep).value()).c_str()); - - dialog_->marginsModule->footskipUnit->setCurrentItem( - LyXLength(controller().params().footskip).unit()); - dialog_->marginsModule->footskipLE->setText( - tostr(LyXLength(controller().params().footskip).value()).c_str()); - - -} + lengthToWidgets(m->topLE, m->topUnit, + params.topmargin, defaultUnit); + + lengthToWidgets(m->bottomLE, m->bottomUnit, + params.bottommargin, defaultUnit); + + lengthToWidgets(m->innerLE, m->innerUnit, + params.leftmargin, defaultUnit); + + lengthToWidgets(m->outerLE, m->outerUnit, + params.rightmargin, defaultUnit); + lengthToWidgets(m->headheightLE, m->headheightUnit, + params.headheight, defaultUnit); + lengthToWidgets(m->headsepLE, m->headsepUnit, + params.headsep, defaultUnit); + + lengthToWidgets(m->footskipLE, m->footskipUnit, + params.footskip, defaultUnit); +} +void QDocument::saveDocDefault() +{ + // we have to apply the params first + apply(); + controller().saveAsDefault(); +} +void QDocument::useClassDefaults() +{ + BufferParams & params = controller().params(); + params.textclass = dialog_->latexModule->classCO->currentItem(); + params.useClassDefaults(); + update_contents(); +}