Latest post of the previous page:
Плагины могут поменять сортировку на панели через АПИ (FCTL_SETSORTMODE). Хотя пользователь может и сам это сделать. Или плагин может клавиши послать. Но в АПИ это есть, как и некоторые другие способы управления панелями. Свойство видимости панелей ничем принципиально не отличается, еще одна характеристика состояния.Как погасить панели из плагина?
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
- HaRT
- Moderator
- Posts: 10823
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Re: Как погасить панели из плагина?
DrKnS
Я поддерживаю NightRoman — описываемый им сценарий (вызов плагина в режиме консоли) наглядно демонстрирует необходимость в нормальном способе программного управления видимостью панелей.
Я поддерживаю NightRoman — описываемый им сценарий (вызов плагина в режиме консоли) наглядно демонстрирует необходимость в нормальном способе программного управления видимостью панелей.
Фар есть инструмент, а не нянька. © 2009 DrKnS
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Как погасить панели из плагина?
Слава богу, не я один.
Есть еще один аргумент. Юз-кейс, который сейчас либо нельзя, либо не очень просто реализовать:
Я открыл запуск этого режима консоли для скриптов ($Psf.StartConsole()). Но есть ограничение - это должна быть по сути последняя команда, ибо выполняется асинхронно, так как надо послать клавиши и дать их Фару отработать. А если бы было нормальное гашение панелей, то можно было бы дать скриптам и аналогичный *модальный* метод (типа $Psf.EnterConsole()). То есть скрипты могли бы предложить пользователю интерактивно что-то покодить в консоли в специально созданном контексте, а потом продолжить работу немедленно по окончанию $Psf.EnterConsole(), когда юзер выйдет из консоли.
Есть еще один аргумент. Юз-кейс, который сейчас либо нельзя, либо не очень просто реализовать:
Я открыл запуск этого режима консоли для скриптов ($Psf.StartConsole()). Но есть ограничение - это должна быть по сути последняя команда, ибо выполняется асинхронно, так как надо послать клавиши и дать их Фару отработать. А если бы было нормальное гашение панелей, то можно было бы дать скриптам и аналогичный *модальный* метод (типа $Psf.EnterConsole()). То есть скрипты могли бы предложить пользователю интерактивно что-то покодить в консоли в специально созданном контексте, а потом продолжить работу немедленно по окончанию $Psf.EnterConsole(), когда юзер выйдет из консоли.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Как погасить панели из плагина?
В шапках все написано. И прямые ссылки есть для "пакетные менеджеры - спасибо, не надо"
Вот прямые ссылки.
http://nuget.org/api/v2/package/FarNet
http://nuget.org/api/v2/package/FarNet.PowerShellFar
Арклайт это понимает. Брать из папок tools\FarHome, tools\FarHome.x86|x64.
Также есть и скрипт, который все это сделает сам и даже будет следить за обновлениями. Потому что пакетные менеджеры и их сервисы делают это очень простым. Пис!
Вот прямые ссылки.
http://nuget.org/api/v2/package/FarNet
http://nuget.org/api/v2/package/FarNet.PowerShellFar
Арклайт это понимает. Брать из папок tools\FarHome, tools\FarHome.x86|x64.
Также есть и скрипт, который все это сделает сам и даже будет следить за обновлениями. Потому что пакетные менеджеры и их сервисы делают это очень простым. Пис!
- HaRT
- Moderator
- Posts: 10823
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Re: Как погасить панели из плагина?
Кстати, да, если уж расширять API на управление видимостью, то хорошо бы туда отдельными битиками лувую, правую, меню и линейку клавиш.DrKnS wrote:Что-то подсказывает мне, что линейка клавиш у тебя отключена
Фар есть инструмент, а не нянька. © 2009 DrKnS
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Как погасить панели из плагина?
Да. Но я знаю про этот "дефект", тестировал и с ней. В след. версии будет получше. А потом буду просить АПИ по отключению ее . А может есть?DrKnS wrote:Ага, спасибо.
Что-то подсказывает мне, что линейка клавиш у тебя отключена
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Как погасить панели из плагина?
А, HaRT уже опередил про линейку клавиш и меню. Только надо и уметь проверять видимость, чтобы восстанавливать потом в исходное состояние.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Как погасить панели из плагина?
С линейкой клавиш пока тоже "хаком", общий код приседаний такой при запуске режима консоли:
Ну и потом восстанавливаю подобным же образом. Кстати, восстановление панелей по CtrlO не всегда работает (детали сложно объяснить, это в тестах только проявляется), так что индивидуально посылаю CtrlF1/F2, так работает и в тестах.
А с меню хуже, проверить видимость хаком можно, а для гашения вроде нет хоткея, только через настройки. Оно "уедет наверх" после первой команды с любым выводом на экран, но то, что меню вначале или при прокрутке видно на экране - дефект, конечно. Но буду надеятся на АПИ в свое время.
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'");
А с меню хуже, проверить видимость хаком можно, а для гашения вроде нет хоткея, только через настройки. Оно "уедет наверх" после первой команды с любым выводом на экран, но то, что меню вначале или при прокрутке видно на экране - дефект, конечно. Но буду надеятся на АПИ в свое время.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Как погасить панели из плагина?
Обновил версию модуля PowerShellFar, выложил. Пока с хаками, но вроде все нормально скрывается и восстанавливается, а именно - панели, строка клавиш, строка меню. И они вроде нигде не мелькают, как бывало, во время работы в режиме консоли.
В общем, кажется, можно выкрутиться плагину, если постараться (с упомянутыми ограничениями), но это не нормальный способ работы с Фаром, конечно. Если будет АПИ, задействую незамедлительно, протестирую, и т.п.
В общем, кажется, можно выкрутиться плагину, если постараться (с упомянутыми ограничениями), но это не нормальный способ работы с Фаром, конечно. Если будет АПИ, задействую незамедлительно, протестирую, и т.п.
- John Doe
- Бюрократ
- Posts: 13807
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 426 times
- Contact:
Re: Как погасить панели из плагина?
Также не нашёл возможности через апи включить/выключить QView/Info/Tree
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Как погасить панели из плагина?
Вроде и нет такой возможности. Только макросы могут помочь.John Doe wrote:Также не нашёл возможности через апи включить/выключить QView/Info/Tree
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Как погасить панели из плагина?
А чем подходит? (полу-шутка). Не подходило. Уже точно не помню, почему. Инструмент, которому это было нужно, я уже выпилил, слишком много хаков в нем было, танцы с гашением панелей один из них. Хотя бы области разные, модальность и тип текущего окна. Для каких-то сценариев это не важно, а для некоторых очень важно.
Last edited by NightRoman on Thu 28 Sep, 2017 16:51, edited 1 time in total.
- John Doe
- Бюрократ
- Posts: 13807
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 426 times
- Contact:
Как погасить панели из плагина?
Я же этого не утверждаю)
Если судить по названию "Command console", то могло и подойти. Область/модальность/тип как мне кажется не принципиальны, ведь режим можно переключать туда/обратно, возвращая исходную.
Но раз инструмента больше нет, тогда обсуждать нечего.