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

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

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

Post by NightRoman » Mon 29 Jan, 2007 16:43

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

User avatar
t-rex
Страшный и ужасный
Posts: 4872
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

Post by t-rex » Mon 29 Jan, 2007 16:54

NightRoman
Послать макрос CtrlF2 или CtrlF1 :)

User avatar
NightRoman
Posts: 5873
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 9 times
Contact:

Post by NightRoman » Mon 29 Jan, 2007 16:56

ОК, спасибо, такой вариант я рассматривал тоже, просто думал, может есть способ напрямую это сделать.

User avatar
NightRoman
Posts: 5873
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 9 times
Contact:

Post by NightRoman » Mon 29 Jan, 2007 20:21

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

Иными словами, перед запуском внешнего консольного приложения из PowerShellFar надо бы панели прикрыть, как это и принято в Far. А когда оно отработало, панели восстановить, как были. Есть предложения?

User avatar
t-rex
Страшный и ужасный
Posts: 4872
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

Post by t-rex » Mon 29 Jan, 2007 20:28

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

Но не совсем понимаю что ты хочешь сделать.

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

Post by HaRT » Mon 29 Jan, 2007 20:34

t-rex
Если я правильно понимаю, NightRoman хочет запустить в Фаровской консоли PowerShell-приложение, имеющее доступ к FARAPI через объектную модель PowerShellFar, подобно тому, как SHPCE запускает FJS-файлы.

User avatar
t-rex
Страшный и ужасный
Posts: 4872
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

Post by t-rex » Mon 29 Jan, 2007 20:42

HaRT
Ну а зачем гасить панели я не понимаю? Это же ни как не поможет.
Можно просто буффер консоль занулить.

User avatar
NightRoman
Posts: 5873
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 9 times
Contact:

Post by NightRoman » Mon 29 Jan, 2007 20:45

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

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

User avatar
DrKnS
Posts: 4648
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

Post by DrKnS » Mon 29 Jan, 2007 21:32

Хм, кстати, тоже сталкивался с подобным: надо что-то вывести в буфер под панели из плагина, но апи позволяет только скопировать туда текущее содержимое консоли, т.е. чтобы туда дописать, надо как-то погасить панели, прочитать консоль, отфильтровать, если есть, кейбар и часы, дописать свое, вывести всё это барахло обратно и сделать FCTL_SETUSERSCREEN, но панели можно погасить только макросом, а фар его выполнит, только когда получит управление... :?
Смотрел, как делает плагин Autocomplete, если сказать ему вывести список, так он тоже затирает консоль...

User avatar
t-rex
Страшный и ужасный
Posts: 4872
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

Post by t-rex » Mon 29 Jan, 2007 21:40

Щя посмотрим код фара в этом месте, если я там разберусь то будет FCTL_GETUSERSCREEN

User avatar
t-rex
Страшный и ужасный
Posts: 4872
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

Post by t-rex » Tue 30 Jan, 2007 00:01

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

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

Post by NightRoman » Tue 30 Jan, 2007 12:45

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

На проверку какой версии закладывать код? 1.71.2185 и выше?

User avatar
t-rex
Страшный и ужасный
Posts: 4872
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

Post by t-rex » Tue 30 Jan, 2007 14:10

NightRoman
Пока точно не знаю, ещё не комитил.

User avatar
NightRoman
Posts: 5873
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 9 times
Contact:

Post by NightRoman » Tue 30 Jan, 2007 14:13

Пока знаю один баг - сразу после запуска фара тока в первый раз вывод идёт не там где ожидалось, пока не знаю как решить.
С этим справился уже у себя в плагине (заодно может кто подвох в таком подходе увидит): перед вызовом FCTL_GETUSERSCREEN запоминаю строку курсора и сразу после вызова устанавиливаю курсор туда. Все вроде получается адекватно. По идее, этот workaround и в самом Фаре должен получится (если это не бага, которая возможно и так будет пофиксена).

User avatar
t-rex
Страшный и ужасный
Posts: 4872
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

Post by t-rex » Tue 30 Jan, 2007 14:16

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

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 1 time

Post by Skirda » Tue 30 Jan, 2007 15:11

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

если в плагине сделать...
Про писание не забудь (в смысле добавить :-))

Post Reply

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