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

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

Плагины могут поменять сортировку на панели через АПИ (FCTL_SETSORTMODE). Хотя пользователь может и сам это сделать. Или плагин может клавиши послать. Но в АПИ это есть, как и некоторые другие способы управления панелями. Свойство видимости панелей ничем принципиально не отличается, еще одна характеристика состояния.
User avatar
HaRT
Moderator
Posts: 10823
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: 10823
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?
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 »

А чем подходит? (полу-шутка). Не подходило. Уже точно не помню, почему. Инструмент, которому это было нужно, я уже выпилил, слишком много хаков в нем было, танцы с гашением панелей один из них. Хотя бы области разные, модальность и тип текущего окна. Для каких-то сценариев это не важно, а для некоторых очень важно.
Last edited by NightRoman on Thu 28 Sep, 2017 16:51, edited 1 time in total.
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 »

NightRoman wrote: Thu 28 Sep, 2017 16:47А чем подходит?
Я же этого не утверждаю)
Если судить по названию "Command console", то могло и подойти. Область/модальность/тип как мне кажется не принципиальны, ведь режим можно переключать туда/обратно, возвращая исходную.

Но раз инструмента больше нет, тогда обсуждать нечего.
Post Reply

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