]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiDocument.cpp
cosmetics
[lyx.git] / src / frontends / qt4 / GuiDocument.cpp
index 1a7780cbddb43de51d40680c03278c54e458834b..28a334426b7af7d8ef87f0b7baad9c324921e976 100644 (file)
@@ -171,53 +171,61 @@ QModelIndex getSelectedIndex(QListView * lv)
 
 
 namespace {
-       vector<string> getRequiredList(string const & modName) 
-       {
-               LyXModule const * const mod = moduleList[modName];
-               if (!mod)
-                       return vector<string>(); //empty such thing
-               return mod->getRequiredModules();
-       }
 
+vector<string> getRequiredList(string const & modName) 
+{
+       LyXModule const * const mod = moduleList[modName];
+       if (!mod)
+               return vector<string>(); //empty such thing
+       return mod->getRequiredModules();
+}
 
-       vector<string> getExcludedList(string const & modName)
-       {
-               LyXModule const * const mod = moduleList[modName];
-               if (!mod)
-                       return vector<string>(); //empty such thing
-               return mod->getExcludedModules();
-       }
 
+vector<string> getExcludedList(string const & modName)
+{
+       LyXModule const * const mod = moduleList[modName];
+       if (!mod)
+               return vector<string>(); //empty such thing
+       return mod->getExcludedModules();
+}
 
-       docstring getModuleDescription(string const & modName)
-       {
-               LyXModule const * const mod = moduleList[modName];
-               if (!mod)
-                       return _("Module not found!");
-               return _(mod->getDescription());
-       }
 
+docstring getModuleDescription(string const & modName)
+{
+       LyXModule const * const mod = moduleList[modName];
+       if (!mod)
+               return _("Module not found!");
+       return _(mod->getDescription());
+}
 
-       vector<string> getPackageList(string const & modName)
-       {
-               LyXModule const * const mod = moduleList[modName];
-               if (!mod)
-                       return vector<string>(); //empty such thing
-               return mod->getPackageList();
-       }
 
+vector<string> getPackageList(string const & modName)
+{
+       LyXModule const * const mod = moduleList[modName];
+       if (!mod)
+               return vector<string>(); //empty such thing
+       return mod->getPackageList();
+}
 
-       bool isModuleAvailable(string const & modName)
-       {
-               LyXModule * mod = moduleList[modName];
-               if (!mod)
-                       return false;
-               return mod->isAvailable();
-       }
-} //anonymous namespace
 
+bool isModuleAvailable(string const & modName)
+{
+       LyXModule * mod = moduleList[modName];
+       if (!mod)
+               return false;
+       return mod->isAvailable();
+}
 
