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

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

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

Post by IgorZ » Tue 26 Nov, 2019 07:45

Наверное, многие слышали про кроссплатформенную графическую библиотеку 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.

citRiks
Posts: 73
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 8 times
Been thanked: 5 times

WxLua

Post by citRiks » Tue 26 Nov, 2019 16:21

IgorZ wrote:
Tue 26 Nov, 2019 07:45
скомпилированная версия имеется только для 32 бит
А нельзя ли для тех, кто сам не собирает, сделать версию и под x64, и приложить здесь или к скрипту?

buniak_a_h
Posts: 1232
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 88 times
Been thanked: 73 times
Contact:

WxLua

Post by buniak_a_h » Tue 26 Nov, 2019 16:44

citRiks, +1

User avatar
John Doe
Бюрократ
Posts: 12527
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 234 times

WxLua

Post by John Doe » Tue 26 Nov, 2019 17:20


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

WxLua

Post by zg » 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, поэтому нет.

IgorZ
Posts: 637
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 10 times
Been thanked: 47 times

WxLua

Post by IgorZ » Wed 27 Nov, 2019 09:49

citRiks wrote:
Tue 26 Nov, 2019 16:21
IgorZ wrote:
Tue 26 Nov, 2019 07:45
скомпилированная версия имеется только для 32 бит
А нельзя ли для тех, кто сам не собирает, сделать версию и под x64, и приложить здесь или к скрипту?
Не ко мне. Я с C/C++ - на "вы": практики нет, на работе другие языки востребованы.

IgorZ
Posts: 637
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 10 times
Been thanked: 47 times

WxLua

Post by IgorZ » Mon 02 Dec, 2019 06:07

Добавил в шапку замечание по нюансу, возникающему при использовании wxLua и стандартной функции print. Сразу забыл про это написать, приношу извинения.

User avatar
John Doe
Бюрократ
Posts: 12527
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 234 times

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

Post by John Doe » Mon 02 Dec, 2019 14:10

IgorZ wrote:
Tue 26 Nov, 2019 07:45
вручную заменить все вызовы print на mf.print (на мой взгляд, разумно разве что для выкладываемых публично макросов);
Давно использую именно mf.print, и считаю это достаточно разумным.

IgorZ
Posts: 637
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 10 times
Been thanked: 47 times

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

Post by IgorZ » Tue 03 Dec, 2019 05:27

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.

buniak_a_h
Posts: 1232
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 88 times
Been thanked: 73 times
Contact:

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

Post by buniak_a_h » Tue 03 Dec, 2019 07:08

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: 12527
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 234 times

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

Post by John Doe » Tue 03 Dec, 2019 08:40

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: 637
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 10 times
Been thanked: 47 times

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

Post by IgorZ » Wed 04 Dec, 2019 05:38

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)
Поначалу предполагал, что он должен выводить текст на графическую форму. Но проверка показала, что всё сложнее. Так что нашёл и проверил обходное решение и отложил разбор до поры, когда не будет более важных проблем.

Post Reply

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