summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosep LlodrĂ  <jlg.hrtc@gmail.com>2018-03-31 17:53:48 +0200
committerJosep LlodrĂ  Grimalt <jlg.hrtc@gmail.com>2018-04-13 13:38:01 +0000
commit1636b5c80b0a4e8de11a1eb537682c0359141eeb (patch)
tree858599ff12fd88bdf3834869511b12fc3800583c
parent0c017d45c2ca6279cae418fa951ae2d8a9773020 (diff)
linguist: Add actions in View menu to show more/fewer guessesv5.11.0-beta4
Three actions have been added to the main View menu (Guesses submenu) in order to easily change the number of Guesses displayed. View Menu ...... Guesses > Show more (alt - +) [shows 5 more guesses] Show fewer (alt - -) [shows 5 fewer guesses] --- Reset to default (alt - 0) [resets to 5 guesses] ...... Motivation behind this commit is that in large UIs with thousands of strings, 5 guesses are not enough in some situations to gather all the information necessary to correctly translate a string. Change-Id: I3fdc1b8fc27af40300897cdfd1f9fa3620caad55 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
-rw-r--r--src/linguist/linguist/mainwindow.cpp7
-rw-r--r--src/linguist/linguist/mainwindow.ui34
-rw-r--r--src/linguist/linguist/phraseview.cpp29
-rw-r--r--src/linguist/linguist/phraseview.h10
4 files changed, 76 insertions, 4 deletions
diff --git a/src/linguist/linguist/mainwindow.cpp b/src/linguist/linguist/mainwindow.cpp
index 9f7109c85..355754b21 100644
--- a/src/linguist/linguist/mainwindow.cpp
+++ b/src/linguist/linguist/mainwindow.cpp
@@ -1933,6 +1933,10 @@ void MainWindow::setupMenuBar()
connect(m_ui.actionIncreaseZoom, SIGNAL(triggered()), m_messageEditor, SLOT(increaseFontSize()));
connect(m_ui.actionDecreaseZoom, SIGNAL(triggered()), m_messageEditor, SLOT(decreaseFontSize()));
connect(m_ui.actionResetZoomToDefault, SIGNAL(triggered()), m_messageEditor, SLOT(resetFontSize()));
+ connect(m_ui.actionShowMoreGuesses, SIGNAL(triggered()), m_phraseView, SLOT(moreGuesses()));
+ connect(m_ui.actionShowFewerGuesses, SIGNAL(triggered()), m_phraseView, SLOT(fewerGuesses()));
+ connect(m_phraseView, SIGNAL(showFewerGuessesAvailable(bool)), m_ui.actionShowFewerGuesses, SLOT(setEnabled(bool)));
+ connect(m_ui.actionResetGuessesToDefault, SIGNAL(triggered()), m_phraseView, SLOT(resetNumGuesses()));
m_ui.menuViewViews->addAction(m_contextDock->toggleViewAction());
m_ui.menuViewViews->addAction(m_messagesDock->toggleViewAction());
m_ui.menuViewViews->addAction(m_phrasesDock->toggleViewAction());
@@ -2622,6 +2626,8 @@ void MainWindow::readConfig()
m_messageEditor->setFontSize(
config.value(settingPath("Options/EditorFontsize"), font().pointSize()).toReal());
+ m_phraseView->setMaxCandidates(config.value(settingPath("Options/NumberOfGuesses"),
+ PhraseView::getDefaultMaxCandidates()).toInt());
recentFiles().readConfig();
@@ -2657,6 +2663,7 @@ void MainWindow::writeConfig()
recentFiles().writeConfig();
config.setValue(settingPath("Options/EditorFontsize"), m_messageEditor->fontSize());
+ config.setValue(settingPath("Options/NumberOfGuesses"), m_phraseView->getMaxCandidates());
config.beginWriteArray(settingPath("OpenedPhraseBooks"),
m_phraseBooks.size());
diff --git a/src/linguist/linguist/mainwindow.ui b/src/linguist/linguist/mainwindow.ui
index c09015912..6b4922e16 100644
--- a/src/linguist/linguist/mainwindow.ui
+++ b/src/linguist/linguist/mainwindow.ui
@@ -110,6 +110,15 @@
<addaction name="separator"/>
<addaction name="actionResetZoomToDefault"/>
</widget>
+ <widget class="QMenu" name="menuGuesses">
+ <property name="title">
+ <string>Guesses</string>
+ </property>
+ <addaction name="actionShowMoreGuesses"/>
+ <addaction name="actionShowFewerGuesses"/>
+ <addaction name="separator"/>
+ <addaction name="actionResetGuessesToDefault"/>
+ </widget>
<addaction name="actionResetSorting"/>
<addaction name="actionDisplayGuesses"/>
<addaction name="actionStatistics"/>
@@ -117,6 +126,7 @@
<addaction name="actionVisualizeWhitespace"/>
<addaction name="separator"/>
<addaction name="menuZoom"/>
+ <addaction name="menuGuesses"/>
<addaction name="separator"/>
<addaction name="menuToolbars"/>
<addaction name="menuViewViews"/>
@@ -926,6 +936,30 @@
<string>Ctrl+0</string>
</property>
</action>
+ <action name="actionShowMoreGuesses">
+ <property name="text">
+ <string>Show more</string>
+ </property>
+ <property name="shortcut">
+ <string>Alt++</string>
+ </property>
+ </action>
+ <action name="actionShowFewerGuesses">
+ <property name="text">
+ <string>Show fewer</string>
+ </property>
+ <property name="shortcut">
+ <string>Alt+-</string>
+ </property>
+ </action>
+ <action name="actionResetGuessesToDefault">
+ <property name="text">
+ <string>Reset to default</string>
+ </property>
+ <property name="shortcut">
+ <string>Alt+0</string>
+ </property>
+ </action>
</widget>
<resources/>
<connections/>
diff --git a/src/linguist/linguist/phraseview.cpp b/src/linguist/linguist/phraseview.cpp
index e1d31954e..39b02c8cd 100644
--- a/src/linguist/linguist/phraseview.cpp
+++ b/src/linguist/linguist/phraseview.cpp
@@ -44,9 +44,6 @@
QT_BEGIN_NAMESPACE
-// Maximum number of guesses to display
-static const int MaxCandidates = 5;
-
static QString phraseViewHeaderKey()
{
return settingPath("PhraseViewHeader");
@@ -154,6 +151,30 @@ void PhraseView::editPhrase()
edit(currentIndex());
}
+void PhraseView::setMaxCandidates(const int max)
+{
+ m_maxCandidates = max;
+ emit showFewerGuessesAvailable(m_maxCandidates > DefaultMaxCandidates);
+}
+
+void PhraseView::moreGuesses()
+{
+ setMaxCandidates(m_maxCandidates + DefaultMaxCandidates);
+ setSourceText(m_modelIndex, m_sourceText);
+}
+
+void PhraseView::fewerGuesses()
+{
+ setMaxCandidates(m_maxCandidates - DefaultMaxCandidates);
+ setSourceText(m_modelIndex, m_sourceText);
+}
+
+void PhraseView::resetNumGuesses()
+{
+ setMaxCandidates(DefaultMaxCandidates);
+ setSourceText(m_modelIndex, m_sourceText);
+}
+
static CandidateList similarTextHeuristicCandidates(MultiDataModel *model, int mi,
const char *text, int maxCandidates)
{
@@ -217,7 +238,7 @@ void PhraseView::setSourceText(int model, const QString &sourceText)
if (!sourceText.isEmpty() && m_doGuesses) {
CandidateList cl = similarTextHeuristicCandidates(m_dataModel, model,
- sourceText.toLatin1(), MaxCandidates);
+ sourceText.toLatin1(), m_maxCandidates);
int n = 0;
foreach (const Candidate &candidate, cl) {
QString def;
diff --git a/src/linguist/linguist/phraseview.h b/src/linguist/linguist/phraseview.h
index 2e315b759..fbc4610fe 100644
--- a/src/linguist/linguist/phraseview.h
+++ b/src/linguist/linguist/phraseview.h
@@ -36,6 +36,8 @@
QT_BEGIN_NAMESPACE
+static const int DefaultMaxCandidates = 5;
+
class MultiDataModel;
class PhraseModel;
@@ -73,9 +75,13 @@ public:
public slots:
void toggleGuessing();
void update();
+ int getMaxCandidates() const { return m_maxCandidates; }
+ void setMaxCandidates(const int max);
+ static int getDefaultMaxCandidates() { return DefaultMaxCandidates; }
signals:
void phraseSelected(int latestModel, const QString &phrase);
+ void showFewerGuessesAvailable(bool canShow);
protected:
// QObject
@@ -88,6 +94,9 @@ private slots:
void selectPhrase(const QModelIndex &index);
void selectPhrase();
void editPhrase();
+ void moreGuesses();
+ void fewerGuesses();
+ void resetNumGuesses();
private:
QList<Phrase *> getPhrases(int model, const QString &sourceText);
@@ -100,6 +109,7 @@ private:
QString m_sourceText;
int m_modelIndex;
bool m_doGuesses;
+ int m_maxCandidates = DefaultMaxCandidates;
};
QT_END_NAMESPACE