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

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

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

Post by NightRoman » Sun 02 Mar, 2014 20:12

Как погасить/показать панели Фара из плагина? Есть ли такой АПИ? Мне не попадается...

Есть команда "Показать юзер экран". Но она имеет временный эффект и в дальнейших операциях панели то и дело мелькают. А хочется именно иметь их погашенными навовсе (пока плагин сам не скажет показать) и работать с консолью без панелей.

Юз-кейс. Новый режим "Command console" в PowerShellFar. Надо погасить панели и в цикле запускать диалог замаскированный под командную строку. Получилось неплохо и работоспособно. С гашением панелей в простых ситуациях пока выкручиваюсь асинхронным посылом клавиш CtrlF1, CtrlF2 через вызов макроса с откладыванием перевызова плагина (известный трюк). Но:

- во-первых, это как-то некрасиво и хак
- во-вторых, работает именно в простых случаях, а в чуть более сложных эти клавиши летят не туда (например, в диалог ком.строки), это пол-беды, вся беда, что они не летят в панели, и они не гасятся в таком случае, как задумано.

Если такого АПИ для гашения/показа панелей нет, то возможно ли это будет реализовать, если предложить? А может есть существующие обходные пути получше посыла CtrlF1, CtrlF2?

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

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

Post by HaRT » Sun 02 Mar, 2014 20:18

NightRoman wrote:А может есть существующие обходные пути получше посыла CtrlF1, CtrlF2?
[b]CtrlO[/b] — вдвое меньше клавиш. :P
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

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

Post by NightRoman » Sun 02 Mar, 2014 20:22

За неимением лучшего попробую и это, вдруг сработает в моем случае (чем черт не шутит). Но в принципе, что если надо погасить или показать одну конкретную панель?

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

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

Post by NightRoman » Sun 02 Mar, 2014 20:39

Попробовал CtrlO. То же самое, похоже. В некоторых случаях не срабатывает, как хотелось бы.

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

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

Post by John Doe » Sun 02 Mar, 2014 21:15

Что значит в некоторых случаях?

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

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

Post by NightRoman » Sun 02 Mar, 2014 23:45

John Doe wrote:Что значит в некоторых случаях?
Например, если пытаться запустить мой юз-кейс из немодального редактора путем переключения в панели, гашения их и запуска диалога фиктивной комстроки.

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

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

Post by John Doe » Mon 03 Mar, 2014 00:34

Вы не указываете что именно здесь может сработать не так как хотелось бы

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

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

Post by NightRoman » Mon 03 Mar, 2014 08:02

Панели оказываются не погашенными, когда запускается диалог комстроки. Клавиши, предназначенные для гашения панелей, попадают в диалог, а не в панели.

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

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

Post by NightRoman » Mon 03 Mar, 2014 09:34

Поигравшись с разными цепочками макросов, добился вроде желаемого поведения, как-то так (C#)

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

User avatar
Alexey Samlyukov
Posts: 1760
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 2 times
Contact:

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

Post by Alexey Samlyukov » Mon 03 Mar, 2014 09:36

в плаге ПиквьюАдв что-то подобное делалось через трансляцию маросов.
в апи помимо гашения панелей не хватает возможности узнать что конкрено под диалогом (я как-то предлагал через ACTL_GETWINDOWTYPE)

опередил... :)

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

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

Post by NightRoman » Mon 03 Mar, 2014 13:03

... но не работает гладко при моих авто тестах, где тоже многое основано на макросах и отложенных перевызовах. Пожалуй, от возможности переключения в панели из редактора с гашением их для фиктивной комстроки пока воздержусь, от греха подальше.

Ну не важно, это все про обходные пути речь шла. Вопрос - развивать ли их дальше или лучше подождать легальных способов управления видимостью панелей через АПИ?

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

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

Post by John Doe » Mon 03 Mar, 2014 13:10

"Keys'F12 0 CtrlO'"
А почему тут переключаетесь в панели макросом, а не используете API?

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

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

Post by NightRoman » Mon 03 Mar, 2014 13:13

Пробовал. В сочетании с гашением панелей не сработало, панели не гасли. Если же макросом и переключиться, и погасить, то работает.

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

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

Post by NightRoman » Mon 03 Mar, 2014 13:15

Переключение в панели, если не ошибаюсь, через АПИ работает, но реально отработает только когда Фар получит управление. То есть надо тоже делать асинхронно и потом посылать еще макрос гашения, а потом перевызывать плагин.

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

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

Post by John Doe » Mon 03 Mar, 2014 13:31

NightRoman wrote:Переключение в панели, если не ошибаюсь, через АПИ работает, но реально отработает только когда Фар получит управление.
Вроде бы ACTL_COMMIT помогает

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

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

Post by John Doe » Mon 03 Mar, 2014 13:44

И ещё можно попробовать сделать сам макрос похитрее, например или

Post Reply

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