https://github.com/rochus-keller/LeanQt/releases/tag/2022-11-11 Skip to content Toggle navigation Sign up * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code + Explore + All features + Documentation + GitHub Skills + Blog * Solutions + By Plan + Enterprise + Teams + Compare all + By Solution + CI/CD & Automation + DevOps + DevSecOps + Case Studies + Customer Stories + Resources * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles + Repositories + Topics + Trending + Collections * Pricing [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this user All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} rochus-keller / LeanQt Public * Notifications * Fork 15 * Star 398 * Code * Issues 2 * Pull requests 0 * Actions * Projects 0 * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Security * Insights 1. Releases 2. 2022-11-11 Gui, Image and Mime module release Latest Latest Compare Choose a tag to compare [ ] Could not load tags Nothing to show {{ refName }} default (*) View all tags @rochus-keller rochus-keller released this 11 Nov 11:15 2022-11-11 455fd0d This is an important release on the way to a full GUI toolkit. Due to the great demand, I have advanced this. The QtGui module, most of which is now migrated to LeanQt, offers cross-platform windows, 2D graphics, fonts, rich text, image handling and format conversion. The next step is the migration of widgets and some other GUI features. In the original Qt, the platform backends are in separate plugins. I have never understood the advantage of this, but it makes the deployment more complicated. LeanQt puts both the front and the backend in the same library. It is even easy to merge all parts of LeanQt into just one static or shared library. The external dependencies were kept very minimal. To compile the LeanQt gui module on Linux, you only need the standard libraries and libxcb, which you can install on Ubuntu, for example, with the package libxcb1-dev. On Mac and Windows, LeanQt only needs standard system libraries installed with the operating system. The mime module is required by the gui module when compiled on macOS; that's why I also had to migrate it for this release. The release has been successfully tested on Linux x86 & x86_64, Win x86 & AMD64, and Mac x86_64 & M1. There is the clock application in the examples folder, which displays a digital and analog clock in a window that you can use to try out the gui module. How to build LeanQt can be built easily. By default, the sample applications that match the selected options are also built. Proceed as follows. 1. Create a new directory; let's call it new_build (the name doesn't matter). 2. Download https://github.com/rochus-keller/BUSY/archive/refs/heads /master.zip and unpack it to the new_build directory; rename the new subdirectory to e.g. BUSY (the name doesn't matter, but must correspond to the following commands). 3. Download https://github.com/rochus-keller/LeanQt/archive/refs/ heads/master.zip and unpack it to the new_build directory; rename the new subdirectory to e.g. LeanQt (the name doesn't matter, but must correspond to the following commands). 4. Open a command line in the BUSY subdirectory and type cc *.c -O2 -lm -O2 -o lua or cl /O2 /MD /Fe:lua.exe *.c depending on whether you are on a Unix or Windows machine; wait a few seconds until the lua executable is built. 5. Now type ./lua build.lua ../LeanQt -P HAVE_GUI (or lua build.lua ../LeanQt -P HAVE_GUI on Windows); wait a few minutes until the build finishes; you find the clock executable in the BUSY/output subdirectory. When you start the clock application (e.g. via output/clock or by double clicking), you should see something like this: grafik Reducing the size of the source tree With the new gui, image and thirdparty modules, the uncompressed size of the source tree has grown to ~43 MB (10 MB zip compressed), with close to 3000 C/C++ files and more than 700 kSLOC. LeanQt is designed to build only the modules you actually need. Unlike original Qt, the QImage and QImageReader/Writer classes can be built separately, independently of the gui module. For the modules that are not needed, the source code doesn't have to be there either. The BUSY build system offers the possibility to simply remove the subdirectories that are not needed (see here for how this works). If you remove a BUSY module too much, the build will notify you with an according message. For example, my Oberon+ OBXMC tool only requires the core module of LeanQt. If I therefore want to deploy a minimal LeanQt source tree together with my OBXMC source code, I can just delete the concurrent, gui, image, mime, net, and xml subdirectories, as well as the freetype, harfbuzz, libjpeg, libpng, openssl, xcb, xkbcommon and zlib subdirectories of the thirdparty subdirectory. It is also legal to delete the QtConcurrent, QtGui, QtNetwork and QtXml subdirectories from the includes subdirectory. The resulting source tree has less than 800 files and requires only ~11 MB (2.6 MB zip compressed), and perfectly works as a substitute of the full source tree in this guide; see the attached LeanQt_core_only.zip file. Assets 3 All reactions Footer (c) 2022 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.