﻿// выбор режима работы (жёсткие или символьные ссылки)

// SetHardSymLinkMode(int mode) для установки режима выбора файлов и операций: 0 - режим жёстких ссылок, 1 - режим символических ссылок.
// Использование:
SetHardSymLinkMode(1) установка режима символических ссылок 
SetHardSymLinkMode(0) установка режима жёстких ссылок (режим по умолчанию)

// Функции выбора файлов
// SelectAll(bool setSelection) отметить / снять отметки со всех файлов.
// Использование: 
SelectAll(true) // отметить все файлы
SelectAll(false) // снять отметки со всех файлов

// SelectFirstFiles(bool setSelection) отметить / снять отметки с первых файлов в каждой группе.
// Использование: 
SelectFirstFiles(true) // отметить первый файл в каждой группе
SelectFirstFiles(false) // снять отметки с первого файла в каждой группе

// SelectLastFiles(bool setSelection) отметить / снять отметки с последних файлов в каждой группе.
// Использование: 
SelectFirstFiles(true) // отметить последний файл в каждой группе
SelectFirstFiles(false) // снять отметки с последнего файла в каждой группе

// SelectFile(bool setSelection, string filePathOrWildCard) отметить / снять отметки с заданных файлов по пути, имени или маске.
// Использование:
SelectFile(true, 'c:\test\1.txt')  // отметить файл 'c:\\test\1.txt' (если он есть в списке найденных дубликатов)
SelectFile(true, 'picture.jpg')  // отметить файл(ы) с именем 'picture.jpg' (если они есть в списке найденных дубликатов)
SelectFile(false, 'picture*.jpg')  // снять отметки с файла(ов) с маской 'picture*.jpg' (если они есть в списке найденных дубликатов)

