Page 1 of 4

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

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


Скрипт добавляет себя в меню плагинов.



Требуемая версия Far 3.0.4324+.


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

Posted: Thu 03 Mar, 2016 10:30
by IgorZ
Вроде, работает.

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

Posted: Thu 03 Mar, 2016 15:26
by sToLp
IgorZ wrote:Вроде, работает.
Скачав и установив, тут же посредством BookmarkManagerData.lmdata перенёс настройки макроса на трёх переносных дисках на одной машине, и на двух стационарных дисках на двух других машинах. Везде Win10x64. В Far`ах опробовал и в x64-ых, и в x86-ых. То есть всего 10 проб. И все без проблем, быстро и хорошо. Завтра посмотрю на Win10x32, Win7x64 и Win7x32.

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

Posted: Thu 03 Mar, 2016 17:48
by sToLp
Хотелка: при импорте тоже сделать с возможностью выбора дописать или перезаписать.

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

Posted: Thu 03 Mar, 2016 19:54
by sToLp
Маленькая занозка: AltShiftF3, в меню "Импорт из файла" ничего не делаю, Esc, появляется красное сообщение "Импорт / экспорт данных LuaMacro": Отстутствует имя файла. В данном случае сообщение не нужно.

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

Posted: Fri 04 Mar, 2016 05:52
by IgorZ
sToLp wrote:Хотелка: при импорте тоже сделать с возможностью выбора дописать или перезаписать.
Можно.
sToLp wrote:Маленькая занозка: AltShiftF3, в меню "Импорт из файла" ничего не делаю, Esc, появляется красное сообщение "Импорт / экспорт данных LuaMacro": Отстутствует имя файла. В данном случае сообщение не нужно.
Действительно. Это я перегрелся малость, добавляя обработку ошибок.

Вопрос всем: надо ли добавить возможность редактирования переменных? Или здесь это излишне?

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

Posted: Fri 04 Mar, 2016 06:07
by sToLp
IgorZ wrote:надо ли добавить возможность редактирования переменных? Или здесь это излишне?
Имхо, запас карман не тянет — универсальность не помешает.

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

Posted: Fri 04 Mar, 2016 09:14
by IgorZ
Версия 1.0.1 - Добавлен выбор действия, если импортируемая переменная существует. Убрано сообщение об ошибке в случае отказа пользователя.
sToLp wrote:
IgorZ wrote:надо ли добавить возможность редактирования переменных? Или здесь это излишне?
Имхо, запас карман не тянет — универсальность не помешает.
Подумаю ещё. А то тогда уж и добавление, и удаление параметров напрашивается, и возникает вопрос, стоит ли ограничиваться только LuaMacro, или другие плагины тоже сканировать... Пока остановлюсь на этом. А там посмотрим.

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

Posted: Fri 04 Mar, 2016 16:13
by sToLp
IgorZ wrote: Версия 1.0.1
Спасибо за совершенствование!
Количество проб существенно увеличилось. На всех опробованных (в Win10x64, 10x32, 7x64 и 7x32; Far64 и 86) отличий не замечено, макрос работал хорошо.
Пожелание касательно данной версии следующее.
В меню "Импорт из файла" такая линейка кнопок:

Code: Select all

{ 1 Перезаписать } [ 2 Все ] [ 3 Пропустить ] [ 4 Пропустить все ] [ 5 Отмена ]
А хотелось бы, например, такие:

Code: Select all

{ 1 Добавить } [ 2 Все ] [ 3 Пропустить ] [ 4 Вместо ] [ 5 Все ] 
                           [ 6 Отмена ]
И ведь [ Пропустить все ] и [ Отмена ] в этом случае разве не то же самое?

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

Posted: Fri 04 Mar, 2016 18:58
by sToLp
sToLp wrote:
IgorZ wrote:надо ли добавить возможность редактирования переменных? Или здесь это излишне?
Имхо, запас карман не тянет — универсальность не помешает.
Теперь, после того как вдоволь поупражнялся с макросом, мнение моё поменялось. Голода в редактировании переменных окружения среды нет. Поскольку для этого есть и макросы (например Менеджер переменных окружения, EnvEdit — редактор переменных среды), и как минимум один плагин (Environment Manager). И втискивать эту функцию ещё и в данный макрос навряд ли целесообразно.

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

Posted: Fri 04 Mar, 2016 21:18
by sToLp
Из практики созрела и вот такая "комплексная" хотелка:

По команде экспорта (F2) в вызываемом диалоге подставляется имя файла, соответствующее строке меню "Импорт/экспорт данных LuaMacro", с которой диалог вызван, например: BookmarkManagerData.lmdata.

Пользователь, конечно, может изменить его. Но зачем? Ведь проще использовать этот же файл и для последующего импорта.

Поэтому хорошо бы и в диалог для импорта подставлять не маску типа ?.lmdata, а точно также имя файла, соответствующее строке, с которой вызван данный диалог. Это заметно ускорит дело.

И далее хорошо бы расширить функциональность префикса ieexp: до ieexp:[<имя файла>].

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

Posted: Wed 09 Mar, 2016 10:27
by IgorZ
sToLp wrote:
А хотелось бы, например, такие:

Code: Select all

{ 1 Добавить } [ 2 Все ] [ 3 Пропустить ] [ 4 Вместо ] [ 5 Все ] [ 6 Отмена ]
Мой вариант соответствует общепринятому списку вариантов (текущий заменить новым; заменить для всех случаев; оставить старый вариант; всегда оставлять старый; немедленно остановить работу), в том числе и в отношении порядка кнопок. Соответственно, он в силу привычности не требует от пользователя размышлений. Ваш вариант лично меня заставил задуматься, что же значит каждая кнопка? И я не уверен, что понял правильно. Так что Ваше предложение неприемлемо с точки зрения эргономики.
sToLp wrote:И ведь [ Пропустить все ] и [ Отмена ] в этом случае разве не то же самое?
Разумеется, нет. "Пропустить все" допишет новые переменные, пропустив существующие. "Отмена" немедленно прекратит работу. Опять же, это стандартный подход.
sToLp wrote:
Теперь, после того как вдоволь поупражнялся с макросом, мнение моё поменялось. Голода в редактировании переменных окружения среды нет. Поскольку для этого есть и макросы (например Менеджер переменных окружения, EnvEdit — редактор переменных среды), и как минимум один плагин (Environment Manager). И втискивать эту функцию ещё и в данный макрос навряд ли целесообразно.
Речь шла не о редактировании переменных окружения, а о редактировании переменных в БД LuaMacro (тех, что в профиле Far-а, в файле 4EBBEFC8-2084-4B7F-94C0-692CE136894D.db).
sToLp wrote:
Поэтому хорошо бы и в диалог для импорта подставлять не маску типа ?.lmdata, а точно также имя файла, соответствующее строке, с которой вызван данный диалог. Это заметно ускорит дело.
Импорт - потенциально небезопасен, в отличие от экспорта. Поэтому автоподстановка имени здесь нежелательна. Для упрощения работы в диалогах выбора имени есть история, общая для импорта и экспорта, можно вставить имя файла в командную строку после префикса, можно воспользоваться плагином DialogTools.
sToLp wrote:И далее хорошо бы расширить функциональность префикса ieexp: до ieexp:[<имя файла>].
И подставлять его в качестве значения по умолчанию при нажатии F2? Или сохранять вообще без диалога выбора имени файла? Как именно Вы себе это представляете?

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

Posted: Thu 10 Mar, 2016 05:26
by sToLp
IgorZ
Принято к сведению. Со стандартами, обычаями и привычками не поспоришь. Благодарю за развёрнутый ответ!
IgorZ wrote:
sToLp wrote:И далее хорошо бы расширить функциональность префикса ieexp: до ieexp:[<имя файла>].
И подставлять его в качестве значения по умолчанию при нажатии F2? Или сохранять вообще без диалога выбора имени файла? Как именно Вы себе это представляете?
Представляю это себе аналогичным ieimp:[<имя файла>].

И простите за задержку и скудность моего ответа — работные дни.

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

Posted: Fri 11 Mar, 2016 04:42
by IgorZ
sToLp wrote:
Представляю это себе аналогичным ieimp:[<имя файла>].
ieimp:<имя файла> автоматом записывает всё содержимое указанного файла в БД. Предлагаете, чтобы ieexp:<имя файла> автоматом записывал всё содержимое БД в указанный файл?

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

Posted: Fri 11 Mar, 2016 13:24
by sToLp
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<имя файла>.

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

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

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

Вроде, выловил все баги. Но в связи с большим объёмом переработки лучше быть осторожным - что-то мог и пропустить.