LINUX.ORG.RU

TGUI 1.12

 , , , ,


0

2

26 января состоялся релиз 1.12 кроссплатформенной библиотеки виджетов TGUI, написанной на языке C++ и распространяемой по лицензии Zlib.

Минимальная версия стандарта — C++14. Для компиляторов GCC >= 11, Clang >= 16 и IntelLLVM по умолчанию используется стандарт C++17.

Библиотека поддерживает несколько бэкендов ввода-вывода (параметр CMake TGUI_BACKEND):

  • SFML_GRAPHICS – sfml-graphics
  • SFML_OPENGL3 – sfml-window + OpenGL + FreeType
  • SDL_GPU – SDL + SDL_ttf
  • SDL_RENDERER – SDL + SDL_ttf
  • SDL_OPENGL3 – SDL + OpenGL + FreeType
  • SDL_GLES2 – SDL + OpenGL ES + FreeType
  • SDL_TTF_OPENGL3 – SDL + OpenGL + SDL_ttf
  • SDL_TTF_GLES2 – SDL + OpenGL ES + SDL_ttf
  • GLFW_OPENGL3 – GLFW + OpenGL + FreeType
  • GLFW_GLES2 – GLFW + OpenGL ES + FreeType
  • RAYLIB – raylib

В комплект поставки также входит простой дизайнер GUI.

Список изменений:

  • добавлен виджет VerticalTabs;
  • добавлен тип курсора Move (также известный как курсор SizeAll);
  • свойство KeepInParent класса ChildWindow не учитывало границы родительского элемента;
  • исправлена ошибка падения Gui Builder при попытке открытия формы, если текущая форма ещё не была сохранена;
  • поддержка большего количества устройств Android с бэкендом SDL_GPU (SDL3).

>>> Подробности на tgui.eu

★★★★★

Проверено: cetjs2 ()
Последнее исправление: CrX (всего исправлений: 2)

А для Си недавно увидел любопытный проект https://gitlab.com/bztsrc/smgui:

The SMGUI is minimal-state graphical user interface toolkit written in ANSI C, which is neither callback-driven nor immediate-mode, rather state-mode. I've created it because I've tried Nuklear and I was extremely disappointed with it (huge, inefficient and extremely hard to integrate).
The main concept of a state-mode UI is, that you already have your variables, so you reference those from a layout, which has no callbacks neither requires immediate-mode calls, it is just uses those already existing variables for rendering the GUI states.

Features

