Страница 86 из 243

Добавлено: Вт мар 05, 2019 11:08
Avada
Loopback
Там дальше у меня была позднейшая дописка, когда заработало, а когда нет. Так что готов к дальнейшему обсуждению.

Добавлено: Вт мар 05, 2019 11:30
Flasher
Loopback писал(а):Но в любом случае, если включить сохранение позиций, оно будет перекрывать эту настройку. И это последнее
Я было подумал, что с /SAVE:4/8/12 центрирование будет происходить само собой, но что-то у меня вообще ничего не подхватывается:

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

# Сохранение высоты "Определить цвета для типов файлов":
AddDialog /SAVE:8 "TDlgCustomColors"
AddCondition /TEXT /VISIBLE:1 "Определить цвета для типов файлов"
# Сохранение размеров "Внутренние ассоциации":
AddDialog /SAVE:12 "TDlgCustomColors"
AddCondition /TEXT /VISIBLE:1 "Внутренние ассоциации"
# Увеличение и сохранение высоты "Добавить выделение":
AddDialog /H:200 /SAVE:8 "TCOMBOINPUT"
AddCondition /TEXT /VISIBLE:1 "Добавить выделение"
AddControl /H:200 "TMyListBox" 1
# Измение и сохранение высоты диалога "Фильтр...":
AddDialog /H:200 /SAVE:8 "TCOMBOINPUT"
AddCondition /TEXT /VISIBLE:1 "Total Commander"
AddControl /H:200 "TMyListBox" 1
# Сохранение размеров "Выбор команды":
AddDialog /SAVE:12 "TCmdSelForm"
# Сохранение размеров "Файловые ассоциации":
AddDialog /SAVE:12 "TASSOCIATEDLG"
AddCondition /TEXT /PARENT "TMyPanel" 1 "Плагины"
AddDialog /SAVE:12 "TASSOCIATEDLG"
AddCondition /TEXT /PARENT "TMyPanel" 1 "Правка/Просмотр"
AddDialog /SAVE:12 "TASSOCIATEDLG"
# Сохранение размеров "Плагины файловой системы"
AddDialog /SAVE:12 "TFsPluginConfigForm"
AddCondition /TEXT /VISIBLE:1 "Плагины файловой системы"
# Сохранение размеров "Плагины внутреннего просмотрщика"
AddDialog /SAVE:12 "TFsPluginConfigForm"
AddCondition /TEXT /VISIBLE:1 "Плагины внутреннего просмотрщика"
# Сохранение размеров "Информационные плагины"
AddDialog /SAVE:12 "TFsPluginConfigForm"
AddCondition /TEXT /VISIBLE:1 "Информационные плагины"
Что делаю не так?
Насчёт "последнее" — а больше и не надо. И так выше крыши. :D
Главное, чтобы работало.
Loopback писал(а):Там класс "TCheckBox", а не "TMyCheckBox" должен быть.
Точно. Я наивно скопипастил класс у первого чекбокса. ) Спасибо. Исправил в сообщении — теперь порядок.
Add: Хотя нет... На относительно голом ТС работает, а на моём — нет, + отламывается TGroupBox. :(
Loopback писал(а):Попробую поставить ожидание комбобокса вместо чекбокса.
ОК.
Loopback писал(а):все равно хотелось бы понять, почему вообще такая проблема возникает, когда Autorun запускается, но не загружает подплагин.
С этой проблемой сталкивался ещё в далёком 2011 и даже не надеялся, что без полноценного закрытия ТС это возможно исправить.

Добавлено: Вт мар 05, 2019 12:09
Loopback
Avada писал(а):Но, что интересно, с тестовой версией Autorun появляются только сообщения о загрузке библиотек, ошибки не выводятся, диалог копирования изменяется правильно.
Причем в сообщениях, как я понимаю, правильные полные пути?

Такое впечатление, что сообщение создает задержку из-за которой начинает все работать. Но инициализация функций плагинов происходит последовательно, и пока они все не загрузятся, скрипт Autorun дальше не пойдет.

Похоже, проблема возникает, если еще до конца не выгрузилась предыдущая версия TC, но я не понимаю, как это может влиять, особенно учитывая то, что версии разной битности и загружают свои версии плагина.

Добавлено: Вт мар 05, 2019 12:15
Avada
Loopback
Да, в сообщениях абсолютно правильные и полные пути. А идея о задержке приходила в голову и мне. Что, в скрипте для перезапуска надо задержку где-то попробовать увеличить? И почему эта карусель зависит от местоположения?

Со скриптом уже поигрался. Sleep(100) — нормально проходит первое переключение на x64 с 32-битного TC, но вылезают ошибки при возврате к прежней битности. Sleep(120) — вроде теперь всё нормально. Но буду ещё смотреть, в том числе на другой машине.

Добавлено: Вт мар 05, 2019 12:29
Loopback
Flasher писал(а):Я было подумал, что с /SAVE:4/8/12 центрирование будет происходить само собой
Нет, такого не предполагалось.
Flasher писал(а):Что делаю не так?
Ну как минимум, неправильно используешь функцию AddCondition :)

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

