Редактор БД плагинов

Здесь выкладываются готовые к использованию макросы и скрипты.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Редактор БД плагинов

Post by IgorZ »

(бывший "Экспорт / импорт данных LuaMacro")
Описание:
Данный скрипт позволяет просматривать данные плагинов, хранящиеся в локальном и глобальном профилях Far-а, редактировать их, экспортировать в файл, а также импортировать из ранее экспортированного файла. По умолчанию предлагаются данные LuaMacro. После выбора другого плагина умолчание меняется до перезагрузки макросов. Формат файла импорта/экспорта текстовый, довольно простой - фактически, .ini-формат с некоторыми дополнительным ограничениями, так что, в принципе, легко редактируемый при надобности. Можно последовательно сохранить несколько разрозненных кусков данных в один файл путём дописывания в конец. Полученный файл можно импортировать в Far.



В стандартной поставке идёт файл, добавляющий следующие возможности:
  • Пункт в меню плагинов.
Требуемая версия Far 3.0.4324+.

Attachments
DBEdit.3.1.0.7z
(19.02 KiB) Downloaded 81 times
DBEdit.2.1.8.7z
Последняя публичная версия не в виде модуля
(18.87 KiB) Downloaded 206 times
Last edited by IgorZ on Tue 23 May, 2023 06:39, edited 8 times in total.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Экспорт / импорт данных LuaMacro

Post by sToLp »

Latest post of the previous page:

IgorZ wrote: ieimp:<имя файла> автоматом записывает всё содержимое указанного файла в БД. Предлагаете, чтобы ieexp:<имя файла> автоматом записывал всё содержимое БД в указанный файл?
Спасибо, подоплёка Вашего вопроса понятна. Каюсь, когда я писал свою просьбу, то подразумевал запись в файл содержимого, относящегося к области макроса BookmarkManager. Потому что в ассоциациях на маску BookmarkManagerData.lmdata на импорт данных в макрос у меня внесена такая команда:
ieimp:BookmarkManagerData.lmdata
а на экспорт из базы в файл следующая:
lua:Plugin.Menu("4EBBEFC8-2084-4B7F-94C0-692CE136894D","31495183-8AD8-4CFE-B228-9C24CDF2C630") Keys("Enter 2*Down F2 2*CtrlLeft ShiftHome Del % F a r P r o f i l e % \\ M a c r o s \\ s c r i p t s \\ s h e _ l u a \\ Enter Right Enter F10")
и опасаюсь, что со временем последняя команда даже самим её написантом может быть воспринята как ребус.

Поэтому по зрелому размышлению полагаю, что префикс ieexp: наверное целесообразно оставить как есть, а для удобства экспорта в файл BookmarkManagerData.lmdata сделайте, пожалуйста, что-то типа: bmieexp:<имя файла> или м.б.: ieexp:bm<имя файла>.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Редактор БД плагинов (бывший "Экспорт / импорт данных LuaMacro")

Post by IgorZ »

Капитальная переработка (А я предупреждал: начнёшь делать редактирование - такое за собой потянет...). Даже название поменялось. Так что удаляйте старые файлы вручную. Или не удаляйте, чтобы использовать обе версии параллельно (хотя тогда будет, наверное, конфликтовать в меню плагинов, но точно не скажу - не проверял).

Версия 2.0.0 - Скрипт поменял название, префиксы командной строки тоже изменились (спорить, что должно быть раньше - яйцо или курицаимпорт или экспорт - больше нет повода ;)). Добавлена возможность создавать, редактировать и удалять переменные в базе. В том числе, возможно копирование переменной (и даже ключа - но пока без его содержимого) в другое место, даже между локальным и глобальным профилями. Добавлена возможность выбора плагина. При экспорте из командной строки можно указать шаблон экспортируемого ключа или переменной, и всё, подходящее под шаблон, будет экспортировано. Скажем, для LuaMacro можно указать dbexp:<LuaMacro>BookmarkManager, и в файл будут скинуты подключи BookmarkManagerConfig и BookmarkManagerData, как из глобального, так и из локального профилей. Или же, для AdvCmpEx можно указать (предположим, что БД плагина уже была выбрана раньше) dbexp:cmp, и будут экспортированы переменные CmpCase, CmpContents, CmpSize и CmpTime. Рефакторинг, мелкие правки.

Вроде, выловил все баги. Но в связи с большим объёмом переработки лучше быть осторожным - что-то мог и пропустить.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Редактор БД плагинов (бывший "Экспорт / импорт данных LuaMacro")

