Как погасить панели из плагина?

Место, где разработчики плагинов могут поделиться своим опытом.
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: Как погасить панели из плагина?

Post by NightRoman »

Latest post of the previous page:

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

Аргумент странный. Но спорить не буду, разработчикам может быть видней.
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: Как погасить панели из плагина?

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: Как погасить панели из плагина?

Post by NightRoman »

Плагины могут поменять сортировку на панели через АПИ (FCTL_SETSORTMODE). Хотя пользователь может и сам это сделать. Или плагин может клавиши послать. Но в АПИ это есть, как и некоторые другие способы управления панелями. Свойство видимости панелей ничем принципиально не отличается, еще одна характеристика состояния.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Как погасить панели из плагина?

Post by HaRT »

DrKnS
Я поддерживаю NightRoman — описываемый им сценарий (вызов плагина в режиме консоли) наглядно демонстрирует необходимость в нормальном способе программного управления видимостью панелей.
Фар есть инструмент, а не нянька. © 2009 DrKnS
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: Как погасить панели из плагина?

Post by NightRoman »

Слава богу, не я один.

Есть еще один аргумент. Юз-кейс, который сейчас либо нельзя, либо не очень просто реализовать:

Я открыл запуск этого режима консоли для скриптов ($Psf.StartConsole()). Но есть ограничение - это должна быть по сути последняя команда, ибо выполняется асинхронно, так как надо послать клавиши и дать их Фару отработать. А если бы было нормальное гашение панелей, то можно было бы дать скриптам и аналогичный *модальный* метод (типа $Psf.EnterConsole()). То есть скрипты могли бы предложить пользователю интерактивно что-то покодить в консоли в специально созданном контексте, а потом продолжить работу немедленно по окончанию $Psf.EnterConsole(), когда юзер выйдет из консоли.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Как погасить панели из плагина?

Post by DrKnS »

А как всё это пощупать?

Я не нашел прямых ссылок на последний FarNet (пакетные менеджеры - спасибо, не надо).
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: Как погасить панели из плагина?

Post by NightRoman »

В шапках все написано. И прямые ссылки есть для "пакетные менеджеры - спасибо, не надо"
Вот прямые ссылки.
http://nuget.org/api/v2/package/FarNet
http://nuget.org/api/v2/package/FarNet.PowerShellFar
Арклайт это понимает. Брать из папок tools\FarHome, tools\FarHome.x86|x64.

Также есть и скрипт, который все это сделает сам и даже будет следить за обновлениями. Потому что пакетные менеджеры и их сервисы делают это очень простым. :) Пис!
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Как погасить панели из плагина?

Post by DrKnS »

Ага, спасибо.

Что-то подсказывает мне, что линейка клавиш у тебя отключена :)
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Как погасить панели из плагина?

Post by HaRT »

DrKnS wrote:Что-то подсказывает мне, что линейка клавиш у тебя отключена :)
Кстати, да, если уж расширять API на управление видимостью, то хорошо бы туда отдельными битиками лувую, правую, меню и линейку клавиш.
Фар есть инструмент, а не нянька. © 2009 DrKnS
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: Как погасить панели из плагина?

Post by NightRoman »

DrKnS wrote:Ага, спасибо.

Что-то подсказывает мне, что линейка клавиш у тебя отключена :)
Да. Но я знаю про этот "дефект", тестировал и с ней. В след. версии будет получше. А потом буду просить АПИ по отключению ее :). А может есть?
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: Как погасить панели из плагина?

Post by NightRoman »

А, HaRT уже опередил про линейку клавиш и меню. Только надо и уметь проверять видимость, чтобы восстанавливать потом в исходное состояние.
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: Как погасить панели из плагина?

Post by NightRoman »

С линейкой клавиш пока тоже "хаком", общий код приседаний такой при запуске режима консоли:

Code: Select all

			// save visibility of panels and key bar
			_visiblePanel1 = Far.Api.Panel.IsVisible;
			_visiblePanel2 = Far.Api.Panel2.IsVisible;
			_visibleKeyBar = Console.CursorTop - Console.WindowTop == Console.WindowHeight - 2;
			
			// post hide panels and key bar
			if (_visiblePanel1 || _visiblePanel2)
				Far.Api.PostMacro("Keys'CtrlO'");
			if (_visibleKeyBar)
				Far.Api.PostMacro("Keys'CtrlB'");
Ну и потом восстанавливаю подобным же образом. Кстати, восстановление панелей по CtrlO не всегда работает (детали сложно объяснить, это в тестах только проявляется), так что индивидуально посылаю CtrlF1/F2, так работает и в тестах.

А с меню хуже, проверить видимость хаком можно, а для гашения вроде нет хоткея, только через настройки. Оно "уедет наверх" после первой команды с любым выводом на экран, но то, что меню вначале или при прокрутке видно на экране - дефект, конечно. Но буду надеятся на АПИ в свое время.
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: Как погасить панели из плагина?

Post by NightRoman »

Обновил версию модуля PowerShellFar, выложил. Пока с хаками, но вроде все нормально скрывается и восстанавливается, а именно - панели, строка клавиш, строка меню. И они вроде нигде не мелькают, как бывало, во время работы в режиме консоли.

В общем, кажется, можно выкрутиться плагину, если постараться (с упомянутыми ограничениями), но это не нормальный способ работы с Фаром, конечно. Если будет АПИ, задействую незамедлительно, протестирую, и т.п.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Как погасить панели из плагина?

Post by John Doe »

Также не нашёл возможности через апи включить/выключить QView/Info/Tree
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: Как погасить панели из плагина?

Post by NightRoman »

John Doe wrote:Также не нашёл возможности через апи включить/выключить QView/Info/Tree
Вроде и нет такой возможности. Только макросы могут помочь.
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 »

По сабжу.
Чем не подходит FCTL_GETUSERSCREEN?
Post Reply

Return to “Разработка плагинов”