Обсуждение темы "Обмен кнопками"

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

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

sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):Мелькание появляется
По счастью у меня ничего не мелькает. Даже с TCS.Pause = 70 (по умолчанию). :)
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa
А ты автообновление и TwinKey используешь?
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):А ты автообновление и TwinKey используешь?
Я много чего ещё (помимо них) не использую.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

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

Сообщение MVV »

VadiMGP писал(а):
MVV писал(а): надо будет проверить это всё.
Еще может оказаться что нулевого элемента вообще нету, пустая флешка, например. :)
В общем, поделись результатом проверок, пожалуйста. TWinKey, конечно, более-менее нормально определяет текущий режим, но если будет хорошая идея как это сделать надежнее буду только рад.
Что-то пока я вижу только то, что единственным 100%-надежным средством различия режимов является наличие стиля LBS_MULTICOLUMN. По нему можно понять, краткий ли режим. Все остальные режимы различить при пустой панели (корень пустого диска) никак не получится, если использовать только документированные средства. Да и при непустой далеко не все и не всегда - насколько я заметил, строки списка и в полном и в режиме эскизов хранят абсолютно одинаковую информацию. Разве что дерево можно определять по двум слэшам в начале первого элемента (не могу придумать, могут ли они там быть в какой-либо ещё ситуации).
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

MVV писал(а):Все остальные режимы различить при пустой панели (корень пустого диска) никак не получится,
Согласен. По счастью в совершенно пустой панели мне ничего не надо делать, поэтому не страшно.
MVV писал(а):Да и при непустой далеко не все и не всегда
Ну так и я про то же.
MVV писал(а): строки списка и в полном и в режиме эскизов хранят абсолютно одинаковую информацию.
Я долго мучил репу, потом плюнул и сейчас волюнтаристски определяю эскизы по высоте элемента листбокса(если он >= 48 пикселей)
MVV писал(а):Разве что дерево можно определять по двум слэшам в начале первого элемента (не могу придумать, могут ли они там быть в какой-либо ещё ситуации)
Во-первых, мне еще попадался вариант не два слэша, а ".\." А два одиноких слеша я побоялся использовать как индикатор, уж слишком выглядит неоднозначно. Я проверяю на "\"+GetNameOfCSIDL(CSIDL_DESKTOP,...)
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Насчет высоты элементов - да, хорошая мысль. Но тогда лучше взять из конфига размер значка - он совпадает с высотой нормальной строки. Далее, по идее, высота строки в режиме эскизов может быть и меньше этой величины (ставлю, например, значки 128х128 - знаю, звучит глупо, но тотал позволяет). Выходит, в режиме эскизов высота просто не будет совпадать с этим числом (не будем рассматривать тот шизофренический случай, когда они вдруг случайно совпадут - нормальные люди не используют значки такой величины). Жаль, сложно получить это значение из конфига (имя раздела в большинстве случаев зависит от режима экрана и других параметров).
Во-первых, мне еще попадался вариант не два слэша, а ".\."
В дереве такое попадалось? Или в другом режиме? Дерево, по идее, всегда имеет десктоп в корне. А вот есть ли другие папки, чтобы первым элементом был элемент с 2 слэшами в начале - вопрос.
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

MVV писал(а): Но тогда лучше взять из конфига размер значка
В теории, наверное, лучше, но на практике слишком большие заморочки. Добавь еще к этому то, что резолюция монитора в любую минуту может поменяться и вообще могут быть несколько ТС с разными конфигами.
Потому-то я плюнул и взял за минимум для эскизов 48 пикселей. Кто ставит эскизы меньшего размера (или для текста фонт большего) - ничем не могу помочь.
MVV писал(а):В дереве такое попадалось?
Именно в дереве. Возможно, что это было в предыдущих версиях ТС, а сейчас уже нет, не знаю. Я как обнаружил пару лет назад такое, добавил в проверки и больше не трогал.
MVV писал(а):А вот есть ли другие папки, чтобы первым элементом был элемент с 2 слэшами в начале - вопрос
Вопрос хороший, ответа нету. Потому я и взял полностью строку, включая имя десктопа, от греха подальше.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa писал(а):К тому же, если случайно перейти в другой режим не по этой команде, а иным способом, то тоже возникают накладки.
А посему – скрипт пока универсальнее.
С новой версией TCFS2 этих проблем нет, поэтому скрипт отпадает.

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

modeL=tcm(301), tcm(65553) | tcm(302)
modeR=tcm(301), tcm(65554) | tcm(302)
swmode=run_item(modeL), tcm(65551) | run_item(modeR); Переключается между подробным и кратким режимом
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher
С новой версией TCFS2 по-моему можно ограничиться одной строчкой вместо трёх

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

swmode=tcm(301), test(S_viewMode > 0) | tcm(302)  ; Переключаться между подробным и кратким режимом
Однако без скрипта по-прежнему не выполняется одно из условий исходной задачи:
ask-rus писал(а):Если мы находимся в режиме, например, "Просмотр эскизов", нажатие на кнопку переведет панель в "Подробный"
Скрипт у меня пока не отпадает, тем более, что он хорошо “держит картинку” (особенно заметно на больших списках).
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa писал(а):С новой версией TCFS2 по-моему можно ограничиться одной строчкой вместо трёх
Только сейчас обнаружил S_viewMode, спасибо за подсказку.
sa писал(а):Однако без скрипта по-прежнему не выполняется одно из условий исходной задачи:
Про это условие можно забыть, я уже писал - оно нечитабельно. И скрипт никакого преимущества в этом смысле не даёт.
Последний раз редактировалось Flasher Пн май 09, 2011 00:51, всего редактировалось 1 раз.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):Про это условие можно забыть,
А можно и не забывать, если пользоваться скриптом.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Повторю - ничего скрипт не даст. Он всё время будет возвращаться к одному и тому же режиму, хоть к краткому, хоть к подробному в зависимости от настроек. У меня - к краткому. И вообще не вижу смысла использовать скрипт для возврату к подробному режиму, если проще использовать саму команду cm_SrcThumbs. И потом, если уж говорить об исходности и т.п., то я тоже могу кое-что процитировать:
ask-rus писал(а):Стараюсь избегать TCScript.Helper (портабельность).
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):Он всё время будет возвращаться к одному и тому же режиму, хоть к краткому, хоть к подробному в зависимости от настроек. У меня - к краткому.
А у меня к подробному, как в задачке. А от каких кстати, настроек это зависит?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Вообще-то я не прав - настройки тут ни при чём. Скрипт сам сравнивает строки. Вот только я не могу понять, как у тебя может возникать подробный режим из эскизов, если cm_CopyFileDetailsToClip в режиме Эскизов даёт строку отличную от той, что даёт cm_CopyNamesToClip. :shock:
Ответить