fix: avoid create menu actions everytime when trigger context menu.
fix the minor memory leak issue, also bring some possibility to implement custom keybinding. And oops I also did another feature in this commit.. Now we are able to set mouse wheel behavior in config dialog.
This commit is contained in:
parent
b3011f47e4
commit
1449844fdd
@ -30,6 +30,7 @@ set (PPIC_CPP_FILES
|
||||
app/main.cpp
|
||||
app/framelesswindow.cpp
|
||||
app/mainwindow.cpp
|
||||
app/actionmanager.cpp
|
||||
app/graphicsview.cpp
|
||||
app/graphicsscene.cpp
|
||||
app/bottombuttongroup.cpp
|
||||
@ -47,6 +48,7 @@ set (PPIC_CPP_FILES
|
||||
set (PPIC_HEADER_FILES
|
||||
app/framelesswindow.h
|
||||
app/mainwindow.h
|
||||
app/actionmanager.h
|
||||
app/graphicsview.h
|
||||
app/graphicsscene.h
|
||||
app/bottombuttongroup.h
|
||||
|
62
app/actionmanager.cpp
Normal file
62
app/actionmanager.cpp
Normal file
@ -0,0 +1,62 @@
|
||||
#include "actionmanager.h"
|
||||
|
||||
#include "mainwindow.h"
|
||||
|
||||
#include <QCoreApplication>
|
||||
|
||||
#define CREATE_NEW_ACTION(window, action)\
|
||||
action = new QAction(window);\
|
||||
action->setObjectName(QString::fromUtf8( #action ));\
|
||||
window->addAction(action);
|
||||
|
||||
ActionManager::ActionManager()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
ActionManager::~ActionManager()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void ActionManager::setupAction(MainWindow *mainWindow)
|
||||
{
|
||||
CREATE_NEW_ACTION(mainWindow, actionCopyPixmap);
|
||||
CREATE_NEW_ACTION(mainWindow, actionCopyFilePath);
|
||||
CREATE_NEW_ACTION(mainWindow, actionPaste);
|
||||
CREATE_NEW_ACTION(mainWindow, actionToggleStayOnTop);
|
||||
CREATE_NEW_ACTION(mainWindow, actionToggleProtectMode);
|
||||
CREATE_NEW_ACTION(mainWindow, actionSettings);
|
||||
CREATE_NEW_ACTION(mainWindow, actionHelp);
|
||||
CREATE_NEW_ACTION(mainWindow, actionProperties);
|
||||
CREATE_NEW_ACTION(mainWindow, actionQuitApp);
|
||||
|
||||
retranslateUi(mainWindow);
|
||||
|
||||
QMetaObject::connectSlotsByName(mainWindow);
|
||||
}
|
||||
|
||||
void ActionManager::retranslateUi(MainWindow *mainWindow)
|
||||
{
|
||||
Q_UNUSED(mainWindow);
|
||||
|
||||
actionCopyPixmap->setText(QCoreApplication::translate("MainWindow", "Copy P&ixmap", nullptr));
|
||||
actionCopyFilePath->setText(QCoreApplication::translate("MainWindow", "Copy &File Path", nullptr));
|
||||
actionPaste->setText(QCoreApplication::translate("MainWindow", "&Paste", nullptr));
|
||||
actionToggleStayOnTop->setText(QCoreApplication::translate("MainWindow", "Stay on top", nullptr));
|
||||
actionToggleProtectMode->setText(QCoreApplication::translate("MainWindow", "Protected mode", nullptr));
|
||||
actionSettings->setText(QCoreApplication::translate("MainWindow", "Configure...", nullptr));
|
||||
actionHelp->setText(QCoreApplication::translate("MainWindow", "Help", nullptr));
|
||||
actionProperties->setText(QCoreApplication::translate("MainWindow", "Properties", nullptr));
|
||||
actionQuitApp->setText(QCoreApplication::translate("MainWindow", "Quit", nullptr));
|
||||
}
|
||||
|
||||
void ActionManager::setupShortcuts()
|
||||
{
|
||||
actionQuitApp->setShortcuts({
|
||||
QKeySequence(Qt::Key_Space),
|
||||
QKeySequence(Qt::Key_Escape)
|
||||
});
|
||||
actionQuitApp->setShortcutContext(Qt::ApplicationShortcut);
|
||||
}
|
||||
|
30
app/actionmanager.h
Normal file
30
app/actionmanager.h
Normal file
@ -0,0 +1,30 @@
|
||||
#ifndef ACTIONMANAGER_H
|
||||
#define ACTIONMANAGER_H
|
||||
|
||||
#include <QAction>
|
||||
|
||||
class MainWindow;
|
||||
|
||||
class ActionManager
|
||||
{
|
||||
public:
|
||||
ActionManager();
|
||||
~ActionManager();
|
||||
|
||||
void setupAction(MainWindow * mainWindow);
|
||||
void retranslateUi(MainWindow *MainWindow);
|
||||
void setupShortcuts();
|
||||
|
||||
public:
|
||||
QAction *actionCopyPixmap;
|
||||
QAction *actionCopyFilePath;
|
||||
QAction *actionPaste;
|
||||
QAction *actionToggleStayOnTop;
|
||||
QAction *actionToggleProtectMode;
|
||||
QAction *actionSettings;
|
||||
QAction *actionHelp;
|
||||
QAction *actionProperties;
|
||||
QAction *actionQuitApp;
|
||||
};
|
||||
|
||||
#endif // ACTIONMANAGER_H
|
@ -10,6 +10,7 @@
|
||||
#include "aboutdialog.h"
|
||||
#include "metadatamodel.h"
|
||||
#include "metadatadialog.h"
|
||||
#include "actionmanager.h"
|
||||
|
||||
#include <QMouseEvent>
|
||||
#include <QMovie>
|
||||
@ -25,9 +26,11 @@
|
||||
#include <QClipboard>
|
||||
#include <QMimeData>
|
||||
#include <QWindow>
|
||||
#include <QTimer>
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent) :
|
||||
FramelessWindow(parent)
|
||||
MainWindow::MainWindow(QWidget *parent)
|
||||
: FramelessWindow(parent)
|
||||
, m_am(new ActionManager)
|
||||
{
|
||||
if (Settings::instance()->stayOnTop()) {
|
||||
this->setWindowFlag(Qt::WindowStaysOnTopHint);
|
||||
@ -110,7 +113,7 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||
connect(m_bottomButtonGroup, &BottomButtonGroup::zoomInBtnClicked,
|
||||
this, [ = ](){ m_graphicsView->zoomView(1.25); });
|
||||
connect(m_bottomButtonGroup, &BottomButtonGroup::zoomOutBtnClicked,
|
||||
this, [ = ](){ m_graphicsView->zoomView(0.75); });
|
||||
this, [ = ](){ m_graphicsView->zoomView(0.8); });
|
||||
connect(m_bottomButtonGroup, &BottomButtonGroup::toggleCheckerboardBtnClicked,
|
||||
this, [ = ](){ m_graphicsView->toggleCheckerboard(); });
|
||||
connect(m_bottomButtonGroup, &BottomButtonGroup::rotateRightBtnClicked,
|
||||
@ -130,14 +133,6 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||
m_nextButton->setVisible(isGalleryAvailable());
|
||||
});
|
||||
|
||||
QShortcut * quitAppShorucut = new QShortcut(QKeySequence(Qt::Key_Space), this);
|
||||
connect(quitAppShorucut, &QShortcut::activated,
|
||||
std::bind(&MainWindow::quitAppAction, this, false));
|
||||
|
||||
QShortcut * quitAppShorucut2 = new QShortcut(QKeySequence(Qt::Key_Escape), this);
|
||||
connect(quitAppShorucut2, &QShortcut::activated,
|
||||
std::bind(&MainWindow::quitAppAction, this, false));
|
||||
|
||||
QShortcut * prevPictureShorucut = new QShortcut(QKeySequence(Qt::Key_PageUp), this);
|
||||
connect(prevPictureShorucut, &QShortcut::activated,
|
||||
this, &MainWindow::galleryPrev);
|
||||
@ -150,7 +145,13 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||
connect(fullscreenShorucut, &QShortcut::activated,
|
||||
this, &MainWindow::toggleFullscreen);
|
||||
|
||||
m_am->setupAction(this);
|
||||
|
||||
centerWindow();
|
||||
|
||||
QTimer::singleShot(0, this, [this](){
|
||||
m_am->setupShortcuts();
|
||||
});
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
@ -370,19 +371,29 @@ void MainWindow::mouseDoubleClickEvent(QMouseEvent *event)
|
||||
void MainWindow::wheelEvent(QWheelEvent *event)
|
||||
{
|
||||
QPoint numDegrees = event->angleDelta() / 8;
|
||||
bool needZoom = false, zoomIn = false;
|
||||
bool needWeelEvent = false, wheelUp = false;
|
||||
bool actionIsZoom = event->modifiers().testFlag(Qt::ControlModifier)
|
||||
|| Settings::instance()->mouseWheelBehavior() == ActionZoomImage;
|
||||
|
||||
// NOTE: Only checking angleDelta since the QWheelEvent::pixelDelta() doc says
|
||||
// pixelDelta() value is driver specific and unreliable on X11...
|
||||
// We are not scrolling the canvas, just zoom in or out, so it probably
|
||||
// doesn't matter here.
|
||||
if (!numDegrees.isNull() && numDegrees.y() != 0) {
|
||||
needZoom = true;
|
||||
zoomIn = numDegrees.y() > 0;
|
||||
needWeelEvent = true;
|
||||
wheelUp = numDegrees.y() > 0;
|
||||
}
|
||||
|
||||
if (needZoom) {
|
||||
m_graphicsView->zoomView(zoomIn ? 1.25 : 0.8);
|
||||
if (needWeelEvent) {
|
||||
if (actionIsZoom) {
|
||||
m_graphicsView->zoomView(wheelUp ? 1.25 : 0.8);
|
||||
} else {
|
||||
if (wheelUp) {
|
||||
galleryPrev();
|
||||
} else {
|
||||
galleryNext();
|
||||
}
|
||||
}
|
||||
event->accept();
|
||||
} else {
|
||||
FramelessWindow::wheelEvent(event);
|
||||
@ -404,97 +415,38 @@ void MainWindow::contextMenuEvent(QContextMenuEvent *event)
|
||||
QImage clipboardImage;
|
||||
QUrl clipboardFileUrl;
|
||||
|
||||
const QMimeData * clipboardData = QApplication::clipboard()->mimeData();
|
||||
if (clipboardData->hasImage()) {
|
||||
QVariant imageVariant(clipboardData->imageData());
|
||||
if (imageVariant.isValid()) {
|
||||
clipboardImage = qvariant_cast<QImage>(imageVariant);
|
||||
}
|
||||
} else if (clipboardData->hasText()) {
|
||||
QString clipboardText(clipboardData->text());
|
||||
if (clipboardText.startsWith("PICTURE:")) {
|
||||
QString maybeFilename(clipboardText.mid(8));
|
||||
if (QFile::exists(maybeFilename)) {
|
||||
clipboardFileUrl = QUrl::fromLocalFile(maybeFilename);
|
||||
}
|
||||
}
|
||||
}
|
||||
QAction * copyPixmap = m_am->actionCopyPixmap;
|
||||
QAction * copyFilePath = m_am->actionCopyFilePath;
|
||||
|
||||
QAction * copyPixmap = new QAction(tr("Copy P&ixmap"));
|
||||
connect(copyPixmap, &QAction::triggered, this, [ = ](){
|
||||
QClipboard *cb = QApplication::clipboard();
|
||||
cb->setPixmap(m_graphicsView->scene()->renderToPixmap());
|
||||
});
|
||||
QAction * copyFilePath = new QAction(tr("Copy &File Path"));
|
||||
connect(copyFilePath, &QAction::triggered, this, [ = ](){
|
||||
QClipboard *cb = QApplication::clipboard();
|
||||
cb->setText(currentFileUrl.toLocalFile());
|
||||
});
|
||||
copyMenu->addAction(copyPixmap);
|
||||
if (currentFileUrl.isValid()) {
|
||||
copyMenu->addAction(copyFilePath);
|
||||
}
|
||||
|
||||
QAction * pasteImage = new QAction(tr("&Paste Image"));
|
||||
connect(pasteImage, &QAction::triggered, this, [ = ](){
|
||||
clearGallery();
|
||||
m_graphicsView->showImage(clipboardImage);
|
||||
});
|
||||
QAction * paste = m_am->actionPaste;
|
||||
|
||||
QAction * pasteImageFile = new QAction(tr("&Paste Image File"));
|
||||
connect(pasteImageFile, &QAction::triggered, this, [ = ](){
|
||||
m_graphicsView->showFileFromUrl(clipboardFileUrl, true);
|
||||
});
|
||||
|
||||
QAction * stayOnTopMode = new QAction(tr("Stay on top"));
|
||||
connect(stayOnTopMode, &QAction::triggered, this, [ = ](){
|
||||
toggleStayOnTop();
|
||||
});
|
||||
QAction * stayOnTopMode = m_am->actionToggleStayOnTop;
|
||||
stayOnTopMode->setCheckable(true);
|
||||
stayOnTopMode->setChecked(stayOnTop());
|
||||
|
||||
QAction * protectedMode = new QAction(tr("Protected mode"));
|
||||
connect(protectedMode, &QAction::triggered, this, [ = ](){
|
||||
toggleProtectedMode();
|
||||
});
|
||||
QAction * protectedMode = m_am->actionToggleProtectMode;
|
||||
protectedMode->setCheckable(true);
|
||||
protectedMode->setChecked(m_protectedMode);
|
||||
|
||||
QAction * toggleSettings = new QAction(tr("Configure..."));
|
||||
connect(toggleSettings, &QAction::triggered, this, [ = ](){
|
||||
SettingsDialog * sd = new SettingsDialog(this);
|
||||
sd->exec();
|
||||
sd->deleteLater();
|
||||
});
|
||||
|
||||
QAction * helpAction = new QAction(tr("Help"));
|
||||
connect(helpAction, &QAction::triggered, this, [ = ](){
|
||||
AboutDialog * ad = new AboutDialog(this);
|
||||
ad->exec();
|
||||
ad->deleteLater();
|
||||
});
|
||||
|
||||
QAction * propertiesAction = new QAction(tr("Properties"));
|
||||
connect(propertiesAction, &QAction::triggered, this, [ = ](){
|
||||
MetadataModel * md = new MetadataModel();
|
||||
md->setFile(currentFileUrl.toLocalFile());
|
||||
|
||||
MetadataDialog * ad = new MetadataDialog(this);
|
||||
ad->setMetadataModel(md);
|
||||
ad->exec();
|
||||
ad->deleteLater();
|
||||
});
|
||||
QAction * toggleSettings = m_am->actionSettings;
|
||||
QAction * helpAction = m_am->actionHelp;
|
||||
QAction * propertiesAction = m_am->actionProperties;
|
||||
|
||||
if (copyMenu->actions().count() == 1) {
|
||||
menu->addActions(copyMenu->actions());
|
||||
} else {
|
||||
menu->addMenu(copyMenu);
|
||||
}
|
||||
if (!clipboardImage.isNull()) {
|
||||
menu->addAction(pasteImage);
|
||||
} else if (clipboardFileUrl.isValid()) {
|
||||
menu->addAction(pasteImageFile);
|
||||
|
||||
if (canPaste()) {
|
||||
menu->addAction(paste);
|
||||
}
|
||||
|
||||
menu->addSeparator();
|
||||
menu->addAction(stayOnTopMode);
|
||||
menu->addAction(protectedMode);
|
||||
@ -507,6 +459,7 @@ void MainWindow::contextMenuEvent(QContextMenuEvent *event)
|
||||
}
|
||||
menu->exec(mapToGlobal(event->pos()));
|
||||
menu->deleteLater();
|
||||
copyMenu->deleteLater();
|
||||
|
||||
return FramelessWindow::contextMenuEvent(event);
|
||||
}
|
||||
@ -563,6 +516,22 @@ bool MainWindow::stayOnTop()
|
||||
return windowFlags().testFlag(Qt::WindowStaysOnTopHint);
|
||||
}
|
||||
|
||||
bool MainWindow::canPaste()
|
||||
{
|
||||
const QMimeData * clipboardData = QApplication::clipboard()->mimeData();
|
||||
if (clipboardData->hasImage()) {
|
||||
return true;
|
||||
} else if (clipboardData->hasText()) {
|
||||
QString clipboardText(clipboardData->text());
|
||||
if (clipboardText.startsWith("PICTURE:")) {
|
||||
QString maybeFilename(clipboardText.mid(8));
|
||||
if (QFile::exists(maybeFilename)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::quitAppAction(bool force)
|
||||
{
|
||||
if (!m_protectedMode || force) {
|
||||
@ -592,3 +561,90 @@ QSize MainWindow::sizeHint() const
|
||||
{
|
||||
return QSize(710, 530);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionCopyPixmap_triggered()
|
||||
{
|
||||
QClipboard *cb = QApplication::clipboard();
|
||||
cb->setPixmap(m_graphicsView->scene()->renderToPixmap());
|
||||
}
|
||||
|
||||
void MainWindow::on_actionCopyFilePath_triggered()
|
||||
{
|
||||
QUrl currentFileUrl(currentImageFileUrl());
|
||||
if (currentFileUrl.isValid()) {
|
||||
QClipboard *cb = QApplication::clipboard();
|
||||
cb->setText(currentFileUrl.toLocalFile());
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_actionPaste_triggered()
|
||||
{
|
||||
QImage clipboardImage;
|
||||
QUrl clipboardFileUrl;
|
||||
|
||||
const QMimeData * clipboardData = QApplication::clipboard()->mimeData();
|
||||
if (clipboardData->hasImage()) {
|
||||
QVariant imageVariant(clipboardData->imageData());
|
||||
if (imageVariant.isValid()) {
|
||||
clipboardImage = qvariant_cast<QImage>(imageVariant);
|
||||
}
|
||||
} else if (clipboardData->hasText()) {
|
||||
QString clipboardText(clipboardData->text());
|
||||
if (clipboardText.startsWith("PICTURE:")) {
|
||||
QString maybeFilename(clipboardText.mid(8));
|
||||
if (QFile::exists(maybeFilename)) {
|
||||
clipboardFileUrl = QUrl::fromLocalFile(maybeFilename);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!clipboardImage.isNull()) {
|
||||
clearGallery();
|
||||
m_graphicsView->showImage(clipboardImage);
|
||||
} else if (clipboardFileUrl.isValid()) {
|
||||
m_graphicsView->showFileFromUrl(clipboardFileUrl, true);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_actionToggleStayOnTop_triggered()
|
||||
{
|
||||
toggleStayOnTop();
|
||||
}
|
||||
|
||||
void MainWindow::on_actionToggleProtectMode_triggered()
|
||||
{
|
||||
toggleProtectedMode();
|
||||
}
|
||||
|
||||
void MainWindow::on_actionSettings_triggered()
|
||||
{
|
||||
SettingsDialog * sd = new SettingsDialog(this);
|
||||
sd->exec();
|
||||
sd->deleteLater();
|
||||
}
|
||||
|
||||
void MainWindow::on_actionHelp_triggered()
|
||||
{
|
||||
AboutDialog * ad = new AboutDialog(this);
|
||||
ad->exec();
|
||||
ad->deleteLater();
|
||||
}
|
||||
|
||||
void MainWindow::on_actionProperties_triggered()
|
||||
{
|
||||
QUrl currentFileUrl = currentImageFileUrl();
|
||||
if (!currentFileUrl.isValid()) return;
|
||||
|
||||
MetadataModel * md = new MetadataModel();
|
||||
md->setFile(currentFileUrl.toLocalFile());
|
||||
|
||||
MetadataDialog * ad = new MetadataDialog(this);
|
||||
ad->setMetadataModel(md);
|
||||
ad->exec();
|
||||
ad->deleteLater();
|
||||
}
|
||||
|
||||
void MainWindow::on_actionQuitApp_triggered()
|
||||
{
|
||||
quitAppAction(false);
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ class QGraphicsOpacityEffect;
|
||||
class QGraphicsView;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
class ActionManager;
|
||||
class ToolButton;
|
||||
class GraphicsView;
|
||||
class NavigatorView;
|
||||
@ -55,6 +56,7 @@ protected slots:
|
||||
void toggleProtectedMode();
|
||||
void toggleStayOnTop();
|
||||
bool stayOnTop();
|
||||
bool canPaste();
|
||||
void quitAppAction(bool force = false);
|
||||
void toggleFullscreen();
|
||||
void toggleMaximize();
|
||||
@ -62,7 +64,20 @@ protected slots:
|
||||
protected:
|
||||
QSize sizeHint() const override;
|
||||
|
||||
private slots:
|
||||
void on_actionCopyPixmap_triggered();
|
||||
void on_actionCopyFilePath_triggered();
|
||||
void on_actionPaste_triggered();
|
||||
void on_actionToggleStayOnTop_triggered();
|
||||
void on_actionToggleProtectMode_triggered();
|
||||
void on_actionSettings_triggered();
|
||||
void on_actionHelp_triggered();
|
||||
void on_actionProperties_triggered();
|
||||
void on_actionQuitApp_triggered();
|
||||
|
||||
private:
|
||||
ActionManager *m_am;
|
||||
|
||||
QPoint m_oldMousePos;
|
||||
QPropertyAnimation *m_fadeOutAnimation;
|
||||
QPropertyAnimation *m_floatUpAnimation;
|
||||
|
@ -28,6 +28,13 @@ DoubleClickBehavior Settings::doubleClickBehavior()
|
||||
return stringToDoubleClickBehavior(result);
|
||||
}
|
||||
|
||||
MouseWheelBehavior Settings::mouseWheelBehavior()
|
||||
{
|
||||
QString result = m_qsettings->value("mouse_wheel_behavior", "close").toString().toLower();
|
||||
|
||||
return stringToMouseWheelBehavior(result);
|
||||
}
|
||||
|
||||
void Settings::setStayOnTop(bool on)
|
||||
{
|
||||
m_qsettings->setValue("stay_on_top", on);
|
||||
@ -40,6 +47,12 @@ void Settings::setDoubleClickBehavior(DoubleClickBehavior dcb)
|
||||
m_qsettings->sync();
|
||||
}
|
||||
|
||||
void Settings::setMouseWheelBehavior(MouseWheelBehavior mwb)
|
||||
{
|
||||
m_qsettings->setValue("mouse_wheel_behavior", mouseWheelBehaviorToString(mwb));
|
||||
m_qsettings->sync();
|
||||
}
|
||||
|
||||
QString Settings::doubleClickBehaviorToString(DoubleClickBehavior dcb)
|
||||
{
|
||||
static QMap<DoubleClickBehavior, QString> _map {
|
||||
@ -51,6 +64,16 @@ QString Settings::doubleClickBehaviorToString(DoubleClickBehavior dcb)
|
||||
return _map.value(dcb, "close");
|
||||
}
|
||||
|
||||
QString Settings::mouseWheelBehaviorToString(MouseWheelBehavior mwb)
|
||||
{
|
||||
static QMap<MouseWheelBehavior, QString> _map {
|
||||
{ActionZoomImage, "zoom"},
|
||||
{ActionPrevNextImage, "switch"}
|
||||
};
|
||||
|
||||
return _map.value(mwb, "zoom");
|
||||
}
|
||||
|
||||
DoubleClickBehavior Settings::stringToDoubleClickBehavior(QString str)
|
||||
{
|
||||
static QMap<QString, DoubleClickBehavior> _map {
|
||||
@ -62,6 +85,16 @@ DoubleClickBehavior Settings::stringToDoubleClickBehavior(QString str)
|
||||
return _map.value(str, ActionCloseWindow);
|
||||
}
|
||||
|
||||
MouseWheelBehavior Settings::stringToMouseWheelBehavior(QString str)
|
||||
{
|
||||
static QMap<QString, MouseWheelBehavior> _map {
|
||||
{"zoom", ActionZoomImage},
|
||||
{"switch", ActionPrevNextImage}
|
||||
};
|
||||
|
||||
return _map.value(str, ActionZoomImage);
|
||||
}
|
||||
|
||||
Settings::Settings()
|
||||
: QObject(qApp)
|
||||
{
|
||||
|
@ -8,8 +8,16 @@ enum DoubleClickBehavior {
|
||||
ActionCloseWindow,
|
||||
ActionMaximizeWindow,
|
||||
|
||||
ActionStart = ActionDoNothing,
|
||||
ActionEnd = ActionMaximizeWindow
|
||||
DCActionStart = ActionDoNothing,
|
||||
DCActionEnd = ActionMaximizeWindow
|
||||
};
|
||||
|
||||
enum MouseWheelBehavior {
|
||||
ActionZoomImage,
|
||||
ActionPrevNextImage,
|
||||
|
||||
MWActionStart = ActionZoomImage,
|
||||
MWActionEnd = ActionPrevNextImage
|
||||
};
|
||||
|
||||
class Settings : public QObject
|
||||
@ -20,12 +28,16 @@ public:
|
||||
|
||||
bool stayOnTop();
|
||||
DoubleClickBehavior doubleClickBehavior();
|
||||
MouseWheelBehavior mouseWheelBehavior();
|
||||
|
||||
void setStayOnTop(bool on);
|
||||
void setDoubleClickBehavior(DoubleClickBehavior dcb);
|
||||
void setMouseWheelBehavior(MouseWheelBehavior mwb);
|
||||
|
||||
static QString doubleClickBehaviorToString(DoubleClickBehavior dcb);
|
||||
static QString mouseWheelBehaviorToString(MouseWheelBehavior mwb);
|
||||
static DoubleClickBehavior stringToDoubleClickBehavior(QString str);
|
||||
static MouseWheelBehavior stringToMouseWheelBehavior(QString str);
|
||||
|
||||
private:
|
||||
Settings();
|
||||
|
@ -11,29 +11,44 @@ SettingsDialog::SettingsDialog(QWidget *parent)
|
||||
: QDialog(parent)
|
||||
, m_stayOnTop(new QCheckBox)
|
||||
, m_doubleClickBehavior(new QComboBox)
|
||||
, m_mouseWheelBehavior(new QComboBox)
|
||||
{
|
||||
this->setWindowTitle(tr("Settings"));
|
||||
|
||||
QFormLayout * settingsForm = new QFormLayout(this);
|
||||
|
||||
static QMap<DoubleClickBehavior, QString> _map {
|
||||
static QMap<DoubleClickBehavior, QString> _dc_map {
|
||||
{ ActionDoNothing, tr("Do nothing") },
|
||||
{ ActionCloseWindow, tr("Close the window") },
|
||||
{ ActionMaximizeWindow, tr("Toggle maximize") }
|
||||
};
|
||||
|
||||
QStringList dropDown;
|
||||
for (int dcb = ActionStart; dcb <= ActionEnd; dcb++) {
|
||||
dropDown.append(_map.value(static_cast<DoubleClickBehavior>(dcb)));
|
||||
static QMap<MouseWheelBehavior, QString> _mw_map {
|
||||
{ ActionZoomImage, tr("Zoom in and out") },
|
||||
{ ActionPrevNextImage, tr("View next or previous item") }
|
||||
};
|
||||
|
||||
QStringList dcbDropDown;
|
||||
for (int dcb = DCActionStart; dcb <= DCActionEnd; dcb++) {
|
||||
dcbDropDown.append(_dc_map.value(static_cast<DoubleClickBehavior>(dcb)));
|
||||
}
|
||||
|
||||
QStringList mwbDropDown;
|
||||
for (int mwb = MWActionStart; mwb <= MWActionEnd; mwb++) {
|
||||
mwbDropDown.append(_mw_map.value(static_cast<MouseWheelBehavior>(mwb)));
|
||||
}
|
||||
|
||||
settingsForm->addRow(tr("Stay on top when start-up"), m_stayOnTop);
|
||||
settingsForm->addRow(tr("Double-click behavior"), m_doubleClickBehavior);
|
||||
settingsForm->addRow(tr("Mouse wheel behavior"), m_mouseWheelBehavior);
|
||||
|
||||
m_stayOnTop->setChecked(Settings::instance()->stayOnTop());
|
||||
m_doubleClickBehavior->setModel(new QStringListModel(dropDown));
|
||||
m_doubleClickBehavior->setModel(new QStringListModel(dcbDropDown));
|
||||
DoubleClickBehavior dcb = Settings::instance()->doubleClickBehavior();
|
||||
m_doubleClickBehavior->setCurrentIndex(static_cast<int>(dcb));
|
||||
m_mouseWheelBehavior->setModel(new QStringListModel(mwbDropDown));
|
||||
MouseWheelBehavior mwb = Settings::instance()->mouseWheelBehavior();
|
||||
m_mouseWheelBehavior->setCurrentIndex(static_cast<int>(mwb));
|
||||
|
||||
connect(m_stayOnTop, &QCheckBox::stateChanged, this, [ = ](int state){
|
||||
Settings::instance()->setStayOnTop(state == Qt::Checked);
|
||||
@ -43,6 +58,10 @@ SettingsDialog::SettingsDialog(QWidget *parent)
|
||||
Settings::instance()->setDoubleClickBehavior(static_cast<DoubleClickBehavior>(index));
|
||||
});
|
||||
|
||||
connect(m_mouseWheelBehavior, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [ = ](int index){
|
||||
Settings::instance()->setMouseWheelBehavior(static_cast<MouseWheelBehavior>(index));
|
||||
});
|
||||
|
||||
this->setMinimumSize(300, 61); // not sure why it complain "Unable to set geometry"
|
||||
setWindowFlag(Qt::WindowContextHelpButtonHint, false);
|
||||
}
|
||||
|
@ -20,6 +20,7 @@ public slots:
|
||||
private:
|
||||
QCheckBox * m_stayOnTop = nullptr;
|
||||
QComboBox * m_doubleClickBehavior = nullptr;
|
||||
QComboBox * m_mouseWheelBehavior = nullptr;
|
||||
};
|
||||
|
||||
#endif // SETTINGSDIALOG_H
|
||||
|
@ -200,62 +200,62 @@
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="176"/>
|
||||
<location filename="../app/mainwindow.cpp" line="173"/>
|
||||
<source>File url list is empty</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="406"/>
|
||||
<location filename="../app/mainwindow.cpp" line="413"/>
|
||||
<source>&Copy</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="427"/>
|
||||
<location filename="../app/actionmanager.cpp" line="43"/>
|
||||
<source>Copy P&ixmap</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="432"/>
|
||||
<location filename="../app/actionmanager.cpp" line="44"/>
|
||||
<source>Copy &File Path</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="442"/>
|
||||
<source>&Paste Image</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="448"/>
|
||||
<source>&Paste Image File</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="481"/>
|
||||
<location filename="../app/actionmanager.cpp" line="50"/>
|
||||
<source>Properties</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/aboutdialog.cpp" line="31"/>
|
||||
<location filename="../app/mainwindow.cpp" line="453"/>
|
||||
<location filename="../app/actionmanager.cpp" line="46"/>
|
||||
<source>Stay on top</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/aboutdialog.cpp" line="35"/>
|
||||
<location filename="../app/mainwindow.cpp" line="460"/>
|
||||
<location filename="../app/actionmanager.cpp" line="47"/>
|
||||
<source>Protected mode</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="467"/>
|
||||
<location filename="../app/actionmanager.cpp" line="45"/>
|
||||
<source>&Paste</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/actionmanager.cpp" line="48"/>
|
||||
<source>Configure...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="474"/>
|
||||
<location filename="../app/actionmanager.cpp" line="49"/>
|
||||
<source>Help</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/actionmanager.cpp" line="51"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MetadataDialog</name>
|
||||
@ -548,35 +548,50 @@
|
||||
<context>
|
||||
<name>SettingsDialog</name>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="15"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="16"/>
|
||||
<source>Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="20"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="21"/>
|
||||
<source>Do nothing</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="21"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="22"/>
|
||||
<source>Close the window</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="22"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="23"/>
|
||||
<source>Toggle maximize</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="30"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="27"/>
|
||||
<source>Zoom in and out</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="28"/>
|
||||
<source>View next or previous item</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="41"/>
|
||||
<source>Stay on top when start-up</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="31"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="42"/>
|
||||
<source>Double-click behavior</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="43"/>
|
||||
<source>Mouse wheel behavior</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>main</name>
|
||||
|
@ -204,62 +204,70 @@
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="176"/>
|
||||
<location filename="../app/mainwindow.cpp" line="173"/>
|
||||
<source>File url list is empty</source>
|
||||
<translation>Die Datei-URL-Liste ist leer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="406"/>
|
||||
<location filename="../app/mainwindow.cpp" line="413"/>
|
||||
<source>&Copy</source>
|
||||
<translation>&Kopieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="427"/>
|
||||
<location filename="../app/actionmanager.cpp" line="43"/>
|
||||
<source>Copy P&ixmap</source>
|
||||
<translation>P&ixmap kopieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="432"/>
|
||||
<location filename="../app/actionmanager.cpp" line="44"/>
|
||||
<source>Copy &File Path</source>
|
||||
<translation>&Dateipfad kopieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="442"/>
|
||||
<source>&Paste Image</source>
|
||||
<translation>Bild &einfügen</translation>
|
||||
<translation type="vanished">Bild &einfügen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="448"/>
|
||||
<source>&Paste Image File</source>
|
||||
<translation>Bilddatei &einfügen</translation>
|
||||
<translation type="vanished">Bilddatei &einfügen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="481"/>
|
||||
<location filename="../app/actionmanager.cpp" line="50"/>
|
||||
<source>Properties</source>
|
||||
<translation>Eigenschaften</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/aboutdialog.cpp" line="31"/>
|
||||
<location filename="../app/mainwindow.cpp" line="453"/>
|
||||
<location filename="../app/actionmanager.cpp" line="46"/>
|
||||
<source>Stay on top</source>
|
||||
<translation>Oben bleiben</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/aboutdialog.cpp" line="35"/>
|
||||
<location filename="../app/mainwindow.cpp" line="460"/>
|
||||
<location filename="../app/actionmanager.cpp" line="47"/>
|
||||
<source>Protected mode</source>
|
||||
<translation>Geschützter Modus</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="467"/>
|
||||
<source>Configure...</source>
|
||||
<translation>Konfigurieren …</translation>
|
||||
<location filename="../app/actionmanager.cpp" line="45"/>
|
||||
<source>&Paste</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="474"/>
|
||||
<location filename="../app/actionmanager.cpp" line="48"/>
|
||||
<source>Configure...</source>
|
||||
<translation>Konfigurieren …</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/actionmanager.cpp" line="49"/>
|
||||
<source>Help</source>
|
||||
<translation>Hilfe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/actionmanager.cpp" line="51"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MetadataDialog</name>
|
||||
@ -456,7 +464,7 @@
|
||||
<message>
|
||||
<location filename="../app/metadatamodel.cpp" line="107"/>
|
||||
<source>35mm focal length</source>
|
||||
<translation>35 mm Brennweite</translation>
|
||||
<translation>35 mm Brennweite</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/metadatamodel.cpp" line="110"/>
|
||||
@ -552,35 +560,50 @@
|
||||
<context>
|
||||
<name>SettingsDialog</name>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="15"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="16"/>
|
||||
<source>Settings</source>
|
||||
<translation>Einstellungen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="20"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="21"/>
|
||||
<source>Do nothing</source>
|
||||
<translation>Nichts tun</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="21"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="22"/>
|
||||
<source>Close the window</source>
|
||||
<translation>Fenster schließen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="22"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="23"/>
|
||||
<source>Toggle maximize</source>
|
||||
<translation>Maximieren umschalten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="30"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="27"/>
|
||||
<source>Zoom in and out</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="28"/>
|
||||
<source>View next or previous item</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="41"/>
|
||||
<source>Stay on top when start-up</source>
|
||||
<translation>Beim Start oben bleiben</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="31"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="42"/>
|
||||
<source>Double-click behavior</source>
|
||||
<translation>Doppelklickverhalten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="43"/>
|
||||
<source>Mouse wheel behavior</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>main</name>
|
||||
|
@ -200,62 +200,62 @@
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="176"/>
|
||||
<location filename="../app/mainwindow.cpp" line="173"/>
|
||||
<source>File url list is empty</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="406"/>
|
||||
<location filename="../app/mainwindow.cpp" line="413"/>
|
||||
<source>&Copy</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="427"/>
|
||||
<location filename="../app/actionmanager.cpp" line="43"/>
|
||||
<source>Copy P&ixmap</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="432"/>
|
||||
<location filename="../app/actionmanager.cpp" line="44"/>
|
||||
<source>Copy &File Path</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="442"/>
|
||||
<source>&Paste Image</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="448"/>
|
||||
<source>&Paste Image File</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="481"/>
|
||||
<location filename="../app/actionmanager.cpp" line="50"/>
|
||||
<source>Properties</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/aboutdialog.cpp" line="31"/>
|
||||
<location filename="../app/mainwindow.cpp" line="453"/>
|
||||
<location filename="../app/actionmanager.cpp" line="46"/>
|
||||
<source>Stay on top</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/aboutdialog.cpp" line="35"/>
|
||||
<location filename="../app/mainwindow.cpp" line="460"/>
|
||||
<location filename="../app/actionmanager.cpp" line="47"/>
|
||||
<source>Protected mode</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="467"/>
|
||||
<location filename="../app/actionmanager.cpp" line="45"/>
|
||||
<source>&Paste</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/actionmanager.cpp" line="48"/>
|
||||
<source>Configure...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="474"/>
|
||||
<location filename="../app/actionmanager.cpp" line="49"/>
|
||||
<source>Help</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/actionmanager.cpp" line="51"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MetadataDialog</name>
|
||||
@ -548,35 +548,50 @@
|
||||
<context>
|
||||
<name>SettingsDialog</name>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="15"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="16"/>
|
||||
<source>Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="20"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="21"/>
|
||||
<source>Do nothing</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="21"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="22"/>
|
||||
<source>Close the window</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="22"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="23"/>
|
||||
<source>Toggle maximize</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="30"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="27"/>
|
||||
<source>Zoom in and out</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="28"/>
|
||||
<source>View next or previous item</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="41"/>
|
||||
<source>Stay on top when start-up</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="31"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="42"/>
|
||||
<source>Double-click behavior</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="43"/>
|
||||
<source>Mouse wheel behavior</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>main</name>
|
||||
|
@ -21,7 +21,7 @@
|
||||
<message>
|
||||
<location filename="../app/aboutdialog.cpp" line="28"/>
|
||||
<source>Context menu option explanation:</source>
|
||||
<translation>Explication des options du menu contextuel :</translation>
|
||||
<translation>Explication des options du menu contextuel :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/aboutdialog.cpp" line="32"/>
|
||||
@ -36,7 +36,7 @@
|
||||
<message>
|
||||
<location filename="../app/aboutdialog.cpp" line="45"/>
|
||||
<source>Version: %1</source>
|
||||
<translation>Version : %1</translation>
|
||||
<translation>Version : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/aboutdialog.cpp" line="48"/>
|
||||
@ -87,7 +87,7 @@
|
||||
<location filename="../app/aboutdialog.cpp" line="115"/>
|
||||
<source>%1 is built on the following free software libraries:</source>
|
||||
<comment>Free as in freedom</comment>
|
||||
<translation>%1 est basé sur les bibliothèques de logiciels libres suivantes :</translation>
|
||||
<translation>%1 est basé sur les bibliothèques de logiciels libres suivantes :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/aboutdialog.cpp" line="139"/>
|
||||
@ -112,7 +112,7 @@
|
||||
<message>
|
||||
<location filename="../app/aboutdialog.cpp" line="80"/>
|
||||
<source>This license grants people a number of freedoms:</source>
|
||||
<translation>Cette licence accorde aux personnes un certain nombre de libertés :</translation>
|
||||
<translation>Cette licence accorde aux personnes un certain nombre de libertés :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/aboutdialog.cpp" line="81"/>
|
||||
@ -146,7 +146,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 is built on the following free software libraries:</source>
|
||||
<translation type="vanished">%1 est basé sur les bibliothèques de logiciels libres suivantes :</translation>
|
||||
<translation type="vanished">%1 est basé sur les bibliothèques de logiciels libres suivantes :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/aboutdialog.cpp" line="137"/>
|
||||
@ -198,68 +198,76 @@
|
||||
<message>
|
||||
<location filename="../app/graphicsview.cpp" line="269"/>
|
||||
<source>Not supported mimedata: %1</source>
|
||||
<translation>Mimedata non pris en charge : %1</translation>
|
||||
<translation>Mimedata non pris en charge : %1</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="176"/>
|
||||
<location filename="../app/mainwindow.cpp" line="173"/>
|
||||
<source>File url list is empty</source>
|
||||
<translation>La liste des URL de fichiers est vide</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="406"/>
|
||||
<location filename="../app/mainwindow.cpp" line="413"/>
|
||||
<source>&Copy</source>
|
||||
<translation>&Copier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="427"/>
|
||||
<location filename="../app/actionmanager.cpp" line="43"/>
|
||||
<source>Copy P&ixmap</source>
|
||||
<translation>Copier P&ixmap</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="432"/>
|
||||
<location filename="../app/actionmanager.cpp" line="44"/>
|
||||
<source>Copy &File Path</source>
|
||||
<translation>Copier le &chemin du fichier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="442"/>
|
||||
<source>&Paste Image</source>
|
||||
<translation>&Coller l'image</translation>
|
||||
<translation type="vanished">&Coller l'image</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="448"/>
|
||||
<source>&Paste Image File</source>
|
||||
<translation>&Coller le fichier d'image</translation>
|
||||
<translation type="vanished">&Coller le fichier d'image</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="481"/>
|
||||
<location filename="../app/actionmanager.cpp" line="50"/>
|
||||
<source>Properties</source>
|
||||
<translation>Propriétés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/aboutdialog.cpp" line="31"/>
|
||||
<location filename="../app/mainwindow.cpp" line="453"/>
|
||||
<location filename="../app/actionmanager.cpp" line="46"/>
|
||||
<source>Stay on top</source>
|
||||
<translation>Rester en-haut</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/aboutdialog.cpp" line="35"/>
|
||||
<location filename="../app/mainwindow.cpp" line="460"/>
|
||||
<location filename="../app/actionmanager.cpp" line="47"/>
|
||||
<source>Protected mode</source>
|
||||
<translation>Mode protégé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="467"/>
|
||||
<location filename="../app/actionmanager.cpp" line="45"/>
|
||||
<source>&Paste</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/actionmanager.cpp" line="48"/>
|
||||
<source>Configure...</source>
|
||||
<translation>Configurer…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="474"/>
|
||||
<location filename="../app/actionmanager.cpp" line="49"/>
|
||||
<source>Help</source>
|
||||
<translation>Aide</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/actionmanager.cpp" line="51"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MetadataDialog</name>
|
||||
@ -456,7 +464,7 @@
|
||||
<message>
|
||||
<location filename="../app/metadatamodel.cpp" line="107"/>
|
||||
<source>35mm focal length</source>
|
||||
<translation>Distance focale de 35 mm</translation>
|
||||
<translation>Distance focale de 35 mm</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/metadatamodel.cpp" line="110"/>
|
||||
@ -552,35 +560,50 @@
|
||||
<context>
|
||||
<name>SettingsDialog</name>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="15"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="16"/>
|
||||
<source>Settings</source>
|
||||
<translation>Paramètres</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="20"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="21"/>
|
||||
<source>Do nothing</source>
|
||||
<translation>Ne rien faire</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="21"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="22"/>
|
||||
<source>Close the window</source>
|
||||
<translation>Fermer la fenêtre</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="22"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="23"/>
|
||||
<source>Toggle maximize</source>
|
||||
<translation>Activer/désactiver l'agrandissement</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="30"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="27"/>
|
||||
<source>Zoom in and out</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="28"/>
|
||||
<source>View next or previous item</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="41"/>
|
||||
<source>Stay on top when start-up</source>
|
||||
<translation>Rester en-haut lors du démarrage</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="31"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="42"/>
|
||||
<source>Double-click behavior</source>
|
||||
<translation>Comportement du double-clic</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="43"/>
|
||||
<source>Mouse wheel behavior</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>main</name>
|
||||
|
@ -204,62 +204,70 @@
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="176"/>
|
||||
<location filename="../app/mainwindow.cpp" line="173"/>
|
||||
<source>File url list is empty</source>
|
||||
<translation>Listen over filnettadresser er ugyldig</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="406"/>
|
||||
<location filename="../app/mainwindow.cpp" line="413"/>
|
||||
<source>&Copy</source>
|
||||
<translation>&Kopier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="427"/>
|
||||
<location filename="../app/actionmanager.cpp" line="43"/>
|
||||
<source>Copy P&ixmap</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="432"/>
|
||||
<location filename="../app/actionmanager.cpp" line="44"/>
|
||||
<source>Copy &File Path</source>
|
||||
<translation>Kopier %filsti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="442"/>
|
||||
<source>&Paste Image</source>
|
||||
<translation>&Lim inn bilde</translation>
|
||||
<translation type="vanished">&Lim inn bilde</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="448"/>
|
||||
<source>&Paste Image File</source>
|
||||
<translation>&Lim inn bildefil</translation>
|
||||
<translation type="vanished">&Lim inn bildefil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="481"/>
|
||||
<location filename="../app/actionmanager.cpp" line="50"/>
|
||||
<source>Properties</source>
|
||||
<translation>Egenskaper</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/aboutdialog.cpp" line="31"/>
|
||||
<location filename="../app/mainwindow.cpp" line="453"/>
|
||||
<location filename="../app/actionmanager.cpp" line="46"/>
|
||||
<source>Stay on top</source>
|
||||
<translation>Behold øverst</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/aboutdialog.cpp" line="35"/>
|
||||
<location filename="../app/mainwindow.cpp" line="460"/>
|
||||
<location filename="../app/actionmanager.cpp" line="47"/>
|
||||
<source>Protected mode</source>
|
||||
<translation>Beskyttet modus</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="467"/>
|
||||
<location filename="../app/actionmanager.cpp" line="45"/>
|
||||
<source>&Paste</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/actionmanager.cpp" line="48"/>
|
||||
<source>Configure...</source>
|
||||
<translation>Sett opp …</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="474"/>
|
||||
<location filename="../app/actionmanager.cpp" line="49"/>
|
||||
<source>Help</source>
|
||||
<translation>Hjelp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/actionmanager.cpp" line="51"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MetadataDialog</name>
|
||||
@ -552,35 +560,50 @@
|
||||
<context>
|
||||
<name>SettingsDialog</name>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="15"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="16"/>
|
||||
<source>Settings</source>
|
||||
<translation>Innstillinger</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="20"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="21"/>
|
||||
<source>Do nothing</source>
|
||||
<translation>Ikke gjør noe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="21"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="22"/>
|
||||
<source>Close the window</source>
|
||||
<translation>Lukk vinduet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="22"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="23"/>
|
||||
<source>Toggle maximize</source>
|
||||
<translation>Veksle maksimering</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="30"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="27"/>
|
||||
<source>Zoom in and out</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="28"/>
|
||||
<source>View next or previous item</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="41"/>
|
||||
<source>Stay on top when start-up</source>
|
||||
<translation>Behold i forgrunnen ved oppstart</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="31"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="42"/>
|
||||
<source>Double-click behavior</source>
|
||||
<translation>Dobbeltklikksoppførsel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="43"/>
|
||||
<source>Mouse wheel behavior</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>main</name>
|
||||
|
@ -200,62 +200,70 @@
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="176"/>
|
||||
<location filename="../app/mainwindow.cpp" line="173"/>
|
||||
<source>File url list is empty</source>
|
||||
<translation>Список URL-адресов файлов пуст</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="406"/>
|
||||
<location filename="../app/mainwindow.cpp" line="413"/>
|
||||
<source>&Copy</source>
|
||||
<translation>&Копировать</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="427"/>
|
||||
<location filename="../app/actionmanager.cpp" line="43"/>
|
||||
<source>Copy P&ixmap</source>
|
||||
<translation>Копировать P&ixmap</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="432"/>
|
||||
<location filename="../app/actionmanager.cpp" line="44"/>
|
||||
<source>Copy &File Path</source>
|
||||
<translation>Копировать &путь к файлу</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="442"/>
|
||||
<source>&Paste Image</source>
|
||||
<translation>&Вставить изображение</translation>
|
||||
<translation type="vanished">&Вставить изображение</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="448"/>
|
||||
<source>&Paste Image File</source>
|
||||
<translation>&Вставить файл изображения</translation>
|
||||
<translation type="vanished">&Вставить файл изображения</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="481"/>
|
||||
<location filename="../app/actionmanager.cpp" line="50"/>
|
||||
<source>Properties</source>
|
||||
<translation>Свойства</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/aboutdialog.cpp" line="31"/>
|
||||
<location filename="../app/mainwindow.cpp" line="453"/>
|
||||
<location filename="../app/actionmanager.cpp" line="46"/>
|
||||
<source>Stay on top</source>
|
||||
<translation>Поверх всех окон</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/aboutdialog.cpp" line="35"/>
|
||||
<location filename="../app/mainwindow.cpp" line="460"/>
|
||||
<location filename="../app/actionmanager.cpp" line="47"/>
|
||||
<source>Protected mode</source>
|
||||
<translation>Защищённый режим</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="467"/>
|
||||
<location filename="../app/actionmanager.cpp" line="45"/>
|
||||
<source>&Paste</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/actionmanager.cpp" line="48"/>
|
||||
<source>Configure...</source>
|
||||
<translation>Настроить...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="474"/>
|
||||
<location filename="../app/actionmanager.cpp" line="49"/>
|
||||
<source>Help</source>
|
||||
<translation>Помощь</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/actionmanager.cpp" line="51"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MetadataDialog</name>
|
||||
@ -548,35 +556,50 @@
|
||||
<context>
|
||||
<name>SettingsDialog</name>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="15"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="16"/>
|
||||
<source>Settings</source>
|
||||
<translation>Настройки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="20"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="21"/>
|
||||
<source>Do nothing</source>
|
||||
<translation>Ничего не делать</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="21"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="22"/>
|
||||
<source>Close the window</source>
|
||||
<translation>Закрыть окно</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="22"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="23"/>
|
||||
<source>Toggle maximize</source>
|
||||
<translation>Развернуть окно</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="30"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="27"/>
|
||||
<source>Zoom in and out</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="28"/>
|
||||
<source>View next or previous item</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="41"/>
|
||||
<source>Stay on top when start-up</source>
|
||||
<translation>Поверх всех окон при запуске</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="31"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="42"/>
|
||||
<source>Double-click behavior</source>
|
||||
<translation>Поведение при двойном щелчке</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="43"/>
|
||||
<source>Mouse wheel behavior</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>main</name>
|
||||
|
@ -204,62 +204,70 @@
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="176"/>
|
||||
<location filename="../app/mainwindow.cpp" line="173"/>
|
||||
<source>File url list is empty</source>
|
||||
<translation>文件 URL 列表为空</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="406"/>
|
||||
<location filename="../app/mainwindow.cpp" line="413"/>
|
||||
<source>&Copy</source>
|
||||
<translation>复制(&C)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="427"/>
|
||||
<location filename="../app/actionmanager.cpp" line="43"/>
|
||||
<source>Copy P&ixmap</source>
|
||||
<translation>复制位图(&I)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="432"/>
|
||||
<location filename="../app/actionmanager.cpp" line="44"/>
|
||||
<source>Copy &File Path</source>
|
||||
<translation>复制文件路径(&F)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="442"/>
|
||||
<source>&Paste Image</source>
|
||||
<translation>粘贴图像(&P)</translation>
|
||||
<translation type="vanished">粘贴图像(&P)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="448"/>
|
||||
<source>&Paste Image File</source>
|
||||
<translation>粘贴图像文件(&P)</translation>
|
||||
<translation type="vanished">粘贴图像文件(&P)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="481"/>
|
||||
<location filename="../app/actionmanager.cpp" line="50"/>
|
||||
<source>Properties</source>
|
||||
<translation>属性</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/aboutdialog.cpp" line="31"/>
|
||||
<location filename="../app/mainwindow.cpp" line="453"/>
|
||||
<location filename="../app/actionmanager.cpp" line="46"/>
|
||||
<source>Stay on top</source>
|
||||
<translation>总在最前</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/aboutdialog.cpp" line="35"/>
|
||||
<location filename="../app/mainwindow.cpp" line="460"/>
|
||||
<location filename="../app/actionmanager.cpp" line="47"/>
|
||||
<source>Protected mode</source>
|
||||
<translation>保护模式</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="467"/>
|
||||
<location filename="../app/actionmanager.cpp" line="45"/>
|
||||
<source>&Paste</source>
|
||||
<translation>粘贴(&P)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/actionmanager.cpp" line="48"/>
|
||||
<source>Configure...</source>
|
||||
<translation>设置...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/mainwindow.cpp" line="474"/>
|
||||
<location filename="../app/actionmanager.cpp" line="49"/>
|
||||
<source>Help</source>
|
||||
<translation>帮助</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/actionmanager.cpp" line="51"/>
|
||||
<source>Quit</source>
|
||||
<translation>退出</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MetadataDialog</name>
|
||||
@ -552,35 +560,50 @@
|
||||
<context>
|
||||
<name>SettingsDialog</name>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="15"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="16"/>
|
||||
<source>Settings</source>
|
||||
<translation>设定</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="20"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="21"/>
|
||||
<source>Do nothing</source>
|
||||
<translation>什么也不做</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="21"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="22"/>
|
||||
<source>Close the window</source>
|
||||
<translation>关闭窗口</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="22"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="23"/>
|
||||
<source>Toggle maximize</source>
|
||||
<translation>最大化窗口</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="30"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="27"/>
|
||||
<source>Zoom in and out</source>
|
||||
<translation>放大和缩小</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="28"/>
|
||||
<source>View next or previous item</source>
|
||||
<translation>查看下一项或上一项</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="41"/>
|
||||
<source>Stay on top when start-up</source>
|
||||
<translation>启动时保持窗口总在最前</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="31"/>
|
||||
<location filename="../app/settingsdialog.cpp" line="42"/>
|
||||
<source>Double-click behavior</source>
|
||||
<translation>双击时的行为</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/settingsdialog.cpp" line="43"/>
|
||||
<source>Mouse wheel behavior</source>
|
||||
<translation>鼠标滚轮行为</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>main</name>
|
||||
|
Loading…
Reference in New Issue
Block a user