diff --git a/src/qtgui/guiutils.cpp b/src/qtgui/guiutils.cpp index 76b9ccd2..41eb787b 100644 --- a/src/qtgui/guiutils.cpp +++ b/src/qtgui/guiutils.cpp @@ -202,6 +202,10 @@ void rwSettings(bool writing) SETTING_RW(prefs.autoSuffsEnable, "/Recoll/prefs/query/autoSuffsEnable", Bool, false); + SETTING_RW(prefs.synFileEnable, + "/Recoll/prefs/query/synFileEnable", Bool, false); + SETTING_RW(prefs.synFile, "/Recoll/prefs/query/synfile", String, ""); + SETTING_RW(prefs.termMatchType, "/Recoll/prefs/query/termMatchType", Int, 0); // This is not really the current program version, just a value to diff --git a/src/qtgui/guiutils.h b/src/qtgui/guiutils.h index a2ebd3d8..923d482f 100644 --- a/src/qtgui/guiutils.h +++ b/src/qtgui/guiutils.h @@ -115,6 +115,9 @@ class PrefsPack { // language entry. QString autoSuffs; bool autoSuffsEnable; + // Synonyms file + QString synFile; + bool synFileEnable; QStringList restableFields; vector restableColWidths; diff --git a/src/qtgui/rclmain.ui b/src/qtgui/rclmain.ui index 6d89c117..3b4142d3 100644 --- a/src/qtgui/rclmain.ui +++ b/src/qtgui/rclmain.ui @@ -109,6 +109,8 @@ + + @@ -346,7 +348,7 @@ - &Indexing schedule + Indexing &schedule indexScheduleAction @@ -371,6 +373,20 @@ extIdxAction + + + Enable synonyms + + + Enable synonyms + + + enbSynAction + + + true + + &Full Screen diff --git a/src/qtgui/rclmain_w.cpp b/src/qtgui/rclmain_w.cpp index 992e9d0f..d2237a33 100644 --- a/src/qtgui/rclmain_w.cpp +++ b/src/qtgui/rclmain_w.cpp @@ -153,6 +153,9 @@ void RclMain::init() // Set the focus to the search terms entry: sSearch->queryText->setFocus(); + enbSynAction->setDisabled(prefs.synFile.isEmpty()); + enbSynAction->setChecked(prefs.synFileEnable); + // Stemming language menu g_stringNoStem = tr("(no stemming)"); g_stringAllStem = tr("(all languages)"); @@ -341,6 +344,8 @@ void RclMain::init() this, SLOT(showUIPrefs())); connect(extIdxAction, SIGNAL(triggered()), this, SLOT(showExtIdxDialog())); + connect(enbSynAction, SIGNAL(toggled(bool)), + this, SLOT(setSynEnabled(bool))); connect(toggleFullScreenAction, SIGNAL(triggered()), this, SLOT(toggleFullScreen())); @@ -459,6 +464,13 @@ void RclMain::init() periodictimer->start(1000); } +void RclMain::setSynEnabled(bool on) +{ + prefs.synFileEnable = on; + if (uiprefs) + uiprefs->synFileCB->setChecked(prefs.synFileEnable); +} + void RclMain::resultCount(int n) { actionSortByDateAsc->setEnabled(n>0); @@ -679,6 +691,17 @@ void RclMain::startSearch(STD_SHARED_PTR sdata, bool issimple) return; } + if (prefs.synFileEnable && !prefs.synFile.isEmpty()) { + string sf = (const char *)prefs.synFile.toLocal8Bit(); + if (!rcldb->setSynGroupsFile(sf)) { + QMessageBox::warning(0, "Recoll", + tr("Can't set synonyms file (parse error?)")); + return; + } + } else { + rcldb->setSynGroupsFile(""); + } + Rcl::Query *query = new Rcl::Query(rcldb); query->setCollapseDuplicates(prefs.collapseDuplicates); @@ -1014,6 +1037,8 @@ void RclMain::setUIPrefs() LOGDEB(("Recollmain::setUIPrefs\n")); reslist->setFont(); sSearch->setPrefs(); + enbSynAction->setDisabled(prefs.synFile.isEmpty()); + enbSynAction->setChecked(prefs.synFileEnable); } void RclMain::enableNextPage(bool yesno) diff --git a/src/qtgui/rclmain_w.h b/src/qtgui/rclmain_w.h index 3e989e73..fc080b30 100644 --- a/src/qtgui/rclmain_w.h +++ b/src/qtgui/rclmain_w.h @@ -130,6 +130,7 @@ public slots: virtual void startManual(const string&); virtual void showDocHistory(); virtual void showExtIdxDialog(); + virtual void setSynEnabled(bool); virtual void showUIPrefs(); virtual void showIndexConfig(); virtual void execIndexConfig(); diff --git a/src/qtgui/uiprefs.ui b/src/qtgui/uiprefs.ui index b6ee9dfd..9ca254ce 100644 --- a/src/qtgui/uiprefs.ui +++ b/src/qtgui/uiprefs.ui @@ -778,6 +778,56 @@ May be slow for big documents. + + + + QFrame::HLine + + + QFrame::Sunken + + + + + + + + + + 1 + 0 + + + + Synonyms file + + + false + + + + + + + Enable + + + + + + + + 30 + 0 + + + + Choose + + + + + diff --git a/src/qtgui/uiprefs_w.cpp b/src/qtgui/uiprefs_w.cpp index 2027ae74..0c529250 100644 --- a/src/qtgui/uiprefs_w.cpp +++ b/src/qtgui/uiprefs_w.cpp @@ -45,7 +45,6 @@ #include "recoll.h" #include "guiutils.h" -#include "rcldb.h" #include "rclconfig.h" #include "pathut.h" #include "uiprefs_w.h" @@ -73,6 +72,7 @@ void UIPrefsDialog::init() connect(stylesheetPB, SIGNAL(clicked()),this, SLOT(showStylesheetDialog())); connect(resetSSPB, SIGNAL(clicked()), this, SLOT(resetStylesheet())); connect(snipCssPB, SIGNAL(clicked()),this, SLOT(showSnipCssDialog())); + connect(synFilePB, SIGNAL(clicked()),this, SLOT(showSynFileDialog())); connect(resetSnipCssPB, SIGNAL(clicked()), this, SLOT(resetSnipCss())); connect(idxLV, SIGNAL(itemSelectionChanged()), @@ -214,6 +214,15 @@ void UIPrefsDialog::setFromPrefs() autoSuffsCB->setChecked(prefs.autoSuffsEnable); autoSuffsLE->setText(prefs.autoSuffs); + synFileCB->setChecked(prefs.synFileEnable); + synFile = prefs.synFile; + if (synFile.isEmpty()) { + synFilePB->setText(tr("Choose")); + } else { + string nm = path_getsimple((const char *)synFile.toLocal8Bit()); + synFilePB->setText(QString::fromLocal8Bit(nm.c_str())); + } + // Initialize the extra indexes listboxes idxLV->clear(); for (list::iterator it = prefs.allExtraDbs.begin(); @@ -326,10 +335,12 @@ void UIPrefsDialog::accept() prefs.syntAbsLen = syntlenSB->value(); prefs.syntAbsCtx = syntctxSB->value(); - prefs.autoSuffsEnable = autoSuffsCB->isChecked(); prefs.autoSuffs = autoSuffsLE->text(); + prefs.synFileEnable = synFileCB->isChecked(); + prefs.synFile = synFile; + prefs.allExtraDbs.clear(); prefs.activeExtraDbs.clear(); for (int i = 0; i < idxLV->count(); i++) { @@ -441,6 +452,15 @@ void UIPrefsDialog::resetSnipCss() snipCssPB->setText(tr("Choose")); } +void UIPrefsDialog::showSynFileDialog() +{ + synFile = myGetFileName(false, "Select synonyms file", true); + if (synFile.isEmpty()) + return; + string nm = path_getsimple((const char *)synFile.toLocal8Bit()); + synFilePB->setText(QString::fromLocal8Bit(nm.c_str())); +} + void UIPrefsDialog::resetReslistFont() { reslistFontFamily = ""; diff --git a/src/qtgui/uiprefs_w.h b/src/qtgui/uiprefs_w.h index a422c0d5..706856c9 100644 --- a/src/qtgui/uiprefs_w.h +++ b/src/qtgui/uiprefs_w.h @@ -42,6 +42,7 @@ public: int reslistFontSize; QString qssFile; QString snipCssFile; + QString synFile; virtual void init(); @@ -49,6 +50,7 @@ public slots: virtual void showFontDialog(); virtual void resetReslistFont(); virtual void showStylesheetDialog(); + virtual void showSynFileDialog(); virtual void showSnipCssDialog(); virtual void resetStylesheet(); virtual void resetSnipCss();