FarNet — плагин для написания плагинов на .NET языках

Здесь можно обсудить ваш любимый плагин.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: FarNet — плагин для написания плагинов на .NET языках

Post by Max Rusov »

Latest post of the previous page:

Ну, не знаю. Раньше была совершенно другая проблема: настройка цвета сохранялась только если два раза нажать F2. И она, кстати, осталась. А ошибка доступа - это что-то новое.
MaximKat
Posts: 18
Joined: Tue 22 Nov, 2011 06:10

Re: FarNet — плагин для написания плагинов на .NET языках

Post by MaximKat »

Пишу плагин файловой системы (если кому интересно, то работа с MTP протоколом для андроид-устройств). Спасибо за фреймворк, гораздо приятнее чем на С++ кодить. Однако есть непонятки.

1. Обнаружил, что вместо одного GetFiles/PutFiles, у ФарНета есть куча разных методов. Причем реализовать их похоже надо все, чтобы была полная функциональность. Встроенной в Panel возможности откатиться на стандартный фаровский механизм не нашел. Что очень странно, т.к. Panel0::AsGetFiles в сишном коде реализован, но если пользоваться Panel, судя по всему, никогда не вызывается. Было бы неплохо добавить такую фичу.

2. Если переопределить у панели UIKeyPressed и не отдавать функциональные клавиши стандартному обработчику, вроде как выходит как я хочу. Правильно? Ничего не поломается?

3. Обнаружил загадочный эффект, заключающийся в том, что этот несчастный, нигде не используемый, Panel0::AsGetFiles, если его все-таки использовать, приводит к потере имен целевых файлов. Вместо исходных имен получаются цифры равные порядковому номеру файла в каталоге. В чем глубокий смысл и можно ли эту "фичу" убрать? Ключевые места: 1 2 3

Спасибо
MaximKat
Posts: 18
Joined: Tue 22 Nov, 2011 06:10

Re: FarNet — плагин для написания плагинов на .NET языках

Post by MaximKat »

В догонку:

1. UIViewFile выставляет ExplorerModes.Edit. Баг?

2. При попытке скопировать что-то из нативной панели в панель модуля, в открывающемся диалоге в качестве пути стоит "::". Location выставляю правильно, в коммандной строке все нормально. ЧЯДНТ?

3. Есть ли какой-то готовый код для стандартных диалогов копирования/создания папки итд?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet — плагин для написания плагинов на .NET языках

Post by NightRoman »

Много букав :) Разбираюсь, отвечаю по мере.
Обнаружил, что вместо одного GetFiles/PutFiles, у ФарНета есть куча разных методов. Причем реализовать их похоже надо все, чтобы была полная функциональность.
Логично, вроде. Чтобы была полная, надо все. Но все зависит от панели. Есть панели, где минимум требуется.
Встроенной в Panel возможности откатиться на стандартный фаровский механизм не нашел. Что очень странно, т.к. Panel0::AsGetFiles в сишном коде реализован, но если пользоваться Panel, судя по всему, никогда не вызывается. Было бы неплохо добавить такую фичу.
Наверное, было бы неплохо. Однако, стандартные механизмы Фара в Фарнет не очень хорошо вписывается (попробовано так и сяк). Хоть и не связано напрямую, есть пара вишей на Мантисе, надеюсь, что что-то подвинется в этом направлении. До тех пор наворачивать в Фарнет что-то свое в обход нюансов, возможно, нерационально. Если виши так и не осуществятся, там видно будет. Но пока надежда есть. В основном, на первом више свет клином сходится.
http://bugs.farmanager.com/view.php?id=1699
http://bugs.farmanager.com/view.php?id=1702

Если переопределить у панели UIKeyPressed и не отдавать функциональные клавиши стандартному обработчику, вроде как выходит как я хочу. Правильно? Ничего не поломается?
По идее, нормальный сценарий.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet — плагин для написания плагинов на .NET языках

Post by NightRoman »

UIViewFile выставляет ExplorerModes.Edit. Баг?
Навскидку выглядит как баг, разберусь с этим, продолжу с остальным.
А в чем проявляется?
MaximKat
Posts: 18
Joined: Tue 22 Nov, 2011 06:10

Re: FarNet — плагин для написания плагинов на .NET языках

Post by MaximKat »

NightRoman wrote:
UIViewFile выставляет ExplorerModes.Edit. Баг?
Навскидку выглядит как баг, разберусь с этим, продолжу с остальным.
А в чем проявляется?
Особо вроде ни в чем, GetContent не может отличить F3 от F4, но юз-кейс для этого я с трудом себе представляю. Но "неаккуратненько как-то" :) Случаянно заметил, пока разбирался как что работает.
Наверное, было бы неплохо. Однако, стандартные механизмы Фара в Фарнет не очень хорошо вписывается (попробовано так и сяк)
Ну я имел ввиду добавить флаг в эксплорер, который просто отключит все нестандартные обработчики функциональных клавиш у панели. Тогда достаточно будет реализовать GetContent и ImportFiles, а все остальное выйдет автоматически. Впрочем меня устроит и хак с наследованием от панели, при условии что удастся вернуть родные имена файлов.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet — плагин для написания плагинов на .NET языках

