Commit bd49c705 authored by Jonathan Carter's avatar Jonathan Carter

Add debian/.gitignore

parent f6529c6a
2.1.4
-----
* FIXED: Automatic high DPI support.
* FIXED: Unsigned integer conversion warnings in graphics layer.
* FIXED: Could not add images with Qt 5.12
* FIXED: Window icon didn't work in Wayland.
* Added support for OpenGL ES.
* Improved loading locales.
* Require Qt 5.9
* Translation updates: Polish.
2.1.3
-----
* Replaced jhead with image auto-rotation in Qt 5.5.
......
......@@ -3,26 +3,19 @@
<file>bumpmap.png</file>
<file>shadow.png</file>
<file>shaders/120/textures0.frag</file>
<file>shaders/120/textures0.vert</file>
<file>shaders/120/textures1.frag</file>
<file>shaders/120/textures1.vert</file>
<file>shaders/120/textures2.frag</file>
<file>shaders/120/textures2.vert</file>
<file>shaders/gl2/textures0.frag</file>
<file>shaders/gl2/textures0.vert</file>
<file>shaders/gl2/textures1.frag</file>
<file>shaders/gl2/textures1.vert</file>
<file>shaders/gl2/textures2.frag</file>
<file>shaders/gl2/textures2.vert</file>
<file>shaders/130/textures0.frag</file>
<file>shaders/130/textures0.vert</file>
<file>shaders/130/textures1.frag</file>
<file>shaders/130/textures1.vert</file>
<file>shaders/130/textures2.frag</file>
<file>shaders/130/textures2.vert</file>
<file>shaders/330/textures0.frag</file>
<file>shaders/330/textures0.vert</file>
<file>shaders/330/textures1.frag</file>
<file>shaders/330/textures1.vert</file>
<file>shaders/330/textures2.frag</file>
<file>shaders/330/textures2.vert</file>
<file>shaders/gl3/textures0.frag</file>
<file>shaders/gl3/textures0.vert</file>
<file>shaders/gl3/textures1.frag</file>
<file>shaders/gl3/textures1.vert</file>
<file>shaders/gl3/textures2.frag</file>
<file>shaders/gl3/textures2.vert</file>
<file>tango/16x16/image-x-generic.png</file>
<file>tango/16x16/list-add.png</file>
......
#version 330
uniform vec4 color;
layout(location = 0) out vec4 out_color;
void main()
{
out_color = color;
}
#version 330
uniform mat4 matrix;
layout(location = 0) in vec3 position;
void main()
{
gl_Position = matrix * vec4(position, 1.0);
}
#version 330
uniform sampler2D texture0;
uniform vec4 color;
in vec2 frag_texcoord0;
layout(location = 0) out vec4 out_color;
void main()
{
out_color = texture(texture0, frag_texcoord0) * color;
}
#version 330
uniform mat4 matrix;
layout(location = 0) in vec3 position;
layout(location = 1) in vec2 texcoord0;
out vec2 frag_texcoord0;
void main()
{
gl_Position = matrix * vec4(position, 1.0);
frag_texcoord0 = texcoord0;
}
#version 330
uniform sampler2D texture0;
uniform sampler2D texture1;
in vec2 frag_texcoord0;
in vec2 frag_texcoord1;
layout(location = 0) out vec4 out_color;
void main()
{
out_color = texture(texture0, frag_texcoord0) + texture(texture1, frag_texcoord1) - vec4(0.5, 0.5, 0.5, 0.5);
}
#version 330
uniform mat4 matrix;
layout(location = 0) in vec3 position;
layout(location = 1) in vec2 texcoord0;
layout(location = 2) in vec2 texcoord1;
out vec2 frag_texcoord0;
out vec2 frag_texcoord1;
void main()
{
gl_Position = matrix * vec4(position, 1.0);
frag_texcoord0 = texcoord0;
frag_texcoord1 = texcoord1;
}
#version 120
uniform vec4 color;
uniform highp vec4 color;
void main()
{
......
#version 120
uniform mat4 matrix;
attribute vec3 position;
......
#version 120
uniform sampler2D texture0;
uniform vec4 color;
uniform highp vec4 color;
varying vec2 frag_texcoord0;
varying highp vec2 frag_texcoord0;
void main()
{
......
#version 120
uniform mat4 matrix;
attribute vec2 texcoord0;
......
#version 120
uniform sampler2D texture0;
uniform sampler2D texture1;
varying vec2 frag_texcoord0;
varying vec2 frag_texcoord1;
varying highp vec2 frag_texcoord0;
varying highp vec2 frag_texcoord1;
void main()
{
......
#version 120
uniform mat4 matrix;
attribute vec2 texcoord1;
......
#version 130
uniform highp vec4 color;
uniform vec4 color;
out vec4 out_color;
out highp vec4 out_color;
void main()
{
......
#version 130
uniform sampler2D texture0;
uniform vec4 color;
uniform highp vec4 color;
in vec2 frag_texcoord0;
in highp vec2 frag_texcoord0;
out vec4 out_color;
out highp vec4 out_color;
void main()
{
......
#version 130
uniform sampler2D texture0;
uniform sampler2D texture1;
in vec2 frag_texcoord0;
in vec2 frag_texcoord1;
in highp vec2 frag_texcoord0;
in highp vec2 frag_texcoord1;
out vec4 out_color;
out highp vec4 out_color;
void main()
{
......
data/tango/24x24/image-x-generic.png

1.33 KB | W: | H:

data/tango/24x24/image-x-generic.png

1.33 KB | W: | H:

data/tango/24x24/image-x-generic.png
data/tango/24x24/image-x-generic.png
data/tango/24x24/image-x-generic.png
data/tango/24x24/image-x-generic.png
  • 2-up
  • Swipe
  • Onion skin
data/tango/24x24/list-add.png

528 Bytes | W: | H:

data/tango/24x24/list-add.png

528 Bytes | W: | H:

data/tango/24x24/list-add.png
data/tango/24x24/list-add.png
data/tango/24x24/list-add.png
data/tango/24x24/list-add.png
  • 2-up
  • Swipe
  • Onion skin
data/tango/24x24/list-remove.png

412 Bytes | W: | H:

data/tango/24x24/list-remove.png

412 Bytes | W: | H:

data/tango/24x24/list-remove.png
data/tango/24x24/list-remove.png
data/tango/24x24/list-remove.png
data/tango/24x24/list-remove.png
  • 2-up
  • Swipe
  • Onion skin
data/tango/32x32/image-x-generic.png

1.33 KB | W: | H:

data/tango/32x32/image-x-generic.png

1.14 KB | W: | H:

data/tango/32x32/image-x-generic.png
data/tango/32x32/image-x-generic.png
data/tango/32x32/image-x-generic.png
data/tango/32x32/image-x-generic.png
  • 2-up
  • Swipe
  • Onion skin
data/tango/48x48/image-x-generic.png

2.35 KB | W: | H:

data/tango/48x48/image-x-generic.png

8.59 KB | W: | H:

data/tango/48x48/image-x-generic.png
data/tango/48x48/image-x-generic.png
data/tango/48x48/image-x-generic.png
data/tango/48x48/image-x-generic.png
  • 2-up
  • Swipe
  • Onion skin
data/tango/48x48/list-add.png

1.6 KB | W: | H:

data/tango/48x48/list-add.png

1.6 KB | W: | H:

data/tango/48x48/list-add.png
data/tango/48x48/list-add.png
data/tango/48x48/list-add.png
data/tango/48x48/list-add.png
  • 2-up
  • Swipe
  • Onion skin
data/tango/48x48/list-remove.png

1.24 KB | W: | H:

data/tango/48x48/list-remove.png

1.24 KB | W: | H:

data/tango/48x48/list-remove.png
data/tango/48x48/list-remove.png
data/tango/48x48/list-remove.png
data/tango/48x48/list-remove.png
  • 2-up
  • Swipe
  • Onion skin
data/tango/64x64/image-x-generic.png

3.97 KB | W: | H:

data/tango/64x64/image-x-generic.png

9.97 KB | W: | H:

data/tango/64x64/image-x-generic.png
data/tango/64x64/image-x-generic.png
data/tango/64x64/image-x-generic.png
data/tango/64x64/image-x-generic.png
  • 2-up
  • Swipe
  • Onion skin
data/tango/64x64/list-add.png

2.31 KB | W: | H:

data/tango/64x64/list-add.png

2.31 KB | W: | H:

data/tango/64x64/list-add.png
data/tango/64x64/list-add.png
data/tango/64x64/list-add.png
data/tango/64x64/list-add.png
  • 2-up
  • Swipe
  • Onion skin
data/tango/64x64/list-remove.png

1.46 KB | W: | H:

data/tango/64x64/list-remove.png

1.46 KB | W: | H:

data/tango/64x64/list-remove.png
data/tango/64x64/list-remove.png
data/tango/64x64/list-remove.png
data/tango/64x64/list-remove.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -98,6 +98,20 @@
</content_rating>
<releases>
<release version="2.1.4" date="2019-03-25">
<description>
<ul>
<li>FIXED: Automatic high DPI support</li>
<li>FIXED: Unsigned integer conversion warnings in graphics layer</li>
<li>FIXED: Could not add images with Qt 5.12</li>
<li>FIXED: Window icon didn't work in Wayland</li>
<li>Added support for OpenGL ES</li>
<li>Improved loading locales</li>
<li>Require Qt 5.9</li>
<li>Translation updates: Polish</li>
</ul>
</description>
</release>
<release version="2.1.3" date="2018-05-29">
<description>
<ul>
......
......@@ -4,12 +4,16 @@ and mac_deploy.sh and repacking sources withe this script:
#! /bin/bash
#! /bin/bash
tar -xvf tetzle-2.1.3.tar.gz
mv tetzle-2.1.3 tetzle-2.1.3+dfsg1
rm -f tetzle-2.1.3+dfsg1/mac_deploy.sh
rm -r tetzle-2.1.3+dfsg1/tools
rm -r tetzle-2.1.3+dfsg1/windows
tar -zcvf tetzle_2.1.3+dfsg1.orig.tar.gz tetzle-2.1.3+dfsg1
tar -xvf tetzle-2.1.4.tar.gz
mv tetzle-2.1.4 tetzle-2.1.4+dfsg1
rm -f tetzle-2.1.4+dfsg1/mac_deploy.sh
rm -r tetzle-2.1.4+dfsg1/tools
rm -r tetzle-2.1.4+dfsg1/windows
tar -zcvf tetzle_2.1.4+dfsg1.orig.tar.gz tetzle-2.1.4+dfsg1
-- Innocent De Marchi <tangram.peces@gmail.com> Mon, 11 Jun 2018 18:24:12 +0100
Updated version numbers above
-- Jonathan Carter <jcc@debian.org> Thu Apr 4 14:00:08 SAST 2019 +0200
tetzle (2.1.4+dfsg1-1) unstable; urgency=medium
* New upstream release
* Update metadata license information
* Remove no longer needed debian/docs
-- Jonathan Carter <jcc@debian.org> Thu, 04 Apr 2019 13:57:56 +0200
tetzle (2.1.3+dfsg1-2) unstable; urgency=medium
* Adopting package (Closes: #922886)
......
......@@ -7,7 +7,7 @@ Files-excluded: mac_deploy.sh
/windows
Files: *
Copyright: 2008-2018 Graeme Gott
Copyright: 2008-2019 Graeme Gott
License: GPL-3
Files: debian/*
......@@ -19,6 +19,10 @@ Copyright: 2009, 2011-2013 Bart Martens <bartm@debian.org>
2017-2018 Innocent De Marchi <tangram.peces@gmail.com>
License: GPL-3
Files: data/unix/tetzle.appdata.xml
Copyright: 2018 Graeme Gott
License: GPL-3+
License: GPL-3
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
......
......@@ -2,8 +2,8 @@
<!-- Copyright 2008-2017 Graeme Gott <graeme@gottcode.org> -->
<component type="desktop">
<id>gnome-power-statistics.desktop</id>
<metadata_license>GPL-3.0+</metadata_license>
<project_license>GPL-3.0+</project_license>
<metadata_license>GPL-3.0</metadata_license>
<project_license>GPL-3.0</project_license>
<name>Peces</name>
<summary>Jigsaw puzzle game</summary>
<description>
......@@ -16,4 +16,4 @@
<url type="homepage">https://gottcode.org/tetzle/</url>
<update_contact>graeme@gottcode.org</update_contact>
<project_group>KDE</project_group>
</component>
\ No newline at end of file
</component>
IDI_ICON1 ICON DISCARDABLE "tetzle.ico"
......@@ -83,7 +83,7 @@ namespace
//-----------------------------------------------------------------------------
Board::Board(QWidget* parent) :
GLWidget(parent),
QOpenGLWidget(parent),
m_id(0),
m_load_bevels(true),
m_has_bevels(true),
......@@ -776,7 +776,7 @@ void Board::keyPressEvent(QKeyEvent* event)
m_action_key = event->key();
}
}
GLWidget::keyPressEvent(event);
QOpenGLWidget::keyPressEvent(event);
}
//-----------------------------------------------------------------------------
......@@ -786,7 +786,7 @@ void Board::keyReleaseEvent(QKeyEvent* event)
if (!event->isAutoRepeat()) {
m_action_key = 0;
}
GLWidget::keyReleaseEvent(event);
QOpenGLWidget::keyReleaseEvent(event);
}
//-----------------------------------------------------------------------------
......@@ -804,7 +804,7 @@ void Board::mousePressEvent(QMouseEvent* event)
m_select_pos = event->pos();
}
GLWidget::mousePressEvent(event);
QOpenGLWidget::mousePressEvent(event);
}
//-----------------------------------------------------------------------------
......@@ -833,7 +833,7 @@ void Board::mouseReleaseEvent(QMouseEvent* event)
}
m_action_button = Qt::NoButton;
GLWidget::mouseReleaseEvent(event);
QOpenGLWidget::mouseReleaseEvent(event);
}
//-----------------------------------------------------------------------------
......@@ -912,7 +912,7 @@ void Board::wheelEvent(QWheelEvent* event)
zoomOut();
}
GLWidget::wheelEvent(event);
QOpenGLWidget::wheelEvent(event);
}
//-----------------------------------------------------------------------------
......
......@@ -28,18 +28,12 @@ class Piece;
class Tile;
#include <QHash>
#if (QT_VERSION >= QT_VERSION_CHECK(5,4,0))
#include <QOpenGLWidget>
typedef QOpenGLWidget GLWidget;
#else
#include <QGLWidget>
typedef QGLWidget GLWidget;
#endif
class QOpenGLTexture;
#include <random>
class Board : public GLWidget
class Board : public QOpenGLWidget
{
Q_OBJECT
......@@ -123,10 +117,6 @@ private:
void finishGame();
void cleanup();
#if (QT_VERSION < QT_VERSION_CHECK(5,6,0))
qreal devicePixelRatioF() const { return devicePixelRatio(); }
#endif
private:
int m_id;
bool m_load_bevels;
......
This diff is collapsed.
/***********************************************************************
*
* Copyright (C) 2011, 2012, 2016 Graeme Gott <graeme@gottcode.org>
* Copyright (C) 2011, 2012, 2016, 2018 Graeme Gott <graeme@gottcode.org>
*
* 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
......@@ -117,7 +117,7 @@ extern GraphicsLayer* graphics_layer;
class GraphicsLayer21 : public GraphicsLayer, protected QOpenGLFunctions
{
public:
GraphicsLayer21(QOpenGLVertexArrayObject* vertex_array = nullptr);
GraphicsLayer21(QOpenGLVertexArrayObject* vertex_array, const QByteArray& glsl, const QString& shader);
~GraphicsLayer21();
virtual void bindTexture(unsigned int unit, GLuint texture);
......@@ -134,7 +134,7 @@ public:
virtual void uploadData();
private:
QOpenGLShaderProgram* loadProgram(unsigned int index);
QOpenGLShaderProgram* loadProgram(unsigned int index, const QByteArray& glsl, const QString& shader);
private:
enum Attribute
......@@ -158,6 +158,7 @@ private:
};
#ifndef QT_OPENGL_ES_2
// Fixed function pipeline
class GraphicsLayer11 : public GraphicsLayer, protected QOpenGLFunctions_1_1
{
......@@ -212,5 +213,6 @@ public:
private:
QOpenGLBuffer* m_vertex_buffer;
};
#endif
#endif
/***********************************************************************
*
* Copyright (C) 2010, 2011, 2012, 2014, 2015, 2016, 2018 Graeme Gott <graeme@gottcode.org>
* Copyright (C) 2010, 2011, 2012, 2014, 2015, 2016, 2018, 2019 Graeme Gott <graeme@gottcode.org>
*
* 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
......@@ -98,50 +98,38 @@ void LocaleDialog::loadTranslator(const QString& name, const QStringList& datadi
// Find current locale
m_current = QSettings().value("Locale/Language").toString();
QString current = !m_current.isEmpty() ? m_current : QLocale::system().name();
QStringList translations = findTranslations();
if (!translations.contains(m_appname + current)) {
current = current.left(2);
if (!translations.contains(m_appname + current)) {
current.clear();
}
}
if (!current.isEmpty()) {
QLocale::setDefault(current);
} else {
current = "en";
if (!m_current.isEmpty()) {
QLocale::setDefault(m_current);
}
const QLocale locale;
// Load translators
static QTranslator qt_translator;
qt_translator.load("qt_" + current, QLibraryInfo::location(QLibraryInfo::TranslationsPath));
QCoreApplication::installTranslator(&qt_translator);
static QTranslator translator;
if (translator.load(locale, m_appname, "", m_path)) {
QCoreApplication::installTranslator(&translator);
static QTranslator qtbase_translator;
if (translations.contains("qtbase_" + current) || translations.contains("qtbase_" + current.left(2))) {
qtbase_translator.load("qtbase_" + current, m_path);
} else {
qtbase_translator.load("qtbase_" + current, QLibraryInfo::location(QLibraryInfo::TranslationsPath));
}
QCoreApplication::installTranslator(&qtbase_translator);
const QString path = QLibraryInfo::location(QLibraryInfo::TranslationsPath);
static QTranslator translator;
translator.load(m_appname + current, m_path);
QCoreApplication::installTranslator(&translator);
static QTranslator qtbase_translator;
if (qtbase_translator.load(locale, "qtbase", "_", m_path) || qtbase_translator.load(locale, "qtbase", "_", path)) {
QCoreApplication::installTranslator(&qtbase_translator);
}
// Work around bug in Qt 5 where text direction is not loaded
QGuiApplication::setLayoutDirection(QLocale(current).textDirection());
static QTranslator qt_translator;
if (qt_translator.load(locale, "qt", "_", m_path) || qt_translator.load(locale, "qt", "_", path)) {
QCoreApplication::installTranslator(&qt_translator);
}
}
}
//-----------------------------------------------------------------------------
QString LocaleDialog::languageName(const QString& language)
{
QString lang_code = language.left(5);
QLocale locale(lang_code);
QString name;
if (lang_code.length() > 2) {
if (locale.name() == lang_code) {
const QLocale locale(language);
if (language.contains('_')) {
if (locale.name() == language) {
name = locale.nativeLanguageName() + " (" + locale.nativeCountryName() + ")";
} else {
name = locale.nativeLanguageName() + " (" + language + ")";
......
/***********************************************************************
*
* Copyright (C) 2008, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2018 Graeme Gott <graeme@gottcode.org>
* Copyright (C) 2008, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2018, 2019 Graeme Gott <graeme@gottcode.org>
*
* 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
......@@ -59,6 +59,7 @@ Application::Application(int& argc, char** argv)
setOrganizationName("GottCode");
#if !defined(Q_OS_WIN) && !defined(Q_OS_MAC)
setWindowIcon(QIcon::fromTheme("tetzle", QIcon(":/tetzle.png")));
setDesktopFileName("tetzle");
#endif
setAttribute(Qt::AA_UseHighDpiPixmaps, true);
......@@ -103,6 +104,14 @@ bool Application::event(QEvent* e)
int main(int argc, char** argv)
{
#if !defined(Q_OS_MAC)
if (!qEnvironmentVariableIsSet("QT_DEVICE_PIXEL_RATIO")
&& !qEnvironmentVariableIsSet("QT_AUTO_SCREEN_SCALE_FACTOR")
&& !qEnvironmentVariableIsSet("QT_SCALE_FACTOR")
&& !qEnvironmentVariableIsSet("QT_SCREEN_SCALE_FACTORS")) {
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
}
#endif
Application app(argc, argv);
// Load application language
......
......@@ -93,11 +93,7 @@ void Message::setText(const QString& text)
m_size = QSize(powerOfTwo(size.width()), powerOfTwo(size.height()));
// Create texture
#if (QT_VERSION >= QT_VERSION_CHECK(5,6,0))
const qreal pixelratio = m_parent->devicePixelRatioF();
#else
const qreal pixelratio = m_parent->devicePixelRatio();
#endif
QImage image(m_size * pixelratio, QImage::Format_ARGB32);
image.setDevicePixelRatio(pixelratio);
image.fill(Qt::transparent);
......
/***********************************************************************
*
* Copyright (C) 2008, 2010, 2011, 2014, 2016, 2018 Graeme Gott <graeme@gottcode.org>
* Copyright (C) 2008, 2010, 2011, 2014, 2016, 2018, 2019 Graeme Gott <graeme@gottcode.org>
*
* 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
......@@ -203,10 +203,7 @@ void NewGameTab::addImages(const QStringList& images)
break;
}
QString image = images.at(i);
if (QDir::match(AddImage::supportedFormats(), image)) {
addImage(image);
}
addImage(images.at(i));
QApplication::processEvents();
}
......@@ -442,6 +439,11 @@ void NewGameTab::updateTagsStrings()
void NewGameTab::addImage(const QString& image)
{
QImageReader reader(image);
if (!reader.canRead()) {
return;
}
// Find image ID
QString filename;
int image_id = 0;
......@@ -473,7 +475,6 @@ void NewGameTab::addImage(const QString& image)
m_image_tags->addImage(filename);
// Copy and rotate image
QImageReader reader(image);
reader.setAutoTransform(true);
if (reader.transformation() == QImageIOHandler::TransformationNone) {
QFile::copy(image, Path::image(filename));
......@@ -506,11 +507,7 @@ void NewGameTab::addImage(const QString& image)
QListWidgetItem* NewGameTab::createItem(const QString& image, const QSettings& details)
{
#if (QT_VERSION >= QT_VERSION_CHECK(5,6,0))
const qreal pixelratio = devicePixelRatioF();
#else
const qreal pixelratio = devicePixelRatio();
#endif
QListWidgetItem* item = ThumbnailLoader::createItem(Path::image(image), details.value(image + "/Name", tr("Untitled")).toString(), m_images, pixelratio);
item->setData(ImageRole, image);
item->setData(NameRole, item->text());
......
......@@ -58,11 +58,7 @@ OpenGameTab::OpenGameTab(int current_id, QDialog* parent)
m_games->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
m_games->setItemDelegate(new ThumbnailDelegate(m_games));
#if (QT_VERSION >= QT_VERSION_CHECK(5,6,0))
const qreal pixelratio = devicePixelRatioF();
#else
const qreal pixelratio = devicePixelRatio();
#endif
QSettings details(Path::image("details"), QSettings::IniFormat);
QXmlStreamReader xml;
QXmlStreamAttributes attributes;
......
/***********************************************************************
*
* Copyright (C) 2008, 2010, 2011, 2014, 2015, 2016, 2017, 2018 Graeme Gott <graeme@gottcode.org>
* Copyright (C) 2008, 2010, 2011, 2014, 2015, 2016, 2017, 2018, 2019 Graeme Gott <graeme@gottcode.org>
*
* 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
......@@ -282,7 +282,7 @@ void Window::showAbout()
QMessageBox::about(this, tr("About Tetzle"), QString("<p align='center'><big><b>%1 %2</b></big><br/>%3<br/><small>%4<br/>%5</small></p>")
.arg(tr("Tetzle"), QCoreApplication::applicationVersion(),
tr("A jigsaw puzzle with tetrominoes for pieces"),
tr("Copyright &copy; 2008-%1 Graeme Gott").arg("2018"),
tr("Copyright &copy; 2008-%1 Graeme Gott").arg("2019"),
tr("Released under the <a href=%1>GPL 3</a> license").arg("\"http://www.gnu.org/licenses/gpl.html\""))
);
}
......
lessThan(QT_MAJOR_VERSION, 5) {
error("Tetzle requires Qt 5.2 or greater")