WxLua — использование WxWidgets из Lua-скриптов

Здесь обсуждается всё, что касается макросов.
Post Reply
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

WxLua — использование WxWidgets из Lua-скриптов

Post by IgorZ »

Наверное, многие слышали про кроссплатформенную графическую библиотеку WxWidgets, а кто-то, возможно даже использует её. Не так давно я обнаружил, что она адаптирована и для Lua: WxLua. Теперь, найдя, наконец, время, решил поделиться с сообществом.

Достоинства: довольно легко и просто делать графические скрипты для Far. Надо ли это? Ну, пусть лучше будет такая возможность, чем нет.

Недостатки:
  • при возникновении ошибки может подвесить или уронить Far, поэтому требует большей аккуратности при написании скриптов;
  • переопределяет функцию _G.print, что приводит к ошибкам при попытке обратиться к print с привычными параметрами. Способы борьбы:
    • вручную заменить все вызовы print на mf.print (на мой взгляд, разумно для своих скриптов, особенно для выкладываемых публично);
    • в _macroinit.lua добавить следующий фрагмент:

      Code: Select all

      pcall(require,"wx")
      _G.print = mf.print
      (Этот способ предпочтительнее, на мой взгляд, для скриптов чужого авторства).
Установка: качаем с https://sourceforge.net/projects/wxlua/ ... /2.8.12.3/ архив wxLua-2.8.12.3-Lua-5.1.5-MSW-Unicode.zip, из каталога bin достаём wx.dll и кладём в %FarProfile%\Macros\lib32. К сожалению, скомпилированная версия имеется только для 32 бит, но там же есть и исходники, так что желающие могут скомпилировать сами.

Документация: Ну и для затравки - простенький скрипт для просмотра графических файлов.
Last edited by IgorZ on Tue 03 Dec, 2019 05:38, edited 4 times in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

WxLua

Post by citRiks »

IgorZ wrote: Tue 26 Nov, 2019 07:45 скомпилированная версия имеется только для 32 бит
А нельзя ли для тех, кто сам не собирает, сделать версию и под x64, и приложить здесь или к скрипту?
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

WxLua

Post by buniak_a_h »

citRiks, +1
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

WxLua

Post by John Doe »

User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

WxLua

Post by zg »

John Doe wrote: Tue 26 Nov, 2019 17:20 Гуглится вот это https://dl.bintray.com/muhkuh/Muhkuh/or ... ua/2.8.12/
там в экспортах такое _Z22wxInitAllImageHandlersv, поэтому нет.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

WxLua

Post by IgorZ »

citRiks wrote: Tue 26 Nov, 2019 16:21
IgorZ wrote: Tue 26 Nov, 2019 07:45 скомпилированная версия имеется только для 32 бит
А нельзя ли для тех, кто сам не собирает, сделать версию и под x64, и приложить здесь или к скрипту?
Не ко мне. Я с C/C++ - на "вы": практики нет, на работе другие языки востребованы.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

WxLua

Post by IgorZ »

Добавил в шапку замечание по нюансу, возникающему при использовании wxLua и стандартной функции print. Сразу забыл про это написать, приношу извинения.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

WxLua — использование WxWidgets из Lua-скриптов

Post by John Doe »

IgorZ wrote: Tue 26 Nov, 2019 07:45 вручную заменить все вызовы print на mf.print (на мой взгляд, разумно разве что для выкладываемых публично макросов);
Давно использую именно mf.print, и считаю это достаточно разумным.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

WxLua — использование WxWidgets из Lua-скриптов

Post by IgorZ »

John Doe wrote: Mon 02 Dec, 2019 14:10
IgorZ wrote: Tue 26 Nov, 2019 07:45 вручную заменить все вызовы print на mf.print (на мой взгляд, разумно разве что для выкладываемых публично макросов);
Давно использую именно mf.print, и считаю это достаточно разумным.
Если использовать только свои скрипты, то да, к тому же, предотвращает потенциальные проблемы у остальных пользователей этого скрипта. А если у человека много чужих, да ещё регулярно обновляющихся? Каждый раз после скачивания проверять скрипт и заменять вручную (да ещё и учитывать, что автор из своих соображений может, скажем, определить в файле свою локальную функцию print, так что автозамена не метод)? А вариант с добавлением двух строк в _macroinit.lua универсален, прост и снимает данную проблему полностью, так что для большинства пользователей предпочтительнее.

P. S. Уточню формулировку насчёт способов борьбы.
Last edited by IgorZ on Tue 03 Dec, 2019 05:39, edited 3 times in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

WxLua — использование WxWidgets из Lua-скриптов

Post by buniak_a_h »

zg wrote: Tue 26 Nov, 2019 17:49
John Doe wrote: Tue 26 Nov, 2019 17:20 Гуглится вот это https://dl.bintray.com/muhkuh/Muhkuh/or ... ua/2.8.12/
там в экспортах такое _Z22wxInitAllImageHandlersv, поэтому нет.
Однако работает …
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

WxLua — использование WxWidgets из Lua-скриптов

Post by John Doe »

IgorZ wrote: Tue 03 Dec, 2019 05:27 Каждый раз после скачивания проверять скрипт и заменять вручную
При возникновении реального конфликта можно сообщить автору, и вероятнее всего он сам исправит раз и навсегда.

А с какой целью библиотекой переопределяется print?
Подозреваю что это может настраиваться.
(хотя не похоже чтобы было просто: https://www.mail-archive.com/wxlua-user ... 01491.html)
Last edited by John Doe on Tue 03 Dec, 2019 09:23, edited 1 time in total.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

WxLua — использование WxWidgets из Lua-скриптов

Post by IgorZ »

John Doe wrote: Tue 03 Dec, 2019 08:40
IgorZ wrote: Tue 03 Dec, 2019 05:27 Каждый раз после скачивания проверять скрипт и заменять вручную
При возникновении реального конфликта можно сообщить автору, и вероятнее всего он сам исправит раз и навсегда.
Вполне возможно. Но возможны и варианты. А пользователю, как правило, удобнее всего сделать то, что делается единожды, не слишком сложно, при этом работает сразу и с гарантированным результатом. Так что написать автору лишним не будет, но и ждать, когда он выложит исправленную версию - вариант не для всех и не в любой ситуации.
John Doe wrote: Tue 03 Dec, 2019 08:40 А с какой целью библиотекой переопределяется print?
Подозреваю что это может настраиваться.
(хотя не похоже чтобы было просто: https://www.mail-archive.com/wxlua-user ... 01491.html)
Поначалу предполагал, что он должен выводить текст на графическую форму. Но проверка показала, что всё сложнее. Так что нашёл и проверил обходное решение и отложил разбор до поры, когда не будет более важных проблем.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

WxLua — использование WxWidgets из Lua-скриптов

Post by IgorZ »

citRiks wrote: Mon 30 Dec, 2019 21:48 IgorZ,

М.б. стоит обратить внимание ещё на один нюанс, связанный с сабжевым скриптом.

  1. Это относится к библиотеке, а не к данному скрипту. Соответственно, Вашему посту место в теме библиотеки. Примите во внимание на будущее.
  2. С библиотекой, к сожалению, ничего не сделать. Если только найдётся энтузиаст, который подхватит выпавшее из рук автора знамя; благо, исходные тексты в наличии.
Post Reply

Return to “Обсуждение макросов”