]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt2/QDocumentDialog.C
better selection and scrolling behaviour
[lyx.git] / src / frontends / qt2 / QDocumentDialog.C
index 6c0d258cf72e495cb53f3dd74e8474a42c4b786f..37c09d4d948c168f258dcb645a07e77dca8fe696 100644 (file)
@@ -56,7 +56,7 @@ QDocumentDialog::QDocumentDialog(QDocument * form)
                form, SLOT(slotOK()));
        connect(applyPB, SIGNAL(clicked()),
                form, SLOT(slotApply()));
-       connect(cancelPB, SIGNAL(clicked()),
+       connect(closePB, SIGNAL(clicked()),
                form, SLOT(slotClose()));
        connect(restorePB, SIGNAL(clicked()),
                form, SLOT(slotRestore()));
@@ -72,7 +72,7 @@ QDocumentDialog::QDocumentDialog(QDocument * form)
        moduleLB->insertItem(_("Bibliography"), BIBLIOGRAPHY);
        moduleLB->insertItem(_("Preamble"), PREAMBLE);
        moduleLB->setCurrentItem(LAYOUT);
-       moduleLB->setMinimumSize(moduleLB->sizeHint()); 
+       moduleLB->setMinimumSize(moduleLB->sizeHint());
 
        layoutModule = new ClassModuleBase(this);
        paperModule = new PaperModuleBase(this);
@@ -84,18 +84,18 @@ QDocumentDialog::QDocumentDialog(QDocument * form)
        biblioModule = new BiblioModuleBase(this);
        preambleModule = new PreambleModuleBase(this);
 
-       moduleStack->addWidget(layoutModule,LAYOUT);
-       moduleStack->addWidget(paperModule,PAPER);
-       moduleStack->addWidget(marginsModule,MARGINS);
-       moduleStack->addWidget(packagesModule,PACKAGES);
-       moduleStack->addWidget(langModule,LANGUAGE);
-       moduleStack->addWidget(bulletsModule,BULLETS);
-       moduleStack->addWidget(numberingModule,NUMBERING);
-       moduleStack->addWidget(biblioModule,BIBLIOGRAPHY);
-       moduleStack->addWidget(preambleModule,PREAMBLE);
+       moduleStack->addWidget(layoutModule, LAYOUT);
+       moduleStack->addWidget(paperModule, PAPER);
+       moduleStack->addWidget(marginsModule, MARGINS);
+       moduleStack->addWidget(packagesModule, PACKAGES);
+       moduleStack->addWidget(langModule, LANGUAGE);
+       moduleStack->addWidget(bulletsModule, BULLETS);
+       moduleStack->addWidget(numberingModule, NUMBERING);
+       moduleStack->addWidget(biblioModule, BIBLIOGRAPHY);
+       moduleStack->addWidget(preambleModule, PREAMBLE);
 
        moduleStack->raiseWidget(LAYOUT);
-       
+
 
        // take care of title
        QFont f = titleL->font();
@@ -103,20 +103,15 @@ QDocumentDialog::QDocumentDialog(QDocument * form)
        titleL->setFont(f);
        setTitle(LAYOUT);
 
-       // FIXME: Edwin, please change this by making each module have
-       // a change_adaptor(), and connecting inside designer; then
-       // connect each module's change_adaptor to  the main form's
-       // one here.
-       // preamble 
+       // preamble
        connect(preambleModule->preambleMLE, SIGNAL(textChanged()),
                 this , SLOT(change_adaptor()));
-       // biblio 
+       // biblio
        connect(biblioModule->natbibCB, SIGNAL(toggled(bool)),
                 this , SLOT(change_adaptor()));
        connect(biblioModule->citeStyleCO, SIGNAL(activated(int)),
                 this , SLOT(change_adaptor()));
-       // language & quote 
+       // language & quote
        connect(langModule->singleQuoteRB, SIGNAL(toggled(bool)),
                 this , SLOT(change_adaptor()));
        connect(langModule->doubleQuoteRB, SIGNAL(toggled(bool)),
@@ -125,14 +120,14 @@ QDocumentDialog::QDocumentDialog(QDocument * form)
                 this , SLOT(change_adaptor()));
        connect(langModule->quoteStyleCO, SIGNAL(activated(int)),
                 this , SLOT(change_adaptor()));
-       // numbering 
+       // numbering
        connect(numberingModule->sectionnrDepthSB,
                 SIGNAL(valueChanged(int)),
                 this , SLOT(change_adaptor()));
        connect(numberingModule->tocDepthSB,
                 SIGNAL(valueChanged(int)),
                 this , SLOT(change_adaptor()));
-       // packages 
+       // packages
        connect(packagesModule->lspacingCO, SIGNAL(activated(int)),
                 this , SLOT(change_adaptor()));
        connect(packagesModule->lspacingCO, SIGNAL(activated(int)),
@@ -146,7 +141,7 @@ QDocumentDialog::QDocumentDialog(QDocument * form)
                 this , SLOT(change_adaptor()));
        connect(packagesModule->psdriverCO, SIGNAL(activated(int)),
                 this , SLOT(change_adaptor()));
-       // layout 
+       // layout
        connect(layoutModule->classCO, SIGNAL(activated(int)),
                 this , SLOT(change_adaptor()));
        connect(layoutModule->optionsLE,
@@ -180,7 +175,7 @@ QDocumentDialog::QDocumentDialog(QDocument * form)
        connect(layoutModule->skipRB, SIGNAL(toggled(bool)),
                 this , SLOT(enableSkip(bool)));
 
-       // margins 
+       // margins
        connect(marginsModule->marginCO, SIGNAL(activated(int)),
                 this , SLOT(setCustomMargins(int)));
 
@@ -215,7 +210,7 @@ QDocumentDialog::QDocumentDialog(QDocument * form)
        connect(marginsModule->footskipUnit, SIGNAL(activated(int)),
                 this , SLOT(change_adaptor()));
 
-       // paper 
+       // paper
        connect(paperModule->papersizeCO, SIGNAL(activated(int)),
                 this , SLOT(setMargins(int)));
        connect(paperModule->papersizeCO, SIGNAL(activated(int)),
@@ -242,7 +237,7 @@ QDocumentDialog::QDocumentDialog(QDocument * form)
        connect(paperModule->facingPagesCB, SIGNAL(toggled(bool)),
                 this , SLOT(change_adaptor()));
 
-       // bullets 
+       // bullets
        connect(bulletsModule->bullet1LE, SIGNAL(textChanged(const QString&)),
                 this , SLOT(change_adaptor()));
        connect(bulletsModule->bulletsize1CO, SIGNAL(activated(int)),
@@ -353,17 +348,17 @@ void QDocumentDialog::enableSkip(bool skip)
 
 void QDocumentDialog::setMargins(int papersize)
 {
-       QStringList a4only;
-       QStringList normal;
-       a4only << _("Small Margins") << _("Very small Margins")
-              << _("Very wide Margins ");
-       normal << _("Default") << _("Custom");
+       char const * a4only[] = {
+               _("Small Margins"), _("Very small Margins"),
+               _("Very wide Margins "), 0 };
+       char const * normal[] = {
+               _("Default"), _("Custom"), 0 };
 
        int olditem = marginsModule->marginCO->currentItem();
        marginsModule->marginCO->clear();
-       marginsModule->marginCO->insertStringList(normal);
+       marginsModule->marginCO->insertStrList(normal);
        if (papersize==6) {
-               marginsModule->marginCO->insertStringList(a4only);
+               marginsModule->marginCO->insertStrList(a4only);
        }
        marginsModule->marginCO->setCurrentItem(olditem);
        setCustomMargins(olditem);
@@ -457,23 +452,31 @@ void QDocumentDialog::updatePagestyle(string const & items, string const & sel)
 
 void QDocumentDialog::classChanged()
 {
-       unsigned int tc = layoutModule->classCO->currentItem();
+       ControlDocument & cntrl = form_->controller();
+       BufferParams & params = cntrl.params();
 
-       BufferParams & params = form_->controller().params();
-       params.textclass = layoutModule->classCO->currentItem();
+       lyx::textclass_type const tc = layoutModule->classCO->currentItem();
 
-       if (lyxrc.auto_reset_options) {
-               params.textclass = tc;
-               params.useClassDefaults();
-               form_->update_contents();
-       } else {
-               // update the params which are needed in any case
-               // (fontsizes, pagestyle)
+       if (form_->controller().loadTextclass(tc)) {
                params.textclass = tc;
-               updateFontsize(form_->controller().textClass().opt_fontsize(),
-                       params.fontsize);
 
-               updatePagestyle(form_->controller().textClass().opt_pagestyle(),
-                       params.pagestyle);
+               if (lyxrc.auto_reset_options) {
+                       params.useClassDefaults();
+                       form_->update_contents();
+               } else {
+                       updateFontsize(cntrl.textClass().opt_fontsize(),
+                                      params.fontsize);
+
+                       updatePagestyle(cntrl.textClass().opt_pagestyle(),
+                                       params.pagestyle);
+               }
+       } else {
+               for (int n = 0; n<layoutModule->classCO->count(); ++n) {
+                       if (layoutModule->classCO->text(n) ==
+                           cntrl.textClass().description().c_str()) {
+                               layoutModule->classCO->setCurrentItem(n);
+                               break;
+                       }
+               }
        }
 }