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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.