Cherry-picked new upstream version 0.4.0+20160108.
Removed outdated build dependency libfm-qt5-dev, Added build dependencies libfm-qt-dev and libmenu-cache-dev. Bump Standards to 3.9.7 Changed the VCS-fields to https:// Fix Years in copyright Enable hardening=+all
This commit is contained in:
parent
881089189f
commit
bd38d1c7aa
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
build
|
||||
*.kdev4
|
@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 2.8.11)
|
||||
cmake_minimum_required(VERSION 3.0.2)
|
||||
|
||||
project(lximage-qt)
|
||||
|
||||
@ -10,6 +10,7 @@ list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
|
||||
set(MAJOR_VERSION 0)
|
||||
set(MINOR_VERSION 4)
|
||||
set(PATCH_VERSION 0)
|
||||
set(LXIMAGE_VERSION ${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION})
|
||||
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
@ -40,16 +41,14 @@ find_package(Qt5DBus REQUIRED)
|
||||
find_package(Qt5PrintSupport REQUIRED QUIET)
|
||||
find_package(Qt5X11Extras REQUIRED QUIET)
|
||||
find_package(Qt5LinguistTools REQUIRED QUIET)
|
||||
find_package(fm-qt REQUIRED QUIET)
|
||||
message(STATUS "Building with Qt ${Qt5Core_VERSION_STRING}")
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(GLIB REQUIRED glib-2.0)
|
||||
|
||||
# FIXME: we'll need this to provide detail info for photos in the future
|
||||
pkg_check_modules(EXIF REQUIRED libexif)
|
||||
|
||||
pkg_check_modules(LIBFM_QT REQUIRED libfm-qt5 libfm>=1.2)
|
||||
|
||||
# TODO: make the X11 stuff optional.
|
||||
# for screenshot support
|
||||
find_package(X11 REQUIRED)
|
||||
|
12
debian/changelog
vendored
12
debian/changelog
vendored
@ -1,3 +1,15 @@
|
||||
lximage-qt (0.4.0+20160108-1) unstable; urgency=medium
|
||||
|
||||
* Cherry-picked new upstream version 0.4.0+20160108.
|
||||
* Removed outdated build dependency libfm-qt5-dev,
|
||||
* Added build dependencies libfm-qt-dev and libmenu-cache-dev.
|
||||
* Bump Standards to 3.9.7
|
||||
* Changed the VCS-fields to https://
|
||||
* Fix Years in copyright
|
||||
* Enable hardening=+all
|
||||
|
||||
-- Alf Gaida <agaida@siduction.org> Sun, 07 Feb 2016 22:55:06 +0100
|
||||
|
||||
lximage-qt (0.4.0+20151117-2) unstable; urgency=medium
|
||||
|
||||
* Remove dbg package in favor of dbgsym.
|
||||
|
9
debian/control
vendored
9
debian/control
vendored
@ -10,16 +10,17 @@ Build-Depends: debhelper (>= 9),
|
||||
libexif-dev,
|
||||
libglib2.0-dev,
|
||||
libfm-dev,
|
||||
libfm-qt5-dev,
|
||||
libfm-qt-dev,
|
||||
libmenu-cache-dev,
|
||||
libqt5x11extras5-dev,
|
||||
libx11-dev,
|
||||
libxfixes-dev,
|
||||
pkg-config,
|
||||
qttools5-dev,
|
||||
qttools5-dev-tools
|
||||
Standards-Version: 3.9.6
|
||||
Vcs-Browser: http://anonscm.debian.org/cgit/pkg-lxqt/lximage-qt.git/?h=debian/sid
|
||||
Vcs-Git: git://anonscm.debian.org/pkg-lxqt/lximage-qt.git -b debian/sid
|
||||
Standards-Version: 3.9.7
|
||||
Vcs-Browser: https://anonscm.debian.org/git/pkg-lxqt/lximage-qt.git/?h=debian/sid
|
||||
Vcs-Git: https://anonscm.debian.org/git/pkg-lxqt/lximage-qt.git -b debian/sid
|
||||
Homepage: https://github.com/lxde/lximage-qt
|
||||
|
||||
Package: lximage-qt
|
||||
|
8
debian/copyright
vendored
8
debian/copyright
vendored
@ -3,8 +3,8 @@ Upstream-Name: lximage-qt
|
||||
Source: https://github.com/lxde/lximage-qt
|
||||
|
||||
Files: *
|
||||
Copyright: 2013-2015 Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
|
||||
2013-2015 LXQt team
|
||||
Copyright: 2013-2016 Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
|
||||
2013-2016 LXQt team
|
||||
License: GPL-2+ and LGPL-2.1+
|
||||
|
||||
Files: src/application.*
|
||||
@ -14,7 +14,7 @@ Files: src/application.*
|
||||
src/preferencesdialog.*
|
||||
src/saveimagejob.*
|
||||
src/settings.*
|
||||
Copyright: 2013-2015 Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
|
||||
Copyright: 2013-2016 Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
|
||||
License: GPL-2+
|
||||
|
||||
Files: src/imageview.*
|
||||
@ -27,7 +27,7 @@ Copyright: Copyright (C) 2013 - 2014
|
||||
License: LGPL-2.1+
|
||||
|
||||
Files: debian/*
|
||||
Copyright: 2014-2015 Alf Gaida <agaida@siduction.org>
|
||||
Copyright: 2014-2016 Alf Gaida <agaida@siduction.org>
|
||||
2015 Andrew Lee (李健秋) <ajqlee@debian.org>
|
||||
2015 ChangZhuo Chen (陳昌倬) <czchen@debian.org>
|
||||
License: LGPL-2.1+
|
||||
|
2
debian/rules
vendored
2
debian/rules
vendored
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/make -f
|
||||
#export DH_VERBOSE=1
|
||||
|
||||
export DEB_CXXFLAGS_MAINT_APPEND = -fPIE -pie
|
||||
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
|
||||
export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
|
||||
|
||||
%:
|
||||
|
@ -1,12 +1,7 @@
|
||||
# set visibility to hidden to hide symbols, unlesss they're exporeted manually in the code
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_NO_KEYWORDS -fno-exceptions")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions")
|
||||
|
||||
include_directories(
|
||||
${QTX_INCLUDE_DIRS}
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${GLIB_INCLUDE_DIRS}
|
||||
${EXIF_INCLUDE_DIRS}
|
||||
${LIBFM_QT_INCLUDE_DIRS}
|
||||
${X11_INCLUDE_DIR}
|
||||
${XFIXES_INCLUDE_DIRS}
|
||||
)
|
||||
@ -76,16 +71,15 @@ add_executable(lximage-qt
|
||||
|
||||
add_definitions(
|
||||
-DLXIMAGE_DATA_DIR="${CMAKE_INSTALL_PREFIX}/share/lximage-qt"
|
||||
-DLIBFM_QT_API=Q_DECL_IMPORT # FIXME: This should be done in libfm-qt headers instead :-(
|
||||
-DLXIMAGE_VERSION="${LXIMAGE_VERSION}"
|
||||
)
|
||||
|
||||
set(QT_LIBRARIES Qt5::Widgets Qt5::Core Qt5::DBus Qt5::PrintSupport Qt5::X11Extras)
|
||||
|
||||
target_link_libraries(lximage-qt
|
||||
fm-qt
|
||||
${QT_LIBRARIES}
|
||||
${GLIB_LIBRARIES}
|
||||
${EXIF_LIBRARIES}
|
||||
${LIBFM_QT_LIBRARIES}
|
||||
${X11_LIBRARIES}
|
||||
${XFIXES_LIBRARIES}
|
||||
)
|
||||
|
@ -37,6 +37,7 @@ Application::Application(int& argc, char** argv):
|
||||
QApplication(argc, argv),
|
||||
windowCount_(0),
|
||||
libFm() {
|
||||
setApplicationVersion(LXIMAGE_VERSION);
|
||||
}
|
||||
|
||||
bool Application::init(int argc, char** argv) {
|
||||
@ -81,6 +82,7 @@ bool Application::init(int argc, char** argv) {
|
||||
bool Application::parseCommandLineArgs() {
|
||||
QCommandLineParser parser;
|
||||
parser.addHelpOption();
|
||||
parser.addVersionOption();
|
||||
|
||||
QCommandLineOption screenshotOption(
|
||||
QStringList() << "s" << "screenshot",
|
||||
@ -152,7 +154,9 @@ void Application::newWindow(QStringList files) {
|
||||
if(settings_.windowMaximized())
|
||||
window->setWindowState(window->windowState() | Qt::WindowMaximized);
|
||||
|
||||
window->show();
|
||||
/* when there's an image, we show the window AFTER resizing
|
||||
and centering it appropriately at MainWindow::updateUI() */
|
||||
//window->show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -26,6 +26,8 @@
|
||||
#include <QPolygon>
|
||||
#include <QDebug>
|
||||
#include <QStyle>
|
||||
#include <QLabel>
|
||||
#include <QGraphicsProxyWidget>
|
||||
|
||||
namespace LxImage {
|
||||
|
||||
@ -33,6 +35,7 @@ ImageView::ImageView(QWidget* parent):
|
||||
QGraphicsView(parent),
|
||||
imageItem_(new QGraphicsRectItem()),
|
||||
scene_(new QGraphicsScene(this)),
|
||||
gifMovie_(NULL),
|
||||
autoZoomFit_(false),
|
||||
cacheTimer_(NULL),
|
||||
scaleFactor_(1.0) {
|
||||
@ -48,7 +51,9 @@ ImageView::ImageView(QWidget* parent):
|
||||
}
|
||||
|
||||
ImageView::~ImageView() {
|
||||
delete imageItem_;
|
||||
scene_->clear(); // deletes all items
|
||||
if(gifMovie_)
|
||||
delete gifMovie_;
|
||||
if(cacheTimer_) {
|
||||
cacheTimer_->stop();
|
||||
delete cacheTimer_;
|
||||
@ -130,7 +135,18 @@ void ImageView::zoomOriginal() {
|
||||
queueGenerateCache();
|
||||
}
|
||||
|
||||
void ImageView::setImage(QImage image) {
|
||||
void ImageView::setImage(QImage image, bool show) {
|
||||
if(gifMovie_ && show) { // a gif animation was shown
|
||||
scene_->clear();
|
||||
delete gifMovie_;
|
||||
gifMovie_ = NULL;
|
||||
// recreate the rect item
|
||||
imageItem_ = new QGraphicsRectItem();
|
||||
imageItem_->hide();
|
||||
imageItem_->setPen(QPen(Qt::NoPen));
|
||||
scene_->addItem(imageItem_);
|
||||
}
|
||||
|
||||
image_ = image;
|
||||
if(image.isNull()) {
|
||||
imageItem_->hide();
|
||||
@ -138,9 +154,11 @@ void ImageView::setImage(QImage image) {
|
||||
scene_->setSceneRect(0, 0, 0, 0);
|
||||
}
|
||||
else {
|
||||
imageItem_->setRect(0, 0, image_.width(), image_.height());
|
||||
imageItem_->setBrush(image_);
|
||||
imageItem_->show();
|
||||
if(show) {
|
||||
imageItem_->setRect(0, 0, image_.width(), image_.height());
|
||||
imageItem_->setBrush(image_);
|
||||
imageItem_->show();
|
||||
}
|
||||
scene_->setSceneRect(0, 0, image_.width(), image_.height());
|
||||
}
|
||||
|
||||
@ -149,6 +167,43 @@ void ImageView::setImage(QImage image) {
|
||||
queueGenerateCache();
|
||||
}
|
||||
|
||||
void ImageView::setGifAnimation(QString fileName) {
|
||||
QImage image(fileName);
|
||||
if(image.isNull()) {
|
||||
image_ = QImage();
|
||||
imageItem_->hide();
|
||||
imageItem_->setBrush(QBrush());
|
||||
scene_->setSceneRect(0, 0, 0, 0);
|
||||
}
|
||||
else {
|
||||
scene_->clear();
|
||||
imageItem_ = NULL; // it's deleted by clear();
|
||||
if(gifMovie_) {
|
||||
delete gifMovie_;
|
||||
gifMovie_ = NULL;
|
||||
}
|
||||
QPixmap pix(image.size());
|
||||
pix.fill(Qt::transparent);
|
||||
QGraphicsItem *gifItem = new QGraphicsPixmapItem(pix);
|
||||
QLabel *gifLabel = new QLabel();
|
||||
gifMovie_ = new QMovie(fileName);
|
||||
QGraphicsProxyWidget* gifWidget = new QGraphicsProxyWidget(gifItem);
|
||||
gifLabel->setAttribute(Qt::WA_NoSystemBackground);
|
||||
gifLabel->setMovie(gifMovie_);
|
||||
gifWidget->setWidget(gifLabel);
|
||||
gifMovie_->start();
|
||||
/* the first frame won't be shown but will be
|
||||
used for tracking position and dimensions */
|
||||
image_ = gifMovie_->currentImage();
|
||||
scene_->addItem(gifItem);
|
||||
scene_->setSceneRect(gifItem->boundingRect());
|
||||
}
|
||||
|
||||
if(autoZoomFit_)
|
||||
zoomFit();
|
||||
queueGenerateCache(); // deletes the cache timer in this case
|
||||
}
|
||||
|
||||
void ImageView::setScaleFactor(double factor) {
|
||||
if(factor != scaleFactor_) {
|
||||
scaleFactor_ = factor;
|
||||
@ -189,7 +244,8 @@ void ImageView::queueGenerateCache() {
|
||||
cachedPixmap_ = QPixmap();
|
||||
|
||||
// we don't need to cache the scaled image if its the same as the original image (scale:1.0)
|
||||
if(scaleFactor_ == 1.0) {
|
||||
// no cache for gif animations either
|
||||
if(scaleFactor_ == 1.0 || gifMovie_) {
|
||||
if(cacheTimer_) {
|
||||
cacheTimer_->stop();
|
||||
delete cacheTimer_;
|
||||
@ -198,12 +254,13 @@ void ImageView::queueGenerateCache() {
|
||||
return;
|
||||
}
|
||||
|
||||
if(!cacheTimer_) {
|
||||
if(!cacheTimer_ && !gifMovie_) {
|
||||
cacheTimer_ = new QTimer();
|
||||
cacheTimer_->setSingleShot(true);
|
||||
connect(cacheTimer_, SIGNAL(timeout()), SLOT(generateCache()));
|
||||
}
|
||||
cacheTimer_->start(200); // restart the timer
|
||||
if(cacheTimer_)
|
||||
cacheTimer_->start(200); // restart the timer
|
||||
}
|
||||
|
||||
// really generate the cache
|
||||
|
@ -26,6 +26,7 @@
|
||||
#include <QGraphicsRectItem>
|
||||
#include <QImage>
|
||||
#include <QPixmap>
|
||||
#include <QMovie>
|
||||
#include <QRect>
|
||||
|
||||
class QTimer;
|
||||
@ -39,7 +40,8 @@ public:
|
||||
ImageView(QWidget* parent = 0);
|
||||
virtual ~ImageView();
|
||||
|
||||
void setImage(QImage image);
|
||||
void setImage(QImage image, bool show = true);
|
||||
void setGifAnimation(QString fileName);
|
||||
|
||||
QImage image() {
|
||||
return image_;
|
||||
@ -83,6 +85,7 @@ private:
|
||||
QGraphicsScene* scene_; // the topmost container of all graphic items
|
||||
QGraphicsRectItem* imageItem_; // the rect item used to draw the image
|
||||
QImage image_; // image to show
|
||||
QMovie *gifMovie_; // gif animation to show (should be deleted explicitly)
|
||||
QPixmap cachedPixmap_; // caching of current viewport content (high quality scaled image)
|
||||
QRect cachedRect_; // rectangle containing the cached region (in viewport coordinate)
|
||||
QRect cachedSceneRect_; // rectangle containing the cached region (in scene/original image coordinate)
|
||||
|
@ -35,6 +35,7 @@
|
||||
#include <QShortcut>
|
||||
#include <QDockWidget>
|
||||
#include <QScrollBar>
|
||||
#include <QDesktopWidget>
|
||||
#include "application.h"
|
||||
#include <libfm-qt/path.h>
|
||||
#include <libfm-qt/folderview.h>
|
||||
@ -437,6 +438,10 @@ void MainWindow::onImageLoaded(LoadImageJob* job) {
|
||||
// if there are errors
|
||||
// TODO: show a info bar?
|
||||
}
|
||||
|
||||
/* we resized and moved the window without showing
|
||||
it in updateUI(), so we need to show it here */
|
||||
show();
|
||||
}
|
||||
|
||||
void MainWindow::onImageSaved(SaveImageJob* job) {
|
||||
@ -522,28 +527,56 @@ void MainWindow::updateUI() {
|
||||
if(currentFile_) {
|
||||
char* dispName = fm_path_display_basename(currentFile_);
|
||||
if(loadJob_) { // if loading is in progress
|
||||
title = tr("%1 (Loading...) - Image Viewer")
|
||||
title = tr("[*]%1 (Loading...) - Image Viewer")
|
||||
.arg(QString::fromUtf8(dispName));
|
||||
}
|
||||
else {
|
||||
if(image_.isNull()) {
|
||||
title = tr("%1 (Failed to Load) - Image Viewer")
|
||||
title = tr("[*]%1 (Failed to Load) - Image Viewer")
|
||||
.arg(QString::fromUtf8(dispName));
|
||||
}
|
||||
else {
|
||||
title = tr("%1 (%2x%3) - Image Viewer")
|
||||
title = tr("[*]%1 (%2x%3) - Image Viewer")
|
||||
.arg(QString::fromUtf8(dispName))
|
||||
.arg(image_.width())
|
||||
.arg(image_.height());
|
||||
/* Here we try to implement the following behavior as far as possible:
|
||||
(1) A minimum size of 400x400 is assumed;
|
||||
(2) The window is scaled to fit the image;
|
||||
(3) But for too big images, the window is scaled down;
|
||||
(4) The window is centered on the screen. */
|
||||
if (!isVisible()) {
|
||||
/* To have a correct position, we should move the window BEFORE
|
||||
it's shown but we also need to know the dimensions of its view.
|
||||
Therefore, we use show() without really showing the window. */
|
||||
setAttribute(Qt::WA_DontShowOnScreen);
|
||||
show();
|
||||
int scrollThickness = style()->pixelMetric(QStyle::PM_ScrollBarExtent);
|
||||
QSize newSize = size() + image_.size() - ui.view->size() + QSize(scrollThickness, scrollThickness);
|
||||
QRect ag = QApplication::desktop()->availableGeometry();
|
||||
// since the window isn't decorated yet, we have to assume a max thickness for its frame
|
||||
QSize maxFrame = QSize(50, 100);
|
||||
if (newSize.width() > ag.width() - maxFrame.width() || newSize.height() > ag.height() - maxFrame.height())
|
||||
newSize.scale (ag.width() - maxFrame.width(), ag.height() - maxFrame.height(), Qt::KeepAspectRatio);
|
||||
// a minimum size of 400x400 is good
|
||||
if (newSize.width() < 400) newSize.rwidth() = 400;
|
||||
if (newSize.height() < 400 ) newSize.rheight() = 400;
|
||||
move (ag.x() + (ag.width() - newSize.width())/2,
|
||||
ag.y() + (ag.height() - newSize.height())/2);
|
||||
resize(newSize);
|
||||
hide(); // hide it to show it again later, at onImageLoaded()
|
||||
setAttribute(Qt::WA_DontShowOnScreen, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
g_free(dispName);
|
||||
// TODO: update status bar, show current index in the folder
|
||||
}
|
||||
else {
|
||||
title = tr("Image Viewer");
|
||||
title = tr("[*]Image Viewer");
|
||||
}
|
||||
setWindowTitle(title);
|
||||
setWindowModified(imageModified_);
|
||||
}
|
||||
|
||||
// Load the specified image file asynchronously in a worker thread.
|
||||
@ -567,11 +600,28 @@ void MainWindow::loadImage(FmPath* filePath, QModelIndex index) {
|
||||
// clear current image, but do not update the view now to prevent flickers
|
||||
image_ = QImage();
|
||||
|
||||
// start a new gio job to load the specified image
|
||||
loadJob_ = new LoadImageJob(this, filePath);
|
||||
loadJob_->start();
|
||||
const char* basename = fm_path_get_basename(currentFile_);
|
||||
char* mimeType = g_content_type_guess(basename, NULL, 0, NULL);
|
||||
if(mimeType && strcmp(mimeType, "image/gif") == 0) {
|
||||
g_free(mimeType);
|
||||
char *file_Name = fm_path_to_str(currentFile_);
|
||||
QString fileName(file_Name);
|
||||
g_free(file_Name);
|
||||
ui.view->setAutoZoomFit(true); // like in onImageLoaded()
|
||||
ui.view->setGifAnimation(fileName);
|
||||
image_ = ui.view->image();
|
||||
updateUI();
|
||||
show();
|
||||
}
|
||||
else {
|
||||
if(mimeType)
|
||||
g_free(mimeType);
|
||||
// start a new gio job to load the specified image
|
||||
loadJob_ = new LoadImageJob(this, filePath);
|
||||
loadJob_->start();
|
||||
|
||||
updateUI();
|
||||
updateUI();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::saveImage(FmPath* filePath) {
|
||||
@ -583,24 +633,56 @@ void MainWindow::saveImage(FmPath* filePath) {
|
||||
// FIXME: add a cancel button to the UI? update status bar?
|
||||
}
|
||||
|
||||
QGraphicsItem* MainWindow::getGifItem() {
|
||||
if(!ui.view->items().isEmpty()) {
|
||||
QGraphicsItem *gifItem = ui.view->items().at(0);
|
||||
if(gifItem->isWidget()) // we have gif animation
|
||||
return gifItem;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void MainWindow::on_actionRotateClockwise_triggered() {
|
||||
QGraphicsItem *gifItem = getGifItem();
|
||||
if(!image_.isNull()) {
|
||||
QTransform transform;
|
||||
transform.rotate(90.0);
|
||||
image_ = image_.transformed(transform, Qt::SmoothTransformation);
|
||||
ui.view->setImage(image_);
|
||||
/* when this is a gif animation, we need to rotate the first frame
|
||||
without showing it to have the right measure for auto-zooming */
|
||||
ui.view->setImage(image_, gifItem ? false : true);
|
||||
setModified(true);
|
||||
}
|
||||
|
||||
if(gifItem) {
|
||||
QTransform transform;
|
||||
transform.translate(gifItem->sceneBoundingRect().height(), 0);
|
||||
transform.rotate(90);
|
||||
// we need to apply transformations in the reverse order
|
||||
QTransform prevTrans = gifItem->transform();
|
||||
gifItem->setTransform(transform, false);
|
||||
gifItem->setTransform(prevTrans, true);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_actionRotateCounterclockwise_triggered() {
|
||||
QGraphicsItem *gifItem = getGifItem();
|
||||
if(!image_.isNull()) {
|
||||
QTransform transform;
|
||||
transform.rotate(-90.0);
|
||||
image_ = image_.transformed(transform, Qt::SmoothTransformation);
|
||||
ui.view->setImage(image_);
|
||||
ui.view->setImage(image_, gifItem ? false : true);
|
||||
setModified(true);
|
||||
}
|
||||
|
||||
if(gifItem) {
|
||||
QTransform transform;
|
||||
transform.translate(0, gifItem->sceneBoundingRect().width());
|
||||
transform.rotate(-90);
|
||||
QTransform prevTrans = gifItem->transform();
|
||||
gifItem->setTransform(transform, false);
|
||||
gifItem->setTransform(prevTrans, true);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_actionCopy_triggered() {
|
||||
@ -626,26 +708,44 @@ void MainWindow::on_actionPaste_triggered() {
|
||||
}
|
||||
|
||||
void MainWindow::on_actionFlipVertical_triggered() {
|
||||
if(!image_.isNull()) {
|
||||
if(QGraphicsItem *gifItem = getGifItem()) {
|
||||
QTransform transform;
|
||||
transform.scale(1, -1);
|
||||
transform.translate(0, -gifItem->sceneBoundingRect().height());
|
||||
QTransform prevTrans = gifItem->transform();
|
||||
gifItem->setTransform(transform, false);
|
||||
gifItem->setTransform(prevTrans, true);
|
||||
setModified(true);
|
||||
/* we don't need to flip the first frame because its position
|
||||
and dimensions are the same as before while it isn't shown */
|
||||
}
|
||||
else if(!image_.isNull()) {
|
||||
image_ = image_.mirrored(false, true);
|
||||
ui.view->setImage(image_);
|
||||
setModified(true);
|
||||
}
|
||||
setModified(true);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionFlipHorizontal_triggered() {
|
||||
if(!image_.isNull()) {
|
||||
if(QGraphicsItem *gifItem = getGifItem()) {
|
||||
QTransform transform;
|
||||
transform.scale(-1, 1);
|
||||
transform.translate(-gifItem->sceneBoundingRect().width(), 0);
|
||||
QTransform prevTrans = gifItem->transform();
|
||||
gifItem->setTransform(transform, false);
|
||||
gifItem->setTransform(prevTrans, true);
|
||||
setModified(true);
|
||||
}
|
||||
else if(!image_.isNull()) {
|
||||
image_ = image_.mirrored(true, false);
|
||||
ui.view->setImage(image_);
|
||||
setModified(true);
|
||||
}
|
||||
setModified(true);
|
||||
}
|
||||
|
||||
void MainWindow::setModified(bool modified) {
|
||||
imageModified_ = modified;
|
||||
updateUI(); // TODO: update title bar to reflect the state change
|
||||
updateUI();
|
||||
}
|
||||
|
||||
void MainWindow::applySettings() {
|
||||
@ -731,6 +831,13 @@ void MainWindow::setShowThumbnails(bool show) {
|
||||
thumbnailsView_->setFixedHeight(listView->gridSize().height() + scrollHeight);
|
||||
thumbnailsView_->setModel(proxyModel_);
|
||||
proxyModel_->setShowThumbnails(true);
|
||||
if (currentFile_) { // select the loaded image
|
||||
currentIndex_ = indexFromPath(currentFile_);
|
||||
listView->setCurrentIndex(currentIndex_);
|
||||
// wait to center the selection
|
||||
QCoreApplication::processEvents();
|
||||
listView->scrollTo(currentIndex_, QAbstractItemView::PositionAtCenter);
|
||||
}
|
||||
connect(thumbnailsView_->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), SLOT(onThumbnailSelChanged(QItemSelection,QItemSelection)));
|
||||
}
|
||||
}
|
||||
|
@ -126,6 +126,7 @@ private:
|
||||
void updateUI();
|
||||
void setModified(bool modified);
|
||||
QModelIndex indexFromPath(FmPath* filePath);
|
||||
QGraphicsItem* getGifItem();
|
||||
|
||||
// GObject related signal handers and callbacks
|
||||
static void _onFolderLoaded(FmFolder* folder, MainWindow* _this) {
|
||||
|
@ -150,7 +150,6 @@ void ScreenshotDialog::doScreenshot() {
|
||||
if(cursor) {
|
||||
if(cursor->pixels) { // pixles should be an ARGB array
|
||||
QImage cursorImage;
|
||||
quint32* buf = NULL;
|
||||
if(sizeof(long) == 4) {
|
||||
// FIXME: will we encounter byte-order problems here?
|
||||
cursorImage = QImage((uchar*)cursor->pixels, cursor->width, cursor->height, QImage::Format_ARGB32);
|
||||
@ -160,13 +159,11 @@ void ScreenshotDialog::doScreenshot() {
|
||||
quint32* buf = new quint32[len];
|
||||
for(long i = 0; i < len; ++i)
|
||||
buf[i] = (quint32)cursor->pixels[i];
|
||||
cursorImage = QImage((uchar*)buf, cursor->width, cursor->height, QImage::Format_ARGB32);
|
||||
cursorImage = QImage((uchar*)buf, cursor->width, cursor->height, QImage::Format_ARGB32, [](void* b) { delete[] (quint32*)b; }, buf);
|
||||
}
|
||||
// paint the cursor on the current image
|
||||
QPainter painter(&image);
|
||||
painter.drawImage(cursor->x - cursor->xhot, cursor->y - cursor->yhot, cursorImage);
|
||||
if(buf)
|
||||
delete []buf;
|
||||
}
|
||||
XFree(cursor);
|
||||
}
|
||||
|
6
src/translations/lximage-qt-screenshot_pl.desktop
Normal file
6
src/translations/lximage-qt-screenshot_pl.desktop
Normal file
@ -0,0 +1,6 @@
|
||||
[Desktop Entry]
|
||||
Name[pl]=Zrzut ekranu
|
||||
GenericName[pl]=Zrzut ekranu
|
||||
Comment[pl]=Wykonaj zrzut ekranu
|
||||
|
||||
#TRANSLATIONS_DIR=translations
|
4
src/translations/lximage-qt-screenshot_ru.desktop
Normal file
4
src/translations/lximage-qt-screenshot_ru.desktop
Normal file
@ -0,0 +1,4 @@
|
||||
#Translations
|
||||
Name[ru]=Снимок экрана
|
||||
GenericName[ru]=Снимок экрана
|
||||
Comment[ru]=Сделать снимок экрана
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="it" sourcelanguage="it">
|
||||
<TS version="2.0" language="it" sourcelanguage="it">
|
||||
<context>
|
||||
<name>LxImage::Application</name>
|
||||
<message>
|
||||
@ -19,7 +19,7 @@
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="147"/>
|
||||
<source>About</source>
|
||||
<translation>A proposito</translation>
|
||||
<translation>Informazioni</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="148"/>
|
||||
@ -31,12 +31,12 @@ LXDE Project: http://lxde.org/
|
||||
Authors:
|
||||
Hong Jen Yee (PCMan) <pcman.tw@gmail.com></source>
|
||||
<translatorcomment>need update...</translatorcomment>
|
||||
<translation type="unfinished">LXImage - un visualizzatore immagini semplice e veloce
|
||||
<translation>LXImage - un visualizzatore immagini semplice e veloce
|
||||
|
||||
Copyright (C) 2013
|
||||
LXDE Project: http://lxde.org/
|
||||
|
||||
Autor:
|
||||
Autori:
|
||||
Hong Jen Yee (PCMan) <pcman.tw@gmail.com></translation>
|
||||
</message>
|
||||
<message>
|
||||
@ -58,17 +58,17 @@ Hong Jen Yee (PCMan) <pcman.tw@gmail.com></translation>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="525"/>
|
||||
<source>%1 (Loading...) - Image Viewer</source>
|
||||
<translation>%1 (Caricando...) - Visualizzatore immagini</translation>
|
||||
<translation>%1 (Caricamento in corso...) - Visualizzatore immagini</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="530"/>
|
||||
<source>%1 (Failed to Load) - Image Viewer</source>
|
||||
<translation>%1 (Errore in caricamento) - Visualizzatore immagini</translation>
|
||||
<translation>%1 (Caricamento non riuscito) - Visualizzatore immagini</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="534"/>
|
||||
<source>%1 (%2x%3) - Image Viewer</source>
|
||||
<translation>%1 (%2x%3) - Visualizzatore Immagini</translation>
|
||||
<translation>%1 (%2x%3) - Visualizzatore immagini</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="544"/>
|
||||
@ -91,12 +91,12 @@ Hong Jen Yee (PCMan) <pcman.tw@gmail.com></translation>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="413"/>
|
||||
<source>&About</source>
|
||||
<translation>A &proposito</translation>
|
||||
<translation>Inform&azioni</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="414"/>
|
||||
<source>&Open File</source>
|
||||
<translation>&Apri</translation>
|
||||
<translation>&Apri file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="415"/>
|
||||
@ -112,7 +112,7 @@ Hong Jen Yee (PCMan) <pcman.tw@gmail.com></translation>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="417"/>
|
||||
<source>Ctrl+S</source>
|
||||
<translation></translation>
|
||||
<translation>Ctrl+S</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="418"/>
|
||||
@ -122,7 +122,7 @@ Hong Jen Yee (PCMan) <pcman.tw@gmail.com></translation>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="419"/>
|
||||
<source>Ctrl+A</source>
|
||||
<translation></translation>
|
||||
<translation>Ctrl+A</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="420"/>
|
||||
@ -132,7 +132,7 @@ Hong Jen Yee (PCMan) <pcman.tw@gmail.com></translation>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="421"/>
|
||||
<source>Ctrl+W</source>
|
||||
<translation></translation>
|
||||
<translation>Ctrl+W</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="422"/>
|
||||
@ -142,7 +142,7 @@ Hong Jen Yee (PCMan) <pcman.tw@gmail.com></translation>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="423"/>
|
||||
<source>Ctrl++</source>
|
||||
<translation></translation>
|
||||
<translation>Ctrl++</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="424"/>
|
||||
@ -152,7 +152,7 @@ Hong Jen Yee (PCMan) <pcman.tw@gmail.com></translation>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="425"/>
|
||||
<source>Ctrl+-</source>
|
||||
<translation></translation>
|
||||
<translation>Ctrl+-</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="426"/>
|
||||
@ -163,13 +163,13 @@ Hong Jen Yee (PCMan) <pcman.tw@gmail.com></translation>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="427"/>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="429"/>
|
||||
<source>Next File</source>
|
||||
<translation>Prossimo</translation>
|
||||
<translation>File successivo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="432"/>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="434"/>
|
||||
<source>Previous File</source>
|
||||
<translation>Precedente</translation>
|
||||
<translation>File precedente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="431"/>
|
||||
@ -179,57 +179,57 @@ Hong Jen Yee (PCMan) <pcman.tw@gmail.com></translation>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="436"/>
|
||||
<source>PgUp</source>
|
||||
<translation>Pagina sù</translation>
|
||||
<translation>Pagina su</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="437"/>
|
||||
<source>Original Size</source>
|
||||
<translation type="unfinished">&Dimensioni originiali</translation>
|
||||
<translation>Dimensioni originali</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="438"/>
|
||||
<source>&Fit</source>
|
||||
<translation>&Adatta alla finestra</translation>
|
||||
<translation>&Adatta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="439"/>
|
||||
<source>&Rotate Clockwise</source>
|
||||
<translation>Gira a &destra</translation>
|
||||
<translation>&Ruota in senso orario</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="440"/>
|
||||
<source>Rotate &Counterclockwise</source>
|
||||
<translation>Gira a &sinistra</translation>
|
||||
<translation>Ruota in &senso antiorario</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="441"/>
|
||||
<source>P&references</source>
|
||||
<translation>&Preferenze</translation>
|
||||
<translation>P&referenze</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="442"/>
|
||||
<source>&Print</source>
|
||||
<translation>&Stampa</translation>
|
||||
<translation>Stam&pa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="443"/>
|
||||
<source>Ctrl+P</source>
|
||||
<translation></translation>
|
||||
<translation>Ctrl+P</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="444"/>
|
||||
<source>First File</source>
|
||||
<translation>Primo</translation>
|
||||
<translation>Primo file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="445"/>
|
||||
<source>Home</source>
|
||||
<translation></translation>
|
||||
<translation>Home</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="446"/>
|
||||
<source>Last File</source>
|
||||
<translation>Ultimo</translation>
|
||||
<translation>Ultimo file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="447"/>
|
||||
@ -244,12 +244,12 @@ Hong Jen Yee (PCMan) <pcman.tw@gmail.com></translation>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="449"/>
|
||||
<source>Ctrl+N</source>
|
||||
<translation></translation>
|
||||
<translation>Ctrl+N</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="450"/>
|
||||
<source>Flip &Horizontally</source>
|
||||
<translation>Rispecchia &horizzontalmente</translation>
|
||||
<translation>Rispecchia &orizzontalmente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="451"/>
|
||||
@ -264,7 +264,7 @@ Hong Jen Yee (PCMan) <pcman.tw@gmail.com></translation>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="453"/>
|
||||
<source>F11</source>
|
||||
<translation></translation>
|
||||
<translation>F11</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="454"/>
|
||||
@ -274,7 +274,7 @@ Hong Jen Yee (PCMan) <pcman.tw@gmail.com></translation>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="455"/>
|
||||
<source>&Paste from Clipboard</source>
|
||||
<translation>&Incolla da appunti</translation>
|
||||
<translation>&Incolla dagli appunti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="456"/>
|
||||
@ -284,23 +284,23 @@ Hong Jen Yee (PCMan) <pcman.tw@gmail.com></translation>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="457"/>
|
||||
<source>&Delete</source>
|
||||
<translation>&Cestina</translation>
|
||||
<translation>&Elimina</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="458"/>
|
||||
<source>Del</source>
|
||||
<translation></translation>
|
||||
<translation>Canc</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="459"/>
|
||||
<source>Show Thumbnails</source>
|
||||
<translation type="unfinished">&Mostra barra miniature</translation>
|
||||
<translation>Mostra miniature</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="460"/>
|
||||
<source>File Properties</source>
|
||||
<translatorcomment>Übersetzung von 'file' weggelassen, da redundant.</translatorcomment>
|
||||
<translation>Proprietà</translation>
|
||||
<translation>Proprietà del file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="461"/>
|
||||
|
5
src/translations/lximage-qt_pl.desktop
Normal file
5
src/translations/lximage-qt_pl.desktop
Normal file
@ -0,0 +1,5 @@
|
||||
[Desktop Entry]
|
||||
GenericName[pl]=Przeglądarka obrazów
|
||||
Comment[pl]=Przeglądarka obrazów LXQt
|
||||
|
||||
#TRANSLATIONS_DIR=translations
|
@ -77,7 +77,7 @@ Hong Jen Yee (PCMan) <pcman.tw@gmail.com></translation>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="719"/>
|
||||
<source>Thumbnails</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Miniaturki</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -145,7 +145,7 @@ Hong Jen Yee (PCMan) <pcman.tw@gmail.com></translation>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="424"/>
|
||||
<source>Zoom &Out</source>
|
||||
<translation type="unfinished">Po&mniejsz</translation>
|
||||
<translation>Po&mniejsz</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="425"/>
|
||||
@ -300,12 +300,12 @@ Hong Jen Yee (PCMan) <pcman.tw@gmail.com></translation>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="459"/>
|
||||
<source>Show Thumbnails</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Pokaż miniaturki</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="460"/>
|
||||
<source>File Properties</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Właściwości pliku</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="461"/>
|
||||
@ -335,7 +335,7 @@ Hong Jen Yee (PCMan) <pcman.tw@gmail.com></translation>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="466"/>
|
||||
<source>Toolbar</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Pasek narzędziowy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>toolBar</source>
|
||||
@ -352,27 +352,27 @@ Hong Jen Yee (PCMan) <pcman.tw@gmail.com></translation>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_preferencesdialog.h" line="127"/>
|
||||
<source>Icon theme:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Zestaw ikon:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_preferencesdialog.h" line="128"/>
|
||||
<source>Normal background color:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Kolor tła:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_preferencesdialog.h" line="129"/>
|
||||
<source>Fullscreen background color:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Kolor tła dla pełnego ekranu:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_preferencesdialog.h" line="132"/>
|
||||
<source>Slide show interval (seconds):</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Interwał pokazu slajdów (sekundy):</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_preferencesdialog.h" line="133"/>
|
||||
<source>General</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ogólne</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>TODO: Add configuration options here</source>
|
||||
|
4
src/translations/lximage-qt_ru.desktop
Normal file
4
src/translations/lximage-qt_ru.desktop
Normal file
@ -0,0 +1,4 @@
|
||||
#Translations
|
||||
Name[ru]=LXImage
|
||||
GenericName[ru]=Просмотрщик изображений
|
||||
Comment[ru]=Просмотрщик изображений LXQt
|
@ -6,12 +6,12 @@
|
||||
<message>
|
||||
<location filename="../application.cpp" line="87"/>
|
||||
<source>Take a screenshot</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Сделать снимок экрана</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../application.cpp" line="91"/>
|
||||
<source>[FILE1, FILE2,...]</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>[ФАЙЛ1, ФАЙЛ2, ...]</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -19,7 +19,7 @@
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="147"/>
|
||||
<source>About</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>О программе</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="148"/>
|
||||
@ -30,48 +30,54 @@ LXDE Project: http://lxde.org/
|
||||
|
||||
Authors:
|
||||
Hong Jen Yee (PCMan) <pcman.tw@gmail.com></source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>LXImage - простой и быстрый просмотрщик изображений
|
||||
|
||||
Copyright (C) 2013
|
||||
LXDE Project: http://lxde.org/
|
||||
|
||||
Authors:
|
||||
Hong Jen Yee (PCMan) <pcman.tw@gmail.com></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="241"/>
|
||||
<source>Open File</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Открыть файл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="242"/>
|
||||
<location filename="../mainwindow.cpp" line="263"/>
|
||||
<source>Image files (%1)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Файлы изображений (%1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="263"/>
|
||||
<source>Save File</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Сохранить файл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="525"/>
|
||||
<source>%1 (Loading...) - Image Viewer</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>%1 (Загружается...) - Просмотрщик изображений</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="530"/>
|
||||
<source>%1 (Failed to Load) - Image Viewer</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>%1 (Ошибка загрузки) - Просмотрщик изображений</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="534"/>
|
||||
<source>%1 (%2x%3) - Image Viewer</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>%1 (%2x%3) - Просмотрщик изображений</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="544"/>
|
||||
<source>Image Viewer</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Просмотрщик изображений</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="719"/>
|
||||
<source>Thumbnails</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Эскизы</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -79,249 +85,249 @@ Hong Jen Yee (PCMan) <pcman.tw@gmail.com></source>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="412"/>
|
||||
<source>Image Viewer</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Просмотрщик изображений</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="413"/>
|
||||
<source>&About</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>О &программе</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="414"/>
|
||||
<source>&Open File</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>&Открыть файл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="415"/>
|
||||
<source>Ctrl+O</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="416"/>
|
||||
<source>&Save</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>&Сохранить</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="417"/>
|
||||
<source>Ctrl+S</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="418"/>
|
||||
<source>Save &As</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Сохранить &как</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="419"/>
|
||||
<source>Ctrl+A</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="420"/>
|
||||
<source>&Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>&Закрыть</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="421"/>
|
||||
<source>Ctrl+W</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="422"/>
|
||||
<source>Zoom &In</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>При&близить</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="423"/>
|
||||
<source>Ctrl++</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="424"/>
|
||||
<source>Zoom &Out</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>От&далить</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="425"/>
|
||||
<source>Ctrl+-</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="426"/>
|
||||
<source>&Copy to Clipboard</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Скопировать в &буфер обмена</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="427"/>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="429"/>
|
||||
<source>Next File</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Следующий файл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="432"/>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="434"/>
|
||||
<source>Previous File</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Предыдущий файл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="431"/>
|
||||
<source>PgDown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="436"/>
|
||||
<source>PgUp</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="437"/>
|
||||
<source>Original Size</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Исходный размер</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="438"/>
|
||||
<source>&Fit</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>&Заполнить</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="439"/>
|
||||
<source>&Rotate Clockwise</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Пове&рнуть по часовой стрелке</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="440"/>
|
||||
<source>Rotate &Counterclockwise</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Повернуть &против часовой стрелки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="441"/>
|
||||
<source>P&references</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>&Настройки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="442"/>
|
||||
<source>&Print</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>&Печать</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="443"/>
|
||||
<source>Ctrl+P</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="444"/>
|
||||
<source>First File</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Первый файл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="445"/>
|
||||
<source>Home</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="446"/>
|
||||
<source>Last File</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Последний файл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="447"/>
|
||||
<source>End</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="448"/>
|
||||
<source>&New Window</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Новое &окно</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="449"/>
|
||||
<source>Ctrl+N</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="450"/>
|
||||
<source>Flip &Horizontally</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Отразить &горизонтально</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="451"/>
|
||||
<source>Capture Screenshot</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Сделать снимок экрана</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="452"/>
|
||||
<source>F&ull Screen</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Полный &экран</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="453"/>
|
||||
<source>F11</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="454"/>
|
||||
<source>Flip &Vertically</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Отразить &вертикально</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="455"/>
|
||||
<source>&Paste from Clipboard</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>&Вставить из буфера обмена</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="456"/>
|
||||
<source>&Slide Show</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>&Слайд-шоу</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="457"/>
|
||||
<source>&Delete</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>&Удалить</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="458"/>
|
||||
<source>Del</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="459"/>
|
||||
<source>Show Thumbnails</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Показать эскизы</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="460"/>
|
||||
<source>File Properties</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Свойства файла</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="461"/>
|
||||
<source>&File</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>&Файл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="462"/>
|
||||
<source>&Help</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>&Помощь</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="463"/>
|
||||
<source>Go</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Перейти</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="464"/>
|
||||
<source>&View</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>&Вид</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="465"/>
|
||||
<source>&Edit</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>&Редактировать</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_mainwindow.h" line="466"/>
|
||||
<source>Toolbar</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Панель инструментов</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -329,32 +335,32 @@ Hong Jen Yee (PCMan) <pcman.tw@gmail.com></source>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_preferencesdialog.h" line="126"/>
|
||||
<source>Preferences</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Настройки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_preferencesdialog.h" line="127"/>
|
||||
<source>Icon theme:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Тема значков:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_preferencesdialog.h" line="128"/>
|
||||
<source>Normal background color:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Обычный цвет фона:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_preferencesdialog.h" line="129"/>
|
||||
<source>Fullscreen background color:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Цвет фона для режима полного экрана:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_preferencesdialog.h" line="132"/>
|
||||
<source>Slide show interval (seconds):</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Интервал слайд-шоу (в секундах):</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_preferencesdialog.h" line="133"/>
|
||||
<source>General</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Общие</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -362,47 +368,47 @@ Hong Jen Yee (PCMan) <pcman.tw@gmail.com></source>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_screenshotdialog.h" line="123"/>
|
||||
<source>Screenshot</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Снимок экрана</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_screenshotdialog.h" line="124"/>
|
||||
<source>Take a screenshot</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Сделать снимок экрана</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_screenshotdialog.h" line="125"/>
|
||||
<source>Region</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Область</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_screenshotdialog.h" line="126"/>
|
||||
<source>Whole screen</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Весь экран</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_screenshotdialog.h" line="127"/>
|
||||
<source>Current window only</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Только активное окно</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_screenshotdialog.h" line="128"/>
|
||||
<source>Include mouse cursor</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Показывать курсор мыши</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_screenshotdialog.h" line="129"/>
|
||||
<source> seconds</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation> секунд(ы)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_screenshotdialog.h" line="130"/>
|
||||
<source>Delay:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Задержка:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../build/src/ui_screenshotdialog.h" line="131"/>
|
||||
<source>Include window title and frame</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Показывать заголовок и обрамление окна</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
Loading…
x
Reference in New Issue
Block a user