Страница 1 из 2

Закрытие всех незапертых вкладок при запуске/закрытии TC

Добавлено: Вт май 05, 2015 09:48
R1_
Кроме закрепленных. Возможно такое? Спасибо.

[mod="Avada"]Заголовок темы приведён в более адекватный для удобства последующего поиска вид. Топик-стартеру на будущее: проблема должна быть нормально раскрыта и в заголовке (насколько позволяет место), и в тексте темы, а не разделяться на части. [/mod]

Добавлено: Вт май 05, 2015 11:05
Вахмурка
Способов много. Посмотри в сторону TCFS2 - этот монстр вообще способен творить всё на что фантазии хватит (ладно, почти всё), в том числе и при загрузке.
Twinkey тоже автоматически выполняет команды при загрузке.
Ну и я кое-что нарисовал. Подружи скрипт с вышеперечисленным. Правда, скрипт закрывает и запертые тоже (собственно, ради этого и писался), но допилить его - три минуты

Добавлено: Вт май 05, 2015 11:27
Avada
Вахмурка
В том-то и дело, что способов много, но все они касаются любых вкладок.

Добавлено: Вт май 05, 2015 11:29
Flasher
У TCFS2Tools появилась проверка на запертость, т.ч. можно попробовать соорудить.

Добавлено: Вт май 05, 2015 15:15
sa
R1_
А вдруг подойдёт?!
Если закреплённые вкладки меняются не часто, то можно сохранить секции [lefttabs] и [righttabs] файла wincmd.ini в отдельный файл (tabs.ini), открыв его только для чтения, а в wincmd.ini указать редирект:

Код: Выделить всё

[lefttabs]
RedirectSection=%COMMANDER_PATH%\TABS\tabs.ini 
[righttabs]
RedirectSection=%COMMANDER_PATH%\TABS\tabs.ini

Добавлено: Вт май 05, 2015 21:58
R1_
sa
То, что нужно! Благодарю :)
Flasher
Avada
Вахмурка
Спасибо за участие! Я решил выбрать самый простой вариант. Главное меня устраивает.

Добавлено: Вт май 05, 2015 23:53
Flasher
Вариант действительно оптимальный.

А возвращаясь к тому, о котором я писал, то вот что выходит.
Берём последние бета-версии утилиты и модуля.
В секцию Items конфига TCFS2.ini добавляем
lclose=loop(@<tcm(65582)+if(test(tcm(65586)),tcm(3005),tcm(3007))) ; Закрыть откреплённые вкладки слева
rclose=loop(@<tcm(65583)+if(test(tcm(65587)),tcm(3005),tcm(3007))) ; Закрыть откреплённые вкладки справа
Потом уже на выбор (запуск/завершение) пишем в autorun.cfg команду из кнопки:

Код: Выделить всё

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe
/ef "msg($0B,0) if(eval(tcm(65551)), run_item(lclose)+tcm(4002)+run_item(rclose)+tcm(4001), run_item(rclose)+tcm(4001)+run_item(lclose)+tcm(4002)) msg($0B,1) redraw()"
wcmicons.dll,85
Закрыть все откреплённые вкладки
Пока ещё не всегда всё стабильно закрывает, надо будет обдумать, где не успевает.

Добавлено: Ср май 06, 2015 21:02
MVV
С 474 сборкой TCFS2 можно закрывать вкладки с помощью меню вкладки, не активируя их (прирост скорости +100500 для тормознутых путей).

Эта команда закрывает все неактивные вкладки на левой или правой панели (если в параметре 1, то на левой, если -1 - на правой):

Код: Выделить всё