Post by sToLp »

Головокружительное по размаху обновление. Огромный труд. Спасибо!
Особая благодарность за префиксы!
У себя , чтобы не циклились при совпадении шорткатов с другими макросами.
А именно: a) добавил в макросы condition для отключения шорткатов сабжа в меню выбора макросов;
b) а для запуска сабжа из самого этого меню навесил его на те же шорткаты, но с добавлением модификатора Ctrl.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Редактор БД плагинов (бывший "Экспорт / импорт данных LuaMacro")

Post by IgorZ »

sToLp wrote:Головокружительное по размаху обновление. Огромный труд. Спасибо!
Особая благодарность за префиксы!
У себя , чтобы не циклились при совпадении шорткатов с другими макросами.
Для переназначения клавиш рекомендую модуль Rebind за авторством John Doe. Единственное, надо его править - заменить указанную функцию (по обеим ссылкам надо смотреть не шапку, а первый пост под ней). Для удобства пользования модулем можно использовать LuaManager (мой выбор ;))или Macro Browser alt.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Редактор БД плагинов (бывший "Экспорт / импорт данных LuaMacro")

Post by sToLp »

IgorZ wrote: Для переназначения клавиш рекомендую модуль Rebind за авторством John Doe. Единственное, надо его править - заменить указанную функцию (по обеим ссылкам надо смотреть не шапку, а первый пост под ней).
Модуль ставил. Но за редкой необходимостью менять клавиши именно на лету, очень редко его использовал. К тому же с самыми последними изменениями в Фаре пришлось его совсем отключить — т.к. и Ваш фикс теперь уже не помогает.
Для удобства пользования модулем можно использовать LuaManager (мой выбор ;))или Macro Browser alt.
И LuaManager, и Macro Browser alt. периодически использую вне связи с модулем.

Свои изменения в макросах сабжа подкорректировал, а то предыдущий вариант не вполне решал задачу.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Редактор БД плагинов (бывший "Экспорт / импорт данных LuaMacro")

Post by Shmuel »

sToLp wrote: К тому же с самыми последними изменениями в Фаре пришлось его совсем отключить — т.к. и Ваш фикс теперь уже не помогает.
А что конкретно не работает в Rebind? Я что-то не могу вспомнить, какие изменения последнего времени в Far или LuaMacro могли сломать Rebind. Вариант IgorZ я не пробовал, а попробовал со своим последним патчем - вроде работает.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Редактор БД плагинов (бывший "Экспорт / импорт данных LuaMacro")

Post by sToLp »

Shmuel wrote: А что конкретно не работает в Rebind?
Посмотрел у себя. В отключённом модуле пометка: -- 2016.03.10 отключён из-за AltF4 в меню выбора макросов. Сейчас смутно вспоминаю, что после обновления до актуальной ночной сборки на тот момент было множество ошибок при попытках применить AltF4 в меню выбора макросов, со ссылкой в них на модуль. И после его отключения ошибки пропали. В подробности тогда не вдавался, недосуг было.
После Вашего вопроса попробовал включить модуль (в редакции с правкой IgorZ Fri 20 Nov, 2015 06:11), и вроде бы он действительно нормально работает. Вот всё, что я могу доложить.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Редактор БД плагинов

Post by John Doe »

