From ea2c38bbcc8de506a8b2a754c37cebc96564fe33 Mon Sep 17 00:00:00 2001 From: Richard Heck Date: Sat, 1 Mar 2008 22:08:16 +0000 Subject: [PATCH] Fix bug 4594. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23376 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/frontends/qt4/GuiDocument.cpp | 34 ++++++++++++++++++++++++------- src/frontends/qt4/GuiDocument.h | 2 ++ 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/frontends/qt4/GuiDocument.cpp b/src/frontends/qt4/GuiDocument.cpp index 59973edb9f..c0db5c6fd2 100644 --- a/src/frontends/qt4/GuiDocument.cpp +++ b/src/frontends/qt4/GuiDocument.cpp @@ -1242,7 +1242,20 @@ void GuiDocument::classChanged() if (idx < 0) return; string const classname = classes_model_.getIDString(idx); - // FIXME There is a bug here: 4594 + // check if this is a local layout file + if (prefixIs(classname, BaseClassList::localPrefix)) { + int const ret = Alert::prompt(_("Local layout file"), + _("The layout file you have selected is a local layout" + "file, not one in the system or user directory. Your" + "document may not work with this layout if you do not" + "keep the layout file in the same directory."), + 1, 1, _("&Set Layout"), _("&Cancel")); + if (ret == 1) { + // try to reset the layout combo + setLayoutComboByIDString(bp_.baseClassID()); + return; + } + } if (!bp_.setBaseClass(classname)) { Alert::error(_("Error"), _("Unable to set document class.")); return; @@ -1830,12 +1843,8 @@ void GuiDocument::updateParams(BufferParams const & params) } // text layout - string const & classname = params.baseClassID(); - int idx = classes_model_.findIDString(classname); - if (idx < 0) - lyxerr << "Unable to set layout for classname " << classname << std::endl; - else - latexModule->classCO->setCurrentIndex(idx); + string const & layoutID = params.baseClassID(); + setLayoutComboByIDString(layoutID); updatePagestyle(documentClass().opt_pagestyle(), params.pagestyle); @@ -2094,6 +2103,17 @@ void GuiDocument::useClassDefaults() } +void GuiDocument::setLayoutComboByIDString(std::string const & idString) +{ + int idx = classes_model_.findIDString(idString); + if (idx < 0) + Alert::warning(_("Can't set layout!"), + bformat(_("Unable to set layout for ID: %1$s"), from_utf8(idString))); + else + latexModule->classCO->setCurrentIndex(idx); +} + + bool GuiDocument::isValid() { return (validate_listings_params().empty() && diff --git a/src/frontends/qt4/GuiDocument.h b/src/frontends/qt4/GuiDocument.h index 188b72d10a..980fdc5173 100644 --- a/src/frontends/qt4/GuiDocument.h +++ b/src/frontends/qt4/GuiDocument.h @@ -182,6 +182,8 @@ private: void saveDocDefault(); /// reset to default params void useClassDefaults(); + /// + void setLayoutComboByIDString(std::string const & idString); /// available classes GuiIdListModel classes_model_; /// available modules -- 2.39.2