TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Желающие могут запустить sp_move и зажать ЛКМ, если им больше нравится с зажатой. Получится стандартная возможность без необходимости целиться в разделитель. :D
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV
Почему при выполнении внутренних команд вызова какого-то диалога TCFS2 продолжает работать до выхода из этого диалога? Можно сразу отвязываться от потока после отправки сообщения окну TC?
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

MVV
-2. Ещё вариант: а если пользователю не хочется, чтобы показывался разделитель (сопровождаемый счётчиком), а просто разделитель устанавливался в указанном ему месте?
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Flasher, возможно, причина в том, что у тотала во время обработки сообщения показывается диалог, и SendMessage не возвращается до его закрытия. Попробуй использовать PostMessage вместо SendMessage (т.е. msg с параметрами $433, cm_Index, 0, 1).

sa, но ведь при -2 и так не показывается ничего лишнего? Чего еще не хватает-то?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV
Так работает, спасибо. Теперь ещё один момент остался. Напишу в личку.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

MVV писал(а):но ведь при -2 и так не показывается ничего лишнего
Я привёл этот пример, как аргумент за сохранение варианта с -2.
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

TCFS2Tools 1.4.2.152
WinXP SP3 Rus.
Версия TC - любая (7.56а-8.0b-rc)
У меня назначены пользовательские команды, цель которых - отобразить одну панель Тотала и при этом скрыть кнопки дисков для второй панели / вернуть всё как було - две панели и над каждой кнопки дисков.

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

[em_OnePanel]
cmd=%commander_path%\Plugins\exe\TCFS2\TCFS2.exe
param=/ei "sp_sw_50_100"
menu=Set One Panel View Mode

[em_OnePanelExt]
cmd=%commander_path%\Plugins\exe\TCMC\TCMC.exe
param=50 CMcm_VisTwoDriveButtons EMem_OnePanel
menu=Set One Panel View Mode
В TCFS2.ini имеется запись:

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

; Переключение разделителя панелей полный экран - посередине
sp_sw_50_100=run_item(sp_set_active, sepPos == 50 ? 100 : 50)
Команда em_OnePanelExt работает странным образом. При каждом нажатии кнопки (кноме первого) sp_sw_50_100 отрабатывает дважды. В результате вид панелей не переключается.

Дошли руки наконец разобраться, и обнаружил, что с TCFS2Tools версии 1.4.1.114 таковой проблемы не возникает, пользовательская команда отрабатывает как задумано (версия 1.4.2.130 у меня не сохранилась, проверить не могу).

Насколько я понимаю, это баг последнего TCFS2Tools. Или же теперь по-другому нужно прописывать команды?..
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Забавно видеть микс TCFS2 и TCMC, когда обе задачи можно решить исключительно средствами TCFS2. Даже более того, с TCFS2 решение будет корректнее, т.к. можно будет проконтролировать, включены ли обе панели дисков, и выключать только в этом случае. А идея интересная и логичная.

Посмотрю, удастся ли воспроизвести.

Добавлено спустя 12 минут:

Не, всё работает, как и должно. Версия TCFS2Tools у меня 1.4.2.154.

Добавлено в 22:36:

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

[Items]
db20=tcm(2903), test(hasDriveBar2), db21			; Скрыть 2 панель кнопок дисков 
db21=tcm(2903), test(!hasDriveBar2), db20			; Показать 2 панель кнопок дисков

[Macros]
hasDriveBar2=tcini(Layout, DriveBar2, 1)

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

[em_OnePanelExt] 
cmd=%commander_path%\Plugins\exe\TCFS2\TCFS2.exe
param=/ef "eval(if(sepPos == 50, run_item(sp_set_active, 100)+run_item(db20), run_item(sp_set_active, 50)+run_item(db21)))"
menu=Set One Panel View Mode
Последний раз редактировалось MVV Чт май 17, 2012 22:45, всего редактировалось 1 раз.
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

MVV
Доу.
Я прозевал, что версия в марте обновилась через два дня. Скачал TCFS2Tools 1.4.2.154 - с ней действительно нет проблем. Вопрос снят.