Post by NightRoman »

При попытке скопировать что-то из нативной панели в панель модуля, в открывающемся диалоге в качестве пути стоит "::". Location выставляю правильно, в коммандной строке все нормально. ЧЯДНТ?
Меня тоже интересует что это за :: и ЧЯДНТ. А есть в природе плагины, которые копируют со стандартной панели на плагиновую и у них не ::? Я бы посмотрел код или с автором связался поучиться чтоб.
Есть ли какой-то готовый код для стандартных диалогов копирования/создания папки итд?
Нет. В виртуальной системе эти операции, вообще говоря, не очень стандартные, могут требовать дополнительные данные, например.

Ты смотрел этот модуль? http://forum.farmanager.com/viewtopic.php?f=11&t=6499
С его автором многие вопросы здесь в форуме уже поднимались.
MaximKat
Posts: 18
Joined: Tue 22 Nov, 2011 06:10

Re: FarNet — плагин для написания плагинов на .NET языках

Post by MaximKat »

Меня тоже интересует что это за :: и ЧЯДНТ. А есть в природе плагины, которые копируют со стандартной панели на плагиновую и у них не ::? Я бы посмотрел код или с автором связался поучиться чтоб.
Ээээ... Ну arclite, ftp. Все стандартные вроде нормально работают.
Ты смотрел этот модуль? viewtopic.php?f=11&t=6499
Угум, подсматриваю в код периодически.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet — плагин для написания плагинов на .NET языках

Post by NightRoman »

Да, точно, у arclite стоит arc:, а не ::. Независимо куда в него копируется (в какую подпапку архива). Пытаюсь понять, какая польза от этого.
MaximKat
Posts: 18
Joined: Tue 22 Nov, 2011 06:10

Re: FarNet — плагин для написания плагинов на .NET языках

Post by MaximKat »

NightRoman wrote:Да, точно, у arclite стоит arc:, а не ::. Независимо куда в него копируется (в какую подпапку архива). Пытаюсь понять, какая польза от этого.
В данном случае никакой, разумеется. Но хотелось бы туда свой текст подставлять, или на худой конец Location. Вот еще нашел: Network правильно работает.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet — плагин для написания плагинов на .NET языках

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:

Re: FarNet — плагин для написания плагинов на .NET языках

Post by NightRoman »

Вот еще нашел: Network правильно работает.
А как именно правильно?
MaximKat
Posts: 18
Joined: Tue 22 Nov, 2011 06:10

Re: FarNet — плагин для написания плагинов на .NET языках

Post by MaximKat »

А как именно правильно?
В диалоге копирования пишет сразу полный путь, куда копировать.
NightRoman wrote:Описал бы хоть свой юз-кейс чуть подробнее, если не сложно.
Да такой же как стандартное поведение Фара. Чтобы можно было с клавиатуры вводить каталог назначения. Меня двоеточия смутили слегка, я думал там автоматически будет текущий путь подставляться.

Но это в общем-то не очень важно, просто странно. Меня больше беспокоит в данный момент то, что имена файлов на цифры меняются в AsGetFiles. Я еще на код повтыкал, понял что в стандартной ситуации это использоуется только по Ctrl+Q. Посему вопрос: можно ли вот тут заменить canExploreLocation на canExploreLocation || !(opMode & OPM_QUICKVIEW)? Тогда для дефолтной панели ничего не изменится, а если я переопределю UIKeyPressed, как выше описано, то будут браться имена файлов из эксплорера. Или там в комментариях чуть выше что-то очень похожее написано, но флага SystemNames я не нашел.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet — плагин для написания плагинов на .NET языках

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:

Re: FarNet — плагин для написания плагинов на .NET языках

Post by NightRoman »

Посему вопрос: можно ли вот тут заменить...
Смотрю. Понадобится какое-то время для ответа. И на замену, если будет положительный.
MaximKat
Posts: 18
Joined: Tue 22 Nov, 2011 06:10

Re: FarNet — плагин для написания плагинов на .NET языках

Post by MaximKat »

NightRoman wrote:
В диалоге копирования пишет сразу полный путь, куда копировать.
Ну какой, конкретно? Ты со стандартной панелью не путаешь, случайно?
Активная панель - стандартная, пассивная - Network. Нажимаем F5, открывается диалог копирования, в нем сразу введен полный путь назначения: \\MAKC-PC\Users\ например.
Post Reply

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