allTabsClose=msg($433,3009,#1,1) delay(10) send(`{UP 2}{ENTER}`, 0) delay(10) send(`{ENTER}`, 0)	; В #1 передаётся индекс вкладки, для которой запрашивать меню: 1 - первая на левой панели, -1 - первая на правой панели
Останется лишь проверить, заблокирована ли активная вкладка, и закрыть её. Эта команда закрывает вкладку с указанным индексом:

Код: Выделить всё

tabClose=msg($433,3009,#1,1) delay(10) send(`{UP 3}{ENTER}`, 0)	; В #0 передаётся индекс вкладки (1 и выше - левая панель, -1 и ниже - правая)

Добавлено: Ср май 06, 2015 21:19
Flasher

Код: Выделить всё

/ef "msg($0B,0) if(eval(tcm(65551)), run_item(allTabsClose,1)+tcm(4002)+run_item(allTabsClose,-1)+tcm(4001), run_item(allTabsClose,-1))+tcm(4001)+run_item(allTabsClose,1)+tcm(4002)) msg($0B,1) redraw()"
[s]Что-то не хочет..[/s] Теперь хочет.

[s]/ef run_item(allTabsClose(1)) ругается.[/s] (неграмотная запись)

Добавлено: Ср май 06, 2015 22:02
MVV
/ef run_item(allTabsClose(1)) ругается.
Так ведь нельзя! Надо как-то так (любое из двух):

Код: Выделить всё

/ei allTabsClose(1)

Код: Выделить всё

/ef run_item(allTabsClose,1)
Что-то не хочет..
Кстати, необязательно активировать вторую панель, команда открытия меню отлично работает для неактивной панели.

Добавлено: Ср май 06, 2015 22:12
Flasher
MVV писал(а):Так ведь нельзя!
Точно, из головы вылетело.
Да, весьма шустро. Впечатляет. :)
Но, увы, одна незалоченная вкладка остаётся активной и незакрытой.
MVV писал(а):Кстати, необязательно активировать вторую панель, команда открытия меню отлично работает для неактивной панели.
Но тогда бы работала такая команда: /ei allTabsClose(1) allTabsClose(-1). Но она не работает.

Добавлено: Ср май 06, 2015 22:18
MVV
Но тогда бы работала такая команда: /ei allTabsClose(1) allTabsClose(-1). Но она не работает.
А почему у меня работает?
Но, увы, одна незалоченная вкладка остаётся активной и незакрытой.
Я говорил, что останется проверить, заблокирована ли текущая вкладка, и закрыть её. Можно тупо активировать следующую вкладку и повторить allTabsClose (ведь теперь активированной гарантированно окажется заблокированная). Опять же, переключать панели не требуется, активировать вкладки можно с помощью tt_LeftTabSetIndex/tt_RightTabSetIndex, а узнавать текущие индексы с помощью tt_LeftTabGetIndex/tt_RightTabGetIndex.

Или, что проще, активировать последние вкладки на обеих панелях, а затем вызвать allTabsClose(1) allTabsClose(-1). Из незаблокированных смогут выжить только самые правые вкладки (но тотал всё равно будет добавлять новые вкладки там, так что, думаю, одной незакрытой вкладкой в конце можно пренебречь). Активировать первые вкладки после закрытия несложно.

Добавлено: Ср май 06, 2015 22:33
Flasher
MVV писал(а):А почему у меня работает?
Не знаю, у меня только в активной закрытия происходят.
MVV писал(а):а узнавать текущие индексы с помощью tt_LeftTabGetIndex/tt_RightTabGetIndex
А номера у них какие? Ты же нигде не обнародовал.

И нельзя ли как-то победить смещение мышиного курсора?

Добавлено: Ср май 06, 2015 23:37
MVV
А номера у них какие? Ты же нигде не обнародовал.
Да ладно! И в TCFS2.ini ты искать, похоже, не пробовал?
И нельзя ли как-то победить смещение мышиного курсора?
А какая команда смещает курсор?

Добавлено: Чт май 07, 2015 00:04
Flasher
MVV писал(а):Да ладно! И в TCFS2.ini ты искать, похоже, не пробовал?
А вот и неладно. Их там нет. Смотрел сразу и там и там.
MVV писал(а):А какая команда смещает курсор?
Да хотя бы /ei allTabsClose(1).