]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiDocument.cpp
We don't want the document dialog to be reset for each new paragraph.
[lyx.git] / src / frontends / qt4 / GuiDocument.cpp
index 4eedfbabefa335262e8f21bebefc3dbbd17f9e03..0e42f8f720690ecbef9a74a2a1b366bfd6447c67 100644 (file)
@@ -876,6 +876,12 @@ GuiDocument::GuiDocument(GuiView & lv)
                this, SLOT(change_adaptor()));
        connect(latexModule->layoutPB, SIGNAL(clicked()),
                this, SLOT(browseLayout()));
+       connect(latexModule->childDocGB, SIGNAL(clicked()),
+               this, SLOT(change_adaptor()));
+       connect(latexModule->childDocLE, SIGNAL(textChanged(const QString &)),
+               this, SLOT(change_adaptor()));
+       connect(latexModule->childDocPB, SIGNAL(clicked()),
+               this, SLOT(browseMaster()));
        
        selectionManager = 
                new ModuleSelMan(latexModule->availableLV, latexModule->selectedLV, 
@@ -1227,10 +1233,10 @@ void GuiDocument::browseLayout()
                qt_("Local layout file"), filter, false,
                label1, dir1);
 
-       if (!suffixIs(fromqstr(file), ".layout"))
+       if (!file.endsWith(".layout"))
                return;
 
-       FileName layoutFile = makeAbsPath(fromqstr(file),
+       FileName layoutFile = support::makeAbsPath(fromqstr(file),
                fromqstr(bufferFilepath()));
        
        // load the layout file
@@ -1262,6 +1268,20 @@ void GuiDocument::browseLayout()
 }
 
 
+void GuiDocument::browseMaster()
+{
+       QString const title = qt_("Select master document");
+       QString const dir1 = toqstr(lyxrc.document_path);
+       QString const old = latexModule->childDocLE->text();
+       QString const docpath = toqstr(support::onlyPath(buffer().absFileName()));
+       QStringList const filter(qt_("LyX Files (*.lyx)"));
+       QString file = browseRelFile(old, docpath, title, filter, false,
+               qt_("Documents|#o#O"), toqstr(lyxrc.document_path));
+
+       latexModule->childDocLE->setText(file);
+}
+
+
 void GuiDocument::classChanged()
 {
        int idx = latexModule->classCO->currentIndex();
@@ -1610,6 +1630,12 @@ void GuiDocument::apply(BufferParams & params)
        params.options =
                fromqstr(latexModule->optionsLE->text());
 
+       if (latexModule->childDocGB->isChecked())
+               params.master =
+                       fromqstr(latexModule->childDocLE->text());
+       else
+               params.master = string();
+
        params.float_placement = floatModule->get();
 
        // fonts
@@ -1901,6 +1927,15 @@ void GuiDocument::updateParams(BufferParams const & params)
                latexModule->optionsLE->setText(QString());
        }
 
+       if (!params.master.empty()) {
+               latexModule->childDocGB->setChecked(true);
+               latexModule->childDocLE->setText(
+                       toqstr(params.master));
+       } else {
+               latexModule->childDocLE->setText(QString());
+               latexModule->childDocGB->setChecked(false);
+       }
+
        floatModule->set(params.float_placement);
 
        // Fonts
@@ -2132,6 +2167,8 @@ char const * GuiDocument::fontfamilies_gui[5] = {
 bool GuiDocument::initialiseParams(string const &)
 {
        bp_ = buffer().params();
+       // Force update on next updateContent() round.
+       current_id_ = 0;
        loadModuleInfo();
        return true;
 }
@@ -2201,6 +2238,15 @@ void GuiDocument::dispatchParams()
        // and then update the buffer's layout.
        dispatch_bufferparams(*this, params(), LFUN_BUFFER_PARAMS_APPLY);
 
+       if (!params().master.empty()) {
+               FileName const master_file = support::makeAbsPath(params().master,
+                          support::onlyPath(buffer().absFileName()));
+               if (isLyXFilename(master_file.absFilename())) {
+                       Buffer * master = checkAndLoadLyXFile(master_file);
+                       buffer().setParent(master);
+               }
+       }
+
        // Generate the colours requested by each new branch.
        BranchList & branchlist = params().branchlist();
        if (!branchlist.empty()) {