Adding upstream version 0.7.0.
Signed-off-by: Alf Gaida <agaida@siduction.org>
This commit is contained in:
parent
5eaa08fe49
commit
be35c26f40
4
AUTHORS
4
AUTHORS
@ -1,9 +1,9 @@
|
|||||||
Upstream Authors:
|
Upstream Authors:
|
||||||
LXQt team: http://lxqt.org
|
LXQt team: https://lxqt.org
|
||||||
Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
|
Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
|
||||||
|
|
||||||
Copyright:
|
Copyright:
|
||||||
Copyright (c) 2013-2017 LXQt team
|
Copyright (c) 2013-2018 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.
|
The full text of the licenses can be found in the 'COPYING' file.
|
||||||
|
17
CHANGELOG
17
CHANGELOG
@ -1,7 +1,22 @@
|
|||||||
|
|
||||||
lximage-qt-0.6.0 / 2017-10-21
|
lximage-qt-0.7.0 / 2018-05-21
|
||||||
=============================
|
=============================
|
||||||
|
|
||||||
|
* Bumped minor version to 7
|
||||||
|
* Spanish translation update
|
||||||
|
* Just made it compilable again
|
||||||
|
* Removed not needed release.sh
|
||||||
|
* CMake: Prevent in-source builds
|
||||||
|
* fix some http->https
|
||||||
|
* Fix some mentions of LXDE
|
||||||
|
* Drop Qt foreach
|
||||||
|
* cmake: Handle CMP0071
|
||||||
|
* Add Spanish desktop entries
|
||||||
|
|
||||||
|
0.6.0 / 2017-10-21
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Release 0.6.0: Update changelog
|
||||||
* Add ImageShack upload provider.
|
* Add ImageShack upload provider.
|
||||||
* Fix warnings issued by GCC and Clang.
|
* Fix warnings issued by GCC and Clang.
|
||||||
* Ensure file is closed when upload finishes.
|
* Ensure file is closed when upload finishes.
|
||||||
|
@ -4,13 +4,14 @@ project(lximage-qt)
|
|||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
set(MAJOR_VERSION 0)
|
set(MAJOR_VERSION 0)
|
||||||
set(MINOR_VERSION 6)
|
set(MINOR_VERSION 7)
|
||||||
set(PATCH_VERSION 0)
|
set(PATCH_VERSION 0)
|
||||||
set(LXIMAGE_VERSION ${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION})
|
set(LXIMAGE_VERSION ${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION})
|
||||||
|
|
||||||
set(LXQTBT_MINIMUM_VERSION "0.4.0")
|
set(LXQTBT_MINIMUM_VERSION "0.5.0")
|
||||||
|
|
||||||
set(CMAKE_AUTOMOC ON)
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_AUTOUIC ON)
|
||||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||||
|
|
||||||
@ -26,6 +27,7 @@ find_package(lxqt-build-tools ${LXQTBT_MINIMUM_VERSION} REQUIRED)
|
|||||||
find_package(Exif REQUIRED)
|
find_package(Exif REQUIRED)
|
||||||
message(STATUS "Building with Qt ${Qt5Core_VERSION}")
|
message(STATUS "Building with Qt ${Qt5Core_VERSION}")
|
||||||
|
|
||||||
|
include(LXQtPreventInSourceBuilds)
|
||||||
include(LXQtCompilerSettings NO_POLICY_SCOPE)
|
include(LXQtCompilerSettings NO_POLICY_SCOPE)
|
||||||
|
|
||||||
# TODO: make the X11 stuff optional.
|
# TODO: make the X11 stuff optional.
|
||||||
|
27
README.md
27
README.md
@ -2,24 +2,33 @@
|
|||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
LXImage-Qt is the Qt port of LXImage, a simple and fast image viewer.
|
LXImage-Qt is the Qt port of LXImage, a simple and fast image viewer.
|
||||||
|
|
||||||
In addition it features a tool to take screenshots.
|
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.
|
It is maintained by the LXQt project but can be used independently from this
|
||||||
|
desktop environment.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
### Compiling source code
|
### 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).
|
Runtime dependencies are qtx11extras and [libfm-qt](https://github.com/lxqt/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.
|
(LXImage-Qt used to depend on [PCManFM-Qt](https://github.com/lxqt/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/lxqt/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.
|
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.
|
To build run `make`, to install `make install` which accepts variable `DESTDIR`
|
||||||
|
as usual.
|
||||||
|
|
||||||
### Binary packages
|
### Binary packages
|
||||||
|
|
||||||
Official binary packages are available in Arch Linux, Debian (as of Debian stretch), Fedora and openSUSE (Leap 42.1 and Tumbleweed).
|
Official binary packages are available in Arch Linux, Debian (as of Debian stretch),
|
||||||
Just use the distributions' package manager to search for string 'lximage'.
|
Fedora and openSUSE (Leap 42.1 and Tumbleweed). Just use the distributions'
|
||||||
|
package manager to search for string 'lximage'.
|
||||||
|
28
release.sh
28
release.sh
@ -1,28 +0,0 @@
|
|||||||
#!/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/"
|
|
@ -33,13 +33,15 @@ set(lximage-qt_SRCS
|
|||||||
upload/uploaddialog.cpp
|
upload/uploaddialog.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
qt5_add_dbus_adaptor(lximage-qt_SRCS
|
qt5_add_dbus_adaptor(lximage-qt_DBUS_SRCS
|
||||||
org.lxde.LxImage.Application.xml
|
org.lxde.LxImage.Application.xml
|
||||||
application.h
|
application.h
|
||||||
LxImage::Application
|
LxImage::Application
|
||||||
applicationadaptor
|
applicationadaptor
|
||||||
ApplicationAdaptor
|
ApplicationAdaptor
|
||||||
)
|
)
|
||||||
|
set_property(SOURCE ${lximage-qt_DBUS_SRCS} PROPERTY SKIP_AUTOGEN ON)
|
||||||
|
list(APPEND lximage-qt_SRCS "${lximage-qt_DBUS_SRCS}")
|
||||||
|
|
||||||
set(lximage-qt_UIS
|
set(lximage-qt_UIS
|
||||||
mainwindow.ui
|
mainwindow.ui
|
||||||
@ -48,7 +50,6 @@ set(lximage-qt_UIS
|
|||||||
|
|
||||||
upload/uploaddialog.ui
|
upload/uploaddialog.ui
|
||||||
)
|
)
|
||||||
qt5_wrap_ui(lximage-qt_UI_H ${lximage-qt_UIS})
|
|
||||||
|
|
||||||
# add translation for lximage-qt
|
# add translation for lximage-qt
|
||||||
include(LXQtTranslateTs)
|
include(LXQtTranslateTs)
|
||||||
@ -80,7 +81,7 @@ install(FILES ${desktop_files} DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applica
|
|||||||
|
|
||||||
add_executable(lximage-qt
|
add_executable(lximage-qt
|
||||||
${lximage-qt_SRCS}
|
${lximage-qt_SRCS}
|
||||||
${lximage-qt_UI_H}
|
${lximage-qt_UIS}
|
||||||
${desktop_files}
|
${desktop_files}
|
||||||
${QM_FILES}
|
${QM_FILES}
|
||||||
)
|
)
|
||||||
@ -88,6 +89,7 @@ add_executable(lximage-qt
|
|||||||
add_definitions(
|
add_definitions(
|
||||||
-DLXIMAGE_DATA_DIR="${CMAKE_INSTALL_FULL_DATAROOTDIR}/lximage-qt"
|
-DLXIMAGE_DATA_DIR="${CMAKE_INSTALL_FULL_DATAROOTDIR}/lximage-qt"
|
||||||
-DLXIMAGE_VERSION="${LXIMAGE_VERSION}"
|
-DLXIMAGE_VERSION="${LXIMAGE_VERSION}"
|
||||||
|
-DQT_NO_FOREACH
|
||||||
)
|
)
|
||||||
|
|
||||||
set(QT_LIBRARIES Qt5::Widgets Qt5::Network Qt5::Core Qt5::DBus Qt5::PrintSupport Qt5::X11Extras Qt5::Svg)
|
set(QT_LIBRARIES Qt5::Widgets Qt5::Network Qt5::Core Qt5::DBus Qt5::PrintSupport Qt5::X11Extras Qt5::Svg)
|
||||||
|
@ -104,7 +104,7 @@ bool Application::parseCommandLineArgs() {
|
|||||||
const bool screenshotTool = parser.isSet(screenshotOption);
|
const bool screenshotTool = parser.isSet(screenshotOption);
|
||||||
|
|
||||||
QStringList paths;
|
QStringList paths;
|
||||||
Q_FOREACH(QString arg, args) {
|
for(const QString& arg : args) {
|
||||||
QFileInfo info(arg);
|
QFileInfo info(arg);
|
||||||
paths.push_back(info.absoluteFilePath());
|
paths.push_back(info.absoluteFilePath());
|
||||||
}
|
}
|
||||||
@ -151,7 +151,7 @@ void Application::newWindow(QStringList files) {
|
|||||||
window->show();
|
window->show();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Q_FOREACH(QString fileName, files) {
|
for(const QString& fileName : qAsConst(files)) {
|
||||||
window = createWindow();
|
window = createWindow();
|
||||||
window->openImageFile(fileName);
|
window->openImageFile(fileName);
|
||||||
|
|
||||||
@ -167,7 +167,8 @@ void Application::newWindow(QStringList files) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Application::applySettings() {
|
void Application::applySettings() {
|
||||||
Q_FOREACH(QWidget* window, topLevelWidgets()) {
|
const auto windows = topLevelWidgets();
|
||||||
|
for(QWidget* window : windows) {
|
||||||
if(window->inherits("LxImage::MainWindow"))
|
if(window->inherits("LxImage::MainWindow"))
|
||||||
static_cast<MainWindow*>(window)->applySettings();
|
static_cast<MainWindow*>(window)->applySettings();
|
||||||
}
|
}
|
||||||
|
@ -346,7 +346,7 @@ void ImageView::generateCache() {
|
|||||||
// convert to the coordinate of the original image
|
// convert to the coordinate of the original image
|
||||||
cachedSceneRect_ = viewportToScene(cachedRect_);
|
cachedSceneRect_ = viewportToScene(cachedRect_);
|
||||||
// create a sub image of the visible without real data copy
|
// create a sub image of the visible without real data copy
|
||||||
// Reference: http://stackoverflow.com/questions/12681554/dividing-qimage-to-smaller-pieces
|
// Reference: https://stackoverflow.com/questions/12681554/dividing-qimage-to-smaller-pieces
|
||||||
QRect subRect = image_.rect().intersected(cachedSceneRect_);
|
QRect subRect = image_.rect().intersected(cachedSceneRect_);
|
||||||
const uchar* bits = image_.constBits();
|
const uchar* bits = image_.constBits();
|
||||||
unsigned int offset = subRect.x() * image_.depth() / 8 + subRect.y() * image_.bytesPerLine();
|
unsigned int offset = subRect.x() * image_.depth() / 8 + subRect.y() * image_.bytesPerLine();
|
||||||
|
@ -89,7 +89,7 @@ void LoadImageJob::exec() {
|
|||||||
exif_loader.reset();
|
exif_loader.reset();
|
||||||
if (exif_data) {
|
if (exif_data) {
|
||||||
/* reference for EXIF orientation tag:
|
/* reference for EXIF orientation tag:
|
||||||
* http://www.impulseadventure.com/photo/exif-orientation.html */
|
* https://www.impulseadventure.com/photo/exif-orientation.html */
|
||||||
ExifEntry* orient_ent = exif_data_get_entry(exif_data.get(), EXIF_TAG_ORIENTATION);
|
ExifEntry* orient_ent = exif_data_get_entry(exif_data.get(), EXIF_TAG_ORIENTATION);
|
||||||
if(orient_ent) { /* orientation flag found in EXIF */
|
if(orient_ent) { /* orientation flag found in EXIF */
|
||||||
gushort orient;
|
gushort orient;
|
||||||
|
@ -39,7 +39,6 @@
|
|||||||
#include <QDesktopWidget>
|
#include <QDesktopWidget>
|
||||||
#include <QGraphicsSvgItem>
|
#include <QGraphicsSvgItem>
|
||||||
#include "application.h"
|
#include "application.h"
|
||||||
#include <libfm-qt/path.h>
|
|
||||||
#include <libfm-qt/folderview.h>
|
#include <libfm-qt/folderview.h>
|
||||||
#include <libfm-qt/filepropsdialog.h>
|
#include <libfm-qt/filepropsdialog.h>
|
||||||
#include <libfm-qt/fileoperation.h>
|
#include <libfm-qt/fileoperation.h>
|
||||||
@ -143,9 +142,9 @@ MainWindow::~MainWindow() {
|
|||||||
|
|
||||||
void MainWindow::on_actionAbout_triggered() {
|
void MainWindow::on_actionAbout_triggered() {
|
||||||
QMessageBox::about(this, tr("About"),
|
QMessageBox::about(this, tr("About"),
|
||||||
tr("LXImage - a simple and fast image viewer\n\n"
|
tr("LXImage-Qt - a simple and fast image viewer\n\n"
|
||||||
"Copyright (C) 2013\n"
|
"Copyright (C) 2013\n"
|
||||||
"LXDE Project: http://lxde.org/\n\n"
|
"LXQt Project: https://lxqt.org/\n\n"
|
||||||
"Authors:\n"
|
"Authors:\n"
|
||||||
"Hong Jen Yee (PCMan) <pcman.tw@gmail.com>"));
|
"Hong Jen Yee (PCMan) <pcman.tw@gmail.com>"));
|
||||||
}
|
}
|
||||||
@ -906,7 +905,8 @@ void MainWindow::changeEvent(QEvent* event) {
|
|||||||
// is disabled. We needs to add the actions to the main window manually to enable the
|
// is disabled. We needs to add the actions to the main window manually to enable the
|
||||||
// shortcuts again.
|
// shortcuts again.
|
||||||
ui.menubar->hide();
|
ui.menubar->hide();
|
||||||
Q_FOREACH(QAction* action, ui.menubar->actions()) {
|
const auto actions = ui.menubar->actions();
|
||||||
|
for(QAction* action : qAsConst(actions)) {
|
||||||
if(!action->shortcut().isEmpty())
|
if(!action->shortcut().isEmpty())
|
||||||
addAction(action);
|
addAction(action);
|
||||||
}
|
}
|
||||||
@ -917,7 +917,8 @@ void MainWindow::changeEvent(QEvent* event) {
|
|||||||
ui.view->setFrameStyle(QFrame::StyledPanel|QFrame::Sunken);
|
ui.view->setFrameStyle(QFrame::StyledPanel|QFrame::Sunken);
|
||||||
ui.view->setBackgroundBrush(QBrush(app->settings().bgColor()));
|
ui.view->setBackgroundBrush(QBrush(app->settings().bgColor()));
|
||||||
// now we're going to re-enable the menu, so remove the actions previously added.
|
// now we're going to re-enable the menu, so remove the actions previously added.
|
||||||
Q_FOREACH(QAction* action, ui.menubar->actions()) {
|
const auto actions_ = ui.menubar->actions();
|
||||||
|
for(QAction* action : qAsConst(actions_)) {
|
||||||
if(!action->shortcut().isEmpty())
|
if(!action->shortcut().isEmpty())
|
||||||
removeAction(action);
|
removeAction(action);
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,8 @@ void PreferencesDialog::accept() {
|
|||||||
settings.setFallbackIconTheme(newIconTheme);
|
settings.setFallbackIconTheme(newIconTheme);
|
||||||
QIcon::setThemeName(newIconTheme);
|
QIcon::setThemeName(newIconTheme);
|
||||||
// update the UI by emitting a style change event
|
// update the UI by emitting a style change event
|
||||||
Q_FOREACH(QWidget *widget, QApplication::allWidgets()) {
|
const auto allWidgets = QApplication::allWidgets();
|
||||||
|
for(QWidget *widget : allWidgets) {
|
||||||
QEvent event(QEvent::StyleChange);
|
QEvent event(QEvent::StyleChange);
|
||||||
QApplication::sendEvent(widget, &event);
|
QApplication::sendEvent(widget, &event);
|
||||||
}
|
}
|
||||||
@ -76,9 +77,9 @@ void PreferencesDialog::accept() {
|
|||||||
|
|
||||||
static void findIconThemesInDir(QHash<QString, QString>& iconThemes, QString dirName) {
|
static void findIconThemesInDir(QHash<QString, QString>& iconThemes, QString dirName) {
|
||||||
QDir dir(dirName);
|
QDir dir(dirName);
|
||||||
QStringList subDirs = dir.entryList(QDir::AllDirs);
|
const QStringList subDirs = dir.entryList(QDir::AllDirs);
|
||||||
GKeyFile* kf = g_key_file_new();
|
GKeyFile* kf = g_key_file_new();
|
||||||
Q_FOREACH(QString subDir, subDirs) {
|
for(QString subDir : subDirs) {
|
||||||
QString indexFile = dirName % '/' % subDir % "/index.theme";
|
QString indexFile = dirName % '/' % subDir % "/index.theme";
|
||||||
if(g_key_file_load_from_file(kf, indexFile.toLocal8Bit().constData(), GKeyFileFlags(0), NULL)) {
|
if(g_key_file_load_from_file(kf, indexFile.toLocal8Bit().constData(), GKeyFileFlags(0), NULL)) {
|
||||||
// FIXME: skip hidden ones
|
// FIXME: skip hidden ones
|
||||||
|
3
src/translations/lximage-qt-screenshot_es.desktop
Normal file
3
src/translations/lximage-qt-screenshot_es.desktop
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Name[es]=Captura de pantalla
|
||||||
|
GenericName[es]=Captura de pantalla
|
||||||
|
Comment[es]=Toma capturas de la pantalla
|
3
src/translations/lximage-qt_es.desktop
Normal file
3
src/translations/lximage-qt_es.desktop
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Name[es]=LXImage
|
||||||
|
GenericName[es]=Visor de imágenes
|
||||||
|
Comment[es]=El visor de imágenes de LXQt
|
Loading…
x
Reference in New Issue
Block a user