Спасибо за скрипт, когда-то я думал довести до ума свой прототип, но не сложилось (http://forum.farmanager.com/viewtopic.php?f=60&t=7934)

В вашем показалось сильно неудобным каждый раз выбирать GLOBAL/LOCAL с помощью меню (зачастую избыточного, не все плагины имеют оба профиля).
Мне кажется было бы удобнее переключаться между режимами с помощью хоткея, плюс как-то индицировать наличие L/G профиля того или иного плагина.

P.S.
И намеренно ли в меню плагинов между "DB" и "editor" получилось два пробела?

P.P.S.
В базе luamacro при использовании стандартных msave для сохранения таблиц получаются характерные значения, в виде кода.
Было бы неплохо как-то отображать такие таблицы в более натуральном виде.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Редактор БД плагинов

Post by IgorZ »

John Doe wrote:
Мне кажется было бы удобнее переключаться между режимами с помощью хоткея, плюс как-то индицировать наличие L/G профиля того или иного плагина.
Посмотрю, но переделка может оказаться объёмной, так что пока ничего не обещаю.
John Doe wrote:P.S.
И намеренно ли в меню плагинов между "DB" и "editor" получилось два пробела?
Нет. Небольшая ненамеренная кривоватость в языковых файлах. Пропущена из-за того, что я всё-таки пользуюсь русским языком, английский только "на экспорт". Уже поправил, выложу после того, как станет ясна судьба первого предложения.
John Doe wrote:P.P.S.
В базе luamacro при использовании стандартных msave для сохранения таблиц получаются характерные значения, в виде кода.
Было бы неплохо как-то отображать такие таблицы в более натуральном виде.
Думал над этим. Отказался, потому что редактировать (по F4) всё равно нужно код. Разве что дополнительно к Lua коду показывать результат исполнения? Прикину, как это будет выглядеть.
Last edited by IgorZ on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Спрятан оверквотинг
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Редактор БД плагинов

Post by IgorZ »

Версия 2.0.1 - Если локальная или глобальная БД плагина пуста, отрывается сразу корень другой. Переход на выбор LOCAL/GLOBAL - CtrlPgUp. Вывод в заголовке текущего местоположения. Для типа данных F.FST_DATA выводится также значение. Различные правки.
John Doe wrote:В вашем показалось сильно неудобным каждый раз выбирать GLOBAL/LOCAL с помощью меню (зачастую избыточного, не все плагины имеют оба профиля).
Мне кажется было бы удобнее переключаться между режимами с помощью хоткея, плюс как-то индицировать наличие L/G профиля того или иного плагина.
Теперь, если локакльного профиля у плагина нет, сразу открывается глобальный. И наоборот. Если нажать CtrlPgUp, то откроется самый корень, как в предыдущей версии. Для другого поведения пришлось бы слишком много переделывать, так что, надеюсь, устроит этот вариант.
John Doe wrote:В базе luamacro при использовании стандартных msave для сохранения таблиц получаются характерные значения, в виде кода.
Было бы неплохо как-то отображать такие таблицы в более натуральном виде.
Сделал вывод таких данных в несколько строк: исходник в первой и результат в остальных. Все строки реагируют на клавиши одинаково.
В общем, получилось довольно удачно - все переделки или малы, или сделаны на основе кусков из других моих скриптов, так что вышло куда быстрее, чем думал. Однако, пробуйте.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Редактор БД плагинов

Post by John Doe »

При попытке посмотреть Conemu Background получаю это

Code: Select all

Error

C:\Apps\Far3\Plugins\LuaMacro\luamacro.dll:
C:\Apps\Far3\Profile\Macros\scripts\Tools\DBEdit\DBEdit.lua:322: attempt to call a nil value
Stack Traceback
===============
(2)  C function 'function: 0x031f5898'
(3)  upvalue 'LuaToTbl' at file 'C:\Apps\Far3\Profile\Macros\scripts\Tools\DBEdit\DBEdit.lua:322'
   Local variables:
    elem = table: 0x0423b2a8  {type:4, parent:GLOBAL, name:PluginEnabled, value:
    s = table: 0x042a39a0  {}
    AddOne = Lua function 'AddOne' (defined at line 317 of chunk C:\Apps\Far3\Profile\Macros\scripts\Tools\DBEdit\
DBEdit.lua)
    (*temporary) = Lua function 'AddOne' (defined at line 317 of chunk C:\Apps\Far3\Profile\Macros\scripts\Tools\
DBEdit\DBEdit.lua)
    (*temporary) = nil
    (*temporary) = string: "[string \"\"]:1: unexpected symbol"
    (*temporary) = nil
    (*temporary) = string: "attempt to call a nil value"
(4) Lua upvalue 'ShowMenu' at file 'C:\Apps\Far3\Profile\Macros\scripts\Tools\DBEdit\DBEdit.lua:353'
   Local variables:
    root = string: "GLOBAL"
    Bottom = string: "Enter, Esc, F1, F2, F3, F4, F5, F10, Ins, Del, CtrlPgUp, CtrlS"
    pos = number: 1
    res = table: 0x038238d8  {BreakKey:C+S}
    HotKeys = table: 0x042a6808  {1:table: 0x037a72a0, 2:table: 0x042a68d8, 3:table: 0x04269308, 4:table: 
0x0410a260 (more...)}
    DBChanged = boolean: true
    tbl = table: 0x0423b240  {XmlConfigFile:table: 0x0385bd68, PluginEnabled:table: 0x0423b2a8}
    items = table: 0x0278ac30  {1:table: 0x0278ac58, 2:table: 0x0423afc8}

OK
Update
В списке плагинов присутствуют даже те, у которых настроек нет совсем, и вот при попытке их посмотреть видим пустые менюшки GLOBAL/LOCAL.
В идеале не отображать такие плагины вовсе
Хотя наверно в момент показа списка скрипт ещё не обладает это информацией..
Как вариант, по нажатию какой-нибудь комбинации клавиш можно всё-таки читать настройки всех плагинов, и убирать "пустые" пункты.
Ещё можно слева от имени с помощью L/G индицировать что где у плагина настройки.

И одно имхо.
Мне кажется логичнее если пункт в меню плагинов будет всегда предлагать список плагинов (курсор на последнем выбранном).
А для быстрого открытия последнего - хоткей, как и сейчас.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Редактор БД плагинов

Post by IgorZ »

Версия 2.0.2 - Исправлена ошибка со значением переменннй типа FST_DATA, не приводящимся к функции. Экспериментально: при вызове из меню плагинов выводится меню выбора БД. Рефакторинг, исправление мелких ошибок, вылезших в последней версии.
John Doe wrote:При попытке посмотреть Conemu Background получаю это
Поправил. Раньше никогда не встречал такой кривой вариант: там надо бы в формате FST_QWORD как 1 сохранять, а не в формате FST_DATA как строку chr(1).
John Doe wrote:В списке плагинов присутствуют даже те, у которых настроек нет совсем, и вот при попытке их посмотреть видим пустые менюшки GLOBAL/LOCAL.
В идеале не отображать такие плагины вовсе
С какой стати? В пустую базу можно вносить данные вручную (Ins), или импортировать из файла (F3). Но как это делать, если база не может быть открыта, поскольку отсутствует в списке? (Нет, можно через префикс, но зачем так извращаться?) Это как если бы в текстовом редакторе запрещали создавать новые файлы. Все базы должны быть равноправны, независимо от их содержимого.
John Doe wrote:Мне кажется логичнее если пункт в меню плагинов будет всегда предлагать список плагинов (курсор на последнем выбранном).
А для быстрого открытия последнего - хоткей, как и сейчас.
Сделал. Если вдруг народ будет сильно возмущаться, верну старый вариант.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Редактор БД плагинов

Post by John Doe »

IgorZ wrote: Все базы должны быть равноправны, независимо от их содержимого.
Не буду спорить, смысл в этом есть.
И вроде бы моё предложение тут ничему не противоречит:
John Doe wrote: Как вариант, по нажатию какой-нибудь комбинации клавиш можно всё-таки читать настройки всех плагинов, и убирать "пустые" пункты.
Ещё можно слева от имени с помощью L/G индицировать что где у плагина настройки.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Редактор БД плагинов

Post by IgorZ »

John Doe wrote:И вроде бы моё предложение тут ничему не противоречит:
John Doe wrote: Как вариант, по нажатию какой-нибудь комбинации клавиш можно всё-таки читать настройки всех плагинов, и убирать "пустые" пункты.
Ещё можно слева от имени с помощью L/G индицировать что где у плагина настройки.
Посмотрю, если не слишком накладно, попробую сделать. Но, просто ради интереса: зачем? Не получается представить ситуацию, в которой данная функциональность понадобится.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Редактор БД плагинов

Post by IgorZ »

John Doe wrote:Как вариант, по нажатию какой-нибудь комбинации клавиш можно всё-таки читать настройки всех плагинов, и убирать "пустые" пункты.
Ещё можно слева от имени с помощью L/G индицировать что где у плагина настройки.
Набросал вариант. Несмотря на оптимизацию, работает в 20 раз медленнее (340мс против 17мс без проверки на наличие данных). Прилагаю тестовый вариант (только исполняемый, языковые не менялись). Для тестирования в начале файла определена SEL_PLUGIN_EXT, выбирающая, какой функцией пользоваться - старой или новой, расширенной. Показ "пустых" баз переключается по CtrlH.
Attachments
DBEdit.lua.testSelectPluginExtended.7z
(9.28 KiB) Downloaded 90 times
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Редактор БД плагинов

Post by John Doe »

IgorZ wrote: работает в 20 раз медленнее
Предлагаю по умолчанию открывать "старую" функцию, а уже по хоткею (типа Ctrl-R) перебирать все базы, и отображать дополнительную информацию LG- (наверно лучше интервал увеличить, и "-" можно опустить, имхо).
Post Reply

Return to “Полезные макросы и скрипты”