]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiDocument.cpp
s/kb_action/FuncCode/g
[lyx.git] / src / frontends / qt4 / GuiDocument.cpp
index 1dd083077ea1509cef3611c0d56e19a15634d3aa..327d2d367bd562a18bfc78c5412959a8d0408fee 100644 (file)
@@ -870,6 +870,8 @@ GuiDocument::GuiDocument(GuiView & lv)
                this, SLOT(classChanged()));
        connect(latexModule->classCO, SIGNAL(activated(int)),
                this, SLOT(change_adaptor()));
+       connect(latexModule->layoutPB, SIGNAL(clicked()),
+               this, SLOT(browseLayout()));
        
        selectionManager = 
                new ModuleSelMan(latexModule->availableLV, latexModule->selectedLV, 
@@ -1220,6 +1222,50 @@ void GuiDocument::updatePagestyle(string const & items, string const & sel)
 }
 
 
+void GuiDocument::browseLayout()
+{
+       QString const label1 = qt_("Layouts|#o#O");
+       QString const dir1 = toqstr(lyxrc.document_path);
+       FileFilterList const filter(_("LyX Layout (*.layout)"));
+       QString file = browseRelFile(QString(), bufferFilepath(),
+               qt_("Local layout file"), filter, false,
+               label1, dir1);
+
+       if (!suffixIs(fromqstr(file), ".layout"))
+               return;
+
+       FileName layoutFile = makeAbsPath(fromqstr(file),
+               fromqstr(bufferFilepath()));
+       
+       // load the layout file
+       LayoutFileList & bcl = LayoutFileList::get();
+       string classname = layoutFile.onlyFileName();
+       LayoutFileIndex name = bcl.addLayoutFile(
+               classname.substr(0, classname.size() - 7),
+               layoutFile.onlyPath().absFilename(),
+               LayoutFileList::Local);
+
+       if (name.empty()) {
+               Alert::error(_("Error"),
+                       _("Unable to read local layout file."));                
+               return;
+       }
+
+       // do not trigger classChanged if there is no change.
+       if (latexModule->classCO->currentText() == toqstr(name))
+               return;
+               
+       // add to combo box
+       int idx = latexModule->classCO->findText(toqstr(name));
+       if (idx == -1) {
+               classes_model_.insertRow(0, toqstr(name), name);
+               latexModule->classCO->setCurrentIndex(0);
+       } else
+               latexModule->classCO->setCurrentIndex(idx);
+       classChanged();
+}
+
+
 void GuiDocument::classChanged()
 {
        int idx = latexModule->classCO->currentIndex();
@@ -1239,6 +1285,16 @@ void GuiDocument::classChanged()
                        setLayoutComboByIDString(bp_.baseClassID());
                        return;
                }
+       } else if (prefixIs(classname, LayoutFileList::embeddedPrefix)) {
+               int const ret = Alert::prompt(_("Embedded layout"),
+                               _("The layout file you have selected is an embedded layout that\n"
+                                 "is embedded to a buffer. You cannot make use of it unless\n"
+                                 "it is already embedded to this buffer.\n"),
+                                 1, 1, _("&Set Layout"), _("&Cancel"));
+               if (ret == 1) {
+                       setLayoutComboByIDString(bp_.baseClassID());
+                       return;
+               }
        }
        if (!bp_.setBaseClass(classname)) {
                Alert::error(_("Error"), _("Unable to set document class."));
@@ -1371,8 +1427,14 @@ void GuiDocument::setExtraEmbeddedFileList()
 
 void GuiDocument::addExtraEmbeddedFile()
 {
+       QString const label1 = qt_("Documents|#o#O");
+       QString const dir1 = toqstr(lyxrc.document_path);
+       FileFilterList const filter(_("LyX Layout (*.layout);;LaTeX Classes (*.{cls,sty});;BibTeX Databases (*.{bib,bst})"));
        QString file = browseRelFile(QString(), bufferFilepath(),
-               qt_("Extra embedded file"), FileFilterList(), true);
+               qt_("Extra embedded file"), filter, true, label1, dir1);
+
+       if (file.isEmpty())
+               return;
 
        if (embeddedFilesModule->extraLW->findItems(file, Qt::MatchExactly).empty())
                embeddedFilesModule->extraLW->addItem(file);
@@ -1450,25 +1512,25 @@ void GuiDocument::apply(BufferParams & params)
                                fromqstr(langModule->encodingCO->currentText());
        }
 
