Собираем
информацию
по крупицам


Новости

MyTetra научилась копировать картинки из интернета
21-01-2016
11:04:21

В современных фреймверках, и в Qt в частности, работа с буфером обмена реализована на зачаточном уровне. Если в буфере обмена находится текст - то текст будет передан. Если в буфере обмена находится картинка - то картинка тоже будет передана. А что произойдет, если в буфере будет находиться и текст и изображение? Ничего хорошего! Не существует кроссплатформенных методов одномоментного получения из буфера обмена различных типов объектов. Поэтому, если выделить текст с картинками в браузере Firefox, и вставить текст в Microsoft Word, то Microsoft Word не сможет получить картинки из буфера обмена. Он пропарсит текст, найдет интернет-ссылки, и молча примется их закачивать. Создается впечатление, что Microsoft Word умеет копировать текст с картинками через буфер обмена, заполненный другой программой, но на деле это не так.

 

Моя программа для накопления информации MyTetra тоже не могла похвастаться копированием текста, содержащего картинки. Можно было скопировать и вставить отдельную картинку. Можно скопировать и вставить текст с картинками в пределах самой программы MyTetra. Но вставить текст с картинками из браузера небыло никакой возможности.

 

Недавно у меня состоялся такой разговор с пользователем PIM-менеджера CherryTree:

 

Пользователь:

Не могу сказать, когда это было реализовано. Но год назад, когда я начал пользоваться cheerytree, эта возможность уже была, что и определило мой выбор.

 

Я:

Посмотрел. Я-то думал, что, действительно, решена задача вставки из буфера текста + картинок. А на самом деле задача не решена. Они просто парсят вставляемый текст, и выкачивают картинки.

Соответственно, такое решение не работает:

- Если используется прокси. Картинки не копируются, так как прямого соединения с интернет нет;
- Если пропал интернет. То есть, в буфере картинки есть, но CherryTree не умеет доставать из буфера. Поэтому картинки будут потеряны;
- Если скопировать текст с картинками не из браузера, а из Libre/Open Office, то картинки тоже не будут вставлены. А все из-за того, что из буфера CherryTree доставать не умеет.

В общем, сделана полумера, от реализации которой я в свое время отказался, так как посчитал костылем. Но если народу нравится, и альтернатив нет, то наверно реализую вот так так же как у Cherry.

 

Я предпринял последнюю попытку разобраться с буфером обмена. Я думал, что может быть все-таки существует метод вычленения и текста и картинок из одного буфера. Я проштудировал все методы, которые дает Qt для работы с буфером обмена. Но оказалось, что такого функционала просто не предусмотрено. Я проделывал разные манипуляции с буфером обмена между разными программами и понял, что даже Microsoft не умеет работать с комбинированным буфером.

 

В соответствии с вышесказанным, мне пришлось отказаться от честной работы с буфером обмена, на которую я так расчитывал. И для решения вопроса о копировании текста с картинками из браузера, я сделал такой же механизм, как и в других программах. А именно: вычленение тегов картинок во вставляемом тексте, и подкачка их из сети. Вчера реализация этого механизма была завершена в ветке editorModification в коммите 71e6d9d.

 

Теперь, если выделить в браузере текст с картинками, то они будут подгружены в текст. Происходит это с помощью встроенного довнлоадера:

 

 

Вот, например, как выглядит запись, вставленная с Хабрахабра:

 

 

Довнлоадер умеет скачивать по HTTP, HTTPS, понимает редиректы (которые, например, используются на Хабрасторадже для хранения картинок).

 

Очередной шаг в развитии MyTetra сделан, и теперь я приступаю к исправлению косметических недочетов. Некоторые решаются просто, а некоторые могут потребовать больших усилий. Сейчас мне начал помогать фиксить баги один добрый человек из Питера, и я надеюсь, что работа пойдет быстрее, и релиз выйдет в ближайшее время.

 

Всем удачи.

 



Интересное на сайте


Демо, сделанное в генераторе » Xintrea Home Page Demo

Размер: 250 Кбайт Требования: Windows 95/98/XP Год: 2005   Демка для моего старого сайта xi.net.ru. Демка сделана просто щелчками мышки, с ...


Скейтбординг » Переносной трамлин

Многие скейтбордисты знают - там, где есть хороший асфальт, нет высоких уступов, с которых можно былоб прыгнуть. А там где есть подходящие уступы и ст...


Игры под Windows » Shareholder (Акционер)

Игра, написанная вместе с Сергеем Шпаковым. Разработка застыла на этапе глубокой беты. Шпаков сделал интерфейс и хотсид, я писал искуственный интеллек...

RSS подписка

Подпишитесь на новости сайта по RSS


О, смотри-ка какое хорошее место. Дайте два!

Внимание!

На этом сайте разрабатывается программа MyTetra и её родственные проекты.

Доступны к просмотру следующие базы знаний:

База Xintrea (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)

База Rarrugas (1, 2)

База Balas

База YellowRaven

База Yurons

База Lesnik757

База Shandor

База Sirrichar

 

Подробности на странице MyTetra Share.

 WebHamster.Ru
 Домик любопытного хомячка
Яндекс индекс цитирования
Почтовый ящик