-ModuleSelMan::ModuleSelMan(
+} // anonymous namespace
+
+
+/////////////////////////////////////////////////////////////////////
+//
+// ModuleSelectionManager
+//
+/////////////////////////////////////////////////////////////////////
+
+ModuleSelectionManager::ModuleSelectionManager(
        QListView * availableLV, 
        QListView * selectedLV,
        QPushButton * addPB, 
@@ -231,7 +239,7 @@ GuiSelectionManager(availableLV, selectedLV, addPB, delPB,
 {}
        
 
-void ModuleSelMan::updateAddPB() 
+void ModuleSelectionManager::updateAddPB() 
 {
        int const arows = availableModel->rowCount();
        QModelIndexList const availSels = 
@@ -292,7 +300,7 @@ void ModuleSelMan::updateAddPB()
 }
 
 
-void ModuleSelMan::updateDownPB()
+void ModuleSelectionManager::updateDownPB()
 {
        int const srows = selectedModel->rowCount();
        if (srows == 0) {
@@ -331,7 +339,7 @@ void ModuleSelMan::updateDownPB()
                        find(reqs.begin(), reqs.end(), curModName) == reqs.end());
 }
 
-void ModuleSelMan::updateUpPB() 
+void ModuleSelectionManager::updateUpPB() 
 {
        int const srows = selectedModel->rowCount();
        if (srows == 0) {
@@ -370,7 +378,7 @@ void ModuleSelMan::updateUpPB()
        upPB->setEnabled(find(reqs.begin(), reqs.end(), preModName) == reqs.end());
 }
 
-void ModuleSelMan::updateDelPB() 
+void ModuleSelectionManager::updateDelPB() 
 {
        int const srows = selectedModel->rowCount();
        if (srows == 0) {
@@ -445,7 +453,7 @@ void ModuleSelMan::updateDelPB()
 //
 /////////////////////////////////////////////////////////////////////
 
-PreambleModule::PreambleModule(): current_id_(0)
+PreambleModule::PreambleModule() : current_id_(0)
 {
        // This is not a memory leak. The object will be destroyed
        // with this.
@@ -474,7 +482,7 @@ void PreambleModule::update(BufferParams const & params, BufferId id)
        Coords::const_iterator it = preamble_coords_.find(current_id_);
        if (it == preamble_coords_.end())
                // First time we open this one.
-               preamble_coords_[current_id_] = make_pair(0,0);
+               preamble_coords_[current_id_] = make_pair(0, 0);
        else {
                // Restore saved coords.
                QTextCursor cur = preambleTE->textCursor();
@@ -559,9 +567,9 @@ GuiDocument::GuiDocument(GuiView & lv)
        connect(textLayoutModule->bypassCB, SIGNAL(clicked()), 
                this, SLOT(change_adaptor()));
        connect(textLayoutModule->bypassCB, SIGNAL(clicked()), 
-               this, SLOT(set_listings_msg()));
+               this, SLOT(setListingsMessage()));
        connect(textLayoutModule->listingsED, SIGNAL(textChanged()),
-               this, SLOT(set_listings_msg()));
+               this, SLOT(setListingsMessage()));
        textLayoutModule->listingsTB->setPlainText(
                qt_("Input listings parameters on the right. Enter ? for a list of parameters."));
        textLayoutModule->lspacingLE->setValidator(new QDoubleValidator(
@@ -796,12 +804,14 @@ GuiDocument::GuiDocument(GuiView & lv)
        langModule->languageCO->setModel(language_model);
 
        // Always put the default encoding in the first position.
-       // It is special because the displayed text is translated.
-       langModule->encodingCO->addItem(qt_("LaTeX default"));
+       langModule->encodingCO->addItem(qt_("Language Default (no inputenc)"));
+       QStringList encodinglist;
        Encodings::const_iterator it = encodings.begin();
        Encodings::const_iterator const end = encodings.end();
        for (; it != end; ++it)
-               langModule->encodingCO->addItem(toqstr(it->latexName()));
+               encodinglist.append(qt_(it->guiName()));
+       encodinglist.sort();
+       langModule->encodingCO->addItems(encodinglist);
 
        langModule->quoteStyleCO->addItem(qt_("``text''"));
        langModule->quoteStyleCO->addItem(qt_("''text''"));
@@ -886,7 +896,8 @@ GuiDocument::GuiDocument(GuiView & lv)
                this, SLOT(browseMaster()));
        
        selectionManager = 
-               new ModuleSelMan(latexModule->availableLV, latexModule->selectedLV, 
+               new ModuleSelectionManager(latexModule->availableLV,
+                       latexModule->selectedLV, 
                        latexModule->addPB, latexModule->deletePB, 
                        latexModule->upPB, latexModule->downPB, 
                        availableModel(), selectedModel());
@@ -1021,40 +1032,41 @@ void GuiDocument::change_adaptor()
 }
 
 
-docstring GuiDocument::validate_listings_params()
+QString GuiDocument::validateListingsParameters()
 {
        // use a cache here to avoid repeated validation
        // of the same parameters
-       static string param_cache = string();
-       static docstring msg_cache = docstring();
+       static string param_cache;
+       static QString msg_cache;
        
        if (textLayoutModule->bypassCB->isChecked())
-               return docstring();
+               return QString();
 
        string params = fromqstr(textLayoutModule->listingsED->toPlainText());
        if (params != param_cache) {
                param_cache = params;
-               msg_cache = InsetListingsParams(params).validate();
+               msg_cache = toqstr(InsetListingsParams(params).validate());
        }
        return msg_cache;
 }
 
 
-void GuiDocument::set_listings_msg()
+void GuiDocument::setListingsMessage()
 {
        static bool isOK = true;
-       docstring msg = validate_listings_params();
-       if (msg.empty()) {
+       QString msg = validateListingsParameters();
+       if (msg.isEmpty()) {
                if (isOK)
                        return;
                isOK = true;
                // listingsTB->setTextColor("black");
                textLayoutModule->listingsTB->setPlainText(
-                       qt_("Input listings parameters on the right. Enter ? for a list of parameters."));
+                       qt_("Input listings parameters on the right. "
+                "Enter ? for a list of parameters."));
        } else {
                isOK = false;
                // listingsTB->setTextColor("red");
-               textLayoutModule->listingsTB->setPlainText(toqstr(msg));
+               textLayoutModule->listingsTB->setPlainText(msg);
        }
 }
 
@@ -1321,6 +1333,11 @@ void GuiDocument::classChanged()
                bp_.useClassDefaults();
                paramsToDialog(bp_);
        }
+       // FIXME There's a little bug here connected with auto_reset, namely,
+       // that, if the preceding is skipped and the user has changed the
+       // modules before changing the class, those changes will be lost on
+       // update. But maybe that's what we want?
+       updateSelectedModules();
 }
 
 
@@ -1481,9 +1498,25 @@ void GuiDocument::apply(BufferParams & params)
                int i = langModule->encodingCO->currentIndex();
                if (i == 0)
                        params.inputenc = "default";
-               else
-                       params.inputenc =
-                               fromqstr(langModule->encodingCO->currentText());
+               else {
+                       QString const enc_gui =
+                               langModule->encodingCO->currentText();
+                       Encodings::const_iterator it = encodings.begin();
+                       Encodings::const_iterator const end = encodings.end();
+                       bool found = false;
+                       for (; it != end; ++it) {
+                               if (qt_(it->guiName()) == enc_gui) {
+                                       params.inputenc = it->latexName();
+                                       found = true;
+                                       break;
+                               }
+                       }
+                       if (!found) {
+                               // should not happen
+                               lyxerr << "GuiDocument::apply: Unknown encoding! Resetting to default" << endl;
+                               params.inputenc = "default";
+                       }
+               }
        }
 
        InsetQuotes::QuoteLanguage lga = InsetQuotes::EnglishQuotes;
@@ -1520,10 +1553,10 @@ void GuiDocument::apply(BufferParams & params)
        }
 
        // bullets
-       params.user_defined_bullet(0) = bulletsModule->getBullet(0);
-       params.user_defined_bullet(1) = bulletsModule->getBullet(1);
-       params.user_defined_bullet(2) = bulletsModule->getBullet(2);
-       params.user_defined_bullet(3) = bulletsModule->getBullet(3);
+       params.user_defined_bullet(0) = bulletsModule->bullet(0);
+       params.user_defined_bullet(1) = bulletsModule->bullet(1);
+       params.user_defined_bullet(2) = bulletsModule->bullet(2);
+       params.user_defined_bullet(3) = bulletsModule->bullet(3);
 
        // packages
        params.graphicsDriver =
@@ -1542,6 +1575,27 @@ void GuiDocument::apply(BufferParams & params)
        vector<string> selModList;
        for (int i = 0; i < srows; ++i)
                params.addLayoutModule(modules_sel_model_.getIDString(i));
+       // update the list of removed modules
+       params.clearRemovedModules();
+       set<string> const & reqmods = params.baseClass()->defaultModules();
+       set<string>::const_iterator rit = reqmods.begin();
+       set<string>::const_iterator ren = reqmods.end();
+       // check each of the required modules
+       for (; rit != ren; rit++) {
+               vector<string>::const_iterator mit = params.getModules().begin();
+               vector<string>::const_iterator men = params.getModules().end();
+               bool found = false;
+               for (; mit != men; mit++) {
+                       if (*rit == *mit) {
+                               found = true;
+                               break;
+                       }
+               }
+               if (!found) {
+                       // the module isn't present so must have been removed by the user
+                       params.addRemovedModule(*rit);
+               }
+       }
 
        if (mathsModule->amsautoCB->isChecked()) {
                params.use_amsmath = BufferParams::package_auto;
@@ -1796,8 +1850,17 @@ void GuiDocument::paramsToDialog(BufferParams const & params)
                if (params.inputenc == "default") {
                        langModule->encodingCO->setCurrentIndex(0);
                } else {
+                       string enc_gui;
+                       Encodings::const_iterator it = encodings.begin();
+                       Encodings::const_iterator const end = encodings.end();
+                       for (; it != end; ++it) {
+                               if (it->latexName() == params.inputenc) {
+                                       enc_gui = it->guiName();
+                                       break;
+                               }
+                       }
                        int const i = langModule->encodingCO->findText(
-                                       toqstr(params.inputenc));
+                                       qt_(enc_gui));
                        if (i >= 0)
                                langModule->encodingCO->setCurrentIndex(i);
                        else
@@ -2125,7 +2188,7 @@ void GuiDocument::setLayoutComboByIDString(std::string const & idString)
 
 bool GuiDocument::isValid()
 {
-       return validate_listings_params().empty()
+       return validateListingsParameters().isEmpty()
                && (textLayoutModule->skipCO->currentIndex() != 3
                        || !textLayoutModule->skipLE->text().isEmpty());
 }