TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое
Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik
Неожиданная проблема в четыре действия:
1. Переключаюсь с главной на расширенную панель инструментов;
2. Не дожидаясь 15-секундного возврата на главную, перехожу в фуллскрин (нет панели инструментов);
3. Наконец, 15 секунд проходит и панель срабатывает в фуллскрине;
4. Выходим из фуллскрина и панели инструментов не наблюдаем.
Проблемным является третий пункт, не хотелось бы, чтобы панель инструментов выскакивала в фуллскрине. Задать дополнительное условие автоматической переключалке?
1. Переключаюсь с главной на расширенную панель инструментов;
2. Не дожидаясь 15-секундного возврата на главную, перехожу в фуллскрин (нет панели инструментов);
3. Наконец, 15 секунд проходит и панель срабатывает в фуллскрине;
4. Выходим из фуллскрина и панели инструментов не наблюдаем.
Проблемным является третий пункт, не хотелось бы, чтобы панель инструментов выскакивала в фуллскрине. Задать дополнительное условие автоматической переключалке?
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Сбрасывай идентификатор сеанса для команды quick_bar при переключении в полный экран: set_tcini(TCFS2, quick_bar, 0). Тогда по истечении 15 секунд команда не будет переключать панель инструментов обратно.
Осенило меня, почему при возврате в оконный режим панель выключается. Команда OPENBAR же не пишет в конфиг, что включила панель. Чтобы избежать и этого глюка, можно расширить команду set_bar, сделав, чтобы она вызывала tb1; также можно добавить "нулевую" панель - выключение панели инструментов. Итак, немного извратимся, чтобы не писать вызов tb1 в каждом блоке:
Добавился нулевой блок, который выключает панель, а также условие нулевого блока, которое принудительно включает панель, если номер панели ненулевой, при этом стоит домножить результат вызова на 0, чтобы значение не повлияло на выбор блока.
Что-то пока не работает... но идея должна быть понятна.
А не, работает, просто забыл закомментировать команду set_bar, описанную парой строчек выше.
Правда, можно заметить переключение панели. Вот два варианта команды set_bar, избавленные от этих недостатков:
Делают оба одно и то же. Вначале включают нужную панель, если нужно. Затем либо вызывают tb0, если параметр нулевой, или же пишут в конфиг, что панель включена. И сохраняют номер панели. Разница лишь в том, что в первом вызовы if вложенные, что позволяет отсечь проверку остальных значений, когда найдено нужное. Зато второй вариант куда легче читается при большом числе панелей.
Осенило меня, почему при возврате в оконный режим панель выключается. Команда OPENBAR же не пишет в конфиг, что включила панель. Чтобы избежать и этого глюка, можно расширить команду set_bar, сделав, чтобы она вызывала tb1; также можно добавить "нулевую" панель - выключение панели инструментов. Итак, немного извратимся, чтобы не писать вызов tb1 в каждом блоке:
Код: Выделить всё
set_bar=set_tcini(TCFS2, Bar, 0) run_item(tb0), if(#1 == 0, 1, run_item(tb1)*0) | set_tcini(TCFS2, Bar, 1) tem(em_bar1), test(#1 == 1) | set_tcini(TCFS2, Bar, 2) tem(em_bar2), test(#1 == 2)Что-то пока не работает... но идея должна быть понятна.
А не, работает, просто забыл закомментировать команду set_bar, описанную парой строчек выше.
Правда, можно заметить переключение панели. Вот два варианта команды set_bar, избавленные от этих недостатков:
Код: Выделить всё
set_bar=if(#1 == 1, tem(em_bar1), if(#1 == 2, tem(em_bar2))) if(#1 > 0, set_tcini(Layout, ButtonBar, 1), run_item(tb0)) set_tcini(TCFS2, Bar, #1)
set_bar=if(#1 == 1, tem(em_bar1)) if(#1 == 2, tem(em_bar2)) if(#1 > 0, set_tcini(Layout, ButtonBar, 1), run_item(tb0)) set_tcini(TCFS2, Bar, #1)set_bar у себя поправил, а вот с
Имею переключалку панелей:
Как быть дальше?
не совсем понятно.MVV писал(а):Сбрасывай идентификатор сеанса для команды quick_bar при переключении в полный экран: set_tcini(TCFS2, quick_bar, 0). Тогда по истечении 15 секунд команда не будет переключать панель инструментов обратно.
Имею переключалку панелей:
Код: Выделить всё
quick_bar=set_tcini(TCFS2, #0, 0) run_item(set_bar, 1), test(tcini(TCFS2, Bar, #)!=1) | set_tcini(TCFS2, #0, @sid) run_item(set_bar, 2) delay(10000) if(tcini(TCFS2, #0, # == @sid), run_item(set_bar, 1))«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Блин. 
Команду quick_bar не трогай, она уже способна понять твои запросы.
В действие, которое переводит в полноэкранный режим, добавь вызов команды, в которой будет set_tcini(TCFS2, quick_bar, 0). Так ты сообщишь той копии TCFS2, которая дремлет, что при пробуждении панель включать не надо (ID сеанса не совпадёт) - точно так же делает и сама quick_bar.
Названий действий и команд не привожу, т.к. ты сам их не указал. По дефолту тебе надо добавить эту строчку в начало команды fs2.
Команду quick_bar не трогай, она уже способна понять твои запросы.
В действие, которое переводит в полноэкранный режим, добавь вызов команды, в которой будет set_tcini(TCFS2, quick_bar, 0). Так ты сообщишь той копии TCFS2, которая дремлет, что при пробуждении панель включать не надо (ID сеанса не совпадёт) - точно так же делает и сама quick_bar.
MVV писал(а):По дефолту тебе надо добавить эту строчку в начало команды fs2.
Код: Выделить всё
TCFS2.exe /u- /ei fs2Код: Выделить всё
fs2=set_tcini(TCFS2, quick_bar, 0) fs2«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Всё не так. 
Ты добавляешь в действие. А надо в команду, которую вызывает это действие. Из действий нельзя вызывать функции.
Или же можно прямо в командную строку, не забыв указать режим /ef:
Ты добавляешь в действие. А надо в команду, которую вызывает это действие. Из действий нельзя вызывать функции.
Код: Выделить всё
fs2=set_tcini(TCFS2, quick_bar, 0) run_action(fs) save_undo(fs_undo), style(# & $00C00000) | set_tcini(TCFS2, quick_bar, 0) run_action(fs_undo)Код: Выделить всё
TCFS2 /ef "set_tcini(TCFS2, quick_bar, 0)" /ei fs2После выхода из фуллскрина с применением этой заглушки
переключить панель удается только со второго раза, нехорошо.
Код: Выделить всё
TCFS2 /ef "set_tcini(TCFS2, quick_bar, 0)" /ei fs2«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Переключить чем? И куда? У меня при возврате в оконный режим панель включается сама.
Ага, понял. Проблема в том, что при переключении панели с помощью tb0/tb1 тотал сбрасывает панель на стандартную, в то время как параметр [TCFS2] Bar сохраняет значение 2 (если переходить в полный экран при активной 2 панели).
Как вариант, можешь модифицировать команду tb0:
Тогда реальный номер панели будет соответствовать записанному в параметре [TCFS2] Bar, и всё будет работать.
Ага, понял. Проблема в том, что при переключении панели с помощью tb0/tb1 тотал сбрасывает панель на стандартную, в то время как параметр [TCFS2] Bar сохраняет значение 2 (если переходить в полный экран при активной 2 панели).
Как вариант, можешь модифицировать команду tb0:
Код: Выделить всё
tb0=tcm(2901) set_tcini(TCFS2, Bar, 0), test(hasButtonBar), tb11. Переключаюсь с главной на расширенную панель инструментов;MVV писал(а):Переключить чем? И куда? У меня при возврате в оконный режим панель включается сама.
2. Не дожидаясь 15-секундного возврата на главную, перехожу в фуллскрин (нет панели инструментов);
3. Возвращаюсь в оконный режим (главная панель инструментов);
4. Пытаюсь переключиться на расширенную с первого раза.
Проблемный четвертый пункт - только со второго раза переключение.
Не знаю, не работает.MVV писал(а):и всё будет работать.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Точно, не работает. Команда quick_bar же проверяет номер на 1, а не на 0. Тогда модифицировать quick_bar:
Я просто чуть поправил условие. Теперь вторая панель включается всегда, когда текущий номер панели не равен 2 - т.е. и из нулевой, и из первой.
Также можно заменить tb0 в действии fs (действие fs2 вызывает fs) на set_bar(0), чтобы не модифицировать саму tb0:
Код: Выделить всё
set_tcini(TCFS2, #0, 0) run_item(set_bar, 1), test(tcini(TCFS2, Bar, #)==2) | set_tcini(TCFS2, #0, @sid) run_item(set_bar, 2) delay(5000) if(tcini(TCFS2, #0, # == @sid), run_item(set_bar, 1))Также можно заменить tb0 в действии fs (действие fs2 вызывает fs) на set_bar(0), чтобы не модифицировать саму tb0:
Код: Выделить всё
[Actions]
fs=db0 dc0 set_bar(0) cd0 cl0 kb0 c0 rm1pm m1Если я в фуллскрине вызову переключалку панелей, то сначала увижу 2-ю, которая затем сменится на 1-ю. Ну да, подойдет так, спасибо.MVV писал(а):Теперь вторая панель включается всегда, когда текущий номер панели не равен 2 - т.е. и из нулевой, и из первой.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Можешь написать так:
Тогда и в фуллскрине будет нормально.
Или можешь добавить действие отката для set_bar:
Тогда при выходе из фуллскрина будет вызываться действие отката set_bar(1), которое будет включать основная панель и писать её номер в [TCFS2] Bar. И можно будет вернуть оригинальный вариант quick_bar, включающий в полноэкранном режиме основную панель, если панель выключена.
Кстати, как вариант, добавление set_tcini(TCFS2, Bar, 1) в tb1 тоже решило бы проблему открытия второй панели только на второй раз при выходе из фуллскрина.
В общем, вариантов масса. Главное - составить для себя чёткий алгоритм, продумать все варианты исходов в зависимости от начальных условий. И описать его.
Код: Выделить всё
fs=db0 dc0 set_bar(1) tb0 cd0 cl0 kb0 c0 rm1pm m1Или можешь добавить действие отката для set_bar:
Код: Выделить всё
set_bar=if(#1 == 1, tem(em_bar1)) if(#1 == 2, tem(em_bar2)) if(#1 > 0, set_tcini(Layout, ButtonBar, 1), run_item(tb0)) set_tcini(TCFS2, Bar, #1), , set_bar(1)Кстати, как вариант, добавление set_tcini(TCFS2, Bar, 1) в tb1 тоже решило бы проблему открытия второй панели только на второй раз при выходе из фуллскрина.
В общем, вариантов масса. Главное - составить для себя чёткий алгоритм, продумать все варианты исходов в зависимости от начальных условий. И описать его.
Я сейчас колеблюсь над тем, чтобы совсем исключить вызов панели инструментов в фуллскрине. Главный аргумент - некрасиво (кнопки не по центру). А что, если переключалка панелей в фуллскрине будет осуществлять выход из фуллскрина? Логика следующая - переключалкой панелей инструментов в фуллскрине я желаю увидеть одну из этих панелей, но панель инструментов в фуллскрине смотрится некрасиво, таким образом, выход из фуллскрина даст мне желаемую возможность увидеть одну из панелей в красивом исполнении.
P.s. Многочисленные повторения в постах совершаю намеренно для доступности понимания.
P.s. Многочисленные повторения в постах совершаю намеренно для доступности понимания.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица