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

Место, где разработчики плагинов могут поделиться своим опытом.
User avatar
NightRoman
Posts: 5909
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 11 times
Contact:

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

Post by NightRoman » Tue 04 Mar, 2014 18:06

Latest post of the previous page:

Плагины могут поменять сортировку на панели через АПИ (FCTL_SETSORTMODE). Хотя пользователь может и сам это сделать. Или плагин может клавиши послать. Но в АПИ это есть, как и некоторые другие способы управления панелями. Свойство видимости панелей ничем принципиально не отличается, еще одна характеристика состояния.

User avatar
HaRT
Moderator
Posts: 8508
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 74 times
Been thanked: 136 times

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

Post by HaRT » Tue 04 Mar, 2014 18:17

DrKnS
Я поддерживаю NightRoman — описываемый им сценарий (вызов плагина в режиме консоли) наглядно демонстрирует необходимость в нормальном способе программного управления видимостью панелей.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
NightRoman
Posts: 5909
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 11 times
Contact:

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

Post by NightRoman » Tue 04 Mar, 2014 18:53

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

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

Я открыл запуск этого режима консоли для скриптов ($Psf.StartConsole()). Но есть ограничение - это должна быть по сути последняя команда, ибо выполняется асинхронно, так как надо послать клавиши и дать их Фару отработать. А если бы было нормальное гашение панелей, то можно было бы дать скриптам и аналогичный *модальный* метод (типа $Psf.EnterConsole()). То есть скрипты могли бы предложить пользователю интерактивно что-то покодить в консоли в специально созданном контексте, а потом продолжить работу немедленно по окончанию $Psf.EnterConsole(), когда юзер выйдет из консоли.

User avatar
DrKnS
Posts: 5007
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 167 times

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

Post by DrKnS » Tue 04 Mar, 2014 19:37

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

Я не нашел прямых ссылок на последний FarNet (пакетные менеджеры - спасибо, не надо).

User avatar
NightRoman
Posts: 5909
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 11 times
Contact:

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

Post by NightRoman » Tue 04 Mar, 2014 19:44

В шапках все написано. И прямые ссылки есть для "пакетные менеджеры - спасибо, не надо"
Вот прямые ссылки.
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: 5007
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 167 times

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

Post by DrKnS » Tue 04 Mar, 2014 20:00

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

Что-то подсказывает мне, что линейка клавиш у тебя отключена :)

User avatar
HaRT
Moderator
Posts: 8508
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 74 times
Been thanked: 136 times

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

Post by HaRT » Tue 04 Mar, 2014 20:03

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

User avatar
NightRoman
Posts: 5909
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 11 times
Contact:

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

Post by NightRoman » Tue 04 Mar, 2014 20:29

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

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

User avatar
NightRoman
Posts: 5909
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 11 times
Contact:

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

Post by NightRoman » Tue 04 Mar, 2014 20:30

А, HaRT уже опередил про линейку клавиш и меню. Только надо и уметь проверять видимость, чтобы восстанавливать потом в исходное состояние.

User avatar
NightRoman
Posts: 5909
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 11 times
Contact:

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

Post by NightRoman » Tue 04 Mar, 2014 20:57

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

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: 5909
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 11 times
Contact:

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

Post by NightRoman » Wed 05 Mar, 2014 04:43

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

В общем, кажется, можно выкрутиться плагину, если постараться (с упомянутыми ограничениями), но это не нормальный способ работы с Фаром, конечно. Если будет АПИ, задействую незамедлительно, протестирую, и т.п.

User avatar
John Doe
Бюрократ
Posts: 11980
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 26 times
Been thanked: 136 times

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

Post by John Doe » Mon 07 Jul, 2014 19:18

Также не нашёл возможности через апи включить/выключить QView/Info/Tree

User avatar
NightRoman
Posts: 5909
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 11 times
Contact:

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

Post by NightRoman » Mon 07 Jul, 2014 19:23

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

User avatar
John Doe
Бюрократ
Posts: 11980
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 26 times
Been thanked: 136 times

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

Post by John Doe » Thu 28 Sep, 2017 14:53

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

User avatar
NightRoman
Posts: 5909
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 11 times
Contact:

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

Post by NightRoman » Thu 28 Sep, 2017 16:47

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

User avatar
John Doe
Бюрократ
Posts: 11980
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 26 times
Been thanked: 136 times

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

Post by John Doe » Thu 28 Sep, 2017 17:03

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

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

Post Reply

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