Nach 9 Jahren seit der Veröffentlichung der Version 3.0 wird mit wxWidgets 3.2.0 die erste stabile Version des plattformübergreifenden Toolkits vorgestellt, das die Erstellung grafischer Benutzeroberflächen für Linux, Windows, macOS, UNIX und mobile Plattformen ermöglicht. Im Vergleich zur Version 3.0 gibt es einige Inkompatibilitäten auf der API-Ebene. Das Toolkit ist in C++ geschrieben und wird unter der wxWindows Library License vertrieben, die von der Free Software Foundation und der OSI genehmigt wurde. Die Lizenz basiert auf der LGPL und erlaubt die Verwendung eigener Bedingungen für die Verbreitung abgeleiteter Werke in binärer Form.
Neben der Entwicklung von Programmen in C++ bietet wxWidgets Bindungen für die meisten gängigen Programmiersprachen, einschließlich PHP, Python, Perl und Ruby. Im Gegensatz zu anderen Toolkits sorgt wxWidgets dafür, dass die Anwendung ein wirklich natives Aussehen und Interaktionsmethoden für das Zielsystem bietet, da es die systemeigenen APIs nutzt und nicht eine GUI emuliert.
Hauptneuheiten:
- Ein neuer experimenteller wxQt-Port wurde implementiert, der den Betrieb von wxWidgets über das Qt-Framework ermöglicht.
- Im wxGTK-Port wird vollständige Unterstützung für das Wayland-Protokoll bereitgestellt.
- Unterstützung für Bildschirme mit hoher Pixeldichte (High DPI) hinzugefügt. Die Möglichkeit, verschiedene DPI für unterschiedliche Monitore zuzuweisen und DPI dynamisch zu ändern, wurde implementiert. Eine neue API wxBitmapBundle wurde vorgeschlagen, die es ermöglicht, mehrere Varianten von Rastergrafiken in verschiedenen Auflösungen als Ganzes zu manipulieren.
- Ein neues Build-System auf Basis von CMake wurde vorgeschlagen. Das Build-System unterstützt nun neue Compiler (einschließlich MSVS 2022, g++ 12 und clang 14) sowie Betriebssysteme.
- Die Unterstützung für OpenGL wurde überarbeitet und die Nutzung neuerer OpenGL-Versionen (3.2+) verbessert.
- Unterstützung für LZMA-Kompression und ZIP 64-Dateien hinzugefügt.
- Der Schutz während der Kompilierung wurde verstärkt, da gefährliche implizite Umwandlungen zwischen wxString und 'char*' nun deaktiviert werden können.
- Die Unterstützung von Ereignissen für gesteuerte Gesten, die mit der Maus ausgeführt werden, wurde hinzugefügt.
- In den Klassen wxFont und wxGraphicsContext wurde die Möglichkeit hinzugefügt, nicht-ganzzahlige Werte bei der Festlegung von Schriftgrößen und der Breite des Lichtstifts anzugeben.
- In der Klasse wxStaticBox wurde die Möglichkeit implementiert, beliebige Beschriftungen für Fenster festzulegen.
- Die API wxWebRequest unterstützt jetzt HTTPS und HTTP/2.
- In der Klasse wxGrid wurde Unterstützung für das Einfrieren von Spalten und Zeilen hinzugefügt.
- Es wurden neue Klassen vorgestellt: wxActivityIndicator, wxAddRemoveCtrl, wxAppProgressIndicator, wxBitmapBundle, wxNativeWindow, wxPersistentComboBox, wxPowerResourceBlocker, wxSecretStore, wxTempFFile und wxUILocale.
- Für alle neuen und einige bestehende Klassen wurden neue XRC-Handler implementiert.
- Neue Methoden wurden eingeführt: wxDataViewToggleRenderer::ShowAsRadio(), wxDateTime::GetWeekBasedYear(), wxDisplay::GetPPI(), wxGrid::SetCornerLabelValue(), wxHtmlEasyPrinting::SetPromptMode(), wxJoystickEvent::GetButtonOrdinal(), wxListBox::GetTopItem(), wxProcess::Activate(), wxTextEntry::ForceUpper(), wxStandardPaths::GetUserDir(), wxToolbook::EnablePage(), wxUIActionSimulator::Select().
- Es wurden erhebliche Verbesserungen an den Klassen wxBusyInfo, wxDataViewCtrl, wxNotificationMessage, wxStaticBox, wxStyledTextCtrl und wxUIActionSimulator vorgenommen.
- Die Unterstützung für die Plattform macOS wurde verbessert, darunter die Möglichkeit, ein dunkles Farbschema zu verwenden, sowie die Unterstützung für Geräte mit ARM-Prozessoren.
- Verbesserungen in Bezug auf die Unterstützung des C++11 Standards wurden implementiert. Unterstützung für Compiler-Builds mit C++20 wurde hinzugefügt.
- Alle mitgelieferten Drittanbieterbibliotheken wurden aktualisiert. Unterstützung für WebKit 2 und GStreamer 1.7 wurde hinzugefügt.
Quelle: opennet.ru