* State-mode graphical interface toolkit (no immediate-mode, no callbacks)
* Single-header library (with optional modules)
* Customizable modules (you include what you need)
* Written in ANSI C (really, unlike Nuklear, this truly compiles with gcc -ansi)
* Small codebase (really small, just 3k SLoC)
* Focus on portability (backend and OS agnostic, comes with GLFW3, SDL2/3, X11 and fbdev bindings)
* Focus on efficiency (truly)
* And focus on simplicity (integrate with just 5 lines of code)
* No dependencies in the base header (just libc)
* Fully skinnable and customizable
* Low memory footprint (really, unlike that liar Nuklear)
* Expandable with custom widgets from your code
* UTF-8 support
* Multilanguage support (you can change the language even on-the-fly)
* Multithreading support (you don't have to handle events in your main loop thread like with immediate-mode)
* No global or hidden state
* No font baker (which kills UNICODE support entirely, 0x10ffff codepoint is just fucking too much for baking)
* Font ligatures and kerning supported too if needed (both impossible with baking)

Скриншот: https://0x0.st/PTb4.png.
У автора ещё много чего интересного есть.

dataman ★★★★★
() автор топика
Ответ на: комментарий от cetjs2

По-моему смысл гуи библиотек как раз в том чтобы свою реализацию сделать. А вот «обёртка для gtk но не gtk» это реально какое-то ненужно было бы. Хочешь gtk - просто используй его, зачем ещё какие-то прослойки?

firkax ★★★★★
()
Ответ на: комментарий от cetjs2

С тем же успехом можно обвинить gtk в том что оно не поддерживает темы от tgui, которых тут то ли 3 то ли 4 на скриншотах показано.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Нельзя обвинить. GTK тут в позиции доминирующего. Спрос именно с TGUI.

Alexander123
()
Ответ на: комментарий от firkax

мейнстрим в линуксах — gtk и qt. пока нет ДЕ на этом тулките, хорошо бы хотя бы опционально поддерживать темы, а то очередной электрон по внешнему виду…

cetjs2 ★★★★★
()
Ответ на: комментарий от cetjs2

мейнстрим в линуксах — gtk и qt

ImGUI тоже ничего о них не знает, но ведь используется в десятках/сотнях проектов.

dataman ★★★★★
() автор топика

Красиво. Более-менее (менее) осознаю минусы и возражения, но... всё равно красиво.

piyavking ★★★★★
()
Ответ на: комментарий от cetjs2

Автор тулкита, очевидно, сделал его потому что gtk/qt ему не нравятся. Если бы нравились, у него не было бы причин делать ещё один. И ты предлагаешь ему в свой продукт, сделанный на замену неугодным, кодить поддержку того, от чего он как раз хотел избавиться, тратя на это свои силы и время?

firkax ★★★★★
()
Ответ на: комментарий от dataman

Ну ужОс, конечно и глазенки вытекать начали от цветовой гаммы... :(

gns ★★★★★
()
Последнее исправление: gns (всего исправлений: 1)

Нуачо, минималистичненько, глаз не режет...

gns ★★★★★
()

Похоже на Xdialog, только до сих пор развивается.

nicholas_ru
()

Ничего так, страшненько. А им какие-то программы пользуются или просто так написали?

zabbal ★★★★☆
()
Ответ на: комментарий от zabbal

ништяк

😃

IDE / Compiler
Visual Studio 2015 (C++14)

dataman ★★★★★
() автор топика
Ответ на: комментарий от zabbal

А по мне так симпатичненько. Если бы шрифты были не ШГ, то может и вообще хорошо бы было. ШГ на скрине всё портят.

Loki13 ★★★★★
()
Ответ на: комментарий от Loki13

Автор почему-то не обновляет скриншоты (на них версия 0.10).
Возможно, что с FreeType будет лучше.

dataman ★★★★★
() автор топика

Cross-platform modern c++ GUI

Я понимаю, что современные тенденции в дизайне GUI ужасны, низкий контраст, огромные пустые пространства и т.д. Но называть то, что на скриншотах «modern» как-то чересчур самоуверенно. Или это про C++14?

Мне бы такой колхоз было бы просто стыдно показывать. Dear ImGui (immediate mode GUI), например, тоже не нативный, но выглядит вполне неплохо и даже стильно.

neuron
()
Ответ на: комментарий от firkax

Выглядит норм, но требование C++14 печально.

Я сначала тоже так решил. А потом подумал… На работу, где приходится помимо прочего иметь дело с разной легаси, я это всё равно не потащу, там стек технологий устоявшийся.

А если для чего-то лёгкого и хоббийного… Давай подумаем: в какую из актуальных для тебя систем ты не можешь поставить компилятор с поддержкой C++14?

hobbit ★★★★★
()

В комплект поставки также входит простой дизайнер GUI.

Он мне напомнил ранние версии Delphi. Правда, не хватает редактора кода с подсветкой. Думаю, встроить Lexilla + Scintilla будет не сложно.

dataman ★★★★★
() автор топика
Ответ на: комментарий от cetjs2

Верно. И «поддержка тем формата гтк» это именно апи. Внешний вид - сами темы, и что ты в связи с этим хочешь от автора тулкита?

firkax ★★★★★
()

Сильно обмазано STL. Интересно, будет ли разваливаться при изменении версии компилятора или стандарта c++?

mittorn ★★★★★
()
Ответ на: комментарий от Loki13

А по мне тут и всё остальное ужасно и безвскусно. Какие-то ступенчатые пирамиды вместо треугольников на контролах, жирные галки в чекбоксах с тонюсенькой рамочкой, как попало расставленные отступы в кнопках (то горизонтальные меньше вертикальных, то наоборот, но никогда не равны), с одной сторыны одинарная рамка с другой - двойная… в общем куда ни глянь всюду срань.

zabbal ★★★★☆
()

Страшненькое. Но если быстрый то пусть будет.

kirill_rrr ★★★★★
()

Судя по скриншоту, напоминает программу… даже не для Windows-3.x, а для DOS. Я не против, только непонятно, зачем. Ведь есть же Tcl/Tk и Python/Tkinter для GUI. И выглядит лучше, и кода раз-два и обчёлся, и сам код на языке высокого уровня. И не нужен «простой дизайнер GUI» (и вообще никакой не нужен). Может быть оно для gamedev (судя по libSDL)? В embed на малых ресурсах вряд ли, потому что C++. А на более мощных контроллерах есть варианты и получше. Интересный проект, вызывает ностальгию (сам писал нечто подобное под DOS). Но хотелось бы понять, под какие задачи оно сейчас ориентировано?

nobody ★★
()
Ответ на: комментарий от rsync

На скриншотах же три разные темы оформления.

dataman ★★★★★
() автор топика

у меню tgui.eu не работает, потому в топку

без политоты, просто у пацанов не хватило денег,ума и смысла на обычный хостинг в чистом html, без js водопадов, cloud-tеch, content-deliver и прочей @ты.

И эти задроты будут рассказывать как делать софт. Ога, консольку они пишут :-)

MKuznetsov ★★★★★
()
Ответ на: комментарий от dataman

А плюсовикам они зачем?

Ну так меньше же кода, когда используется язык более высокого уровня. А значит, ниже себестоимость разработки и выше рыночная стоимость продукта (потому что меньше багов), т.е. маржа работодателя выше. Отсюда и выше зарплата разработчика.

nobody ★★
()
Ответ на: комментарий от dataman

Ответ ещё раз: для повышения производительности труда. Каковая скажется впрямую на уровне дохода.

nobody ★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.