Как Фар подсчитывает размер директорий на плагиновых панелях
Как Фар подсчитывает размер директорий на плагиновых панелях
Ребят, если кто будет проходить мимо, нужен совет: не могу раскусить, каким образом фар показывает размер каталога под курсором на панели при нажатии F3? Уже не первый месяц пописываю плагин на плюсах, вроде потиху на все вопросы свои нашел ответы, этот пока понять не могу) У меня там находятся виртуальные каталоги (FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_VIRTUAL), может дело в том, что они ненастоящие и не имеют привязки к реальным файловым сущностям?
-
- Posts: 6970
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 42 times
- Been thanked: 562 times
Far & spotify: валидация идеи
Если это каталог файловой системы, производится сканирование его и всех подкаталогов и соответственно подсчёт суммарного размера.igor wrote: Mon 24 Feb, 2025 21:43 каким образом фар показывает размер каталога под курсором на панели при нажатии F3
Если это каталог плагина, алгоритм примерно тот же, но данные запрашиваются у плагина вызовами SetDirectoryW и GetFindDataW.
Как Фар подсчитывает размер директорий на плагиновых панелях
Теперь я понял, что значили эти слова в доках: "Плагин должен быть готов обрабатывать флаг OPM_FIND") Не погружаясь в вопрос, думал, что флаг целиком и полностью относится к окну поиска.
Для тех, кто будет искать ответ после меня: после нажатия F3 на панели ФАР вызывает функцию SetDirectoryW с флагами OPM_FIND & OPM_SILENT. И если функция вернет TRUE, то следом вызывается GetFindDataW с теми же флагами. Дальше ФАР вызовет опять SetDirectoryW для каждого вложенного каталога, пока они не закончатся, по пути собирая значения и суммируя из PluginPanelItem.FileSize из файловых энтри. Т.е. в доках имеется ввиду, что плагин должен уметь нормально обрабатывать именно это поведение; плюс, по всей видимости, аналогичное рекурсивное поведение при вызове окна поиска Alt+F7, туда я еще не добрался.
Разбираюсь с вопросом со вчера, могу еще не все нюансы знать, поправьте, если что.
Для тех, кто будет искать ответ после меня: после нажатия F3 на панели ФАР вызывает функцию SetDirectoryW с флагами OPM_FIND & OPM_SILENT. И если функция вернет TRUE, то следом вызывается GetFindDataW с теми же флагами. Дальше ФАР вызовет опять SetDirectoryW для каждого вложенного каталога, пока они не закончатся, по пути собирая значения и суммируя из PluginPanelItem.FileSize из файловых энтри. Т.е. в доках имеется ввиду, что плагин должен уметь нормально обрабатывать именно это поведение; плюс, по всей видимости, аналогичное рекурсивное поведение при вызове окна поиска Alt+F7, туда я еще не добрался.
Разбираюсь с вопросом со вчера, могу еще не все нюансы знать, поправьте, если что.
Last edited by igor on Tue 25 Feb, 2025 13:16, edited 1 time in total.