mirror of
https://github.com/JakubMelka/PDF4QT.git
synced 2025-06-05 21:59:17 +02:00
Customizing of action shortcuts
This commit is contained in:
@ -23,5 +23,6 @@
|
|||||||
<file>resources/zoom-fit-vertical.svg</file>
|
<file>resources/zoom-fit-vertical.svg</file>
|
||||||
<file>resources/synchronize.svg</file>
|
<file>resources/synchronize.svg</file>
|
||||||
<file>resources/cache.svg</file>
|
<file>resources/cache.svg</file>
|
||||||
|
<file>resources/shortcuts.svg</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
@ -87,11 +87,12 @@ PDFViewerMainWindow::PDFViewerMainWindow(QWidget *parent) :
|
|||||||
connect(ui->actionClose, &QAction::triggered, this, &PDFViewerMainWindow::onActionCloseTriggered);
|
connect(ui->actionClose, &QAction::triggered, this, &PDFViewerMainWindow::onActionCloseTriggered);
|
||||||
connect(ui->actionQuit, &QAction::triggered, this, &PDFViewerMainWindow::onActionQuitTriggered);
|
connect(ui->actionQuit, &QAction::triggered, this, &PDFViewerMainWindow::onActionQuitTriggered);
|
||||||
|
|
||||||
auto createGoToAction = [this](QMenu* menu, QString text, QKeySequence::StandardKey key, pdf::PDFDrawWidgetProxy::Operation operation, QString iconPath)
|
auto createGoToAction = [this](QMenu* menu, QString name, QString text, QKeySequence::StandardKey key, pdf::PDFDrawWidgetProxy::Operation operation, QString iconPath)
|
||||||
{
|
{
|
||||||
QIcon icon;
|
QIcon icon;
|
||||||
icon.addFile(iconPath);
|
icon.addFile(iconPath);
|
||||||
QAction* action = new QAction(icon, text, this);
|
QAction* action = new QAction(icon, text, this);
|
||||||
|
action->setObjectName(name);
|
||||||
action->setShortcut(key);
|
action->setShortcut(key);
|
||||||
menu->addAction(action);
|
menu->addAction(action);
|
||||||
|
|
||||||
@ -103,12 +104,12 @@ PDFViewerMainWindow::PDFViewerMainWindow(QWidget *parent) :
|
|||||||
return action;
|
return action;
|
||||||
};
|
};
|
||||||
|
|
||||||
QAction* actionGoToDocumentStart = createGoToAction(ui->menuGoTo, tr("Go to document start"), QKeySequence::MoveToStartOfDocument, pdf::PDFDrawWidgetProxy::NavigateDocumentStart, ":/resources/previous-start.svg");
|
QAction* actionGoToDocumentStart = createGoToAction(ui->menuGoTo, "actionGoToDocumentStart", tr("Go to document start"), QKeySequence::MoveToStartOfDocument, pdf::PDFDrawWidgetProxy::NavigateDocumentStart, ":/resources/previous-start.svg");
|
||||||
QAction* actionGoToDocumentEnd = createGoToAction(ui->menuGoTo, tr("Go to document end"), QKeySequence::MoveToEndOfDocument, pdf::PDFDrawWidgetProxy::NavigateDocumentEnd, ":/resources/next-end.svg");
|
QAction* actionGoToDocumentEnd = createGoToAction(ui->menuGoTo, "actionGoToDocumentEnd", tr("Go to document end"), QKeySequence::MoveToEndOfDocument, pdf::PDFDrawWidgetProxy::NavigateDocumentEnd, ":/resources/next-end.svg");
|
||||||
QAction* actionGoToNextPage = createGoToAction(ui->menuGoTo, tr("Go to next page"), QKeySequence::MoveToNextPage, pdf::PDFDrawWidgetProxy::NavigateNextPage, ":/resources/next-page.svg");
|
QAction* actionGoToNextPage = createGoToAction(ui->menuGoTo, "actionGoToNextPage", tr("Go to next page"), QKeySequence::MoveToNextPage, pdf::PDFDrawWidgetProxy::NavigateNextPage, ":/resources/next-page.svg");
|
||||||
QAction* actionGoToPreviousPage = createGoToAction(ui->menuGoTo, tr("Go to previous page"), QKeySequence::MoveToPreviousPage, pdf::PDFDrawWidgetProxy::NavigatePreviousPage, ":/resources/previous-page.svg");
|
QAction* actionGoToPreviousPage = createGoToAction(ui->menuGoTo, "actionGoToPreviousPage", tr("Go to previous page"), QKeySequence::MoveToPreviousPage, pdf::PDFDrawWidgetProxy::NavigatePreviousPage, ":/resources/previous-page.svg");
|
||||||
createGoToAction(ui->menuGoTo, tr("Go to next line"), QKeySequence::MoveToNextLine, pdf::PDFDrawWidgetProxy::NavigateNextStep, ":/resources/next.svg");
|
createGoToAction(ui->menuGoTo, "actionGoToNextLine", tr("Go to next line"), QKeySequence::MoveToNextLine, pdf::PDFDrawWidgetProxy::NavigateNextStep, ":/resources/next.svg");
|
||||||
createGoToAction(ui->menuGoTo, tr("Go to previous line"), QKeySequence::MoveToPreviousLine, pdf::PDFDrawWidgetProxy::NavigatePreviousStep, ":/resources/previous.svg");
|
createGoToAction(ui->menuGoTo, "actionGoToPreviousLine", tr("Go to previous line"), QKeySequence::MoveToPreviousLine, pdf::PDFDrawWidgetProxy::NavigatePreviousStep, ":/resources/previous.svg");
|
||||||
|
|
||||||
m_pageNumberSpinBox = new QSpinBox(this);
|
m_pageNumberSpinBox = new QSpinBox(this);
|
||||||
m_pageNumberLabel = new QLabel(this);
|
m_pageNumberLabel = new QLabel(this);
|
||||||
@ -176,6 +177,7 @@ PDFViewerMainWindow::PDFViewerMainWindow(QWidget *parent) :
|
|||||||
|
|
||||||
ui->menuView->addSeparator();
|
ui->menuView->addSeparator();
|
||||||
ui->menuView->addAction(m_sidebarDockWidget->toggleViewAction());
|
ui->menuView->addAction(m_sidebarDockWidget->toggleViewAction());
|
||||||
|
m_sidebarDockWidget->toggleViewAction()->setObjectName("actionSidebar");
|
||||||
|
|
||||||
connect(m_pdfWidget->getDrawWidgetProxy(), &pdf::PDFDrawWidgetProxy::drawSpaceChanged, this, &PDFViewerMainWindow::onDrawSpaceChanged);
|
connect(m_pdfWidget->getDrawWidgetProxy(), &pdf::PDFDrawWidgetProxy::drawSpaceChanged, this, &PDFViewerMainWindow::onDrawSpaceChanged);
|
||||||
connect(m_pdfWidget->getDrawWidgetProxy(), &pdf::PDFDrawWidgetProxy::pageLayoutChanged, this, &PDFViewerMainWindow::onPageLayoutChanged);
|
connect(m_pdfWidget->getDrawWidgetProxy(), &pdf::PDFDrawWidgetProxy::pageLayoutChanged, this, &PDFViewerMainWindow::onPageLayoutChanged);
|
||||||
@ -185,6 +187,7 @@ PDFViewerMainWindow::PDFViewerMainWindow(QWidget *parent) :
|
|||||||
connect(m_progress, &pdf::PDFProgress::progressStep, this, &PDFViewerMainWindow::onProgressStep);
|
connect(m_progress, &pdf::PDFProgress::progressStep, this, &PDFViewerMainWindow::onProgressStep);
|
||||||
connect(m_progress, &pdf::PDFProgress::progressFinished, this, &PDFViewerMainWindow::onProgressFinished);
|
connect(m_progress, &pdf::PDFProgress::progressFinished, this, &PDFViewerMainWindow::onProgressFinished);
|
||||||
|
|
||||||
|
readActionSettings();
|
||||||
updatePageLayoutActions();
|
updatePageLayoutActions();
|
||||||
updateUI(true);
|
updateUI(true);
|
||||||
onViewerSettingsChanged();
|
onViewerSettingsChanged();
|
||||||
@ -536,6 +539,25 @@ void PDFViewerMainWindow::readSettings()
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_settings->readSettings(settings);
|
m_settings->readSettings(settings);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void PDFViewerMainWindow::readActionSettings()
|
||||||
|
{
|
||||||
|
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QCoreApplication::organizationName(), QCoreApplication::applicationName());
|
||||||
|
|
||||||
|
// Load action shortcuts
|
||||||
|
settings.beginGroup("Actions");
|
||||||
|
for (QAction* action : getActions())
|
||||||
|
{
|
||||||
|
QString name = action->objectName();
|
||||||
|
if (!name.isEmpty() && settings.contains(name))
|
||||||
|
{
|
||||||
|
QKeySequence sequence = QKeySequence::fromString(settings.value(name, action->shortcut().toString(QKeySequence::PortableText)).toString(), QKeySequence::PortableText);
|
||||||
|
action->setShortcut(sequence);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
settings.endGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PDFViewerMainWindow::writeSettings()
|
void PDFViewerMainWindow::writeSettings()
|
||||||
@ -545,6 +567,19 @@ void PDFViewerMainWindow::writeSettings()
|
|||||||
settings.setValue("windowState", saveState());
|
settings.setValue("windowState", saveState());
|
||||||
|
|
||||||
m_settings->writeSettings(settings);
|
m_settings->writeSettings(settings);
|
||||||
|
|
||||||
|
// Save action shortcuts
|
||||||
|
settings.beginGroup("Actions");
|
||||||
|
for (QAction* action : getActions())
|
||||||
|
{
|
||||||
|
QString name = action->objectName();
|
||||||
|
if (!name.isEmpty())
|
||||||
|
{
|
||||||
|
QString accelerator = action->shortcut().toString(QKeySequence::PortableText);
|
||||||
|
settings.setValue(name, accelerator);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
settings.endGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PDFViewerMainWindow::updateTitle()
|
void PDFViewerMainWindow::updateTitle()
|
||||||
@ -773,6 +808,11 @@ std::vector<QAction*> PDFViewerMainWindow::getRenderingOptionActions() const
|
|||||||
return { ui->actionRenderOptionAntialiasing, ui->actionRenderOptionTextAntialiasing, ui->actionRenderOptionSmoothPictures, ui->actionRenderOptionIgnoreOptionalContentSettings };
|
return { ui->actionRenderOptionAntialiasing, ui->actionRenderOptionTextAntialiasing, ui->actionRenderOptionSmoothPictures, ui->actionRenderOptionIgnoreOptionalContentSettings };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QList<QAction*> PDFViewerMainWindow::getActions() const
|
||||||
|
{
|
||||||
|
return findChildren<QAction*>(QString(), Qt::FindChildrenRecursively);
|
||||||
|
}
|
||||||
|
|
||||||
int PDFViewerMainWindow::adjustDpiX(int value)
|
int PDFViewerMainWindow::adjustDpiX(int value)
|
||||||
{
|
{
|
||||||
const int physicalDpiX = this->physicalDpiX();
|
const int physicalDpiX = this->physicalDpiX();
|
||||||
@ -859,7 +899,7 @@ void PDFViewerMainWindow::on_actionRendering_Errors_triggered()
|
|||||||
|
|
||||||
void PDFViewerMainWindow::on_actionOptions_triggered()
|
void PDFViewerMainWindow::on_actionOptions_triggered()
|
||||||
{
|
{
|
||||||
PDFViewerSettingsDialog dialog(m_settings->getSettings(), this);
|
PDFViewerSettingsDialog dialog(m_settings->getSettings(), getActions(), this);
|
||||||
if (dialog.exec() == QDialog::Accepted)
|
if (dialog.exec() == QDialog::Accepted)
|
||||||
{
|
{
|
||||||
m_settings->setSettings(dialog.getSettings());
|
m_settings->setSettings(dialog.getSettings());
|
||||||
|
@ -71,13 +71,9 @@ private slots:
|
|||||||
|
|
||||||
void on_actionRendering_Errors_triggered();
|
void on_actionRendering_Errors_triggered();
|
||||||
void on_actionOptions_triggered();
|
void on_actionOptions_triggered();
|
||||||
|
|
||||||
void on_actionAbout_triggered();
|
void on_actionAbout_triggered();
|
||||||
|
|
||||||
void on_actionFitPage_triggered();
|
void on_actionFitPage_triggered();
|
||||||
|
|
||||||
void on_actionFitWidth_triggered();
|
void on_actionFitWidth_triggered();
|
||||||
|
|
||||||
void on_actionFitHeight_triggered();
|
void on_actionFitHeight_triggered();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -96,6 +92,7 @@ private:
|
|||||||
void onProgressFinished();
|
void onProgressFinished();
|
||||||
|
|
||||||
void readSettings();
|
void readSettings();
|
||||||
|
void readActionSettings();
|
||||||
void writeSettings();
|
void writeSettings();
|
||||||
|
|
||||||
void updateTitle();
|
void updateTitle();
|
||||||
@ -113,6 +110,7 @@ private:
|
|||||||
void setPageLayout(pdf::PageLayout pageLayout);
|
void setPageLayout(pdf::PageLayout pageLayout);
|
||||||
|
|
||||||
std::vector<QAction*> getRenderingOptionActions() const;
|
std::vector<QAction*> getRenderingOptionActions() const;
|
||||||
|
QList<QAction*> getActions() const;
|
||||||
|
|
||||||
int adjustDpiX(int value);
|
int adjustDpiX(int value);
|
||||||
|
|
||||||
|
@ -21,16 +21,19 @@
|
|||||||
#include "pdfglobal.h"
|
#include "pdfglobal.h"
|
||||||
#include "pdfutils.h"
|
#include "pdfutils.h"
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QLineEdit>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QListWidgetItem>
|
#include <QListWidgetItem>
|
||||||
|
|
||||||
namespace pdfviewer
|
namespace pdfviewer
|
||||||
{
|
{
|
||||||
|
|
||||||
PDFViewerSettingsDialog::PDFViewerSettingsDialog(const PDFViewerSettings::Settings& settings, QWidget *parent) :
|
PDFViewerSettingsDialog::PDFViewerSettingsDialog(const PDFViewerSettings::Settings& settings, QList<QAction*> actions, QWidget *parent) :
|
||||||
QDialog(parent),
|
QDialog(parent),
|
||||||
ui(new Ui::PDFViewerSettingsDialog),
|
ui(new Ui::PDFViewerSettingsDialog),
|
||||||
m_settings(settings),
|
m_settings(settings),
|
||||||
|
m_actions(),
|
||||||
m_isLoadingData(false)
|
m_isLoadingData(false)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
@ -39,6 +42,7 @@ PDFViewerSettingsDialog::PDFViewerSettingsDialog(const PDFViewerSettings::Settin
|
|||||||
new QListWidgetItem(QIcon(":/resources/rendering.svg"), tr("Rendering"), ui->optionsPagesWidget, RenderingSettings);
|
new QListWidgetItem(QIcon(":/resources/rendering.svg"), tr("Rendering"), ui->optionsPagesWidget, RenderingSettings);
|
||||||
new QListWidgetItem(QIcon(":/resources/shading.svg"), tr("Shading"), ui->optionsPagesWidget, ShadingSettings);
|
new QListWidgetItem(QIcon(":/resources/shading.svg"), tr("Shading"), ui->optionsPagesWidget, ShadingSettings);
|
||||||
new QListWidgetItem(QIcon(":/resources/cache.svg"), tr("Cache"), ui->optionsPagesWidget, CacheSettings);
|
new QListWidgetItem(QIcon(":/resources/cache.svg"), tr("Cache"), ui->optionsPagesWidget, CacheSettings);
|
||||||
|
new QListWidgetItem(QIcon(":/resources/shortcuts.svg"), tr("Shortcuts"), ui->optionsPagesWidget, ShortcutSettings);
|
||||||
new QListWidgetItem(QIcon(":/resources/security.svg"), tr("Security"), ui->optionsPagesWidget, SecuritySettings);
|
new QListWidgetItem(QIcon(":/resources/security.svg"), tr("Security"), ui->optionsPagesWidget, SecuritySettings);
|
||||||
|
|
||||||
ui->renderingEngineComboBox->addItem(tr("Software"), static_cast<int>(pdf::RendererEngine::Software));
|
ui->renderingEngineComboBox->addItem(tr("Software"), static_cast<int>(pdf::RendererEngine::Software));
|
||||||
@ -71,9 +75,18 @@ PDFViewerSettingsDialog::PDFViewerSettingsDialog(const PDFViewerSettings::Settin
|
|||||||
connect(spinBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &PDFViewerSettingsDialog::saveData);
|
connect(spinBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &PDFViewerSettingsDialog::saveData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (QAction* action : actions)
|
||||||
|
{
|
||||||
|
if (!action->objectName().isEmpty())
|
||||||
|
{
|
||||||
|
m_actions.append(action);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ui->optionsPagesWidget->setCurrentRow(0);
|
ui->optionsPagesWidget->setCurrentRow(0);
|
||||||
adjustSize();
|
adjustSize();
|
||||||
loadData();
|
loadData();
|
||||||
|
loadActionShortcutsTable();
|
||||||
}
|
}
|
||||||
|
|
||||||
PDFViewerSettingsDialog::~PDFViewerSettingsDialog()
|
PDFViewerSettingsDialog::~PDFViewerSettingsDialog()
|
||||||
@ -103,6 +116,10 @@ void PDFViewerSettingsDialog::on_optionsPagesWidget_currentItemChanged(QListWidg
|
|||||||
ui->stackedWidget->setCurrentWidget(ui->cachePage);
|
ui->stackedWidget->setCurrentWidget(ui->cachePage);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case ShortcutSettings:
|
||||||
|
ui->stackedWidget->setCurrentWidget(ui->shortcutsPage);
|
||||||
|
break;
|
||||||
|
|
||||||
case SecuritySettings:
|
case SecuritySettings:
|
||||||
ui->stackedWidget->setCurrentWidget(ui->securityPage);
|
ui->stackedWidget->setCurrentWidget(ui->securityPage);
|
||||||
break;
|
break;
|
||||||
@ -257,4 +274,64 @@ void PDFViewerSettingsDialog::saveData()
|
|||||||
loadData();
|
loadData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PDFViewerSettingsDialog::loadActionShortcutsTable()
|
||||||
|
{
|
||||||
|
ui->shortcutsTableWidget->setRowCount(m_actions.size());
|
||||||
|
ui->shortcutsTableWidget->setColumnCount(2);
|
||||||
|
ui->shortcutsTableWidget->setHorizontalHeaderLabels({ tr("Action"), tr("Shortcut")});
|
||||||
|
ui->shortcutsTableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||||||
|
|
||||||
|
for (int i = 0; i < m_actions.size(); ++i)
|
||||||
|
{
|
||||||
|
QAction* action = m_actions[i];
|
||||||
|
|
||||||
|
// Action name and icon
|
||||||
|
QTableWidgetItem* actionItem = new QTableWidgetItem(action->icon(), action->text());
|
||||||
|
actionItem->setFlags(Qt::ItemIsEnabled);
|
||||||
|
ui->shortcutsTableWidget->setItem(i, 0, actionItem);
|
||||||
|
|
||||||
|
// Action shortcut
|
||||||
|
QTableWidgetItem* shortcutItem = new QTableWidgetItem(action->shortcut().toString(QKeySequence::NativeText));
|
||||||
|
ui->shortcutsTableWidget->setItem(i, 1, shortcutItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool PDFViewerSettingsDialog::saveActionShortcutsTable()
|
||||||
|
{
|
||||||
|
// Jakub Melka: we need validation here
|
||||||
|
for (int i = 0; i < m_actions.size(); ++i)
|
||||||
|
{
|
||||||
|
QString shortcut = ui->shortcutsTableWidget->item(i, 1)->data(Qt::DisplayRole).toString();
|
||||||
|
if (!shortcut.isEmpty())
|
||||||
|
{
|
||||||
|
QKeySequence sequence = QKeySequence::fromString(shortcut, QKeySequence::NativeText);
|
||||||
|
if (sequence.toString(QKeySequence::PortableText).isEmpty())
|
||||||
|
{
|
||||||
|
QMessageBox::critical(this, tr("Error"), tr("Shortcut '%1' is invalid for action %2.").arg(shortcut, m_actions[i]->text()));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < m_actions.size(); ++i)
|
||||||
|
{
|
||||||
|
QAction* action = m_actions[i];
|
||||||
|
|
||||||
|
// Set shortcut to the action
|
||||||
|
QString shortcut = ui->shortcutsTableWidget->item(i, 1)->data(Qt::DisplayRole).toString();
|
||||||
|
QKeySequence sequence = QKeySequence::fromString(shortcut, QKeySequence::NativeText);
|
||||||
|
action->setShortcut(sequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PDFViewerSettingsDialog::accept()
|
||||||
|
{
|
||||||
|
if (saveActionShortcutsTable())
|
||||||
|
{
|
||||||
|
QDialog::accept();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace pdfviewer
|
} // namespace pdfviewer
|
||||||
|
@ -37,15 +37,18 @@ class PDFViewerSettingsDialog : public QDialog
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit PDFViewerSettingsDialog(const PDFViewerSettings::Settings& settings, QWidget* parent);
|
explicit PDFViewerSettingsDialog(const PDFViewerSettings::Settings& settings, QList<QAction*> actions, QWidget* parent);
|
||||||
virtual ~PDFViewerSettingsDialog() override;
|
virtual ~PDFViewerSettingsDialog() override;
|
||||||
|
|
||||||
|
virtual void accept() override;
|
||||||
|
|
||||||
enum Page : int
|
enum Page : int
|
||||||
{
|
{
|
||||||
EngineSettings,
|
EngineSettings,
|
||||||
RenderingSettings,
|
RenderingSettings,
|
||||||
ShadingSettings,
|
ShadingSettings,
|
||||||
CacheSettings,
|
CacheSettings,
|
||||||
|
ShortcutSettings,
|
||||||
SecuritySettings
|
SecuritySettings
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -58,8 +61,12 @@ private:
|
|||||||
void loadData();
|
void loadData();
|
||||||
void saveData();
|
void saveData();
|
||||||
|
|
||||||
|
void loadActionShortcutsTable();
|
||||||
|
bool saveActionShortcutsTable();
|
||||||
|
|
||||||
Ui::PDFViewerSettingsDialog* ui;
|
Ui::PDFViewerSettingsDialog* ui;
|
||||||
PDFViewerSettings::Settings m_settings;
|
PDFViewerSettings::Settings m_settings;
|
||||||
|
QList<QAction*> m_actions;
|
||||||
bool m_isLoadingData;
|
bool m_isLoadingData;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QStackedWidget" name="stackedWidget">
|
<widget class="QStackedWidget" name="stackedWidget">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>3</number>
|
<number>4</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="enginePage">
|
<widget class="QWidget" name="enginePage">
|
||||||
<layout class="QVBoxLayout" name="enginePageLayout">
|
<layout class="QVBoxLayout" name="enginePageLayout">
|
||||||
@ -532,6 +532,38 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QWidget" name="shortcutsPage">
|
||||||
|
<layout class="QVBoxLayout" name="shortcutsPageLayout">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox">
|
||||||
|
<property name="title">
|
||||||
|
<string>Shortcuts</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_5">
|
||||||
|
<item>
|
||||||
|
<widget class="QTableWidget" name="shortcutsTableWidget">
|
||||||
|
<property name="editTriggers">
|
||||||
|
<set>QAbstractItemView::AllEditTriggers</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
<widget class="QWidget" name="securityPage">
|
<widget class="QWidget" name="securityPage">
|
||||||
<layout class="QVBoxLayout" name="securityPageLayout">
|
<layout class="QVBoxLayout" name="securityPageLayout">
|
||||||
<property name="leftMargin">
|
<property name="leftMargin">
|
||||||
|
140
PdfForQtViewer/resources/shortcuts.svg
Normal file
140
PdfForQtViewer/resources/shortcuts.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 23 KiB |
Reference in New Issue
Block a user