Dopo 9 anni dalla pubblicazione della versione 3.0, viene presentata la prima versione del nuovo ramo stabile del toolkit cross-platform wxWidgets 3.2.0, che consente di creare interfacce grafiche per Linux, Windows, macOS, UNIX e piattaforme mobili. Rispetto alla versione 3.0, si osservano diverse incompatibilità a livello di API. Il toolkit è scritto in C++ e distribuito con la licenza libera wxWindows Library License, approvata dalla Free Software Foundation e dall'OSI. La licenza si basa su LGPL e consente l'uso di termini personalizzati per la distribuzione di opere derivate in forma binaria.
Oltre allo sviluppo di programmi in C++, wxWidgets fornisce binding per la maggior parte dei linguaggi di programmazione popolari, inclusi PHP, Python, Perl e Ruby. A differenza di altri toolkit, wxWidgets offre un aspetto e metodi di interazione veramente nativi per il sistema target, grazie all'utilizzo delle API di sistema e non dell'emulazione del GUI.
Novità principali:
- È stato implementato un nuovo port sperimentale wxQt, che consente a wxWidgets di funzionare sopra il framework Qt.
- Il port wxGTK offre il supporto completo per il protocollo Wayland.
- Aggiunto supporto per schermi ad alta densità di pixel (High DPI). Aggiunta la possibilità di impostare DPI diversi per monitor diversi e una modifica dinamica del DPI. Introdotto un nuovo API wxBitmapBundle, che consente di manipolare come un'unità più varianti di un'immagine raster, presentate a diverse risoluzioni.
- Introdotto un nuovo sistema di build basato su CMake. Il sistema di build ha aggiunto supporto per nuovi compilatori (inclusi MSVS 2022, g++ 12 e clang 14) e sistemi operativi.
- Rivista la supporto per OpenGL, migliorato l'uso delle nuove versioni di OpenGL (3.2+).
- Aggiunto supporto per la compressione LZMA e file ZIP 64.
- Rafforzata la protezione durante la fase di compilazione, grazie alla possibilità di disabilitare trasformazioni implicite pericolose tra stringhe di tipo wxString e «char*».
- Aggiunto supporto per eventi per gesture di controllo, riprodotte con il mouse.
- Nelle classi wxFont e wxGraphicsContext è stata aggiunta la possibilità di specificare valori non interi nella definizione della dimensione dei caratteri e della larghezza della penna luminosa.
- Nella classe wxStaticBox è stata implementata la possibilità di impostare etichette arbitrarie per le finestre.
- Nell'API wxWebRequest è stato aggiunto il supporto per HTTPS e HTTP/2.
- Nella classe wxGrid è stata aggiunta la supporto per il congelamento delle colonne e delle righe.
- Sono state presentate nuove classi: wxActivityIndicator, wxAddRemoveCtrl, wxAppProgressIndicator, wxBitmapBundle, wxNativeWindow, wxPersistentComboBox, wxPowerResourceBlocker, wxSecretStore, wxTempFFile e wxUILocale.
- Per tutte le nuove e alcune classi esistenti sono stati implementati nuovi gestori XRC.
- Sono stati presentati nuovi metodi: wxDataViewToggleRenderer::ShowAsRadio(), wxDateTime::GetWeekBasedYear(), wxDisplay::GetPPI(), wxGrid::SetCornerLabelValue(), wxHtmlEasyPrinting::SetPromptMode(), wxJoystickEvent::GetButtonOrdinal(), wxListBox::GetTopItem(), wxProcess::Activate(), wxTextEntry::ForceUpper(), wxStandardPaths::GetUserDir(), wxToolbook::EnablePage(), wxUIActionSimulator::Select().
- Sono stati apportati significativi miglioramenti alle classi wxBusyInfo, wxDataViewCtrl, wxNotificationMessage, wxStaticBox, wxStyledTextCtrl e wxUIActionSimulator.
- Migliorata la compatibilità con la piattaforma macOS, compresa la possibilità di utilizzare un tema scuro e supporto per dispositivi con processori ARM.
- Sono stati apportati miglioramenti relativi al supporto dello standard C++11. È stata aggiunta la compatibilità con i compilatori C++20.
- Tutte le librerie di terze parti incluse sono state aggiornate. È stato aggiunto il supporto per WebKit 2 e GStreamer 1.7.
Fonte: opennet.ru
