LINUX.ORG.RU
ФорумTalks

Душевная GUi либа

 ,


0

1

Всем привет)

В последнее время, после того как работа над текущем проектом подходила к концу, появилось много свободного времени) Может по этому и думаю о всякой фигне?) И думалось мне о кросс-языковой и кросс-платформенной gui библиотеке)

Нафиг надо?

Меня бесит одна мысль о том, что для создания проги с графическим интерфейсом нужно будет изучить еще один язык (я о qt) или использовать уродливый и ужасный gtk. Я хочу абстрагировавшись от написания кода gui использовать его для создания программ. И конечно что бы язык на котором я пишу, был не важен.

Короче говоря что бы логика программы, была отделена от визуализации(максимально возможно). Если быстро представить то типа этого:

window
	button#file_new  Новый
	button#file_open Открыть
	button#file_open Сохранить
	textarea#textArea

script(lang : js)
	gui.onclick('#file_open', function(){
		var f = gui.popup(GUI_OPEN_FILE);
                var fcontent =  gui.read(f)
		...
	});

script(lang : c)
	void file_open_onclick(void){
		FILE* f = gui.popup(GUI_OPEN_FILE);
		...
	}
	gui_onclick('#file_open', file_open_onclick);


Что вы думаете о ситуации на текущий момент в этой области? И думали ли вы о написании хреновины в роде этой?)



Последнее исправление: maksspaces (всего исправлений: 4)

И кто будет пилить эту либу?... Да и над дизайном кому-то надо будет поработать, а то получится очередной motif или tk.

Sorcus
()

нужно будет изучить еще один язык

Да, в твоём случае нужно будет изучить еще один язык, описывающий всю эту чехарду.
Если вообще это возможно, в чём я сомневаюсь.

Stahl ★★☆
()

Меня бесит одна мысль о том, что для создания проги с графическим интерфейсом нужно будет изучить еще один язык

[придумывает свой разметочный язык]

omnomnomnus
()

возьми язык который предполагает программирование как разработку DSL и реализуй в нём своё понимание GUI.

MKuznetsov ★★★★★
()

Хотел бы чтобы вы сделали тулкит, кастомизируемый, суть такова...

Приходила идея, но скилла не хватит. Если бы хватало, делал бы на Rust и чтобы можно было биндить ко всему подряд как GTK. На GUI смотрю со стороны пользователя. Поэтому основная часть идеи - сам GUI описывается вообще в стороне, декларативно (yaml какой-нибудь, а лучше вообще несколько разных вариантов), при этом by design отдана возможность его терзания пользователю. Непосредственно исполняемый код занимается, из связанного с GUI, только обработкой сигналов. Представляется как-то так - хочется юзеру менюбар вместо CSD, юзер себе сделал менюбар (или, что более вероятно - выдернул откуда-нибудь готовую шкурку, как сейчас с темами для гномокедов). Сделал банально перемещением элементов, из «контейнера» выпадающего меню от кнопки в контейнер полоски менюбара.
Стили туда же, чем-то а-ля CSS, с возможностью стилизовать всё подряд на разных уровнях - общесистемно, для одной софтины и т.п. Как Stylish для веба, только лучше.
Ещё странная идея - возможность интегрировать в софт какие-нибудь маленькие скрипты на Lua, для автоматизации каких-то действий или дополнительных плюшек, если их можно добиться работая чисто с элементами интерфейса и посылая им сигналы / заполняя данные. И обо всём этом должен думать именно тулкит, а не разработчик конечного ПО на нём (но если он всё-таки захочет - ему тоже не запрещается). Ещё бы костыль какой-нибудь для интеграции этого с вебнёй, чтобы следовать трендам :) Чтобы на основе выставленного каким-то сервисом API можно было с минимальными трудозатратами сделать хорошую десктопную морду. Но это уже вряд ли вопрос к GUI тулкиту.
Ещё какие-нибудь плагины и расширения к нему, прикручиваемые со стороны изолентой, на случай того, чего не удастся решить через разметку, стили и Lua.

P.S. Это всё больше абстрактные размышления, чем что-то конкретное, и боль от юзер-интерфейсов.

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

Нет, никакого своего языка. Есть стандартные стили элементов, а кастомные стили создаются с помощью css. Разметка - это jade (теперешний pug)

maksspaces
() автор топика

ну так gtk_builder жеж. а там хоть на С, хоть на питоне пиши. Даже вроде php-gtk и gogtk есть.

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

Первоочередное это дизайн и независимость от языка

