Minimalistyczne GUI (oraz utility) na rok 2022

0

Cel: wykonanie remake (bardzo) starych utility w borlandach / C/Win32 API / MFC

Na owe czasy wywoływane wyłącznie w stylu DLL (rozumiem również, że bez sieci, wtedy się to nie śniło)

Na dziś oczekuje się:
integracji wielojęzykowej (wywołanie w stylu DLL mniejszościowe)
HTTP, REST, i te sprawy
niezłej integracji w rejestrem windows, usługami windows, systemem drukowania, systray, proste wyskakujące komunikaty, odpalanie "dużych" apliacji i wpływ na to
Minimalistyczne, ale to bardzo GUI: ekran konfiguracji, proste powiadomienia i wybory. Nigdy to nie będzie pełnowymiarowa aplikacja np biznesowa.
preferowane GUI robione z kodu a nie z resoursów
płynny unicode/multibyte char bez żadnych masakrycznych konstrukcji

standardowe C++ ze std::stringiem i kontenerami (mogę negocjować)
free to buisness - to nie przynosi kasy
wybór na wiele następnych lat (są fajne nowe gwiazdy C++ GUI, ale o ich przyszłości nikt nie powie)

Na liście są:
FLTK (nie jest to ładne idiomatyczne C++, ale minimalistyczne)
GTKmm

Co warto poznać?

8

Te wszystkie wymagania to spełnia chyba tylko Qt. Mało która biblioteka GUI będzie miała dodatkowe bajery typu integrację z rejestrem, usługami windows i utility do sieci.

Jeśli mowa tylko o GUI to tutaj jest długa lista https://philippegroarke.com/posts/2018/c++_ui_solutions/
Z powyższej listy z mniej oczywistych pozycji wyróżniłbym

  • Fox Toolkit - brzydkie, ale wciąż atkualizowane i wygląda jakby miało coś ekstra poza samym GUI, mogę się mylić
  • Dear Imgui - wynikowa binarka jest śmiesznie mała i wszystko tworzysz w C++, ale z minusów dla Ciebie to nie ma żadnego dodatkowe utility i działa również w innym paradygmacie tworzenia GUI
  • Sciter - kilku megabajtowa dllka pozawalająca Ci tworzyć GUI w HTML CSS
4

Jak na free to business bo kasy nie przynosi, to masz spore wymagania imho, no ale temat nie o tym…

Pytanie pomocnicze: czemu to musi być C++ a nie C# np.? Jak sam jestem raczej fanem technologii/języków natywnych, ale pracuję w domenie gdzie mają one sens, a u Ciebie nie widzę potrzeby używania konkretnej technologii.

C++ typu QT i podobne zaczyna błyszczeć dopiero kiedy idziesz w platformy wbudowane, cross kompilacje itd., ale wtedy wchodzisz potencjalnie w rejony płatne.

No ale to nadal dygresje, ad rem zatem:
+1 dla QT. Ma swoje wady, nie wszystko jest za free, (oba powyższe punkty zaczynają mieć spore znaczenie kiedy idziesz w jakieś embeddowe, mobilne albo webowe platformy, przy zwykłych kontrolkach - raczej nie) ale generalnie lepszego pakietu tego typu chyba nie ma. Do tego można w miarę łatwo zaembeddować Pythona, jest też łatwo używalne z Pythona i ponoć ostatnio też z Rusta.

Z innych: to jest póki co w powijakach i jest tak ubogie, że aż żal polecać ale nana jest takim mikroguiowym fw. Przy czym - jak sprawdzałem to rok temu, to był to projekt z gatunku „ciekawy i z potencjałem” ale do production ready to mu brakowało bardzo dużo. No i żadnej systemowej integracji tam nie było, to bardziej minimalistyczne gołe GUI, w które opakowujesz co chcesz. Plusem jest stuprocentowo idiomatyczny C++ za to.

0

@alagner:
trafiłem na 'nana', i jeszcze kilka, gdzie wychodził bardzo ładny kod C++, ale właśnie tak jak piszesz. Czy już jest production ready i jak długo jeszcze pożyje.
Formatka z kilkoma texfieldami czy combo, co więcej w najmniejszym stopniu nie musi spełniać konkretnych wymagań estetycznych
@several:
Z 'Fox toolkit' kiedyś miałem krótki romans, dzięki za przypomnienie.

Bardzo lubię C# i programuję w nim. Tu mowa o skrajnie małych programach, w sensie zużycie RAM, ale i bardzo miłe jedno jedyne EXE.
Nawiasem mówiąc .NET Framework miał wyższą integrację z zapleczem windows niż Core (np wypadło API do usług)
Podam przykład: milion lat temu, jak żyły faksy, utility które informowało, że fax server odłożył w katalogu nowy odebrany fax - to było Win API, a nie brutal force w pętli.

Integracji typu "utlity" nie musi mieć, byle nie przeszkadzał ... np wprowadzając swój TheBestString
Sieć ugryzę boost:asio itd...

0

Chyba każdy C++owy FW ma swój best string. Koniec. ;) QT też. Tyle tylko, że poza GUI raczej nie ma konieczności go używać, zresztą w wielu przypadkach jest on konwertowalny bardzo prosto z std.

1

W przypadku Qt ten ich string to miał przede wszystkich służyć samemu Qt, żeby w miarę wygodnie obsługiwać kodowanie inne niż ANSI i móc wygodniej robić lokalizację. Nie miało to chyba słuzyć do zadań ogólnych. Nie wiem jak to wygląda w przypadku inncyh frameworków.

1

Do minimalistycznego GUI to ja bym polecił LVGL
Co prawda wywodzi się ze sprzętu embedded ale działa tez na desktop
Powazna firma NXP zainteresowalo się tą bibioteką https://www.nxp.com/design/software/embedded-software/lvgl-open-source-graphics-library:LITTLEVGL-OPEN-SOURCE-GRAPHICS-LIBRARY

3

I jeszcze znalezisko z dzisiaj
https://github.com/ocornut/imgui
image

image

image

2

https://github.com/wjakob/nanogui

image
Bo chyba nie było !

1

Jesli chcesz w takim duchu jak oryginalne Borlandy to:

TurboVision2 https://github.com/magiblot/tvision

Ew. ncurses.

1

Przeszukałem forum,
przeszukałem podlinkowany URL przez @several

https://github.com/QUItCoding/qnanopainter

image

image

1 użytkowników online, w tym zalogowanych: 0, gości: 1