PowerShellFar — PowerShell host и автоматизация Far Manager

Здесь можно обсудить ваш любимый плагин.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

Latest post of the previous page:

Несколько замечаний по поводу новой версии Power panel в 1.1.10. Она задумана и реализована (пока как демо) так, чтобы работать с любым провайдером данных, не зная о его природе и прихотях. Пока опробована на 10 подручных провайдерах (встроенные FileSystem, Registry, Alias, Function, Environment, Variable, Certificate и внешние DirectoryServices, FeedStore, AssemblyCache) (в сущности, это как-будто получилось 10 разных панельных плагинов, правда, реально полезных из них может только 2-3). Идея, конечно, в том, что этих "плагинов" автоматически будет столько, сколько напишут PowerShell провайдеров (даже не зная про Фар, скорей всего).

В идеале, если бы PowerShell и эта технология провайдеров была бы уже причесана, все было бы почти ок. Но в реале, несмотря на универсальность, прихоти (и глюки-баги) у провайдеров-таки есть, и не мало. Тем не менее, пока эти прихоти не учитываются сознательно, чтобы система максимальна была готова к "незнакомому провайдеру" и могла получить от него максимум пользы без донастроек.

Протестировать всевозможных провайдеров (даже эти 10) особенно на предмет "защиты от дурака" вряд ли скоро получится. Поэтому, скрепя сердце, выкладываю версию с весьма вероятными просто багами и нюансами. Надеюсь на помощь в их выявлении.

Настройки конкретных провайдеров уже под персональный вкус - планируются, но пока универсальность и потенциальная работоспособность с любым и, главное, "неизвестным" провайдером - приоритет номер 1. Чего не хватает (скажем, поиск), пока должно компенсироваться возможностями самой PowerShell из комстроки или скриптами.

Приоритет номер 2 - это поддержка Unicode путей (в самой файловой системе тоже, кстати). Изображаться Фаром они, наверное, не будут правильно (типа ??? кое-где), но работать все должно и с этими огрехами, во всяком случае, такая задумка и пока туда все идет нормально.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

В PowerShellFar для элементов панелей я собираюсь ввести следующее правило для Selected{Paths|Items}: если выделенные элементы есть, возвращаются они, иначе коллекция из одного текущего элемента, если он не .., иначе пустая коллекция.

Подобное сейчас реализовано под несколько искусственным именем Hot{Paths|Items}. По опыту работы у меня получается, что я использую только Hot, а текущий вариант Selected{Paths|Items}, который дает именно выбранные элементы - просто никогда не нужен.

То есть предложение: Hot выбрасываю, а Selected работает, как Hot. В итоге избавляемся от похожих, но чуть разных методов и оставляем реально практичные. Будут 3 типа получения элемнтов: все, текущий, выбранные (в обобщенном смысле). По-моему, этого должно хватать и это вполне практично.

Где-то может проглядел подвох, когда уж очень надо именно подсвеченные элементы получить? (тогда в этом случае можно работать с Far.NET, логика которого остается прежней, правда, юникодные пути из Power panel через Far.NET не получить).
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

К тем, кто уже повозился с DataPanel. Наверное, все-таки имеет смысл сохранение сделать автоматическим, добавили запись, отредактировали или удалили - это сразу само отсылается в базу (если соответствующие команды адаптера заданы), по-записьно, то есть, так и с ошибками в данных проще разбираться. Ручное сохранение (CtrlS) я оставлю на некоторые специальные случаи, но сделаю, чтобы оно работало и в MemberPanel, например, редактируем запись с кучей полей и хотим сохранить изменения, оставаясь в записи. Возражения или другие варианты есть?

Да, и еще при добавлении записи (F7) сразу попадаем в MemberPanel ее данных, это вроде напрашивается. То есть это можно не предлагать, уже сделано, будет в след. версии.
User avatar
Zuz
Posts: 173
Joined: Wed 16 Mar, 2005 05:12
Location: Россия, Екатеринбург
Contact:

Post by Zuz »

2 NightRoman:
Обновился, сейчас уже не скажу с какой версии до:
PowerShellFar.1.1.17.rar
Far.NET.3.3.17.rar
Всё тупо установлено по умолчанию.

Окружение:
PS: WindowsXP-KB926140-v2-x86-RUS.exe
The FAR manager, version 1.71 alpha 4 (build 2228)

При запуске вываливается ошибка:
ERROR: plugin D:\Program Files\FAR\Current alpha\Plugins.NET\PowerShellFar:
Exception has been thrown by the target of an invocation.
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)
at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at FarManagerImpl.PluginManager.AddPlugin(Type type)
at FarManagerImpl.PluginManager.LoadAllFrom(String dir)
at FarManagerImpl.PluginManager.LoadPlugin(String dir)

В чем проблема, ума не приложу :oops:
Прочие .Net плагины, идущие в поставке Far.Net работают нормально.

И ещё в Build-JS.bat, поправь, пожалуйста, set farlib на "%FARHOME%\lib\FarNetIntf.dll", а то надоело кажый раз переделывать...
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

Zuz
Build-JS.bat поправил, спасибо за наводку (и в ReplaceSlashes.js заодно поправил устаревший код). Это-то легко.

С багой при загрузке не так легко. Недавно добавленнй развесистый стек инфо не дает мне ни малейшей идеи..

Охота на ведьм. Замечу, что "D:\Program Files\FAR\Current alpha\Plugins.NET\PowerShellFar" выглядит не совсем по умолчанию из-за дополнительного каталога "Current alpha". Что у тебя является FARHOME?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

На похожую проблему уже жаловались тут http://forum.farmanager.com/viewtopic.php?p=23819#23819

