879 lines
39 KiB
C++
879 lines
39 KiB
C++
/*
|
|
|
|
Copyright 2015 S. Razi Alavizadeh
|
|
Copyright 2012-2015 Adam Reichold
|
|
Copyright 2012 Alexander Volkov
|
|
|
|
This file is part of qpdfview.
|
|
|
|
qpdfview is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
qpdfview is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with qpdfview. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
#include "settingsdialog.h"
|
|
|
|
#include <QApplication>
|
|
#include <QCheckBox>
|
|
#include <QDesktopWidget>
|
|
#include <QDialogButtonBox>
|
|
#include <QFormLayout>
|
|
#include <QGroupBox>
|
|
#include <QHeaderView>
|
|
#include <QPushButton>
|
|
#include <QShortcut>
|
|
#include <QTableView>
|
|
|
|
#include "settings.h"
|
|
#include "model.h"
|
|
#include "pluginhandler.h"
|
|
#include "shortcuthandler.h"
|
|
#include "documentview.h"
|
|
#include "miscellaneous.h"
|
|
|
|
namespace
|
|
{
|
|
|
|
using namespace qpdfview;
|
|
|
|
void addSettingsWidget(QTabWidget* tabWidget, SettingsWidget*& settingsWidget, PluginHandler::FileType fileType)
|
|
{
|
|
settingsWidget = PluginHandler::instance()->createSettingsWidget(fileType, tabWidget);
|
|
|
|
if(settingsWidget != 0)
|
|
{
|
|
tabWidget->addTab(settingsWidget, PluginHandler::fileTypeName(fileType));
|
|
}
|
|
}
|
|
|
|
void setCurrentIndexFromData(QComboBox* comboBox, int data)
|
|
{
|
|
comboBox->setCurrentIndex(comboBox->findData(data));
|
|
}
|
|
|
|
int dataFromCurrentIndex(const QComboBox* comboBox)
|
|
{
|
|
return comboBox->itemData(comboBox->currentIndex()).toInt();
|
|
}
|
|
|
|
void setCurrentTextToColorName(QComboBox* comboBox, const QColor& color)
|
|
{
|
|
comboBox->lineEdit()->setText(color.isValid() ? color.name() : QString());
|
|
}
|
|
|
|
QColor validColorFromCurrentText(const QComboBox* comboBox, const QColor& defaultColor)
|
|
{
|
|
const QColor color(comboBox->currentText());
|
|
|
|
return color.isValid() ? color : defaultColor;
|
|
}
|
|
|
|
void setCurrentIndexFromKeyboardModifiers(QComboBox* comboBox, Qt::KeyboardModifiers modifiers)
|
|
{
|
|
comboBox->setCurrentIndex(comboBox->findData(static_cast< int >(modifiers)));
|
|
}
|
|
|
|
Qt::KeyboardModifier keyboardModifierFromCurrentIndex(const QComboBox* comboBox)
|
|
{
|
|
return static_cast< Qt::KeyboardModifier >(comboBox->itemData(comboBox->currentIndex()).toInt());
|
|
}
|
|
|
|
} // anonymous
|
|
|
|
namespace qpdfview
|
|
{
|
|
|
|
Settings* SettingsDialog::s_settings = 0;
|
|
|
|
SettingsDialog::SettingsDialog(QWidget* parent) : QDialog(parent)
|
|
{
|
|
if(s_settings == 0)
|
|
{
|
|
s_settings = Settings::instance();
|
|
}
|
|
|
|
setWindowTitle(tr("Settings") + QLatin1String(" - qpdfview"));
|
|
|
|
m_graphicsTabWidget = new QTabWidget(this);
|
|
m_graphicsTabWidget->addTab(new QWidget(this), tr("General"));
|
|
|
|
addSettingsWidget(m_graphicsTabWidget, m_pdfSettingsWidget, PluginHandler::PDF);
|
|
addSettingsWidget(m_graphicsTabWidget, m_psSettingsWidget, PluginHandler::PS);
|
|
addSettingsWidget(m_graphicsTabWidget, m_djvuSettingsWidget, PluginHandler::DjVu);
|
|
|
|
m_graphicsLayout = new QFormLayout(m_graphicsTabWidget->widget(0));
|
|
|
|
m_shortcutsTableView = new QTableView(this);
|
|
|
|
m_shortcutsTableView->setModel(ShortcutHandler::instance());
|
|
|
|
connect(this, SIGNAL(accepted()), ShortcutHandler::instance(), SLOT(submit()));
|
|
connect(this, SIGNAL(rejected()), ShortcutHandler::instance(), SLOT(revert()));
|
|
|
|
m_shortcutsTableView->setFrameShape(QFrame::NoFrame);
|
|
m_shortcutsTableView->setAlternatingRowColors(true);
|
|
|
|
#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
|
|
|
|
m_shortcutsTableView->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
|
|
m_shortcutsTableView->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch);
|
|
|
|
#else
|
|
|
|
m_shortcutsTableView->horizontalHeader()->setResizeMode(0, QHeaderView::ResizeToContents);
|
|
m_shortcutsTableView->horizontalHeader()->setResizeMode(1, QHeaderView::Stretch);
|
|
|
|
#endif // QT_VERSION
|
|
|
|
m_shortcutsTableView->verticalHeader()->setVisible(false);
|
|
|
|
m_tabWidget = new QTabWidget(this);
|
|
m_tabWidget->addTab(new QWidget(this), tr("&Behavior"));
|
|
m_tabWidget->addTab(m_graphicsTabWidget, tr("&Graphics"));
|
|
m_tabWidget->addTab(new QWidget(this), tr("&Interface"));
|
|
m_tabWidget->addTab(m_shortcutsTableView, tr("&Shortcuts"));
|
|
m_tabWidget->addTab(new QWidget(this), tr("&Modifiers"));
|
|
|
|
m_dialogButtonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this);
|
|
connect(m_dialogButtonBox, SIGNAL(accepted()), SLOT(accept()));
|
|
connect(m_dialogButtonBox, SIGNAL(rejected()), SLOT(reject()));
|
|
|
|
m_defaultsButton = m_dialogButtonBox->addButton(tr("Defaults"), QDialogButtonBox::ResetRole);
|
|
connect(m_defaultsButton, SIGNAL(clicked()), SLOT(reset()));
|
|
|
|
m_defaultsOnCurrentTabButton = m_dialogButtonBox->addButton(tr("Defaults on current tab"), QDialogButtonBox::ResetRole);
|
|
connect(m_defaultsOnCurrentTabButton, SIGNAL(clicked()), SLOT(resetCurrentTab()));
|
|
|
|
m_behaviorLayout = new QFormLayout(m_tabWidget->widget(0));
|
|
m_interfaceLayout = new QFormLayout(m_tabWidget->widget(2));
|
|
|
|
m_wheelModifiersGroupBox = new QGroupBox(tr("Mouse wheel modifiers"));
|
|
m_wheelModifiersLayout = new QFormLayout(m_wheelModifiersGroupBox);
|
|
|
|
m_buttonModifiersGroupBox = new QGroupBox(tr("Mouse button modifiers"));
|
|
m_buttonModifiersLayout = new QFormLayout(m_buttonModifiersGroupBox);
|
|
|
|
QWidget* modifiersTab = m_tabWidget->widget(4);
|
|
QVBoxLayout* modifiersLayout = new QVBoxLayout(modifiersTab);
|
|
modifiersTab->setLayout(modifiersLayout);
|
|
modifiersLayout->addWidget(m_wheelModifiersGroupBox);
|
|
modifiersLayout->addWidget(m_buttonModifiersGroupBox);
|
|
modifiersLayout->addStretch();
|
|
|
|
QVBoxLayout* layout = new QVBoxLayout(this);
|
|
setLayout(layout);
|
|
layout->addWidget(m_tabWidget);
|
|
layout->addWidget(m_dialogButtonBox);
|
|
|
|
resize(s_settings->mainWindow().settingsDialogSize(sizeHint()));
|
|
|
|
createBehaviorTab();
|
|
createGraphicsTab();
|
|
createInterfaceTab();
|
|
createModifiersTab();
|
|
}
|
|
|
|
SettingsDialog::~SettingsDialog()
|
|
{
|
|
s_settings->mainWindow().setSettingsDialogSize(size());
|
|
}
|
|
|
|
void SettingsDialog::accept()
|
|
{
|
|
QDialog::accept();
|
|
|
|
acceptBehaivorTab();
|
|
|
|
acceptGraphicsTab();
|
|
|
|
acceptInterfaceTab();
|
|
|
|
acceptModifiersTab();
|
|
}
|
|
|
|
void SettingsDialog::reset()
|
|
{
|
|
resetBehaviorTab();
|
|
|
|
resetGraphicsTab();
|
|
|
|
resetInterfaceTab();
|
|
|
|
ShortcutHandler::instance()->reset();
|
|
|
|
resetModifiersTab();
|
|
}
|
|
|
|
void SettingsDialog::resetCurrentTab()
|
|
{
|
|
switch(m_tabWidget->currentIndex())
|
|
{
|
|
default:
|
|
reset();
|
|
break;
|
|
case 0:
|
|
resetBehaviorTab();
|
|
break;
|
|
case 1:
|
|
resetGraphicsTab();
|
|
break;
|
|
case 2:
|
|
resetInterfaceTab();
|
|
break;
|
|
case 3:
|
|
ShortcutHandler::instance()->reset();
|
|
break;
|
|
case 4:
|
|
resetModifiersTab();
|
|
break;
|
|
}
|
|
}
|
|
|
|
void SettingsDialog::createBehaviorTab()
|
|
{
|
|
m_openUrlCheckBox = addCheckBox(m_behaviorLayout, tr("Open URL:"), QString(),
|
|
s_settings->documentView().openUrl());
|
|
|
|
|
|
m_autoRefreshCheckBox = addCheckBox(m_behaviorLayout, tr("Auto-refresh:"), QString(),
|
|
s_settings->documentView().autoRefresh());
|
|
|
|
|
|
m_trackRecentlyUsedCheckBox = addCheckBox(m_behaviorLayout, tr("Track recently used:"), tr("Effective after restart."),
|
|
s_settings->mainWindow().trackRecentlyUsed());
|
|
|
|
m_keepRecentlyClosedCheckBox = addCheckBox(m_behaviorLayout, tr("Keep recently closed:"), tr("Effective after restart."),
|
|
s_settings->mainWindow().keepRecentlyClosed());
|
|
|
|
|
|
m_restoreTabsCheckBox = addCheckBox(m_behaviorLayout, tr("Restore tabs:"), QString(),
|
|
s_settings->mainWindow().restoreTabs());
|
|
|
|
m_restoreBookmarksCheckBox = addCheckBox(m_behaviorLayout, tr("Restore bookmarks:"), QString(),
|
|
s_settings->mainWindow().restoreBookmarks());
|
|
|
|
m_restorePerFileSettingsCheckBox = addCheckBox(m_behaviorLayout, tr("Restore per-file settings:"), QString(),
|
|
s_settings->mainWindow().restorePerFileSettings());
|
|
|
|
m_saveDatabaseInterval = addSpinBox(m_behaviorLayout, tr("Save database interval:"), QString(), tr(" min"), tr("Never"),
|
|
-1, 60, 1, s_settings->mainWindow().saveDatabaseInterval() / 1000 / 60);
|
|
|
|
#ifndef WITH_SQL
|
|
|
|
m_restoreTabsCheckBox->setEnabled(false);
|
|
m_restoreBookmarksCheckBox->setEnabled(false);
|
|
m_restorePerFileSettingsCheckBox->setEnabled(false);
|
|
m_saveDatabaseInterval->setEnabled(false);
|
|
|
|
#endif // WITH_SQL
|
|
|
|
|
|
m_synchronizePresentationCheckBox = addCheckBox(m_behaviorLayout, tr("Synchronize presentation:"), QString(),
|
|
s_settings->presentationView().synchronize());
|
|
|
|
m_presentationScreenSpinBox = addSpinBox(m_behaviorLayout, tr("Presentation screen:"), QString(), QString(), tr("Default"),
|
|
-1, QApplication::desktop()->screenCount() - 1, 1, s_settings->presentationView().screen());
|
|
|
|
|
|
m_synchronizeOutlineViewCheckBox = addCheckBox(m_behaviorLayout, tr("Synchronize outline view:"), QString(),
|
|
s_settings->mainWindow().synchronizeOutlineView());
|
|
|
|
m_synchronizeSplitViewsCheckBox = addCheckBox(m_behaviorLayout, tr("Synchronize split views:"), QString(),
|
|
s_settings->mainWindow().synchronizeSplitViews());
|
|
|
|
|
|
m_minimalScrollingCheckBox = addCheckBox(m_behaviorLayout, tr("Minimal scrolling:"), QString(),
|
|
s_settings->documentView().minimalScrolling());
|
|
|
|
m_zoomFactorSpinBox = addDoubleSpinBox(m_behaviorLayout, tr("Zoom factor:"), QString(), QString(), QString(),
|
|
1.0, 2.0, 0.05, s_settings->documentView().zoomFactor());
|
|
|
|
m_parallelSearchExecutionCheckBox = addCheckBox(m_behaviorLayout, tr("Parallel search execution:"), QString(),
|
|
s_settings->documentView().parallelSearchExecution());
|
|
|
|
|
|
m_highlightDurationSpinBox = addSpinBox(m_behaviorLayout, tr("Highlight duration:"), QString(), tr(" ms"), tr("None"),
|
|
0, 60000, 500, s_settings->documentView().highlightDuration());
|
|
|
|
m_highlightColorComboBox = addColorComboBox(m_behaviorLayout, tr("Highlight color:"), QString(),
|
|
s_settings->pageItem().highlightColor());
|
|
|
|
m_annotationColorComboBox = addColorComboBox(m_behaviorLayout, tr("Annotation color:"), QString(),
|
|
s_settings->pageItem().annotationColor());
|
|
|
|
|
|
m_sourceEditorLineEdit = addLineEdit(m_behaviorLayout, tr("Source editor:"), tr("'%1' is replaced by the absolute file path. '%2' resp. '%3' is replaced by line resp. column number."),
|
|
s_settings->documentView().sourceEditor());
|
|
}
|
|
|
|
void SettingsDialog::acceptBehaivorTab()
|
|
{
|
|
s_settings->documentView().setOpenUrl(m_openUrlCheckBox->isChecked());
|
|
|
|
s_settings->documentView().setAutoRefresh(m_autoRefreshCheckBox->isChecked());
|
|
|
|
s_settings->mainWindow().setTrackRecentlyUsed(m_trackRecentlyUsedCheckBox->isChecked());
|
|
s_settings->mainWindow().setKeepRecentlyClosed(m_keepRecentlyClosedCheckBox->isChecked());
|
|
|
|
s_settings->mainWindow().setRestoreTabs(m_restoreTabsCheckBox->isChecked());
|
|
s_settings->mainWindow().setRestoreBookmarks(m_restoreBookmarksCheckBox->isChecked());
|
|
s_settings->mainWindow().setRestorePerFileSettings(m_restorePerFileSettingsCheckBox->isChecked());
|
|
s_settings->mainWindow().setSaveDatabaseInterval(m_saveDatabaseInterval->value() * 60 * 1000);
|
|
|
|
s_settings->presentationView().setSynchronize(m_synchronizePresentationCheckBox->isChecked());
|
|
s_settings->presentationView().setScreen(m_presentationScreenSpinBox->value());
|
|
|
|
s_settings->mainWindow().setSynchronizeOutlineView(m_synchronizeOutlineViewCheckBox->isChecked());
|
|
s_settings->mainWindow().setSynchronizeSplitViews(m_synchronizeSplitViewsCheckBox->isChecked());
|
|
|
|
s_settings->documentView().setMinimalScrolling(m_minimalScrollingCheckBox->isChecked());
|
|
s_settings->documentView().setZoomFactor(m_zoomFactorSpinBox->value());
|
|
s_settings->documentView().setParallelSearchExecution(m_parallelSearchExecutionCheckBox->isChecked());
|
|
|
|
s_settings->documentView().setHighlightDuration(m_highlightDurationSpinBox->value());
|
|
s_settings->pageItem().setHighlightColor(validColorFromCurrentText(m_highlightColorComboBox, Defaults::PageItem::highlightColor()));
|
|
s_settings->pageItem().setAnnotationColor(validColorFromCurrentText(m_annotationColorComboBox, Defaults::PageItem::annotationColor()));
|
|
|
|
s_settings->documentView().setSourceEditor(m_sourceEditorLineEdit->text());
|
|
}
|
|
|
|
void SettingsDialog::resetBehaviorTab()
|
|
{
|
|
m_openUrlCheckBox->setChecked(Defaults::DocumentView::openUrl());
|
|
|
|
m_autoRefreshCheckBox->setChecked(Defaults::DocumentView::autoRefresh());
|
|
|
|
m_trackRecentlyUsedCheckBox->setChecked(Defaults::MainWindow::trackRecentlyUsed());
|
|
m_keepRecentlyClosedCheckBox->setChecked(Defaults::MainWindow::keepRecentlyClosed());
|
|
|
|
m_restoreTabsCheckBox->setChecked(Defaults::MainWindow::restoreTabs());
|
|
m_restoreBookmarksCheckBox->setChecked(Defaults::MainWindow::restoreBookmarks());
|
|
m_restorePerFileSettingsCheckBox->setChecked(Defaults::MainWindow::restorePerFileSettings());
|
|
m_saveDatabaseInterval->setValue(Defaults::MainWindow::saveDatabaseInterval());
|
|
|
|
m_synchronizePresentationCheckBox->setChecked(Defaults::PresentationView::synchronize());
|
|
m_presentationScreenSpinBox->setValue(Defaults::PresentationView::screen());
|
|
|
|
m_synchronizeOutlineViewCheckBox->setChecked(Defaults::MainWindow::synchronizeOutlineView());
|
|
m_synchronizeSplitViewsCheckBox->setChecked(Defaults::MainWindow::synchronizeSplitViews());
|
|
|
|
m_minimalScrollingCheckBox->setChecked(Defaults::DocumentView::minimalScrolling());
|
|
m_zoomFactorSpinBox->setValue(Defaults::DocumentView::zoomFactor());
|
|
m_parallelSearchExecutionCheckBox->setChecked(Defaults::DocumentView::parallelSearchExecution());
|
|
|
|
m_highlightDurationSpinBox->setValue(Defaults::DocumentView::highlightDuration());
|
|
setCurrentTextToColorName(m_highlightColorComboBox, Defaults::PageItem::highlightColor());
|
|
setCurrentTextToColorName(m_annotationColorComboBox, Defaults::PageItem::annotationColor());
|
|
|
|
m_sourceEditorLineEdit->clear();
|
|
}
|
|
|
|
void SettingsDialog::createGraphicsTab()
|
|
{
|
|
m_useTilingCheckBox = addCheckBox(m_graphicsLayout, tr("Use tiling:"), QString(),
|
|
s_settings->pageItem().useTiling());
|
|
|
|
m_keepObsoletePixmapsCheckBox = addCheckBox(m_graphicsLayout, tr("Keep obsolete pixmaps:"), QString(),
|
|
s_settings->pageItem().keepObsoletePixmaps());
|
|
|
|
m_useDevicePixelRatioCheckBox = addCheckBox(m_graphicsLayout, tr("Use device pixel ratio:"), QString(),
|
|
s_settings->pageItem().useDevicePixelRatio());
|
|
|
|
#if QT_VERSION < QT_VERSION_CHECK(5,1,0)
|
|
|
|
m_useDevicePixelRatioCheckBox->setEnabled(false);
|
|
|
|
#endif // QT_VERSION
|
|
|
|
|
|
m_decoratePagesCheckBox = addCheckBox(m_graphicsLayout, tr("Decorate pages:"), QString(),
|
|
s_settings->pageItem().decoratePages());
|
|
|
|
m_decorateLinksCheckBox = addCheckBox(m_graphicsLayout, tr("Decorate links:"), QString(),
|
|
s_settings->pageItem().decorateLinks());
|
|
|
|
m_decorateFormFieldsCheckBox = addCheckBox(m_graphicsLayout, tr("Decorate form fields:"), QString(),
|
|
s_settings->pageItem().decorateFormFields());
|
|
|
|
|
|
m_backgroundColorComboBox = addColorComboBox(m_graphicsLayout, tr("Background color:"), QString(),
|
|
s_settings->pageItem().backgroundColor());
|
|
|
|
m_paperColorComboBox = addColorComboBox(m_graphicsLayout, tr("Paper color:"), QString(),
|
|
s_settings->pageItem().paperColor());
|
|
|
|
m_presentationBackgroundColorComboBox = addColorComboBox(m_graphicsLayout, tr("Presentation background color:"), QString(),
|
|
s_settings->presentationView().backgroundColor());
|
|
|
|
|
|
m_pagesPerRowSpinBox = addSpinBox(m_graphicsLayout, tr("Pages per row:"), QString(), QString(), QString(),
|
|
1, 10, 1, s_settings->documentView().pagesPerRow());
|
|
|
|
|
|
m_pageSpacingSpinBox = addDoubleSpinBox(m_graphicsLayout, tr("Page spacing:"), QString(), tr(" px"), QString(),
|
|
0.0, 25.0, 0.25, s_settings->documentView().pageSpacing());
|
|
|
|
m_thumbnailSpacingSpinBox = addDoubleSpinBox(m_graphicsLayout, tr("Thumbnail spacing:"), QString(), tr(" px"), QString(),
|
|
0.0, 25.0, 0.25, s_settings->documentView().thumbnailSpacing());
|
|
|
|
|
|
m_thumbnailSizeSpinBox = addDoubleSpinBox(m_graphicsLayout, tr("Thumbnail size:"), QString(), tr(" px"), tr("Fit to viewport"),
|
|
0.0, 1800.0, 25.0, s_settings->documentView().thumbnailSize());
|
|
|
|
|
|
m_cacheSizeComboBox = addDataSizeComboBox(m_graphicsLayout, tr("Cache size:"), QString(),
|
|
s_settings->pageItem().cacheSize());
|
|
|
|
m_prefetchCheckBox = addCheckBox(m_graphicsLayout, tr("Prefetch:"), QString(),
|
|
s_settings->documentView().prefetch());
|
|
|
|
m_prefetchDistanceSpinBox = addSpinBox(m_graphicsLayout, tr("Prefetch distance:"), QString(), QString(), QString(),
|
|
1, 10, 1, s_settings->documentView().prefetchDistance());
|
|
}
|
|
|
|
void SettingsDialog::acceptGraphicsTab()
|
|
{
|
|
s_settings->pageItem().setUseTiling(m_useTilingCheckBox->isChecked());
|
|
s_settings->pageItem().setKeepObsoletePixmaps(m_keepObsoletePixmapsCheckBox->isChecked());
|
|
s_settings->pageItem().setUseDevicePixelRatio(m_useDevicePixelRatioCheckBox->isChecked());
|
|
|
|
s_settings->pageItem().setDecoratePages(m_decoratePagesCheckBox->isChecked());
|
|
s_settings->pageItem().setDecorateLinks(m_decorateLinksCheckBox->isChecked());
|
|
s_settings->pageItem().setDecorateFormFields(m_decorateFormFieldsCheckBox->isChecked());
|
|
|
|
s_settings->pageItem().setBackgroundColor(validColorFromCurrentText(m_backgroundColorComboBox, Defaults::PageItem::backgroundColor()));
|
|
s_settings->pageItem().setPaperColor(validColorFromCurrentText(m_paperColorComboBox, Defaults::PageItem::paperColor()));
|
|
s_settings->presentationView().setBackgroundColor(validColorFromCurrentText(m_presentationBackgroundColorComboBox, Defaults::PresentationView::backgroundColor()));
|
|
|
|
s_settings->documentView().setPagesPerRow(m_pagesPerRowSpinBox->value());
|
|
|
|
s_settings->documentView().setPageSpacing(m_pageSpacingSpinBox->value());
|
|
s_settings->documentView().setThumbnailSpacing(m_thumbnailSpacingSpinBox->value());
|
|
|
|
s_settings->documentView().setThumbnailSize(m_thumbnailSizeSpinBox->value());
|
|
|
|
s_settings->pageItem().setCacheSize(dataFromCurrentIndex(m_cacheSizeComboBox));
|
|
s_settings->documentView().setPrefetch(m_prefetchCheckBox->isChecked());
|
|
s_settings->documentView().setPrefetchDistance(m_prefetchDistanceSpinBox->value());
|
|
|
|
if(m_pdfSettingsWidget != 0)
|
|
{
|
|
m_pdfSettingsWidget->accept();
|
|
}
|
|
|
|
if(m_psSettingsWidget != 0)
|
|
{
|
|
m_psSettingsWidget->accept();
|
|
}
|
|
|
|
if(m_djvuSettingsWidget != 0)
|
|
{
|
|
m_djvuSettingsWidget->accept();
|
|
}
|
|
}
|
|
|
|
void SettingsDialog::resetGraphicsTab()
|
|
{
|
|
m_useTilingCheckBox->setChecked(Defaults::PageItem::useTiling());
|
|
m_keepObsoletePixmapsCheckBox->setChecked(Defaults::PageItem::keepObsoletePixmaps());
|
|
m_useDevicePixelRatioCheckBox->setChecked(Defaults::PageItem::useDevicePixelRatio());
|
|
|
|
m_decoratePagesCheckBox->setChecked(Defaults::PageItem::decoratePages());
|
|
m_decorateLinksCheckBox->setChecked(Defaults::PageItem::decorateLinks());
|
|
m_decorateFormFieldsCheckBox->setChecked(Defaults::PageItem::decorateFormFields());
|
|
|
|
setCurrentTextToColorName(m_backgroundColorComboBox, Defaults::PageItem::backgroundColor());
|
|
setCurrentTextToColorName(m_paperColorComboBox, Defaults::PageItem::paperColor());
|
|
setCurrentTextToColorName(m_presentationBackgroundColorComboBox, Defaults::PresentationView::backgroundColor());
|
|
|
|
m_pagesPerRowSpinBox->setValue(Defaults::DocumentView::pagesPerRow());
|
|
|
|
m_pageSpacingSpinBox->setValue(Defaults::DocumentView::pageSpacing());
|
|
m_thumbnailSpacingSpinBox->setValue(Defaults::DocumentView::thumbnailSpacing());
|
|
|
|
m_thumbnailSizeSpinBox->setValue(Defaults::DocumentView::thumbnailSize());
|
|
|
|
setCurrentIndexFromData(m_cacheSizeComboBox, Defaults::PageItem::cacheSize());
|
|
m_prefetchCheckBox->setChecked(Defaults::DocumentView::prefetch());
|
|
m_prefetchDistanceSpinBox->setValue(Defaults::DocumentView::prefetchDistance());
|
|
|
|
if(m_pdfSettingsWidget != 0)
|
|
{
|
|
m_pdfSettingsWidget->reset();
|
|
}
|
|
|
|
if(m_psSettingsWidget != 0)
|
|
{
|
|
m_psSettingsWidget->reset();
|
|
}
|
|
|
|
if(m_djvuSettingsWidget != 0)
|
|
{
|
|
m_djvuSettingsWidget->reset();
|
|
}
|
|
}
|
|
|
|
void SettingsDialog::createInterfaceTab()
|
|
{
|
|
m_extendedSearchDock = addCheckBox(m_interfaceLayout, tr("Extended search dock:"), tr("Effective after restart."),
|
|
s_settings->mainWindow().extendedSearchDock());
|
|
|
|
m_annotationOverlayCheckBox = addCheckBox(m_interfaceLayout, tr("Annotation overlay:"), QString(),
|
|
s_settings->pageItem().annotationOverlay());
|
|
|
|
m_formFieldOverlayCheckBox = addCheckBox(m_interfaceLayout, tr("Form field overlay:"), QString(),
|
|
s_settings->pageItem().formFieldOverlay());
|
|
|
|
|
|
m_tabPositionComboBox = addComboBox(m_interfaceLayout, tr("Tab position:"), QString(),
|
|
QStringList() << tr("Top") << tr("Bottom") << tr("Left") << tr("Right"),
|
|
QList< int >() << QTabWidget::North << QTabWidget::South << QTabWidget::West << QTabWidget::East,
|
|
s_settings->mainWindow().tabPosition());
|
|
|
|
m_tabVisibilityComboBox = addComboBox(m_interfaceLayout, tr("Tab visibility:"), QString(),
|
|
QStringList() << tr("As needed") << tr("Always") << tr("Never"),
|
|
QList< int >() << TabWidget::TabBarAsNeeded << TabWidget::TabBarAlwaysOn << TabWidget::TabBarAlwaysOff,
|
|
s_settings->mainWindow().tabVisibility());
|
|
|
|
m_spreadTabsCheckBox = addCheckBox(m_interfaceLayout, tr("Spread tabs:"), QString(),
|
|
s_settings->mainWindow().spreadTabs());
|
|
|
|
|
|
m_newTabNextToCurrentTabCheckBox = addCheckBox(m_interfaceLayout, tr("New tab next to current tab:"), QString(),
|
|
s_settings->mainWindow().newTabNextToCurrentTab());
|
|
|
|
m_exitAfterLastTabCheckBox = addCheckBox(m_interfaceLayout, tr("Exit after last tab:"), QString(),
|
|
s_settings->mainWindow().exitAfterLastTab());
|
|
|
|
|
|
m_recentlyUsedCountSpinBox = addSpinBox(m_interfaceLayout, tr("Recently used count:"), tr("Effective after restart."), QString(), QString(),
|
|
1, 50, 1, s_settings->mainWindow().recentlyUsedCount());
|
|
|
|
m_recentlyClosedCountSpinBox = addSpinBox(m_interfaceLayout, tr("Recently closed count:"), tr("Effective after restart."), QString(), QString(),
|
|
1, 25, 1, s_settings->mainWindow().recentlyClosedCount());
|
|
|
|
|
|
m_fileToolBarLineEdit = addLineEdit(m_interfaceLayout, tr("File tool bar:"), tr("Effective after restart."),
|
|
s_settings->mainWindow().fileToolBar().join(","));
|
|
|
|
m_editToolBarLineEdit = addLineEdit(m_interfaceLayout, tr("Edit tool bar:"), tr("Effective after restart."),
|
|
s_settings->mainWindow().editToolBar().join(","));
|
|
|
|
m_viewToolBarLineEdit = addLineEdit(m_interfaceLayout, tr("View tool bar:"), tr("Effective after restart."),
|
|
s_settings->mainWindow().viewToolBar().join(","));
|
|
|
|
m_documentContextMenuLineEdit = addLineEdit(m_interfaceLayout, tr("Document context menu:"), QString(),
|
|
s_settings->mainWindow().documentContextMenu().join(","));
|
|
|
|
m_tabContextMenuLineEdit = addLineEdit(m_interfaceLayout, tr("Tab context menu:"), QString(),
|
|
s_settings->mainWindow().tabContextMenu().join(","));
|
|
|
|
m_scrollableMenusCheckBox = addCheckBox(m_interfaceLayout, tr("Scrollable menus:"), tr("Effective after restart."),
|
|
s_settings->mainWindow().scrollableMenus());
|
|
|
|
m_searchableMenusCheckBox = addCheckBox(m_interfaceLayout, tr("Searchable menus:"), QString(),
|
|
s_settings->mainWindow().searchableMenus());
|
|
|
|
|
|
m_toggleToolAndMenuBarsWithFullscreenCheckBox = addCheckBox(m_interfaceLayout, tr("Toggle tool and menu bars with fullscreen:"), QString(),
|
|
s_settings->mainWindow().toggleToolAndMenuBarsWithFullscreen());
|
|
|
|
|
|
m_usePageLabelCheckBox = addCheckBox(m_interfaceLayout, tr("Use page label:"), QString(),
|
|
s_settings->mainWindow().usePageLabel());
|
|
|
|
m_documentTitleAsTabTitleCheckBox = addCheckBox(m_interfaceLayout, tr("Document title as tab title:"), QString(),
|
|
s_settings->mainWindow().documentTitleAsTabTitle());
|
|
|
|
|
|
m_currentPageInWindowTitleCheckBox = addCheckBox(m_interfaceLayout, tr("Current page in window title:"), QString(),
|
|
s_settings->mainWindow().currentPageInWindowTitle());
|
|
|
|
m_instanceNameInWindowTitleCheckBox = addCheckBox(m_interfaceLayout, tr("Instance name in window title:"), QString(),
|
|
s_settings->mainWindow().instanceNameInWindowTitle());
|
|
|
|
|
|
m_highlightCurrentThumbnailCheckBox = addCheckBox(m_interfaceLayout, tr("Highlight current thumbnail:"), QString(),
|
|
s_settings->documentView().highlightCurrentThumbnail());
|
|
|
|
m_limitThumbnailsToResultsCheckBox = addCheckBox(m_interfaceLayout, tr("Limit thumbnails to results:"), QString(),
|
|
s_settings->documentView().limitThumbnailsToResults());
|
|
}
|
|
|
|
void SettingsDialog::acceptInterfaceTab()
|
|
{
|
|
s_settings->mainWindow().setExtendedSearchDock(m_extendedSearchDock->isChecked());
|
|
|
|
s_settings->pageItem().setAnnotationOverlay(m_annotationOverlayCheckBox->isChecked());
|
|
s_settings->pageItem().setFormFieldOverlay(m_formFieldOverlayCheckBox);
|
|
|
|
s_settings->mainWindow().setTabPosition(dataFromCurrentIndex(m_tabPositionComboBox));
|
|
s_settings->mainWindow().setTabVisibility(dataFromCurrentIndex(m_tabVisibilityComboBox));
|
|
s_settings->mainWindow().setSpreadTabs(m_spreadTabsCheckBox->isChecked());
|
|
|
|
s_settings->mainWindow().setNewTabNextToCurrentTab(m_newTabNextToCurrentTabCheckBox->isChecked());
|
|
s_settings->mainWindow().setExitAfterLastTab(m_exitAfterLastTabCheckBox->isChecked());
|
|
|
|
s_settings->mainWindow().setRecentlyUsedCount(m_recentlyUsedCountSpinBox->value());
|
|
s_settings->mainWindow().setRecentlyClosedCount(m_recentlyClosedCountSpinBox->value());
|
|
|
|
s_settings->mainWindow().setFileToolBar(m_fileToolBarLineEdit->text().split(",", QString::SkipEmptyParts));
|
|
s_settings->mainWindow().setEditToolBar(m_editToolBarLineEdit->text().split(",", QString::SkipEmptyParts));
|
|
s_settings->mainWindow().setViewToolBar(m_viewToolBarLineEdit->text().split(",", QString::SkipEmptyParts));
|
|
|
|
s_settings->mainWindow().setDocumentContextMenu(m_documentContextMenuLineEdit->text().split(",", QString::SkipEmptyParts));
|
|
s_settings->mainWindow().setTabContextMenu(m_tabContextMenuLineEdit->text().split(",", QString::SkipEmptyParts));
|
|
|
|
s_settings->mainWindow().setScrollableMenus(m_scrollableMenusCheckBox->isChecked());
|
|
s_settings->mainWindow().setSearchableMenus(m_searchableMenusCheckBox->isChecked());
|
|
|
|
s_settings->mainWindow().setToggleToolAndMenuBarsWithFullscreen(m_toggleToolAndMenuBarsWithFullscreenCheckBox->isChecked());
|
|
|
|
s_settings->mainWindow().setUsePageLabel(m_usePageLabelCheckBox->isChecked());
|
|
s_settings->mainWindow().setDocumentTitleAsTabTitle(m_documentTitleAsTabTitleCheckBox->isChecked());
|
|
|
|
s_settings->mainWindow().setCurrentPageInWindowTitle(m_currentPageInWindowTitleCheckBox->isChecked());
|
|
s_settings->mainWindow().setInstanceNameInWindowTitle(m_instanceNameInWindowTitleCheckBox->isChecked());
|
|
|
|
s_settings->documentView().setHighlightCurrentThumbnail(m_highlightCurrentThumbnailCheckBox->isChecked());
|
|
s_settings->documentView().setLimitThumbnailsToResults(m_limitThumbnailsToResultsCheckBox->isChecked());
|
|
}
|
|
|
|
void SettingsDialog::resetInterfaceTab()
|
|
{
|
|
m_extendedSearchDock->setChecked(Defaults::MainWindow::extendedSearchDock());
|
|
|
|
m_annotationOverlayCheckBox->setChecked(Defaults::PageItem::annotationOverlay());
|
|
m_formFieldOverlayCheckBox->setChecked(Defaults::PageItem::formFieldOverlay());
|
|
|
|
setCurrentIndexFromData(m_tabPositionComboBox, Defaults::MainWindow::tabPosition());
|
|
setCurrentIndexFromData(m_tabVisibilityComboBox, Defaults::MainWindow::tabVisibility());
|
|
m_spreadTabsCheckBox->setChecked(Defaults::MainWindow::spreadTabs());
|
|
|
|
m_newTabNextToCurrentTabCheckBox->setChecked(Defaults::MainWindow::newTabNextToCurrentTab());
|
|
m_exitAfterLastTabCheckBox->setChecked(Defaults::MainWindow::exitAfterLastTab());
|
|
|
|
m_recentlyUsedCountSpinBox->setValue(Defaults::MainWindow::recentlyUsedCount());
|
|
m_recentlyClosedCountSpinBox->setValue(Defaults::MainWindow::recentlyClosedCount());
|
|
|
|
m_fileToolBarLineEdit->setText(Defaults::MainWindow::fileToolBar().join(","));
|
|
m_editToolBarLineEdit->setText(Defaults::MainWindow::editToolBar().join(","));
|
|
m_viewToolBarLineEdit->setText(Defaults::MainWindow::viewToolBar().join(","));
|
|
|
|
m_documentContextMenuLineEdit->setText(Defaults::MainWindow::documentContextMenu().join(","));
|
|
m_tabContextMenuLineEdit->setText(Defaults::MainWindow::tabContexntMenu().join(","));
|
|
|
|
m_scrollableMenusCheckBox->setChecked(Defaults::MainWindow::scrollableMenus());
|
|
m_searchableMenusCheckBox->setChecked(Defaults::MainWindow::searchableMenus());
|
|
|
|
m_toggleToolAndMenuBarsWithFullscreenCheckBox->setChecked(Defaults::MainWindow::toggleToolAndMenuBarsWithFullscreen());
|
|
|
|
m_usePageLabelCheckBox->setChecked(Defaults::MainWindow::usePageLabel());
|
|
m_documentTitleAsTabTitleCheckBox->setChecked(Defaults::MainWindow::documentTitleAsTabTitle());
|
|
|
|
m_currentPageInWindowTitleCheckBox->setChecked(Defaults::MainWindow::currentPageInWindowTitle());
|
|
m_instanceNameInWindowTitleCheckBox->setChecked(Defaults::MainWindow::instanceNameInWindowTitle());
|
|
|
|
m_highlightCurrentThumbnailCheckBox->setChecked(Defaults::DocumentView::highlightCurrentThumbnail());
|
|
m_limitThumbnailsToResultsCheckBox->setChecked(Defaults::DocumentView::limitThumbnailsToResults());
|
|
}
|
|
|
|
void SettingsDialog::createModifiersTab()
|
|
{
|
|
m_zoomModifiersComboBox = addModifiersComboBox(m_wheelModifiersLayout, tr("Zoom:"), QString(),
|
|
s_settings->documentView().zoomModifiers());
|
|
|
|
m_rotateModifiersComboBox = addModifiersComboBox(m_wheelModifiersLayout, tr("Rotate:"), QString(),
|
|
s_settings->documentView().rotateModifiers());
|
|
|
|
m_scrollModifiersComboBox = addModifiersComboBox(m_wheelModifiersLayout, tr("Scroll:"), QString(),
|
|
s_settings->documentView().scrollModifiers());
|
|
|
|
m_copyToClipboardModifiersComboBox = addModifiersComboBox(m_buttonModifiersLayout, tr("Copy to clipboard:"), QString(),
|
|
s_settings->pageItem().copyToClipboardModifiers());
|
|
|
|
m_addAnnotationModifiersComboBox = addModifiersComboBox(m_buttonModifiersLayout, tr("Add annotation:"), QString(),
|
|
s_settings->pageItem().addAnnotationModifiers());
|
|
|
|
m_zoomToSelectionModifiersComboBox = addModifiersComboBox(m_buttonModifiersLayout, tr("Zoom to selection:"), QString(),
|
|
s_settings->pageItem().zoomToSelectionModifiers());
|
|
|
|
m_openInSourceEditorModifiersComboBox = addModifiersComboBox(m_buttonModifiersLayout, tr("Open in source editor:"), QString(),
|
|
s_settings->pageItem().openInSourceEditorModifiers());
|
|
|
|
#ifndef WITH_SYNCTEX
|
|
|
|
m_openInSourceEditorModifiersComboBox->setEnabled(false);
|
|
|
|
#endif // WITH_SYNCTEX
|
|
}
|
|
|
|
void SettingsDialog::acceptModifiersTab()
|
|
{
|
|
s_settings->documentView().setZoomModifiers(keyboardModifierFromCurrentIndex(m_zoomModifiersComboBox));
|
|
s_settings->documentView().setRotateModifiers(keyboardModifierFromCurrentIndex(m_rotateModifiersComboBox));
|
|
s_settings->documentView().setScrollModifiers(keyboardModifierFromCurrentIndex(m_scrollModifiersComboBox));
|
|
|
|
s_settings->pageItem().setCopyToClipboardModifiers(keyboardModifierFromCurrentIndex(m_copyToClipboardModifiersComboBox));
|
|
s_settings->pageItem().setAddAnnotationModifiers(keyboardModifierFromCurrentIndex(m_addAnnotationModifiersComboBox));
|
|
s_settings->pageItem().setZoomToSelectionModifiers(keyboardModifierFromCurrentIndex(m_zoomToSelectionModifiersComboBox));
|
|
s_settings->pageItem().setOpenInSourceEditorModifiers(keyboardModifierFromCurrentIndex(m_openInSourceEditorModifiersComboBox));
|
|
}
|
|
|
|
void SettingsDialog::resetModifiersTab()
|
|
{
|
|
setCurrentIndexFromKeyboardModifiers(m_zoomModifiersComboBox, Defaults::DocumentView::zoomModifiers());
|
|
setCurrentIndexFromKeyboardModifiers(m_rotateModifiersComboBox, Defaults::DocumentView::rotateModifiers());
|
|
setCurrentIndexFromKeyboardModifiers(m_scrollModifiersComboBox, Defaults::DocumentView::scrollModifiers());
|
|
|
|
setCurrentIndexFromKeyboardModifiers(m_copyToClipboardModifiersComboBox, Defaults::PageItem::copyToClipboardModifiers());
|
|
setCurrentIndexFromKeyboardModifiers(m_addAnnotationModifiersComboBox, Defaults::PageItem::addAnnotationModifiers());
|
|
setCurrentIndexFromKeyboardModifiers(m_zoomToSelectionModifiersComboBox, Defaults::PageItem::zoomToSelectionModifiers());
|
|
setCurrentIndexFromKeyboardModifiers(m_openInSourceEditorModifiersComboBox, Defaults::PageItem::openInSourceEditorModifiers());
|
|
}
|
|
|
|
QCheckBox* SettingsDialog::addCheckBox(QFormLayout* layout, const QString& label, const QString& toolTip, bool checked)
|
|
{
|
|
QCheckBox* checkBox = new QCheckBox(this);
|
|
checkBox->setChecked(checked);
|
|
|
|
checkBox->setToolTip(toolTip);
|
|
layout->addRow(label, checkBox);
|
|
|
|
return checkBox;
|
|
}
|
|
|
|
QLineEdit* SettingsDialog::addLineEdit(QFormLayout* layout, const QString& label, const QString& toolTip, const QString& text)
|
|
{
|
|
QLineEdit* lineEdit = new QLineEdit(this);
|
|
lineEdit->setText(text);
|
|
|
|
lineEdit->setToolTip(toolTip);
|
|
layout->addRow(label, lineEdit);
|
|
|
|
return lineEdit;
|
|
}
|
|
|
|
QSpinBox* SettingsDialog::addSpinBox(QFormLayout* layout, const QString& label, const QString& toolTip, const QString& suffix, const QString& special, int min, int max, int step, int val)
|
|
{
|
|
QSpinBox* spinBox = new QSpinBox(this);
|
|
spinBox->setRange(min, max);
|
|
spinBox->setSingleStep(step);
|
|
spinBox->setValue(val);
|
|
|
|
spinBox->setSuffix(suffix);
|
|
spinBox->setSpecialValueText(special);
|
|
|
|
spinBox->setToolTip(toolTip);
|
|
layout->addRow(label, spinBox);
|
|
|
|
return spinBox;
|
|
}
|
|
|
|
QDoubleSpinBox* SettingsDialog::addDoubleSpinBox(QFormLayout* layout, const QString& label, const QString& toolTip, const QString& suffix, const QString& special, double min, double max, double step, double val)
|
|
{
|
|
QDoubleSpinBox* spinBox = new QDoubleSpinBox(this);
|
|
spinBox->setRange(min, max);
|
|
spinBox->setSingleStep(step);
|
|
spinBox->setValue(val);
|
|
|
|
spinBox->setSuffix(suffix);
|
|
spinBox->setSpecialValueText(special);
|
|
|
|
spinBox->setToolTip(toolTip);
|
|
layout->addRow(label, spinBox);
|
|
|
|
return spinBox;
|
|
}
|
|
|
|
QComboBox* SettingsDialog::addComboBox(QFormLayout* layout, const QString& label, const QString& toolTip, const QStringList& text, const QList< int >& data, int value)
|
|
{
|
|
QComboBox* comboBox = new QComboBox(this);
|
|
|
|
for(int index = 0, count = text.count(); index < count; ++index)
|
|
{
|
|
comboBox->addItem(text.at(index), data.at(index));
|
|
}
|
|
|
|
setCurrentIndexFromData(comboBox, value);
|
|
|
|
comboBox->setToolTip(toolTip);
|
|
layout->addRow(label, comboBox);
|
|
|
|
return comboBox;
|
|
}
|
|
|
|
QComboBox* SettingsDialog::addDataSizeComboBox(QFormLayout* layout, const QString& label, const QString& toolTip, int initialDataSize)
|
|
{
|
|
QComboBox* comboBox = new QComboBox(this);
|
|
|
|
for(int dataSize = 8; dataSize <= 8192; dataSize *= 2)
|
|
{
|
|
comboBox->addItem(tr("%1 MB").arg(dataSize), dataSize * 1024);
|
|
}
|
|
|
|
int currentIndex = comboBox->findData(initialDataSize);
|
|
|
|
if(currentIndex == -1)
|
|
{
|
|
currentIndex = comboBox->count();
|
|
|
|
comboBox->addItem(tr("%1 MB").arg(initialDataSize / 1024), initialDataSize);
|
|
}
|
|
|
|
comboBox->setCurrentIndex(currentIndex);
|
|
|
|
comboBox->setToolTip(toolTip);
|
|
layout->addRow(label, comboBox);
|
|
|
|
return comboBox;
|
|
}
|
|
|
|
QComboBox* SettingsDialog::addColorComboBox(QFormLayout* layout, const QString& label, const QString& toolTip, const QColor& color)
|
|
{
|
|
QComboBox* comboBox = new QComboBox(this);
|
|
comboBox->setEditable(true);
|
|
comboBox->setInsertPolicy(QComboBox::NoInsert);
|
|
comboBox->addItems(QColor::colorNames());
|
|
|
|
setCurrentTextToColorName(comboBox, color);
|
|
|
|
comboBox->setToolTip(toolTip);
|
|
layout->addRow(label, comboBox);
|
|
|
|
return comboBox;
|
|
}
|
|
|
|
QComboBox* SettingsDialog::addModifiersComboBox(QFormLayout* layout, const QString& label, const QString& toolTip, Qt::KeyboardModifiers modifiers)
|
|
{
|
|
QComboBox* comboBox = new QComboBox(this);
|
|
comboBox->addItem(QShortcut::tr("Shift"), static_cast< int >(Qt::ShiftModifier));
|
|
comboBox->addItem(QShortcut::tr("Ctrl"), static_cast< int >(Qt::ControlModifier));
|
|
comboBox->addItem(QShortcut::tr("Alt"), static_cast< int >(Qt::AltModifier));
|
|
comboBox->addItem(QShortcut::tr("Shift and Ctrl"), static_cast< int >(Qt::ShiftModifier | Qt::ControlModifier));
|
|
comboBox->addItem(QShortcut::tr("Shift and Alt"), static_cast< int >(Qt::ShiftModifier | Qt::AltModifier));
|
|
comboBox->addItem(QShortcut::tr("Ctrl and Alt"), static_cast< int >(Qt::ControlModifier | Qt::AltModifier));
|
|
comboBox->addItem(QShortcut::tr("Right mouse button"), static_cast< int >(Qt::RightButton));
|
|
comboBox->addItem(QShortcut::tr("Middle mouse button"), static_cast< int >(Qt::MidButton));
|
|
comboBox->addItem(QShortcut::tr("None"), static_cast< int >(Qt::NoModifier));
|
|
|
|
setCurrentIndexFromKeyboardModifiers(comboBox, modifiers);
|
|
|
|
comboBox->setToolTip(toolTip);
|
|
layout->addRow(label, comboBox);
|
|
|
|
return comboBox;
|
|
}
|
|
|
|
} // qpdfview
|