Accepting request 923556 from home:alois:branches:KDE:Extra
- Update to version 0.7.1 * Fixed theme/icons/look outside KDE environment * Fixed various bugs and rare crashes * Fixed Undo stack and improved text editing undo * Improved/replaced Video player(s) (performance, Wayland support, OpenGL/FFmpeg) * Improved Waveform performance * Improved LinesWidget/Model performance * Improved Wayland support * Improved open/save file dialogs to use native dialogs * Improved text charsets/encodings/end-of-line selection, detection and handling * Improved VobSub support * Improved inline editor to support text styles * Improved subtitle style rendering * Improved character/sec support and added coloring * Improvide command line - ability to open all subtitle/media files * Added Pause/Duration columns to list view * Removed invalid subpicture/x-pgs mime * Updated/added many translations - thanks to KDE community - Drop 0001-Use-a-local-qthelper.cpp-copy.patch and qthelper.hpp (no longer necessary) - Add .sig file and subtitlecomposer.keyring as sources - Spec cleanup OBS-URL: https://build.opensuse.org/request/show/923556 OBS-URL: https://build.opensuse.org/package/show/KDE:Extra/subtitlecomposer?expand=0&rev=27
This commit is contained in:
parent
9b7dcc3c1f
commit
95d52d184d
@ -1,26 +0,0 @@
|
|||||||
From b870cecd8070974e85db99b082e9bb0e9a903fe0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Christophe Giboudeaux <christophe@krop.fr>
|
|
||||||
Date: Wed, 11 Mar 2020 11:28:38 +0100
|
|
||||||
Subject: [PATCH] Use a local qthelper.cpp copy
|
|
||||||
|
|
||||||
mpv >= 0.33 no longer provides this header and suggests copying this header locally.
|
|
||||||
---
|
|
||||||
src/videoplayerplugins/mpv/mpvbackend.h | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/src/videoplayerplugins/mpv/mpvbackend.h b/src/videoplayerplugins/mpv/mpvbackend.h
|
|
||||||
index d0edf2e..036ac5e 100644
|
|
||||||
--- a/src/videoplayerplugins/mpv/mpvbackend.h
|
|
||||||
+++ b/src/videoplayerplugins/mpv/mpvbackend.h
|
|
||||||
@@ -23,7 +23,7 @@
|
|
||||||
|
|
||||||
#include "videoplayer/playerbackend.h"
|
|
||||||
|
|
||||||
-#include <mpv/qthelper.hpp>
|
|
||||||
+#include "qthelper.hpp"
|
|
||||||
|
|
||||||
#include <QWidget>
|
|
||||||
#include <QString>
|
|
||||||
--
|
|
||||||
2.25.1
|
|
||||||
|
|
386
qthelper.hpp
386
qthelper.hpp
@ -1,386 +0,0 @@
|
|||||||
/* Copyright (C) 2017 the mpv developers
|
|
||||||
*
|
|
||||||
* Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
* purpose with or without fee is hereby granted, provided that the above
|
|
||||||
* copyright notice and this permission notice appear in all copies.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef MPV_CLIENT_API_QTHELPER_H_
|
|
||||||
#define MPV_CLIENT_API_QTHELPER_H_
|
|
||||||
|
|
||||||
#include <mpv/client.h>
|
|
||||||
|
|
||||||
#if !MPV_ENABLE_DEPRECATED
|
|
||||||
#error "This helper is deprecated. Copy it into your project instead."
|
|
||||||
#else
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Note: these helpers are provided for convenience for C++/Qt applications.
|
|
||||||
* This is based on the public API in client.h, and it does not encode any
|
|
||||||
* knowledge that is not known or guaranteed outside of the C client API. You
|
|
||||||
* can even copy and modify this code as you like, or implement similar things
|
|
||||||
* for other languages.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include <QVariant>
|
|
||||||
#include <QString>
|
|
||||||
#include <QList>
|
|
||||||
#include <QHash>
|
|
||||||
#include <QSharedPointer>
|
|
||||||
#include <QMetaType>
|
|
||||||
|
|
||||||
namespace mpv {
|
|
||||||
namespace qt {
|
|
||||||
|
|
||||||
// Wrapper around mpv_handle. Does refcounting under the hood.
|
|
||||||
class Handle
|
|
||||||
{
|
|
||||||
struct container {
|
|
||||||
container(mpv_handle *h) : mpv(h) {}
|
|
||||||
~container() { mpv_terminate_destroy(mpv); }
|
|
||||||
mpv_handle *mpv;
|
|
||||||
};
|
|
||||||
QSharedPointer<container> sptr;
|
|
||||||
public:
|
|
||||||
// Construct a new Handle from a raw mpv_handle with refcount 1. If the
|
|
||||||
// last Handle goes out of scope, the mpv_handle will be destroyed with
|
|
||||||
// mpv_terminate_destroy().
|
|
||||||
// Never destroy the mpv_handle manually when using this wrapper. You
|
|
||||||
// will create dangling pointers. Just let the wrapper take care of
|
|
||||||
// destroying the mpv_handle.
|
|
||||||
// Never create multiple wrappers from the same raw mpv_handle; copy the
|
|
||||||
// wrapper instead (that's what it's for).
|
|
||||||
static Handle FromRawHandle(mpv_handle *handle) {
|
|
||||||
Handle h;
|
|
||||||
h.sptr = QSharedPointer<container>(new container(handle));
|
|
||||||
return h;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return the raw handle; for use with the libmpv C API.
|
|
||||||
operator mpv_handle*() const { return sptr ? (*sptr).mpv : 0; }
|
|
||||||
};
|
|
||||||
|
|
||||||
static inline QVariant node_to_variant(const mpv_node *node)
|
|
||||||
{
|
|
||||||
switch (node->format) {
|
|
||||||
case MPV_FORMAT_STRING:
|
|
||||||
return QVariant(QString::fromUtf8(node->u.string));
|
|
||||||
case MPV_FORMAT_FLAG:
|
|
||||||
return QVariant(static_cast<bool>(node->u.flag));
|
|
||||||
case MPV_FORMAT_INT64:
|
|
||||||
return QVariant(static_cast<qlonglong>(node->u.int64));
|
|
||||||
case MPV_FORMAT_DOUBLE:
|
|
||||||
return QVariant(node->u.double_);
|
|
||||||
case MPV_FORMAT_NODE_ARRAY: {
|
|
||||||
mpv_node_list *list = node->u.list;
|
|
||||||
QVariantList qlist;
|
|
||||||
for (int n = 0; n < list->num; n++)
|
|
||||||
qlist.append(node_to_variant(&list->values[n]));
|
|
||||||
return QVariant(qlist);
|
|
||||||
}
|
|
||||||
case MPV_FORMAT_NODE_MAP: {
|
|
||||||
mpv_node_list *list = node->u.list;
|
|
||||||
QVariantMap qmap;
|
|
||||||
for (int n = 0; n < list->num; n++) {
|
|
||||||
qmap.insert(QString::fromUtf8(list->keys[n]),
|
|
||||||
node_to_variant(&list->values[n]));
|
|
||||||
}
|
|
||||||
return QVariant(qmap);
|
|
||||||
}
|
|
||||||
default: // MPV_FORMAT_NONE, unknown values (e.g. future extensions)
|
|
||||||
return QVariant();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct node_builder {
|
|
||||||
node_builder(const QVariant& v) {
|
|
||||||
set(&node_, v);
|
|
||||||
}
|
|
||||||
~node_builder() {
|
|
||||||
free_node(&node_);
|
|
||||||
}
|
|
||||||
mpv_node *node() { return &node_; }
|
|
||||||
private:
|
|
||||||
Q_DISABLE_COPY(node_builder)
|
|
||||||
mpv_node node_;
|
|
||||||
mpv_node_list *create_list(mpv_node *dst, bool is_map, int num) {
|
|
||||||
dst->format = is_map ? MPV_FORMAT_NODE_MAP : MPV_FORMAT_NODE_ARRAY;
|
|
||||||
mpv_node_list *list = new mpv_node_list();
|
|
||||||
dst->u.list = list;
|
|
||||||
if (!list)
|
|
||||||
goto err;
|
|
||||||
list->values = new mpv_node[num]();
|
|
||||||
if (!list->values)
|
|
||||||
goto err;
|
|
||||||
if (is_map) {
|
|
||||||
list->keys = new char*[num]();
|
|
||||||
if (!list->keys)
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
return list;
|
|
||||||
err:
|
|
||||||
free_node(dst);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
char *dup_qstring(const QString &s) {
|
|
||||||
QByteArray b = s.toUtf8();
|
|
||||||
char *r = new char[b.size() + 1];
|
|
||||||
if (r)
|
|
||||||
std::memcpy(r, b.data(), b.size() + 1);
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
bool test_type(const QVariant &v, QMetaType::Type t) {
|
|
||||||
// The Qt docs say: "Although this function is declared as returning
|
|
||||||
// "QVariant::Type(obsolete), the return value should be interpreted
|
|
||||||
// as QMetaType::Type."
|
|
||||||
// So a cast really seems to be needed to avoid warnings (urgh).
|
|
||||||
return static_cast<int>(v.type()) == static_cast<int>(t);
|
|
||||||
}
|
|
||||||
void set(mpv_node *dst, const QVariant &src) {
|
|
||||||
if (test_type(src, QMetaType::QString)) {
|
|
||||||
dst->format = MPV_FORMAT_STRING;
|
|
||||||
dst->u.string = dup_qstring(src.toString());
|
|
||||||
if (!dst->u.string)
|
|
||||||
goto fail;
|
|
||||||
} else if (test_type(src, QMetaType::Bool)) {
|
|
||||||
dst->format = MPV_FORMAT_FLAG;
|
|
||||||
dst->u.flag = src.toBool() ? 1 : 0;
|
|
||||||
} else if (test_type(src, QMetaType::Int) ||
|
|
||||||
test_type(src, QMetaType::LongLong) ||
|
|
||||||
test_type(src, QMetaType::UInt) ||
|
|
||||||
test_type(src, QMetaType::ULongLong))
|
|
||||||
{
|
|
||||||
dst->format = MPV_FORMAT_INT64;
|
|
||||||
dst->u.int64 = src.toLongLong();
|
|
||||||
} else if (test_type(src, QMetaType::Double)) {
|
|
||||||
dst->format = MPV_FORMAT_DOUBLE;
|
|
||||||
dst->u.double_ = src.toDouble();
|
|
||||||
} else if (src.canConvert<QVariantList>()) {
|
|
||||||
QVariantList qlist = src.toList();
|
|
||||||
mpv_node_list *list = create_list(dst, false, qlist.size());
|
|
||||||
if (!list)
|
|
||||||
goto fail;
|
|
||||||
list->num = qlist.size();
|
|
||||||
for (int n = 0; n < qlist.size(); n++)
|
|
||||||
set(&list->values[n], qlist[n]);
|
|
||||||
} else if (src.canConvert<QVariantMap>()) {
|
|
||||||
QVariantMap qmap = src.toMap();
|
|
||||||
mpv_node_list *list = create_list(dst, true, qmap.size());
|
|
||||||
if (!list)
|
|
||||||
goto fail;
|
|
||||||
list->num = qmap.size();
|
|
||||||
for (int n = 0; n < qmap.size(); n++) {
|
|
||||||
list->keys[n] = dup_qstring(qmap.keys()[n]);
|
|
||||||
if (!list->keys[n]) {
|
|
||||||
free_node(dst);
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
set(&list->values[n], qmap.values()[n]);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
fail:
|
|
||||||
dst->format = MPV_FORMAT_NONE;
|
|
||||||
}
|
|
||||||
void free_node(mpv_node *dst) {
|
|
||||||
switch (dst->format) {
|
|
||||||
case MPV_FORMAT_STRING:
|
|
||||||
delete[] dst->u.string;
|
|
||||||
break;
|
|
||||||
case MPV_FORMAT_NODE_ARRAY:
|
|
||||||
case MPV_FORMAT_NODE_MAP: {
|
|
||||||
mpv_node_list *list = dst->u.list;
|
|
||||||
if (list) {
|
|
||||||
for (int n = 0; n < list->num; n++) {
|
|
||||||
if (list->keys)
|
|
||||||
delete[] list->keys[n];
|
|
||||||
if (list->values)
|
|
||||||
free_node(&list->values[n]);
|
|
||||||
}
|
|
||||||
delete[] list->keys;
|
|
||||||
delete[] list->values;
|
|
||||||
}
|
|
||||||
delete list;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default: ;
|
|
||||||
}
|
|
||||||
dst->format = MPV_FORMAT_NONE;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* RAII wrapper that calls mpv_free_node_contents() on the pointer.
|
|
||||||
*/
|
|
||||||
struct node_autofree {
|
|
||||||
mpv_node *ptr;
|
|
||||||
node_autofree(mpv_node *a_ptr) : ptr(a_ptr) {}
|
|
||||||
~node_autofree() { mpv_free_node_contents(ptr); }
|
|
||||||
};
|
|
||||||
|
|
||||||
#if MPV_ENABLE_DEPRECATED
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return the given property as mpv_node converted to QVariant, or QVariant()
|
|
||||||
* on error.
|
|
||||||
*
|
|
||||||
* @deprecated use get_property() instead
|
|
||||||
*
|
|
||||||
* @param name the property name
|
|
||||||
*/
|
|
||||||
static inline QVariant get_property_variant(mpv_handle *ctx, const QString &name)
|
|
||||||
{
|
|
||||||
mpv_node node;
|
|
||||||
if (mpv_get_property(ctx, name.toUtf8().data(), MPV_FORMAT_NODE, &node) < 0)
|
|
||||||
return QVariant();
|
|
||||||
node_autofree f(&node);
|
|
||||||
return node_to_variant(&node);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the given property as mpv_node converted from the QVariant argument.
|
|
||||||
|
|
||||||
* @deprecated use set_property() instead
|
|
||||||
*/
|
|
||||||
static inline int set_property_variant(mpv_handle *ctx, const QString &name,
|
|
||||||
const QVariant &v)
|
|
||||||
{
|
|
||||||
node_builder node(v);
|
|
||||||
return mpv_set_property(ctx, name.toUtf8().data(), MPV_FORMAT_NODE, node.node());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the given option as mpv_node converted from the QVariant argument.
|
|
||||||
*
|
|
||||||
* @deprecated use set_property() instead
|
|
||||||
*/
|
|
||||||
static inline int set_option_variant(mpv_handle *ctx, const QString &name,
|
|
||||||
const QVariant &v)
|
|
||||||
{
|
|
||||||
node_builder node(v);
|
|
||||||
return mpv_set_option(ctx, name.toUtf8().data(), MPV_FORMAT_NODE, node.node());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* mpv_command_node() equivalent. Returns QVariant() on error (and
|
|
||||||
* unfortunately, the same on success).
|
|
||||||
*
|
|
||||||
* @deprecated use command() instead
|
|
||||||
*/
|
|
||||||
static inline QVariant command_variant(mpv_handle *ctx, const QVariant &args)
|
|
||||||
{
|
|
||||||
node_builder node(args);
|
|
||||||
mpv_node res;
|
|
||||||
if (mpv_command_node(ctx, node.node(), &res) < 0)
|
|
||||||
return QVariant();
|
|
||||||
node_autofree f(&res);
|
|
||||||
return node_to_variant(&res);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is used to return error codes wrapped in QVariant for functions which
|
|
||||||
* return QVariant.
|
|
||||||
*
|
|
||||||
* You can use get_error() or is_error() to extract the error status from a
|
|
||||||
* QVariant value.
|
|
||||||
*/
|
|
||||||
struct ErrorReturn
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* enum mpv_error value (or a value outside of it if ABI was extended)
|
|
||||||
*/
|
|
||||||
int error;
|
|
||||||
|
|
||||||
ErrorReturn() : error(0) {}
|
|
||||||
explicit ErrorReturn(int err) : error(err) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return the mpv error code packed into a QVariant, or 0 (success) if it's not
|
|
||||||
* an error value.
|
|
||||||
*
|
|
||||||
* @return error code (<0) or success (>=0)
|
|
||||||
*/
|
|
||||||
static inline int get_error(const QVariant &v)
|
|
||||||
{
|
|
||||||
if (!v.canConvert<ErrorReturn>())
|
|
||||||
return 0;
|
|
||||||
return v.value<ErrorReturn>().error;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return whether the QVariant carries a mpv error code.
|
|
||||||
*/
|
|
||||||
static inline bool is_error(const QVariant &v)
|
|
||||||
{
|
|
||||||
return get_error(v) < 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return the given property as mpv_node converted to QVariant, or QVariant()
|
|
||||||
* on error.
|
|
||||||
*
|
|
||||||
* @param name the property name
|
|
||||||
* @return the property value, or an ErrorReturn with the error code
|
|
||||||
*/
|
|
||||||
static inline QVariant get_property(mpv_handle *ctx, const QString &name)
|
|
||||||
{
|
|
||||||
mpv_node node;
|
|
||||||
int err = mpv_get_property(ctx, name.toUtf8().data(), MPV_FORMAT_NODE, &node);
|
|
||||||
if (err < 0)
|
|
||||||
return QVariant::fromValue(ErrorReturn(err));
|
|
||||||
node_autofree f(&node);
|
|
||||||
return node_to_variant(&node);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the given property as mpv_node converted from the QVariant argument.
|
|
||||||
*
|
|
||||||
* @return mpv error code (<0 on error, >= 0 on success)
|
|
||||||
*/
|
|
||||||
static inline int set_property(mpv_handle *ctx, const QString &name,
|
|
||||||
const QVariant &v)
|
|
||||||
{
|
|
||||||
node_builder node(v);
|
|
||||||
return mpv_set_property(ctx, name.toUtf8().data(), MPV_FORMAT_NODE, node.node());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* mpv_command_node() equivalent.
|
|
||||||
*
|
|
||||||
* @param args command arguments, with args[0] being the command name as string
|
|
||||||
* @return the property value, or an ErrorReturn with the error code
|
|
||||||
*/
|
|
||||||
static inline QVariant command(mpv_handle *ctx, const QVariant &args)
|
|
||||||
{
|
|
||||||
node_builder node(args);
|
|
||||||
mpv_node res;
|
|
||||||
int err = mpv_command_node(ctx, node.node(), &res);
|
|
||||||
if (err < 0)
|
|
||||||
return QVariant::fromValue(ErrorReturn(err));
|
|
||||||
node_autofree f(&res);
|
|
||||||
return node_to_variant(&res);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(mpv::qt::ErrorReturn)
|
|
||||||
|
|
||||||
#endif /* else #if MPV_ENABLE_DEPRECATED */
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:90dee806df0ee57f4098d417f62014b4533dbf5598d5535c9da1066536c1ed41
|
|
||||||
size 1649840
|
|
3
subtitlecomposer-0.7.1.tar.xz
Normal file
3
subtitlecomposer-0.7.1.tar.xz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:ef9cb3c0c1fe1f40cf9d8e795859b9b28adf2da3be77a076d46bc28df4cd0255
|
||||||
|
size 636808
|
16
subtitlecomposer-0.7.1.tar.xz.sig
Normal file
16
subtitlecomposer-0.7.1.tar.xz.sig
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQIzBAABCAAdFiEEdveQB6VKS2jxVHko4kGHRu+dmyYFAmFdHngACgkQ4kGHRu+d
|
||||||
|
mybPihAAgwFv4Ksuo6ZgSX4R6N/dd7Bmw94GSd/zjOZQpQ7ELvjd9eFy4ReSTZaY
|
||||||
|
g1KlsG1gJf7D3HSR5eaCfWGhfZ/wS3yIT+eeij8BlGNThdyuPh4eBEeXergM3nBj
|
||||||
|
jgcUBUQ7eoy/wkI99jZlNY8i5ouRiqlVGp93Tq1wtbSqaJ1Xf6+FAX8xa+9SjuLJ
|
||||||
|
p2cHLrqHEb27p5Ae3WC9+Eiaqgj6pLYOPfiut629J1x6Bx0O9qcSQxdqm7FVBDve
|
||||||
|
q0JLDQo3IrBL1mVrp3aWjVdScHGeBp+nL3R9hh7Hor9y5HSYfHD4m1SewCl6chCN
|
||||||
|
73PxFy6BQ10XLcxs34qCtsiSueY0ToS/+yFbC833YSEgymYKXcgeh4Hm2zc59dDe
|
||||||
|
GtEf5J6N94Knbd85AoB1p+/zRF3fv/ec7BlX4l0gJAnpEwOZKbxe5YjrqdylEWb4
|
||||||
|
4ddHtHGRJAWyEAhJMoH7ayDSYCUhtEcuGBgFZqhYIojpJihLeBnsgbPua/54iBYH
|
||||||
|
Z71a5tM6xcOu09beIDgxcsV5aBbiV/mgBaK+CAg4/4kAPYWnTzbM5xJXpEplxjZr
|
||||||
|
l9citFgZzMyAWzA0zl+hMbPTkyt230Unj79NAk1iSNHRlMNIomkgJNWVw0SYFzgE
|
||||||
|
frQ2HVnBYsMACX06MYS9YCyaW/6aGYTnJa8kaJTwbFu016ZbGAA=
|
||||||
|
=FxK6
|
||||||
|
-----END PGP SIGNATURE-----
|
@ -1,3 +1,32 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Oct 5 20:05:25 UTC 2021 - Luigi Baldoni <aloisio@gmx.com>
|
||||||
|
|
||||||
|
- Update to version 0.7.1
|
||||||
|
* Fixed theme/icons/look outside KDE environment
|
||||||
|
* Fixed various bugs and rare crashes
|
||||||
|
* Fixed Undo stack and improved text editing undo
|
||||||
|
* Improved/replaced Video player(s) (performance, Wayland
|
||||||
|
support, OpenGL/FFmpeg)
|
||||||
|
* Improved Waveform performance
|
||||||
|
* Improved LinesWidget/Model performance
|
||||||
|
* Improved Wayland support
|
||||||
|
* Improved open/save file dialogs to use native dialogs
|
||||||
|
* Improved text charsets/encodings/end-of-line selection,
|
||||||
|
detection and handling
|
||||||
|
* Improved VobSub support
|
||||||
|
* Improved inline editor to support text styles
|
||||||
|
* Improved subtitle style rendering
|
||||||
|
* Improved character/sec support and added coloring
|
||||||
|
* Improvide command line - ability to open all subtitle/media
|
||||||
|
files
|
||||||
|
* Added Pause/Duration columns to list view
|
||||||
|
* Removed invalid subpicture/x-pgs mime
|
||||||
|
* Updated/added many translations - thanks to KDE community
|
||||||
|
- Drop 0001-Use-a-local-qthelper.cpp-copy.patch and qthelper.hpp
|
||||||
|
(no longer necessary)
|
||||||
|
- Add .sig file and subtitlecomposer.keyring as sources
|
||||||
|
- Spec cleanup
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Aug 27 16:37:02 UTC 2020 - Christophe Giboudeaux <christophe@krop.fr>
|
Thu Aug 27 16:37:02 UTC 2020 - Christophe Giboudeaux <christophe@krop.fr>
|
||||||
|
|
||||||
|
52
subtitlecomposer.keyring
Normal file
52
subtitlecomposer.keyring
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
wnFHTqh0Ix5Y2oHbqs4xpTQ=
|
||||||
|
=K8XE
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package subtitlecomposer
|
# spec file for package subtitlecomposer
|
||||||
#
|
#
|
||||||
# Copyright (c) 2020 SUSE LLC
|
# Copyright (c) 2021 SUSE LLC
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -17,19 +17,18 @@
|
|||||||
|
|
||||||
|
|
||||||
Name: subtitlecomposer
|
Name: subtitlecomposer
|
||||||
Version: 0.7.0
|
Version: 0.7.1
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: A text-based subtitle editor
|
Summary: A text-based subtitle editor
|
||||||
License: GPL-2.0-or-later
|
License: GPL-2.0-or-later
|
||||||
Group: Productivity/Multimedia/Video/Editors and Convertors
|
Group: Productivity/Multimedia/Video/Editors and Convertors
|
||||||
URL: https://invent.kde.org/multimedia/subtitlecomposer
|
URL: https://invent.kde.org/multimedia/subtitlecomposer
|
||||||
Source0: https://github.com/maxrd2/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz
|
Source0: https://download.kde.org/stable/subtitlecomposer/%{name}-%{version}.tar.xz
|
||||||
# No longer part of mpv >= 0.33
|
Source1: https://download.kde.org/stable/subtitlecomposer/%{name}-%{version}.tar.xz.sig
|
||||||
Source1: https://raw.githubusercontent.com/mpv-player/mpv/v0.32.0/libmpv/qthelper.hpp
|
Source2: subtitlecomposer.keyring
|
||||||
# PATCH-FIX-UPSTREAM use a local qthelper.hpp copy
|
|
||||||
Patch0: 0001-Use-a-local-qthelper.cpp-copy.patch
|
|
||||||
BuildRequires: cmake >= 3.10
|
BuildRequires: cmake >= 3.10
|
||||||
BuildRequires: extra-cmake-modules
|
BuildRequires: extra-cmake-modules
|
||||||
|
BuildRequires: libQt5Widgets-private-headers-devel
|
||||||
BuildRequires: pkgconfig
|
BuildRequires: pkgconfig
|
||||||
BuildRequires: update-desktop-files
|
BuildRequires: update-desktop-files
|
||||||
BuildRequires: cmake(KF5Auth)
|
BuildRequires: cmake(KF5Auth)
|
||||||
@ -44,22 +43,23 @@ BuildRequires: cmake(KF5Sonnet)
|
|||||||
BuildRequires: cmake(KF5TextWidgets)
|
BuildRequires: cmake(KF5TextWidgets)
|
||||||
BuildRequires: cmake(KF5WidgetsAddons)
|
BuildRequires: cmake(KF5WidgetsAddons)
|
||||||
BuildRequires: cmake(KF5XmlGui)
|
BuildRequires: cmake(KF5XmlGui)
|
||||||
BuildRequires: cmake(Qt5Core) >= 5.6
|
BuildRequires: cmake(Qt5Core)
|
||||||
BuildRequires: cmake(Qt5Gui)
|
BuildRequires: cmake(Qt5Gui)
|
||||||
BuildRequires: cmake(Qt5Test)
|
BuildRequires: cmake(Qt5Test)
|
||||||
BuildRequires: cmake(Qt5Widgets)
|
BuildRequires: cmake(Qt5Widgets)
|
||||||
BuildRequires: pkgconfig(gstreamer-1.0)
|
|
||||||
BuildRequires: pkgconfig(gstreamer-plugins-base-1.0)
|
|
||||||
BuildRequires: pkgconfig(icu-i18n)
|
BuildRequires: pkgconfig(icu-i18n)
|
||||||
BuildRequires: pkgconfig(icu-uc)
|
BuildRequires: pkgconfig(icu-uc)
|
||||||
BuildRequires: pkgconfig(libavcodec)
|
BuildRequires: pkgconfig(libavcodec)
|
||||||
BuildRequires: pkgconfig(libavformat)
|
BuildRequires: pkgconfig(libavformat) >= 57.83.100
|
||||||
BuildRequires: pkgconfig(libavutil)
|
BuildRequires: pkgconfig(libavutil)
|
||||||
BuildRequires: pkgconfig(libxine)
|
BuildRequires: pkgconfig(libswscale)
|
||||||
BuildRequires: pkgconfig(libxml-2.0)
|
BuildRequires: pkgconfig(openal)
|
||||||
BuildRequires: pkgconfig(mpv)
|
%if 0%{?suse_version} > 1500
|
||||||
BuildRequires: pkgconfig(phonon4qt5)
|
BuildRequires: pkgconfig(pocketsphinx) >= 5
|
||||||
|
%endif
|
||||||
Recommends: %{name}-lang = %{version}
|
Recommends: %{name}-lang = %{version}
|
||||||
|
# GLES not yet supported, see https://invent.kde.org/multimedia/subtitlecomposer/-/issues/58
|
||||||
|
ExcludeArch: %arm aarch64
|
||||||
|
|
||||||
%description
|
%description
|
||||||
A text-based subtitles editor that supports basic operations. It supports
|
A text-based subtitles editor that supports basic operations. It supports
|
||||||
@ -69,13 +69,7 @@ has speech Recognition using PocketSphinx.
|
|||||||
%lang_package
|
%lang_package
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n SubtitleComposer-%{version}
|
%autosetup -p1
|
||||||
%patch0 -p1
|
|
||||||
|
|
||||||
cp %{SOURCE1} src/videoplayerplugins/mpv/
|
|
||||||
|
|
||||||
# Fix permissions
|
|
||||||
chmod 644 ChangeLog
|
|
||||||
|
|
||||||
# We build kross-interpreters without python support anyway, so we can
|
# We build kross-interpreters without python support anyway, so we can
|
||||||
# remove the python examples to remove an useless dependency on python2
|
# remove the python examples to remove an useless dependency on python2
|
||||||
@ -105,8 +99,6 @@ rm -rf %{buildroot}%{_kf5_appsdir}/%{name}/scripts/api/
|
|||||||
# Point to the correct path of the header files directory (doc)
|
# Point to the correct path of the header files directory (doc)
|
||||||
perl -pi -e "s|'api'|'%{_docdir}/subtitlecomposer/api'|" %{buildroot}%{_kf5_appsdir}/%{name}/scripts/README
|
perl -pi -e "s|'api'|'%{_docdir}/subtitlecomposer/api'|" %{buildroot}%{_kf5_appsdir}/%{name}/scripts/README
|
||||||
|
|
||||||
%suse_update_desktop_file -r %{name} Qt KDE AudioVideo AudioVideoEditing
|
|
||||||
|
|
||||||
%find_lang %{name}
|
%find_lang %{name}
|
||||||
|
|
||||||
%{kf5_post_install}
|
%{kf5_post_install}
|
||||||
@ -117,14 +109,16 @@ perl -pi -e "s|'api'|'%{_docdir}/subtitlecomposer/api'|" %{buildroot}%{_kf5_apps
|
|||||||
%config(noreplace) %{_kf5_configdir}/%{name}rc
|
%config(noreplace) %{_kf5_configdir}/%{name}rc
|
||||||
%dir %{_kf5_iconsdir}/hicolor/256x256
|
%dir %{_kf5_iconsdir}/hicolor/256x256
|
||||||
%dir %{_kf5_iconsdir}/hicolor/256x256/apps
|
%dir %{_kf5_iconsdir}/hicolor/256x256/apps
|
||||||
%{_datadir}/mime/packages/%{name}.xml
|
%{_kf5_applicationsdir}/org.kde.%{name}.desktop
|
||||||
%{_kf5_applicationsdir}/%{name}.desktop
|
|
||||||
%{_kf5_appsdir}/%{name}/
|
%{_kf5_appsdir}/%{name}/
|
||||||
%{_kf5_appstreamdir}/%{name}.desktop.appdata.xml
|
%{_kf5_appstreamdir}/org.kde.%{name}.appdata.xml
|
||||||
%{_kf5_bindir}/%{name}
|
%{_kf5_bindir}/%{name}
|
||||||
%{_kf5_iconsdir}/hicolor/*/*/*
|
%{_kf5_iconsdir}/hicolor/*/*/*
|
||||||
%{_kf5_kxmlguidir}/%{name}/
|
%{_kf5_kxmlguidir}/%{name}/
|
||||||
|
%{_kf5_sharedir}/mime/packages/%{name}.xml
|
||||||
|
%if 0%{?suse_version} > 1500
|
||||||
%{_kf5_libdir}/%{name}/
|
%{_kf5_libdir}/%{name}/
|
||||||
|
%endif
|
||||||
|
|
||||||
%files lang -f %{name}.lang
|
%files lang -f %{name}.lang
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user