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

Место, где разработчики плагинов могут поделиться своим опытом.
User avatar
John Doe
Бюрократ
Posts: 13860
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Latest post of the previous page:

И ещё можно попробовать сделать сам макрос похитрее, например или
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 »

Вроде бы не помогает. В панели переключался 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: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

И ещё можно попробовать сделать сам макрос похитрее
Спасибо. Я уже решил отказаться от переключения из редактора в панели. Пользователи попросят, тогда другое дело. В легальном же АПИ по управлению видимостью панелей интерес все равно есть в любом случае.
User avatar
John Doe
Бюрократ
Posts: 13860
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

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

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

Post by NightRoman »

Рад. Но мне не помогает (FarNet). Условия не совсем одинаковые, вероятно. Тем более, что после этого для воспроизведения моего сценария надо еще сразу и диалог запустить. И вот при этом диалоге на сцене Фара панели должны быть погашены.
User avatar
John Doe
Бюрократ
Posts: 13860
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

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

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

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

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

Потому и жду ответа от разработчиков по этой теме. Потом уж и на мантис пойду.
User avatar
John Doe
Бюрократ
Posts: 13860
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

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

P.S.
Пока что создаётся впечатление что что-то не так с вашей системой перевызова плагина.
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 »

Пока что создаётся впечатление что что-то не так с вашей системой перевызова плагина.
Спасибо за участие и желание помочь, но это скорей уже мешает основной теме. Так или не так с моей системой перевызова плагина - вопрос отдельный и интересный. И спорный. Но не хотелось бы, чтобы он забивал основной вопрос темы про АПИ.
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://bugs.farmanager.com/view.php?id=2611

Надеюсь на отклик разработчиков. Спасибо.
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 »

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

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

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

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

Аргумент странный. Но спорить не буду, разработчикам может быть видней.
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 »

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

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