Compare commits

...

8 Commits

Author SHA1 Message Date
Alf Gaida
5eaa08fe49
Adding upstream version 0.6.0.
Signed-off-by: Alf Gaida <agaida@siduction.org>
2017-10-22 00:24:10 +02:00
Alf Gaida
4a8f2ba14a
Adding upstream version 0.5.1.
Signed-off-by: Alf Gaida <agaida@siduction.org>
2016-12-22 02:34:55 +01:00
Alf Gaida
d53be78755 Adding upstream version 0.5.0. 2016-09-24 12:48:49 +02:00
Alf Gaida
de1fa415b2 Adding upstream version 0.4.1~38-gf8fc532. 2016-07-20 18:14:29 +02:00
Alf Gaida
4ac585f605 Adding upstream version 0.4.0+20160108. 2016-02-07 20:16:27 +01:00
Alf Gaida
bc98f04c8a Adding upstream version 0.4.0+20151117. 2015-11-19 17:30:54 +01:00
Alf Gaida
7a6ecc3364 Adding upstream version 0.4.0+20151031. 2015-10-31 19:02:00 +01:00
Alf Gaida
95a2f6c084 Adding upstream version 0.4.0+20150828. 2015-09-04 19:47:04 +02:00
93 changed files with 2519 additions and 8917 deletions

1
.gitignore vendored
View File

@ -1 +0,0 @@
build

View File

@ -3,7 +3,7 @@ Upstream Authors:
Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
Copyright:
Copyright (c) 2013-2014 LXQt team
Copyright (c) 2013-2017 LXQt team
License: GPL-2 and LGPL-2.1+
License: GPL-2+ and LGPL-2.1+
The full text of the licenses can be found in the 'COPYING' file.

218
CHANGELOG Normal file
View File

