LINUX.ORG.RU

Легко меняемый ГУЙ?


0

0
Как можно сделать программу, чтобы у неё гуй очень легко менялся? То есть без залезания в исходники проги. Есть мысль использовать хмл/хтмл и свои собственные теги. У кого какие идеи, какие есть либы, статьи, доки для организации такой работы? Пока есть мысль использовать какой-нить хтмл движок, типа гекко и питон + твистед веб.
anonymous
Умный протокол (на XML или S-выражениях) + GUI отдельной программой, которая этот протокол понимает. Проще некуда. Это ж unix way.
anonymous
()
Какого рода гибкость нужно обеспечить ? Менять положение и размеры элементов управления ? Если так, то смотри в сторону libglade + python. На мой взгляд самое обкатанное решение.

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

Bob1
()
Ответ на: комментарий от anonymous
Qt гораздо более lowlevel, чем GTK. Потому как GTK легко можно применять из нормальных, высокоуровневых языков, а Qt - только из этого смешного ассемблера с плюсами. Про питона не надо - оно там просто ужасно.
anonymous
()
Ответ на: комментарий от Bob1
Жаль, что так много программистов в юниксах сохраняют свои глупые виндовые привычки. Unix way - тривиальнейшая идеология, но очень немногие из вас оказались способны её осилить после того как вам так жестко испортили мозги вендовыми технологиями.
anonymous
()
Ответ на: комментарий от anonymous
Предложи свое решение. Только такое чтобы без изменения исходного текста дюбой из составляющих программ можно было бы менять функционал графического интерфейса. Только не надо "ля-ля" про unix way. Я идеологически бесплоден. Мне все эти басни, что по3.14зде ладошкой
Bob1
()
Ответ на: комментарий от Bob1
Моё решение выше - ГУЙ отдельно, логика отдельно. И как можно более простой протокол общения между ними - привязанный к логике, а не к ГУЮ.

Так работает unix way. Так ты можешь любой ГУЙ приделать к любой (правильно спроектированной) софтине. Не понравился - оторвать и приделать совсем другой. Лишь бы отражал функциональность софтины. Полностью или частично. Как правило - частично, потому как ни один ГУЙ не способен адекватно отобразить весь функционал CLI.

anonymous
()
Ответ на: комментарий от anonymous
Слушай, а чем мое решение не unix way, а ? В каком месте я сказал, чтобы логику пихать в интерфейс ? Ткни носом пжста. Бери питон, юзай сишные или плюсовые бустовые биндинги. В итоге, логика на си или си плюс плюс, а гуй на питоне. Удобно. Просто.

А твой интерфейс на S или XML -выражениях сначало еще надо реализовать. Можно конечно взять gtkserver, но уж больно он низкоуровневый. Python и тот удобнее.

Bob1
()
Ответ на: комментарий от Bob1
Ты сам сказал, что в твоём решении при изменении логики интерфейса надо будет менять логику приложения.

Да и подло это - сшивать логику с ГУЁм. Очень ограничивает функциональность.

anonymous
()
Ответ на: комментарий от anonymous
Нужно чтобы ГУЙ могли изменять ПОЛНЫЕ ламеры, знающие только хтмл:) Ни о каком С речи быть не может:) CLI не может быть, ибо это информациооный терминал:) Есть ли похожие проекты(в смысле организации интерфейса, а не фунционала), чтобы не изобретать велосипед?
anonymous
()
Ответ на: комментарий от anonymous
Я сказал, что для изменения функционала интерфейса придется менять исходные тексты программных модулей. Полюбому. Даже в случае использования бодяги навроде gtkserver-а.
Bob1
()
Ответ на: комментарий от anonymous
Для веба таких технологий хоть отбавляй, а для десктопа подобного не особо видно. Технология для отделения логики от гуя?
anonymous
()
Ответ на: комментарий от anonymous
> Нужно чтобы ГУЙ могли изменять ПОЛНЫЕ ламеры, знающие только хтмл:)

Что знаит хтмл ? JavaScript ? "Менять интерфейс" это "менять функционал интерфейса" или "менять расположение элементов управления" ? Если юзер хочет менять функционал, то он скорее всего должен быть программером, потому как функционал в любом случае разруливает программа. Без изменения исходников здесь врядли можно добится чего-то плодотворного. Впрочем все зависит от частной задачи.

Если юзер хочет менять дизайн интерфейса, то достаточно libglade. Чел просто правит *.xml-ку причем не в текстовом редакторе, а в WYSIWYG интерфейсе, а python автоматически подхватывает и показывает измененный интерфейс. Никаких компиляций.

Если нужны небольшие правки функционала интерфейса, то можно и в исходник глянуть. Благо python не си, разобраться можно.

Bob1
()
Ответ на: комментарий от anonymous
Пусть тогда описание гуйни будет на XML, и твои ламеры будут менять XSL, если им так хочется.
anonymous
()
Ответ на: комментарий от anonymous
Посмотри на гуёвые приложения из своего дистрибутива. Большинство из них будут примерами этой технологии.
anonymous
()
Ответ на: комментарий от anonymous
Пока два варианта: glade + python и html + движок браузера + любой бекенд, хоть на лиспе:) Второй вариант мне больше нравится тем, что он более гибок. Например мне нужно показывать анимированные картинки, в хтмл просто поставить гиф-ку - это 1 строчка в описании гуя. В гтк это не так просто сделать.
anonymous
()
Ответ на: комментарий от anonymous
+ можно выложить эту прогу в инет, можно организовать тонкие клиенты + сервер(хотя можно и самому организовать протокол передачи, но это более геморойно, чем использование готовых технологий).
anonymous
()
Ответ на: комментарий от kpanic
Решил пока остановиться на XUL + ajax
anonymous
()
Тикль. swing'ом прикрутить гуй к собственно программе. Смена гуя -- смена реализующего его тиклевского скрипта. (если у кого идиосинкразия на Motif-вид, сообщаю -- давно доступны скины, в пакете Tile).

fk0
()
Ответ на: комментарий от Bob1
> Предложи свое решение. Только такое чтобы без изменения исходного текста дюбой из составляющих программ можно было бы менять функционал графического интерфейса. Только не надо "ля-ля" про unix way. Я идеологически бесплоден. Мне все эти басни, что по3.14зде ладошкой

Ещё раз -- тикль. В исходных текстах твоих программ реализуется функционал, все функции которого необходимые для реализации GUI (а именно здесь происходит разрез отделяющий GUI, именно ИНТЕРФЕЙС, а не исключительно внешний ВИД, от собственно программы) выносятся на уровень тикля. Хочешь врукопашную, хочешь swing'ом. GUI пишется отдельно.

Впрочем тикль здесь за уши притянут. Такое на любом языке делается. В жабе нечто подобное на более примитивном уровне отдельных виджетов называется "model-view-controller". Ничто не мешает реализовать этот же MVC для приложения в целом, на любом языке.

fk0
()
Ответ на: комментарий от fk0
> Тикль. swing'ом прикрутить гуй к собственно программе.

может всё-таки SWIG'ом?

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