пятница, 13 октября 2017 г.

libclipboard и буфер обмена


Недавно у меня возникла задача: встроить в свой плюсовый движок работу со стандартным буфером обмена системы (в моем случае - Windows и Linux (X11)) для получения и копирования туда текста.  Задача, скажем честно, хотя и тривиальная на первый взгляд, но, вообще, довольно нетривиальная в реализации из-за отвратительной реализации работы с буфером обмена в X11.
    Делать это вручную, само собой, не хотелось. И тут я набрёл на Github на неплохую и, на мой взгляд, недооцененную, библиотеку для реализации работы с этим на C++: libclipboard .  Надо сказать, что библиотека сишная и поэтому в процессе работы пришлось её немного пропатчить, чтобы это компилировалось. Тем не менее у неё есть преимущества:
  • Сборка. Хотя в репозитории и заявлено, что для сборки нужен CMake, но после легкого допила либу можно собрать и без него.
  • API. Оно предельно тупое -  clipboard_new(NULL) создает обработчик с настройками по умолчанию, clipboard_free - освобождает обработчик, clipboard_set_text копирует текст в буфер обмена, clipboard_text - возвращает содержимое буфера обмена. Завернуть такое в класс - пара пустяков.
    Из недостатков стоит отметить разве что невозможность работы с чем-то кроме текста (картинку в буфер не положишь), ну и то, что буфер в иксах живет пока работает программа (это косяк, скорее, иксов, а не библиотеки).

У себя тестировал на Windows 10 и Xubuntu 17.04 - библиотека на них работает отлично.

Комментариев нет:

Отправить комментарий