-       InsetQuotes::quote_language lga = InsetQuotes::EnglishQ;
+       InsetQuotes::QuoteLanguage lga = InsetQuotes::EnglishQuotes;
        switch (langModule->quoteStyleCO->currentIndex()) {
        case 0:
-               lga = InsetQuotes::EnglishQ;
+               lga = InsetQuotes::EnglishQuotes;
                break;
        case 1:
-               lga = InsetQuotes::SwedishQ;
+               lga = InsetQuotes::SwedishQuotes;
                break;
        case 2:
-               lga = InsetQuotes::GermanQ;
+               lga = InsetQuotes::GermanQuotes;
                break;
        case 3:
-               lga = InsetQuotes::PolishQ;
+               lga = InsetQuotes::PolishQuotes;
                break;
        case 4:
-               lga = InsetQuotes::FrenchQ;
+               lga = InsetQuotes::FrenchQuotes;
                break;
        case 5:
-               lga = InsetQuotes::DanishQ;
+               lga = InsetQuotes::DanishQuotes;
                break;
        }
        params.quotes_language = lga;
@@ -1560,9 +1622,9 @@ void GuiDocument::apply(BufferParams & params)
                InsetListingsParams(fromqstr(textLayoutModule->listingsED->toPlainText())).params();
 
        if (textLayoutModule->indentRB->isChecked())
-               params.paragraph_separation = BufferParams::PARSEP_INDENT;
+               params.paragraph_separation = BufferParams::ParagraphIndentSeparation;
        else
-               params.paragraph_separation = BufferParams::PARSEP_SKIP;
+               params.paragraph_separation = BufferParams::ParagraphSkipSeparation;
 
        switch (textLayoutModule->skipCO->currentIndex()) {
        case 0:
@@ -1692,7 +1754,7 @@ void GuiDocument::apply(BufferParams & params)
        // Embedded files
        vector<string> & files = params.extraEmbeddedFiles();
        files.clear();
-       for (size_t i = 0; i < embeddedFilesModule->extraLW->count(); ++i) {
+       for (int i = 0; i < embeddedFilesModule->extraLW->count(); ++i) {
                QListWidgetItem * item = embeddedFilesModule->extraLW->item(i);
                files.push_back(fromqstr(item->text()));
        }
@@ -1744,17 +1806,17 @@ void GuiDocument::updateParams(BufferParams const & params)
 
        // biblio
        biblioModule->citeDefaultRB->setChecked(
-               params.getEngine() == biblio::ENGINE_BASIC);
+               params.citeEngine() == biblio::ENGINE_BASIC);
 
        biblioModule->citeNatbibRB->setChecked(
-               params.getEngine() == biblio::ENGINE_NATBIB_NUMERICAL ||
-               params.getEngine() == biblio::ENGINE_NATBIB_AUTHORYEAR);
+               params.citeEngine() == biblio::ENGINE_NATBIB_NUMERICAL ||
+               params.citeEngine() == biblio::ENGINE_NATBIB_AUTHORYEAR);
 
        biblioModule->citeStyleCO->setCurrentIndex(
-               params.getEngine() == biblio::ENGINE_NATBIB_NUMERICAL);
+               params.citeEngine() == biblio::ENGINE_NATBIB_NUMERICAL);
 
        biblioModule->citeJurabibRB->setChecked(
-               params.getEngine() == biblio::ENGINE_JURABIB);
+               params.citeEngine() == biblio::ENGINE_JURABIB);
 
        biblioModule->bibtopicCB->setChecked(
                params.use_bibtopic);
@@ -1845,7 +1907,7 @@ void GuiDocument::updateParams(BufferParams const & params)
        }
        setLSpacing(nitem);
 
-       if (params.paragraph_separation == BufferParams::PARSEP_INDENT)
+       if (params.paragraph_separation == BufferParams::ParagraphIndentSeparation)
                textLayoutModule->indentRB->setChecked(true);
        else
                textLayoutModule->skipRB->setChecked(true);
@@ -2173,7 +2235,7 @@ DocumentClass const & GuiDocument::documentClass() const
 
 
 static void dispatch_bufferparams(Dialog const & dialog,
-       BufferParams const & bp, kb_action lfun)
+       BufferParams const & bp, FuncCode lfun)
 {
        ostringstream ss;
        ss << "\\begin_header\n";