maksspaces
() автор топика

Ага. Под svgalib запили. И портировать будет несложно.

tiinn ★★★★★
()

Учи паскаль и юзай lazarus. Пока ничего сравнимого по скорости разработки и абстракции от gui вроде не появилось.

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

Логичнее всего было бы использовать стандартные средства разметки: HTML+CSS. К сожалению, всё это не очень приспособлено для десктопного софта + если и распространено, то каждый тащит кастомный движок для рендеринга этого дела, чего быть не должно, ибо затратно в плане ресурсов.

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

Чем, чем ублюдочный html лучше любого обычного gui??? Обычный gui, я имею ввиду, с сайзерами и событиями. На порядок проще запустить, чем html+js

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

Тем, что это полноценный широко используемый язык разметки, а не очередной велосипед, вроде того, что предлагает ТС или городят в каждом тулките. Я не агитирую именно за HTML, просто должен быть какой-то стандарт.

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

Я не понял: для каждого языка нужно писать реализацию отдельно? Ну и нафиг оно тогда надо?

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

Ну какой велосипед?)) Jade это препроцессор html, там синтаксис менее избыточный чем в чистом html, который куча людей использует

maksspaces
() автор топика
Ответ на: комментарий от RazrFalcon

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

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

Ну какой велосипед?))

Вот этот:

window
	button#file_new  Новый
	button#file_open Открыть
	button#file_open Сохранить
	textarea#textArea

Про Jade я ничего не спрашивал и ничего не знаю.

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

В них кстати над дизайном работали, если без дизайна получится просто жуть.

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

Там есть разметка, как ни крути - внутри. А уж визуализацию, можно как новый уровень абстракции прикрутить;

maksspaces
() автор топика
Ответ на: комментарий от Shadow

Сайзеры для того чтобы софт запускался на ретине, планшете, телефоне, читалке, тачмониторе для слепых, игровой приставке, тв приставке и наконец на обычном компьютере никто не делает. События и так есть. И нет индустрии специальных людей, которые вот эту кнопку бы сделали синей, вот здесь данные выводили бы в скрывающийся блок, а подчеркивания были бы прерывистыми. Нанимать на такие задачи плюсовых сеньеров по 8к условных ежиков в месяц как-то затратно. И с учетом того как устроен гуй в нативных языках, до такой индустрии в кроссплатформе очень далеко.

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

что для создания проги с графическим интерфейсом нужно будет изучить еще один язык (я о qt)

Ну во первых - Qt не язык, язык - кресты :-) И да - существуют биндинги к другим языкам. Как минимум pyqt вроде бы неплох.

И конечно что бы язык на котором я пишу, был не важен

Ты не избавишься от необходимости клепать обёртки к разным языкам или добавлять в свою систему поддержку разных языков. Кстати, последний вариант потребует ещё и усложнения сборки. И да - ещё 1 язык разметки - https://xkcd.com/927/

была отделена от визуализации

Очевидно - склепать раздельные бекенд и GUI. А такой вариант, судя по увиденному - такое же формошлёпство, вид сбоку.

И думали ли вы о написании хреновины в роде этой

Не хватало только собственный гуйный тулкит поддерживать :-)

alex4321
()

для создания проги с графическим интерфейсом нужно будет изучить еще один язык (я о qt) или использовать уродливый и ужасный gtk.

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

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

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от Shadow

тонкие клиенты на html иногда удобны. юзер может сидеть на другой машине. где-то в сети. html можно использовать где-то в поле, при неизвестной конфигурации системы и софта. но нативные клиенты более кастомизированы и, как правило, работают эффективнее. плюс если нужна безопасность и т.д, то, естественно, никакого html и браузеров и скриптов.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от maksspaces

просто читать такие ляпы дюже неприятно. это даже хуже, чем непонимание различия между тся и ться. то есть это уже махровая неграмотность.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от maksspaces

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

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

И да, конечно же - вопрос того, что у них продублирован ряд элементов стандартной библиотеки плюсов - вопрос отдельный.

alex4321
()
Ответ на: комментарий от Shadow

Тем, что кастомные виджеты создавать на порядок проще, чем в «Обычный gui». Плюс бекенд на порядок проще вынести на мощный сервер, а фронтенд на порядок проще запустить на любой табуретке.

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

Заипали своей ретиной. Мотиф векторный, например.

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

Хо-хо. Я тут себе тач виджет для загрузки-обрезки фото на html5 canvas создавал. Вне ограничений html/js намного проще.

Shadow ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.