LINUX.ORG.RU
ФорумTalks

Страдаю на Tcl/Tk

 ,


0

2

Немного о качестве батареек в Tcl/Tk:

  • Модуль cmdline в Tcllib писал наркоман, иначе не скажешь. Для вменяемого парсинга опций комадной строки пришлось брать сторонний модуль и доводить его напильником.
  • Поддержка статуса окна maximized есть под виндой и макосью, но нет под юниксами. EWMH для авторов tk ничего не значит. Порылся еще, через wm attributes . -zoomed 1 работает вроде. Но не через wm state.
  • Есть процедура regexp, но нет процедуры для квотирования строки для формирования регэкспов. Эту функцию ты должен написать сам.
  • Нет встроенной процедуры для «вернуть значение переменной, если она существует, иначе вернуть указанное значение». Её ты тоже должен написать сам.

Конкретно самого языка:

  • Возможности метапрограммирования это хорошо.
  • Если писать по уму, то всё надо обвешивать тестами еще сильнее, чем в питоне. Один лишний / пропущенный символ, и программа будет без диагностик просто обрабатывать чушь. Но так как я работаю с уже имеющимся кодом, в котором не было тестов, то пока забил.

Продолжаю наблюдения. Советы приветствуются.

Алсо, cast @Shadow

★★★

Последнее исправление: wandrien (всего исправлений: 2)
Ответ на: комментарий от wandrien

Я думал это ты все вокруг шелла возишься, а окна - на сдачу.

thesis ★★★★★
()

Эту функцию ты должен написать сам.

Да, есть такое. Я помню как все делали свою лямбду, например. Или вот самопальные объектные системы, тоже по фану. А вот практические задачи на тикле решать не так интересно, слишком многословно пишется всякая тривиальщина.

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

Тем не менее, целый gitk, например, написан на нём. Кода там нормально так. Из того, что в ходу. Были более крупные программы, но сходу не вспомню.

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

Кстати, вот вам вопрос. Какое бы слово вы использовали в названии функции: quote или escape?

proc regexp_quote {str} {
    regsub -all {[][{}()*+?.\\^$|]} $str {\\&} result
    return $result
}
wandrien ★★★
() автор топика

Отдельное кря - naming convention:

::cmdline::getopt argvVar optstring optVar valVar
::cmdline::getKnownOpt argvVar optstring optVar valVar
::cmdline::getoptions arglistVar optlist usage
::cmdline::getKnownOptions arglistVar optlist usage
::cmdline::usage optlist usage
::cmdline::getfiles patterns quiet
::cmdline::getArgv0

Бардак.

getoptions и getfiles, но getKnownOptions и getArgv0.

optstring и optlist, но argvVar и optVar.

Мне-то какого стиля придерживаться, чтобы было консистентно с библиотекой?

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

ИИшки дружно считают, что для Tcl лучше использовать snake_case. Но что-то мне подсказывает, что они звиздят.

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

Я так понимаю, что исторически использовалось простое слитное написание ака flatcase. А потом перешли на camelCase.

snake_case в Тикле не применяется, вроде как.

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

Вот вам, кстати, табличка из Википедии:

twowords    flatcase
TWOWORDS    UPPERCASE, SCREAMINGCASE
twoWords    (lower) camelCase, dromedaryCase
TwoWords    PascalCase, UpperCamelCase
two_words   snake_case, snail_case, pothole_case
TWO_WORDS   ALL_CAPS, SCREAMING_SNAKE_CASE, MACRO_CASE, CONSTANT_CASE
two_Words   camel_Snake_Case
Two_Words   Pascal_Snake_Case, Title_Case
two-words   kebab-case, dash-case, lisp-case, spinal-case
TWO-WORDS   TRAIN-CASE, COBOL-CASE, SCREAMING-KEBAB-CASE
Two-Words   Train-Case, HTTP-Header-Case
wandrien ★★★
() автор топика
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от wandrien

Мне-то какого стиля придерживаться, чтобы было консистентно с библиотекой?

Лучше camelCase, но если что-то короткое, то можно слитно. Так что optlist это вполне себе.

bread
()

Не, я давно на wxPython. Я просто привожу в пример, что нормальный UI был сделан давным-давно, и был лёгок и нетребователен к ресурсам и погромистам.

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

Из всей скриптоплеяды Tcl мой любимый говноязычок. В основном, потому что его очень легко и приятно встраивать в плюсовые проекты как язык для скриптинга и конфигов.

hateyoufeel ★★★★★
()

imho, многие wm xxx сильно зависят от window manager и вообще говоря просто «пожелания», hinting... Если WM не позволит maximized, то на весь экран и не распахнётся.

при винигрете недоделанных WM вперемешку с wayland, получается нехорошо. Никто-ж не знает кто у тебя wm

можешь попробовать вообще отключить взаимодействие с wm и пердоль на весь экран сам (заодно и декораций кстати не будет) ;-)

wm overrideredirect true и дальше с песней

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

что это? гуглится https://github.com/LuaDist/iup, но оно как будто мертвое.

так и не нашёл вменяемых кроссплатформенных GUI библиотек для Lua, только кривые биндинги к кутям и прочие непотребства.

есть Löve, но оно уже не совсем Lua, есть такое: https://github.com/rxi/lite – но это не то.
хочется чего-то вроде immediate mode gui кроссплатформенного, но увы и ах, а самому пилить – лапки.

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