Страница 49 из 50

Добавлено: Сб окт 26, 2024 00:53
790
А как сортировать файлы по имени в плагине? У меня только по размеру по убыванию сортирует. Настроек сортировки не нашёл.

Добавлено: Сб окт 26, 2024 11:01
Loopback
790
Если в части WCX - то сортировкой занимается тотал.

В WLX никакой сортировки нет, файлы выводятся в том порядке, в каком они расположены в файле торрента.

Добавлено: Сб окт 26, 2024 17:13
790
Loopback
Я про WLX. Просматриваю torrent с сериалом, а там, видимо, автор понаставил всё по размеру, а хочется-то по названию от первой до последней, чтобы понять все ли серии присутствуют. Поэтому и хотелось бы иметь возможность своей сортировки или сортировки по умолчанию, взятой из ТС.

Добавлено: Сб окт 26, 2024 19:43
Loopback
790
Понятно, но вероятность добавления сортировки очень мала.

Добавлено: Вт ноя 12, 2024 19:47
Loopback
yozhik писал(а):А можно ли ещё отступ (margin) слева чуть увеличить (или сделать настраиваемым)?
Кажется я дезинформировал по поводу отступа, сам уже не помню, что делал :oops: Он же давно есть, настройкой только в ini, ключ MarginLeft. Правда, в данный момент отступ игнорирует заданный цвет, но это поправлю.

Добавлено: Вт ноя 12, 2024 23:42
yozhik
Loopback
Ага, спасибо. Точно, работает. Если цвет поправите, будет вообще замечательно, а я пока MarginLeft в 0 выставил, чтобы в тёмном режиме белую полоску не добавлял.
А самое ужасное — то, что в справке то про MarginLeft написано, а я, прежде чем волну подымать, не перечитал. Так что мой стыд, моя краска :oops: А не Ваши.

Добавлено: Ср июл 09, 2025 19:16
Loopback
Новая версия 2.2.0 на wincmd.ru.
- WLX: не работало автоопределение языка, если секция была переадресована
- WLX: исправлено наложение текста на значки на HiDPI
- WLX: исправлено отображение списков в настройках на HiDPI
- WLX: изменения в группах расширений не активировали кнопку "Применить"
+ WLX: настройка шрифта для текста статусной строки
+ WLX: режим с отдельной колонкой для расширений
+ WLX: опции в ini для настройки ширины панелей статусной строки и её высоты
+ WLX: запоминание последней страницы настроек в пределах сессии
+ WLX: новая страница "Макет" в настройках, опции перераспределены
+ WLX: режим вписывания содержимого в ширину окна
- WLX: не применялся фоновый цвет левого отступа
+ WLX: корректное склонение числа файлов для русской локализации
+ WLX: отображение в статусной строке размера и количества выбранных файлов
- WLX: исправлено медленное сворачивание больших списков
+ WLX: диалог выбора цвета раскрывается полностью, с пользовательскими цветами
Самое большое изменение за последние несколько лет. Реализация давно (и довольно опрометчиво) обещанного функционала, а не то чтобы мне этого хотелось... Что-то серьёзно менять в древнем коде тяжело, на эту пару фич было потрачено какое-то неприличное количество времени. Так или иначе, гештальт закрыт, подобных крупных изменений больше ждать не стоит :) Только исправления или что-то по мелочам.

Добавлено: Вт июл 22, 2025 00:24
cluster
А цвет статусной строки не настраивается?
Шрифт и цвет текста, ширину и высоту колонок в статусбаре настроить можно, а про цвет забыли?

Добавлено: Вт июл 22, 2025 11:05
Loopback
cluster
Стандартный статусбар не позволяет нормально закрашивать фон всего компонента, особенно с включенными темами. Доступна только закраска фона панелей. Для обхода проблемы придется делать полностью кастомный компонент, но заниматься этим желания нет.

Добавлено: Вт июл 22, 2025 14:46
yozhik
cluster
Если бы только статусбар, а то ведь ещё и скроллбары придётся подтягивать...

Loopback
А вот эта библиотека могла бы чем то пригодиться?
https://github.com/ozone10/darkmodelib

Заранее прошу прощения если я совсем мимо угодил (в молоко :) ), ибо я — лирик, т.е. совсем не физик. И да, «гештальт закрыт» — согласны, поддерживаем. Но вдруг эта библиотека позволит решить всё быстро и хорошо (я, правда, в такое не очень верю, но пока ещё иногда надеюсь :) ). А нет, так нет, и без того добро.

Я про эту библиотеку узнал после того, как её прикрутил к своему детищу Кшиштоф Ковальчук, автор SumatraPDF. Он до этого сам контролы красил, и SumatraPDF в тёмном обличье была как страшный сон. А как прикрутил, так заблестела, как в автосалоне. Ему автор этой библиотеки помогал, вот история. Ну, и если в этом плагине она Вам не пригодится, то может где в другом.

Добавлено: Вт июл 22, 2025 21:08
Loopback
yozhik
Видел эту библиотеку. Нет, напрямую не использовать (плагин на дельфи). А выковыривать оттуда решения и применять их - это опять же написание чего-то своего. Так что простых решений нет, а сложные - это время, которое тратить на рюшечки, если честно, жалко :)

Добавлено: Пн сен 29, 2025 19:59
Loopback
В общем идея отдельного интерфейса для получения данных торрента, озвученная в соседней ветке, неожиданно зацепила, даже отвлекся немного от чистки кода Autorun. Не всем это интересно, поэтому ссылка и технические подробности под катом. Никаких других изменений относительно последнего релиза нет.
Показать

Тестовая версия от 30.09.2025

Интерфейс очень похож на интерфейс MediaInfo, что позволяет не использовать буфер и не задумываться о размере получаемых данных. Позволяет получить любую информацию о торренте, которую можно получить через wdx + файлы + все трекеры/вебсиды и т. д. В наборе 4 функции, соглашение по вызову stdcall.

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

HANDLE TorrentOpen(LPCWSTR FileName)
Открывает, парсит файл торрента и подготавливает данные. В случае успеха возвращает хэндл объекта, в случае критической ошибки - 0. Если ошибка не совсем критическая, то позднее можно получить текст ошибки с TorrentGet.

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

LPWSTR TorrentGet(HANDLE Handle, LPCWSTR InfoType, int Index)
Параметр InfoType может быть одной из строк:

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

Name
TotalSize
FileCount
BlockSize
BlockCount
Created
Creator
Hash
Comment
Encoding
Webseed
Multifile
PrivateTorrent
Publisher
PublisherURL
Tracker
File
FileSize
CustomField
Некоторые типы информации могут иметь несколько значений, для их получения используется параметр Index. Отсчёт начинается с 0.

В случае успеха функция вернёт полученное значение, в случае ошибки (неправильный handle или имя поля) - NULL.

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

UINT TorrentCountGet(HANDLE Handle, LPCWSTR InfoType)
Параметр InfoType аналогичен TorrentGet. Функция возвращает число значений данного поля. Для фиксированных полей результат всегда 1. Если поле с таким именем не существует - 0.

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

void TorrentClose(HANDLE Handle)
Освобождает память объекта.


Пример получения данных на Autorun, вывод в DebugView:

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

Func TorrentInfo(sFile)
    Static aFixed = List('Name', 'TotalSize', 'FileCount', 'BlockSize', 'BlockCount', _
                         'Created', 'Creator', 'Hash', 'Comment', 'Encoding', _
                         'Multifile', 'PrivateTorrent', 'Publisher', 'PublisherURL')
    Static aMulti = List('Tracker', 'Webseed', 'Error', 'CustomField')

    Static sLibName = "TCTorrent.wlx" & (auX64 ? "64" : "")

    # Необходимо поменять путь на свой!
    Static sLibPath = %COMMANDER_PATH & "\Plugins\wlx\TCTorrent\" & sLibName

    Local hDll = DllCall("LoadLibrary", "wstr", sLibPath, "handle")
    If hDll = 0 Then Return

    Local hHandle = DllCall(sLibName & "\TorrentOpen", "wstr", sFile, "handle")
    If hHandle = 0 Then 
        DllCall("FreeLibrary", "handle", hDll)
        Return
    EndIf

    Local nCount, sRes

    For i = 0 to aFixed.Count - 1
        sRes = DllCall(sLibName & "\TorrentGet", "handle", hHandle, "wstr", aFixed[i], "int", 0, "wstr")
        OutputDebugString(aFixed[i] & ": " & sRes)
    Next

    OutputDebugString(auCRLF & 'Files:')
    nCount = DllCall(sLibName & "\TorrentCountGet", "handle", hHandle, "wstr", "File", "uint")
    For j = 0 To nCount - 1
        sRes = StrFormat("[%12s] %s", _
                 DllCall(sLibName & "\TorrentGet", "handle", hHandle, "wstr", "FileSize", "int", j, "wstr"), _
                 DllCall(sLibName & "\TorrentGet", "handle", hHandle, "wstr", "File", "int", j, "wstr"))
        OutputDebugString(sRes)
    Next

    For i = 0 to aMulti.Count - 1
        OutputDebugString(auCRLF & aMulti[i] & 's:')
        nCount = DllCall(sLibName & "\TorrentCountGet", "handle", hHandle, "wstr", aMulti[i], "uint")
        For j = 0 To nCount - 1
            sRes = DllCall(sLibName & "\TorrentGet", "handle", hHandle, "wstr", aMulti[i], "int", j, "wstr")
            OutputDebugString(sRes)
        Next
    Next

    DllCall(sLibName & "\TorrentClose", "handle", hHandle)
    DllCall("FreeLibrary", "handle", hDll)
EndFunc

Добавлено: Вт сен 30, 2025 19:15
Orion9
Loopback
Спасибо. Функционал топовый, наверняка кому-то пригодится для собственных нужд. И большое спасибо, что сразу сделали пример использования на Autorun. Просто супер ) Но у есть меня пара вопросов. Почему в этом вызове в индексе используется "i":

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

sRes = DllCall(sLibName & "\TorrentGet", "handle", hHandle, "wstr", aFixed[i], "int", i, "wstr")
И как извлечь сведения о размере файлов внутри торрента?

Добавлено: Вт сен 30, 2025 21:05
Loopback
Orion9 писал(а): Почему в этом вызове в индексе используется "i":
Точно, это ошибка копипасты. Для фиксированных полей параметр игнорируется, можно использовать 0.
Orion9 писал(а):И как извлечь сведения о размере файлов внутри торрента?
А вот про размер я совершенно забыл :) Добавил, обновил файл и пример.

Добавлено: Вт сен 30, 2025 23:27
Orion9
Loopback
Спасибо. Теперь лучше )