[s]На элегантное решение меня не хватило.
Сделал по-простому. :)
set_one_two_panel=tcm(2903) run_item(sp_sw_50_100) redraw()
А как будет выглядеть упомянутый вариант с контролем включённых панелей?[/s]

Спасибо за элегантное решение, которое появилось пока я читал пост и обнаруживал существование более свежей версии TCFS2Tools.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Пожалуйста. :)

А источник проблемы я вспомнил. Почитай отсюда и ниже, это обсуждалось. В версии 1.4.2.150 было внедрено временное решение, в котором обнаружился баг с неустановкой позиции, поэтому как раз в версии 1.4.2.154 я ушел от этого глючного варианта.
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

MVV
Такой ещё вопрос возник. В справке:
Пример переключения между текущим режимом и подробным режимом активной панели (можно указать индекс любого режима из cm_Src*):
TCFS2 /u- /ei switch_viewmode_S(302)
Должна ли работать команда или я что-то неправильно прописываю?

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

[em_DirTreeView]
cmd=%commander_path%\Plugins\exe\TCFS2\TCFS2.exe
param=/u- /ei switch_viewmode_S(303)
В теории она должна переключать панель на дерево, а потом обратно. На дерево переключает, обратно - ни в какую не хочет.

Если вместо 303 прописать 301 или 302 - работает.
Остальные варианты у меня вообще странно ведут себя.
Если прописать 304 - вроде как и работает, но непонятно - быстрый просмотр переключается с одной на другую панели.
325 - Без сортировки. Сортировка сбрасывается, а к предыдущему (отсортированному) виду при повторном вызове команды не возвращается.
321-324 - тоже непонятно работает. Например, стояла сортировка по имени. В команде стоит 322 (сортировка по типу). При запуске команды выставляется сортировка по типу. Но при повторном запуске команды не возвращается предыдущий режим (сортировка по имени), а устанавливается сортировка по типу в обратном порядке.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

А ты проверяй определяемые номера режимов. Используем команды:

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

/u- /ef "set_tcini(TCFS2,LastViewModeL,L_viewMode)
/u- /ef "set_tcini(TCFS2,LastViewModeR,R_viewMode)"
И после каждого нажатия кнопки смотрим значения параметров в секции TCFS файла wincmd.ini.

У меня для левой панели:
Краткий 101
Подробный 102
С комментариями 100
Пользовательский #1 71
Пользовательский #5 75
Дерево 12
Эскизы 69
Для правой:
Краткий 201
Подробный 202
С комментариями 200
Пользовательский #1 171
Пользовательский #5 175
Дерево 12
Эскизы 169
А теперь посмотрим команду switch_viewmode_S:

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

run_item(switch_viewmode_L, #1-200), eval(L_isActive) | run_item(switch_viewmode_R, #1-100)
Видно, что команда отнимает от заданного числа 200 для левой панели и 100 для правой, но в случае с режимом дерева такая операция работать не будет. Выход - писать для режима дерева свою команду, а не использовать switch_viewmode_S.

И вообще, определение текущего режима панели работает путём показа менюшек cm_LeftCustomViewMenu/cm_RightCustomViewMenu и поиска галочки, поэтому не будет работать для режимов, не перечисленных в этих меню. Дерево, замечу, там отсутствует, поэтому значение не определено.

По поводу 321-325: это не режимы вида панели, это режимы сортировки. И, опять же, они не указываются в менюшках с режимами. Поэтому переключение между ними таким способом невозможно.
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

Ага, теперь стал понятен принцип работы команд.
Тогда в справке надо подправить "можно указать индекс любого режима из cm_Src*".
Правда, пока не понял - можно ли переключить режим "Дерево-предыдущий режим" или хотя бы "Дерево-полный вид"
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

или хотя бы "Дерево-полный вид"
Это легко. Если текущий вид - полный, включаешь дерево, иначе включаешь полный вид.

Блин, посмотрел, почему возвращается 12, это в случае, если пункт с галкой не найден, возвращается их число. Исправлю, чтобы возвращался 0.
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

Если текущий вид - полный, включаешь дерево, иначе включаешь полный вид.
А как проверить, что текущий вид - полный?
RightGetViewMode=3
LeftGetViewMode=3
?
Ответить