Сегодня залил на GitHub исходники очень нужной, полезной и, не побоюсь этого слова, эксклюзивной программы, написанной за один день.
ClipFixer - пример Qt-проекта, в котором демонстрируется работа с буфером обмена
Данная программа написана в рамках говноавтоматизации сметно-договорного отдела промышленной организации, в которой я сейчас работаю.
Задача:
Оператору передаются Excel-файлы смет, каждый экземпляр которых создан со всей сопутствующей фантазией. Единой формы нет, единых принципов составления нет. Единственное, что объединяет эти файлы - шапка сметы, которая содержит почти единообразное кол-во столбцов и почти похожие наименования столбцов. Проблема в том, что один и тот же столбец сметы в разных файлах может занимать разное количество ячеек по ширине (от 1 до 80). И одна запись в смете по высоте может занимать от 1 до 10 ячеек. Кто как захотел, тот так и сделал.
Учитывая, что в организации 8 отделов и 2 сторонних организации, а в каждом отделе (организации) пара человек занимается сметами, и каждый человек составляет сметы примерно в двух-трех различающихся форматах, имеем около 50 различных форматов смет. Всего смет около 3000.
Сметно-договорной отдел должен ежемесячно формировать из этого зоопарка итоговую смету, в один лист которой попадают работы из других файлов смет. А так как все сметы разные, то после копи-паста приходится много править вручную.
Внедрять автоматизированную систему для работы со сметами никто не собирается, требовать от всех единого формата никто не решается, поэтому задача была сформулированна так: сделайте что-нибудь, чтобы мы могли быстрее обрабатывать сметы.
Решение:
Ну что же, вот вам программа с волшебной кнопкой "Сделать хорошо".
Окно программы имеет два элемента управления: выбор формата сметы и волшебная кнопка. В формате сметы указывается, сколько ячеек по ширине занимает каждый столбец. Пользователь копирует в буфер обмена строку (строки) из исходной сметы, нажимает волшебную кнопку, и в буфере обмена размещаются преобразованные ячейки, объединенные согласно формату.
Пользователь имеет возможность самостоятельно создавать форматы смет. Так же в программе предусмотрен отладочный режим, который позволяет просматривать исходное и преобразованное содержимое буфера обмена.
Код:
Код сделан в лучших традициях говнокодинга. Работает, и ладно.
Скриншоты:
Стандартный вид:
Расширенный вид:
Желаю всем программистам никогда не писать подобные программы.