TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Пока нет.Flasher писал(а):А ты этими плагинами не пользуешься?
Так точно.Flasher писал(а):Соответственно, главное меню ты тоже не скрываешь при обращении к режиму FullScreen (что лишает TCFS2 полноценности) ?
Может и так.Flasher писал(а):В любом случае мой вариант сам по себе юзабильнее, дело даже не в дополнительных нюансах.
Конечно.Flasher писал(а):Это всё мелочи.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Почти готова к выпуску TCFS2 2.0. Пока подправляю описание, возможно, что-то не так работает, хорошо бы потестить, чтобы к релизу исправить найденные баги. 
Добавлены макросы, вызов функций из параметров других функций, наконец-то поддерживается перенаправление секций wincmd.ini. Формат записи некоторых команд заметно упростился или стал более понятным. Например:
Помимо TCFS2 обновился и модуль Autorun_HideMenu, который теперь называется TCFS2Tools. В него перенесен функционал по управлению сепаратором панелей (теперь на саму TCFS2 даже дебильные антивирусы ругаться не должны), добавлена возможность определять текущий режим панели (только основные, в соответствии со значениями параметра ShowAllDetails файла wincmd.ini: краткий, подробный или пользовательский, дерево - различить пользователские режимы практически невозможно). Также с помощью TCFS2Tools можно получать размеры рабочей области экрана без панели задач. Обновленный модуль TCFS2Tools можно загружать как через Autorun.wdx, так и напрямую, если установить его как WDX-модуль и добавить схему раскраски файлов (для тех, кто не использует Autorun.wdx).
В стандартном конфиге TCFS2 можно посмотреть, как теперь нужно вызывать set_separator, которая теперь является командой, а не встроенной функцией. Порядок вызова sp_set_active не изменился.
TCFS2 2.0.1.222 на rghost.ru
Было бы здорово, если бы те, кто активно пользуется TCFS2, нашли время проверить работу новой версии.
Добавлены макросы, вызов функций из параметров других функций, наконец-то поддерживается перенаправление секций wincmd.ini. Формат записи некоторых команд заметно упростился или стал более понятным. Например:
Код: Выделить всё
m2=show(style(# & $01000000) ? 9 : 3), , m2
t2=move(, , , , isTopmost ? 0 : 1), , t2
sp_set_active=run_item(set_separator, isActiveL ? (#1) : 100 - (#1))В стандартном конфиге TCFS2 можно посмотреть, как теперь нужно вызывать set_separator, которая теперь является командой, а не встроенной функцией. Порядок вызова sp_set_active не изменился.
TCFS2 2.0.1.222 на rghost.ru
Было бы здорово, если бы те, кто активно пользуется TCFS2, нашли время проверить работу новой версии.
По идее, всё старое должно работать, просто стало возможно использовать новые переменные и функции в параметрах. Единственное, что нужно будет исправить - команды, которые вызывают set_separator. Небольшое неудобство - символ # больше не поддерживается в параметрах, вместо него надо писать sepPos, или прямо msg(1075, 65561) (этот вариант на какие-то доли секунды быстрее, т.к. не требует обращения к макросам).
Было:
Стало:
Да, кстати, забыл включить в конфиг в архиве саму команду set_separator (в блок [Items]).
Возможно, что-то ещё забыл (в debug-версии на работе остались, завтра перенесу).
Было:
Код: Выделить всё
sp_inc=set_separator(#+10)
sp_dec=set_separator(#-10)
sp_inc_r=set_separator(# > 80 ? 20 : # + 20)Код: Выделить всё
sp_inc=run_item(set_separator, sepPos+10)
sp_dec=run_item(set_separator, sepPos-10)
sp_inc_r=run_item(set_separator, sepPos > 80 ? 20 : sepPos + 20)Код: Выделить всё
set_separator=msg(1075, 65562, #1)MVV писал(а):Было бы здорово, если бы те, кто активно пользуется TCFS2, нашли время проверить работу новой версии.
Пожалуй, подожду тогда до завтра.MVV писал(а):Возможно, что-то ещё забыл (в debug-версии на работе остались, завтра перенесу).
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Кому?MVV писал(а):Формат записи некоторых команд заметно упростился или стал более понятным.
Было:
Код: Выделить всё
sp_set_active=set_separator(#1), tcm(65551) | set_separator(100-#1)Код: Выделить всё
sp_set_active=run_item(set_separator, isActiveL ? (#1) : 100 - (#1))Код: Выделить всё
sp_move=run_item(set_separator, -1)Зачем в командах использовать номер 1075?
test(isTopmost) - так и будет со словом test? Или это временное название?
SeparatorGet - ИМХО, бесполезная штука.
С GetSystemMetrics и GetWorkArea примеры не помешали бы. Со вторым параметром на примере switch_sp, если можно.
Для начала напишу макросы, которые забыл добавить в конфиг в архиве. Точнее, всю секцию в последнем варианте.
Соответственно, пара команд по управлению сепаратором:
Код: Выделить всё
[Macros]
; Некоторые константы для функции show
SW_HIDE=0
SW_SHOWMAXIMIZED=3
SW_MINIMIZE=6
SW_RESTORE=9
; Некоторые константы для функций style/set_style
WS_CAPTION=$00C00000
WS_MAXIMIZE=$01000000
WS_VISIBLE=$10000000
WS_MINIMIZE=$20000000
WS_EX_TOPMOST=$00000008
WS_EX_TOOLWINDOW=$00000080
; Некоторые константы для функции msg
WM_TC_COMMAND=$433
WM_KEYDOWN=$0100
WM_KEYUP=$0101
WM_SYSCOMMAND=$0112
; Некоторые номера команд TCFS2Tools (могут быть изменены в TCFS2Tools.ini)
tt_ShowMainMenu=65537
tt_HideMainMenu=65538
tt_SwitchMainMenu=65539
tt_TrackMainMenu=65540
tt_LeftIsActive=65551
tt_RightIsActive=65552
tt_LeftGetViewMode=65553
tt_RightGetViewMode=65554
tt_SeparatorGet=65561
tt_SeparatorSet=65562
tt_GetSystemMetrics=65570
tt_GetWorkArea=65571
hasCaption=style(# & $00C00000)
isMaximized=style(# & $01000000)
isTopmost=style(, # & $08)
; Некоторые команды, возвращающие информацию (необходим активный TCFS2Tools.dll)
GetSystemMetrics=msg($433, tt_GetSystemMetrics, #1)
cxScreen=GetSystemMetrics(0)
cyScreen=GetSystemMetrics(1)
cxWorkArea=msg($433, tt_GetWorkArea, 0)
cyWorkArea=msg($433, tt_GetWorkArea, 1)
sepPos=msg($433, tt_SeparatorGet)
L_isActive=tcm(tt_LeftIsActive)
R_isActive=tcm(tt_RightIsActive)
L_viewMode=tcm(tt_LeftGetViewMode)
R_viewMode=tcm(tt_RightGetViewMode)
S_viewMode=(L_isActive ? L_viewMode : R_viewMode)Код: Выделить всё
[Items]
set_separator=msg($433, tt_SeparatorSet, #1)
sp_set_active=run_item(set_separator, L_isActive ? (#1) : 100 - (#1))Проще стало в том плане, что теперь можно организовать проверку условия внутри одного вызова функции, а не городить кучу дополнительных команд через палки |. И, думаю, смысл записи test(isTopmost) куда яснее, чем записи style(, # & $08). Ничто не заставляет использовать новые функции, всё старое осталось работоспособным.Flasher писал(а):Где тут простота, я не понял.
Как я и говорил, единственное, что изменилось - команды с set_separator и separator. Поэтому определение "везде" здесь, мягко говоря, не уместно. Причина - вынос костыля из TCFS2 в отдельный модуль (я давно хотел это сделать). Следствия - переход от функции к команде и невозможность использовать # в параметрах (так как вначале вычисляется выражение, а потом отправляется сообщение с числом).Flasher писал(а):Использование везде run_item - вообще отход от простоты. Убор решётки из параметров сюда же. Было куда удобней. Зачем убрал то?
У меня работает. Но для этого необходимо прописать команду set_separator (в моём предыдущем посте).- не работает.Код: Выделить всё
sp_move=run_item(set_separator, -1)
Номер 1075 (или $433) - это номер оконного сообщения, который тотал ожидает для выполнения внутренних команд. Вообще, tcm(x) делает ровно то же самое, что и msg(1075, x, 0, 0). А если надо передать в команду параметр, нужно использовать полную форму.Flasher писал(а):Зачем в командах использовать номер 1075?
Да, так и будет. Напрямую макрос вызвать нельзя, только из какой-либо стандартной функции. Поэтому добавлена функция test для проверки (она просто возвращает результат вычисления выражения в скобках).test(isTopmost) - так и будет со словом test? Или это временное название?
Я бы не говорил так уверенно. Это теперь единственный способ узнать текущую позицию сепаратора, т.к. # для этой цели уже не работает.SeparatorGet - ИМХО, бесполезная штука.
Пара примеров приведена выше - cxScreen, cyScreen, cyWorkArea. Здесь приведен полный перечень номеров, которые можно передавать в параметре. Да, многим из них сложно будет придумать применение, но остальные вполне могут пригодиться. В switch_sp, как и в s00008000_switch_sp, можно писать cyWorkArea вместо @-33 - и это должно работать правильно при любой высоте панели задач (при желании можно вычесть еще несколько пикселей для добавления промежутка).Flasher писал(а):С GetSystemMetrics и GetWorkArea примеры не помешали бы. Со вторым параметром на примере switch_sp, если можно.
Код: Выделить всё
switch_sp=move(# ? 0 : @*7/64, # ? 0 : @*7/64, @-# ? @ : @*25/32, cyWorkArea-# ? cyWorkArea : @*25/32), , switch_sp
Последний раз редактировалось MVV Пт май 06, 2011 11:58, всего редактировалось 1 раз.
MVV
Не разобрался, как теперь записать такую команду?
В readme.txt: Пример увеличения позиции разделителя файловых панелей на 10%:
TCFS2 /ef "set_separator(#+10)" вместо /ef теперь должно быть /ei.
Не разобрался, как теперь записать такую команду?
Код: Выделить всё
FullSeparat = tcm(102) tcm(202), separator(50) | tcm(175) tcm(74), separator(60) | tcm(174) tcm(75), separator(40)TCFS2 /ef "set_separator(#+10)" вместо /ef теперь должно быть /ei.
Попробуй так:
Не забудь добавить макрос sepPos (а лучше - все из предыдущего поста).
Спасибо, Readme я ещё не закончил править. Да, теперь для set_separator нужно использовать режим /ei вместо режима /ef. Но вместо # при вызове сепараторных команд нужно писать sepPos:
Кстати, вот в Readme пример, который с учетом нововведений можно записать в разы понятнее:
Код: Выделить всё
FullSeparat = tcm(102) tcm(202), test(sepPos==50) | tcm(175) tcm(74), test(sepPos==60) | tcm(174) tcm(75), test(sepPos==40)Спасибо, Readme я ещё не закончил править. Да, теперь для set_separator нужно использовать режим /ei вместо режима /ef. Но вместо # при вызове сепараторных команд нужно писать sepPos:
Код: Выделить всё
TCFS2 /ei "set_separator(sepPos+10)"Код: Выделить всё
multi_switch=run_action(multi_enable), tcini(Layout, DriveBar1, 0) | run_action(multi_enable), tcini(Layout, DriveCombo, 0) | run_action(multi_enable), tcini(Layout, CmdLine, 0) | run_action(multi_disable)Код: Выделить всё
multi_switch=run_action(multi_disable), test(hasDriveBar && hasDriveCombo && hasCmdLine) | run_action(multi_enable)Уже добавил описание функции test в текущей версии Readme, как и пример её применения в команде multi_switch. А раздел макросов пополнился следующими:
Код: Выделить всё
hasButtonBar=tcini(Layout, ButtonBar, 1, 1)
hasDriveBar=tcini(Layout, DriveBar1, 1)
hasDriveCombo=tcini(Layout, DriveCombo, 1)
hasDirTabs=tcini(Layout, DirectoryTabs, 1)
hasPathHeader=tcini(Layout, CurDir, 1)
hasTabHeader=tcini(Layout, TabHeader, 1)
hasStatusBar=tcini(Layout, StatusBar, 1)
hasCmdLine=tcini(Layout, CmdLine, 1)
hasKeyButtons=tcini(Layout, KeyButtons, 1)
Куда денутся, появятся. Например, как правильно теперь двинуть сепаратор в 5/95 (с возвратом в 50/50) и как установить окно в это положение - центр:MVV писал(а):А зря так может уже завтра вопросы бы появились
Код: Выделить всё
[1280x1024 (8x16)]
x=100
y=100
dx=1080
dy=820«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Вот такой вариант у меня работает (если ширина активной панели равна 50%, расширяет до 95%, иначе сбрасывает на 50%):
Для надежности можно проверять не просто sepPos == 50, а (sepPos > 45 && sepPos < 55) - а то мало ли, вдруг шальной пиксель.
Хотя и не должно быть проблем, т.к. я вычисляю так же точно, как и сам тотал.
А насчет окна не понял, что именно требуется. Опиши задачу подробнее.
Код: Выделить всё
sp_sw_50_95=run_item(sp_set_active, sepPos == 50 ? 95 : 50)А насчет окна не понял, что именно требуется. Опиши задачу подробнее.