AddCondition /TEXT /VISIBLE:1 "Определить цвета для типов файлов" 
Во-первых, /TEXT и /VISIBLE: - вместе не используются. VISIBLE - это видимость контрола. Во-вторых, где класс/экземпляр контрола, для которого создается условие? Я так понимаю, ты здесь хочешь сравнить с текстом заголовка, тогда надо делать так:

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

AddCondition /TEXT "TDlgCustomColors" 0 "Определить цвета для типов файлов" 
На самом деле, должно работать и с пустым именем класса:

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

AddCondition /TEXT "" 0 "Определить цвета для типов файлов" 
Это надо документировать. Но "" 0 в любом случае останется, т.к. последовательность параметров.
Flasher писал(а):С этой проблемой сталкивался ещё в далёком 2011 и даже не надеялся, что без полноценного закрытия ТС это возможно исправить.
Даже так. Ну я пока тоже не надеюсь, пока не смогу повторить у себя. Даже дебажку сделать сложно, пока не понимаешь где хоть примерно может быть проблема.

Добавлено: Вт мар 05, 2019 12:31
Avada
Loopback
Тут у меня опять существенное дополнение было...

Добавлено: Вт мар 05, 2019 12:39
Loopback
Avada писал(а):И почему эта карусель зависит от местоположения?
Если бы я это знал, то наверно уже мог бы приступить к исправлению :) А так нет, не знаю, может скорость диска другая или еще что-то.
Avada писал(а): Тогда прошу конкретных рекомендаций,
Вечером набросаю скриптик для перезапуска с ожиданием полного завершения процесса тотала. Чтобы хоть убедиться, что это действительно зависит от полной выгрузки процесса.

Дополнение видел, скорее всего да, зависимость от полной выгрузки (закрытие окна не означает полной выгрузки процесса).

Добавлено: Вт мар 05, 2019 13:08
Flasher
Loopback писал(а):Нет, такого не предполагалось.
Ясно. Жду опции.
Loopback писал(а):/TEXT и /VISIBLE: - вместе не используются.
ОК. Убрал везде /VISIBLE:1. Не обратил внимания на '|' в синтаксисе.
Loopback писал(а):Во-вторых, где класс/экземпляр контрола, для которого создается условие?
Посчитал, раз он задан в AddDialog, то повторно его писать не требуется в отличии от /PARENT.
Loopback писал(а):На самом деле, должно работать и с пустым именем класса:
Всюду добавил "" 0 после /TEXT — по нулям.
Loopback писал(а):Ну как минимум, неправильно используешь функцию AddCondition
Так в командах и твои примеры с TASSOCIATEDLG есть — не работает.
Loopback писал(а):Это надо документировать.
Это точно. Без подсказки бы не разобрался.
Loopback писал(а):закрытие окна не означает полной выгрузки процесса
Верно. Там нужен ProcessWaitClose. Вот упрощённый вариант.

Добавлено: Вт мар 05, 2019 19:49
Loopback
Flasher писал(а):Посчитал, раз он задан в AddDialog, то повторно его писать не требуется в отличии от /PARENT.
В принципе правильно посчитал, но были недокументированные нюансы.
Flasher писал(а):Всюду добавил "" 0 после /TEXT — по нулям.
Да, тут была ошибка, причем в самом Autorun, из плагина не работали пустые параметры "" (до этого, похоже, такие нигде в плагинах не встречались). Так что выложу и исправленную версию Autorun.
Flasher писал(а):Так в командах и твои примеры с TASSOCIATEDLG есть — не работает.
У меня работали, но тут в перечислении диалогов была одна глупая ошибка, думаю после исправления все будет ок.
Flasher писал(а): Вот упрощённый вариант.
Примерно то, что и я бы написал. Хорошо, тогда я этим не занимаюсь.

Добавлено спустя 1 час 26 минут:

Сегодняшняя версия.

+ добавлено центрирование диалогов
- исправил ошибку в коде различения диалогов
- определение нажатия на Опции путем обнаружения появления 3 экземпляра комбобокса, возможно, это улучшит стабильность

Также обнаружилась ошибка в самом Autorun, поэтому для нормальной работы MoveButton желательно обновить и его.

- исправлена работа с пустыми параметрами из субплагинов
+ добавлены многострочные комментарии #[ .. #].
+ добавлена функция таймера для проверки производительности

Многострочных комментариев мне давно не хватало, особенно остро это встало когда появилась куча AddDialog и т.д. Что-то я обязательно добавлю, но вот с форматом не уверен. Сейчас сделал #[ .. #], но как-то вводится не очень интуитивно. Думаю еще про вариант #{ #}, мне кажется немного лучше. Хотя можно и как в Autoit #cs #ce.

