Coder Social home page Coder Social logo

fluxer / katie Goto Github PK

View Code? Open in Web Editor NEW
6.0 3.0 8.0 76.57 MB

C++ toolkit derived from the Qt 4.8 framework

Home Page: https://bitbucket.org/smil3y/workspace/projects/KATANA

License: BSD 3-Clause "New" or "Revised" License

CMake 0.78% C++ 90.25% C 5.58% Shell 0.03% Python 0.28% QMake 0.01% GAP 0.69% Perl 0.01% PostScript 0.03% Makefile 0.01% Roff 0.10% QML 0.18% JavaScript 2.06% Brainfuck 0.01%
cpp toolkit qt4 c-plus-plus

katie's Introduction

Katie is continuation of the Qt4 C++ toolkit with the goal to keep it alive,
clean it up, fix some bugs and backport some features from Qt5. It is based
on the latest Git revision of Qt v4.8.

There are several things you should be aware before considering Katie:

 - some components and tools have been removed:
  - QMake, Linguist, Assistant, checksdk, macdeployqt, pixeltool, qconfig,
    qdoc, qev, qvfb, runonphone, designer and other non-essential
  - Qt3Support, QtWebKit, QtHelp, QtXmlPatterns, QtOpenGL, ActiveQt, Phonon,
    QtMultimedia, QtSql, QtDesigner, QtDesignerComponents and QtScriptTtools

 - some things have changed:
  - QMake build system replaced with CMake
  - Jansson, Freetype, ICU, X11 and libpng are required for building
  - D-Bus and CUPS must be linked to during build
  - QtUiTools is build as shared library by default
  - moc, uic, etc. are linked to components
  - updated bundled Harfbuzz from upstream (not Harfbuzz-NG)
  - versioned and extended classes have been merged into the base class,
    e.g. QIconEngineV2 into QIconEngine and QKeyEventEx into QKeyEvent
  - QGuiPlatformPlugin class is public
  - updated localizations data from Common Locale Data Repository v42
  - QTranslator uses gettext for translations
  - OpenVG is no longer supported graphics output
  - Blitter is no longer supported painting engine
  - native graphics system is no more, rasterizer is faster than native
  - QPicture, QPictureIO and plugins for it are no longer supported
  - QML debugger and inspector have been removed, potentially dangerous
  - no SIMD, zero performance impact with decent compiler
  - state machine is no more
  - removed 3rd party sources that are very common nowdays
  - dropped non-open source and discontinued platforms support
  - dropped dnotify filesystem watcher support
  - dropped Glib2 event dispatcher support
  - dropped support for a.out format
  - dropped Motif Drag-And-Drop (DND) support
  - dropped LPR support
  - dropped static plugins support
  - dropped XBM, PGM, MNG, BMP, ICO, TGA, JPEG, TIFF and GIF image format support
  - dropped obscure (24-bit) and indexed (8-bit) image formats support
  - dropped Valgrind support
  - dropped recursive mutex and lock support
  - dropped wide character and string support
  - dropped network interfaces management support
  - dropped no-op touch devices support
  - dropped bitmap fonts support
  - dropped accessibility support

 - some additions have been made:
  - custom image format
  - custom translations format
  - custom hash algorithm
  - JSON document handler
  - standard directories handler
  - building with LTO is possible and supported, if the toolchain can handle it
  - alternative libc implementations support
  - additional text codecs via ICU converter
  - Unicode v5.0+ characters and partial scripts support
  - support for AArch64 architecture
  - support for locale aliases
  - support for generating SHA-256 and SHA-512 hash sums (SHA-2)
  - qCompress() and qUncompress() use libdeflate which is much faster
  - stack backtrace on assert, crash or warning via execinfo
  - brief manual pages for all command-line tools
  - desktop files, Shell profile and dynamic linker/loader config
  - more reliable qrand(), seeded per thread
  - improved signal/slot template arguments handling
  - improved namespaces support and introduced QT_NAMESPACE_COMPAT
  - improved cross-compilation support
  - improved POSIX, XSI, SUSv2, etc. requirements build checks
  - script component uses QRegExp instead of internal PCRE copy
  - tests and benchmarks can be run without prior installation

