-
Notifications
You must be signed in to change notification settings - Fork 831
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Шаблонизатор #2
Comments
Кастую команду разработчиков в этот тред и прошу проголосовать. |
Голосую против, потому что такой подход |
Я сейчас делаю упрощенную шаблонизацию на UI "как есть" (см ветку newui) |
Ничего не убивает, я сейчас переписываю текущий UI с использованием валидного XML (зачем изобретать методы get_HTML() когда все было придумано до нас в XML) |
то как это сейчас сделано, требует от разработчика еще больше усилий чем просто сверстать панель плагина самому.
не убьет если предоставить автору плагина готовые теги шаблона.
зачем XML о.О? есть прекрасные python style шаблонизаторы Mako, Jinja2 |
Я неправильно выразился - Genshi тоже python style, можно использовать питон как и в любом другом темплейтере. Его преимущество в том, что он не определяет новую разметку темплейтов (Мако использует % для своих тегов, а Jinja2 фигурные скобки), а использует свойства XML, что просто более читабельно для человека который просто будет редактировать шаблон.
Просто текущая реализация далека от юзабилити, хотя идея отличная ИМХО конструктор UI идея гут и должна жить, темплейтер тоже имеет право на жизнь - текущая реалиазация dump_base_page или MainWindow просто просит темплейтера. В идеале темплейтер и UI конструктор должны быть тесно связаны. Например возможность загрузить темплейт в контрол (например сложный какой-то для редактирования кучи всего) или включить контрол в темплейт простым тегом |
DmZ, Возможно есть смысл сделать XML-based генератор UI (см. Glade) |
ЗЫ. немного кода из Mako и Genshi: Genshi: ИМХО последнее красивее :) Хотя с Мако не работал, может и там можно лаконично написать |
Glade всего лишь инструмент, при загрузке интерфейса все равно вызывается тонна кода, которая правда спрятана от девелопера. ЗЫ. с любым темплейтером можно сделать <% ui.Table(someparams) %> и теор. получить консистентный UI. А каким образом реализовать этот самый ui.Table - тонной прямого кода, тонной кода которая будет парсить файлик widgets/Table.xml и т.п... |
Согласен красивее :) но зато медленней (http://stackoverflow.com/questions/1324238/what-is-the-fastest-template-system-for-python). Хотя скорость в данном случае не особо важна. Отдаю свой голос за Genshi. |
Хорошая ссылочка :) правда нам 10х1000 таблиц не нужно (хотя кто знает) |
Голосую против! |
Мне тоже "удобно" пользоваться ui (до полного удобства пилить и пилить)
В любом случае менятся будут css стили, которые ну никак на UI не завязаны :) и разница по времени изменения внешнего вида при UI и при шаблоне не существенна. PS. Я за шаблоны если они органично впишутся в систему UI-классов |
Склонен к идеи использования шаблонизатора, и если понадобится при помощи его вызывать код ui. Только вопрос, неполучится ли у нас "спагетти-стайл" код если один будет юзать шаблоны, а другой ui |
DmZ убедил. |
DmZ, я не совсем это в виду имел. Допустим, плагин имеет layout.xml: Платформа имеет файлы panel.html, button.html, label.html, etc. (возможно, с питоновыми вставками для правильной генерации HTML основываясь на атрибутах в Layout XML) которые парсятся шаблонизатором. Потом на ходу берется сий layout.xml и перегоняется в HTML, используя panel.html, button.html, label.html, etc. |
Попробую обьяснить на примере, ИМХО это тоже, что Евгений имел ввиду. В итоге получим: Hello Dude Функции UI выдают на-гора соответствующие теги XML: >>> ui.Span("Dude").toxml() '' И в коде таким образом можно использовать конструкции вида (псевдокод): template = initTemplate() window = ui.MainWindow() template.appendElements(window) return template.render() или вида: template = initTemplate() template.appendFromFile('layout.xml') return template.render() Таким образом обеспечится консистентность вида между темплейтером и UI-виджетами. ЗЫ. Если лень писать xml для сложных виджетов, то можно запрограмить это в питоне и на конечном виджете вызвать toxml() и задампить вывод в файл, для последующего юзания - вариантов использования просто масса. |
Это божественно, я сжигаю рукописи своего UI (: |
А сколько еще интересных идей/опыта есть ;) ЗЫ. Попытаюсь завтра накидать пример рабочий на своих плагинах (а то сегодняшнее пиво все ушло на предыдущее описание :) ) |
DmZ молодчина! |
Предлагаю перейти на использование шаблонизатора!
The text was updated successfully, but these errors were encountered: