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

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

Latest post of the previous page:

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

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:45

Вроде бы не помогает. В панели переключался SetCurrentAt(0), код всегда зовет ACTL_COMMIT:

Code: Select all

void Window::SetCurrentAt(int index)
{
	if (!Info.AdvControl(&MainGuid, ACTL_SETCURRENTWINDOW, index, 0))
		throw gcnew InvalidOperationException(__FUNCTION__ " failed, index = " + index);

	Info.AdvControl(&MainGuid, ACTL_COMMIT, 0, 0);
}

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:49

И ещё можно попробовать сделать сам макрос похитрее
Спасибо. Я уже решил отказаться от переключения из редактора в панели. Пользователи попросят, тогда другое дело. В легальном же АПИ по управлению видимостью панелей интерес все равно есть в любом случае.

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:53

NightRoman wrote:Вроде бы не помогает. В панели переключался SetCurrentAt(0), код всегда зовет ACTL_COMMIT:
Странно, мне помогает (luafar):

Code: Select all

far.AdvControl ("ACTL_SETCURRENTWINDOW", 1)
far.AdvControl ("ACTL_COMMIT")
far.MacroPost ("Keys 'CtrlO'")

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 14:10

Рад. Но мне не помогает (FarNet). Условия не совсем одинаковые, вероятно. Тем более, что после этого для воспроизведения моего сценария надо еще сразу и диалог запустить. И вот при этом диалоге на сцене Фара панели должны быть погашены.

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 14:18

NightRoman wrote:Условия не совсем одинаковые, вероятно.
Ну мы же не можем обо всех условиях сразу поговорить.
В данном случае я утверждаю, что сразу после ACTL_COMMIT у вас как и у меня панели должны быть доступны.
Если нет, то либо Энциклопедия нагло врёт, либо проблема в фаре (и о ней следует доложить на багтрекере), либо баг прячется где-то у вас, возможно в самом неожиданном месте, напрямую не связанном с предметом обсуждения.

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 14:31

А где энциклопедия врет? У меня переключение происходит, как и надо. Она не врет. Гашение панелей "хаком" в этом нетривиальном сценарии дальше не происходит. Непонятно на что тут жаловаться. Поэтому я жалуюсь на отсутствие АПИ по гашению панелей. Если бы оно было и не работало, то было бы ясно на что жаловаться.

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 14:37

Видимо, надо поместить виш на мантис. Но мне практически важно знать, насколько это в долгий ящик. А может это вообще нельзя в Фаре осуществить?

Если это все надолго, то буду думать над обходными путями. Если не очень надолго, то пока можно и подождать с продвинутыми сценариями. В простых уже вроде работает, хоть и некрасивыми приемами.

Потому и жду ответа от разработчиков по этой теме. Потом уж и на мантис пойду.

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 14:45

NightRoman wrote:Гашение панелей "хаком" в этом нетривиальном сценарии дальше не происходит.
Если вызванный далее макрос запускается почему-то не в контексте панелей, то вполне возможно это баг.
Проверить надо на более тривиальных сценариях, да.
Иначе не разобраться на каком этапе происходит сбой.

P.S.
Пока что создаётся впечатление что что-то не так с вашей системой перевызова плагина.

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 14:56

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

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 17:46

Поместил пожелание на мантис
http://bugs.farmanager.com/view.php?id=2611

Надеюсь на отклик разработчиков. Спасибо.

User avatar
DrKnS
Posts: 5148
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 5 times
Been thanked: 190 times

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

Post by DrKnS » Tue 04 Mar, 2014 11:12

NightRoman wrote:Юз-кейс. Новый режим "Command console" в PowerShellFar. Надо погасить панели и в цикле запускать диалог замаскированный под командную строку.
Юз-кейс пока не совсем очевиден. Почему панели не может погасить пользователь?

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 » Tue 04 Mar, 2014 12:51

Лишняя операция для пользователя. Это ему надо делать всегда. Так как если не погасит и войдет в режим консоли, то будет некрасиво и нерабоче, панели будут мешать, и чтобы погасить, надо будет уже обязательно выйти из режима консоли (так как это диалог в цикле, а не панели), погасить панели и снова войти. Это нехороший дизайн. Поэтому плагин сам гасит панели при входе в режим консоли, тем самым избавляя пользователя и от лишней операции, и от ошибки входа с невыключенными панелями.

User avatar
DrKnS
Posts: 5148
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 5 times
Been thanked: 190 times

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

Post by DrKnS » Tue 04 Mar, 2014 17:22

Лишняя операция для пользователя - это F11 Down Down Down...., поэтому, как правило, плагины вызываются макросом. Не вижу сложности добавить в макрос гашение панелей.

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 » Tue 04 Mar, 2014 17:33

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

Аргумент странный. Но спорить не буду, разработчикам может быть видней.

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 » Tue 04 Mar, 2014 17:36

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

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 » Tue 04 Mar, 2014 18:06

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

Post Reply

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