По счастью у меня ничего не мелькает. Даже с TCS.Pause = 70 (по умолчанию).Flasher писал(а):Мелькание появляется
Обсуждение темы "Обмен кнопками"
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Что-то пока я вижу только то, что единственным 100%-надежным средством различия режимов является наличие стиля LBS_MULTICOLUMN. По нему можно понять, краткий ли режим. Все остальные режимы различить при пустой панели (корень пустого диска) никак не получится, если использовать только документированные средства. Да и при непустой далеко не все и не всегда - насколько я заметил, строки списка и в полном и в режиме эскизов хранят абсолютно одинаковую информацию. Разве что дерево можно определять по двум слэшам в начале первого элемента (не могу придумать, могут ли они там быть в какой-либо ещё ситуации).VadiMGP писал(а):Еще может оказаться что нулевого элемента вообще нету, пустая флешка, например.MVV писал(а): надо будет проверить это всё.
В общем, поделись результатом проверок, пожалуйста. TWinKey, конечно, более-менее нормально определяет текущий режим, но если будет хорошая идея как это сделать надежнее буду только рад.
Согласен. По счастью в совершенно пустой панели мне ничего не надо делать, поэтому не страшно.MVV писал(а):Все остальные режимы различить при пустой панели (корень пустого диска) никак не получится,
Ну так и я про то же.MVV писал(а):Да и при непустой далеко не все и не всегда
Я долго мучил репу, потом плюнул и сейчас волюнтаристски определяю эскизы по высоте элемента листбокса(если он >= 48 пикселей)MVV писал(а): строки списка и в полном и в режиме эскизов хранят абсолютно одинаковую информацию.
Во-первых, мне еще попадался вариант не два слэша, а ".\." А два одиноких слеша я побоялся использовать как индикатор, уж слишком выглядит неоднозначно. Я проверяю на "\"+GetNameOfCSIDL(CSIDL_DESKTOP,...)MVV писал(а):Разве что дерево можно определять по двум слэшам в начале первого элемента (не могу придумать, могут ли они там быть в какой-либо ещё ситуации)
Насчет высоты элементов - да, хорошая мысль. Но тогда лучше взять из конфига размер значка - он совпадает с высотой нормальной строки. Далее, по идее, высота строки в режиме эскизов может быть и меньше этой величины (ставлю, например, значки 128х128 - знаю, звучит глупо, но тотал позволяет). Выходит, в режиме эскизов высота просто не будет совпадать с этим числом (не будем рассматривать тот шизофренический случай, когда они вдруг случайно совпадут - нормальные люди не используют значки такой величины). Жаль, сложно получить это значение из конфига (имя раздела в большинстве случаев зависит от режима экрана и других параметров).
В дереве такое попадалось? Или в другом режиме? Дерево, по идее, всегда имеет десктоп в корне. А вот есть ли другие папки, чтобы первым элементом был элемент с 2 слэшами в начале - вопрос.Во-первых, мне еще попадался вариант не два слэша, а ".\."
В теории, наверное, лучше, но на практике слишком большие заморочки. Добавь еще к этому то, что резолюция монитора в любую минуту может поменяться и вообще могут быть несколько ТС с разными конфигами.MVV писал(а): Но тогда лучше взять из конфига размер значка
Потому-то я плюнул и взял за минимум для эскизов 48 пикселей. Кто ставит эскизы меньшего размера (или для текста фонт большего) - ничем не могу помочь.
Именно в дереве. Возможно, что это было в предыдущих версиях ТС, а сейчас уже нет, не знаю. Я как обнаружил пару лет назад такое, добавил в проверки и больше не трогал.MVV писал(а):В дереве такое попадалось?
Вопрос хороший, ответа нету. Потому я и взял полностью строку, включая имя десктопа, от греха подальше.MVV писал(а):А вот есть ли другие папки, чтобы первым элементом был элемент с 2 слэшами в начале - вопрос
С новой версией TCFS2 этих проблем нет, поэтому скрипт отпадает.sa писал(а):К тому же, если случайно перейти в другой режим не по этой команде, а иным способом, то тоже возникают накладки.
А посему – скрипт пока универсальнее.
Код: Выделить всё
modeL=tcm(301), tcm(65553) | tcm(302)
modeR=tcm(301), tcm(65554) | tcm(302)
swmode=run_item(modeL), tcm(65551) | run_item(modeR); Переключается между подробным и кратким режимомFlasher
С новой версией TCFS2 по-моему можно ограничиться одной строчкой вместо трёх
Однако без скрипта по-прежнему не выполняется одно из условий исходной задачи:
С новой версией TCFS2 по-моему можно ограничиться одной строчкой вместо трёх
Код: Выделить всё
swmode=tcm(301), test(S_viewMode > 0) | tcm(302) ; Переключаться между подробным и кратким режимом
Скрипт у меня пока не отпадает, тем более, что он хорошо “держит картинку” (особенно заметно на больших списках).ask-rus писал(а):Если мы находимся в режиме, например, "Просмотр эскизов", нажатие на кнопку переведет панель в "Подробный"
Только сейчас обнаружил S_viewMode, спасибо за подсказку.sa писал(а):С новой версией TCFS2 по-моему можно ограничиться одной строчкой вместо трёх
Про это условие можно забыть, я уже писал - оно нечитабельно. И скрипт никакого преимущества в этом смысле не даёт.sa писал(а):Однако без скрипта по-прежнему не выполняется одно из условий исходной задачи:
Последний раз редактировалось Flasher Пн май 09, 2011 00:51, всего редактировалось 1 раз.
Повторю - ничего скрипт не даст. Он всё время будет возвращаться к одному и тому же режиму, хоть к краткому, хоть к подробному в зависимости от настроек. У меня - к краткому. И вообще не вижу смысла использовать скрипт для возврату к подробному режиму, если проще использовать саму команду cm_SrcThumbs. И потом, если уж говорить об исходности и т.п., то я тоже могу кое-что процитировать:
ask-rus писал(а):Стараюсь избегать TCScript.Helper (портабельность).