Hello community,
here is the log from the commit of package okteta for openSUSE:Factory checked in at 2016-01-10 13:06:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/okteta (Old)
and /work/SRC/openSUSE:Factory/.okteta.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "okteta"
Changes:
--------
--- /work/SRC/openSUSE:Factory/okteta/okteta.changes 2015-11-15 12:43:40.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.okteta.new/okteta.changes 2016-01-10 13:07:09.000000000 +0100
@@ -1,0 +2,9 @@
+Sun Dec 13 13:33:19 UTC 2015 - tittiatcoke@gmail.com
+
+- Update to KDE Applications 15.12.0
+ * KDE Applications 15.12.0
+ * https://www.kde.org/announcements/announce-applications-15.12.0.php
+ * boo#958887
+
+
+-------------------------------------------------------------------
Old:
----
okteta-15.08.3.tar.xz
New:
----
okteta-15.12.0.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ okteta.spec ++++++
--- /var/tmp/diff_new_pack.C2TjEq/_old 2016-01-10 13:07:11.000000000 +0100
+++ /var/tmp/diff_new_pack.C2TjEq/_new 2016-01-10 13:07:11.000000000 +0100
@@ -39,7 +39,7 @@
License: GPL-2.0 and GFDL-1.2
Group: Development/Tools/Other
Url: http://www.kde.org/
-Version: 15.08.3
+Version: 15.12.0
Release: 0
Source0: okteta-%{version}.tar.xz
Obsoletes: %{name}5 < %{version}
++++++ okteta-15.08.3.tar.xz -> okteta-15.12.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okteta-15.08.3/kasten/controllers/test/primitivearraytest.cpp new/okteta-15.12.0/kasten/controllers/test/primitivearraytest.cpp
--- old/okteta-15.08.3/kasten/controllers/test/primitivearraytest.cpp 2015-11-04 21:01:46.000000000 +0100
+++ new/okteta-15.12.0/kasten/controllers/test/primitivearraytest.cpp 2015-12-09 11:13:38.000000000 +0100
@@ -19,6 +19,7 @@
*/
#include <QTest>
+#include
#include <limits>
#include
@@ -35,6 +36,8 @@
Q_OBJECT
private:
+ /** Tests user defined overrides of byteOrder, typeName, and toStringFunc. */
+ template void testReadCustomizedPrimitiveInternal();
template void testReadPrimitiveInternal();
template<PrimitiveDataTypeEnum primType> void testReadPrimitive();
template<typename T> bool compareItems(T first, T second, uint index);
@@ -60,17 +63,22 @@
private:
QScopedArrayPointerOkteta::Byte data;
QScopedPointerOkteta::ByteArrayModel model;
+ QScopedArrayPointerOkteta::Byte endianData;
+ QScopedPointerOkteta::ByteArrayModel endianModel;
};
#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
#define CURRENT_BYTE_ORDER (DataInformation::EndianessLittle)
+#define NON_CURRENT_BYTE_ORDER (DataInformation::EndianessBig)
#elif Q_BYTE_ORDER == Q_BIG_ENDIAN
#define CURRENT_BYTE_ORDER (DataInformation::EndianessBig)
+#define NON_CURRENT_BYTE_ORDER (DataInformation::EndianessLittle)
#else
#error unknown byte order
#endif
static const uint SIZE = 8192;
+static const uint ENDIAN_SIZE = 16;
void PrimitiveArrayTest::initTestCase()
{
@@ -100,6 +108,17 @@
model.reset(new Okteta::ByteArrayModel(copy, SIZE));
model->setAutoDelete(true);
QCOMPARE(model->size(), Okteta::Size(SIZE));
+
+ endianData.reset(new Okteta::Byte[ENDIAN_SIZE]);
+ for (uint i = 0; i < ENDIAN_SIZE; ++i)
+ {
+ endianData[i] = i;
+ }
+ Okteta::Byte* endianCopy = new Okteta::Byte[SIZE];
+ memcpy(endianCopy, endianData.data(), ENDIAN_SIZE);
+ endianModel.reset(new Okteta::ByteArrayModel(endianCopy, ENDIAN_SIZE));
+ endianModel->setAutoDelete(true);
+ QCOMPARE(endianModel->size(), Okteta::Size(ENDIAN_SIZE));
}
template<typename T>
@@ -167,6 +186,64 @@
inline void PrimitiveArrayTest::testReadPrimitive()
{
testReadPrimitiveInternal();
+ testReadCustomizedPrimitiveInternal();
+}
+
+QScriptValue customToStringFunc(QScriptContext *context, QScriptEngine *engine)
+{
+ Q_UNUSED(context);
+ Q_UNUSED(engine);
+ return QStringLiteral("myvalue");
+}
+
+template
+void PrimitiveArrayTest::testReadCustomizedPrimitiveInternal()
+{
+ LoggerWithContext lwc(0, QString());
+ QScriptEngine* engine = ScriptEngineInitializer::newEngine();
+
+ PrimitiveDataInformation* primInfo(PrimitiveFactory::newInstance(QStringLiteral("value"), primType, lwc));
+ primInfo->setByteOrder(NON_CURRENT_BYTE_ORDER);
+ primInfo->setCustomTypeName(QStringLiteral("mytype"));
+ primInfo->setToStringFunction(engine->newFunction(customToStringFunc));
+
+ ArrayDataInformation* dataInf = new ArrayDataInformation(QStringLiteral("values"),
+ endianModel->size() / sizeof(T),
+ primInfo);
+ QScopedPointer<TopLevelDataInformation> top(new TopLevelDataInformation(dataInf, 0, engine));
+
+ QCOMPARE(dataInf->childCount(), uint(ENDIAN_SIZE / sizeof(T)));
+ quint8 bitOffs = 0;
+ qint64 result = dataInf->readData(endianModel.data(), 0, endianModel->size() * 8, &bitOffs);
+ QCOMPARE(Okteta::Size(result), endianModel->size() * 8);
+ T* dataAsT = reinterpret_cast(endianData.data());
+ QVERIFY(!dataInf->mData->isComplex());
+ PrimitiveArrayData<primType>* arrayData =
+ static_cast(dataInf->mData.data());
+
+ // Verify byteOrder of values. The data is set up without palindromes.
+ if (sizeof(T) > 1) {
+ for (uint i = 0; i < dataInf->childCount(); ++i)
+ {
+ AllPrimitiveTypes childDataAll = arrayData->valueAt(i);
+ T childData = childDataAll.value<T>();
+ T expected = dataAsT[i];
+ //TODO comparison for float and double: nan != nan
+ if (compareItems<T>(childData, expected, i))
+ {
+ QByteArray desc = "i=" + QByteArray::number(i) + ", model[i]="
+ + QByteArray::number(childData)
+ + ", data[i]=" + QByteArray::number(expected);
+ QVERIFY2(!compareItems<T>(childData, expected, i), desc.constData());
+ }
+ }
+ }
+ // Verify typeName as the user will see it.
+ QCOMPARE(arrayData->dataAt(0, DataInformation::ColumnType, Qt::DisplayRole).toString(),
+ QStringLiteral("mytype"));
+ // Verify value string as the user will see it.
+ QCOMPARE(arrayData->dataAt(0, DataInformation::ColumnValue, Qt::DisplayRole).toString(),
+ QStringLiteral("myvalue"));
}
template
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okteta-15.08.3/kasten/controllers/view/structures/datatypes/array/primitivearraydata.cpp new/okteta-15.12.0/kasten/controllers/view/structures/datatypes/array/primitivearraydata.cpp
--- old/okteta-15.08.3/kasten/controllers/view/structures/datatypes/array/primitivearraydata.cpp 2015-11-04 21:01:46.000000000 +0100
+++ new/okteta-15.12.0/kasten/controllers/view/structures/datatypes/array/primitivearraydata.cpp 2015-12-09 11:13:38.000000000 +0100
@@ -60,7 +60,7 @@
const quint32 maxNumItems = qMin(this->length(), maxRemaining32);
if (maxNumItems == 0)
return -1; //reached EOF
- const QSysInfo::Endian byteOrder = AbstractArrayData::mParent->effectiveByteOrder();
+ const QSysInfo::Endian byteOrder = mChildType->effectiveByteOrder();
if (byteOrder == QSysInfo::ByteOrder)
this->readDataNativeOrder(maxNumItems, input, address);
else
@@ -114,7 +114,7 @@
<< bitsRemaining << ") need " << ((row + 1) * sizeof(T) * 8);
return false;
}
- QSysInfo::Endian byteOrder = AbstractArrayData::mParent->effectiveByteOrder();
+ QSysInfo::Endian byteOrder = mChildType->effectiveByteOrder();
bool littleEndian = byteOrder == QSysInfo::LittleEndian;
bool ok = false;
T convertedVal = DisplayClass::fromVariant(value, &ok);
@@ -177,6 +177,18 @@
}
template<PrimitiveDataTypeEnum type>
+void PrimitiveArrayData<type>::activateIndex(uint index)
+{
+ Q_ASSERT(index < length());
+ //invalidate all previous references
+ SafeReferenceHolder::instance.invalidateAll(mChildType.data());
+ mChildType->mWasAbleToRead = mNumReadValues > index;
+ mChildType->asPrimitive()->setValue(mData.at(index));
+ mChildType->setName(QString::number(index));
+ mDummy.setDummyIndex(index);
+}
+
+template<PrimitiveDataTypeEnum type>
QVariant PrimitiveArrayData<type>::dataAt(uint index, int column, int role)
{
Q_ASSERT(index < length());
@@ -185,14 +197,17 @@
if (column == DataInformation::ColumnName)
return QString(QLatin1Char('[') + QString::number(index) + QLatin1Char(']'));
if (column == DataInformation::ColumnType)
- return PrimitiveType::typeName(type);
+ return mChildType->typeName();
if (column == DataInformation::ColumnValue)
{
//if we are outside the valid range
if (uint(index) >= this->mNumReadValues)
return DataInformation::eofReachedData(Qt::DisplayRole);
- else
- return DisplayClass::staticValueString(mData.at(index));
+ if (Q_UNLIKELY(mChildType->toStringFunction().isValid())) {
+ activateIndex(index);
+ return mChildType->valueString();
+ }
+ return DisplayClass::staticValueString(mData.at(index));
}
}
if (column == DataInformation::ColumnValue && uint(index) >= this->mNumReadValues)
@@ -203,7 +218,7 @@
template<PrimitiveDataTypeEnum type>
QString PrimitiveArrayData<type>::typeName() const
{
- return QString(PrimitiveType::typeName(type) + QLatin1Char('[')
+ return QString(mChildType->typeName() + QLatin1Char('[')
+ QString::number(this->length()) + QLatin1Char(']'));
}
@@ -221,15 +236,8 @@
template<PrimitiveDataTypeEnum type>
QScriptValue PrimitiveArrayData<type>::toScriptValue(uint index, QScriptEngine* engine, ScriptHandlerInfo* handlerInfo)
{
- Q_ASSERT(index < length());
- //invalidate all previous references
- SafeReferenceHolder::instance.invalidateAll(mChildType.data());
- mChildType->mWasAbleToRead = this->mNumReadValues > index;
- mChildType->asPrimitive()->setValue(this->mData.at(index));
- mChildType->setName(QString::number(index));
- mDummy.setDummyIndex(index);
+ activateIndex(index);
return mChildType->toScriptValue(engine, handlerInfo);
-
}
template<PrimitiveDataTypeEnum type>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okteta-15.08.3/kasten/controllers/view/structures/datatypes/array/primitivearraydata.h new/okteta-15.12.0/kasten/controllers/view/structures/datatypes/array/primitivearraydata.h
--- old/okteta-15.08.3/kasten/controllers/view/structures/datatypes/array/primitivearraydata.h 2015-11-04 21:01:46.000000000 +0100
+++ new/okteta-15.12.0/kasten/controllers/view/structures/datatypes/array/primitivearraydata.h 2015-12-09 11:13:38.000000000 +0100
@@ -69,6 +69,8 @@
static void writeOneItem(T value, Okteta::Address addr, Okteta::AbstractByteArrayModel* out, bool littleEndian);
protected:
+ /** sets mChildType and mDummy as @p index, which must have been checked before calling this method!! */
+ void activateIndex(uint index);
/** reads @p numItems items from the input, sizes must have been checked before calling this method!! */
void readDataNativeOrder(uint numItems, Okteta::AbstractByteArrayModel* input, Okteta::Address addr);
/** reads @p numItems items from the input, sizes must have been checked before calling this method!! */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okteta-15.08.3/kasten/controllers/view/structures/examples/okteta/structures/elf/main.osd new/okteta-15.12.0/kasten/controllers/view/structures/examples/okteta/structures/elf/main.osd
--- old/okteta-15.08.3/kasten/controllers/view/structures/examples/okteta/structures/elf/main.osd 2015-11-04 21:01:46.000000000 +0100
+++ new/okteta-15.12.0/kasten/controllers/view/structures/examples/okteta/structures/elf/main.osd 2015-12-09 11:13:38.000000000 +0100
@@ -118,7 +118,7 @@
</array>
</pointer>
<pointer name="e_shoff" type="UInt32">
- <array name="Section headers" length="function(root) { return root.e_phnum.value; }">
+ <array name="Section headers" length="function(root) { return root.e_shnum.value; }">
<struct name="Elf32_Shdr">
<primitive name="sh_name" type="UInt32" />
<primitive name="sh_type" type="UInt32" />
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okteta-15.08.3/program/about.cpp new/okteta-15.12.0/program/about.cpp
--- old/okteta-15.08.3/program/about.cpp 2015-11-04 21:01:46.000000000 +0100
+++ new/okteta-15.12.0/program/about.cpp 2015-12-09 11:13:38.000000000 +0100
@@ -29,7 +29,7 @@
OktetaAboutData::OktetaAboutData()
: KAboutData( QStringLiteral("okteta"),
i18n("Okteta"), // name
- QStringLiteral("0.17.0"),
+ QStringLiteral("0.18.0"),
i18n("Hex editor"), // description
KAboutLicense::GPL_V2,
i18n("Copyright 2006-2015 Friedrich W. H. Kossebau"), //copyright
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okteta-15.08.3/program/org.kde.okteta.appdata.xml new/okteta-15.12.0/program/org.kde.okteta.appdata.xml
--- old/okteta-15.08.3/program/org.kde.okteta.appdata.xml 2015-11-04 21:01:46.000000000 +0100
+++ new/okteta-15.12.0/program/org.kde.okteta.appdata.xml 2015-12-09 11:13:38.000000000 +0100
@@ -104,6 +104,7 @@
<p xml:lang="ca">Característiques:</p>
<p xml:lang="ca-valencia">Característiques:</p>
<p xml:lang="cs">Vlastnosti:</p>
+ <p xml:lang="da">Funktioner:</p>
<p xml:lang="de">Funktionen:</p>
<p xml:lang="en-GB">Features:</p>
<p xml:lang="es">Funcionalidades:</p>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okteta-15.08.3/program/program.cpp new/okteta-15.12.0/program/program.cpp
--- old/okteta-15.08.3/program/program.cpp 2015-11-04 21:01:46.000000000 +0100
+++ new/okteta-15.12.0/program/program.cpp 2015-12-09 11:13:38.000000000 +0100
@@ -52,6 +52,7 @@
#include <QCommandLineParser>
#include <QList>
#include <QUrl>
+#include <QDir>
#include <QLoggingCategory>
namespace Kasten
@@ -89,6 +90,7 @@
OktetaAboutData aboutData;
KAboutData::setApplicationData( aboutData );
+ QApplication::setWindowIcon(QIcon::fromTheme(QStringLiteral("okteta")));
KDBusService programDBusService;
@@ -155,7 +157,9 @@
const QRegExp withProtocolChecker( QStringLiteral("^[a-zA-Z]+:") );
foreach (const QString &url, urls) {
const QUrl u = (withProtocolChecker.indexIn(url) == 0) ?
- QUrl::fromUserInput( url ) : QUrl::fromLocalFile( url );
+ QUrl::fromUserInput( url ) :
+ QUrl::fromLocalFile(QDir::current().absoluteFilePath(url));
+
mDocumentStrategy->load( u );
}
}