Po 9 latach od wydania wersji 3.0 zaprezentowano pierwsze wydanie nowej stabilnej wersji wieloplatformowego narzędzia wxWidgets 3.2.0, które umożliwia tworzenie interfejsów graficznych dla systemów Linux, Windows, macOS, UNIX i platform mobilnych. W porównaniu do wersji 3.0 zauważono szereg niekompatybilności na poziomie API. Narzędzie napisane jest w języku C++ i udostępniane na podstawie wolnej licencji wxWindows Library License, zatwierdzonej przez Fundację Otwartych Technologii oraz organizację OSI. Licencja oparta jest na LGPL i różni się możliwością stosowania własnych warunków dystrybucji prac pochodnych w formie binarnej.
Oprócz tworzenia programów w C++, wxWidgets oferuje powiązania dla większości popularnych języków programowania, w tym PHP, Python, Perl i Ruby. W przeciwieństwie do innych narzędzi, wxWidgets zapewnia aplikacjom prawdziwie natywny wygląd i metody interakcji dla docelowego systemu, dzięki używaniu systemowych API, a nie symulacji GUI.
Główne nowości:
- Zrealizowano nowy eksperymentalny port wxQt, który umożliwia działanie wxWidgets na frameworku Qt.
- W porcie wxGTK zapewniono pełne wsparcie dla protokołu Wayland.
- Dodano wsparcie dla ekranów o wysokiej gęstości pikseli (High DPI). Dodano możliwość przypisania różnych DPI dla różnych monitorów oraz dynamicznej zmiany DPI. Zaproponowano nowe API wxBitmapBundle, które umożliwia manipulację wieloma wersjami rastrowego obrazu w różnych rozdzielczościach jako całości.
- Proponowany jest nowy system budowy oparty na CMake. System budowy zyskał wsparcie dla nowych kompilatorów (w tym MSVS 2022, g++ 12 i clang 14) oraz systemów operacyjnych.
- Przeprojektowano wsparcie dla OpenGL, poprawiono wykorzystanie nowych wersji OpenGL (3.2+).
- Dodano wsparcie dla kompresji LZMA i plików ZIP 64.
- Wzmożono zabezpieczenia na etapie kompilacji, dzięki możliwości wyłączenia niebezpiecznych niejawnych konwersji pomiędzy łańcuchami typów wxString i «char*».
- Dodano wsparcie dla zdarzeń dla gestów sterujących, wykonywanych za pomocą myszy.
- W klasach wxFont i wxGraphicsContext dodano możliwość określenia wartości niecałkowitych przy definiowaniu rozmiaru czcionek i szerokości pisaka.
- W klasie wxStaticBox wprowadzono możliwość przypisywania dowolnych etykiet oknom.
- W API wxWebRequest dodano wsparcie dla HTTPS i HTTP/2.
- W klasie wxGrid dodano wsparcie dla zamrażania kolumn i wierszy.
- Wprowadzono nowe klasy: wxActivityIndicator, wxAddRemoveCtrl, wxAppProgressIndicator, wxBitmapBundle, wxNativeWindow, wxPersistentComboBox, wxPowerResourceBlocker, wxSecretStore, wxTempFFile i wxUILocale.
- Dla wszystkich nowych i niektórych istniejących klas zrealizowano nowe obsługi XRC.
- Wprowadzone nowe metody: wxDataViewToggleRenderer::ShowAsRadio(), wxDateTime::GetWeekBasedYear(), wxDisplay::GetPPI(), wxGrid::SetCornerLabelValue(), wxHtmlEasyPrinting::SetPromptMode(), wxJoystickEvent::GetButtonOrdinal(), wxListBox::GetTopItem(), wxProcess::Activate(), wxTextEntry::ForceUpper(), wxStandardPaths::GetUserDir(), wxToolbook::EnablePage(), wxUIActionSimulator::Select().
- Wprowadzono znaczne ulepszenia w klasach wxBusyInfo, wxDataViewCtrl, wxNotificationMessage, wxStaticBox, wxStyledTextCtrl i wxUIActionSimulator.
- Ulepszono wsparcie dla platformy macOS, w tym umożliwiono korzystanie z ciemnego motywu i dodano wsparcie dla urządzeń na procesorach ARM.
- Wprowadzono ulepszenia związane z wsparciem standardu C++11. Dodano wsparcie dla kompilacji z użyciem C++20.
- Zaktualizowano wszystkie zewnętrzne biblioteki zawarte w zestawie. Dodano wsparcie dla WebKit 2 i GStreamer 1.7.
Źródło: opennet.ru