// SelectFilesInFolder(bool setSelection, string folder) отметить / снять отметки с файлов в заданной папке.
// Использование:
SelectFilesInFolder(true, 'c:\test\') // отметить все найденные файлы в папке 'c:\test\'
SelectFilesInFolder(false, 'c:\test\') // снять отметки со всех найденных файлов в папке 'c:\test\'

// SelectFilesInFolderAndSubfolders(bool setSelection, string folder) отметить / снять отметки с файлов в заданной папке и подпапках.
// Использование:
SelectFilesInFolderAndSubfolders(true, 'c:\test\') // отметить все найденные файлы в папке 'c:\test\' и подпапках
SelectFilesInFolderAndSubfolders(false, 'c:\test\') // снять отметки со всех найденных файлов в папке 'c:\test\' и подпапках

// SelectFilesByExt(bool setSelection, string extension) отметить / снять отметки с файлов с заданным расширением.
// Использование:
SelectFilesByExt(true, '.jpg') // отметить все .jpg-файлы
SelectFilesByExt(false, '.jpg') // снять отметки с .jpg-файлов

// SelectAllLinksIfAnyFileIsUnchecked(bool setSelection) отметить / снять отметки со всех жёстких или символических ссылок, если хотя бы одна из ссылок с отметкой или без отметки, для того чтобы все ссылки были в одном отмеченном состоянии.
// Использование:
SelectAllLinksIfAnyFileIsUnchecked(true) // отметить все остальные жёсткие или символические ссылки, если хотя бы одна из ссылок отмечена
SelectAllLinksIfAnyFileIsUnchecked(false) // снять отметки со всех жёстких или символических ссылок, если хотя бы одна из ссылок не отмечена

//SelectAllReadonly(bool setSelection) отметить / снять отметки с файлов с установленным атрибутом "только чтение" или "системный".
// Использование:
SelectAllReadonly(true) // отметить файлы с установленным атрибутом "только чтение" или "системный"
SelectAllReadonly(false) // снять отметки с файлов с установленным атрибутом "только чтение" или "системный"


// SelectTheNewestFileInEachGroup(bool setSelection) отметить / снять отметки с одного из самых новых файлов по дате изменения в каждой группе.
// Использование:
SelectTheNewestFileInEachGroup(true) // отметить один из самых новых файлов по дате изменения в каждой группе
SelectTheNewestFileInEachGroup(false) // снять отметки с одного из самых новых файлов по дате изменения в каждой группе

// UnselectMinimallyFragmentedFiles() снять отметки с одного из минимально фрагментированных файлов в каждой группе.
// Использование:
UnselectMinimallyFragmentedFiles()

// UnselectFilesProtectedFromModification() // снять отметки с файлов, защищённых от изменения или открытых другими приложениями.
// Использование:
UnselectFilesProtectedFromModification()

// InvertSelection() инвертировать выделение.
// Использование: 
InvertSelection()

// выбор файлов в качестве точек присоединения жёстких или символических ссылок.

// SelectFirstFilesAsLinkTargets() для выбора первых файлов групп в качестве точек присоединения жёстких или символических ссылок.
// Использование:
SelectFirstFilesAsLinkTargets()

// SelectLastFilesAsLinkTargets() для выбора последних файлов групп в качестве точек присоединения жёстких или символических ссылок.
// Использование:
SelectLastFilesAsLinkTargets()

// SelectFilesInFolderAsLinkTargets(string path) для выбора одного из файлов в заданной папке в качестве точки присоединения жёстких или символических ссылок (один файл в группе).
// Использование:
SelectFilesInFolderAsLinkTargets('c:\test\') // выбор одного из файлов в папке 'c:\test\' в качестве точки присоединения жёстких или символических ссылок (один файл в группе).

// SelectFilesInFolderOrSubfolderAsLinkTargets(string path) для выбора одного из файлов в заданной папке или одной из подпапок в качестве точки присоединения жёстких или символических ссылок (один файл в группе).
// Использование:
SelectFilesInFolderOrSubfolderAsLinkTargets('c:\test\') // выбор одного из файлов в папке 'c:\test\' или одной из подпапок в качестве точки присоединения жёстких или символических ссылок (один файл в группе).

// SelectMinimallyFragmentedFilesAsLinkTargets() для выбора одного из минимально фрагментированных файлов в каждой группе в качестве точки присоединения жёстких или символических ссылок.
// Использование:
SelectMinimallyFragmentedFilesAsLinkTargets()

// SelectTheNewestFileInEachGroupAsLinkTargets() для выбора одного из самых новых файлов в каждой группе в качестве точки присоединения жёстких или символических ссылок.
// Использование:
SelectTheNewestFileInEachGroupAsLinkTargets()

// SelectReadonlyAndSystemFilesAsLinkTargets() для выбора одного из файлов с установленным атрибутом "только чтение" или "системный" в качестве точки присоединения для жёстких или символических ссылок.
// Использование:
SelectReadonlyAndSystemFilesAsLinkTargets()

// SelectFilesProtectedFromModificationAsLinkTargets() для выбора одного из файлов, защищённых от изменения или открытых другими приложениями, в качестве точки присоединения для жёстких или символических ссылок.
// Использование:
SelectFilesProtectedFromModificationAsLinkTargets()


// Операции 

// ExcludeSelectedFilesFromTheList() исключить выбранные файлы из списка.
// Использование:
ExcludeSelectedFilesFromTheList() 

// RunReplaceFileWithLinkAction() запуск операции замены файлов жёсткими или символическими (в зависимости от выбранного режима) ссылками к файлам, выбранным в качестве точки присоединения.
// Использование:
RunReplaceFileWithLinkAction()

// RunDetachFileLinksAction() запуск операции замены жёстких и символических ссылок файлами.
// Использование:
RunDetachFileLinksAction()

// RunDeleteFilesAction(bool deleteToRecycle, bool deleteEmptyFolders) запуск операции удаления выбранных файлов, опционально удаление в корзину (1й параметр True), опционально удаление пустых папок после удаления файлов (2й параметр True).
// Использование:
RunDeleteFilesAction(false, false) // удалить выбранные файлы безвозвратно.
RunDeleteFilesAction(false, true) // удалить выбранные файлы безвозвратно и удалить пустые папки, в которых они находились.
RunDeleteFilesAction(true, false) // удалить выбранные файлы в корзину.
RunDeleteFilesAction(true, true) // удалить выбранные файлы в корзину вместе с папками, в которых они находились.

// RunCompressFilesAction(bool skipIncompressibleFiles) запуск операции сжатия файлов путём установки NTFS-атрибута "Сжимать содержимое для экономии места на диске" (опционально с предварительной оценкой сжимаемости файлов)
// Использование:
RunCompressFilesAction(false) для запуска операции сжатия файлов NTFS без оценки сжимаемости файлов.
RunCompressFilesAction(true) для запуска операции сжатия файлов NTFS с оценкой сжимаемости. Файл сжимается, если его оцениваемый размер после сжатия < 90% от оригинального.