Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Задачи для nnCron

 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Dimych



Joined: 01 Feb 2006
Posts: 27

Post (Separately) Posted: Sun Jul 16, 2006 04:03    Post subject: Задачи для nnCron Reply with quote

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

1. Задача для nnCron, с помощью которой можно по горячим клавишам
"раскрывать" правую или левую панели TC. Размер и положение окна TC - не важно. Начальное положение сепаратора - не важно
Клавиши работают как переключатели (раскрыть --> 50% -->раскрыть).

К сожалению, не смог сделать раскрытие для _активной (текущей)_ панели. Не получается отловить его. Может кто помочь?

# ------------ начало -----------
SET TC_WIN_PATTERN="*Total Commander * - *"

#
# Открывает полностью левую/правую панель TC (переключатель)
#

#( TC_SET_FULL_PANELS
WINAPI: GetKeyState USER32.DLL
\ Сравнение двух чисел с заданной точностью 1..N пикселов: abs ( x1 - x2 ) < (N + 1)
: EQU_POS_SEPARATOR ( n1 n2 -- flag ) - ABS 3 < ;
\ Нажата клавиша такая-то?
: KEY-PRESSED? ( n -- flag ) GetKeyState 128 AND? ;

USER TC_xc
USER TC_yc
USER TC_bc
USER TC_rc
VARIABLE TC_x
VARIABLE TC_y
VARIABLE TC_LBox_X
VARIABLE TC_RBox_X
VARIABLE TC_RBox_Y
VARIABLE TC_CUR_X
VARIABLE TC_MID_X
VARIABLE TC_FUT_X
VARIABLE TC_DELTA_X
50 CONSTANT cDX \ На противоположенной панели оставляем N пикселов
49 CONSTANT cTC_KEYCODE_NUM1 \ Код клавиши "1"
50 CONSTANT cTC_KEYCODE_NUM2 \ Код клавиши "2"

WatchHotKey: "@1" \ Горячая клавиша "ALT+1"
WatchHotKey: "@2" \ Горячая клавиша "ALT+2"
SingleInstance
Rule: WIN-ACTIVE: %TC_WIN_PATTERN%
\ NoActive
Action:

WIN-EXIST: %TC_WIN_PATTERN% IF
WIN-HWND WIN-RECT TC_xc ! TC_yc ! TC_bc ! TC_rc !

0 TC_LBox_X !
0 TC_RBox_X !

\ 1. Вычисляет ТЕКУЩЕЕ положение сепаратора (по X) --> TC_CUR_X
FOR-CHILD-WINDOWS: "TMyListBox"
WIN-CHILD-HWND WIN-POS TC_y ! TC_x !
TC_RBox_X @ 0= IF
TC_x @ TC_RBox_X !
TC_y @ TC_RBox_Y !
ELSE
TC_LBox_X @ 0= IF TC_x @ TC_LBox_X ! THEN
THEN
\ Внимание, строчка ниже - не комментарий
;FOR-CHILD-WINDOWS
TC_LBox_X @ TC_RBox_X @ > IF TC_LBox_X @ TC_RBox_X ! THEN
TC_RBox_X @ 4 - TC_CUR_X !

\ 2. Вычисляем 50% положение сепаратора (по X) --> TC_MID_X
TC_bc @ TC_xc @ - 2 / TC_xc @ + 1 - TC_MID_X !

\ 3. Определяем теоретическое РАСКРЫТОЕ положение панели, сепаратор --> TC_FUT_X
cTC_KEYCODE_NUM2 KEY-PRESSED? IF
TC_bc @ cDX - 6 - TC_FUT_X ! \ ALT+1
ELSE
TC_xc @ cDX + 4 + TC_FUT_X ! \ ALT+2
THEN
TC_CUR_X @ TC_FUT_X @ EQU_POS_SEPARATOR IF TC_MID_X @ TC_FUT_X ! THEN
MOUSE-POS
TC_CUR_X @ TC_RBox_Y @ 20 + MOUSE-MOVE
MOUSE-LBDN TC_FUT_X @ TC_RBox_Y @ 20 + MOUSE-MOVE MOUSE-LBUP
MOUSE-MOVE
THEN
)#
# ------------ конец -----------

2. Выводит по горячей клавише меню (20/80, 30/70 и т. д.) на сепараторе.
Размер и положение окна TC - не важно.
Начальное положение сепаратора - не важно.

Если первая задача не используется то для второй необходимо определить
SET TC_WIN_PATTERN="*Total Commander * - *"

# ------------ начало -----------

#
# Меню на сепараторе TC
#

#( TC_VIEW_MENU_SEPARATOR
VARIABLE TC_LBox_X
VARIABLE TC_RBox_X
VARIABLE TC_RBox_Y
VARIABLE TC_x
VARIABLE TC_y
\ NoActive
WatchHotKey: "@3"
SingleInstance
Rule: WIN-ACTIVE: %TC_WIN_PATTERN%
Action:
WIN-EXIST: %TC_WIN_PATTERN% IF
0 TC_LBox_X !
0 TC_RBox_X !
FOR-CHILD-WINDOWS: "TMyListBox"
WIN-CHILD-HWND WIN-POS TC_y ! TC_x !
TC_RBox_X @ 0= IF
TC_x @ TC_RBox_X !
TC_y @ TC_RBox_Y !
ELSE
TC_LBox_X @ 0= IF TC_x @ TC_LBox_X ! THEN
THEN
;FOR-CHILD-WINDOWS
TC_LBox_X @ TC_RBox_X @ > IF TC_LBox_X @ TC_RBox_X ! THEN
MOUSE-POS TC_RBox_X @ 2 - TC_RBox_Y @ 20 + MOUSE-MOVE
MOUSE-RBDN MOUSE-RBUP MOUSE-MOVE
THEN
)#
# ------------ конец -----------
Back to top
View user's profile Send private message
Igor_A.



Joined: 23 Mar 2006
Posts: 83

Post (Separately) Posted: Sun Sep 03, 2006 12:35    Post subject: Reply with quote

Спасибо за оличное дополнение в кронтаб. Только я не совсем понял, а как сделать так, чтобы если я использую \"ушки\" (вкладки) то у меня по горячим клавишам происходило бы раскрытие не на 80 % а на 100 процентов?
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Sun Sep 03, 2006 15:37    Post subject: Reply with quote

Igor_A. wrote:
Только я не совсем понял, а как сделать так, чтобы если я использую \"ушки\" (вкладки) то у меня по горячим клавишам происходило бы раскрытие не на 80 % а на 100 процентов?


http://forum.wincmd.ru/viewtopic.php?p=19451#19451
Back to top
View user's profile Send private message
Igor_A.



Joined: 23 Mar 2006
Posts: 83

Post (Separately) Posted: Sun Sep 03, 2006 22:37    Post subject: Reply with quote

2 Volniy:

Отдельное спасибо!
Всё заработало.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group