Переключение между разными базами эскизов
Модераторы: Моторокер, Avada, CaptainFlint, Nik, d-view
Переключение между разными базами эскизов
По ходу приватного обсуждения в ЛС с участником форума Кабал, запросившим возможность переключения между разным размером эскизов, выяснилось, что задачу можно решить, если одноимённые файлы баз для эскизов с разным размером будут лежать независимо друг от друга в двух разных папках. Например, C:\Totalcmd\Base\1 и C:\Totalcmd\Base\2. Вручную эта методика работает — базы подхватываются, не мешают друг другу и не требуют удаления при переключении кэша.
Чтобы автоматизировать процедуру, хотелось бы получить скрипт, отрабатывающий такую последовательность действий:
1. Открыть диалог настроек на странице "Эскизы" (cm_ThumbnailsConfig).
2. Перевести по Tab (1 раз) фокус на поле "Расположение базы данных".
3. Вставить альтернативный путь, заместив прежний.
5. Перевести по Tab (7 раз) фокус на первое поле размера.
4. Вставить альтернативный размер, заместив прежний.
6. Перевести по Tab (1 раз) фокус на второе поле размера.
7. Вставить альтернативный размер, заместив прежний.
8. Нажать Enter (сохранить изменения и закрыть диалог).
Исходный скрипт с произвольными путём и размерами понадобится отредактировать и сохранить со своими данными как два разных скрипта (переход с меньшего размера эскизов на больший и наоборот), а для двух этих скриптов уже создавать кнопки или em-команды.
Чтобы автоматизировать процедуру, хотелось бы получить скрипт, отрабатывающий такую последовательность действий:
1. Открыть диалог настроек на странице "Эскизы" (cm_ThumbnailsConfig).
2. Перевести по Tab (1 раз) фокус на поле "Расположение базы данных".
3. Вставить альтернативный путь, заместив прежний.
5. Перевести по Tab (7 раз) фокус на первое поле размера.
4. Вставить альтернативный размер, заместив прежний.
6. Перевести по Tab (1 раз) фокус на второе поле размера.
7. Вставить альтернативный размер, заместив прежний.
8. Нажать Enter (сохранить изменения и закрыть диалог).
Исходный скрипт с произвольными путём и размерами понадобится отредактировать и сохранить со своими данными как два разных скрипта (переход с меньшего размера эскизов на больший и наоборот), а для двух этих скриптов уже создавать кнопки или em-команды.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Не представит себе наши безобразия.
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Код: Выделить всё
args Path, Size1, Size2
local hwnd = win.handle("C=TTOTAL_CMD")
clip.save
clip.clear
clip.set(Path)
wait.for(clip.get)
wait.for(clip.get == Path)
win.postmessage(hwnd, 0x400+51, 482, 0)
*keys {tab}
clip.paste
wait.for(50)
clip.clear
clip.set(Size1)
wait.for(clip.get)
wait.for(clip.get == Size1)
*keys {tab 7}
clip.paste
wait.for(50)
clip.clear
clip.set(Size2)
wait.for(clip.get)
wait.for(clip.get == Size2)
*keys {tab}
clip.paste
wait.for(50)
*keys {enter}
clip.load1) PowerPro;
2) Плагины win и clip (входят в стандартную поставку).
Кнопка:
Код: Выделить всё
TOTALCMD#BAR#DATA
e:\Utils\PowerPro\powerpro.exe
runfile.имя_скрипта("e:\новый\путь\к\базе", 128, 128)
E:\путь\к\икноке\иконка.ICO
test", "
-1Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Куда-то скриптописцы подевались...
ChangeCacheBase.vbs
Кнопка
Script Helper считается за доп. средство?Кабал писал(а):Хочется скрипт, который я мог бы применить без дополнительных средств.
ChangeCacheBase.vbs
Код: Выделить всё
'==============================================================================
' Переключение между разными базами эскизов
' http://forum.wincmd.ru/viewtopic.php?t=14269
' Параметры для кнопки (путь - в кавычках)
' Путь Первый_размер Второй_размер
' Необходим Script Helper ActiveX от Volniy
'==============================================================================
Option Explicit
Dim TCS, Path, Size1, Size2
Set TCS = CreateObject("TCScript.Helper")
Path = WScript.Arguments(0)
Size1 = WScript.Arguments(1)
Size2 = WScript.Arguments(2)
'1. Открыть диалог настроек на странице "Эскизы" (cm_ThumbnailsConfig).
TCS.SendCommand(482)
'2. Перевести по Tab (1 раз) фокус на поле "Расположение базы данных".
TCS.SendKeystroke "{TAB}"
'3. Вставить альтернативный путь, заместив прежний.
TCS.SendKeystroke Path
'4. Перевести по Tab (7 раз) фокус на первое поле размера.
TCS.SendKeystroke "{TAB 7}"
'5. Вставить альтернативный размер, заместив прежний.
TCS.SendKeystroke Size1
'6. Перевести по Tab (1 раз) фокус на второе поле размера.
TCS.SendKeystroke "{TAB}"
'7. Вставить альтернативный размер, заместив прежний.
TCS.SendKeystroke Size2
'8. Нажать Enter (сохранить изменения и закрыть диалог)
TCS.SendKeystroke "{ENTER}"
Set TCS = Nothing
Wscript.Quit()Код: Выделить всё
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\Scripts\ChangeCacheBase.vbs
"C:\Totalcmd\Base\1" 128 128
%WINDIR%\System32\WScript.exe
Переключение между разными базами эскизов
-1
Rodny
Спасибо, работает. А Script Helper лично я согласен за доп. средство не считать, так что результат вполне устраивает.
Только (пояснение для новичков) кнопок там, разумеется должно быть две (вторая создаётся на основе первой с изменением пути к базе и размеров).
Спасибо, работает. А Script Helper лично я согласен за доп. средство не считать, так что результат вполне устраивает.
Только (пояснение для новичков) кнопок там, разумеется должно быть две (вторая создаётся на основе первой с изменением пути к базе и размеров).
Даже самая богатая фантазия
Не представит себе наши безобразия.
Не представит себе наши безобразия.
Прошу подсказать, как при использовании имеющегося скрипта от Rodny обеспечить возможность корректно вставлять путь к базе, содержащий переменную %Commander_path% — без искажений и обязательно с сохранением этой переменной. При указании переменной в кнопке в поле "Параметры" номер не проходит ни с одиночными символами процента, ни с удвоенными: вставляется усечённый путь. Если же указывать путь в поле "Команда", переменная раскрывается правильно, но вставленный путь сохраняется в явном виде.
На уже имеющиеся темы с обсуждением сходного вопроса прошу не ссылаться: мне нужно решение именно в данной конкретной ситуации.
На уже имеющиеся темы с обсуждением сходного вопроса прошу не ссылаться: мне нужно решение именно в данной конкретной ситуации.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Не представит себе наши безобразия.
Так?
Код: Выделить всё
Set WshShell = WScript.CreateObject("WScript.Shell")
Path = Replace (WScript.Arguments(0), "%Commander_path%", WshShell.ExpandEnvironmentStrings("%Commander_path%"))Зачем? Она же раскрываться должна.Avada писал(а):с сохранением этой переменной
Lev, WSH без объявления переменной через DIM не работает, поэтому лучше сразу вызывать:
Код: Выделить всё
Path = CreateObject("WScript.Shell").Environment("Process")("COMMANDER_PATH")Код: Выделить всё
' Переключаться между 2-мя размерами эскизов
'===========================================
With CreateObject("TCScript.Helper")
If .INIRead(.MainINI, "Configuration", "ThumbHeightNoCache", "") = "80" Then
F = "2" ' Задаём имя папки ( 1 символ)
W = "120" ' Задаём ширину
H = "120" ' Задаём высоту
Else
F = "1"
W = "80"
H = "80"
End If
.SendCommand 482
.SendKeystroke "{TAB}{END}{BS}" & F & "{TAB 7}" & W & "{TAB}" & H & "~"
.INIWrite .MainINI, "Configuration", "ThumbHeightNoCache", H
End WithАвтору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Во первых предлагалась правка к скрипту, где все переменные объявленыFlasher писал(а):Lev, WSH без объявления переменной через DIM не работает, поэтому лучше сразу вызывать
Во вторых - впервые слышу, что "WSH без объявления переменной через DIM не работает". У меня уже десяток лет без объявлений wsh трудится. Может у Вас Option Explicit в каждом скрипте воткнут?
В третьих - перед постом протестировал свою пару строчек
Flasher
Раскрываться должна. Но и сохранение изменённой записи с переменной крайне желательно. Иначе никакой портабельности не получается. Запускаю TC с флэшки, а он обращается к базе не внутри текущего каталога TC (допустим, K:\Totalcmd\Base\1), а к другой, согласно указанному в параметрах кнопки местоположению на жёстком диске (C:\Totalcmd\Base\1). Опять же на разных машинах у флэшки буквы меняются...
Что касаемо последнего скрипта, то одна кнопка вместо двух, конечно, экономит место (хотя и в применении двух кнопок есть свои преимущества.) Но мне совершенно не нужны ни периодически вылезающий запрос на удаление кэша в результате изменения размера эскизов, ни само это удаление. И здесь, как и в нынешнем варианте Rodny, не решена проблема использования пути с переменной и сохранения затем пути ровно в том же (а не в раскрытом и не в испорченном!) виде.
Lev
Можно ли увидеть полный вариант скрипта, включающий предложенные строчки? А заодно и свой вариант кнопки на базе такого скрипта.
Раскрываться должна. Но и сохранение изменённой записи с переменной крайне желательно. Иначе никакой портабельности не получается. Запускаю TC с флэшки, а он обращается к базе не внутри текущего каталога TC (допустим, K:\Totalcmd\Base\1), а к другой, согласно указанному в параметрах кнопки местоположению на жёстком диске (C:\Totalcmd\Base\1). Опять же на разных машинах у флэшки буквы меняются...
Что касаемо последнего скрипта, то одна кнопка вместо двух, конечно, экономит место (хотя и в применении двух кнопок есть свои преимущества.) Но мне совершенно не нужны ни периодически вылезающий запрос на удаление кэша в результате изменения размера эскизов, ни само это удаление. И здесь, как и в нынешнем варианте Rodny, не решена проблема использования пути с переменной и сохранения затем пути ровно в том же (а не в раскрытом и не в испорченном!) виде.
Lev
Можно ли увидеть полный вариант скрипта, включающий предложенные строчки? А заодно и свой вариант кнопки на базе такого скрипта.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Не представит себе наши безобразия.
Lev
1. Переменные объявлены только те, что фигурируют в скрипте, WshShell там не было.
2. Я много раз сталкивался. На Win7 проверялось?
Option Explicit не использую нигде. Это для отладки.
3. Там есть какие-то завязки, когда объектов в скрипте несколько, и вызываются их методы. Отдельно WSH, может, и работает.
1. Переменные объявлены только те, что фигурируют в скрипте, WshShell там не было.
2. Я много раз сталкивался. На Win7 проверялось?
Option Explicit не использую нигде. Это для отладки.
3. Там есть какие-то завязки, когда объектов в скрипте несколько, и вызываются их методы. Отдельно WSH, может, и работает.
Так было изначально запрошено.Avada писал(а):одна кнопка вместо двух, конечно, экономит место
Не должно быть. Главное, что в ключе должно быть указано правильное название папки:Avada писал(а):Но мне совершенно не нужны ни периодически вылезающий запрос на удаление кэша в результате изменения размера эскизов, ни само это удаление.
В папке "2" - эскизы 120х120, в папке "1" - 80х80. В 4 строчке скрипта значение должно соответствовать значение размера эскизов из папки "1", т.е. 80.ThumbsLocation=%COMMANDER_PATH%\Thumbs\2
Тут этой переменной вообще нет, она не нужна.Avada писал(а):И здесь, как и в нынешнем варианте Rodny, не решена проблема использования пути с переменной и сохранения затем пути ровно в том же (а не в раскрытом и не в испорченном!) виде.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Изначально я запрашивал две кнопки.Flasher писал(а):Так было изначально запрошено.
Это уже не папка, а путь к ней. И правильным путём будет тот, который я таковым считаю и хочу указать, не правда ли? На данный момент, к примеру, у меня на домашнем компе это C:\Totalcmd\Profile\Base\2. Без Thumbs. И с помощью скрипта (и, соответственно, кнопки или их пары) я хочу, чтобы этот путь после смены базы записался в INI-файл в нужном мне виде, как %Commander_path%Profile\Base\2. И альтернативный путь (к папке 1) точно так же. Если это реально, конечно. А что на самом деле главное, см. далее.Flasher писал(а):Не должно быть. Главное, что в ключе должно быть указано правильное название папки
У меня другие размеры: 128x128 и а 96x96. В этом-то и было дело. Исправил в скрипте на свои — вылезание предупреждения прекратилось.Flasher писал(а):В папке "2" - эскизы 120х120, в папке "1" - 80х80. В 4 строчке скрипта значение должно соответствовать значение размера эскизов из папки "1", т.е. 80.
Вообще не нужна или тут не нужна? Потому что мне (см. всё предыдущее) она вот именно что нужна.Flasher писал(а):Тут этой переменной вообще нет, она не нужна.
Последний раз редактировалось Avada Вт мар 26, 2013 19:47, всего редактировалось 1 раз.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Не представит себе наши безобразия.
Я про автора первичного запроса.Avada писал(а):Изначально я запрашивал две кнопки.
Если Thumbs указан зелёным цветом, то нужно понимать, что это изменяемая по усмотрению часть пути. В твоём случае это Profile\Base.Avada писал(а):И правильным путём будет тот, который я таковым считаю и хочу указать, не правда ли? На данный момент, к примеру, у меня на домашнем компе это C:\Totalcmd\Profile\Base\2. Без Thumbs.
Оно так и происходит, через диалог.Avada писал(а):И с помощью скрипта (и, соответственно, кнопки или их пары) я хочу, чтобы этот путь после смены базы записался в INI-файл в нужном мне виде
Переменная в скрипте не нужна. Или у тебя меняется Profile\Base?Avada писал(а):Вообще не нужна или тут не нужна?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Так в этой теме я и есть такой автор. У Кабал одно сообщение, и оно идёт после моего. Всё предыдущее обсуждалось до создания темы в личке. Впрочем, это неважно.Flasher писал(а):Я про автора первичного запроса.
Понял.Flasher писал(а):Если Thumbs указан зелёным цветом, то нужно понимать, что это изменяемая по усмотрению часть пути. В твоём случае это Profile\Base.
Нет. Запись идёт в явном виде. (С сообщением, как сказано выше, уже разобрался).Flasher писал(а):Оно так и происходит, через диалог.
У меня — нет. Только цифровое имя подкаталога для конкретной базы.Flasher писал(а):Или у тебя меняется Profile\Base?
Если вставить в диалоге в поле "Расположение базы данных" путь к нужной папке, содержащий переменную, он записывается в INI-файл с этой переменной. Тотал её видит и обрабатывает правильно. Что и требуется. То есть задача в принципе решаема. Осталось понять, каким образом её корректно вставить на уровне скрипта, чтобы в кнопке не указывать.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Не представит себе наши безобразия.