@ -0,0 +1,218 @@
lximage-qt-0.6.0 / 2017-10-21
=============================
* Add ImageShack upload provider.
* Fix warnings issued by GCC and Clang.
* Ensure file is closed when upload finishes.
* Make image URL read-only.
* Update copyright in initial file comment for new additions.
* Make QNetworkAccessManager static and fix initialization order in UploadDialog.
* Add support for uploading files (fixes #98).
* Bump versions
* Don't export github templates
* Don't use hardcoded install dir
* Update CMakeLists.txt
* Fix regression in thumbnail view
* Add Lithuanian .desktop files
* liblxqt don't fit here
* Copied issue-template
* Drops Qt5Core_VERSION_STRING
* set Qt::AA_UseHighDpiPixmaps to true
* MainWindow: Fix crash for quick image changes
* Use GNUInstallDirs
* jobs: Do proper error handling
* Adapt to changes in libfm-qt(the c++11 port)
* Use the new lxqt-build-tools new FindExif CMake module
* Simpler code for ScreenshotSelectAreaGraphicsView class.
* Change Screenshot select area green color by actual hightlight color. Use lximage-qt private variables style.
* Adapt to C++11 and RAM improvements.
* Screenshot captures an area of the screen.
* Use const iterators
* Bump year
* File and folder DND Fixes https://github.com/lxde/lximage-qt/issues/69.
0.5.1 / 2016-12-21
==================
* Release 0.5.1: Update changelog
* Bump patch version and (#82)
* Create lximage-qt-screenshot_it.desktop (#83)
* Add *da.desktop files
* Desktop entry files: Fix typo in French translation
* [MRG] Display first image when loading a directory (v2) (#75)
* Desktop entry files: Add French translation
* Use lxqt-build-tools
* Use the new lxqt-build-tools package
* Fixed A Cast (#71)
* Remove cpack (#70)
0.5.0 / 2016-09-24
==================
* Release 0.5.0: Add changelog
* Bump version to 0.5.0 (#67)
* Remove Core and Qt from Categories in desktop file (#64)
* Extend README.md
* Fix broken compatibility introduced by libfm-qt API changes. This closes lxde/lximage-qt#63.
* Add Catalan translations
* Quieten compiler warning
* Code cleanup
* Use LXQtCompilerSettings cmake module
* Treat SVG files separately as SVG images
* build: Update translations based on *.ui
* Fix typo in Portuguese translation for desktop file
* Fix typo in German translation for desktop file (#55)
* build: Use external translations (#54)
* ts-files removal (#53)
* Hide cursor smartly in fullscreen mode
* build: Use liblxqt's TranslateDesktop module
* Adds support for GIF animation.
* Implement an EOG-like behavior on starting By clicking on an image for the first time, the user wants to see it clearly with lximage-qt. So, the following behavior is implemented here:
* Add --version command line option
* Fix missing Russian translation in desktop file
* Fix memory leak if taking screenshot with cursor
* Polish translation updated
* Another update
* Improved Russian translation - thanks to uazure
* Fix typo
* Add Russian translation
* Italian translation update
* CMake: Adapt to libfm-qt Targets
* Turn on C++11 support. This closes bug lxde/lximage-qt #36.
* Exec should have an argument
* all GPL files are (or any later)
* Add release script
* Update translations
* Set the color table properly for scaled images
* Add Greek (el) translation Remove needless country variant from language code
* Corrected language code (de_DE -> de) of german translation, marked translations as done.
* replace tabs with spaces
* remove trailing spaces
* replace glib with Qt for command-line parsing
* Don't save file in private mode
* Prevents the slideshow timeout to be set to 0 in the UI
* Correctly include CMake modules in intree/superbuild mode
* Remove lximage-qt from the Utilities category
* Update README
* Update .gitignore
* Hungarian translations added
* save and restore window size and maximized state
0.4.0 / 2015-02-18
==================
* Release v0.4.0
* src/CMakeLists.txt: do not completely overwrite CMAKE_CXX_FLAGS
* Create lximage-qt_it.desktop
* Create lximage-qt_it.ts
* CMakeLists cleanups
* Portuguese update
* Added german translation, re-generated all other .ts files.
* Added keyboard shortcut to print.
* Adds .desktop translation support
* Portuguese language update
* Remove debian directory (Close #9)
* Fix typo Zoomo -> Zoom
* Use proper naming conventions for translations
* Clean up CMakeLists, dropping support for Qt 5
0.3.0 / 2014-10-15
==================
* Release v0.3.0
* Rename preferencedialog.ui to preferencesdialog.ui
* Ignore build dir.
* debian: enable qt5 by default
* Fix lxde/lxde-qt #269 - Screenshots are not saved aedequately unless file extension is chosen manually.
* Support Qt5 and libfm-qt5.
* Make sure all enums are handled in switch
0.2.0 / 2014-05-09
==================
* Release 0.2.0
* Update desktop files
* Update README/COPYING/AUTHORS
* Add some missing link_directories()
* Commit from LXDE Pootle server by user yinghua_wang.: 70 of 70 strings translated (0 fuzzy).
* Add CPack rules for creating tarball
* Avoid creating a scaled image cache if current scale factor is 1.0 (original size).
* Rewrite the scaled image caching code in LxImage::ImageView to improve its readability and correctness.
* Add LxImage::Job class as a base class for multi-threading jobs.
* Avoid copying subimages to speed up scaling images.
* Limit the size of pixmap cache.
* Limit the size of pixmap cache.
* Create a cache for the high-quality scaled image of the currently viewport and use it to override the default paintEvent() of QGraphicsView as needed. This improves the image quality a lot when we scale down large photos.
* Cancel autoZoomFit when calling zoomOriginal(), zoomIn(), and zoomOut().
* Add copy and paste buttons to the toolbar.
* Automatically zoom to fit current window size by default.
* Make the preferences dialog non-modal and apply the settings to all existing windows.
* Add "Delete file" and "File properties" actions to the file menu.
* Add a very basic thumbnails pane based on Fm::FolderView of libfm-qt.
* Implement the preferences dialog. * Enable keyboard shortcuts in fullscreen mode.
* Implement very basic slide show functionality.
* Jump to the previous or the next image by using mouse wheel.
* Avoid scaling up an image while zoomFit() if it's smaller than the current view.
* Support grabbing mouse cursor when taking a screenshot.
* Add very basic printing support.
* Commit from LXDE Pootle server by user adrianoh2.: 70 of 70 strings translated (0 fuzzy).
* Commit from LXDE Pootle server by user Fitoschido.: 70 of 70 strings translated (0 fuzzy).
* Commit from LXDE Pootle server by user hirkmt.: 70 of 70 strings translated (0 fuzzy).
* Remove xsettings support and add an option in the preference dialog to set a fallback icon theme instead.
* New files added from LXDE Pootle server based on templates
* New files added from LXDE Pootle server based on templates
* Improve cmake integration for translations. The *.ts files are only updated when UPDATE_TRANSLATIONS cmake option is turned on.
* Commit from LXDE Pootle server by user zvacet.: 65 of 70 strings translated (0 fuzzy).
* Commit from LXDE Pootle server by user zvacet.: 50 of 70 strings translated (0 fuzzy).
* Commit from LXDE Pootle server by user wwycheuk.: 65 of 70 strings translated (0 fuzzy).
* Commit from LXDE Pootle server by user mbouzada.: 70 of 70 strings translated (0 fuzzy).
* New files added from LXDE Pootle server based on templates
* New files added from LXDE Pootle server based on templates
* Commit from LXDE Pootle server by user Fitoschido.: 68 of 70 strings translated (0 fuzzy).
* New files added from LXDE Pootle server based on templates
* New files added from LXDE Pootle server based on templates
* Corrected caml cased string toolBar.
* Commit from LXDE Pootle server by user smarquespt.: 70 of 70 strings translated (0 fuzzy).
* Commit from LXDE Pootle server by user brother.: 24 of 24 strings translated (0 fuzzy).
* Correct misspelled 'Zoom'.
* Commit from LXDE Pootle server by user andika.: 70 of 70 strings translated (0 fuzzy).
* New files added from LXDE Pootle server based on templates
* Commit from LXDE Pootle server by user strebski.: 70 of 70 strings translated (0 fuzzy).
* New files added from LXDE Pootle server based on templates
* New files added from LXDE Pootle server based on templates
* New files added from LXDE Pootle server based on templates
* New files added from LXDE Pootle server based on templates
* New files added from LXDE Pootle server based on templates
* Commit from LXDE Pootle server by user LStranger.: 70 of 70 strings translated (0 fuzzy).
* Commit from LXDE Pootle server by user brother.: 70 of 70 strings translated (0 fuzzy).
* Commit from LXDE Pootle server by user LStranger.: 2 of 70 strings translated (0 fuzzy).
* New files added from LXDE Pootle server based on templates
* New files added from LXDE Pootle server based on templates
* New files added from LXDE Pootle server based on templates
* Add zh_TW translation and a template ts file.
* Add a desktop entry file for the built-in screenshot tool.
* Add --screenshot command line argument to launch the built-in screenshot utility.
* Improve the screenshot tool. Implement pasting from clipboard.
* Add ability to taking screenshots to lximage-qt.
* debian : Add missing libx11 build-depend
* Add missing files.
* Add Xdg::DesktopSettings for detecting desktop-specific settings. Get icon theme name via XSettings or config files when available.
* Supporting saving files. (needs some more polishing, though).
* Add a basic debian directory to enable daily builds.
* Add a context menu.
* Use libexif to read EXIF orientation tags then apply them to images loaded.
* Refactor - move image loading code to LxImage::LoadImageJob class.
* Remove unused data member.
* Add a preferences dialog (not working yet). Little adjustment for menu positions and add placeholders for features not implemented.
* Fix filename encoding handling so non-English filenames can be passed correctly from command line arguments.
* Canonicalize filenames passed through command line arguments. Add an icon borrowed from GPicView. Rearrange menus and implement "fullscreen" and "copy to clipboard".
* Implement basic single instance support and command line argument parsing.
* Properly cancel pending tasks and make going back/forward more smooth. Enhance window title display.
* Little fix to avoid loading a cancelled image.
* Supports rotation of images.
* Use the latest libfm-qt APIs to filter out non-image files. Implement jumping to first and last file in the folder.
* Fix incorrect reference couting of GCancellable objects to avoid crashes. Add some shortcut keys to improve usability.
* Use glib/gio GInputStream + GIOSchedulerJob to load the images with multi-threading. Refactor, simplify class methods of LxImage::MainWindow.
* Use libfm to load folders containing the specified image. Add dependency on libexif for future implementation of EXIF related stuff. Add LxImage::Applcation class to handle application initiation.
* Initial import into git

View File

@ -1,39 +1,38 @@
cmake_minimum_required(VERSION 2.8.11)
cmake_minimum_required(VERSION 3.0.2)
project(lximage-qt)
include(GNUInstallDirs)
# additional cmake files
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
set(MAJOR_VERSION 0)
set(MINOR_VERSION 4)
set(MINOR_VERSION 6)
set(PATCH_VERSION 0)
set(LXIMAGE_VERSION ${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION})
set(LXQTBT_MINIMUM_VERSION "0.4.0")
set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_AUTOMOC ON)
find_package(Qt5Widgets REQUIRED)
find_package(Qt5Network REQUIRED)
find_package(Qt5DBus REQUIRED)
find_package(Qt5PrintSupport REQUIRED QUIET)
find_package(Qt5X11Extras REQUIRED QUIET)
find_package(Qt5LinguistTools REQUIRED QUIET)
message(STATUS "Building with Qt ${Qt5Core_VERSION_STRING}")
find_package(Qt5PrintSupport REQUIRED)
find_package(Qt5X11Extras REQUIRED)
find_package(Qt5LinguistTools REQUIRED)
find_package(Qt5Svg REQUIRED)
find_package(fm-qt REQUIRED)
find_package(lxqt-build-tools ${LXQTBT_MINIMUM_VERSION} REQUIRED)
find_package(Exif REQUIRED)
message(STATUS "Building with Qt ${Qt5Core_VERSION}")
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)
include(LXQtCompilerSettings NO_POLICY_SCOPE)
# TODO: make the X11 stuff optional.
# for screenshot support
find_package(X11 REQUIRED)
find_package(PkgConfig REQUIRED)
# Xfixes is needed to capture the mouse cursor image
pkg_check_modules(XFIXES REQUIRED xfixes)
@ -46,12 +45,3 @@ install(
DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/48x48/apps"
)
# building tarball with CPack -------------------------------------------------
include(InstallRequiredSystemLibraries)
set(CPACK_PACKAGE_VERSION_MAJOR ${MAJOR_VERSION})
set(CPACK_PACKAGE_VERSION_MINOR ${MINOR_VERSION})
set(CPACK_PACKAGE_VERSION_PATCH ${PATCH_VERSION})
set(CPACK_GENERATOR TBZ2)
set(CPACK_SOURCE_GENERATOR TBZ2)
set(CPACK_SOURCE_IGNORE_FILES /build/;.gitignore;.*~;.git;.kdev4;temp)
include(CPack)

8
README
View File

@ -1,8 +0,0 @@
# lximage-qt
A simple and fast image viewer.
The Qt port of LXImage
Upstream:
http://lxqt.org
http://git.lxde.org/gitweb/?p=lxde/lximage-qt.git

25
README.md Normal file
View File

@ -0,0 +1,25 @@
# LXImage-Qt
## Overview
LXImage-Qt is the Qt port of LXImage, a simple and fast image viewer.
In addition it features a tool to take screenshots.
It is maintained by the LXQt project but can be used independently from this desktop environment.
## Installation
### Compiling source code
Runtime dependencies are qtx11extras and [libfm-qt](https://github.com/lxde/libfm-qt) (LXImage-Qt used to depend on [PCManFM-Qt](https://github.com/lxde/pcmanfm-qt) but the relevant code belongs to what was outsourced in libfm-qt).
Additional build dependencies are CMake and optionally Git to pull latest VCS checkouts. The localization files were outsourced to repository [lxqt-l10n](https://github.com/lxde/lxqt-l10n) so the corresponding dependencies are needed, too. Please refer to this repository's `README.md` for further information.
Code configuration is handled by CMake. CMake variable `CMAKE_INSTALL_PREFIX` has to be set to `/usr` on most operating systems.
To build run `make`, to install `make install` which accepts variable `DESTDIR` as usual.
### Binary packages
Official binary packages are available in Arch Linux, Debian (as of Debian stretch), Fedora and openSUSE (Leap 42.1 and Tumbleweed).
Just use the distributions' package manager to search for string 'lximage'.

View File

@ -1,107 +0,0 @@
#=============================================================================
# The lxqt_translate_desktop() function was copied from the the
# LXQt LxQtTranste.cmake
#
# Original Author: Alexander Sokolov <sokoloff.a@gmail.com>
#
# funtion lxqt_translate_desktop(_RESULT
# SOURCES <sources>
# [TRANSLATION_DIR] translation_directory
# )
# Output:
# _RESULT The generated .desktop (.desktop) files
#
# Input:
#
# SOURCES List of input desktop files (.destktop.in) to be translated
# (merged), relative to the CMakeList.txt.
#
# TRANSLATION_DIR Optional path to the directory with the .ts files,
# relative to the CMakeList.txt. Defaults to
# "translations".
#
#=============================================================================
function(lxqt_translate_desktop _RESULT)
# Parse arguments ***************************************
set(oneValueArgs TRANSLATION_DIR)
set(multiValueArgs SOURCES)
cmake_parse_arguments(_ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
# check for unknown arguments
set(_UNPARSED_ARGS ${_ARGS_UNPARSED_ARGUMENTS})
if (NOT ${_UNPARSED_ARGS} STREQUAL "")
MESSAGE(FATAL_ERROR
"Unknown arguments '${_UNPARSED_ARGS}'.\n"
"See lxqt_translate_desktop() documenation for more information.\n"
)
endif()
if (NOT DEFINED _ARGS_SOURCES)
set(${_RESULT} "" PARENT_SCOPE)
return()
else()
set(_sources ${_ARGS_SOURCES})
endif()
if (NOT DEFINED _ARGS_TRANSLATION_DIR)
set(_translationDir "translations")
else()
set(_translationDir ${_ARGS_TRANSLATION_DIR})
endif()
get_filename_component (_translationDir ${_translationDir} ABSOLUTE)
foreach (_inFile ${_sources})
get_filename_component(_inFile ${_inFile} ABSOLUTE)
get_filename_component(_fileName ${_inFile} NAME_WE)
#Extract the real extension ............
get_filename_component(_fileExt ${_inFile} EXT)
string(REPLACE ".in" "" _fileExt ${_fileExt})
#.......................................
set(_outFile "${CMAKE_CURRENT_BINARY_DIR}/${_fileName}${_fileExt}")
file(GLOB _translations
${_translationDir}/${_fileName}_*${_fileExt}
${_translationDir}/local/${_fileName}_*${_fileExt}
)
set(_pattern "'\\[.*]\\s*='")
if (_translations)
add_custom_command(OUTPUT ${_outFile}
COMMAND grep -v "'#TRANSLATIONS_DIR='" ${_inFile} > ${_outFile}
COMMAND grep -h ${_pattern} ${_translations} >> ${_outFile}
COMMENT "Generating ${_fileName}${_fileExt}"
)
else()
add_custom_command(OUTPUT ${_outFile}
COMMAND grep -v "'#TRANSLATIONS_DIR='" ${_inFile} > ${_outFile}
COMMENT "Generating ${_fileName}${_fileExt}"
)
endif()
set(__result ${__result} ${_outFile})
# TX file ***********************************************
set(_txFile "${CMAKE_BINARY_DIR}/tx/${_fileName}${_fileExt}.tx.sh")
string(REPLACE "${CMAKE_SOURCE_DIR}/" "" _tx_translationDir ${_translationDir})
string(REPLACE "${CMAKE_SOURCE_DIR}/" "" _tx_inFile ${_inFile})
string(REPLACE "." "" _fileType ${_fileExt})
file(WRITE ${_txFile}
"[ -f ${_inFile} ] || exit 0\n"
"echo '[lxde-qt.${_fileName}_${_fileType}]'\n"
"echo 'type = DESKTOP'\n"
"echo 'source_lang = en'\n"
"echo 'source_file = ${_tx_inFile}'\n"
"echo 'file_filter = ${_tx_translationDir}/${_fileName}_<lang>${_fileExt}'\n"
"echo ''\n"
)
endforeach()
set(${_RESULT} ${__result} PARENT_SCOPE)
endfunction(lxqt_translate_desktop)

View File

@ -5,5 +5,5 @@ GenericName=Screenshot
Comment=Take a screenshot
Exec=lximage-qt --screenshot
Icon=camera-photo
Categories=Graphics;Utility;Core;Qt;
Categories=Graphics;Core;Qt;
StartupNotify=true

View File

@ -4,8 +4,8 @@ Name=LXImage
GenericName=Image Viewer
Comment=The LXQt image viewer
Icon=lximage-qt
Exec=lximage-qt
Exec=lximage-qt %F
StartupNotify=true
Terminal=false
Categories=Graphics;Utility;Core;Qt;Viewer;RasterGraphics;2DGraphics;Photography;
Categories=Graphics;Viewer;RasterGraphics;2DGraphics;Photography;
MimeType=image/bmp;image/gif;image/jpeg;image/jpg;image/png;image/tiff;image/x-bmp;image/x-pcx;image/x-tga;image/x-portable-pixmap;image/x-portable-bitmap;image/x-targa;image/x-portable-greymap;application/pcx;image/svg+xml;image/svg-xml;

View File

@ -1,4 +0,0 @@
[Project]
Name=lximage-qt
Manager=KDevCMakeManager
VersionControl=

28
release.sh Executable file
View File

@ -0,0 +1,28 @@
#!/bin/bash
PROJECT="lximage-qt"
version="$1"
prefix=$PROJECT-$version
shift
if [[ -z $version ]]; then
>&2 echo "USAGE: $0 <tag>"
exit 1
fi
mkdir -p "dist/$version"
echo "Creating $prefix.tar.gz"
git archive -9 --format tar.gz $version --prefix="$prefix/" > "dist/$version/$prefix.tar.gz"
gpg --armor --detach-sign "dist/$version/$prefix.tar.gz"
echo "Creating $prefix.tar.xz"
git archive -9 --format tar.xz $version --prefix="$prefix/" > "dist/$version/$prefix.tar.xz"
gpg --armor --detach-sign "dist/$version/$prefix.tar.xz"
cd "dist/$version"
sha1sum --tag *.tar.gz *.tar.xz >> CHECKSUMS
sha256sum --tag *.tar.gz *.tar.xz >> CHECKSUMS
cd ..
echo "Uploading to lxqt.org..."
scp -r "$version" "downloads.lxqt.org:/srv/downloads.lxqt.org/$PROJECT/"

View File

@ -1,12 +1,4 @@
# 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")
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}
)
@ -24,11 +16,21 @@ set(lximage-qt_SRCS
application.cpp
imageview.cpp
modelfilter.cpp
job.cpp
loadimagejob.cpp
saveimagejob.cpp
screenshotdialog.cpp
screenshotselectarea.cpp
screenshotselectareagraphicsview.cpp
settings.cpp
graphicsscene.cpp
upload/imageshackprovider.cpp
upload/imageshackupload.cpp
upload/imgurprovider.cpp
upload/imgurupload.cpp
upload/provider.cpp
upload/upload.cpp
upload/uploaddialog.cpp
)
qt5_add_dbus_adaptor(lximage-qt_SRCS
@ -43,20 +45,29 @@ set(lximage-qt_UIS
mainwindow.ui
preferencesdialog.ui
screenshotdialog.ui
upload/uploaddialog.ui
)
qt5_wrap_ui(lximage-qt_UI_H ${lximage-qt_UIS})
# add translation for lximage-qt
file(GLOB TS_FILES translations/*.ts)
option(UPDATE_TRANSLATIONS "Update source translation translations/*.ts files")
if(UPDATE_TRANSLATIONS)
qt5_create_translation(QM_FILES ${lximage-qt_SRCS} ${lximage-qt_UI_H} ${TS_FILES})
else()
qt5_add_translation(QM_FILES ${TS_FILES})
endif()
add_custom_target (lximage-qt_translations DEPENDS ${QM_FILES})
install(FILES ${QM_FILES} DESTINATION share/lximage-qt/translations)
include(LXQtTranslateTs)
lxqt_translate_ts(QM_FILES
UPDATE_TRANSLATIONS ${UPDATE_TRANSLATIONS}
SOURCES
${lximage-qt_SRCS}
${lximage-qt_UIS}
INSTALL_DIR
"${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/translations"
PULL_TRANSLATIONS
${PULL_TRANSLATIONS}
CLEAN_TRANSLATIONS
${CLEAN_TRANSLATIONS}
TRANSLATIONS_REPO
${TRANSLATIONS_REPO}
TRANSLATIONS_REFSPEC
${TRANSLATIONS_REFSPEC}
)
# prevent the generated files from being deleted during make clean
set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM true)
@ -65,7 +76,7 @@ include(LXQtTranslateDesktop)
file(GLOB desktop_files_in ../data/*.desktop.in)
lxqt_translate_desktop(desktop_files SOURCES ${desktop_files_in})
install(FILES ${desktop_files} DESTINATION share/applications)
install(FILES ${desktop_files} DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications")
add_executable(lximage-qt
${lximage-qt_SRCS}
@ -75,19 +86,18 @@ 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_DATA_DIR="${CMAKE_INSTALL_FULL_DATAROOTDIR}/lximage-qt"
-DLXIMAGE_VERSION="${LXIMAGE_VERSION}"
)
set(QT_LIBRARIES Qt5::Widgets Qt5::Core Qt5::DBus Qt5::PrintSupport Qt5::X11Extras)
set(QT_LIBRARIES Qt5::Widgets Qt5::Network Qt5::Core Qt5::DBus Qt5::PrintSupport Qt5::X11Extras Qt5::Svg)
target_link_libraries(lximage-qt
fm-qt
${QT_LIBRARIES}
${GLIB_LIBRARIES}
${EXIF_LIBRARIES}
${LIBFM_QT_LIBRARIES}
${X11_LIBRARIES}
${XFIXES_LIBRARIES}
)
install(TARGETS lximage-qt RUNTIME DESTINATION bin)
install(TARGETS lximage-qt RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")

View File

@ -19,6 +19,7 @@
#include "application.h"
#include <QCommandLineParser>
#include <QDBusConnection>
#include <QDBusInterface>
#include <QPixmapCache>
@ -34,11 +35,17 @@ static const char* ifaceName = "org.lxde.LxImage.Application";
Application::Application(int& argc, char** argv):
QApplication(argc, argv),
windowCount_(0),
libFm() {
libFm(),
windowCount_(0) {
setApplicationVersion(LXIMAGE_VERSION);
}
bool Application::init(int argc, char** argv) {
Q_UNUSED(argc)
Q_UNUSED(argv)
setAttribute(Qt::AA_UseHighDpiPixmaps, true);
// install the translations built-into Qt itself
qtTranslator.load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath));
installTranslator(&qtTranslator);
@ -57,10 +64,11 @@ bool Application::init(int argc, char** argv) {
// we successfully registered the service
isPrimaryInstance = true;
setQuitOnLastWindowClosed(false); // do not quit even when there're no windows
new ApplicationAdaptor(this);
dbus.registerObject("/Application", this);
// connect(this, SIGNAL(aboutToQuit()), SLOT(onAboutToQuit()));
connect(this, &Application::aboutToQuit, this, &Application::onAboutToQuit);
if(settings_.useFallbackIconTheme())
QIcon::setThemeName(settings_.fallbackIconTheme());
@ -72,81 +80,39 @@ bool Application::init(int argc, char** argv) {
}
QPixmapCache::setCacheLimit(1024); // avoid pixmap caching.
if(!parseCommandLineArgs(argc, argv))
return false;
return true;
return parseCommandLineArgs();
}
bool Application::parseCommandLineArgs(int argc, char** argv) {
bool Application::parseCommandLineArgs() {
QCommandLineParser parser;
parser.addHelpOption();
parser.addVersionOption();
struct FakeTr {
FakeTr(int reserved = 20) {
strings.reserve(reserved);
}
QCommandLineOption screenshotOption(
QStringList() << "s" << "screenshot",
tr("Take a screenshot")
);
parser.addOption(screenshotOption);
const char* operator()(const char* str) {
QString translated = QApplication::translate(NULL, str);
strings.push_back(translated.toUtf8());
return strings.back().constData();
}
QVector<QByteArray> strings;
};
const QString files = tr("[FILE1, FILE2,...]");
parser.addPositionalArgument("files", files, files);
parser.process(*this);
const QStringList args = parser.positionalArguments();
const bool screenshotTool = parser.isSet(screenshotOption);
QStringList paths;
Q_FOREACH(QString arg, args) {
QFileInfo info(arg);
paths.push_back(info.absoluteFilePath());
}
bool keepRunning = false;
// It's really a shame that the great Qt library does not come
// with any command line parser.
// After trying some Qt ways, I finally realized that glib is the best.
// Simple, efficient, effective, and does not use signal/slot!
// The only drawback is the translated string returned by tr() is
// a temporary one. We need to store them in a list to keep them alive. :-(
char** file_names = NULL;
gboolean screenshotTool = FALSE;
{ // this block is required to limit the scope of FakeTr object so it don't affect
// other normal QObject::tr() outside the block.
FakeTr tr; // a functor used to override QObject::tr().
// it convert the translated strings to UTF8 and add them to a list to
// keep them alive during the option parsing process.
GOptionEntry option_entries[] = {
{"screenshot", 0, 0, G_OPTION_ARG_NONE, &screenshotTool, tr("Take a screenshot"), NULL},
{G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &file_names, NULL, tr("[FILE1, FILE2,...]")},
{ NULL }
};
GOptionContext* context = g_option_context_new("");
g_option_context_add_main_entries(context, option_entries, NULL);
GError* error = NULL;
if(!g_option_context_parse(context, &argc, &argv, &error)) {
// show error and exit
g_fprintf(stderr, "%s\n\n", error->message);
g_error_free(error);
g_option_context_free(context);
return false;
}
g_option_context_free(context);
}
// handle files to open
QStringList paths;
if(file_names) {
char* cwd = g_get_current_dir();
for(char** filename = file_names; *filename; ++filename) {
// handle relative paths and remove unnecessary . & ..
char* canonicalName = fm_canonicalize_filename(*filename, cwd);
// convert from local encoding to QString (utf16).
QString path = QString::fromLocal8Bit(canonicalName);
g_free(canonicalName);
paths.push_back(path);
}
g_free(cwd);
}
if(isPrimaryInstance) {
settings_.load();
keepRunning = true;
if(screenshotTool) {
screenshot();
}
@ -164,8 +130,6 @@ bool Application::parseCommandLineArgs(int argc, char** argv) {
else
iface.call("newWindow", paths);
}
// cleanup
g_strfreev(file_names);
return keepRunning;
}
@ -179,13 +143,25 @@ void Application::newWindow(QStringList files) {
LxImage::MainWindow* window;
if(files.empty()) {
window = createWindow();
window->resize(settings_.windowWidth(), settings_.windowHeight());
if(settings_.windowMaximized())
window->setWindowState(window->windowState() | Qt::WindowMaximized);
window->show();
}
else {
Q_FOREACH(QString fileName, files) {
window = createWindow();
window->openImageFile(fileName);
window->show();
window->resize(settings_.windowWidth(), settings_.windowHeight());
if(settings_.windowMaximized())
window->setWindowState(window->windowState() | Qt::WindowMaximized);
/* when there's an image, we show the window AFTER resizing
and centering it appropriately at MainWindow::updateUI() */
//window->show();
}
}
}
@ -206,3 +182,7 @@ void Application::editPreferences() {
PreferencesDialog* dlg = new PreferencesDialog();
dlg->show();
}
void Application::onAboutToQuit() {
settings_.save();
}

View File

@ -34,18 +34,16 @@ class Application : public QApplication {
public:
Application(int& argc, char** argv);
bool init(int argc, char** argv);
bool parseCommandLineArgs(int argc, char** argv);
bool parseCommandLineArgs();
void newWindow(QStringList files = QStringList());
MainWindow* createWindow();
void addWindow() { // call this when you create a new toplevel window
++windowCount_;
qDebug("add");
}
void removeWindow() { // call this when you destroy a toplevel window
qDebug("remove");
--windowCount_;
if(0 == windowCount_)
quit();
@ -61,6 +59,9 @@ public Q_SLOTS:
void editPreferences();
void screenshot();
protected Q_SLOTS:
void onAboutToQuit();
private:
Fm::LibFmQt libFm;
bool isPrimaryInstance;

View File

@ -18,45 +18,31 @@
*
*/
#ifndef LXIMAGE_JOB_H
#define LXIMAGE_JOB_H
#include <gio/gio.h>
#include "graphicsscene.h"
#include <QMimeData>
#include <QUrl>
namespace LxImage {
class Job {
public:
Job();
virtual ~Job();
void cancel() {
g_cancellable_cancel(cancellable_);
}
void start();
GError* error() const {
return error_;
}
bool isCancelled() const {
return bool(g_cancellable_is_cancelled(cancellable_));
}
protected:
virtual bool run() = 0;
virtual void finish() = 0;
protected:
GCancellable* cancellable_;
GError* error_;
private:
static gboolean _jobThread(GIOSchedulerJob* job, GCancellable* cancellable, Job* pThis);
static gboolean _finish(Job* pThis);
static void _freeMe(Job* pThis);
};
GraphicsScene::GraphicsScene(QObject *parent):
QGraphicsScene (parent) {
}
#endif // LXIMAGE_JOB_H
void GraphicsScene::dragEnterEvent(QGraphicsSceneDragDropEvent *event) {
if(event->mimeData()->hasUrls())
event->acceptProposedAction();
}
void GraphicsScene::dragMoveEvent(QGraphicsSceneDragDropEvent *event) {
if(event->mimeData()->hasUrls())
event->acceptProposedAction();
}
void GraphicsScene::dropEvent(QGraphicsSceneDragDropEvent* event) {
QList<QUrl> urlList = event->mimeData()->urls();
if(!urlList.isEmpty())
Q_EMIT fileDropped(urlList.first().toLocalFile());
event->acceptProposedAction();
}
}

46
src/graphicsscene.h Normal file
View File

@ -0,0 +1,46 @@
/*
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 2013 <copyright holder> <email>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef LXIMAGE_GRAPHICSSCENE_H
#define LXIMAGE_GRAPHICSSCENE_H
#include <QGraphicsScene>
#include <QGraphicsSceneDragDropEvent>
namespace LxImage {
class GraphicsScene : public QGraphicsScene
{
Q_OBJECT
public:
GraphicsScene(QObject *parent = 0);
protected:
virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event);
virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event);
virtual void dropEvent(QGraphicsSceneDragDropEvent* event);
Q_SIGNALS:
void fileDropped(const QString file);
};
}
#endif // LXIMAGE_GRAPHICSSCENE_H

View File

@ -24,37 +24,54 @@
#include <QPainter>
#include <QTimer>
#include <QPolygon>
#include <QDebug>
#include <QStyle>
#include <QLabel>
#include <QGraphicsProxyWidget>
#include <QGraphicsSvgItem>
#define CURSOR_HIDE_DELY 3000
namespace LxImage {
ImageView::ImageView(QWidget* parent):
QGraphicsView(parent),
scene_(new GraphicsScene(this)),
imageItem_(new QGraphicsRectItem()),
scene_(new QGraphicsScene(this)),
gifMovie_(nullptr),
cacheTimer_(nullptr),
cursorTimer_(nullptr),
scaleFactor_(1.0),
autoZoomFit_(false),
cacheTimer_(NULL),
scaleFactor_(1.0) {
isSVG(false) {
setViewportMargins(0, 0, 0, 0);
setContentsMargins(0, 0, 0, 0);
setLineWidth(0);
setScene(scene_);
connect(scene_, &GraphicsScene::fileDropped, this, &ImageView::onFileDropped);
imageItem_->hide();
imageItem_->setPen(QPen(Qt::NoPen)); // remove the border
scene_->addItem(imageItem_);
}
ImageView::~ImageView() {
delete imageItem_;
scene_->clear(); // deletes all items
if(gifMovie_)
delete gifMovie_;
if(cacheTimer_) {
cacheTimer_->stop();
delete cacheTimer_;
}
if(cursorTimer_) {
cursorTimer_->stop();
delete cursorTimer_;
}
}
void ImageView::onFileDropped(const QString file) {
Q_EMIT fileDropped(file);
}
void ImageView::wheelEvent(QWheelEvent* event) {
int delta = event->delta();
@ -83,6 +100,34 @@ void ImageView::mouseDoubleClickEvent(QMouseEvent* event) {
QAbstractScrollArea::mouseDoubleClickEvent(event);
}
void ImageView::mousePressEvent(QMouseEvent * event) {
QGraphicsView::mousePressEvent(event);
if(cursorTimer_) cursorTimer_->stop();
}
void ImageView::mouseReleaseEvent(QMouseEvent* event) {
QGraphicsView::mouseReleaseEvent(event);
if(cursorTimer_) cursorTimer_->start(CURSOR_HIDE_DELY);
}
void ImageView::mouseMoveEvent(QMouseEvent* event) {
QGraphicsView::mouseMoveEvent(event);
if(cursorTimer_ && (viewport()->cursor().shape() == Qt::BlankCursor
|| viewport()->cursor().shape() == Qt::OpenHandCursor)) {
cursorTimer_->start(CURSOR_HIDE_DELY); // restart timer
viewport()->setCursor(Qt::OpenHandCursor);
}
}
void ImageView::focusInEvent(QFocusEvent* event) {
QGraphicsView::focusInEvent(event);
if(cursorTimer_ && (viewport()->cursor().shape() == Qt::BlankCursor
|| viewport()->cursor().shape() == Qt::OpenHandCursor)) {
cursorTimer_->start(CURSOR_HIDE_DELY); // restart timer
viewport()->setCursor(Qt::OpenHandCursor);
}
}
void ImageView::resizeEvent(QResizeEvent* event) {
QGraphicsView::resizeEvent(event);
if(autoZoomFit_)
@ -130,7 +175,21 @@ void ImageView::zoomOriginal() {
queueGenerateCache();
}
void ImageView::setImage(QImage image) {
void ImageView::setImage(QImage image, bool show) {
if(show && (gifMovie_ || isSVG)) { // a gif animation or SVG file was shown before
scene_->clear();
isSVG = false;
if(gifMovie_) { // should be deleted explicitly
delete gifMovie_;
gifMovie_ = nullptr;
}
// 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 +197,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 +210,66 @@ void ImageView::setImage(QImage image) {
queueGenerateCache();
}
void ImageView::setGifAnimation(QString fileName) {
/* the built-in gif reader gives the first frame, which won't
be shown but is used for tracking position and dimensions */
image_ = QImage(fileName);
if(image_.isNull()) {
if(imageItem_) {
imageItem_->hide();
imageItem_->setBrush(QBrush());
}
scene_->setSceneRect(0, 0, 0, 0);
}
else {
scene_->clear();
imageItem_ = nullptr; // it's deleted by clear();
if(gifMovie_) {
delete gifMovie_;
gifMovie_ = nullptr;
}
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();
scene_->addItem(gifItem);
scene_->setSceneRect(gifItem->boundingRect());
}
if(autoZoomFit_)
zoomFit();
queueGenerateCache(); // deletes the cache timer in this case
}
void ImageView::setSVG(QString fileName) {
image_ = QImage(fileName); // for tracking position and dimensions
if(image_.isNull()) {
if(imageItem_) {
imageItem_->hide();
imageItem_->setBrush(QBrush());
}
scene_->setSceneRect(0, 0, 0, 0);
}
else {
scene_->clear();
imageItem_ = nullptr;
isSVG = true;
QGraphicsSvgItem *svgItem = new QGraphicsSvgItem(fileName);
scene_->addItem(svgItem);
scene_->setSceneRect(svgItem->boundingRect());
}
if(autoZoomFit_)
zoomFit();
queueGenerateCache(); // deletes the cache timer in this case
}
void ImageView::setScaleFactor(double factor) {
if(factor != scaleFactor_) {
scaleFactor_ = factor;
@ -160,7 +281,7 @@ void ImageView::setScaleFactor(double factor) {
void ImageView::paintEvent(QPaintEvent* event) {
// if the image is scaled and we have a high quality cached image
if(scaleFactor_ != 1.0 && !cachedPixmap_.isNull()) {
if(imageItem_ && scaleFactor_ != 1.0 && !cachedPixmap_.isNull()) {
// rectangle of the whole image in viewport coordinate
QRect viewportImageRect = sceneToViewport(imageItem_->rect());
// the visible part of the image.
@ -189,11 +310,12 @@ 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 or SVG images either
if(scaleFactor_ == 1.0 || gifMovie_ || isSVG) {
if(cacheTimer_) {
cacheTimer_->stop();
delete cacheTimer_;
cacheTimer_ = NULL;
cacheTimer_ = nullptr;
}
return;
}
@ -201,16 +323,19 @@ void ImageView::queueGenerateCache() {
if(!cacheTimer_) {
cacheTimer_ = new QTimer();
cacheTimer_->setSingleShot(true);
connect(cacheTimer_, SIGNAL(timeout()), SLOT(generateCache()));
connect(cacheTimer_, &QTimer::timeout, this, &ImageView::generateCache);
}
cacheTimer_->start(200); // restart the timer
if(cacheTimer_)
cacheTimer_->start(200); // restart the timer
}
// really generate the cache
void ImageView::generateCache() {
// disable the one-shot timer
cacheTimer_->deleteLater();
cacheTimer_ = NULL;
cacheTimer_ = nullptr;
if(!imageItem_ || image_.isNull()) return;
// generate a cache for "the visible part" of the scaled image
// rectangle of the whole image in viewport coordinate
@ -226,18 +351,18 @@ void ImageView::generateCache() {
const uchar* bits = image_.constBits();
unsigned int offset = subRect.x() * image_.depth() / 8 + subRect.y() * image_.bytesPerLine();
QImage subImage = QImage(bits + offset, subRect.width(), subRect.height(), image_.bytesPerLine(), image_.format());
// If the original image has a color table, also use it for the subImage
QVector<QRgb> colorTable = image_.colorTable();
if (!colorTable.empty())
subImage.setColorTable(colorTable);
// QImage scaled = subImage.scaled(subRect.width() * scaleFactor_, subRect.height() * scaleFactor_, Qt::KeepAspectRatio, Qt::SmoothTransformation);
QImage scaled = subImage.scaled(cachedRect_.width(), cachedRect_.height(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
// convert the cached scaled image to pixmap
cachedPixmap_ = QPixmap::fromImage(scaled);
viewport()->update();
/*
qDebug() << "viewportImageRect" << viewportImageRect
<< "cachedRect_" << cachedRect_
<< "cachedSceneRect_" << cachedSceneRect_
<< "subRect" << subRect;
*/
}
// convert viewport coordinate to the original image (not scaled).
@ -254,5 +379,26 @@ QRect ImageView::sceneToViewport(const QRectF& rect) {
return QRect(topLeft, bottomRight);
}
void ImageView::blankCursor() {
viewport()->setCursor(Qt::BlankCursor);
}
void ImageView::hideCursor(bool enable) {
if(enable) {
if(cursorTimer_) delete cursorTimer_;
cursorTimer_ = new QTimer(this);
cursorTimer_->setSingleShot(true);
connect(cursorTimer_, &QTimer::timeout, this, &ImageView::blankCursor);
if(viewport()->cursor().shape() == Qt::OpenHandCursor)
cursorTimer_->start(CURSOR_HIDE_DELY);
}
else if (cursorTimer_) {
cursorTimer_->stop();
delete cursorTimer_;
cursorTimer_ = nullptr;
if(viewport()->cursor().shape() == Qt::BlankCursor)
viewport()->setCursor(Qt::OpenHandCursor);
}
}
} // namespace LxImage

View File

@ -21,11 +21,13 @@
#ifndef LXIMAGE_IMAGEVIEW_H
#define LXIMAGE_IMAGEVIEW_H
#include "graphicsscene.h"
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsRectItem>
#include <QImage>
#include <QPixmap>
#include <QMovie>
#include <QRect>
class QTimer;
@ -39,7 +41,9 @@ public:
ImageView(QWidget* parent = 0);
virtual ~ImageView();
void setImage(QImage image);
void setImage(QImage image, bool show = true);
void setGifAnimation(QString fileName);
void setSVG(QString fileName);
QImage image() {
return image_;
@ -64,10 +68,20 @@ public:
void setAutoZoomFit(bool value) {
autoZoomFit_ = value;
}
// if set to true, hides the cursor after 3s of inactivity
void hideCursor(bool enable);
Q_SIGNALS:
void fileDropped(const QString file);
protected:
virtual void wheelEvent(QWheelEvent* event);
virtual void mouseDoubleClickEvent(QMouseEvent* event);
virtual void mousePressEvent(QMouseEvent* event);
virtual void mouseReleaseEvent(QMouseEvent* event);
virtual void mouseMoveEvent(QMouseEvent* event);
virtual void focusInEvent(QFocusEvent* event);
virtual void resizeEvent(QResizeEvent* event);
virtual void paintEvent(QPaintEvent* event);
@ -77,18 +91,23 @@ private:
QRect sceneToViewport(const QRectF& rect);
private Q_SLOTS:
void onFileDropped(const QString file);
void generateCache();
void blankCursor();
private:
QGraphicsScene* scene_; // the topmost container of all graphic items
GraphicsScene* 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)
QTimer* cacheTimer_;
QTimer *cursorTimer_; // for hiding cursor in fullscreen mode
double scaleFactor_;
bool autoZoomFit_;
bool isSVG; // is the image an SVG file?
};
}

View File

@ -1,64 +0,0 @@
/*
* <one line to give the library's name and an idea of what it does.>
* Copyright (C) 2014 <copyright holder> <email>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
#include "job.h"
namespace LxImage {
Job::Job():
cancellable_(g_cancellable_new()),
error_(NULL) {
}
Job::~Job() {
g_object_unref(cancellable_);
if(error_)
g_error_free(error_);
}
// This is called from the worker thread, not main thread
gboolean Job::_jobThread(GIOSchedulerJob* job, GCancellable* cancellable, Job* pThis) {
bool ret = pThis->run();
// do final step in the main thread
if(!g_cancellable_is_cancelled(pThis->cancellable_))
g_io_scheduler_job_send_to_mainloop(job, GSourceFunc(_finish), pThis, NULL);
return FALSE;
}
void Job::start() {
g_io_scheduler_push_job(GIOSchedulerJobFunc(_jobThread),
this, GDestroyNotify(_freeMe),
G_PRIORITY_DEFAULT, cancellable_);
}
// this function is called from main thread only
gboolean Job::_finish(Job* pThis) {
// only do processing if the job is not cancelled
if(!g_cancellable_is_cancelled(pThis->cancellable_)) {
pThis->finish();
}
return TRUE;
}
void Job::_freeMe(Job* pThis) {
delete pThis;
}
}

View File

@ -21,104 +21,106 @@
#include "loadimagejob.h"
#include "mainwindow.h"
#include <QImageReader>
#include <QBuffer>
#include <QByteArray>
#include <qvarlengtharray.h>
#include <libexif/exif-loader.h>
using namespace LxImage;
LoadImageJob::LoadImageJob(MainWindow* window, FmPath* filePath):
Job(),
path_(fm_path_ref(filePath)),
mainWindow_(window) {
LoadImageJob::LoadImageJob(const Fm::FilePath & filePath):
path_{filePath} {
}
LoadImageJob::~LoadImageJob() {
fm_path_unref(path_);
}
// This is called from the worker thread, not main thread
bool LoadImageJob::run() {
GFile* gfile = fm_path_to_gfile(path_);
GFileInputStream* fileStream = g_file_read(gfile, cancellable_, &error_);
g_object_unref(gfile);
void LoadImageJob::exec() {
GFileInputStream* fileStream = nullptr;
Fm::GErrorPtr error;
ErrorAction act = ErrorAction::RETRY;
QByteArray imageBuffer;
while (act == ErrorAction::RETRY && !isCancelled())
{
error.reset();
if (nullptr == (fileStream = g_file_read(path_.gfile().get(), cancellable().get(), &error)))
{
act = emitError(error);
continue;
}
if(fileStream) { // if the file stream is successfually opened
QBuffer imageBuffer;
// the file stream is successfully opened
imageBuffer.truncate(0);
GInputStream* inputStream = G_INPUT_STREAM(fileStream);
while(!g_cancellable_is_cancelled(cancellable_)) {
while(!error && !isCancelled()) {
char buffer[4096];
gssize readSize = g_input_stream_read(inputStream,
error.reset();
gssize readSize = g_input_stream_read(inputStream,
buffer, 4096,
cancellable_, &error_);
cancellable().get(), &error);
if(readSize == -1 || readSize == 0) // error or EOF
break;
// append the bytes read to the image buffer
imageBuffer.buffer().append(buffer, readSize);
imageBuffer.append(buffer, readSize);
}
g_input_stream_close(inputStream, NULL, NULL);
// FIXME: maybe it's a better idea to implement a GInputStream based QIODevice.
if(!error_ && !g_cancellable_is_cancelled(cancellable_)) { // load the image from buffer if there are no errors
image_ = QImage::fromData(imageBuffer.buffer());
if(!image_.isNull()) { // if the image is loaded correctly
// check if this file is a jpeg file
// FIXME: can we use FmFileInfo instead if it's available?
const char* basename = fm_path_get_basename(path_);
char* mime_type = g_content_type_guess(basename, NULL, 0, NULL);
if(mime_type && strcmp(mime_type, "image/jpeg") == 0) { // this is a jpeg file
// use libexif to extract additional info embedded in jpeg files
ExifLoader *exif_loader = exif_loader_new();
// write image data to exif loader
int ret = exif_loader_write(exif_loader, (unsigned char*)imageBuffer.data().constData(), (unsigned int)imageBuffer.size());
ExifData *exif_data = exif_loader_get_data(exif_loader);
exif_loader_unref(exif_loader);
if(exif_data) {
/* reference for EXIF orientation tag:
* http://www.impulseadventure.com/photo/exif-orientation.html */
ExifEntry* orient_ent = exif_data_get_entry(exif_data, EXIF_TAG_ORIENTATION);
if(orient_ent) { /* orientation flag found in EXIF */
gushort orient;
ExifByteOrder bo = exif_data_get_byte_order(exif_data);
/* bo == EXIF_BYTE_ORDER_INTEL ; */
orient = exif_get_short (orient_ent->data, bo);
qreal rotate_degrees = 0.0;
switch(orient) {
case 1: /* no rotation */
break;
case 8:
rotate_degrees = 270.0;
break;
case 3:
rotate_degrees = 180.0;
break;
case 6:
rotate_degrees = 90.0;
break;
}
// rotate the image according to EXIF orientation tag
if(rotate_degrees != 0.0) {
QTransform transform;
transform.rotate(rotate_degrees);
image_ = image_.transformed(transform, Qt::SmoothTransformation);
}
// TODO: handle other EXIF tags as well
if (!error)
break; // everything read or cancel requested
act = emitError(error);
}
// FIXME: maybe it's a better idea to implement a GInputStream based QIODevice.
if(!error && !isCancelled()) { // load the image from buffer if there are no errors
image_ = QImage::fromData(imageBuffer);
if(!image_.isNull()) { // if the image is loaded correctly
// check if this file is a jpeg file
// FIXME: can we use FmFileInfo instead if it's available?
const Fm::CStrPtr basename = path_.baseName();
const Fm::CStrPtr mime_type{g_content_type_guess(basename.get(), NULL, 0, NULL)};
if(mime_type && strcmp(mime_type.get(), "image/jpeg") == 0) { // this is a jpeg file
// use libexif to extract additional info embedded in jpeg files
std::unique_ptr<ExifLoader, decltype (&exif_loader_unref)> exif_loader{exif_loader_new(), &exif_loader_unref};
// write image data to exif loader
exif_loader_write(exif_loader.get(), reinterpret_cast<unsigned char*>(const_cast<char *>(imageBuffer.constData())), static_cast<unsigned int>(imageBuffer.size()));
std::unique_ptr<ExifData, decltype (&exif_data_unref)> exif_data{exif_loader_get_data(exif_loader.get()), &exif_data_unref};
exif_loader.reset();
if (exif_data) {
/* reference for EXIF orientation tag:
* http://www.impulseadventure.com/photo/exif-orientation.html */
ExifEntry* orient_ent = exif_data_get_entry(exif_data.get(), EXIF_TAG_ORIENTATION);
if(orient_ent) { /* orientation flag found in EXIF */
gushort orient;
ExifByteOrder bo = exif_data_get_byte_order(exif_data.get());
/* bo == EXIF_BYTE_ORDER_INTEL ; */
orient = exif_get_short (orient_ent->data, bo);
qreal rotate_degrees = 0.0;
switch(orient) {
case 1: /* no rotation */
break;
case 8:
rotate_degrees = 270.0;
break;
case 3:
rotate_degrees = 180.0;
break;
case 6:
rotate_degrees = 90.0;
break;
}
exif_data_unref(exif_data);
// rotate the image according to EXIF orientation tag
if(rotate_degrees != 0.0) {
QTransform transform;
transform.rotate(rotate_degrees);
image_ = image_.transformed(transform, Qt::SmoothTransformation);
}
// TODO: handle other EXIF tags as well
}
}
g_free(mime_type);
}
}
}
return false;
}
// this function is called from main thread only
void LoadImageJob::finish() {
// only do processing if the job is not cancelled
if(!g_cancellable_is_cancelled(cancellable_)) {
mainWindow_->onImageLoaded(this);
}
}

View File

@ -21,37 +21,31 @@
#ifndef LXIMAGE_LOADIMAGEJOB_H
#define LXIMAGE_LOADIMAGEJOB_H
#include <gio/gio.h>
#include <libfm/fm.h>
#include <libfm-qt/core/filepath.h>
#include <QImage>
#include "job.h"
#include <libfm-qt/core/job.h>
namespace LxImage {
class MainWindow;
class LoadImageJob : public Job {
class LoadImageJob : public Fm::Job {
public:
LoadImageJob(MainWindow* window, FmPath* filePath);
LoadImageJob(const Fm::FilePath & filePath);
QImage image() const {
return image_;
}
FmPath* filePath() const {
const Fm::FilePath & filePath() const {
return path_;
}
private:
~LoadImageJob(); // prevent direct deletion
virtual bool run();
virtual void finish();
virtual void exec() override;
public:
MainWindow* mainWindow_;
FmPath* path_;
const Fm::FilePath path_;
QImage image_;
};

View File

@ -19,6 +19,8 @@
#include "mainwindow.h"
#include <QDir>
#include <QFileInfo>
#include <QMessageBox>
#include <QFileDialog>
#include <QImage>
@ -28,62 +30,69 @@
#include <QPainter>
#include <QPrintDialog>
#include <QPrinter>
#include <QDebug>
#include <QWheelEvent>
#include <QMouseEvent>
#include <QTimer>
#include <QShortcut>
#include <QDockWidget>
#include <QScrollBar>
#include <QDesktopWidget>
#include <QGraphicsSvgItem>
#include "application.h"
#include <libfm-qt/path.h>
#include <libfm-qt/folderview.h>
#include <libfm-qt/filepropsdialog.h>
#include <libfm-qt/fileoperation.h>
#include <libfm-qt/folderitemdelegate.h>
#include "upload/uploaddialog.h"
using namespace LxImage;
MainWindow::MainWindow():
QMainWindow(),
currentFile_(NULL),
slideShowTimer_(NULL),
// currentFileInfo_(NULL),
loadJob_(NULL),
saveJob_(NULL),
folder_(NULL),
folderPath_(NULL),
contextMenu_(new QMenu(this)),
slideShowTimer_(nullptr),
image_(),
// currentFileInfo_(nullptr),
imageModified_(false),
folder_(nullptr),
folderModel_(new Fm::FolderModel()),
proxyModel_(new Fm::ProxyFolderModel()),
modelFilter_(new ModelFilter()),
imageModified_(false),
contextMenu_(new QMenu(this)),
thumbnailsDock_(NULL),
thumbnailsView_(NULL),
image_() {
thumbnailsDock_(nullptr),
thumbnailsView_(nullptr),
loadJob_(nullptr),
saveJob_(nullptr) {
setAttribute(Qt::WA_DeleteOnClose); // FIXME: check if current image is saved before close
Application* app = static_cast<Application*>(qApp);
app->addWindow();
Settings& settings = app->settings();
ui.setupUi(this);
connect(ui.actionScreenshot, SIGNAL(triggered(bool)), app, SLOT(screenshot()));
connect(ui.actionPreferences, SIGNAL(triggered(bool)), app ,SLOT(editPreferences()));
connect(ui.actionScreenshot, &QAction::triggered, app, &Application::screenshot);
connect(ui.actionPreferences, &QAction::triggered, app , &Application::editPreferences);
proxyModel_->addFilter(modelFilter_);
proxyModel_->sort(Fm::FolderModel::ColumnFileName, Qt::AscendingOrder);
proxyModel_->setSourceModel(folderModel_);
// build context menu
ui.view->setContextMenuPolicy(Qt::CustomContextMenu);
connect(ui.view, SIGNAL(customContextMenuRequested(QPoint)), SLOT(onContextMenu(QPoint)));
connect(ui.view, &QWidget::customContextMenuRequested, this, &MainWindow::onContextMenu);
connect(ui.view, &ImageView::fileDropped, this, &MainWindow::onFileDropped);
// install an event filter on the image view
ui.view->installEventFilter(this);
ui.view->setBackgroundBrush(QBrush(app->settings().bgColor()));
ui.view->setBackgroundBrush(QBrush(settings.bgColor()));
if(app->settings().showThumbnails())
if(settings.showThumbnails())
setShowThumbnails(true);
contextMenu_->addAction(ui.actionPrevious);
contextMenu_->addAction(ui.actionNext);
contextMenu_->addSeparator();
@ -103,11 +112,11 @@ MainWindow::MainWindow():
// create shortcuts
QShortcut* shortcut = new QShortcut(Qt::Key_Left, this);
connect(shortcut, SIGNAL(activated()), SLOT(on_actionPrevious_triggered()));
connect(shortcut, &QShortcut::activated, this, &MainWindow::on_actionPrevious_triggered);
shortcut = new QShortcut(Qt::Key_Right, this);
connect(shortcut, SIGNAL(activated()), SLOT(on_actionNext_triggered()));
connect(shortcut, &QShortcut::activated, this, &MainWindow::on_actionNext_triggered);
shortcut = new QShortcut(Qt::Key_Escape, this);
connect(shortcut, SIGNAL(activated()), SLOT(onExitFullscreen()));
connect(shortcut, &QShortcut::activated, this, &MainWindow::onExitFullscreen);
}
MainWindow::~MainWindow() {
@ -122,16 +131,8 @@ MainWindow::~MainWindow() {
loadJob_->cancel();
// we don't need to do delete here. It will be done automatically
}
if(currentFile_)
fm_path_unref(currentFile_);
//if(currentFileInfo_)
// fm_file_info_unref(currentFileInfo_);
if(folder_) {
g_signal_handlers_disconnect_by_func(folder_, gpointer(_onFolderLoaded), this);
g_object_unref(folder_);
}
if(folderPath_)
fm_path_unref(folderPath_);
delete folderModel_;
delete proxyModel_;
delete modelFilter_;
@ -169,8 +170,7 @@ void MainWindow::on_actionZoomOut_triggered() {
ui.view->zoomOut();
}
void MainWindow::onFolderLoaded(FmFolder* folder) {
qDebug("Finish loading: %d files", proxyModel_->rowCount());
void MainWindow::onFolderLoaded() {
// if currently we're showing a file, get its index in the folder now
// since the folder is fully loaded.
if(currentFile_ && !currentIndex_.isValid()) {
@ -181,19 +181,38 @@ void MainWindow::onFolderLoaded(FmFolder* folder) {
thumbnailsView_->childView()->scrollTo(currentIndex_, QAbstractItemView::EnsureVisible);
}
}
// this is used to open the first image of a folder
else if (!currentFile_)
on_actionFirst_triggered();
}
void MainWindow::openImageFile(QString fileName) {
FmPath* path = fm_path_new_for_str(qPrintable(fileName));
if(currentFile_ && fm_path_equal(currentFile_, path)) {
const Fm::FilePath path = Fm::FilePath::fromPathStr(qPrintable(fileName));
// the same file! do not load it again
fm_path_unref(path);
if(currentFile_ && currentFile_ == path)
return;
if (QFileInfo(fileName).isDir()) {
if(path == folderPath_)
return;
QList<QByteArray> formats = QImageReader::supportedImageFormats();
QStringList formatsFilters;
for (const QByteArray& format: formats)
formatsFilters << QString("*.") + format;
QDir dir(fileName);
dir.setNameFilters(formatsFilters);
dir.setFilter(QDir::Files | QDir::NoDotAndDotDot);
if(dir.entryList().isEmpty())
return;
currentFile_ = Fm::FilePath{};
loadFolder(path);
} else {
// load the image file asynchronously
loadImage(path);
loadFolder(path.parent());
}
// load the image file asynchronously
loadImage(path);
loadFolder(fm_path_get_parent(path));
fm_path_unref(path);
}
// paste the specified image into the current view,
@ -203,14 +222,12 @@ void MainWindow::pasteImage(QImage newImage) {
// cancel loading of current image
if(loadJob_) {
loadJob_->cancel(); // the job object will be freed automatically later
loadJob_ = NULL;
loadJob_ = nullptr;
}
setModified(true);
currentIndex_ = QModelIndex(); // invaludate current index since we don't have a folder model now
if(currentFile_)
fm_path_unref(currentFile_);
currentFile_ = NULL;
currentFile_ = Fm::FilePath{};
image_ = newImage;
ui.view->setImage(image_);
@ -240,6 +257,12 @@ QString MainWindow::openFileName() {
return fileName;
}
QString MainWindow::openDirectory() {
QString directory = QFileDialog::getExistingDirectory(this,
tr("Open directory"), QString());
return directory;
}
// popup a file dialog and retrieve the selected image file name
QString MainWindow::saveFileName(QString defaultName) {
QString filterStr;
@ -255,7 +278,7 @@ QString MainWindow::saveFileName(QString defaultName) {
break;
}
// FIXME: should we generate better filter strings? one format per item?
QString fileName = QFileDialog::getSaveFileName(
this, tr("Save File"), defaultName, tr("Image files (%1)").arg(filterStr));
@ -272,8 +295,21 @@ void MainWindow::on_actionOpenFile_triggered() {
}
}
void MainWindow::on_actionOpenDirectory_triggered() {
QString directory = openDirectory();
if(!directory.isEmpty()) {
openImageFile(directory);
}
}
void MainWindow::on_actionNewWindow_triggered() {
Application* app = static_cast<Application*>(qApp);
MainWindow* window = new MainWindow();
window->resize(app->settings().windowWidth(), app->settings().windowHeight());
if(app->settings().windowMaximized())
window->setWindowState(window->windowState() | Qt::WindowMaximized);
window->show();
}
@ -292,39 +328,37 @@ void MainWindow::on_actionSave_triggered() {
void MainWindow::on_actionSaveAs_triggered() {
if(saveJob_) // if we're currently saving another file
return;
QString fileName = saveFileName(currentFile_ ? Fm::Path(currentFile_).displayName() : QString());
QString baseName;
if(currentFile_)
baseName = QString::fromUtf8(currentFile_.displayName().get());
QString fileName = saveFileName(baseName);
if(!fileName.isEmpty()) {
FmPath* path = fm_path_new_for_str(qPrintable(fileName));
const Fm::FilePath path = Fm::FilePath::fromPathStr(qPrintable(fileName));
// save the image file asynchronously
saveImage(path);
if(!currentFile_) { // if we haven't load any file yet
currentFile_ = path;
loadFolder(fm_path_get_parent(path));
loadFolder(path.parent());
}
else
fm_path_unref(path);
}
}
void MainWindow::on_actionDelete_triggered() {
// delete the current file
if(currentFile_) {
FmPathList* paths = fm_path_list_new();
fm_path_list_push_tail(paths, currentFile_);
Fm::FileOperation::deleteFiles(paths);
fm_path_list_unref(paths);
}
if(currentFile_)
Fm::FileOperation::deleteFiles({currentFile_});
}
void MainWindow::on_actionFileProperties_triggered() {
if(currentIndex_.isValid()) {
FmFileInfo* file = proxyModel_->fileInfoFromIndex(currentIndex_);
const auto file = proxyModel_->fileInfoFromIndex(currentIndex_);
// it's better to use an async job to query the file info since it's
// possible that loading of the folder is not finished and the file info is
// not available yet, but it's overkill for a rarely used function.
if(file)
Fm::FilePropsDialog::showForFile(file);
Fm::FilePropsDialog::showForFile(std::move(file));
}
}
@ -341,12 +375,9 @@ void MainWindow::on_actionNext_triggered() {
index = proxyModel_->index(currentIndex_.row() + 1, 0);
else
index = proxyModel_->index(0, 0);
FmFileInfo* info = proxyModel_->fileInfoFromIndex(index);
if(info) {
FmPath* path = fm_file_info_get_path(info);
qDebug("try load: %s", fm_path_get_basename(path));
loadImage(path, index);
}
const auto info = proxyModel_->fileInfoFromIndex(index);
if(info)
loadImage(info->path(), index);
}
}
@ -355,91 +386,83 @@ void MainWindow::on_actionPrevious_triggered() {
return;
if(currentIndex_.isValid()) {
QModelIndex index;
qDebug("current row: %d", currentIndex_.row());
if(currentIndex_.row() > 0)
index = proxyModel_->index(currentIndex_.row() - 1, 0);
else
index = proxyModel_->index(proxyModel_->rowCount() - 1, 0);
FmFileInfo* info = proxyModel_->fileInfoFromIndex(index);
if(info) {
FmPath* path = fm_file_info_get_path(info);
qDebug("try load: %s", fm_path_get_basename(path));
loadImage(path, index);
}
const auto info = proxyModel_->fileInfoFromIndex(index);
if(info)
loadImage(info->path(), index);
}
}
void MainWindow::on_actionFirst_triggered() {
QModelIndex index = proxyModel_->index(0, 0);
if(index.isValid()) {
FmFileInfo* info = proxyModel_->fileInfoFromIndex(index);
if(info) {
FmPath* path = fm_file_info_get_path(info);
qDebug("try load: %s", fm_path_get_basename(path));
loadImage(path, index);
}
const auto info = proxyModel_->fileInfoFromIndex(index);
if(info)
loadImage(info->path(), index);
}
}
void MainWindow::on_actionLast_triggered() {
QModelIndex index = proxyModel_->index(proxyModel_->rowCount() - 1, 0);
if(index.isValid()) {
FmFileInfo* info = proxyModel_->fileInfoFromIndex(index);
if(info) {
FmPath* path = fm_file_info_get_path(info);
qDebug("try load: %s", fm_path_get_basename(path));
loadImage(path, index);
}
const auto info = proxyModel_->fileInfoFromIndex(index);
if(info)
loadImage(info->path(), index);
}
}
void MainWindow::loadFolder(FmPath* newFolderPath) {
void MainWindow::loadFolder(const Fm::FilePath & newFolderPath) {
if(folder_) { // an folder is already loaded
if(fm_path_equal(newFolderPath, folderPath_)) // same folder, ignore
if(newFolderPath == folderPath_) // same folder, ignore
return;
// free current folder
g_signal_handlers_disconnect_by_func(folder_, gpointer(_onFolderLoaded), this);
g_object_unref(folder_);
fm_path_unref(folderPath_);
disconnect(folder_.get(), nullptr, this, nullptr); // disconnect from all signals
}
folderPath_ = fm_path_ref(newFolderPath);
folder_ = fm_folder_from_path(newFolderPath);
g_signal_connect(folder_, "finish-loading", G_CALLBACK(_onFolderLoaded), this);
folderPath_ = newFolderPath;
folder_ = Fm::Folder::fromPath(folderPath_);
connect(folder_.get(), &Fm::Folder::finishLoading, this, &MainWindow::onFolderLoaded);
folderModel_->setFolder(folder_);
currentIndex_ = QModelIndex(); // set current index to invalid
}
// the image is loaded (the method is only called if the loading is not cancelled)
void MainWindow::onImageLoaded(LoadImageJob* job) {
loadJob_ = NULL; // the job object will be freed later automatically
void MainWindow::onImageLoaded() {
// Note: As the signal finished() is emitted from different thread,
// we can get it even after canceling the job (and setting the loadJob_
// to nullptr). This simple check should be enough.
if (sender() == loadJob_)
{
image_ = loadJob_->image();
image_ = job->image();
ui.view->setAutoZoomFit(true);
ui.view->setImage(image_);
loadJob_ = nullptr; // the job object will be freed later automatically
if(!currentIndex_.isValid())
currentIndex_ = indexFromPath(currentFile_);
ui.view->setAutoZoomFit(true);
ui.view->setImage(image_);
updateUI();
if(!currentIndex_.isValid())
currentIndex_ = indexFromPath(currentFile_);
if(job->error()) {
// if there are errors
// TODO: show a info bar?
updateUI();
/* we resized and moved the window without showing
it in updateUI(), so we need to show it here */
show();
}
}
void MainWindow::onImageSaved(SaveImageJob* job) {
if(!job->error()) {
void MainWindow::onImageSaved() {
if(!saveJob_->failed()) {
setModified(false);
}
saveJob_ = NULL;
saveJob_ = nullptr;
}
// filter events of other objects, mainly the image view.
bool MainWindow::eventFilter(QObject* watched, QEvent* event) {
// qDebug() << event;
if(watched == ui.view) { // we got an event for the image view
switch(event->type()) {
case QEvent::Wheel: { // mouse wheel event
@ -482,16 +505,16 @@ bool MainWindow::eventFilter(QObject* watched, QEvent* event) {
return QObject::eventFilter(watched, event);
}
QModelIndex MainWindow::indexFromPath(FmPath* filePath) {
QModelIndex MainWindow::indexFromPath(const Fm::FilePath & filePath) {
// if the folder is already loaded, figure out our index
// otherwise, it will be done again in onFolderLoaded() when the folder is fully loaded.
if(folder_ && fm_folder_is_loaded(folder_)) {
if(folder_ && folder_->isLoaded()) {
QModelIndex index;
int count = proxyModel_->rowCount();
for(int row = 0; row < count; ++row) {
index = proxyModel_->index(row, 0);
FmFileInfo* info = proxyModel_->fileInfoFromIndex(index);
if(info && fm_path_equal(filePath, fm_file_info_get_path(info))) {
const auto info = proxyModel_->fileInfoFromIndex(index);
if(info && filePath == info->path()) {
return index;
}
}
@ -511,39 +534,66 @@ void MainWindow::updateUI() {
QString title;
if(currentFile_) {
char* dispName = fm_path_display_basename(currentFile_);
const Fm::CStrPtr dispName = currentFile_.displayName();
if(loadJob_) { // if loading is in progress
title = tr("%1 (Loading...) - Image Viewer")
.arg(QString::fromUtf8(dispName));
title = tr("[*]%1 (Loading...) - Image Viewer")
.arg(QString::fromUtf8(dispName.get()));
}
else {
if(image_.isNull()) {
title = tr("%1 (Failed to Load) - Image Viewer")
.arg(QString::fromUtf8(dispName));
title = tr("[*]%1 (Failed to Load) - Image Viewer")
.arg(QString::fromUtf8(dispName.get()));
}
else {
title = tr("%1 (%2x%3) - Image Viewer")
.arg(QString::fromUtf8(dispName))
title = tr("[*]%1 (%2x%3) - Image Viewer")
.arg(QString::fromUtf8(dispName.get()))
.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.
// When the loading is finished, onImageLoaded() will be called.
void MainWindow::loadImage(FmPath* filePath, QModelIndex index) {
void MainWindow::loadImage(const Fm::FilePath & filePath, QModelIndex index) {
// cancel loading of current image
if(loadJob_) {
loadJob_->cancel(); // the job object will be freed automatically later
loadJob_ = NULL;
loadJob_ = nullptr;
}
if(imageModified_) {
// TODO: ask the user to save the modified image?
@ -552,46 +602,114 @@ void MainWindow::loadImage(FmPath* filePath, QModelIndex index) {
}
currentIndex_ = index;
if(currentFile_)
fm_path_unref(currentFile_);
currentFile_ = fm_path_ref(filePath);
currentFile_ = filePath;
// 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 Fm::CStrPtr basename = currentFile_.baseName();
char* mime_type = g_content_type_guess(basename.get(), NULL, 0, NULL);
QString mimeType;
if (mime_type) {
mimeType = QString(mime_type);
g_free(mime_type);
}
if(mimeType == "image/gif"
|| mimeType == "image/svg+xml" || mimeType == "image/svg+xml-compressed") {
const Fm::CStrPtr file_name = currentFile_.toString();
ui.view->setAutoZoomFit(true); // like in onImageLoaded()
if(mimeType == "image/gif")
ui.view->setGifAnimation(QString{file_name.get()});
else
ui.view->setSVG(QString{file_name.get()});
image_ = ui.view->image();
updateUI();
show();
}
else {
// start a new gio job to load the specified image
loadJob_ = new LoadImageJob(currentFile_);
connect(loadJob_, &Fm::Job::finished, this, &MainWindow::onImageLoaded);
connect(loadJob_, &Fm::Job::error, this
, [] (const Fm::GErrorPtr & err, Fm::Job::ErrorSeverity /*severity*/, Fm::Job::ErrorAction & /*response*/)
{
// TODO: show a info bar?
qWarning().noquote() << "lximage-qt:" << err.message();
}
, Qt::BlockingQueuedConnection);
loadJob_->runAsync();
updateUI();
updateUI();
}
}
void MainWindow::saveImage(FmPath* filePath) {
void MainWindow::saveImage(const Fm::FilePath & filePath) {
if(saveJob_) // do not launch a new job if the current one is still in progress
return;
// start a new gio job to save current image to the specified path
saveJob_ = new SaveImageJob(this, filePath);
saveJob_->start();
saveJob_ = new SaveImageJob(image_, filePath);
connect(saveJob_, &Fm::Job::finished, this, &MainWindow::onImageSaved);
connect(saveJob_, &Fm::Job::error, this
, [] (const Fm::GErrorPtr & err, Fm::Job::ErrorSeverity /*severity*/, Fm::Job::ErrorAction & /*response*/)
{
// TODO: show a info bar?
qWarning().noquote() << "lximage-qt:" << err.message();
}
, Qt::BlockingQueuedConnection);
saveJob_->runAsync();
// FIXME: add a cancel button to the UI? update status bar?
}
QGraphicsItem* MainWindow::getGraphicsItem() {
if(!ui.view->items().isEmpty())
return ui.view->items().at(0);
return nullptr;
}
void MainWindow::on_actionRotateClockwise_triggered() {
QGraphicsItem *graphItem = getGraphicsItem();
bool isGifOrSvg (graphItem->isWidget() // we have gif animation
|| dynamic_cast<QGraphicsSvgItem*>(graphItem)); // an SVG image;
if(!image_.isNull()) {
QTransform transform;
transform.rotate(90.0);
image_ = image_.transformed(transform, Qt::SmoothTransformation);
ui.view->setImage(image_);
/* when this is GIF or SVG, we need to rotate its corresponding QImage
without showing it to have the right measure for auto-zooming */
ui.view->setImage(image_, isGifOrSvg ? false : true);
setModified(true);
}
if(isGifOrSvg) {
QTransform transform;
transform.translate(graphItem->sceneBoundingRect().height(), 0);
transform.rotate(90);
// we need to apply transformations in the reverse order
QTransform prevTrans = graphItem->transform();
graphItem->setTransform(transform, false);
graphItem->setTransform(prevTrans, true);
}
}
void MainWindow::on_actionRotateCounterclockwise_triggered() {
QGraphicsItem *graphItem = getGraphicsItem();
bool isGifOrSvg (graphItem->isWidget()
|| dynamic_cast<QGraphicsSvgItem*>(graphItem));
if(!image_.isNull()) {
QTransform transform;
transform.rotate(-90.0);
image_ = image_.transformed(transform, Qt::SmoothTransformation);
ui.view->setImage(image_);
ui.view->setImage(image_, isGifOrSvg ? false : true);
setModified(true);
}
if(isGifOrSvg) {
QTransform transform;
transform.translate(0, graphItem->sceneBoundingRect().width());
transform.rotate(-90);
QTransform prevTrans = graphItem->transform();
graphItem->setTransform(transform, false);
graphItem->setTransform(prevTrans, true);
}
}
void MainWindow::on_actionCopy_triggered() {
@ -616,27 +734,52 @@ void MainWindow::on_actionPaste_triggered() {
}
}
void MainWindow::on_actionUpload_triggered()
{
if (currentFile_.isValid()) {
UploadDialog(this, currentFile_.localPath().get()).exec();
}
}
void MainWindow::on_actionFlipVertical_triggered() {
bool hasQGraphicsItem(false);
if(QGraphicsItem *graphItem = getGraphicsItem()) {
hasQGraphicsItem = true;
QTransform transform;
transform.scale(1, -1);
transform.translate(0, -graphItem->sceneBoundingRect().height());
QTransform prevTrans = graphItem->transform();
graphItem->setTransform(transform, false);
graphItem->setTransform(prevTrans, true);
}
if(!image_.isNull()) {
image_ = image_.mirrored(false, true);
ui.view->setImage(image_);
ui.view->setImage(image_, !hasQGraphicsItem);
setModified(true);
}
setModified(true);
}
void MainWindow::on_actionFlipHorizontal_triggered() {
bool hasQGraphicsItem(false);
if(QGraphicsItem *graphItem = getGraphicsItem()) {
hasQGraphicsItem = true;
QTransform transform;
transform.scale(-1, 1);
transform.translate(-graphItem->sceneBoundingRect().width(), 0);
QTransform prevTrans = graphItem->transform();
graphItem->setTransform(transform, false);
graphItem->setTransform(prevTrans, true);
}
if(!image_.isNull()) {
image_ = image_.mirrored(true, false);
ui.view->setImage(image_);
image_ = image_.mirrored(true, true);
ui.view->setImage(image_, !hasQGraphicsItem);
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() {
@ -658,11 +801,9 @@ void MainWindow::on_actionPrint_triggered() {
QRect pageRect = printer.pageRect();
int cols = (image_.width() / pageRect.width()) + (image_.width() % pageRect.width() ? 1 : 0);
int rows = (image_.height() / pageRect.height()) + (image_.height() % pageRect.height() ? 1 : 0);
// qDebug() << "page:" << printer.pageRect() << "image:" << image_.size() << "cols, rows:" << cols << rows;
for(int row = 0; row < rows; ++row) {
for(int col = 0; col < cols; ++col) {
QRect srcRect(pageRect.width() * col, pageRect.height() * row, pageRect.width(), pageRect.height());
// qDebug() << "row:" << row << "col:" << col << "src:" << srcRect << "page:" << printer.pageRect();
painter.drawImage(QPoint(0, 0), image_, srcRect);
if(col + 1 == cols && row + 1 == rows) // this is the last page
break;
@ -686,7 +827,7 @@ void MainWindow::on_actionSlideShow_triggered(bool checked) {
if(!slideShowTimer_) {
slideShowTimer_ = new QTimer();
// switch to the next image when timeout
connect(slideShowTimer_, SIGNAL(timeout()), SLOT(on_actionNext_triggered()));
connect(slideShowTimer_, &QTimer::timeout, this, &MainWindow::on_actionNext_triggered);
}
Application* app = static_cast<Application*>(qApp);
slideShowTimer_->start(app->settings().slideShowInterval() * 1000);
@ -696,7 +837,7 @@ void MainWindow::on_actionSlideShow_triggered(bool checked) {
else {
if(slideShowTimer_) {
delete slideShowTimer_;
slideShowTimer_ = NULL;
slideShowTimer_ = nullptr;
ui.actionSlideShow->setIcon(QIcon::fromTheme("media-playback-start"));
}
}
@ -718,19 +859,29 @@ void MainWindow::setShowThumbnails(bool show) {
listView->installEventFilter(this);
// FIXME: optimize the size of the thumbnail view
// FIXME if the thumbnail view is docked elsewhere, update the settings.
int scrollHeight = style()->pixelMetric(QStyle::PM_ScrollBarExtent);
thumbnailsView_->setFixedHeight(listView->gridSize().height() + scrollHeight);
if(Fm::FolderItemDelegate* delegate = static_cast<Fm::FolderItemDelegate*>(listView->itemDelegateForColumn(Fm::FolderModel::ColumnFileName))) {
int scrollHeight = style()->pixelMetric(QStyle::PM_ScrollBarExtent);
thumbnailsView_->setFixedHeight(delegate->itemSize().height() + scrollHeight);
}
thumbnailsView_->setModel(proxyModel_);
proxyModel_->setShowThumbnails(true);
connect(thumbnailsView_->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), SLOT(onThumbnailSelChanged(QItemSelection,QItemSelection)));
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(), &QItemSelectionModel::selectionChanged,
this, &MainWindow::onThumbnailSelChanged);
}
}
else {
if(thumbnailsDock_) {
delete thumbnailsView_;
thumbnailsView_ = NULL;
thumbnailsView_ = nullptr;
delete thumbnailsDock_;
thumbnailsDock_ = NULL;
thumbnailsDock_ = nullptr;
}
proxyModel_->setShowThumbnails(false);
}
@ -760,6 +911,7 @@ void MainWindow::changeEvent(QEvent* event) {
addAction(action);
}
addActions(ui.menubar->actions());
ui.view->hideCursor(true);
}
else { // restore to normal window mode
ui.view->setFrameStyle(QFrame::StyledPanel|QFrame::Sunken);
@ -774,11 +926,39 @@ void MainWindow::changeEvent(QEvent* event) {
ui.statusBar->show();
if(thumbnailsDock_)
thumbnailsDock_->show();
ui.view->hideCursor(false);
}
}
QWidget::changeEvent(event);
}
void MainWindow::resizeEvent(QResizeEvent *event) {
QMainWindow::resizeEvent(event);
Settings& settings = static_cast<Application*>(qApp)->settings();
if(settings.rememberWindowSize()) {
settings.setLastWindowMaximized(isMaximized());
if(!isMaximized()) {
settings.setLastWindowWidth(width());
settings.setLastWindowHeight(height());
}
}
}
void MainWindow::closeEvent(QCloseEvent *event)
{
QWidget::closeEvent(event);
Settings& settings = static_cast<Application*>(qApp)->settings();
if(settings.rememberWindowSize()) {
settings.setLastWindowMaximized(isMaximized());
if(!isMaximized()) {
settings.setLastWindowWidth(width());
settings.setLastWindowHeight(height());
}
}
}
void MainWindow::onContextMenu(QPoint pos) {
contextMenu_->exec(ui.view->mapToGlobal(pos));
}
@ -788,14 +968,18 @@ void MainWindow::onExitFullscreen() {
showNormal();
}
void MainWindow::onThumbnailSelChanged(const QItemSelection& selected, const QItemSelection& deselected) {
void MainWindow::onThumbnailSelChanged(const QItemSelection& selected, const QItemSelection& /*deselected*/) {
// the selected item of thumbnail view is changed
if(!selected.isEmpty()) {
QModelIndex index = selected.first().topLeft();
if(index.isValid() && index != currentIndex_) {
FmFileInfo* file = proxyModel_->fileInfoFromIndex(index);
const auto file = proxyModel_->fileInfoFromIndex(index);
if(file)
loadImage(fm_file_info_get_path(file), index);
loadImage(file->path(), index);
}
}
}
void MainWindow::onFileDropped(const QString path) {
openImageFile(path);
}

View File

@ -50,19 +50,19 @@ class MainWindow : public QMainWindow {
public:
friend class LoadImageJob;
friend class SaveImageJob;
MainWindow();
virtual ~MainWindow();
void openImageFile(QString fileName);
QImage image() const {
return image_;
}
void pasteImage(QImage newImage);
FmPath* currentFile() const {
const Fm::FilePath & currentFile() const {
return currentFile_;
}
@ -70,21 +70,25 @@ public:
void applySettings();
protected:
void loadImage(FmPath* filePath, QModelIndex index = QModelIndex());
void saveImage(FmPath* filePath); // save current image to a file
void loadFolder(FmPath* newFolderPath);
void loadImage(const Fm::FilePath & filePath, QModelIndex index = QModelIndex());
void saveImage(const Fm::FilePath & filePath); // save current image to a file
void loadFolder(const Fm::FilePath & newFolderPath);
QString openFileName();
QString openDirectory();
QString saveFileName(QString defaultName = QString());
virtual void changeEvent(QEvent * event);
virtual void resizeEvent(QResizeEvent *event);
virtual void closeEvent(QCloseEvent *event);
void onImageLoaded();
void onImageSaved();
void onImageLoaded(LoadImageJob* job);
void onImageSaved(SaveImageJob* job);
virtual bool eventFilter(QObject* watched, QEvent* event);
private Q_SLOTS:
void on_actionAbout_triggered();
void on_actionOpenFile_triggered();
void on_actionOpenDirectory_triggered();
void on_actionNewWindow_triggered();
void on_actionSave_triggered();
void on_actionSaveAs_triggered();
@ -99,6 +103,7 @@ private Q_SLOTS:
void on_actionFlipHorizontal_triggered();
void on_actionCopy_triggered();
void on_actionPaste_triggered();
void on_actionUpload_triggered();
void on_actionShowThumbnails_triggered(bool checked);
void on_actionFullScreen_triggered(bool checked);
@ -119,16 +124,14 @@ private Q_SLOTS:
void onThumbnailSelChanged(const QItemSelection & selected, const QItemSelection & deselected);
void onFileDropped(const QString path);
private:
void onFolderLoaded(FmFolder* folder);
void onFolderLoaded();
void updateUI();
void setModified(bool modified);
QModelIndex indexFromPath(FmPath* filePath);
// GObject related signal handers and callbacks
static void _onFolderLoaded(FmFolder* folder, MainWindow* _this) {
_this->onFolderLoaded(folder);
}
QModelIndex indexFromPath(const Fm::FilePath & filePath);
QGraphicsItem* getGraphicsItem();
private:
Ui::MainWindow ui;
@ -136,13 +139,13 @@ private:
QTimer* slideShowTimer_;
QImage image_; // the image currently shown
FmPath* currentFile_; // path to current image file
Fm::FilePath currentFile_; // path to current image file
// FmFileInfo* currentFileInfo_; // info of the current file, can be NULL
bool imageModified_; // the current image is modified by rotation, flip, or others and needs to be saved
// folder browsing
FmFolder* folder_;
FmPath* folderPath_;
std::shared_ptr<Fm::Folder> folder_;
Fm::FilePath folderPath_;
Fm::FolderModel* folderModel_;
Fm::ProxyFolderModel* proxyModel_;
ModelFilter* modelFilter_;
@ -156,6 +159,6 @@ private:
SaveImageJob* saveJob_;
};
};
}
#endif // LXIMAGE_MAINWINDOW_H

View File

@ -56,6 +56,7 @@
</property>
<addaction name="actionNewWindow"/>
<addaction name="actionOpenFile"/>
<addaction name="actionOpenDirectory"/>
<addaction name="actionScreenshot"/>
<addaction name="actionSave"/>
<addaction name="actionSaveAs"/>
@ -107,6 +108,8 @@
<addaction name="actionCopy"/>
<addaction name="actionPaste"/>
<addaction name="separator"/>
<addaction name="actionUpload"/>
<addaction name="separator"/>
<addaction name="actionPreferences"/>
</widget>
<addaction name="menu_File"/>
@ -221,7 +224,7 @@
<string>Zoom &amp;In</string>
</property>
<property name="shortcut">
<string>Ctrl++</string>
<string>Ctrl+=</string>
</property>
</action>
<action name="actionZoomOut">
@ -288,6 +291,9 @@
<property name="text">
<string>Original Size</string>
</property>
<property name="shortcut">
<string>Ctrl+0</string>
</property>
</action>
<action name="actionZoomFit">
<property name="icon">
@ -451,6 +457,28 @@
<string>File Properties</string>
</property>
</action>
<action name="actionOpenDirectory">
<property name="icon">
<iconset theme="document-open"/>
</property>
<property name="text">
<string>Open &amp;Directory</string>
</property>
<property name="shortcut">
<string>Ctrl+D</string>
</property>
</action>
<action name="actionUpload">
<property name="icon">
<iconset theme="upload-media"/>
</property>
<property name="text">
<string>Upload</string>
</property>
<property name="toolTip">
<string>Upload the image</string>
</property>
</action>
</widget>
<customwidgets>
<customwidget>

View File

@ -30,10 +30,11 @@ ModelFilter::~ModelFilter() {
}
bool ModelFilter::filterAcceptsRow(const Fm::ProxyFolderModel* model, FmFileInfo* info) const {
bool ModelFilter::filterAcceptsRow(const Fm::ProxyFolderModel* model, const std::shared_ptr<const Fm::FileInfo>& info) const
{
Q_UNUSED(model)
// filter out non-image files and formats that we don't support.
if(!fm_file_info_is_image(info))
return false;
return true;
return info && info->isImage();
}

View File

@ -28,7 +28,7 @@ namespace LxImage {
class ModelFilter: public Fm::ProxyFolderModelFilter {
public:
ModelFilter();
virtual bool filterAcceptsRow(const Fm::ProxyFolderModel* model, FmFileInfo* info) const;
virtual bool filterAcceptsRow(const Fm::ProxyFolderModel* model, const std::shared_ptr<const Fm::FileInfo>& info) const override;
virtual ~ModelFilter();
};

View File

@ -7,7 +7,7 @@
<!-- file paths to open in new windows -->
<arg type="as" direction="in"/>
</method>
<!-- launch a tool to take a screenshot -->
<method name="screenshot" />

View File

@ -33,7 +33,7 @@ PreferencesDialog::PreferencesDialog(QWidget* parent):
Application* app = static_cast<Application*>(qApp);
Settings& settings = app->settings();
app->addWindow();
initIconThemes(settings);
ui.bgColor->setColor(settings.bgColor());
ui.fullScreenBgColor->setColor(settings.fullScreenBgColor());
@ -59,8 +59,8 @@ void PreferencesDialog::accept() {
QIcon::setThemeName(newIconTheme);
// update the UI by emitting a style change event
Q_FOREACH(QWidget *widget, QApplication::allWidgets()) {
QEvent event(QEvent::StyleChange);
QApplication::sendEvent(widget, &event);
QEvent event(QEvent::StyleChange);
QApplication::sendEvent(widget, &event);
}
}
}
@ -68,7 +68,7 @@ void PreferencesDialog::accept() {
settings.setBgColor(ui.bgColor->color());
settings.setFullScreenBgColor(ui.fullScreenBgColor->color());
settings.setSlideShowInterval(ui.slideShowInterval->value());
settings.save();
QDialog::accept();
app->applySettings();
@ -96,8 +96,6 @@ static void findIconThemesInDir(QHash<QString, QString>& iconThemes, QString dir
}
void PreferencesDialog::initIconThemes(Settings& settings) {
Application* app = static_cast<Application*>(qApp);
// check if auto-detection is done (for example, from xsettings)
if(settings.useFallbackIconTheme()) { // auto-detection failed
// load xdg icon themes and select the current one
@ -113,7 +111,7 @@ void PreferencesDialog::initIconThemes(Settings& settings) {
iconThemes.remove("hicolor"); // remove hicolor, which is only a fallback
QHash<QString, QString>::const_iterator it;
for(it = iconThemes.begin(); it != iconThemes.end(); ++it) {
for(it = iconThemes.constBegin(); it != iconThemes.constEnd(); ++it) {
ui.iconTheme->addItem(it.value(), it.key());
}
ui.iconTheme->model()->sort(0); // sort the list of icon theme names
@ -124,7 +122,7 @@ void PreferencesDialog::initIconThemes(Settings& settings) {
for(i = 0; i < n; ++i) {
QVariant itemData = ui.iconTheme->itemData(i);
if(itemData == settings.fallbackIconTheme()) {
break;
break;
}
}
if(i >= n)

View File

@ -33,7 +33,7 @@ class PreferencesDialog : public QDialog {
public:
explicit PreferencesDialog(QWidget* parent = 0);
virtual ~PreferencesDialog();
virtual void accept();
virtual void done(int r);

View File

@ -73,7 +73,11 @@
</widget>
</item>
<item row="3" column="1">
<widget class="QSpinBox" name="slideShowInterval"/>
<widget class="QSpinBox" name="slideShowInterval">
<property name="minimum">
<number>1</number>
</property>
</widget>
</item>
</layout>
</widget>

View File

@ -26,47 +26,58 @@
using namespace LxImage;
SaveImageJob::SaveImageJob(MainWindow* window, FmPath* filePath):
Job(),
path_(fm_path_ref(filePath)),
mainWindow_(window),
image_(window->image()) {
SaveImageJob::SaveImageJob(const QImage & image, const Fm::FilePath & filePath):
path_{filePath},
image_{image},
failed_{true}
{
}
SaveImageJob::~SaveImageJob() {
fm_path_unref(path_);
}
// This is called from the worker thread, not main thread
bool SaveImageJob::run() {
GFile* gfile = fm_path_to_gfile(path_);
GFileOutputStream* fileStream = g_file_replace(gfile, NULL, false, G_FILE_CREATE_PRIVATE, cancellable_, &error_);
g_object_unref(gfile);
void SaveImageJob::exec() {
const Fm::CStrPtr f = path_.baseName();
char const * format = f.get();
format = strrchr(format, '.');
if(format) // use filename extension as the image format
++format;
if(fileStream) { // if the file stream is successfually opened
const char* format = fm_path_get_basename(path_);
format = strrchr(format, '.');
if(format) // use filename extension as the image format
++format;
QBuffer imageBuffer;
image_.save(&imageBuffer, format); // save the image to buffer
QBuffer imageBuffer;
image_.save(&imageBuffer, format); // save the image to buffer
GOutputStream* outputStream = G_OUTPUT_STREAM(fileStream);
g_output_stream_write_all(outputStream,
imageBuffer.data().constData(),
imageBuffer.size(),
NULL,
cancellable_,
&error_);
g_output_stream_close(outputStream, NULL, NULL);
}
return false;
}
GFileOutputStream* fileStream = nullptr;
Fm::GErrorPtr error;
ErrorAction act = ErrorAction::RETRY;
while (act == ErrorAction::RETRY && !isCancelled())
{
error.reset();
if (nullptr == (fileStream = g_file_replace(path_.gfile().get(), NULL, false, G_FILE_CREATE_NONE, cancellable().get(), &error)))
{
act = emitError(error);
continue;
}
// this function is called from main thread only
void SaveImageJob::finish() {
// only do processing if the job is not cancelled
if(!g_cancellable_is_cancelled(cancellable_)) {
mainWindow_->onImageSaved(this);
// the file stream is successfually opened
if (!isCancelled())
{
GOutputStream* outputStream = G_OUTPUT_STREAM(fileStream);
g_output_stream_write_all(outputStream,
imageBuffer.data().constData(),
imageBuffer.size(),
NULL,
cancellable().get(),
&error);
g_output_stream_close(outputStream, NULL, NULL);
if (!error)
{
// successfully written
failed_ = false;
break; // successfully written
}
act = emitError(error);
}
}
}

View File

@ -21,39 +21,39 @@
#ifndef LXIMAGE_SAVEIMAGEJOB_H
#define LXIMAGE_SAVEIMAGEJOB_H
#include <gio/gio.h>
#include <libfm/fm.h>
#include <libfm-qt/core/job.h>
#include <libfm-qt/core/filepath.h>
#include <QImage>
#include "job.h"
namespace LxImage {
class MainWindow;
class SaveImageJob : public Job {
class SaveImageJob : public Fm::Job {
public:
SaveImageJob(MainWindow* window, FmPath* filePath);
SaveImageJob(const QImage & image, const Fm::FilePath & filePath);
QImage image() const {
return image_;
}
FmPath* filePath() const {
const Fm::FilePath & filePath() const {
return path_;
}
bool failed() const
{
return failed_;
}
protected:
virtual bool run();
virtual void finish();
virtual void exec() override;
private:
~SaveImageJob(); // prevent direct deletion
public:
MainWindow* mainWindow_;
FmPath* path_;
QImage image_;
const Fm::FilePath path_;
const QImage image_;
bool failed_;
};
}

View File

@ -19,12 +19,14 @@
#include "screenshotdialog.h"
#include "screenshotselectarea.h"
#include <QTimer>
#include <QPixmap>
#include <QImage>
#include <QPainter>
#include "application.h"
#include <QDesktopWidget>
#include <QScreen>
#include <QX11Info>
#include <X11/Xlib.h>
@ -47,7 +49,7 @@ ScreenshotDialog::ScreenshotDialog(QWidget* parent, Qt::WindowFlags f): QDialog(
ScreenshotDialog::~ScreenshotDialog() {
Application* app = static_cast<Application*>(qApp);
app->removeWindow();
app->removeWindow();
}
void ScreenshotDialog::done(int r) {
@ -83,7 +85,7 @@ QRect ScreenshotDialog::windowFrame(WId wid) {
int x, y;
// translate to root coordinate
XTranslateCoordinates(QX11Info::display(), wid, wa.root, 0, 0, &x, &y, &child);
qDebug("%d, %d, %d, %d", x, y, wa.width, wa.height);
//qDebug("%d, %d, %d, %d", x, y, wa.width, wa.height);
result.setRect(x, y, wa.width, wa.height);
// get the frame widths added by the window manager
@ -140,41 +142,49 @@ void ScreenshotDialog::doScreenshot() {
}
}
QPixmap pixmap;
pixmap = QPixmap::grabWindow(wid, x, y, width, height);
QImage image = pixmap.toImage();
QImage image;
QScreen *screen = QGuiApplication::primaryScreen();
if(screen) {
QPixmap pixmap = screen->grabWindow(wid, x, y, width, height);
image = pixmap.toImage();
if(hasXfixes_ && ui.includeCursor->isChecked()) {
// capture the cursor if needed
XFixesCursorImage* cursor = XFixesGetCursorImage(QX11Info::display());
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);
if(hasXfixes_ && ui.includeCursor->isChecked()) {
// capture the cursor if needed
XFixesCursorImage* cursor = XFixesGetCursorImage(QX11Info::display());
if(cursor) {
if(cursor->pixels) { // pixles should be an ARGB array
QImage cursorImage;
if(sizeof(long) == 4) {
// FIXME: will we encounter byte-order problems here?
cursorImage = QImage((uchar*)cursor->pixels, cursor->width, cursor->height, QImage::Format_ARGB32);
}
else { // XFixes returns long integers which is not 32 bit on 64 bit systems.
long len = cursor->width * cursor->height;
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, [](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);
}
else { // XFixes returns long integers which is not 32 bit on 64 bit systems.
long len = cursor->width * cursor->height;
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);
}
// 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);
}
XFree(cursor);
}
}
if(ui.screenArea->isChecked() && !image.isNull()) {
ScreenshotSelectArea selectArea(image);
if(QDialog::Accepted == selectArea.exec()) {
image = image.copy(selectArea.selectedArea());
}
}
Application* app = static_cast<Application*>(qApp);
MainWindow* window = app->createWindow();
window->pasteImage(image);
if(!image.isNull())
window->pasteImage(image);
window->show();
deleteLater(); // destroy ourself

View File

@ -15,8 +15,7 @@
</property>
<property name="windowIcon">
<iconset theme="camera-photo">
<normaloff/>
</iconset>
<normaloff>.</normaloff>.</iconset>
</property>
<layout class="QFormLayout" name="formLayout">
<property name="fieldGrowthPolicy">
@ -52,6 +51,13 @@
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="screenArea">
<property name="text">
<string>Capture an area of the screen</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>

View File

@ -0,0 +1,51 @@
/*
<one line to give the library's name and an idea of what it does.>
Copyright (C) 2013 <copyright holder> <email>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "screenshotselectarea.h"
#include <QMouseEvent>
using namespace LxImage;
ScreenshotSelectArea::ScreenshotSelectArea(const QImage & image, QWidget* parent) : QDialog(parent)
{
scene_ = new QGraphicsScene(this);
scene_->addPixmap(QPixmap::fromImage(image));
view_ = new ScreenshotSelectAreaGraphicsView(scene_, this);
view_->setRenderHints( QPainter::Antialiasing );
view_->setHorizontalScrollBarPolicy ( Qt::ScrollBarAlwaysOff );
view_->setVerticalScrollBarPolicy ( Qt::ScrollBarAlwaysOff );
view_->show();
view_->move(0,0);
view_->resize(image.width(), image.height());
setWindowState(windowState() | Qt::WindowFullScreen);
connect(view_, &ScreenshotSelectAreaGraphicsView::selectedArea, this, &ScreenshotSelectArea::areaSelected);
}
QRect ScreenshotSelectArea::selectedArea()
{
return selectedRect_;
}
void ScreenshotSelectArea::areaSelected(QRect rect)
{
this->selectedRect_ = rect;
accept();
}

View File

@ -0,0 +1,50 @@
/*
<one line to give the library's name and an idea of what it does.>
Copyright (C) 2013 <copyright holder> <email>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef LXIMAGE_SCREENSHOTDIALOG_SELECT_AREA_H
#define LXIMAGE_SCREENSHOTDIALOG_SELECT_AREA_H
#include "screenshotselectareagraphicsview.h"
#include <QDialog>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsRectItem>
namespace LxImage {
class ScreenshotSelectArea : public QDialog {
Q_OBJECT
public:
ScreenshotSelectArea(const QImage & image, QWidget* parent = 0);
QRect selectedArea();
private Q_SLOTS:
void areaSelected(QRect rect);
private:
QGraphicsScene *scene_;
ScreenshotSelectAreaGraphicsView *view_;
QRect selectedRect_;
};
}
#endif // LXIMAGE_SCREENSHOTDIALOG_SELECT_AREA_H

View File

@ -0,0 +1,58 @@
/*
<one line to give the library's name and an idea of what it does.>
Copyright (C) 2013 <copyright holder> <email>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "screenshotselectareagraphicsview.h"
#include <QMouseEvent>
using namespace LxImage;
ScreenshotSelectAreaGraphicsView::ScreenshotSelectAreaGraphicsView(QGraphicsScene* scene, QWidget* parent) : QGraphicsView(scene, parent)
{
p0_ = QPointF(-1.0, -1.0);
selectedAreaRect_ = nullptr;
setCursor(Qt::CrossCursor);
}
void ScreenshotSelectAreaGraphicsView::mousePressEvent(QMouseEvent *event)
{
if(p0_.x() < 0) {
p0_ = QPointF(event->pos());
} else {
if(selectedAreaRect_ == nullptr) {
QColor highlight = palette().color(QPalette::Active,QPalette::Highlight);
QPen pen(highlight, 3, Qt::DashDotLine, Qt::RoundCap, Qt::RoundJoin);
QColor color(highlight);
color.setAlpha(128);
QBrush brush(color);
selectedAreaRect_ = scene()->addRect(QRectF(), pen, brush);
}
selectedAreaRect_->setRect(QRectF(p0_,QPointF(event->pos())).normalized());
}
}
void ScreenshotSelectAreaGraphicsView::mouseMoveEvent(QMouseEvent *event)
{
mousePressEvent(event);
}
void ScreenshotSelectAreaGraphicsView::mouseReleaseEvent(QMouseEvent *event)
{
Q_EMIT selectedArea(QRectF(p0_,QPointF(event->pos())).normalized().toRect());
}

View File

@ -0,0 +1,52 @@
/*
<one line to give the library's name and an idea of what it does.>
Copyright (C) 2013 <copyright holder> <email>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef LXIMAGE_SCREENSHOTDIALOG_SELECT_AREA_GRAPICS_VIEW_H
#define LXIMAGE_SCREENSHOTDIALOG_SELECT_AREA_GRAPICS_VIEW_H
#include <QDialog>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsRectItem>
namespace LxImage {
class ScreenshotSelectAreaGraphicsView : public QGraphicsView {
Q_OBJECT
public:
ScreenshotSelectAreaGraphicsView(QGraphicsScene* scene, QWidget* parent = 0);
Q_SIGNALS:
void selectedArea(QRect rect);
protected:
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
private:
QPointF p0_;
QGraphicsRectItem *selectedAreaRect_;
};
}
#endif // LXIMAGE_SCREENSHOTDIALOG_SELECT_AREA_H

View File

@ -27,11 +27,16 @@ using namespace LxImage;
Settings::Settings():
useFallbackIconTheme_(QIcon::themeName().isEmpty() || QIcon::themeName() == "hicolor"),
bgColor_(255, 255, 255),
fullScreenBgColor_(0, 0, 0),
showThumbnails_(false),
showSidePane_(false),
fullScreenBgColor_(0, 0, 0),
slideShowInterval_(5),
fallbackIconTheme_("oxygen"),
slideShowInterval_(5) {
fixedWindowWidth_(640),
fixedWindowHeight_(480),
lastWindowWidth_(640),
lastWindowHeight_(480),
lastWindowMaximized_(false) {
}
Settings::~Settings() {
@ -44,16 +49,37 @@ bool Settings::load() {
fullScreenBgColor_ = settings.value("fullScreenBgColor", fullScreenBgColor_).value<QColor>();
// showThumbnails_;
// showSidePane_;
int slideShowInterval_ = settings.value("slideShowInterval", slideShowInterval_).toInt();
slideShowInterval_ = settings.value("slideShowInterval", slideShowInterval_).toInt();
settings.beginGroup("Window");
fixedWindowWidth_ = settings.value("FixedWidth", 640).toInt();
fixedWindowHeight_ = settings.value("FixedHeight", 480).toInt();
lastWindowWidth_ = settings.value("LastWindowWidth", 640).toInt();
lastWindowHeight_ = settings.value("LastWindowHeight", 480).toInt();
lastWindowMaximized_ = settings.value("LastWindowMaximized", false).toBool();
rememberWindowSize_ = settings.value("RememberWindowSize", true).toBool();
settings.endGroup();
return true;
}
bool Settings::save() {
QSettings settings("lximage-qt", "settings");
settings.setValue("fallbackIconTheme", fallbackIconTheme_);
settings.setValue("bgColor", bgColor_);
settings.setValue("fullScreenBgColor", fullScreenBgColor_);
settings.setValue("slideShowInterval", slideShowInterval_);
settings.beginGroup("Window");
settings.setValue("FixedWidth", fixedWindowWidth_);
settings.setValue("FixedHeight", fixedWindowHeight_);
settings.setValue("LastWindowWidth", lastWindowWidth_);
settings.setValue("LastWindowHeight", lastWindowHeight_);
settings.setValue("LastWindowMaximized", lastWindowMaximized_);
settings.setValue("RememberWindowSize", rememberWindowSize_);
settings.endGroup();
return true;
}

View File

@ -79,6 +79,63 @@ public:
slideShowInterval_ = interval;
}
bool rememberWindowSize() const {
return rememberWindowSize_;
}
void setRememberWindowSize(bool rememberWindowSize) {
rememberWindowSize_ = rememberWindowSize;
}
int windowWidth() const {
if(rememberWindowSize_)
return lastWindowWidth_;
else
return fixedWindowWidth_;
}
int windowHeight() const {
if(rememberWindowSize_)
return lastWindowHeight_;
else
return fixedWindowHeight_;
}
bool windowMaximized() const {
if(rememberWindowSize_)
return lastWindowMaximized_;
else
return false;
}
int fixedWindowWidth() const {
return fixedWindowWidth_;
}
void setFixedWindowWidth(int fixedWindowWidth) {
fixedWindowWidth_ = fixedWindowWidth;
}
int fixedWindowHeight() const {
return fixedWindowHeight_;
}
void setFixedWindowHeight(int fixedWindowHeight) {
fixedWindowHeight_ = fixedWindowHeight;
}
void setLastWindowWidth(int lastWindowWidth) {
lastWindowWidth_ = lastWindowWidth;
}
void setLastWindowHeight(int lastWindowHeight) {
lastWindowHeight_ = lastWindowHeight;
}
void setLastWindowMaximized(bool lastWindowMaximized) {
lastWindowMaximized_ = lastWindowMaximized;
}
private:
bool useFallbackIconTheme_;
QColor bgColor_;
@ -87,6 +144,13 @@ private:
bool showSidePane_;
int slideShowInterval_;
QString fallbackIconTheme_;
bool rememberWindowSize_;
int fixedWindowWidth_;
int fixedWindowHeight_;
int lastWindowWidth_;
int lastWindowHeight_;
bool lastWindowMaximized_;
};
}

View File

@ -0,0 +1,4 @@
#Translations
Name[ca]=Captura de pantalla
GenericName[ca]=Captura de pantalla
Comment[ca]=Preneu una captura de pantalla

View File

@ -0,0 +1,3 @@
Name[da]=Skærmbillede
GenericName[da]=Skærmbillede
Comment[da]=Tag et skærmbillede

View File

@ -0,0 +1,4 @@
#Translations
Name[el]=Στιγμιότυπο οθόνης
GenericName[el]=Στιγμιότυπο οθόνης
Comment[el]=Λήψη ενός στιγμιότυπου της οθόνης

View File

@ -0,0 +1,4 @@
#Translations
Name[fr]=Copie d'écran
GenericName[fr]=Copie d'écran
Comment[fr]=Faire une copie d'écran

View File

@ -0,0 +1,6 @@
[Desktop Entry]
Name[hu]=LXQt képernyőfotó
GenericName[hu]=Képrnyőfénykép
Comment[hu]=Képernyőkép készítés
#TRANSLATIONS_DIR=translations

View File

@ -0,0 +1,4 @@
#Translations
Name[it]=Cattura schermata
GenericName[it]=Cattura una schermata
Comment[it]=Catturare una schermata

View File

@ -0,0 +1,4 @@
#Translations
Name[lt]=Ekrano kopija
GenericName[lt]=Ekrano kopija
Comment[lt]=Padaryti ekrano kopiją

View File

@ -0,0 +1,6 @@
[Desktop Entry]
Name[pl]=Zrzut ekranu
GenericName[pl]=Zrzut ekranu
Comment[pl]=Wykonaj zrzut ekranu
#TRANSLATIONS_DIR=translations

View File

@ -0,0 +1,4 @@
#Translations
Name[ru]=Снимок экрана
GenericName[ru]=Снимок экрана
Comment[ru]=Сделать снимок экрана

View File

@ -0,0 +1,4 @@
#Translations
Name[ca]=LXImage
GenericName[ca]=Visualitzador d'imatges
Comment[ca]=El visualitzador d'imatges de LXQt

View File

@ -1,408 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ca">
<context>
<name>LxImage::Application</name>
<message>
<location filename="../application.cpp" line="112"/>
<source>Take a screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application.cpp" line="113"/>
<source>[FILE1, FILE2,...]</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxImage::MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="144"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="145"/>
<source>LXImage - a simple and fast image viewer
Copyright (C) 2013
LXDE Project: http://lxde.org/
Authors:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="238"/>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="239"/>
<location filename="../mainwindow.cpp" line="260"/>
<source>Image files (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="260"/>
<source>Save File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="516"/>
<source>%1 (Loading...) - Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="521"/>
<source>%1 (Failed to Load) - Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="525"/>
<source>%1 (%2x%3) - Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="535"/>
<source>Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="710"/>
<source>Thumbnails</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="412"/>
<source>Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="413"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="414"/>
<source>&amp;Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="415"/>
<source>Ctrl+O</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="416"/>
<source>&amp;Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="417"/>
<source>Ctrl+S</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="418"/>
<source>Save &amp;As</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="419"/>
<source>Ctrl+A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="420"/>
<source>&amp;Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="421"/>
<source>Ctrl+W</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="422"/>
<source>Zoom &amp;In</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="423"/>
<source>Ctrl++</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="424"/>
<source>Zoom &amp;Out</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="425"/>
<source>Ctrl+-</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="426"/>
<source>&amp;Copy to Clipboard</source>
<translation type="unfinished"></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>
</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>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="431"/>
<source>PgDown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="436"/>
<source>PgUp</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="437"/>
<source>Original Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="438"/>
<source>&amp;Fit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="439"/>
<source>&amp;Rotate Clockwise</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="440"/>
<source>Rotate &amp;Counterclockwise</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="441"/>
<source>P&amp;references</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="442"/>
<source>&amp;Print</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="443"/>
<source>Ctrl+P</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="444"/>
<source>First File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="445"/>
<source>Home</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="446"/>
<source>Last File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="447"/>
<source>End</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="448"/>
<source>&amp;New Window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="449"/>
<source>Ctrl+N</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="450"/>
<source>Flip &amp;Horizontally</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="451"/>
<source>Capture Screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="452"/>
<source>F&amp;ull Screen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="453"/>
<source>F11</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="454"/>
<source>Flip &amp;Vertically</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="455"/>
<source>&amp;Paste from Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="456"/>
<source>&amp;Slide Show</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="457"/>
<source>&amp;Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="458"/>
<source>Del</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="459"/>
<source>Show Thumbnails</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="460"/>
<source>File Properties</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="461"/>
<source>&amp;File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="462"/>
<source>&amp;Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="463"/>
<source>Go</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="464"/>
<source>&amp;View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="465"/>
<source>&amp;Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="466"/>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PreferencesDialog</name>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="125"/>
<source>Preferences</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="126"/>
<source>Icon theme:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="127"/>
<source>Normal background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="128"/>
<source>Fullscreen background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="131"/>
<source>Slide show interval (seconds):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="132"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScreenshotDialog</name>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="123"/>
<source>Screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="124"/>
<source>Take a screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="125"/>
<source>Region</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="126"/>
<source>Whole screen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="127"/>
<source>Current window only</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="128"/>
<source>Include mouse cursor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="129"/>
<source> seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="130"/>
<source>Delay:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="131"/>
<source>Include window title and frame</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,3 @@
Name[da]=LXImage
GenericName[da]=Billedfremviser
Comment[da]=LXQt-billedfremviseren

View File

@ -1,5 +1,5 @@
[Desktop Entry]
GenericName[de]=Bildbetrachter
Comment[de]=Der LXQt Bildbetrachter
Comment[de]=Der LXQt-Bildbetrachter
#TRANSLATIONS_DIR=translations

View File

@ -1,416 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="de_DE">
<context>
<name>LxImage::Application</name>
<message>
<location filename="../application.cpp" line="112"/>
<source>Take a screenshot</source>
<translation type="unfinished">Erstelle ein Bildschirmfoto</translation>
</message>
<message>
<location filename="../application.cpp" line="113"/>
<source>[FILE1, FILE2,...]</source>
<translation type="unfinished">[Datei1, Datei2,...]</translation>
</message>
</context>
<context>
<name>LxImage::MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="144"/>
<source>About</source>
<translation type="unfinished">Über</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="145"/>
<source>LXImage - a simple and fast image viewer
Copyright (C) 2013
LXDE Project: http://lxde.org/
Authors:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</source>
<translation type="unfinished">LXImage - ein einfacher und schneller Bildbetrachter
Copyright (C) 2013
LXDE Project: http://lxde.org/
Autor:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="238"/>
<source>Open File</source>
<translation type="unfinished">Öffne Datei</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="239"/>
<location filename="../mainwindow.cpp" line="260"/>
<source>Image files (%1)</source>
<translation type="unfinished">Bilddateien (%1)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="260"/>
<source>Save File</source>
<translation type="unfinished">Speichere Datei</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="516"/>
<source>%1 (Loading...) - Image Viewer</source>
<translation type="unfinished">%1 (Lade...) - Bildbetrachter</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="521"/>
<source>%1 (Failed to Load) - Image Viewer</source>
<translation type="unfinished">%1 (Fehler beim Laden) - Bildbetrachter</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="525"/>
<source>%1 (%2x%3) - Image Viewer</source>
<translation type="unfinished">%1 (%2x%3) - Bildbetrachter</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="535"/>
<source>Image Viewer</source>
<translation type="unfinished">Bildbetrachter</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="710"/>
<source>Thumbnails</source>
<translation type="unfinished">Miniaturen</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="412"/>
<source>Image Viewer</source>
<translation type="unfinished">Bildbetrachter</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="413"/>
<source>&amp;About</source>
<translation type="unfinished">&amp;Über</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="414"/>
<source>&amp;Open File</source>
<translation type="unfinished">Ö&amp;ffnen</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="415"/>
<source>Ctrl+O</source>
<translatorcomment>Shortcuts werden automatisch übersetzt</translatorcomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="416"/>
<source>&amp;Save</source>
<translation type="unfinished">&amp;Speichern</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="417"/>
<source>Ctrl+S</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="418"/>
<source>Save &amp;As</source>
<translation type="unfinished">Speichern &amp;unter</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="419"/>
<source>Ctrl+A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="420"/>
<source>&amp;Close</source>
<translation type="unfinished">Sch&amp;ließen</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="421"/>
<source>Ctrl+W</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="422"/>
<source>Zoom &amp;In</source>
<translation type="unfinished">Ver&amp;größern</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="423"/>
<source>Ctrl++</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="424"/>
<source>Zoom &amp;Out</source>
<translation type="unfinished">Ver&amp;kleinern</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="425"/>
<source>Ctrl+-</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="426"/>
<source>&amp;Copy to Clipboard</source>
<translation type="unfinished">In die &amp;Zwischenablage einfügen</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">Nächste Datei</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">Vorige Datei</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="431"/>
<source>PgDown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="436"/>
<source>PgUp</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="437"/>
<source>Original Size</source>
<translation type="unfinished">Originalgröße</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="438"/>
<source>&amp;Fit</source>
<translation type="unfinished">Passen&amp;d</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="439"/>
<source>&amp;Rotate Clockwise</source>
<translation type="unfinished">Im &amp;Uhrzeigersinn drehen</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="440"/>
<source>Rotate &amp;Counterclockwise</source>
<translation type="unfinished">&amp;Gegen den Uhrzeigersinn drehen</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="441"/>
<source>P&amp;references</source>
<translation type="unfinished">Vo&amp;rgaben</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="442"/>
<source>&amp;Print</source>
<translation type="unfinished">&amp;Drucken</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="443"/>
<source>Ctrl+P</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="444"/>
<source>First File</source>
<translation type="unfinished">Erste Datei</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="445"/>
<source>Home</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="446"/>
<source>Last File</source>
<translation type="unfinished">Letzte Datei</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="447"/>
<source>End</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="448"/>
<source>&amp;New Window</source>
<translation type="unfinished">&amp;Neues Fenster</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="449"/>
<source>Ctrl+N</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="450"/>
<source>Flip &amp;Horizontally</source>
<translation type="unfinished">&amp;Horizontal spiegeln</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="451"/>
<source>Capture Screenshot</source>
<translation type="unfinished">Bildschirmfoto erstellen</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="452"/>
<source>F&amp;ull Screen</source>
<translation type="unfinished">&amp;Gesamter Bildschirm</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="453"/>
<source>F11</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="454"/>
<source>Flip &amp;Vertically</source>
<translation type="unfinished">&amp;Vertikal spiegeln</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="455"/>
<source>&amp;Paste from Clipboard</source>
<translation type="unfinished">&amp;Aus Zwischenablage einfügen</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="456"/>
<source>&amp;Slide Show</source>
<translation type="unfinished">&amp;Diaschau</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="457"/>
<source>&amp;Delete</source>
<translation type="unfinished">&amp;Löschen</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="458"/>
<source>Del</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="459"/>
<source>Show Thumbnails</source>
<translation type="unfinished">Zeige Miniaturen</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="460"/>
<source>File Properties</source>
<translatorcomment>Übersetzung von &apos;file&apos; weggelassen, da redundant.</translatorcomment>
<translation type="unfinished">Eigenschaften</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="461"/>
<source>&amp;File</source>
<translation type="unfinished">&amp;Datei</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="462"/>
<source>&amp;Help</source>
<translation type="unfinished">&amp;Hilfe</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="463"/>
<source>Go</source>
<translation type="unfinished">Gehe zu</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="464"/>
<source>&amp;View</source>
<translation type="unfinished">&amp;Ansicht</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="465"/>
<source>&amp;Edit</source>
<translation type="unfinished">&amp;Bearbeiten</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="466"/>
<source>Toolbar</source>
<translation type="unfinished">Werkzeugleiste</translation>
</message>
</context>
<context>
<name>PreferencesDialog</name>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="125"/>
<source>Preferences</source>
<translation type="unfinished">Vorgaben</translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="126"/>
<source>Icon theme:</source>
<translation type="unfinished">Symboldesign:</translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="127"/>
<source>Normal background color:</source>
<translation type="unfinished">Normale Hintergrundfarbe:</translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="128"/>
<source>Fullscreen background color:</source>
<translation type="unfinished">Vollbild-Hintergrundfarbe:</translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="131"/>
<source>Slide show interval (seconds):</source>
<translation type="unfinished">Diaschau Bildwechsel (Sekunden):</translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="132"/>
<source>General</source>
<translation type="unfinished">Allgemein</translation>
</message>
</context>
<context>
<name>ScreenshotDialog</name>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="123"/>
<source>Screenshot</source>
<translation type="unfinished">Bildschirmfoto</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="124"/>
<source>Take a screenshot</source>
<translation type="unfinished">Erstelle ein Bildschirmfoto</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="125"/>
<source>Region</source>
<translation type="unfinished">Bereich</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="126"/>
<source>Whole screen</source>
<translation type="unfinished">Genzer Bildschirm</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="127"/>
<source>Current window only</source>
<translation type="unfinished">Nur aktuelles Fenster</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="128"/>
<source>Include mouse cursor</source>
<translation type="unfinished">Einschließlich Mauszeiger</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="129"/>
<source> seconds</source>
<translation type="unfinished"> Sekunden</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="130"/>
<source>Delay:</source>
<translation type="unfinished">Verzögerung:</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="131"/>
<source>Include window title and frame</source>
<translation type="unfinished">Einschließlich Fenstertitel und Rahmen</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,4 @@
#Translations
Name[el]=LXImage
GenericName[el]=Προβολέας εικόνων
Comment[el]=Ο προβολέας εικόνων του LXQt

View File

@ -1,438 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="es">
<context>
<name>LxImage::Application</name>
<message>
<location filename="../application.cpp" line="112"/>
<source>Take a screenshot</source>
<translation>Capturar la pantalla</translation>
</message>
<message>
<location filename="../application.cpp" line="113"/>
<source>[FILE1, FILE2,...]</source>
<translation>[ARCHIVO1, ARCHIVO2, ]</translation>
</message>
</context>
<context>
<name>LxImage::MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="144"/>
<source>About</source>
<translation>Acerca de</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="145"/>
<source>LXImage - a simple and fast image viewer
Copyright (C) 2013
LXDE Project: http://lxde.org/
Authors:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</source>
<translation>LXImage: un visor de imágenes sencillo y rápido
Copyright © 2013
Proyecto LXDE: http://lxde.org/
Autores:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="238"/>
<source>Open File</source>
<translation>Abrir un archivo</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="239"/>
<location filename="../mainwindow.cpp" line="260"/>
<source>Image files (%1)</source>
<translation>Imágenes (%1)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="260"/>
<source>Save File</source>
<translation>Guardar el archivo</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="516"/>
<source>%1 (Loading...) - Image Viewer</source>
<translation>%1 (cargando) Visor de imágenes</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="521"/>
<source>%1 (Failed to Load) - Image Viewer</source>
<translation>%1 (falló la carga) Visor de imágenes</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="525"/>
<source>%1 (%2x%3) - Image Viewer</source>
<translation>%1 (%2 × %3) Visor de imágenes</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="535"/>
<source>Image Viewer</source>
<translation>Visor de imágenes</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="710"/>
<source>Thumbnails</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="412"/>
<source>Image Viewer</source>
<translation>Visor de imágenes</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="413"/>
<source>&amp;About</source>
<translation>&amp;Acerca de</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="414"/>
<source>&amp;Open File</source>
<translation>&amp;Abrir un archivo</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="415"/>
<source>Ctrl+O</source>
<translation>Ctrl+O</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="416"/>
<source>&amp;Save</source>
<translation>&amp;Guardar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="417"/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="418"/>
<source>Save &amp;As</source>
<translation>G&amp;uardar como</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="419"/>
<source>Ctrl+A</source>
<translation>Ctrl+A</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="420"/>
<source>&amp;Close</source>
<translation>&amp;Cerrar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="421"/>
<source>Ctrl+W</source>
<translation>Ctrl+W</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="422"/>
<source>Zoom &amp;In</source>
<translation>&amp;Ampliar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="423"/>
<source>Ctrl++</source>
<translation>Ctrl++</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="424"/>
<source>Zoom &amp;Out</source>
<translation>&amp;Reducir</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="425"/>
<source>Ctrl+-</source>
<translation>Ctrl+</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="426"/>
<source>&amp;Copy to Clipboard</source>
<translation>&amp;Copiar al portapapeles</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>Archivo siguiente</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished"></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>Archivo anterior</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="431"/>
<source>PgDown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="436"/>
<source>PgUp</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="437"/>
<source>Original Size</source>
<translation>Tamaño original</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="438"/>
<source>&amp;Fit</source>
<translation>A&amp;justar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="439"/>
<source>&amp;Rotate Clockwise</source>
<translation>&amp;Girar a la derecha</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="440"/>
<source>Rotate &amp;Counterclockwise</source>
<translation>G&amp;irar a la izquierda</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="441"/>
<source>P&amp;references</source>
<translation>P&amp;referencias</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="442"/>
<source>&amp;Print</source>
<translation>&amp;Imprimir</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="443"/>
<source>Ctrl+P</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="444"/>
<source>First File</source>
<translation>Primer archivo</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="445"/>
<source>Home</source>
<translation>Inicio</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="446"/>
<source>Last File</source>
<translation>Último archivo</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="447"/>
<source>End</source>
<translation>Fin</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="448"/>
<source>&amp;New Window</source>
<translation>Ventana &amp;nueva</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="449"/>
<source>Ctrl+N</source>
<translation>Ctrl+N</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="450"/>
<source>Flip &amp;Horizontally</source>
<translation>Voltear &amp;horizontalmente</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="451"/>
<source>Capture Screenshot</source>
<translation>Capturar la pantalla</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="452"/>
<source>F&amp;ull Screen</source>
<translation>Pa&amp;ntalla completa</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="453"/>
<source>F11</source>
<translation>F11</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="454"/>
<source>Flip &amp;Vertically</source>
<translation>Voltear &amp;verticalmente</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="455"/>
<source>&amp;Paste from Clipboard</source>
<translation>&amp;Pegar del portapapeles</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="456"/>
<source>&amp;Slide Show</source>
<translation>Pa&amp;se de diapositivas</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="457"/>
<source>&amp;Delete</source>
<translation>&amp;Eliminar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="458"/>
<source>Del</source>
<translation>Supr</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="459"/>
<source>Show Thumbnails</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="460"/>
<source>File Properties</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="461"/>
<source>&amp;File</source>
<translation>&amp;Archivo</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="462"/>
<source>&amp;Help</source>
<translation>Ay&amp;uda</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="463"/>
<source>Go</source>
<translation>Ir</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="464"/>
<source>&amp;View</source>
<translation>&amp;Ver</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="465"/>
<source>&amp;Edit</source>
<translation>&amp;Editar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="466"/>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>toolBar</source>
<translation type="vanished">Barra de herramientas</translation>
</message>
</context>
<context>
<name>PreferencesDialog</name>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="125"/>
<source>Preferences</source>
<translation>Preferencias</translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="126"/>
<source>Icon theme:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="127"/>
<source>Normal background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="128"/>
<source>Fullscreen background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="131"/>
<source>Slide show interval (seconds):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="132"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>TODO: Add configuration options here</source>
<translation type="vanished">Por hacer: Añadir opciones de configuración aquí</translation>
</message>
<message>
<source>Tab 1</source>
<translation type="vanished">Pestaña 1</translation>
</message>
<message>
<source>Tab 2</source>
<translation type="vanished">Pestaña 2</translation>
</message>
</context>
<context>
<name>ScreenshotDialog</name>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="123"/>
<source>Screenshot</source>
<translation>Captura de pantalla</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="124"/>
<source>Take a screenshot</source>
<translation>Capturar la pantalla</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="125"/>
<source>Region</source>
<translation>Región</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="126"/>
<source>Whole screen</source>
<translation>Toda la pantalla</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="127"/>
<source>Current window only</source>
<translation>Solo la ventana actual</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="128"/>
<source>Include mouse cursor</source>
<translation>Incluir el puntero del ratón</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="129"/>
<source> seconds</source>
<translation> segundos</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="130"/>
<source>Delay:</source>
<translation>Retardo:</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="131"/>
<source>Include window title and frame</source>
<translation>Incluir el marco y el título de la ventana</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,4 @@
#Translation
Name[fr]=LXImage
GenericName[fr]=Visionneuse d'images
Comment[fr]=Visionneuse d'images de LXQt

View File

@ -1,438 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="gl">
<context>
<name>LxImage::Application</name>
<message>
<location filename="../application.cpp" line="112"/>
<source>Take a screenshot</source>
<translation>Obter unha captura de pantalla</translation>
</message>
<message>
<location filename="../application.cpp" line="113"/>
<source>[FILE1, FILE2,...]</source>
<translation>[FICHEIRO1, FICHEIRO2,...]</translation>
</message>
</context>
<context>
<name>LxImage::MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="144"/>
<source>About</source>
<translation>Sobre</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="145"/>
<source>LXImage - a simple and fast image viewer
Copyright (C) 2013
LXDE Project: http://lxde.org/
Authors:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</source>
<translation>LXImage - un visor de imaxes rápido e sinxelo
Copyright (C) 2013
LXDE Project: http://lxde.org/
Autores:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="238"/>
<source>Open File</source>
<translation>Abrir ficheiro</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="239"/>
<location filename="../mainwindow.cpp" line="260"/>
<source>Image files (%1)</source>
<translation>Ficheiros de imaxe (%1)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="260"/>
<source>Save File</source>
<translation>Gardar o ficheiro</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="516"/>
<source>%1 (Loading...) - Image Viewer</source>
<translation>%1 (Cargando...) - visor de imaxes</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="521"/>
<source>%1 (Failed to Load) - Image Viewer</source>
<translation>%1 (Fallou a carga) - visor de imaxes</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="525"/>
<source>%1 (%2x%3) - Image Viewer</source>
<translation>%1 (%2x%3) - visor de imaxes</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="535"/>
<source>Image Viewer</source>
<translation>Visor de imaxes</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="710"/>
<source>Thumbnails</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="412"/>
<source>Image Viewer</source>
<translation>Visor de imaxes</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="413"/>
<source>&amp;About</source>
<translation>&amp;Sobre</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="414"/>
<source>&amp;Open File</source>
<translation>&amp;Abrir ficheiro</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="415"/>
<source>Ctrl+O</source>
<translation>Ctrl+O</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="416"/>
<source>&amp;Save</source>
<translation>&amp;Gardar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="417"/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="418"/>
<source>Save &amp;As</source>
<translation>Gardar &amp;como</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="419"/>
<source>Ctrl+A</source>
<translation>Ctrl+A</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="420"/>
<source>&amp;Close</source>
<translation>&amp;Pechar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="421"/>
<source>Ctrl+W</source>
<translation>Ctrl+W</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="422"/>
<source>Zoom &amp;In</source>
<translation>A&amp;chegar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="423"/>
<source>Ctrl++</source>
<translation>Ctrl++</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="424"/>
<source>Zoom &amp;Out</source>
<translation type="unfinished">A&amp;fastar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="425"/>
<source>Ctrl+-</source>
<translation>Ctrl+-</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="426"/>
<source>&amp;Copy to Clipboard</source>
<translation>&amp;Copiar ao portapapeis</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>Ficheiro seguinte</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Dereita</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>Ficheiro anterior</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Esquerda</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="431"/>
<source>PgDown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="436"/>
<source>PgUp</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="437"/>
<source>Original Size</source>
<translation>Tamaño orixinal</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="438"/>
<source>&amp;Fit</source>
<translation>A&amp;xustar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="439"/>
<source>&amp;Rotate Clockwise</source>
<translation>Xirar en sentido &amp;horario</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="440"/>
<source>Rotate &amp;Counterclockwise</source>
<translation>Xirar en sentido &amp;antihorario</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="441"/>
<source>P&amp;references</source>
<translation>P&amp;referencias</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="442"/>
<source>&amp;Print</source>
<translation>Im&amp;primir</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="443"/>
<source>Ctrl+P</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="444"/>
<source>First File</source>
<translation>Primeiro ficheiro</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="445"/>
<source>Home</source>
<translation>Cartafol persoal</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="446"/>
<source>Last File</source>
<translation>Último ficheiro</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="447"/>
<source>End</source>
<translation>Fin</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="448"/>
<source>&amp;New Window</source>
<translation>&amp;Nova xanela</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="449"/>
<source>Ctrl+N</source>
<translation>Ctrl+N</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="450"/>
<source>Flip &amp;Horizontally</source>
<translation>Inverter na &amp; horizontal</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="451"/>
<source>Capture Screenshot</source>
<translation>Captura de pantalla</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="452"/>
<source>F&amp;ull Screen</source>
<translation>Pantalla c&amp;ompleta</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="453"/>
<source>F11</source>
<translation>F11</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="454"/>
<source>Flip &amp;Vertically</source>
<translation>Inverter na &amp;vertical</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="455"/>
<source>&amp;Paste from Clipboard</source>
<translation>&amp;Pegar do portapapeis</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="456"/>
<source>&amp;Slide Show</source>
<translation>&amp;Diaporama</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="457"/>
<source>&amp;Delete</source>
<translation>&amp;Eliminar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="458"/>
<source>Del</source>
<translation>Supr</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="459"/>
<source>Show Thumbnails</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="460"/>
<source>File Properties</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="461"/>
<source>&amp;File</source>
<translation>&amp;Ficheiro</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="462"/>
<source>&amp;Help</source>
<translation>&amp;Axuda</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="463"/>
<source>Go</source>
<translation>Ir a</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="464"/>
<source>&amp;View</source>
<translation>&amp;Ver</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="465"/>
<source>&amp;Edit</source>
<translation>&amp;Editar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="466"/>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>toolBar</source>
<translation type="obsolete">Barra de ferramentas</translation>
</message>
</context>
<context>
<name>PreferencesDialog</name>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="125"/>
<source>Preferences</source>
<translation>Preferencias</translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="126"/>
<source>Icon theme:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="127"/>
<source>Normal background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="128"/>
<source>Fullscreen background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="131"/>
<source>Slide show interval (seconds):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="132"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>TODO: Add configuration options here</source>
<translation type="vanished">Por facer: Engadir aquí as opcións de configuración</translation>
</message>
<message>
<source>Tab 1</source>
<translation type="vanished">Lapela 1</translation>
</message>
<message>
<source>Tab 2</source>
<translation type="vanished">Lapela 2</translation>
</message>
</context>
<context>
<name>ScreenshotDialog</name>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="123"/>
<source>Screenshot</source>
<translation>Captura de pantalla</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="124"/>
<source>Take a screenshot</source>
<translation>Obter unha captura de pantalla</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="125"/>
<source>Region</source>
<translation>Área</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="126"/>
<source>Whole screen</source>
<translation>Pantalla completa</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="127"/>
<source>Current window only</source>
<translation> a xanela actual</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="128"/>
<source>Include mouse cursor</source>
<translation>Incluír o punteiro do rato</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="129"/>
<source> seconds</source>
<translation> segundos</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="130"/>
<source>Delay:</source>
<translation>Demora:</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="131"/>
<source>Include window title and frame</source>
<translation>Incluír o marco e o título da xanela</translation>
</message>
</context>
</TS>

View File

@ -1,438 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="hr">
<context>
<name>LxImage::Application</name>
<message>
<location filename="../application.cpp" line="112"/>
<source>Take a screenshot</source>
<translation>Napravi sliku zaslona</translation>
</message>
<message>
<location filename="../application.cpp" line="113"/>
<source>[FILE1, FILE2,...]</source>
<translation>[DATOTEKA1, DATOTEKA2,...]</translation>
</message>
</context>
<context>
<name>LxImage::MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="144"/>
<source>About</source>
<translation>O programu</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="145"/>
<source>LXImage - a simple and fast image viewer
Copyright (C) 2013
LXDE Project: http://lxde.org/
Authors:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</source>
<translation>LXImage - jednostavni i brzi preglednik slika
Autorska prava (C) 2013
LXDE Project: http://lxde.org/
Autori:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="238"/>
<source>Open File</source>
<translation>Otvori datoteku</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="239"/>
<location filename="../mainwindow.cpp" line="260"/>
<source>Image files (%1)</source>
<translation>Datoteke slika (%1)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="260"/>
<source>Save File</source>
<translation>Spremi datoteku</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="516"/>
<source>%1 (Loading...) - Image Viewer</source>
<translation>%1 (Učitavam...) - Preglednik slika</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="521"/>
<source>%1 (Failed to Load) - Image Viewer</source>
<translation>%1 (neuspjelo učitavanje) - Pregledmik slika</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="525"/>
<source>%1 (%2x%3) - Image Viewer</source>
<translation>%1 (%2x%3) - Preglednik slika</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="535"/>
<source>Image Viewer</source>
<translation>Preglednik slika</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="710"/>
<source>Thumbnails</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="412"/>
<source>Image Viewer</source>
<translation>Preglednik slika</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="413"/>
<source>&amp;About</source>
<translation>&amp;O programu</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="414"/>
<source>&amp;Open File</source>
<translation>&amp;Otvori datoteku</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="415"/>
<source>Ctrl+O</source>
<translation>Ctrl+O</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="416"/>
<source>&amp;Save</source>
<translation>&amp;Spremi</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="417"/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="418"/>
<source>Save &amp;As</source>
<translation>Spremi &amp;kao</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="419"/>
<source>Ctrl+A</source>
<translation>Ctrl+A</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="420"/>
<source>&amp;Close</source>
<translation>&amp;Zatvori</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="421"/>
<source>Ctrl+W</source>
<translation>Ctrl+W</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="422"/>
<source>Zoom &amp;In</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="423"/>
<source>Ctrl++</source>
<translation>Ctrl++</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="424"/>
<source>Zoom &amp;Out</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="425"/>
<source>Ctrl+-</source>
<translation>Ctrl+-</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="426"/>
<source>&amp;Copy to Clipboard</source>
<translation type="unfinished"></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>Slijedeća datoteka</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Desno</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>Prethodna datoteka</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Lijevo</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="431"/>
<source>PgDown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="436"/>
<source>PgUp</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="437"/>
<source>Original Size</source>
<translation>Izvorna veličina</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="438"/>
<source>&amp;Fit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="439"/>
<source>&amp;Rotate Clockwise</source>
<translation>&amp;Rotiraj u smjeru kazaljke na satu</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="440"/>
<source>Rotate &amp;Counterclockwise</source>
<translation>Rotiraj &amp;obrnuto od smjera kazaljke na satu</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="441"/>
<source>P&amp;references</source>
<translation>O&amp;sobitosti</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="442"/>
<source>&amp;Print</source>
<translation>&amp;Ispis</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="443"/>
<source>Ctrl+P</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="444"/>
<source>First File</source>
<translation>Prva datoteka</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="445"/>
<source>Home</source>
<translation>Osobna mapa</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="446"/>
<source>Last File</source>
<translation>Zadnja datoteka</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="447"/>
<source>End</source>
<translation>Kraj</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="448"/>
<source>&amp;New Window</source>
<translation>&amp;Novi prozor</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="449"/>
<source>Ctrl+N</source>
<translation>Ctrl+N</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="450"/>
<source>Flip &amp;Horizontally</source>
<translation>Obrni &amp;vodoravno</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="451"/>
<source>Capture Screenshot</source>
<translation>Uhvati sliku zaslona</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="452"/>
<source>F&amp;ull Screen</source>
<translation>C&amp;ijeli zaslon</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="453"/>
<source>F11</source>
<translation>F11</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="454"/>
<source>Flip &amp;Vertically</source>
<translation>Obrni &amp;okomito</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="455"/>
<source>&amp;Paste from Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="456"/>
<source>&amp;Slide Show</source>
<translation>&amp;Klizni prikaz</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="457"/>
<source>&amp;Delete</source>
<translation>&amp;Izbriši</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="458"/>
<source>Del</source>
<translation>Del</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="459"/>
<source>Show Thumbnails</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="460"/>
<source>File Properties</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="461"/>
<source>&amp;File</source>
<translation>&amp;Datoteka</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="462"/>
<source>&amp;Help</source>
<translation>&amp;Pomoć</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="463"/>
<source>Go</source>
<translation>Idi</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="464"/>
<source>&amp;View</source>
<translation>&amp;Pogled</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="465"/>
<source>&amp;Edit</source>
<translation>&amp;Uredi</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="466"/>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>toolBar</source>
<translation type="obsolete">alatna traka</translation>
</message>
</context>
<context>
<name>PreferencesDialog</name>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="125"/>
<source>Preferences</source>
<translation>Osobitosti</translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="126"/>
<source>Icon theme:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="127"/>
<source>Normal background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="128"/>
<source>Fullscreen background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="131"/>
<source>Slide show interval (seconds):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="132"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>TODO: Add configuration options here</source>
<translation type="vanished">TODO: Dodaj konfiguracijske opcije ovdje</translation>
</message>
<message>
<source>Tab 1</source>
<translation type="vanished">Kartica 1</translation>
</message>
<message>
<source>Tab 2</source>
<translation type="vanished">Kartica 2</translation>
</message>
</context>
<context>
<name>ScreenshotDialog</name>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="123"/>
<source>Screenshot</source>
<translation>Snimka zaslona</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="124"/>
<source>Take a screenshot</source>
<translation>Napravi snimku zaslona</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="125"/>
<source>Region</source>
<translation>Regija</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="126"/>
<source>Whole screen</source>
<translation>Cijeli zaslon</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="127"/>
<source>Current window only</source>
<translation>Samo trenutni prozor</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="128"/>
<source>Include mouse cursor</source>
<translation>uključi pokazivač miša</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="129"/>
<source> seconds</source>
<translation> sekundi</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="130"/>
<source>Delay:</source>
<translation>Odgoda:</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="131"/>
<source>Include window title and frame</source>
<translation>Uključi naslov prozora i okvir</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,6 @@
[Desktop Entry]
Name[hu]=LXQt képnéző
GenericName[hu]=Képmegjelenítő
Comment[hu]=Az LXQt képnézegetője
#TRANSLATIONS_DIR=translations

View File

@ -1,440 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="id">
<context>
<name>LxImage::Application</name>
<message>
<location filename="../application.cpp" line="112"/>
<source>Take a screenshot</source>
<translation>Ambil cuplikan layar</translation>
</message>
<message>
<location filename="../application.cpp" line="113"/>
<source>[FILE1, FILE2,...]</source>
<translation>[BERKAS1, BERKAS2, ...]</translation>
</message>
</context>
<context>
<name>LxImage::MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="144"/>
<source>About</source>
<translation>Tentang</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="145"/>
<source>LXImage - a simple and fast image viewer
Copyright (C) 2013
LXDE Project: http://lxde.org/
Authors:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</source>
<translation>LXImage - suatu penampil gambar yang sederhana dan cepat
Hak cipta (C) 2013
Projek LXDE: http://lxde.org/
Penulis:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="238"/>
<source>Open File</source>
<translation>Buka Berkas</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="239"/>
<location filename="../mainwindow.cpp" line="260"/>
<source>Image files (%1)</source>
<translation>Berkas gambar (%1)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="260"/>
<source>Save File</source>
<translation>Simpan Berkas</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="516"/>
<source>%1 (Loading...) - Image Viewer</source>
<translation>%1 (Memuat...) - Penampil Gambar</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="521"/>
<source>%1 (Failed to Load) - Image Viewer</source>
<translation>%1 (Gagal Dimuat) - Penampil Gambar</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="525"/>
<source>%1 (%2x%3) - Image Viewer</source>
<translation>%1 (%2x%3) - Penampil Gambar</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="535"/>
<source>Image Viewer</source>
<translation>Penampil Gambar</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="710"/>
<source>Thumbnails</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="412"/>
<source>Image Viewer</source>
<translation>Penampil Gambar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="413"/>
<source>&amp;About</source>
<translation>Tent&amp;ang</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="414"/>
<source>&amp;Open File</source>
<translation>&amp;Buka Berkas</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="415"/>
<source>Ctrl+O</source>
<translation>Ctrl+O</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="416"/>
<source>&amp;Save</source>
<translation>&amp;Simpan</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="417"/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="418"/>
<source>Save &amp;As</source>
<translation>Simpan Seb&amp;agai</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="419"/>
<source>Ctrl+A</source>
<translation>Ctrl+A</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="420"/>
<source>&amp;Close</source>
<translation>&amp;Tutup</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="421"/>
<source>Ctrl+W</source>
<translation>Ctrl+W</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="422"/>
<source>Zoom &amp;In</source>
<translation>Per&amp;besar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="423"/>
<source>Ctrl++</source>
<translation>Ctrl++</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="424"/>
<source>Zoom &amp;Out</source>
<translation type="unfinished">Per&amp;kecil</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="425"/>
<source>Ctrl+-</source>
<translation>Ctrl+-</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="426"/>
<source>&amp;Copy to Clipboard</source>
<translation>&amp;Salin ke Papan Klip</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>Berkas Selanjutnya</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Kanan</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>Berkas Sebelumnya</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Kiri</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="431"/>
<source>PgDown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="436"/>
<source>PgUp</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="437"/>
<source>Original Size</source>
<translation>Ukuran Asli</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="438"/>
<source>&amp;Fit</source>
<translation>&amp;Pas</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="439"/>
<source>&amp;Rotate Clockwise</source>
<translation>Puta&amp;r Searah Jarum Jam</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="440"/>
<source>Rotate &amp;Counterclockwise</source>
<translation>Putar Ber&amp;lawanan Jarum Jam</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="441"/>
<source>P&amp;references</source>
<translation>P&amp;referensi</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="442"/>
<source>&amp;Print</source>
<translation>&amp;Cetak</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="443"/>
<source>Ctrl+P</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="444"/>
<source>First File</source>
<translation>Berkas Pertama</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="445"/>
<source>Home</source>
<translatorcomment>asumsi: nama tombol</translatorcomment>
<translation>Home</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="446"/>
<source>Last File</source>
<translation>Berkas Terakhir</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="447"/>
<source>End</source>
<translatorcomment>asumsi: nama tombol</translatorcomment>
<translation>End</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="448"/>
<source>&amp;New Window</source>
<translation>Je&amp;ndela Baru</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="449"/>
<source>Ctrl+N</source>
<translation>Ctrl+N</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="450"/>
<source>Flip &amp;Horizontally</source>
<translation>Balikkan Arah &amp;Horisontal</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="451"/>
<source>Capture Screenshot</source>
<translation>Ambil Cuplikan Layar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="452"/>
<source>F&amp;ull Screen</source>
<translation>Layar Pen&amp;uh</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="453"/>
<source>F11</source>
<translation>F11</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="454"/>
<source>Flip &amp;Vertically</source>
<translation>Balikkan Arah &amp;Vertikal</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="455"/>
<source>&amp;Paste from Clipboard</source>
<translation>Tem&amp;pel dari Papan Klip</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="456"/>
<source>&amp;Slide Show</source>
<translation>Pertunjukan &amp;Salindia</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="457"/>
<source>&amp;Delete</source>
<translation>&amp;Hapus</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="458"/>
<source>Del</source>
<translation>Del</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="459"/>
<source>Show Thumbnails</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="460"/>
<source>File Properties</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="461"/>
<source>&amp;File</source>
<translation>&amp;Berkas</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="462"/>
<source>&amp;Help</source>
<translation>B&amp;antuan</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="463"/>
<source>Go</source>
<translation>Pergi</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="464"/>
<source>&amp;View</source>
<translation>&amp;Lihat</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="465"/>
<source>&amp;Edit</source>
<translation>&amp;Sunting</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="466"/>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>toolBar</source>
<translation type="obsolete">Bilah Alat</translation>
</message>
</context>
<context>
<name>PreferencesDialog</name>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="125"/>
<source>Preferences</source>
<translation>Preferensi</translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="126"/>
<source>Icon theme:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="127"/>
<source>Normal background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="128"/>
<source>Fullscreen background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="131"/>
<source>Slide show interval (seconds):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="132"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>TODO: Add configuration options here</source>
<translation type="vanished">TODO: Tambahkan opsi konfigurasi di sini</translation>
</message>
<message>
<source>Tab 1</source>
<translation type="vanished">Tab 1</translation>
</message>
<message>
<source>Tab 2</source>
<translation type="vanished">Tab 2</translation>
</message>
</context>
<context>
<name>ScreenshotDialog</name>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="123"/>
<source>Screenshot</source>
<translation>Cuplikan layar</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="124"/>
<source>Take a screenshot</source>
<translation>Ambil cuplikan layar</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="125"/>
<source>Region</source>
<translation>Wilayah</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="126"/>
<source>Whole screen</source>
<translation>Seluruh layar</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="127"/>
<source>Current window only</source>
<translation>Hanya jendela saat ini</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="128"/>
<source>Include mouse cursor</source>
<translation>Sertakan kursor tetikus</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="129"/>
<source> seconds</source>
<translation> detik</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="130"/>
<source>Delay:</source>
<translation>Tundaan:</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="131"/>
<source>Include window title and frame</source>
<translation>Sertakan rangka dan judul jendela</translation>
</message>
</context>
</TS>

View File

@ -1,408 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="is">
<context>
<name>LxImage::Application</name>
<message>
<location filename="../application.cpp" line="112"/>
<source>Take a screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application.cpp" line="113"/>
<source>[FILE1, FILE2,...]</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxImage::MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="144"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="145"/>
<source>LXImage - a simple and fast image viewer
Copyright (C) 2013
LXDE Project: http://lxde.org/
Authors:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="238"/>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="239"/>
<location filename="../mainwindow.cpp" line="260"/>
<source>Image files (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="260"/>
<source>Save File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="516"/>
<source>%1 (Loading...) - Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="521"/>
<source>%1 (Failed to Load) - Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="525"/>
<source>%1 (%2x%3) - Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="535"/>
<source>Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="710"/>
<source>Thumbnails</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="412"/>
<source>Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="413"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="414"/>
<source>&amp;Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="415"/>
<source>Ctrl+O</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="416"/>
<source>&amp;Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="417"/>
<source>Ctrl+S</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="418"/>
<source>Save &amp;As</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="419"/>
<source>Ctrl+A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="420"/>
<source>&amp;Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="421"/>
<source>Ctrl+W</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="422"/>
<source>Zoom &amp;In</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="423"/>
<source>Ctrl++</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="424"/>
<source>Zoom &amp;Out</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="425"/>
<source>Ctrl+-</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="426"/>
<source>&amp;Copy to Clipboard</source>
<translation type="unfinished"></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>
</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>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="431"/>
<source>PgDown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="436"/>
<source>PgUp</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="437"/>
<source>Original Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="438"/>
<source>&amp;Fit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="439"/>
<source>&amp;Rotate Clockwise</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="440"/>
<source>Rotate &amp;Counterclockwise</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="441"/>
<source>P&amp;references</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="442"/>
<source>&amp;Print</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="443"/>
<source>Ctrl+P</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="444"/>
<source>First File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="445"/>
<source>Home</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="446"/>
<source>Last File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="447"/>
<source>End</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="448"/>
<source>&amp;New Window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="449"/>
<source>Ctrl+N</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="450"/>
<source>Flip &amp;Horizontally</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="451"/>
<source>Capture Screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="452"/>
<source>F&amp;ull Screen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="453"/>
<source>F11</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="454"/>
<source>Flip &amp;Vertically</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="455"/>
<source>&amp;Paste from Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="456"/>
<source>&amp;Slide Show</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="457"/>
<source>&amp;Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="458"/>
<source>Del</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="459"/>
<source>Show Thumbnails</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="460"/>
<source>File Properties</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="461"/>
<source>&amp;File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="462"/>
<source>&amp;Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="463"/>
<source>Go</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="464"/>
<source>&amp;View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="465"/>
<source>&amp;Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="466"/>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PreferencesDialog</name>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="125"/>
<source>Preferences</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="126"/>
<source>Icon theme:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="127"/>
<source>Normal background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="128"/>
<source>Fullscreen background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="131"/>
<source>Slide show interval (seconds):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="132"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScreenshotDialog</name>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="123"/>
<source>Screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="124"/>
<source>Take a screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="125"/>
<source>Region</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="126"/>
<source>Whole screen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="127"/>
<source>Current window only</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="128"/>
<source>Include mouse cursor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="129"/>
<source> seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="130"/>
<source>Delay:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="131"/>
<source>Include window title and frame</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,417 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="it" sourcelanguage="it">
<context>
<name>LxImage::Application</name>
<message>
<location filename="../application.cpp" line="112"/>
<source>Take a screenshot</source>
<translation>Cattura una schermata</translation>
</message>
<message>
<location filename="../application.cpp" line="113"/>
<source>[FILE1, FILE2,...]</source>
<translation>[File1, File2,...]</translation>
</message>
</context>
<context>
<name>LxImage::MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="144"/>
<source>About</source>
<translation>A proposito</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="145"/>
<source>LXImage - a simple and fast image viewer
Copyright (C) 2013
LXDE Project: http://lxde.org/
Authors:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</source>
<translatorcomment>need update...</translatorcomment>
<translation type="unfinished">LXImage - un visualizzatore immagini semplice e veloce
Copyright (C) 2013
LXDE Project: http://lxde.org/
Autor:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="238"/>
<source>Open File</source>
<translation>Apri file</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="239"/>
<location filename="../mainwindow.cpp" line="260"/>
<source>Image files (%1)</source>
<translation>File immagini (%1)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="260"/>
<source>Save File</source>
<translation>Salva file</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="516"/>
<source>%1 (Loading...) - Image Viewer</source>
<translation>%1 (Caricando...) - Visualizzatore immagini</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="521"/>
<source>%1 (Failed to Load) - Image Viewer</source>
<translation>%1 (Errore in caricamento) - Visualizzatore immagini</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="525"/>
<source>%1 (%2x%3) - Image Viewer</source>
<translation>%1 (%2x%3) - Visualizzatore Immagini</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="535"/>
<source>Image Viewer</source>
<translation>Visualizzatore immagini</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="710"/>
<source>Thumbnails</source>
<translation>Miniature</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="412"/>
<source>Image Viewer</source>
<translation>Visualizzatore immagini</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="413"/>
<source>&amp;About</source>
<translation>A &amp;proposito</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="414"/>
<source>&amp;Open File</source>
<translation>&amp;Apri</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="415"/>
<source>Ctrl+O</source>
<translatorcomment>Shortcuts werden automatisch übersetzt</translatorcomment>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="416"/>
<source>&amp;Save</source>
<translation>&amp;Salva</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="417"/>
<source>Ctrl+S</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="418"/>
<source>Save &amp;As</source>
<translation>Salva &amp;come</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="419"/>
<source>Ctrl+A</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="420"/>
<source>&amp;Close</source>
<translation>&amp;Chiudi</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="421"/>
<source>Ctrl+W</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="422"/>
<source>Zoom &amp;In</source>
<translation>&amp;Ingrandisci</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="423"/>
<source>Ctrl++</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="424"/>
<source>Zoom &amp;Out</source>
<translation>&amp;Rimpicciolisci</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="425"/>
<source>Ctrl+-</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="426"/>
<source>&amp;Copy to Clipboard</source>
<translation>&amp;Copia negli appunti</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>Prossimo</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>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="431"/>
<source>PgDown</source>
<translation>Pagina giù</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="436"/>
<source>PgUp</source>
<translation>Pagina </translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="437"/>
<source>Original Size</source>
<translation type="unfinished">&amp;Dimensioni originiali</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="438"/>
<source>&amp;Fit</source>
<translation>&amp;Adatta alla finestra</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="439"/>
<source>&amp;Rotate Clockwise</source>
<translation>Gira a &amp;destra</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="440"/>
<source>Rotate &amp;Counterclockwise</source>
<translation>Gira a &amp;sinistra</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="441"/>
<source>P&amp;references</source>
<translation>&amp;Preferenze</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="442"/>
<source>&amp;Print</source>
<translation>&amp;Stampa</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="443"/>
<source>Ctrl+P</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="444"/>
<source>First File</source>
<translation>Primo</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="445"/>
<source>Home</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="446"/>
<source>Last File</source>
<translation>Ultimo</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="447"/>
<source>End</source>
<translation>Fine</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="448"/>
<source>&amp;New Window</source>
<translation>&amp;Nuova finestra</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="449"/>
<source>Ctrl+N</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="450"/>
<source>Flip &amp;Horizontally</source>
<translation>Rispecchia &amp;horizzontalmente</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="451"/>
<source>Capture Screenshot</source>
<translation>Cattura schermata</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="452"/>
<source>F&amp;ull Screen</source>
<translation>&amp;Schermo intero</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="453"/>
<source>F11</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="454"/>
<source>Flip &amp;Vertically</source>
<translation>Rispecchia &amp;verticalmente</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="455"/>
<source>&amp;Paste from Clipboard</source>
<translation>&amp;Incolla da appunti</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="456"/>
<source>&amp;Slide Show</source>
<translation>&amp;Presentazione</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="457"/>
<source>&amp;Delete</source>
<translation>&amp;Cestina</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="458"/>
<source>Del</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="459"/>
<source>Show Thumbnails</source>
<translation type="unfinished">&amp;Mostra barra miniature</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="460"/>
<source>File Properties</source>
<translatorcomment>Übersetzung von &apos;file&apos; weggelassen, da redundant.</translatorcomment>
<translation>Proprietà</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="461"/>
<source>&amp;File</source>
<translation>&amp;File</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="462"/>
<source>&amp;Help</source>
<translation>&amp;Aiuto</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="463"/>
<source>Go</source>
<translation>Vai</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="464"/>
<source>&amp;View</source>
<translation>&amp;Visualizza</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="465"/>
<source>&amp;Edit</source>
<translation>&amp;Modifica</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="466"/>
<source>Toolbar</source>
<translation>Barra degli strumenti</translation>
</message>
</context>
<context>
<name>PreferencesDialog</name>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="125"/>
<source>Preferences</source>
<translation>Preferenze</translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="126"/>
<source>Icon theme:</source>
<translation>Tema icone:</translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="127"/>
<source>Normal background color:</source>
<translation>Colore sfondo:</translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="128"/>
<source>Fullscreen background color:</source>
<translation>Colore sfondo schermo intero:</translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="131"/>
<source>Slide show interval (seconds):</source>
<translation>Ritardo presentazione (secondi):</translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="132"/>
<source>General</source>
<translation>Generali</translation>
</message>
</context>
<context>
<name>ScreenshotDialog</name>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="123"/>
<source>Screenshot</source>
<translation>Schermata</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="124"/>
<source>Take a screenshot</source>
<translation>Catturta schermata</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="125"/>
<source>Region</source>
<translation>Regione</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="126"/>
<source>Whole screen</source>
<translation>Schermo intero</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="127"/>
<source>Current window only</source>
<translation>Finestra attuale</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="128"/>
<source>Include mouse cursor</source>
<translation>Includi cursore</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="129"/>
<source> seconds</source>
<translation> secondi</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="130"/>
<source>Delay:</source>
<translation>Ritardo:</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="131"/>
<source>Include window title and frame</source>
<translation>Includi cornice finestra</translation>
</message>
</context>
</TS>

View File

@ -1,438 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ja">
<context>
<name>LxImage::Application</name>
<message>
<location filename="../application.cpp" line="112"/>
<source>Take a screenshot</source>
<translation></translation>
</message>
<message>
<location filename="../application.cpp" line="113"/>
<source>[FILE1, FILE2,...]</source>
<translation>[1, 2,...]</translation>
</message>
</context>
<context>
<name>LxImage::MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="144"/>
<source>About</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="145"/>
<source>LXImage - a simple and fast image viewer
Copyright (C) 2013
LXDE Project: http://lxde.org/
Authors:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</source>
<translation>LXImage -
Copyright (C) 2013
LXDE Project: http://lxde.org/
:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="238"/>
<source>Open File</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="239"/>
<location filename="../mainwindow.cpp" line="260"/>
<source>Image files (%1)</source>
<translation> (%1)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="260"/>
<source>Save File</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="516"/>
<source>%1 (Loading...) - Image Viewer</source>
<translation>%1 (...) - </translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="521"/>
<source>%1 (Failed to Load) - Image Viewer</source>
<translation>%1 () - </translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="525"/>
<source>%1 (%2x%3) - Image Viewer</source>
<translation>%1 (%2x%3) - </translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="535"/>
<source>Image Viewer</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="710"/>
<source>Thumbnails</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="412"/>
<source>Image Viewer</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="413"/>
<source>&amp;About</source>
<translation>(&amp;A)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="414"/>
<source>&amp;Open File</source>
<translation>(&amp;O)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="415"/>
<source>Ctrl+O</source>
<translation>Ctrl+O</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="416"/>
<source>&amp;Save</source>
<translation>(&amp;S)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="417"/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="418"/>
<source>Save &amp;As</source>
<translation>(&amp;A)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="419"/>
<source>Ctrl+A</source>
<translation>Ctrl+A</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="420"/>
<source>&amp;Close</source>
<translation>(&amp;C)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="421"/>
<source>Ctrl+W</source>
<translation>Ctrl+W</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="422"/>
<source>Zoom &amp;In</source>
<translation>(&amp;I)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="423"/>
<source>Ctrl++</source>
<translation>Ctrl++</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="424"/>
<source>Zoom &amp;Out</source>
<translation>(&amp;O)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="425"/>
<source>Ctrl+-</source>
<translation>Ctrl+-</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="426"/>
<source>&amp;Copy to Clipboard</source>
<translation>(&amp;C)</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></translation>
</message>
<message>
<source>Right</source>
<translation type="vanished"></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></translation>
</message>
<message>
<source>Left</source>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="431"/>
<source>PgDown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="436"/>
<source>PgUp</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="437"/>
<source>Original Size</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="438"/>
<source>&amp;Fit</source>
<translation>(&amp;F)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="439"/>
<source>&amp;Rotate Clockwise</source>
<translation>(&amp;R)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="440"/>
<source>Rotate &amp;Counterclockwise</source>
<translation>(&amp;C)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="441"/>
<source>P&amp;references</source>
<translation>(&amp;R)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="442"/>
<source>&amp;Print</source>
<translation>(&amp;P)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="443"/>
<source>Ctrl+P</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="444"/>
<source>First File</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="445"/>
<source>Home</source>
<translation>Home</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="446"/>
<source>Last File</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="447"/>
<source>End</source>
<translation>End</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="448"/>
<source>&amp;New Window</source>
<translation>(&amp;N)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="449"/>
<source>Ctrl+N</source>
<translation>Ctrl+N</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="450"/>
<source>Flip &amp;Horizontally</source>
<translation>(&amp;H)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="451"/>
<source>Capture Screenshot</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="452"/>
<source>F&amp;ull Screen</source>
<translation>(&amp;U)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="453"/>
<source>F11</source>
<translation>F11</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="454"/>
<source>Flip &amp;Vertically</source>
<translation>(&amp;V)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="455"/>
<source>&amp;Paste from Clipboard</source>
<translation>(&amp;P)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="456"/>
<source>&amp;Slide Show</source>
<translation>(&amp;S)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="457"/>
<source>&amp;Delete</source>
<translation>(&amp;D)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="458"/>
<source>Del</source>
<translation>Del</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="459"/>
<source>Show Thumbnails</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="460"/>
<source>File Properties</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="461"/>
<source>&amp;File</source>
<translation>(&amp;F)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="462"/>
<source>&amp;Help</source>
<translation>(&amp;H)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="463"/>
<source>Go</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="464"/>
<source>&amp;View</source>
<translation>(&amp;V)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="465"/>
<source>&amp;Edit</source>
<translation>(&amp;E)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="466"/>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>toolBar</source>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>PreferencesDialog</name>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="125"/>
<source>Preferences</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="126"/>
<source>Icon theme:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="127"/>
<source>Normal background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="128"/>
<source>Fullscreen background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="131"/>
<source>Slide show interval (seconds):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="132"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>TODO: Add configuration options here</source>
<translation type="vanished">TODO: Add configuration options here</translation>
</message>
<message>
<source>Tab 1</source>
<translation type="vanished"> 1</translation>
</message>
<message>
<source>Tab 2</source>
<translation type="vanished"> 2</translation>
</message>
</context>
<context>
<name>ScreenshotDialog</name>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="123"/>
<source>Screenshot</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="124"/>
<source>Take a screenshot</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="125"/>
<source>Region</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="126"/>
<source>Whole screen</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="127"/>
<source>Current window only</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="128"/>
<source>Include mouse cursor</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="129"/>
<source> seconds</source>
<translation> </translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="130"/>
<source>Delay:</source>
<translation>:</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="131"/>
<source>Include window title and frame</source>
<translation></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,4 @@
#Translations
Name[lt]=LXImage
GenericName[lt]=Paveikslų žiūryklė
Comment[lt]=LXQt paveikslų žiūryklė

View File

@ -1,408 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="pa">
<context>
<name>LxImage::Application</name>
<message>
<location filename="../application.cpp" line="112"/>
<source>Take a screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application.cpp" line="113"/>
<source>[FILE1, FILE2,...]</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxImage::MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="144"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="145"/>
<source>LXImage - a simple and fast image viewer
Copyright (C) 2013
LXDE Project: http://lxde.org/
Authors:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="238"/>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="239"/>
<location filename="../mainwindow.cpp" line="260"/>
<source>Image files (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="260"/>
<source>Save File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="516"/>
<source>%1 (Loading...) - Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="521"/>
<source>%1 (Failed to Load) - Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="525"/>
<source>%1 (%2x%3) - Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="535"/>
<source>Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="710"/>
<source>Thumbnails</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="412"/>
<source>Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="413"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="414"/>
<source>&amp;Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="415"/>
<source>Ctrl+O</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="416"/>
<source>&amp;Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="417"/>
<source>Ctrl+S</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="418"/>
<source>Save &amp;As</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="419"/>
<source>Ctrl+A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="420"/>
<source>&amp;Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="421"/>
<source>Ctrl+W</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="422"/>
<source>Zoom &amp;In</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="423"/>
<source>Ctrl++</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="424"/>
<source>Zoom &amp;Out</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="425"/>
<source>Ctrl+-</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="426"/>
<source>&amp;Copy to Clipboard</source>
<translation type="unfinished"></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>
</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>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="431"/>
<source>PgDown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="436"/>
<source>PgUp</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="437"/>
<source>Original Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="438"/>
<source>&amp;Fit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="439"/>
<source>&amp;Rotate Clockwise</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="440"/>
<source>Rotate &amp;Counterclockwise</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="441"/>
<source>P&amp;references</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="442"/>
<source>&amp;Print</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="443"/>
<source>Ctrl+P</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="444"/>
<source>First File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="445"/>
<source>Home</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="446"/>
<source>Last File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="447"/>
<source>End</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="448"/>
<source>&amp;New Window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="449"/>
<source>Ctrl+N</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="450"/>
<source>Flip &amp;Horizontally</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="451"/>
<source>Capture Screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="452"/>
<source>F&amp;ull Screen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="453"/>
<source>F11</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="454"/>
<source>Flip &amp;Vertically</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="455"/>
<source>&amp;Paste from Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="456"/>
<source>&amp;Slide Show</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="457"/>
<source>&amp;Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="458"/>
<source>Del</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="459"/>
<source>Show Thumbnails</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="460"/>
<source>File Properties</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="461"/>
<source>&amp;File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="462"/>
<source>&amp;Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="463"/>
<source>Go</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="464"/>
<source>&amp;View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="465"/>
<source>&amp;Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="466"/>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PreferencesDialog</name>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="125"/>
<source>Preferences</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="126"/>
<source>Icon theme:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="127"/>
<source>Normal background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="128"/>
<source>Fullscreen background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="131"/>
<source>Slide show interval (seconds):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="132"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScreenshotDialog</name>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="123"/>
<source>Screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="124"/>
<source>Take a screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="125"/>
<source>Region</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="126"/>
<source>Whole screen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="127"/>
<source>Current window only</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="128"/>
<source>Include mouse cursor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="129"/>
<source> seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="130"/>
<source>Delay:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="131"/>
<source>Include window title and frame</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,5 @@
[Desktop Entry]
GenericName[pl]=Przeglądarka obrazów
Comment[pl]=Przeglądarka obrazów LXQt
#TRANSLATIONS_DIR=translations

View File

@ -1,438 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="pl">
<context>
<name>LxImage::Application</name>
<message>
<location filename="../application.cpp" line="112"/>
<source>Take a screenshot</source>
<translation>Wykonaj zrzut ekranu</translation>
</message>
<message>
<location filename="../application.cpp" line="113"/>
<source>[FILE1, FILE2,...]</source>
<translation>[PLIK1, PLIK2,...]</translation>
</message>
</context>
<context>
<name>LxImage::MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="144"/>
<source>About</source>
<translation>O programie</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="145"/>
<source>LXImage - a simple and fast image viewer
Copyright (C) 2013
LXDE Project: http://lxde.org/
Authors:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</source>
<translation>LXImage - prosta i szybka przeglądarka obrazów
Prawa autorskie (C) 2013
Projekt LXDE: http://lxde.org/
Autorzy:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="238"/>
<source>Open File</source>
<translation>Otwórz plik</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="239"/>
<location filename="../mainwindow.cpp" line="260"/>
<source>Image files (%1)</source>
<translation>Pliki obrazów (%1)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="260"/>
<source>Save File</source>
<translation>Zapisz plik</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="516"/>
<source>%1 (Loading...) - Image Viewer</source>
<translation>%1 (Wczytywanie...) - Przeglądarka obrazów</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="521"/>
<source>%1 (Failed to Load) - Image Viewer</source>
<translation>%1 (Błąd wczytywania) - Przeglądarka obrazów</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="525"/>
<source>%1 (%2x%3) - Image Viewer</source>
<translation>%1 (%2x%3) - Przeglądarka obrazów</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="535"/>
<source>Image Viewer</source>
<translation>Przeglądarka obrazów</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="710"/>
<source>Thumbnails</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="412"/>
<source>Image Viewer</source>
<translation>Przeglądarka obrazów</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="413"/>
<source>&amp;About</source>
<translation>&amp;O programie</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="414"/>
<source>&amp;Open File</source>
<translation>O&amp;twórz plik</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="415"/>
<source>Ctrl+O</source>
<translation>Ctrl+O</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="416"/>
<source>&amp;Save</source>
<translation>&amp;Zapisz</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="417"/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="418"/>
<source>Save &amp;As</source>
<translation>Z&amp;apisz jako</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="419"/>
<source>Ctrl+A</source>
<translation>Ctrl+A</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="420"/>
<source>&amp;Close</source>
<translation>&amp;Zamknij</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="421"/>
<source>Ctrl+W</source>
<translation>Ctrl+W</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="422"/>
<source>Zoom &amp;In</source>
<translation>Po&amp;większ</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="423"/>
<source>Ctrl++</source>
<translation>Ctrl++</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="424"/>
<source>Zoom &amp;Out</source>
<translation type="unfinished">Po&amp;mniejsz</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="425"/>
<source>Ctrl+-</source>
<translation>Ctrl+-</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="426"/>
<source>&amp;Copy to Clipboard</source>
<translation>&amp;Kopiuj do schowka</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>Następny plik</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">W prawo</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>Poprzedni plik</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">W lewo</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="431"/>
<source>PgDown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="436"/>
<source>PgUp</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="437"/>
<source>Original Size</source>
<translation>Rozmiar oryginalny</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="438"/>
<source>&amp;Fit</source>
<translation>Dopa&amp;sowanie</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="439"/>
<source>&amp;Rotate Clockwise</source>
<translation>Obróć &amp;zgodnie z ruchem wskazówek zegara</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="440"/>
<source>Rotate &amp;Counterclockwise</source>
<translation>Ob&amp;róć przeciwnie do ruchu wskazówek zegara</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="441"/>
<source>P&amp;references</source>
<translation>Pre&amp;ferencje</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="442"/>
<source>&amp;Print</source>
<translation>&amp;Drukuj</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="443"/>
<source>Ctrl+P</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="444"/>
<source>First File</source>
<translation>Pierwszy plik</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="445"/>
<source>Home</source>
<translation>Początek</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="446"/>
<source>Last File</source>
<translation>Ostatni plik</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="447"/>
<source>End</source>
<translation>Koniec</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="448"/>
<source>&amp;New Window</source>
<translation>&amp;Nowe okno</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="449"/>
<source>Ctrl+N</source>
<translation>Ctrl+N</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="450"/>
<source>Flip &amp;Horizontally</source>
<translation>Od&amp;bij w poziomie</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="451"/>
<source>Capture Screenshot</source>
<translation>Przechwyć zrzut ekranu</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="452"/>
<source>F&amp;ull Screen</source>
<translation>&amp;Pełny ekran</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="453"/>
<source>F11</source>
<translation>F11</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="454"/>
<source>Flip &amp;Vertically</source>
<translation>Odbi&amp;j w pionie</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="455"/>
<source>&amp;Paste from Clipboard</source>
<translation>&amp;Wklej ze schowka</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="456"/>
<source>&amp;Slide Show</source>
<translation>Pokaz s&amp;lajdów</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="457"/>
<source>&amp;Delete</source>
<translation>&amp;Usuń</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="458"/>
<source>Del</source>
<translation>Usuń</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="459"/>
<source>Show Thumbnails</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="460"/>
<source>File Properties</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="461"/>
<source>&amp;File</source>
<translation>&amp;Plik</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="462"/>
<source>&amp;Help</source>
<translation>Pomo&amp;c</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="463"/>
<source>Go</source>
<translation>Przejdź</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="464"/>
<source>&amp;View</source>
<translation>&amp;Widok</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="465"/>
<source>&amp;Edit</source>
<translation>&amp;Edycja</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="466"/>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>toolBar</source>
<translation type="obsolete">Pasek narzędzi</translation>
</message>
</context>
<context>
<name>PreferencesDialog</name>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="125"/>
<source>Preferences</source>
<translation>Ustawienia</translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="126"/>
<source>Icon theme:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="127"/>
<source>Normal background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="128"/>
<source>Fullscreen background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="131"/>
<source>Slide show interval (seconds):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="132"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>TODO: Add configuration options here</source>
<translation type="vanished">Do zrobienia: Dodać tutaj opcje konfiguracyjne</translation>
</message>
<message>
<source>Tab 1</source>
<translation type="vanished">Karta 1</translation>
</message>
<message>
<source>Tab 2</source>
<translation type="vanished">Karta 2</translation>
</message>
</context>
<context>
<name>ScreenshotDialog</name>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="123"/>
<source>Screenshot</source>
<translation>Zrzut ekranu</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="124"/>
<source>Take a screenshot</source>
<translation>Wykonaj zrzut ekranu</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="125"/>
<source>Region</source>
<translation>Obszar</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="126"/>
<source>Whole screen</source>
<translation>Cały ekran</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="127"/>
<source>Current window only</source>
<translation>Tylko bieżące okno</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="128"/>
<source>Include mouse cursor</source>
<translation>Dołącz kursor myszy</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="129"/>
<source> seconds</source>
<translation> sekund</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="130"/>
<source>Delay:</source>
<translation>Opóźnienie:</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="131"/>
<source>Include window title and frame</source>
<translation>Dołącz tytuł okna i obramowanie</translation>
</message>
</context>
</TS>

View File

@ -1,4 +1,4 @@
#Translations
Name[pt]=LXImage-Qt
GenericName[pt]=Visualizador de imagens
Comment[pt]=O visualizador de imagens do LxQt
Comment[pt]=O visualizador de imagens do LXQt

View File

@ -1,438 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="pt">
<context>
<name>LxImage::Application</name>
<message>
<location filename="../application.cpp" line="112"/>
<source>Take a screenshot</source>
<translation>Obter captura de ecrã</translation>
</message>
<message>
<location filename="../application.cpp" line="113"/>
<source>[FILE1, FILE2,...]</source>
<translation>[Ficheiro1, ficheiro2,...]</translation>
</message>
</context>
<context>
<name>LxImage::MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="144"/>
<source>About</source>
<translation>Sobre</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="145"/>
<source>LXImage - a simple and fast image viewer
Copyright (C) 2013
LXDE Project: http://lxde.org/
Authors:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</source>
<translation>LXImage - um visualizador de imagens simples e rápido
Direitos de autor (C) 2013-2015
Projeto LXDE: http://lxde.org/
Autor:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="238"/>
<source>Open File</source>
<translation>Abrir ficheiro</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="239"/>
<location filename="../mainwindow.cpp" line="260"/>
<source>Image files (%1)</source>
<translation>Ficheiros de imagem (%1)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="260"/>
<source>Save File</source>
<translation>Gravar ficheiro</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="516"/>
<source>%1 (Loading...) - Image Viewer</source>
<translation>%1 (carregamento...) - Visualizador de imagens</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="521"/>
<source>%1 (Failed to Load) - Image Viewer</source>
<translation>%1 (falha ao carregar) - Visualizador de imagens</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="525"/>
<source>%1 (%2x%3) - Image Viewer</source>
<translation>%1 (%2x%3) - Visualizador de imagens</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="535"/>
<source>Image Viewer</source>
<translation>Visualizador de imagens</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="710"/>
<source>Thumbnails</source>
<translation>Miniaturas</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="412"/>
<source>Image Viewer</source>
<translation>Visualizador de imagens</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="413"/>
<source>&amp;About</source>
<translation>&amp;Sobre</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="414"/>
<source>&amp;Open File</source>
<translation>A&amp;brir ficheiro</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="415"/>
<source>Ctrl+O</source>
<translation>Ctrl+O</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="416"/>
<source>&amp;Save</source>
<translation>&amp;Gravar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="417"/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="418"/>
<source>Save &amp;As</source>
<translation>Gravar &amp;como</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="419"/>
<source>Ctrl+A</source>
<translation>Ctrl+A</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="420"/>
<source>&amp;Close</source>
<translation>Fe&amp;char</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="421"/>
<source>Ctrl+W</source>
<translation>Ctrl+W</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="422"/>
<source>Zoom &amp;In</source>
<translation>Ampl&amp;iar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="423"/>
<source>Ctrl++</source>
<translation>Ctrl++</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="424"/>
<source>Zoom &amp;Out</source>
<translation>Redu&amp;zir</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="425"/>
<source>Ctrl+-</source>
<translation>Ctrl+-</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="426"/>
<source>&amp;Copy to Clipboard</source>
<translation>&amp;Copiar para a área de transferência</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>Próximo ficheiro</translation>
</message>
<message>
<source>Right</source>
<translation>Direita</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>Ficheiro anterior</translation>
</message>
<message>
<source>Left</source>
<translation>Esquerda</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="431"/>
<source>PgDown</source>
<translation>PageDown</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="436"/>
<source>PgUp</source>
<translation>PageUp</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="437"/>
<source>Original Size</source>
<translation>Tamanho original</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="438"/>
<source>&amp;Fit</source>
<translation>Aj&amp;ustar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="439"/>
<source>&amp;Rotate Clockwise</source>
<translation>&amp;Rodar à direita</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="440"/>
<source>Rotate &amp;Counterclockwise</source>
<translation>Rodar à &amp;esquerda</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="441"/>
<source>P&amp;references</source>
<translation>P&amp;referências</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="442"/>
<source>&amp;Print</source>
<translation>Im&amp;primir</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="443"/>
<source>Ctrl+P</source>
<translation>Ctrl+P</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="444"/>
<source>First File</source>
<translation>Primeiro ficheiro</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="445"/>
<source>Home</source>
<translation>Home</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="446"/>
<source>Last File</source>
<translation>Último ficheiro</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="447"/>
<source>End</source>
<translation>End</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="448"/>
<source>&amp;New Window</source>
<translation>&amp;Nova janela</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="449"/>
<source>Ctrl+N</source>
<translation>Ctrl+N</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="450"/>
<source>Flip &amp;Horizontally</source>
<translation>Inversão &amp;horizontal</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="451"/>
<source>Capture Screenshot</source>
<translation>Captura de ecrã</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="452"/>
<source>F&amp;ull Screen</source>
<translation>Ecrã co&amp;mpleto</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="453"/>
<source>F11</source>
<translation>F11</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="454"/>
<source>Flip &amp;Vertically</source>
<translation>Inversão &amp;vertical</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="455"/>
<source>&amp;Paste from Clipboard</source>
<translation>Colar da área de tran&amp;sferência</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="456"/>
<source>&amp;Slide Show</source>
<translation>Apre&amp;sentação</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="457"/>
<source>&amp;Delete</source>
<translation>E&amp;liminar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="458"/>
<source>Del</source>
<translation>Del</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="459"/>
<source>Show Thumbnails</source>
<translation>Mostrar miniaturas</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="460"/>
<source>File Properties</source>
<translation>Propriedades do ficheiro</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="461"/>
<source>&amp;File</source>
<translation>&amp;Ficheiro</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="462"/>
<source>&amp;Help</source>
<translation>Aj&amp;uda</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="463"/>
<source>Go</source>
<translation>Ir</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="464"/>
<source>&amp;View</source>
<translation>&amp;Ver</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="465"/>
<source>&amp;Edit</source>
<translation>&amp;Editar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="466"/>
<source>Toolbar</source>
<translation>Barra de ferramentas</translation>
</message>
<message>
<source>toolBar</source>
<translation type="obsolete">Barra de ferramentas</translation>
</message>
</context>
<context>
<name>PreferencesDialog</name>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="125"/>
<source>Preferences</source>
<translation>Preferências</translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="126"/>
<source>Icon theme:</source>
<translation>Tema de ícones:</translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="127"/>
<source>Normal background color:</source>
<translation>Cor de fundo normal:</translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="128"/>
<source>Fullscreen background color:</source>
<translation>Cor de fundo em ecrã completo:</translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="131"/>
<source>Slide show interval (seconds):</source>
<translation>Intervalo da apresentação (segundos):</translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="132"/>
<source>General</source>
<translation>Geral</translation>
</message>
<message>
<source>TODO: Add configuration options here</source>
<translation>Tarefas: Adicionar opções de configuração</translation>
</message>
<message>
<source>Tab 1</source>
<translation>Separador 1</translation>
</message>
<message>
<source>Tab 2</source>
<translation>Separador 2</translation>
</message>
</context>
<context>
<name>ScreenshotDialog</name>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="123"/>
<source>Screenshot</source>
<translation>Captura de ecrã</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="124"/>
<source>Take a screenshot</source>
<translation>Obter captura de ecrã</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="125"/>
<source>Region</source>
<translation>Região</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="126"/>
<source>Whole screen</source>
<translation>Todo o ecrã</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="127"/>
<source>Current window only</source>
<translation>Apenas janela atual</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="128"/>
<source>Include mouse cursor</source>
<translation>Incluir cursor do rato</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="129"/>
<source> seconds</source>
<translation>segundos</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="130"/>
<source>Delay:</source>
<translation>Atraso:</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="131"/>
<source>Include window title and frame</source>
<translation>Incluir título e moldura da janela</translation>
</message>
</context>
</TS>

View File

@ -1,439 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="pt_BR">
<context>
<name>LxImage::Application</name>
<message>
<location filename="../application.cpp" line="112"/>
<source>Take a screenshot</source>
<translation>Capturar uma imagem da tela</translation>
</message>
<message>
<location filename="../application.cpp" line="113"/>
<source>[FILE1, FILE2,...]</source>
<translation>[FILE1, FILE2,...]</translation>
</message>
</context>
<context>
<name>LxImage::MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="144"/>
<source>About</source>
<translation>Sobre</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="145"/>
<source>LXImage - a simple and fast image viewer
Copyright (C) 2013
LXDE Project: http://lxde.org/
Authors:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</source>
<translation>LXImage - é um simples e rápido visualizador de imagens
Copyright (C) 2013
Projeto LXDE: http://lxde.org/
Autores:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="238"/>
<source>Open File</source>
<translation>Abrir Arquivo</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="239"/>
<location filename="../mainwindow.cpp" line="260"/>
<source>Image files (%1)</source>
<translation>Arquivos de Images (1%)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="260"/>
<source>Save File</source>
<translation>Salvar Arquivo</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="516"/>
<source>%1 (Loading...) - Image Viewer</source>
<translation>%1 (Carregando...) - Visualização da Imagem</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="521"/>
<source>%1 (Failed to Load) - Image Viewer</source>
<translation>%1 (Falha ao Carregar) - Visualização da Imagem</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="525"/>
<source>%1 (%2x%3) - Image Viewer</source>
<translation>%1 (%2x%3) - Visualização da Imagem</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="535"/>
<source>Image Viewer</source>
<translation>Visualizador de Imagens</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="710"/>
<source>Thumbnails</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="412"/>
<source>Image Viewer</source>
<translation>Visualizador de Imagens</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="413"/>
<source>&amp;About</source>
<translation>So&amp;bre</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="414"/>
<source>&amp;Open File</source>
<translation>Abrir &amp;Arquivo</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="415"/>
<source>Ctrl+O</source>
<translation>Ctrl+O</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="416"/>
<source>&amp;Save</source>
<translation>&amp;Salvar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="417"/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="418"/>
<source>Save &amp;As</source>
<translation>Sal&amp;var Como</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="419"/>
<source>Ctrl+A</source>
<translation>Ctrl+A</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="420"/>
<source>&amp;Close</source>
<translation>Fe&amp;char</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="421"/>
<source>Ctrl+W</source>
<translation>Ctrl+W</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="422"/>
<source>Zoom &amp;In</source>
<translation>Ampl&amp;iar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="423"/>
<source>Ctrl++</source>
<translation>Ctrl++</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="424"/>
<source>Zoom &amp;Out</source>
<translation>Redu&amp;zir</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="425"/>
<source>Ctrl+-</source>
<translation>Ctrl+-</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="426"/>
<source>&amp;Copy to Clipboard</source>
<translation>&amp;Copiar para a Área de Transferência</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>Próximo Arquivo</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Direita</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>Arquivo Anterior</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Esquerda</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="431"/>
<source>PgDown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="436"/>
<source>PgUp</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="437"/>
<source>Original Size</source>
<translation>Tamanho Original</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="438"/>
<source>&amp;Fit</source>
<translation>Ajustar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="439"/>
<source>&amp;Rotate Clockwise</source>
<translation>&amp;Rotacionar em sentido horário</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="440"/>
<source>Rotate &amp;Counterclockwise</source>
<translation>Rota&amp;cionar em sentido anti-horário</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="441"/>
<source>P&amp;references</source>
<translation>P&amp;referências</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="442"/>
<source>&amp;Print</source>
<translation>Im&amp;primir</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="443"/>
<source>Ctrl+P</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="444"/>
<source>First File</source>
<translation>Primeiro arquivo</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="445"/>
<source>Home</source>
<translation>Inicio</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="446"/>
<source>Last File</source>
<translation>Último arquivo</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="447"/>
<source>End</source>
<translation>Fim</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="448"/>
<source>&amp;New Window</source>
<translation>&amp;Nova Janela</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="449"/>
<source>Ctrl+N</source>
<translation>Ctrl+N</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="450"/>
<source>Flip &amp;Horizontally</source>
<translation>Espelhar horizontalmente</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="451"/>
<source>Capture Screenshot</source>
<translation>Capturar Tela</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="452"/>
<source>F&amp;ull Screen</source>
<translation>&amp;Tela Cheia</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="453"/>
<source>F11</source>
<translation>F11</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="454"/>
<source>Flip &amp;Vertically</source>
<translation>Espelhar &amp;Verticalmente</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="455"/>
<source>&amp;Paste from Clipboard</source>
<translatorcomment>Has a problem, no similar caracter for shortcut.</translatorcomment>
<translation>Colar da Área de Transferência</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="456"/>
<source>&amp;Slide Show</source>
<translation>Apresentação de Slides</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="457"/>
<source>&amp;Delete</source>
<translation>&amp;Excluir</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="458"/>
<source>Del</source>
<translation>Remover</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="459"/>
<source>Show Thumbnails</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="460"/>
<source>File Properties</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="461"/>
<source>&amp;File</source>
<translation>&amp;Arquivo</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="462"/>
<source>&amp;Help</source>
<translation>&amp;Ajuda</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="463"/>
<source>Go</source>
<translation>Ir</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="464"/>
<source>&amp;View</source>
<translation>&amp;Visualizar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="465"/>
<source>&amp;Edit</source>
<translation>&amp;Editar</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="466"/>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>toolBar</source>
<translation type="vanished">Barra de Ferramentas</translation>
</message>
</context>
<context>
<name>PreferencesDialog</name>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="125"/>
<source>Preferences</source>
<translation>Preferências</translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="126"/>
<source>Icon theme:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="127"/>
<source>Normal background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="128"/>
<source>Fullscreen background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="131"/>
<source>Slide show interval (seconds):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="132"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>TODO: Add configuration options here</source>
<translation type="vanished">FAZER: Adicionar opções de configurações aqui</translation>
</message>
<message>
<source>Tab 1</source>
<translation type="vanished">Aba 1</translation>
</message>
<message>
<source>Tab 2</source>
<translation type="vanished">Aba 2</translation>
</message>
</context>
<context>
<name>ScreenshotDialog</name>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="123"/>
<source>Screenshot</source>
<translation>Captura de tela</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="124"/>
<source>Take a screenshot</source>
<translation>Capturar a tela</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="125"/>
<source>Region</source>
<translation>Região</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="126"/>
<source>Whole screen</source>
<translation>Tela Inteira</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="127"/>
<source>Current window only</source>
<translation>Somente a janela ativa</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="128"/>
<source>Include mouse cursor</source>
<translation>Incluir o cursor do mouse</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="129"/>
<source> seconds</source>
<translation> segundos</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="130"/>
<source>Delay:</source>
<translation>Atraso:</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="131"/>
<source>Include window title and frame</source>
<translation>Incluir título da janela e moldura</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,4 @@
#Translations
Name[ru]=LXImage
GenericName[ru]=Просмотрщик изображений
Comment[ru]=Просмотрщик изображений LXQt

View File

@ -1,408 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ru">
<context>
<name>LxImage::Application</name>
<message>
<location filename="../application.cpp" line="112"/>
<source>Take a screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application.cpp" line="113"/>
<source>[FILE1, FILE2,...]</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxImage::MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="144"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="145"/>
<source>LXImage - a simple and fast image viewer
Copyright (C) 2013
LXDE Project: http://lxde.org/
Authors:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="238"/>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="239"/>
<location filename="../mainwindow.cpp" line="260"/>
<source>Image files (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="260"/>
<source>Save File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="516"/>
<source>%1 (Loading...) - Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="521"/>
<source>%1 (Failed to Load) - Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="525"/>
<source>%1 (%2x%3) - Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="535"/>
<source>Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="710"/>
<source>Thumbnails</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="412"/>
<source>Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="413"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="414"/>
<source>&amp;Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="415"/>
<source>Ctrl+O</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="416"/>
<source>&amp;Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="417"/>
<source>Ctrl+S</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="418"/>
<source>Save &amp;As</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="419"/>
<source>Ctrl+A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="420"/>
<source>&amp;Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="421"/>
<source>Ctrl+W</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="422"/>
<source>Zoom &amp;In</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="423"/>
<source>Ctrl++</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="424"/>
<source>Zoom &amp;Out</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="425"/>
<source>Ctrl+-</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="426"/>
<source>&amp;Copy to Clipboard</source>
<translation type="unfinished"></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>
</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>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="431"/>
<source>PgDown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="436"/>
<source>PgUp</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="437"/>
<source>Original Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="438"/>
<source>&amp;Fit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="439"/>
<source>&amp;Rotate Clockwise</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="440"/>
<source>Rotate &amp;Counterclockwise</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="441"/>
<source>P&amp;references</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="442"/>
<source>&amp;Print</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="443"/>
<source>Ctrl+P</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="444"/>
<source>First File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="445"/>
<source>Home</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="446"/>
<source>Last File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="447"/>
<source>End</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="448"/>
<source>&amp;New Window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="449"/>
<source>Ctrl+N</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="450"/>
<source>Flip &amp;Horizontally</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="451"/>
<source>Capture Screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="452"/>
<source>F&amp;ull Screen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="453"/>
<source>F11</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="454"/>
<source>Flip &amp;Vertically</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="455"/>
<source>&amp;Paste from Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="456"/>
<source>&amp;Slide Show</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="457"/>
<source>&amp;Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="458"/>
<source>Del</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="459"/>
<source>Show Thumbnails</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="460"/>
<source>File Properties</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="461"/>
<source>&amp;File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="462"/>
<source>&amp;Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="463"/>
<source>Go</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="464"/>
<source>&amp;View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="465"/>
<source>&amp;Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="466"/>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PreferencesDialog</name>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="125"/>
<source>Preferences</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="126"/>
<source>Icon theme:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="127"/>
<source>Normal background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="128"/>
<source>Fullscreen background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="131"/>
<source>Slide show interval (seconds):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="132"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScreenshotDialog</name>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="123"/>
<source>Screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="124"/>
<source>Take a screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="125"/>
<source>Region</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="126"/>
<source>Whole screen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="127"/>
<source>Current window only</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="128"/>
<source>Include mouse cursor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="129"/>
<source> seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="130"/>
<source>Delay:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="131"/>
<source>Include window title and frame</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,497 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1">
<context>
<name>../data/lxinput.desktop.in.h:1</name>
<message>
<source>Keyboard and Mouse</source>
<translation type="obsolete">Tangentbord och mus</translation>
</message>
</context>
<context>
<name>../data/lxinput.desktop.in.h:2</name>
<message>
<source>Configure keyboard, mouse, and other input devices</source>
<translation type="obsolete">Inställningar för tangentbord, mus och andra inmatningsenheter</translation>
</message>
</context>
<context>
<name>../data/lxinput.ui.h:1</name>
<message>
<source>Input Device Preferences</source>
<translation type="obsolete">Egenskaper för inmatningsenhet</translation>
</message>
</context>
<context>
<name>../data/lxinput.ui.h:10</name>
<message>
<source>Mouse</source>
<translation type="obsolete">Mus</translation>
</message>
</context>
<context>
<name>../data/lxinput.ui.h:11</name>
<message>
<source>Delay before each key starts repeating</source>
<translation type="obsolete">Tid innan varje tangent repeteras</translation>
</message>
</context>
<context>
<name>../data/lxinput.ui.h:12</name>
<message>
<source>Repeat delay:</source>
<translation type="obsolete">Tid innan upprepning:</translation>
</message>
</context>
<context>
<name>../data/lxinput.ui.h:13</name>
<message>
<source>Interval between each key repeat</source>
<translation type="obsolete">Intervall mellan upprening av tangenter</translation>
</message>
</context>
<context>
<name>../data/lxinput.ui.h:14</name>
<message>
<source>Long</source>
<translation type="obsolete">Lång</translation>
</message>
</context>
<context>
<name>../data/lxinput.ui.h:15</name>
<message>
<source>Short</source>
<translation type="obsolete">Kort</translation>
</message>
</context>
<context>
<name>../data/lxinput.ui.h:16</name>
<message>
<source>Repeat interval:</source>
<translation type="obsolete">Tid mellan upprepningar:</translation>
</message>
</context>
<context>
<name>../data/lxinput.ui.h:17</name>
<message>
<source>Type in the following box to test your keyboard settings</source>
<translation type="obsolete">För att pröva dina inställningar kan du skriva i följande ruta</translation>
</message>
</context>
<context>
<name>../data/lxinput.ui.h:18</name>
<message>
<source>&lt;b&gt;Character Repeat&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Teckenupprepning&lt;/b&gt;</translation>
</message>
</context>
<context>
<name>../data/lxinput.ui.h:19</name>
<message>
<source>Beep when there is an error of keyboard input</source>
<translation type="obsolete">Avge ett pip när ett fel uppstår vid tangentbordsinmatning</translation>
</message>
</context>
<context>
<name>../data/lxinput.ui.h:2</name>
<message>
<source>Sensitivity:</source>
<translation type="obsolete">Känslighet:</translation>
</message>
</context>
<context>
<name>../data/lxinput.ui.h:20</name>
<message>
<source>&lt;b&gt;Keyboard layout&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Tangentbordsupplägg&lt;/b&gt;</translation>
</message>
</context>
<context>
<name>../data/lxinput.ui.h:21</name>
<message>
<source>Keyboard</source>
<translation type="obsolete">Tangentbord</translation>
</message>
</context>
<context>
<name>../data/lxinput.ui.h:22</name>
<message>
<source>Touch Pad</source>
<translation type="obsolete">Pekplatta</translation>
</message>
</context>
<context>
<name>../data/lxinput.ui.h:3</name>
<message>
<source>High</source>
<translation type="obsolete">Hög</translation>
</message>
</context>
<context>
<name>../data/lxinput.ui.h:4</name>
<message>
<source>Low</source>
<translation type="obsolete">Låg</translation>
</message>
</context>
<context>
<name>../data/lxinput.ui.h:5</name>
<message>
<source>Fast</source>
<translation type="obsolete">Snabb</translation>
</message>
</context>
<context>
<name>../data/lxinput.ui.h:6</name>
<message>
<source>Slow</source>
<translation type="obsolete">Långsam</translation>
</message>
</context>
<context>
<name>../data/lxinput.ui.h:7</name>
<message>
<source>Acceleration:</source>
<translation type="obsolete">Acceleration:</translation>
</message>
</context>
<context>
<name>../data/lxinput.ui.h:8</name>
<message>
<source>&lt;b&gt;Motion&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Förflyttning&lt;/b&gt;</translation>
</message>
</context>
<context>
<name>../data/lxinput.ui.h:9</name>
<message>
<source>Left handed (Swap left and right mouse buttons)</source>
<translation type="obsolete">Vänsterhänt (byt funktioner för vänster och höger musknapp)</translation>
</message>
</context>
<context>
<name>LxImage::Application</name>
<message>
<source>Take a screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>[FILE1, FILE2,...]</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxImage::MainWindow</name>
<message>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LXImage - a simple and fast image viewer
Copyright (C) 2013
LXDE Project: http://lxde.org/
Authors:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Image files (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Save File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 (Loading...) - Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 (Failed to Load) - Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 (%2x%3) - Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Thumbnails</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<source>Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ctrl+O</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ctrl+S</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Save &amp;As</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ctrl+A</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ctrl+W</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Zoom &amp;In</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ctrl++</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Zoom &amp;Out</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ctrl+-</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Copy to Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Next File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Previous File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Original Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Fit</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Rotate Clockwise</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rotate &amp;Counterclockwise</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>P&amp;references</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Print</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>First File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Home</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Last File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>End</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;New Window</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ctrl+N</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Flip &amp;Horizontally</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Capture Screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>F&amp;ull Screen</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>F11</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Flip &amp;Vertically</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Paste from Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Slide Show</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Del</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Go</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PgDown</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PgUp</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ctrl+P</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show Thumbnails</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>File Properties</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PreferencesDialog</name>
<message>
<source>Preferences</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Icon theme:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Normal background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Fullscreen background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Slide show interval (seconds):</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>General</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScreenshotDialog</name>
<message>
<source>Screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Take a screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Region</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Whole screen</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Current window only</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Include mouse cursor</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Delay:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Include window title and frame</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,408 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1">
<context>
<name>LxImage::Application</name>
<message>
<location filename="../application.cpp" line="112"/>
<source>Take a screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application.cpp" line="113"/>
<source>[FILE1, FILE2,...]</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxImage::MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="144"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="145"/>
<source>LXImage - a simple and fast image viewer
Copyright (C) 2013
LXDE Project: http://lxde.org/
Authors:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="238"/>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="239"/>
<location filename="../mainwindow.cpp" line="260"/>
<source>Image files (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="260"/>
<source>Save File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="516"/>
<source>%1 (Loading...) - Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="521"/>
<source>%1 (Failed to Load) - Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="525"/>
<source>%1 (%2x%3) - Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="535"/>
<source>Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="710"/>
<source>Thumbnails</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="412"/>
<source>Image Viewer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="413"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="414"/>
<source>&amp;Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="415"/>
<source>Ctrl+O</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="416"/>
<source>&amp;Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="417"/>
<source>Ctrl+S</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="418"/>
<source>Save &amp;As</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="419"/>
<source>Ctrl+A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="420"/>
<source>&amp;Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="421"/>
<source>Ctrl+W</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="422"/>
<source>Zoom &amp;In</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="423"/>
<source>Ctrl++</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="424"/>
<source>Zoom &amp;Out</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="425"/>
<source>Ctrl+-</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="426"/>
<source>&amp;Copy to Clipboard</source>
<translation type="unfinished"></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>
</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>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="431"/>
<source>PgDown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="436"/>
<source>PgUp</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="437"/>
<source>Original Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="438"/>
<source>&amp;Fit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="439"/>
<source>&amp;Rotate Clockwise</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="440"/>
<source>Rotate &amp;Counterclockwise</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="441"/>
<source>P&amp;references</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="442"/>
<source>&amp;Print</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="443"/>
<source>Ctrl+P</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="444"/>
<source>First File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="445"/>
<source>Home</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="446"/>
<source>Last File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="447"/>
<source>End</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="448"/>
<source>&amp;New Window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="449"/>
<source>Ctrl+N</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="450"/>
<source>Flip &amp;Horizontally</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="451"/>
<source>Capture Screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="452"/>
<source>F&amp;ull Screen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="453"/>
<source>F11</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="454"/>
<source>Flip &amp;Vertically</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="455"/>
<source>&amp;Paste from Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="456"/>
<source>&amp;Slide Show</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="457"/>
<source>&amp;Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="458"/>
<source>Del</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="459"/>
<source>Show Thumbnails</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="460"/>
<source>File Properties</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="461"/>
<source>&amp;File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="462"/>
<source>&amp;Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="463"/>
<source>Go</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="464"/>
<source>&amp;View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="465"/>
<source>&amp;Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="466"/>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PreferencesDialog</name>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="125"/>
<source>Preferences</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="126"/>
<source>Icon theme:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="127"/>
<source>Normal background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="128"/>
<source>Fullscreen background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="131"/>
<source>Slide show interval (seconds):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="132"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScreenshotDialog</name>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="123"/>
<source>Screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="124"/>
<source>Take a screenshot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="125"/>
<source>Region</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="126"/>
<source>Whole screen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="127"/>
<source>Current window only</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="128"/>
<source>Include mouse cursor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="129"/>
<source> seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="130"/>
<source>Delay:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="131"/>
<source>Include window title and frame</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,438 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="uk">
<context>
<name>LxImage::Application</name>
<message>
<location filename="../application.cpp" line="112"/>
<source>Take a screenshot</source>
<translation>Зробити знімок</translation>
</message>
<message>
<location filename="../application.cpp" line="113"/>
<source>[FILE1, FILE2,...]</source>
<translation>[ФАЙЛ1, ФАЙЛ2,...]</translation>
</message>
</context>
<context>
<name>LxImage::MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="144"/>
<source>About</source>
<translation>Про програму</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="145"/>
<source>LXImage - a simple and fast image viewer
Copyright (C) 2013
LXDE Project: http://lxde.org/
Authors:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</source>
<translation>LXImage - простий та швидкий переглядач зображень
Copyright (C) 2013
Проект LXDE: http://lxde.org/
Автори:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="238"/>
<source>Open File</source>
<translation>Відкрити файл</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="239"/>
<location filename="../mainwindow.cpp" line="260"/>
<source>Image files (%1)</source>
<translation>Файли зображень (%1)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="260"/>
<source>Save File</source>
<translation>Зберегти файл</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="516"/>
<source>%1 (Loading...) - Image Viewer</source>
<translation>%1 (Завантаження...) - Переглядач зображень</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="521"/>
<source>%1 (Failed to Load) - Image Viewer</source>
<translation>%1 (Невдача завантаження) - Переглядач зображень</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="525"/>
<source>%1 (%2x%3) - Image Viewer</source>
<translation>%1 (%2x%3) - Переглядач зображень</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="535"/>
<source>Image Viewer</source>
<translation>Переглядач зображень</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="710"/>
<source>Thumbnails</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="412"/>
<source>Image Viewer</source>
<translation>Переглядач зображень</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="413"/>
<source>&amp;About</source>
<translation>&amp;Про програму</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="414"/>
<source>&amp;Open File</source>
<translation>&amp;Відкрити файл</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="415"/>
<source>Ctrl+O</source>
<translation>Ctrl+O</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="416"/>
<source>&amp;Save</source>
<translation>&amp;Зберегти</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="417"/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="418"/>
<source>Save &amp;As</source>
<translation>Зберегти &amp;як</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="419"/>
<source>Ctrl+A</source>
<translation>Ctrl+A</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="420"/>
<source>&amp;Close</source>
<translation>&amp;Закрити</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="421"/>
<source>Ctrl+W</source>
<translation>Ctrl+W</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="422"/>
<source>Zoom &amp;In</source>
<translation>З&amp;більшити</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="423"/>
<source>Ctrl++</source>
<translation>Ctrl++</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="424"/>
<source>Zoom &amp;Out</source>
<translation type="unfinished">&amp;Зменшити</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="425"/>
<source>Ctrl+-</source>
<translation>Ctrl+-</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="426"/>
<source>&amp;Copy to Clipboard</source>
<translation>&amp;Копіювати до буфера</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>Наступний файл</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Праворуч</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>Попередній Файл</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Ліворуч</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="431"/>
<source>PgDown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="436"/>
<source>PgUp</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="437"/>
<source>Original Size</source>
<translation>Оригінальний розмір</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="438"/>
<source>&amp;Fit</source>
<translation>&amp;Підігнати</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="439"/>
<source>&amp;Rotate Clockwise</source>
<translation>&amp;Обернути за год. стрілкою</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="440"/>
<source>Rotate &amp;Counterclockwise</source>
<translation>Обернути проти &amp;год. стрілки</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="441"/>
<source>P&amp;references</source>
<translation>На&amp;лаштування</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="442"/>
<source>&amp;Print</source>
<translation>&amp;Друк</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="443"/>
<source>Ctrl+P</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="444"/>
<source>First File</source>
<translation>Перший файл</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="445"/>
<source>Home</source>
<translation>Home</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="446"/>
<source>Last File</source>
<translation>Останній файл</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="447"/>
<source>End</source>
<translation>End</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="448"/>
<source>&amp;New Window</source>
<translation>&amp;Нове вікно</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="449"/>
<source>Ctrl+N</source>
<translation>Ctrl+N</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="450"/>
<source>Flip &amp;Horizontally</source>
<translation>Віддзеркалити &amp;горизонтально</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="451"/>
<source>Capture Screenshot</source>
<translation>Зробити знімок екрана</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="452"/>
<source>F&amp;ull Screen</source>
<translation>П&amp;овний екран</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="453"/>
<source>F11</source>
<translation>F11</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="454"/>
<source>Flip &amp;Vertically</source>
<translation>Віддзеркалити &amp;вертикально</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="455"/>
<source>&amp;Paste from Clipboard</source>
<translation>&amp;Вставити з буфера обміну</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="456"/>
<source>&amp;Slide Show</source>
<translation>&amp;Показ слайдів</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="457"/>
<source>&amp;Delete</source>
<translation>В&amp;илучити</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="458"/>
<source>Del</source>
<translation>Del</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="459"/>
<source>Show Thumbnails</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="460"/>
<source>File Properties</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="461"/>
<source>&amp;File</source>
<translation>&amp;Файл</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="462"/>
<source>&amp;Help</source>
<translation>&amp;Довідка</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="463"/>
<source>Go</source>
<translation>Перейти</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="464"/>
<source>&amp;View</source>
<translation>П&amp;ерегляд</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="465"/>
<source>&amp;Edit</source>
<translation>&amp;Редагування</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="466"/>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>toolBar</source>
<translation type="obsolete">Панель інструментів</translation>
</message>
</context>
<context>
<name>PreferencesDialog</name>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="125"/>
<source>Preferences</source>
<translation>Налаштування</translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="126"/>
<source>Icon theme:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="127"/>
<source>Normal background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="128"/>
<source>Fullscreen background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="131"/>
<source>Slide show interval (seconds):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="132"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>TODO: Add configuration options here</source>
<translation type="vanished">Далі буде...</translation>
</message>
<message>
<source>Tab 1</source>
<translation type="vanished">Вкладка 1</translation>
</message>
<message>
<source>Tab 2</source>
<translation type="vanished">Вкладка 2</translation>
</message>
</context>
<context>
<name>ScreenshotDialog</name>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="123"/>
<source>Screenshot</source>
<translation>Знімок екрану</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="124"/>
<source>Take a screenshot</source>
<translation>Зробити знімок</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="125"/>
<source>Region</source>
<translation>Регіон</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="126"/>
<source>Whole screen</source>
<translation>Екран цілком</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="127"/>
<source>Current window only</source>
<translation>Лише поточне вікно</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="128"/>
<source>Include mouse cursor</source>
<translation>Включаючи вказівник миші</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="129"/>
<source> seconds</source>
<translation> секунд</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="130"/>
<source>Delay:</source>
<translation>Затримка:</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="131"/>
<source>Include window title and frame</source>
<translation>Включаючи заголовок вікна та кадр</translation>
</message>
</context>
</TS>

View File

@ -1,438 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN">
<context>
<name>LxImage::Application</name>
<message>
<location filename="../application.cpp" line="112"/>
<source>Take a screenshot</source>
<translation></translation>
</message>
<message>
<location filename="../application.cpp" line="113"/>
<source>[FILE1, FILE2,...]</source>
<translation>[1, 2,...]</translation>
</message>
</context>
<context>
<name>LxImage::MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="144"/>
<source>About</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="145"/>
<source>LXImage - a simple and fast image viewer
Copyright (C) 2013
LXDE Project: http://lxde.org/
Authors:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</source>
<translation>LXImage -
(C) 2013
LXDE http://lxde.org/
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="238"/>
<source>Open File</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="239"/>
<location filename="../mainwindow.cpp" line="260"/>
<source>Image files (%1)</source>
<translation> (%1)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="260"/>
<source>Save File</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="516"/>
<source>%1 (Loading...) - Image Viewer</source>
<translation>%1 (...) - </translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="521"/>
<source>%1 (Failed to Load) - Image Viewer</source>
<translation>%1 () - </translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="525"/>
<source>%1 (%2x%3) - Image Viewer</source>
<translation>%1 (%2x%3) - </translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="535"/>
<source>Image Viewer</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="710"/>
<source>Thumbnails</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="412"/>
<source>Image Viewer</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="413"/>
<source>&amp;About</source>
<translation>(&amp;A)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="414"/>
<source>&amp;Open File</source>
<translation>(&amp;O)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="415"/>
<source>Ctrl+O</source>
<translation>Ctrl+O</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="416"/>
<source>&amp;Save</source>
<translation>(&amp;S)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="417"/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="418"/>
<source>Save &amp;As</source>
<translation>(&amp;A)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="419"/>
<source>Ctrl+A</source>
<translation>Ctrl+A</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="420"/>
<source>&amp;Close</source>
<translation>(&amp;C)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="421"/>
<source>Ctrl+W</source>
<translation>Ctrl+W</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="422"/>
<source>Zoom &amp;In</source>
<translation>(&amp;I)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="423"/>
<source>Ctrl++</source>
<translation>Ctrl++</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="424"/>
<source>Zoom &amp;Out</source>
<translation>(&amp;O)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="425"/>
<source>Ctrl+-</source>
<translation>Ctrl+-</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="426"/>
<source>&amp;Copy to Clipboard</source>
<translation>(&amp;C)</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></translation>
</message>
<message>
<source>Right</source>
<translation type="vanished"></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></translation>
</message>
<message>
<source>Left</source>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="431"/>
<source>PgDown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="436"/>
<source>PgUp</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="437"/>
<source>Original Size</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="438"/>
<source>&amp;Fit</source>
<translation>(&amp;F)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="439"/>
<source>&amp;Rotate Clockwise</source>
<translation>(&amp;R)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="440"/>
<source>Rotate &amp;Counterclockwise</source>
<translation>(&amp;C)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="441"/>
<source>P&amp;references</source>
<translation>(&amp;R)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="442"/>
<source>&amp;Print</source>
<translation>(&amp;P)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="443"/>
<source>Ctrl+P</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="444"/>
<source>First File</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="445"/>
<source>Home</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="446"/>
<source>Last File</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="447"/>
<source>End</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="448"/>
<source>&amp;New Window</source>
<translation>(&amp;N)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="449"/>
<source>Ctrl+N</source>
<translation>Ctrl+N</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="450"/>
<source>Flip &amp;Horizontally</source>
<translation>(&amp;H)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="451"/>
<source>Capture Screenshot</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="452"/>
<source>F&amp;ull Screen</source>
<translation>(&amp;U)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="453"/>
<source>F11</source>
<translation>F11</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="454"/>
<source>Flip &amp;Vertically</source>
<translation>(&amp;V)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="455"/>
<source>&amp;Paste from Clipboard</source>
<translation>(&amp;P)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="456"/>
<source>&amp;Slide Show</source>
<translation>(&amp;S)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="457"/>
<source>&amp;Delete</source>
<translation>(&amp;D)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="458"/>
<source>Del</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="459"/>
<source>Show Thumbnails</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="460"/>
<source>File Properties</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="461"/>
<source>&amp;File</source>
<translation>(&amp;F)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="462"/>
<source>&amp;Help</source>
<translation>(&amp;H)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="463"/>
<source>Go</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="464"/>
<source>&amp;View</source>
<translation>(&amp;V)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="465"/>
<source>&amp;Edit</source>
<translation>(&amp;E)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="466"/>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>toolBar</source>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>PreferencesDialog</name>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="125"/>
<source>Preferences</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="126"/>
<source>Icon theme:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="127"/>
<source>Normal background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="128"/>
<source>Fullscreen background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="131"/>
<source>Slide show interval (seconds):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="132"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>TODO: Add configuration options here</source>
<translation type="vanished">TODO: Add configuration options here</translation>
</message>
<message>
<source>Tab 1</source>
<translation type="vanished"> 1</translation>
</message>
<message>
<source>Tab 2</source>
<translation type="vanished"> 2</translation>
</message>
</context>
<context>
<name>ScreenshotDialog</name>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="123"/>
<source>Screenshot</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="124"/>
<source>Take a screenshot</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="125"/>
<source>Region</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="126"/>
<source>Whole screen</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="127"/>
<source>Current window only</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="128"/>
<source>Include mouse cursor</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="129"/>
<source> seconds</source>
<translation> </translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="130"/>
<source>Delay:</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="131"/>
<source>Include window title and frame</source>
<translation></translation>
</message>
</context>
</TS>

View File

@ -1,426 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_TW">
<context>
<name>LxImage::Application</name>
<message>
<location filename="../application.cpp" line="112"/>
<source>Take a screenshot</source>
<translation></translation>
</message>
<message>
<location filename="../application.cpp" line="113"/>
<source>[FILE1, FILE2,...]</source>
<translation>[12...]</translation>
</message>
</context>
<context>
<name>LxImage::MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="144"/>
<source>About</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="145"/>
<source>LXImage - a simple and fast image viewer
Copyright (C) 2013
LXDE Project: http://lxde.org/
Authors:
Hong Jen Yee (PCMan) &lt;pcman.tw@gmail.com&gt;</source>
<translation>LXImage - r
(C) 2013
LXDE 專案: http://lxde.org/
Authors:
(PCMan) &lt;pcman.tw@gmail.com&gt;</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="238"/>
<source>Open File</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="239"/>
<location filename="../mainwindow.cpp" line="260"/>
<source>Image files (%1)</source>
<translation> (%1)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="260"/>
<source>Save File</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="516"/>
<source>%1 (Loading...) - Image Viewer</source>
<translation>%1 (...) - </translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="521"/>
<source>%1 (Failed to Load) - Image Viewer</source>
<translation>%1 () - </translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="525"/>
<source>%1 (%2x%3) - Image Viewer</source>
<translation>%1 (%2x%3) - </translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="535"/>
<source>Image Viewer</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="710"/>
<source>Thumbnails</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="412"/>
<source>Image Viewer</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="413"/>
<source>&amp;About</source>
<translation>(&amp;A)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="414"/>
<source>&amp;Open File</source>
<translation>(&amp;O)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="415"/>
<source>Ctrl+O</source>
<translation>Ctrl+O</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="416"/>
<source>&amp;Save</source>
<translation>(&amp;S)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="417"/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="418"/>
<source>Save &amp;As</source>
<translation>(&amp;A)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="419"/>
<source>Ctrl+A</source>
<translation>Ctrl+A</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="420"/>
<source>&amp;Close</source>
<translation>(&amp;C)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="421"/>
<source>Ctrl+W</source>
<translation>Ctrl+W</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="422"/>
<source>Zoom &amp;In</source>
<translation>(&amp;I)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="423"/>
<source>Ctrl++</source>
<translation>Ctrl++</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="424"/>
<source>Zoom &amp;Out</source>
<translation type="unfinished">(&amp;O)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="425"/>
<source>Ctrl+-</source>
<translation>Ctrl+-</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="426"/>
<source>&amp;Copy to Clipboard</source>
<translation>簿(&amp;C)</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></translation>
</message>
<message>
<source>Right</source>
<translation type="vanished"></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></translation>
</message>
<message>
<source>Left</source>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="431"/>
<source>PgDown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="436"/>
<source>PgUp</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="437"/>
<source>Original Size</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="438"/>
<source>&amp;Fit</source>
<translation>(&amp;F)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="439"/>
<source>&amp;Rotate Clockwise</source>
<translation>(&amp;R)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="440"/>
<source>Rotate &amp;Counterclockwise</source>
<translation>(&amp;C)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="441"/>
<source>P&amp;references</source>
<translation>(&amp;R)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="442"/>
<source>&amp;Print</source>
<translation>(&amp;P)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="443"/>
<source>Ctrl+P</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="444"/>
<source>First File</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="445"/>
<source>Home</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="446"/>
<source>Last File</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="447"/>
<source>End</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="448"/>
<source>&amp;New Window</source>
<translation>(&amp;N)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="449"/>
<source>Ctrl+N</source>
<translation>Ctrl+N</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="450"/>
<source>Flip &amp;Horizontally</source>
<translation>(&amp;H)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="451"/>
<source>Capture Screenshot</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="452"/>
<source>F&amp;ull Screen</source>
<translation>(&amp;U)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="453"/>
<source>F11</source>
<translation>F11</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="454"/>
<source>Flip &amp;Vertically</source>
<translation>(&amp;V)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="455"/>
<source>&amp;Paste from Clipboard</source>
<translation>簿(&amp;P)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="456"/>
<source>&amp;Slide Show</source>
<translation>(&amp;S)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="457"/>
<source>&amp;Delete</source>
<translation>(&amp;D)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="458"/>
<source>Del</source>
<translation>Del</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="459"/>
<source>Show Thumbnails</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="460"/>
<source>File Properties</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="461"/>
<source>&amp;File</source>
<translation>(&amp;F)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="462"/>
<source>&amp;Help</source>
<translation>(&amp;H)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="463"/>
<source>Go</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="464"/>
<source>&amp;View</source>
<translation>(&amp;V)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="465"/>
<source>&amp;Edit</source>
<translation>(&amp;E)</translation>
</message>
<message>
<location filename="../../build/src/ui_mainwindow.h" line="466"/>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>toolBar</source>
<translation type="obsolete"></translation>
</message>
</context>
<context>
<name>PreferencesDialog</name>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="125"/>
<source>Preferences</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="126"/>
<source>Icon theme:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="127"/>
<source>Normal background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="128"/>
<source>Fullscreen background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="131"/>
<source>Slide show interval (seconds):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../build/src/ui_preferencesdialog.h" line="132"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScreenshotDialog</name>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="123"/>
<source>Screenshot</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="124"/>
<source>Take a screenshot</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="125"/>
<source>Region</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="126"/>
<source>Whole screen</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="127"/>
<source>Current window only</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="128"/>
<source>Include mouse cursor</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="129"/>
<source> seconds</source>
<translation></translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="130"/>
<source>Delay:</source>
<translation>:</translation>
</message>
<message>
<location filename="../../build/src/ui_screenshotdialog.h" line="131"/>
<source>Include window title and frame</source>
<translation></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,56 @@
/*
LxImage - image viewer and screenshot tool for lxqt
Copyright (C) 2017 Nathan Osman <nathan@quickmediasolutions.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include <QHttpMultiPart>
#include <QHttpPart>
#include <QNetworkRequest>
#include <QUrl>
#include <QUrlQuery>
#include "imageshackprovider.h"
#include "imageshackupload.h"
using namespace LxImage;
const QString gUploadURL = "https://api.imageshack.com/v2/images";
const QByteArray gAPIKey = "4DINORVXbcbda9ac64b424a0e6b37caed4cf3b8b";
Upload *ImageShackProvider::upload(QIODevice *device)
{
// Construct the URL that will be used for the upload
QUrlQuery query;
query.addQueryItem("api_key", gAPIKey);
QUrl url(gUploadURL);
url.setQuery(query);
// The first (and only) part is the file upload
QHttpPart filePart;
filePart.setBodyDevice(device);
filePart.setHeader(
QNetworkRequest::ContentDispositionHeader,
"form-data; name=\"file\"; filename=\"upload.jpg\""
);
// Create the multipart and append the file part
QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType, device);
multiPart->append(filePart);
// Start the request and wrap it in an ImageShackUpload
return new ImageShackUpload(sManager.post(QNetworkRequest(url), multiPart));
}

View File

@ -0,0 +1,43 @@
/*
LxImage - image viewer and screenshot tool for lxqt
Copyright (C) 2017 Nathan Osman <nathan@quickmediasolutions.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef LXIMAGE_IMAGESHACKPROVIDER_H
#define LXIMAGE_IMAGESHACKPROVIDER_H
#include "provider.h"
namespace LxImage {
class Upload;
/**
* @brief Create uploads to ImageShack's API
*/
class ImageShackProvider : public Provider
{
Q_OBJECT
public:
virtual Upload *upload(QIODevice *device);
};
}
#endif // LXIMAGE_IMAGESHACKPROVIDER_H

View File

@ -0,0 +1,55 @@
/*
LxImage - image viewer and screenshot tool for lxqt
Copyright (C) 2017 Nathan Osman <nathan@quickmediasolutions.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
#include "imageshackupload.h"
using namespace LxImage;
ImageShackUpload::ImageShackUpload(QNetworkReply *reply)
: Upload(reply)
{
}
void ImageShackUpload::processReply(const QByteArray &data)
{
// Obtain the root object from the JSON response
QJsonObject object(QJsonDocument::fromJson(data).object());
// Attempt to retrieve the link
bool success = object.value("success").toBool();
QString link = object.value("result").toObject().value("images").toArray()
.at(0).toObject().value("direct_link").toString();
// Check for success
if (!success || link.isNull()) {
QString errorMessage = object.value("error").toObject()
.value("error_message").toString();
if (errorMessage.isNull()) {
errorMessage = tr("unknown error response");
}
Q_EMIT error(errorMessage);
} else {
Q_EMIT completed("https://" + link);
}
}

View File

@ -0,0 +1,45 @@
/*
LxImage - image viewer and screenshot tool for lxqt
Copyright (C) 2017 Nathan Osman <nathan@quickmediasolutions.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef LXIMAGE_IMAGESHACKUPLOAD_H
#define LXIMAGE_IMAGESHACKUPLOAD_H
#include "upload.h"
namespace LxImage {
/**
* @brief Upload to ImageShack's API
*/
class ImageShackUpload : public Upload
{
Q_OBJECT
public:
explicit ImageShackUpload(QNetworkReply *reply);
protected:
virtual void processReply(const QByteArray &data);
};
}
#endif // LXIMAGE_IMAGESHACKUPLOAD_H

View File

@ -0,0 +1,42 @@
/*
LxImage - image viewer and screenshot tool for lxqt
Copyright (C) 2017 Nathan Osman <nathan@quickmediasolutions.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QUrl>
#include "imgurprovider.h"
#include "imgurupload.h"
using namespace LxImage;
const QUrl gUploadURL("https://api.imgur.com/3/upload.json");
const QByteArray gAuthHeader = "Client-ID 63ff047cd8bcf9e";
const QByteArray gTypeHeader = "application/x-www-form-urlencoded";
Upload *ImgurProvider::upload(QIODevice *device)
{
// Create the request with the correct HTTP headers
QNetworkRequest request(gUploadURL);
request.setHeader(QNetworkRequest::ContentTypeHeader, gTypeHeader);
request.setRawHeader("Authorization", gAuthHeader);
// Start the request and wrap it in an ImgurUpload
return new ImgurUpload(sManager.post(request, device));
}

View File

@ -0,0 +1,41 @@
/*
LxImage - image viewer and screenshot tool for lxqt
Copyright (C) 2017 Nathan Osman <nathan@quickmediasolutions.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef LXIMAGE_IMGURPROVIDER_H
#define LXIMAGE_IMGURPROVIDER_H
#include "provider.h"
namespace LxImage {
/**
* @brief Create uploads to Imgur's API
*/
class ImgurProvider : public Provider
{
Q_OBJECT
public:
virtual Upload *upload(QIODevice *device);
};
}
#endif // LXIMAGE_IMGURPROVIDER_H

View File

@ -0,0 +1,52 @@
/*
LxImage - image viewer and screenshot tool for lxqt
Copyright (C) 2017 Nathan Osman <nathan@quickmediasolutions.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include <QJsonDocument>
#include <QJsonObject>
#include "imgurupload.h"
using namespace LxImage;
ImgurUpload::ImgurUpload(QNetworkReply *reply)
: Upload(reply)
{
}
void ImgurUpload::processReply(const QByteArray &data)
{
// Obtain the root object from the JSON response
QJsonObject object(QJsonDocument::fromJson(data).object());
// Attempt to retrieve the value for "success" and "data->link"
bool success = object.value("success").toBool();
QJsonObject dataObject = object.value("data").toObject();
QString dataLink = dataObject.value("link").toString();
QString dataError = dataObject.value("error").toString();
// Ensure that "success" is true & link is valid, otherwise throw an error
if (!success || dataLink.isNull()) {
if (dataError.isNull()) {
dataError = tr("unknown error response");
}
Q_EMIT error(dataError);
} else {
Q_EMIT completed(dataLink);
}
}

43
src/upload/imgurupload.h Normal file
View File

@ -0,0 +1,43 @@
/*
LxImage - image viewer and screenshot tool for lxqt
Copyright (C) 2017 Nathan Osman <nathan@quickmediasolutions.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef LXIMAGE_IMGURUPLOAD_H
#define LXIMAGE_IMGURUPLOAD_H
#include "upload.h"
namespace LxImage {
/**
* @brief Process uploads to Imgur's API
*/
class ImgurUpload : public Upload
{
Q_OBJECT
public:
explicit ImgurUpload(QNetworkReply *reply);
virtual void processReply(const QByteArray &data);
};
}
#endif // LXIMAGE_IMGURUPLOAD_H

24
src/upload/provider.cpp Normal file
View File

@ -0,0 +1,24 @@
/*
LxImage - image viewer and screenshot tool for lxqt
Copyright (C) 2017 Nathan Osman <nathan@quickmediasolutions.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include "provider.h"
using namespace LxImage;
QNetworkAccessManager Provider::sManager;

54
src/upload/provider.h Normal file
View File

@ -0,0 +1,54 @@
/*
LxImage - image viewer and screenshot tool for lxqt
Copyright (C) 2017 Nathan Osman <nathan@quickmediasolutions.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef LXIMAGE_PROVIDER_H
#define LXIMAGE_PROVIDER_H
#include <QIODevice>
#include <QNetworkAccessManager>
#include <QObject>
namespace LxImage {
class Upload;
/**
* @brief Base class for providers
*/
class Provider : public QObject
{
Q_OBJECT
public:
/**
* @brief Upload the provided data
* @param device reader for uploaded data from
* @return newly created upload
*/
virtual Upload *upload(QIODevice *device) = 0;
protected:
static QNetworkAccessManager sManager;
};
}
#endif // LXIMAGE_PROVIDER_H

57
src/upload/upload.cpp Normal file
View File

@ -0,0 +1,57 @@
/*
LxImage - image viewer and screenshot tool for lxqt
Copyright (C) 2017 Nathan Osman <nathan@quickmediasolutions.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include "upload.h"
using namespace LxImage;
Upload::Upload(QNetworkReply *reply)
: mReply(reply)
{
// Reparent the reply to this object
mReply->setParent(this);
// Emit progress() when upload progress changes
connect(mReply, &QNetworkReply::uploadProgress, [this](qint64 bytesSent, qint64 bytesTotal) {
Q_EMIT progress(static_cast<int>(
static_cast<double>(bytesSent) / static_cast<double>(bytesTotal) * 100.0
));
});
// Emit error() when a socket error occurs
connect(mReply, static_cast<void(QNetworkReply::*)(QNetworkReply::NetworkError)>(&QNetworkReply::error), [this](QNetworkReply::NetworkError) {
Q_EMIT error(mReply->errorString());
});
// Process the request when it finishes
connect(mReply, &QNetworkReply::finished, [this]() {
if (mReply->error() == QNetworkReply::NoError) {
processReply(mReply->readAll());
}
});
// Emit finished() when completed() or error() is emitted
connect(this, &Upload::completed, this, &Upload::finished);
connect(this, &Upload::error, this, &Upload::finished);
}
void Upload::abort()
{
mReply->abort();
}

96
src/upload/upload.h Normal file
View File

@ -0,0 +1,96 @@
/*
LxImage - image viewer and screenshot tool for lxqt
Copyright (C) 2017 Nathan Osman <nathan@quickmediasolutions.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef LXIMAGE_UPLOAD_H
#define LXIMAGE_UPLOAD_H
#include <QNetworkReply>
#include <QObject>
namespace LxImage {
/**
* @brief Base class for uploads
*/
class Upload : public QObject
{
Q_OBJECT
public:
/**
* @brief Create an upload
* @param reply network reply
*
* The upload will assume ownership of the network reply and connect to its
* signals, emitting uploadError() when something goes wrong.
*/
explicit Upload(QNetworkReply *reply);
/**
* @brief Abort the upload
*/
void abort();
Q_SIGNALS:
/**
* @brief Indicate that upload progress has changed
* @param value new progress value
*/
void progress(int value);
/**
* @brief Indicate that the upload completed
* @param url new URL of the upload
*/
void completed(const QString &url);
/**
* @brief Indicate that an error occurred
* @param message description of the error
*/
void error(const QString &message);
/**
* @brief Indicate that the upload finished
*
* This signal is emitted after either completed() or error().
*/
void finished();
protected:
/**
* @brief Process the data from the reply
* @param data content from the reply
*
* This method should parse the data and either emit the completed() or
* error() signal.
*/
virtual void processReply(const QByteArray &data) = 0;
private:
QNetworkReply *mReply;
};
}
#endif // LXIMAGE_UPLOAD_H

141
src/upload/uploaddialog.cpp Normal file
View File

@ -0,0 +1,141 @@
/*
LxImage - image viewer and screenshot tool for lxqt
Copyright (C) 2017 Nathan Osman <nathan@quickmediasolutions.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include <QComboBox>
#include <QLineEdit>
#include <QMessageBox>
#include <QProgressBar>
#include <QPushButton>
#include <QVariant>
#include "imageshackprovider.h"
#include "imgurprovider.h"
#include "provider.h"
#include "upload.h"
#include "uploaddialog.h"
using namespace LxImage;
ImgurProvider gImgurProvider;
ImageShackProvider gImageShackProvider;
UploadDialog::UploadDialog(QWidget *parent, const QString &filename)
: QDialog(parent),
mState(SelectProvider),
mFile(filename),
mUpload(nullptr)
{
ui.setupUi(this);
// Populate the list of providers
ui.providerComboBox->addItem(tr("Imgur"), QVariant::fromValue(&gImgurProvider));
ui.providerComboBox->addItem(tr("ImageShack"), QVariant::fromValue(&gImageShackProvider));
updateUi();
}
void UploadDialog::on_actionButton_clicked()
{
switch (mState) {
case SelectProvider:
start();
break;
case UploadInProgress:
mUpload->abort();
break;
case Completed:
accept();
break;
}
}
void UploadDialog::start()
{
// Attempt to open the file
if (!mFile.open(QIODevice::ReadOnly)) {
showError(mFile.errorString());
return;
}
// Retrieve the selected provider
Provider *provider = ui.providerComboBox->itemData(
ui.providerComboBox->currentIndex()
).value<Provider*>();
// Create the upload
mUpload = provider->upload(&mFile);
// Update the progress bar as the upload progresses
connect(mUpload, &Upload::progress, ui.progressBar, &QProgressBar::setValue);
// If the request completes, show the link to the user
connect(mUpload, &Upload::completed, [this](const QString &url) {
ui.linkLineEdit->setText(url);
mState = Completed;
updateUi();
});
// If the request fails, show an error
connect(mUpload, &Upload::error, [this](const QString &message) {
showError(message);
});
// Destroy the upload when it completes
connect(mUpload, &Upload::finished, [this]() {
mFile.close();
mUpload->deleteLater();
mUpload = nullptr;
});
mState = UploadInProgress;
updateUi();
}
void UploadDialog::updateUi()
{
// Show the appropriate control given the current state
ui.providerComboBox->setVisible(mState == SelectProvider);
ui.progressBar->setVisible(mState == UploadInProgress);
ui.linkLineEdit->setVisible(mState == Completed);
// Reset the progress bar to zero
ui.progressBar->setValue(0);
// Set the correct button text
switch (mState) {
case SelectProvider:
ui.actionButton->setText(tr("Start"));
break;
case UploadInProgress:
ui.actionButton->setText(tr("Stop"));
break;
case Completed:
ui.actionButton->setText(tr("Close"));
break;
}
}
void UploadDialog::showError(const QString &message)
{
QMessageBox::critical(this, tr("Error"), message);
mState = SelectProvider;
updateUi();
}

73
src/upload/uploaddialog.h Normal file
View File

@ -0,0 +1,73 @@
/*
LxImage - image viewer and screenshot tool for lxqt
Copyright (C) 2017 Nathan Osman <nathan@quickmediasolutions.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef LXIMAGE_UPLOADDIALOG_H
#define LXIMAGE_UPLOADDIALOG_H
#include <QDialog>
#include <QFile>
#include "ui_uploaddialog.h"
namespace LxImage {
class Upload;
/**
* @brief Dialog for uploading an image
*/
class UploadDialog : public QDialog
{
Q_OBJECT
public:
/**
* @brief Create a dialog for uploading the specified file
* @param parent widget parent
* @param filename absolute path to file
*/
UploadDialog(QWidget *parent, const QString &filename);
private Q_SLOTS:
void on_actionButton_clicked();
private:
void start();
void updateUi();
void showError(const QString &message);
Ui::UploadDialog ui;
enum {
SelectProvider,
UploadInProgress,
Completed,
} mState;
QFile mFile;
Upload *mUpload;
};
}
#endif // LXIMAGE_UPLOADDIALOG_H

View File

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>UploadDialog</class>
<widget class="QDialog" name="UploadDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>300</width>
<height>100</height>
</rect>
</property>
<property name="windowTitle">
<string>Upload</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QComboBox" name="providerComboBox"/>
</item>
<item>
<widget class="QProgressBar" name="progressBar">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLineEdit" name="linkLineEdit">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="actionButton">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>