]> git.lyx.org Git - features.git/blobdiff - src/frontends/qt4/GuiDocument.cpp
Finally make the label color of multiple index entries work.
[features.git] / src / frontends / qt4 / GuiDocument.cpp
index 7aeac973d1a4d02adf22243582df41d85839f47b..0a96469935b7f29f82ae6c92a6cb962ae837c754 100644 (file)
@@ -946,6 +946,8 @@ GuiDocument::GuiDocument(GuiView & lv)
        branchesModule = new GuiBranches;
        connect(branchesModule, SIGNAL(changed()),
                this, SLOT(change_adaptor()));
+       connect(branchesModule, SIGNAL(renameBranches(docstring const &, docstring const &)),
+               this, SLOT(branchesRename(docstring const &, docstring const &)));
        updateUnknownBranches();
 
        // preamble
@@ -1875,7 +1877,7 @@ void GuiDocument::applyView()
                break;
        case 3:
                bp_.spacing().set(Spacing::Other,
-                       fromqstr(textLayoutModule->lspacingLE->text()));
+                       widgetToDoubleStr(textLayoutModule->lspacingLE));
                break;
        }
 
@@ -2034,6 +2036,7 @@ void GuiDocument::applyView()
        bp_.footskip = widgetsToLength(m->footskipLE, m->footskipUnit);
        bp_.columnsep = widgetsToLength(m->columnsepLE, m->columnsepUnit);
 
+       // branches
        branchesModule->apply(bp_);
 
        // PDF support
@@ -2198,8 +2201,8 @@ void GuiDocument::paramsToDialog()
 
        textLayoutModule->lspacingCO->setCurrentIndex(nitem);
        if (bp_.spacing().getSpace() == Spacing::Other) {
-               textLayoutModule->lspacingLE->setText(
-                       toqstr(bp_.spacing().getValueAsString()));
+               doubleToWidget(textLayoutModule->lspacingLE,
+                       bp_.spacing().getValueAsString());
        }
        setLSpacing(nitem);
 
@@ -2450,6 +2453,9 @@ void GuiDocument::paramsToDialog()
        // Make sure that the bc is in the INITIAL state
        if (bc().policy().buttonStatus(ButtonPolicy::RESTORE))
                bc().restore();
+
+       // clear changed branches cache
+       changedBranches_.clear();
 }
 
 
@@ -2680,14 +2686,19 @@ void GuiDocument::dispatchParams()
                dispatch(FuncRequest(LFUN_ALL_INSETS_TOGGLE,
                        "assign branch"));
        }
+       // rename branches in the document
+       executeBranchRenaming();
+       // and clear changed branches cache
+       changedBranches_.clear();
+       
        // Generate the colours requested by indices.
        IndicesList & indiceslist = params().indiceslist();
        if (!indiceslist.empty()) {
                IndicesList::const_iterator it = indiceslist.begin();
                IndicesList::const_iterator const end = indiceslist.end();
                for (; it != end; ++it) {
-                       docstring const & current_index = it->index();
-                       Index const * index = indiceslist.find(current_index);
+                       docstring const & current_index = it->shortcut();
+                       Index const * index = indiceslist.findShortcut(current_index);
                        string const x11hexname = X11hexname(index->color());
                        // display the new color
                        docstring const str = current_index + ' ' + from_ascii(x11hexname);
@@ -2804,7 +2815,7 @@ void GuiDocument::updateUnknownBranches()
        buffer().getUsedBranches(used_branches);
        list<docstring>::const_iterator it = used_branches.begin();
        QStringList unknown_branches;
-       for (it ; it != used_branches.end() ; ++it) {
+       for (; it != used_branches.end() ; ++it) {
                if (!buffer().params().branchlist().find(*it))
                        unknown_branches.append(toqstr(*it));
        }
@@ -2812,6 +2823,31 @@ void GuiDocument::updateUnknownBranches()
 }
 
 
+void GuiDocument::branchesRename(docstring const & oldname, docstring const & newname)
+{
+       map<docstring, docstring>::iterator it = changedBranches_.begin();
+       for (; it != changedBranches_.end() ; ++it) {
+               if (it->second == oldname) {
+                       // branch has already been renamed
+                       it->second = newname;
+                       return;
+               }
+       }
+       // store new name
+       changedBranches_[oldname] = newname;
+}
+
+
+void GuiDocument::executeBranchRenaming() const
+{
+       map<docstring, docstring>::const_iterator it = changedBranches_.begin();
+       for (; it != changedBranches_.end() ; ++it) {
+               docstring const arg = '"' + it->first + '"' + " " + '"' + it->second + '"';
+               dispatch(FuncRequest(LFUN_BRANCHES_RENAME, arg));
+       }
+}
+
+
 Dialog * createGuiDocument(GuiView & lv) { return new GuiDocument(lv); }