Bugs fixed in Katie, some of which in Qt5 too:
QTBUG-23502, QTBUG-37115, QTBUG-15052, QTBUG-23522, QTBUG-6139, QTBUG-26889,
QTBUG-21548, QTBUG-6133, QTBUG-18188, QTBUG-36767, QTBUG-35387, QTBUG-37035,
QTBUG-28321, QTBUG-21993, QTBUG-26590, QTBUG-2124, QTBUG-20482, QTBUG-41361,
QTBUG-40153, QTBUG-35479, QTBUG-1628, QTBUG-42989, QTBUG-34861, QTBUG-46767,
QTBUG-25114, QTBUG-24672, QTBUG-23524 (WIP), QTBUG-56088, QTBUG-42189,
QTBUG-39285, QTBUG-18173, QTBUG-28968, QTBUG-34336, QTBUG-40974, QTBUG-44286,
QTBUG-12564, QTBUG-20028, QTBUG-71967, QTBUG-70956, QTBUG-71446, QTBUG-61307,
QTBUG-27287, QTBUG-25143, QTBUG-22833, QTBUG-57399, QTBUG-59159, QTBUG-15773,
QTBUG-70506, QTBUG-46054, QTBUG-11223, QTBUG-63108, QTBUG-6932, QTBUG-42365,
QTBUG-83817, QTBUG-4341, QTBUG-36933, QTBUG-49113, QTBUG-69920, QTBUG-40015,
QTBUG-54942, QTBUG-91261, QTBUG-73445, QTBUG-21098, QTBUG-59966, QTBUG-85520

Unless you use QMake and QDoc porting to Katie or even supporting it along with
Qt4 in the same codebase is trivial and requires only minor changes because
Katie is mostly source compatible with Qt 4.8.x, compatibility with releases
earlier than that is not a goal. Do note that using libraries that
are linked to Qt4 from applications linked to Katie will trigger undefined
behavior.

katie's People

Contributors

fluxer avatar fredbezies avatar securitybypass avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

katie's Issues

Possible to backport QtWidgets from Qt5?

Multiple ports require specifically QtWidgets, and this prevents from building them with Qt4 (perhaps among other issues, but this is a notable one). Is it possible to backport/implement it here?

Deal with obsolete headers, besides those mentioned in the CMake files

This is important for projects that want to support both Qt4 and Katie. The task involves mostly build system modifications because Katie provides a CMake macro for generating obsolete headers. One can use and even update the incfsck script provided with the source code to get a list of obsolete headers but (as of the time of writing) the list is incomplete.

JSON classes rewrite

Too complicated for most of the use cases (used as key-value pair storage) and the QVariant type system allows to iterate over QVariantMap similar to the object/array concept, e.g.:

#include <QDebug>
#include <QVariant>
#include <QStringList>

QT_USE_NAMESPACE

int main() {
    QVariantMap map;
    QStringList list = QStringList() << "1" << "2";
    QVariantMap map2;
    QStringList list2 = QStringList() << "3" << "4";
    map2.insert("map", list2);
    map.insert("list", list);
    map.insert("map2", map2);

    foreach(const QString &key, map.keys()) {
        const QVariant value = map.value(key);
        if (value.type() == QVariant::StringList) {
            qDebug() << "list" << key << value;
        } else if (value.type() == QVariant::Map) {
            qDebug() << "map" << key << value;
        }
    }

    return 0;
}

In other words QJsonDocument will be kept with the API to convert to/from QByteArray, to/from QVariantMap and report errors, the rest is redundant. As to why that is simple - common use case for it is parsing somewhat unknown objects and values which should be validated beyond the validations done by JSON parses (e.g. if string is file or directory path) with possible recursion limit and aborting the processing of the data to shave-off computation time, the current implementation does not make the processing any better since it does not provide the capability to do that and even if it does someone probably already tought about it. For example:

https://github.com/fluxer/kde-baseapps/blob/master/kate/addons/kate/project/kateproject.cpp
https://github.com/fluxer/kde-workspace/blob/master/plasma/runners/bookmarks/browsers/chrome.cpp

Build on Windows with MSYS2 UCRT64

Hi. I'm searching for Qt4 forks on Github and found your project. Unfortunately I'm on Windows and your project seems don't support Windows. If you could add Windows support I'm very pleased to help test building on MSYS2 UCRT64. Please consider. Thank you.

QML regression from stock Qt 4.8.7

There seem to be a regression of the events handling. The issue can be observed with Katana and the Plasma widget explorer - it cannot be closed from the "X" button. Most of the tests from Qt4 yield good results.

New logo, branding, copyright header changes, etc.

As much as I hate to do it at some point things will have to be copyrighted and I've touched pretty much every file for one reason or another (fixes, adjustments, whatnot). The question is what license should be chosen for fresh code - keen on BSD 3-clause.

For the logo - I'm not an artist so help with that would be appreciated.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.