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
()
Ответ на: комментарий от ann_lortemp2

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

Мёртвое, ненужное зеркало. Там же есть ссылка на оригинал https://www.tecgraf.puc-rio.br/iup:

IUP is a multi-platform toolkit for building graphical user interfaces. It offers a simple API in three basic languages: C, Lua and LED.

dataman ★★★★★
()
Ответ на: комментарий от dataman
Drivers
IUP WebBrowser Driver by Eric Wing & Chris Matzenbach

        A native driver for Web browser using Emscripten, a C/C++ to JavaScript compiler. On going work. Help needed!!!!!

IUP Android Driver by Eric Wing & Chris Matzenbach

        A native driver for Andoid. On going work. Help needed!!!!!

IUP iOS Driver by Eric Wing & Chris Matzenbach

        A native driver for iOS using Cocoa Touch. On going work. Help needed!!!!!

IUP MacOSX Driver by Eric Wing & Chris Matzenbach

        A native driver for MacOSX using Cocoa. Current initiative. On going work. Help needed!!!!!

        NOTE: in IUP 3.28 we added all the Eric and Chris contributions to the IUP SVN hoping more people can notice them and also contribute. Thanks!

IUP MacOSX Driver by Heesob Park

        A native driver for MacOSX using Cocoa. Old initiative

понятно.

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

Пых с пистоном смотрят на вас с недоумением. Причем Tcl намного грамотнее спроектирован.

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

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

Я подумал, что должны быть биндинги к ImGui, и не ошибся. :)
$ gh-search-repos imgui lua

Showing 132 of 132 repositories

Пока лучшим выглядит https://github.com/sonoro1234/LuaJIT-ImGui:

This is a LuaJIT binding for the excellent C++ immediate gui imgui. Uses cimgui to be the most «up to date» as possible.

There are backends for glfw, SDL2 and SDL3.
Notes:

  • currently this wrapper is based on version [1.92.3 docking of imgui]

Неподребство?

dataman ★★★★★
()

Тикль создавался с расчётом на то, что программисты будут писать на нём будучи в хламину. И, как я понял, дошло до того, что на нём только в таком состоянии и можно норм писать.

Поэтому для улучшения ситуации поместите спирт в моск.

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