Путь Фара тоже "нестандартный", может, с этим как-то связано. Попробовал у себя *перенести* (то есть не оставив старого) Фар - все загрузилось без проблем...
User avatar
Zuz
Posts: 173
Joined: Wed 16 Mar, 2005 05:12
Location: Россия, Екатеринбург
Contact:

Post by Zuz »

2 NightRoman:
Провел тесты с чистым реестром + только твой плагин, пути по умолчанию Windows XP SP2 Rus, Server 2003 SP1 Eng

Far.NET.3.3.7.rar, PowerShellFar.1.1.7.rar плагины работают
Far.NET.3.3.8.rar, PowerShellFar.1.1.8 плагины работают
Far.NET.3.3.9.rar, PowerShellFar.1.1.9.rar плагины работают включая панель
Far.NET.3.3.10.rar, PowerShellFar.1.1.10.rar плагины работают включая панель
Far.NET.3.3.11.rar, PowerShellFar.1.1.11.rar плагины работают включая панель
Far.NET.3.3.12.rar, PowerShellFar.1.1.12.rar ошибка, PowerShellFar не загружается
Far.NET.3.3.13.rar, PowerShellFar.1.1.13.rar ошибка, PowerShellFar не загружается
Far.NET.3.3.14.rar, PowerShellFar.1.1.14.rar ошибка, PowerShellFar не загружается
Far.NET.3.3.15.rar, PowerShellFar.1.1.15.rar ошибка, PowerShellFar не загружается
Far.NET.3.3.16.rar, PowerShellFar.1.1.16.rar ошибка, PowerShellFar не загружается
Far.NET.3.3.17.rar, PowerShellFar.1.1.17.rar ошибка, PowerShellFar не загружается
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

Спасибо за исследование, собственно, теперь ясно где копать. Что появилось потенциально "опасного" в 1.1.12 версии - это: 1) настройки переехали в реестр; 2) у PowerShellFar появился свой системный профайл PowerShellFar.ps1

Буду думать, где собака порылась. Если у кого есть идеи-догадки, было бы полезно услышать. А еще у кого-то есть такие траблы?
Last edited by NightRoman on Fri 15 Jun, 2007 11:27, edited 1 time in total.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

Ага, на "чистом реестре" плагин не загрузился (правда, ошибка другая, но будем надеятся, что связанная с той). Дело за малым, скоро пофиксю.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

Zuz
Одну багу пофиксил (правда, это может быть и не твоя). Проверить можешь? Кладу фикс пока сюда.
Last edited by NightRoman on Fri 15 Jun, 2007 18:15, edited 1 time in total.
User avatar
Zuz
Posts: 173
Joined: Wed 16 Mar, 2005 05:12
Location: Россия, Екатеринбург
Contact:

Post by Zuz »

2 NightRoman:
Оно заработало :?

Попутно, найдена фича: PowerShellFar сохраняет всегда свои настройки в HKEY_CURRENT_USER\Software\Far забывая про HKEY_CURRENT_USER\Software\Far\Users, когда FAR запущен с ключиком /u.
У меня вот, вообще, в ветке HKEY_CURRENT_USER\Software\Far\ есть только ветка Users (без ключа /u не запускаю), может поэтому проблема у меня и вылезла ;-)
Хотелось бы и это дело пофиксить.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

Оно заработало

Отлично! Кстати, это благодаря тебе же, спасибо, без твоего анализа я бы не скоро догадался, где бага.
Попутно, найдена фича: ...
Да, блин, об этом я и не вспоминал вообще. Вроде у Фара свои функции для работы с реестром есть. Если я их заюзаю вместо дот-нетовских - наверное это решит проблему автоматически? Попробую.
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Post by t-rex »

NightRoman
Какие такие у фара есть функции? Фар тебе только передают путь к ветке HKCU\Software\Far\Plugins (или HKCU\Software\Far\Users\Name\Plugins) чтоб плагин знал куда писать свои настройки.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

t-rex
:) уж и помечтать нельзя... Ну типа этого я и имел в виду, и этого вроде будет достаточно.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

Уважаемые пользователи плагина - если есть предложения по дальнейшему развитию, улучшению или просто кто баги нашел - пожалуйста, пишите. На данный момент у меня идеи иссякли, в том хорошем смысле, что реализовано все, что было задумано и даже больше, и меня, как автора (и пользователя тоже, может самого активного) устраивает, как оно получилось и работает. Я с удовольствием могу продолжать работу, но нужны реальные кому-то нужные запросы, а не надуманные мной. С другой стороны, если все ОК, тогда все ОК (но так вроде не бывает?). Не буду обещать, что все пожелания исполню, но честно рассмотрю все и реализую полезные в общем смысле для плагина и, следовательно, для других потенциальных пользователей.

В принципе, то же самое относится и к FAR.NET плагину. Там точно полно всего еще можно творить, и я не против. Но не хотелось бы просто тупо добавлять еще не накрытый API Фара, надо, чтобы это кто-то запросил и следовательно, чтобы это было худо-бедно использовано-протестировано. Пока FAR.NET 3.3.x развивался по принципу - реализуется в основном то, что нужно для PowerShellFar (но ему уже вроде всего хватает на данный момент) или мне лично (мне тоже всего хватает на данный момент).

Инымы словами, если что-то надо, пишите, а не ждите, что в новом релизе что-то само исправится или появится, новых релизов может не быть или будут очень редко.
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Post by t-rex »

NightRoman
У тебя снова новый юзер на анг форуме
http://enforum.farmanager.com/viewtopic.php?p=1609#1609
Post Reply

Return to “Обсуждение плагинов”