Добавлено: Вт мар 05, 2019 20:14
Flasher
Loopback
Да, теперь всё заработало. Комбобокс теперь тоже не глючит. Проверил на нескольких диалогах с добавкой центрирования. Всё просто потрясно! :)
Кнопки в "Добавить выделение/Фильтр..." перемещу — и всё супер будет.
И всё-таки один диалог таки сбрасывается после использования Win+Left/Right:

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

# Сохранение размеров "Выбор команды":
AddDialog /CENTER:3 /SAVE:12 "TCmdSelForm"
И не очень понял:
Если окно открывается из главного окна Total Commander, то при использовании флага 4 диалог будет отцентрирован относительно «Рабочего стола».
Разве это логично? ТС же остаётся родителем. Просто интересуюсь, т.к. меня более чем устраивает центровка относительно главного окна по /CENTER:3.

Добавлено: Вт мар 05, 2019 20:41
Loopback
Flasher писал(а):Разве это логично?
В данной ситуации вполне. Без флага 4 центрирование выполняется всегда относительно относительно главного окна ТС. Если включить флаг, то родительским для окна диалога, запущенного из опций, будет окно опций, а родительским к главному окну - десктоп.

Добавлено: Вт мар 05, 2019 21:05
Flasher
Loopback писал(а):а родительским к главному окну - десктоп.
Почему к главному-то, если должно быть к диалогу? Изображение

Что по глюку с "Выбор команды"?

Добавлено: Вт мар 05, 2019 21:42
Loopback
Flasher писал(а):Почему к главному-то, если должно быть к диалогу?
Ну ок, соглашусь, если смотреть чисто по структуре может не очень логично. Просто иначе использование 4 для диалогов из главного окна вообще ничего не дает. А так какая-то смысловая нагрузка. Могу и убрать.

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

Desktop
  - Total Commander
    - Dialog1
    - Options
      - Dialog2
Dialog1 без ключа 4 центрируется относительно Total Commander
Dialog1 с ключом 4 центрируется относительно Desktop
Dialog2 без ключа 4 центрируется относительно Total Commander
Dialog2 с ключом 4 центрируется относительно Options
Flasher писал(а):Что по глюку с "Выбор команды"?
Пропустил, слишком много сегодня писанины. Скорее всего потому, что его позиция сохраняется самим тоталом.

А Win+Left/Right у меня ничего не делают вообще.

Добавлено: Ср мар 06, 2019 00:55
rk2019
Loopback

Вроде говорили что все исправимо, а у меня получается криво.
Изображение

Posted after 15 minutes:

Я понимаю что 2 человека в этой ветке понимают, но может и остальным расскажите в какой файл эти строки ложить надо??

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

AddDialog /W:-70 "DIALOG_COPYMOVE"
# Первый выпадающий список:
AddControl /W:-64 "TMyComboBox" 2
# Второй выпадающий список:
AddControl /W:-72 "TMyComboBox" 1
# Кнопка-флажок "С проверкой MD5":
AddControl /X:-67 "TMyCheckBox" 1 
Перечитал хелп, но нет основного - куда блин это вписать?

Добавлено: Ср мар 06, 2019 02:57
Flasher
Loopback писал(а):Просто иначе использование 4 для диалогов из главного окна вообще ничего не дает.
Как же не даёт? Оно будет сохранять, что важно, привязку к окнам ТС:

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

Dialog1/2 без ключа 4 центрируется относительно Total Commander

Dialog1 с ключом 4 центрируется относительно Total Commander
Dialog2 с ключом 4 центрируется относительно Options
Loopback писал(а):Скорее всего потому, что его позиция сохраняется самим тоталом.
И это не обойти (ожиданием отрисовки, например)? Дело в том, что ТС сам не запоминает размер и позицию с флагом развёрнутости.
Loopback писал(а):А Win+Left/Right у меня ничего не делают вообще.
А должны, если у тебя Win7+, и ты их в реестре не заблокировал параметром:

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

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\DisabledHotkeys
По умолчанию с данными хоткеями активное окно заполняет левую/правую половину экрана. В системной справке это именуется как "Развертывание окна до левого/правого края экрана". С "Выбор команды" это иногда удобно, так как при достаточности ширины ты можешь наблюдать за интересующими объектами в видимой панели.

rk2019 писал(а):Вроде говорили что все исправимо, а у меня получается криво.
Разве мой пример с учётом всех последних правок плагина даёт такой результат? Очевидно, что нет.
rk2019 писал(а):Я понимаю что 2 человека в этой ветке понимают, но может и остальным расскажите в какой файл эти строки ложить надо??
Ну, как минимум, 3, и то, потому, что обсуждают. Остальные смыслящие тихо, как это чаще бывает, ждут развязки.
В справке "help_ru.chm" на странице "Установка" (не говоря уж про десятки страниц топика) о каком файле идёт речь?
Вы как пришли к результату на скриншоте без правки этого файла? А других файлов настройки у плагина Autorun нет.
И надо понимать, что ценность имеют не только приведённые строки.