Как скрыть панель (и наоборот, сделать видимой)

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

Как скрыть панель (и наоборот, сделать видимой)

Post by NightRoman »

Возможно, я не вижу чего-то очень простого прямо под носом, но не могу найти в Far API, как скрыть панель, и наоборот, сделать скрытую видимой. Подскажите, пожалуйста.
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Post by t-rex »

NightRoman
Послать макрос CtrlF2 или CtrlF1 :)
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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:

Post by NightRoman »

Хм, вообще говоря, то, что мне нужно, таким способом не выходит, так как нужно погасить панель немедленно, а не когда Far получит управление, чтобы сыграть макрос...

Иными словами, перед запуском внешнего консольного приложения из PowerShellFar надо бы панели прикрыть, как это и принято в Far. А когда оно отработало, панели восстановить, как были. Есть предложения?
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Post by t-rex »

NightRoman
Ну ты можешь перенаправить преложение в файл а потом вывести его под панелями.

Но не совсем понимаю что ты хочешь сделать.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Post by HaRT »

t-rex
Если я правильно понимаю, NightRoman хочет запустить в Фаровской консоли PowerShell-приложение, имеющее доступ к FARAPI через объектную модель PowerShellFar, подобно тому, как SHPCE запускает FJS-файлы.
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Post by t-rex »

HaRT
Ну а зачем гасить панели я не понимаю? Это же ни как не поможет.
Можно просто буффер консоль занулить.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

Я ничего в PowerShellFar сам не запускаю. Запускает юзер в своих PowerShell скриптах. Например простейшая команда: cmd. Ядро PowerShell перед запуском cmd сообщает мне об этом (но я даже не знаю, что именно запускается). Мне предлагается приготовиться к тому, что будет вызвано внешнее приложение. Я и готовлюсь - хочу погасить панели. Когда приложение отработает, движок мне опять скажет об этом, чтоб я мог восстановить экран, ну то есть панели.

Пока мне приходится делать полную очистку экрана перед запуском внешнего приложения. А это не то, как ведет себя сам Фар. А хотелось бы так же. Запустите просто cmd из Фара - панели гаснут, но без очистки экрана. Вот чего я и хочу воспроизвести.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Post by DrKnS »

Хм, кстати, тоже сталкивался с подобным: надо что-то вывести в буфер под панели из плагина, но апи позволяет только скопировать туда текущее содержимое консоли, т.е. чтобы туда дописать, надо как-то погасить панели, прочитать консоль, отфильтровать, если есть, кейбар и часы, дописать свое, вывести всё это барахло обратно и сделать FCTL_SETUSERSCREEN, но панели можно погасить только макросом, а фар его выполнит, только когда получит управление... :?
Смотрел, как делает плагин Autocomplete, если сказать ему вывести список, так он тоже затирает консоль...
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Post by t-rex »

Щя посмотрим код фара в этом месте, если я там разберусь то будет FCTL_GETUSERSCREEN
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Post by t-rex »

Значит так, пробуйте вот тут

http://farmanager.com/farbugs/Far.FlushUserScreen.rar

FCTL_GETUSERSCREEN=FCTL_SETANOTHERNUMERICSORT+1

FCTL_GETUSERSCREEN
выводит на экран userbuffer (то что под панелями)

если в плагине сделать

1. FCTL_GETUSERSCREEN
2. Запустить прогу
3. FCTL_SETUSERSCREEN

то всё будет выглядеть как будто прога запускалась из фара.

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

Баги с отрисовкой после выхода из плагина вполне могут быть но пока не знамечал.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

Спасибо. Проверил, работает. Это именно то, что надо. Проблем пока не вижу (но я еще не поигрался, как следует, конечно).

На проверку какой версии закладывать код? 1.71.2185 и выше?
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Post by t-rex »

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:

Post by NightRoman »

Пока знаю один баг - сразу после запуска фара тока в первый раз вывод идёт не там где ожидалось, пока не знаю как решить.
С этим справился уже у себя в плагине (заодно может кто подвох в таком подходе увидит): перед вызовом FCTL_GETUSERSCREEN запоминаю строку курсора и сразу после вызова устанавиливаю курсор туда. Все вроде получается адекватно. По идее, этот workaround и в самом Фаре должен получится (если это не бага, которая возможно и так будет пофиксена).
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Post by t-rex »

NightRoman
Да, я как раз про это думал. Надо будет попробовать.
Post Reply

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