]> git.lyx.org Git - features.git/blobdiff - src/frontends/qt4/GuiToolbar.cpp
more latin1..utf8 schanges. all of src/* should be utf8 now
[features.git] / src / frontends / qt4 / GuiToolbar.cpp
index fb552539aa8479dafcfd740850f8fb8e26f043b8..6ff3e9636596977e683264dbda48d617ac5b8085 100644 (file)
@@ -3,7 +3,7 @@
  * This file is part of LyX, the document processor.
  * Licence details can be found in the file COPYING.
  *
- * \author Lars Gullik Bjønnes
+ * \author Lars Gullik Bjønnes
  * \author John Levon
  * \author Jean-Marc Lasgouttes
  * \author Angus Leeming
@@ -365,8 +365,9 @@ void GuiLayoutBox::setFilter(QString const & s)
                filterModel_->triggerLayoutChange();
                
                if (!s.isEmpty())
-                       owner_.message(_("Filtering layouts with \"" + fromqstr(s) + "\". "
-                                        "Press ESC to remove filter."));
+                       owner_.message(bformat(_("Filtering layouts with \"%1$s\". "
+                                                "Press ESC to remove filter."),
+                                              qstring_to_ucs4(s)));
                else
                        owner_.message(_("Enter characters to filter the layout list."));
        }
@@ -506,13 +507,21 @@ void GuiLayoutBox::set(docstring const & layout)
        if (!text_class_)
                return;
 
-       QString const & name = toqstr((*text_class_)[layout].name());
-       if (name == currentText())
+       Layout const & lay = (*text_class_)[layout];
+       QString const newLayout = toqstr(lay.name());
+
+       int const curItem = currentIndex();
+       QModelIndex const mindex = 
+               filterModel_->mapToSource(filterModel_->index(curItem, 1));
+       QString const & currentLayout = model_->itemFromIndex(mindex)->text();
+       if (newLayout == currentLayout) {
+               LYXERR(Debug::GUI, "Already had " << newLayout << " selected.");
                return;
+       }
 
-       QList<QStandardItem *> r = model_->findItems(name, Qt::MatchExactly, 1);
+       QList<QStandardItem *> r = model_->findItems(newLayout, Qt::MatchExactly, 1);
        if (r.empty()) {
-               LYXERR0("Trying to select non existent layout type " << name);
+               LYXERR0("Trying to select non existent layout type " << newLayout);
                return;
        }
 
@@ -521,10 +530,12 @@ void GuiLayoutBox::set(docstring const & layout)
 
 
 void GuiLayoutBox::addItemSort(docstring const & item, docstring const & category,
-       bool sorted, bool sortedByCat)
+       bool sorted, bool sortedByCat, bool unknown)
 {
        QString qitem = toqstr(item);
-       QString titem = toqstr(translateIfPossible(item));
+       // FIXME This is wrong for RTL, I'd suppose.
+       QString titem = toqstr(translateIfPossible(item) +
+                              (unknown ? _(" (unknown)") : from_ascii("")));
        QString qcat = toqstr(translateIfPossible(category));
 
        QList<QStandardItem *> row;
@@ -592,7 +603,7 @@ void GuiLayoutBox::updateContents(bool reset)
        // or we've moved from one inset to another
        DocumentClass const * text_class = &buffer->params().documentClass();
        Inset const * inset = 
-               owner_.view()->cursor().innerParagraph().inInset();
+               &(owner_.view()->cursor().innerParagraph().inInset());
        if (!reset && text_class_ == text_class && inset_ == inset) {
                set(owner_.view()->cursor().innerParagraph().layout().name());
                return;
@@ -607,15 +618,19 @@ void GuiLayoutBox::updateContents(bool reset)
 
        for (; lit != len; ++lit) {
                docstring const & name = lit->name();
-               bool const useEmpty = inset_->forceEmptyLayout() || inset_->useEmptyLayout();
+               bool const useEmpty = inset_->forcePlainLayout() || inset_->usePlainLayout();
                // if this inset requires the empty layout, we skip the default
                // layout
                if (name == text_class_->defaultLayoutName() && inset_ && useEmpty)
                        continue;
                // if it doesn't require the empty layout, we skip it
-               if (name == text_class_->emptyLayoutName() && inset_ && !useEmpty)
+               if (name == text_class_->plainLayoutName() && inset_ && !useEmpty)
                        continue;
-               addItemSort(name, lit->category(), lyxrc.sort_layouts, lyxrc.group_layouts);
+               // obsoleted layouts are skipped as well
+               if (!lit->obsoleted_by().empty())
+                       continue;
+               addItemSort(name, lit->category(), lyxrc.sort_layouts, 
+                               lyxrc.group_layouts, lit->isUnknown());
        }
 
        set(owner_.view()->cursor().innerParagraph().layout().name());
@@ -624,7 +639,8 @@ void GuiLayoutBox::updateContents(bool reset)
        // needed to recalculate size hint
        hide();
        setMinimumWidth(sizeHint().width());
-       setEnabled(!buffer->isReadonly());
+       setEnabled(!buffer->isReadonly() &&
+               lyx::getStatus(FuncRequest(LFUN_LAYOUT)).enabled());
        show();
 }
 
@@ -633,9 +649,7 @@ void GuiLayoutBox::selected(int index)
 {
        // get selection
        QModelIndex mindex = filterModel_->mapToSource(filterModel_->index(index, 1));
-       docstring const layoutName = 
-               qstring_to_ucs4(model_->itemFromIndex(mindex)->text());
-
+       docstring layoutName = qstring_to_ucs4(model_->itemFromIndex(mindex)->text());
        owner_.setFocus();
 
        if (!text_class_) {
@@ -653,7 +667,7 @@ void GuiLayoutBox::selected(int index)
                resetFilter();
                return;
        }
-       LYXERR0("ERROR (layoutSelected): layout not found!");
+       LYXERR0("ERROR (layoutSelected): layout " << layoutName << " not found!");
 }
 
 
@@ -666,7 +680,7 @@ void GuiLayoutBox::selected(int index)
 
 
 GuiToolbar::GuiToolbar(ToolbarInfo const & tbinfo, GuiView & owner)
-       : QToolBar(qt_(tbinfo.gui_name), &owner), visibility_(0),
+       : QToolBar(toqstr(tbinfo.gui_name), &owner), visibility_(0),
          allowauto_(false), owner_(owner), layout_(0), command_buffer_(0),
          tbinfo_(tbinfo), filled_(false)
 {
@@ -904,7 +918,7 @@ void GuiToolbar::update(bool in_math, bool in_table, bool in_review,
 
 QString GuiToolbar::sessionKey() const
 {
-       return "view-" + QString::number(owner_.id()) + "/" + objectName();
+       return "views/" + QString::number(owner_.id()) + "/" + objectName();
 }
 
 
@@ -957,4 +971,4 @@ void GuiToolbar::toggle()
 } // namespace frontend
 } // namespace lyx
 
-#include "GuiToolbar_moc.cpp"
+#include "moc_GuiToolbar.cpp"