Page 2 of 3

Grabber API

Posted: Thu 22 Jan, 2015 09:29
by Skirda

Latest post of the previous page:

Не, всё же нужно изменение в АПИ.
Плагин может воспользоваться FSF.CopyToClipboard, но этот функционал работает с реальным клипбордом (с очисткой предыдущего содержимого)
...а макросы, кроме всего прочего (Put/Add), могут юзать и внутренний - Clip(5,2)).

Может добавить пару новых функций в АПИ - FSF.CopyToClipboardEx(struct XXX*) и FSF.PasteFromClipboardEx(struct XXX*) ?

John Doe, а как тебе видится "Наверно требуется именно АПИ для получения содержимое фаровского буфера по заданным координатам"?

Grabber API

Posted: Thu 22 Jan, 2015 10:59
by John Doe
Skirda wrote: ...а макросы, кроме всего прочего (Put/Add), могут юзать и внутренний - Clip(5,2)).
Не вижу для чего может понадобиться в граббере внутренний.
Skirda wrote: а как тебе видится "Наверно требуется именно АПИ для получения содержимое фаровского буфера по заданным координатам"?
Плагин передаёт SMALL_RECT, COORD, FAR_CHAR_INFO*, и в ответ фар заполняет буфер.

Только вопрос:
//координаты выделенного блока относительно начала экранного буфера
Почему не относительно фара?

Grabber API

Posted: Thu 22 Jan, 2015 13:30
by HaRT
John Doe wrote: для чего может понадобиться в граббере внутренний
Чтобы макрос мог проанализировать, что показано в окне, не похерив содержимое системного буфера. :-)

Grabber API

Posted: Thu 22 Jan, 2015 14:00
by John Doe
Если необходимо анализировать то, что можно получить только через CtrlIns, то да.
Но это ведь не так.

Grabber API

Posted: Fri 23 Jan, 2015 07:50
by Skirda
John Doe wrote:
Skirda wrote: ...а макросы, кроме всего прочего (Put/Add), могут юзать и внутренний - Clip(5,2)).
Не вижу для чего может понадобиться в граббере внутренний.
Встречный вопрос - как в макросах работа с внутренним буфером соотносится с грабером? :-)

Предложенные функции - работа с буфером обмена. Отношение к грабберу косвенное. Для грабер-плагина ничего не мешает в тех же форматах (rtf/html/bmp/etc) копировать в буфер обмена выделенный в редакторе кусок текста.

Grabber API

Posted: Fri 23 Jan, 2015 07:57
by John Doe
Skirda wrote: Встречный вопрос - как в макросах работа с внутренним буфером соотносится с грабером?
Сейчас выделенную область макрос может получить только с помощью CtrlIns.
Наследие прошлого. Если развивать, то в другую сторону: дать доступ через свойства/функции.
Skirda wrote: Для грабер-плагина ничего не мешает в тех же форматах (rtf/html/bmp/etc) копировать в буфер обмена выделенный в редакторе кусок текста.
Пусть копирует.
Но для целей анализа зачем буфер обмена, если есть более прямые пути.
Skirda wrote: Предложенные функции - работа с буфером обмена.
Речь только о работе с "внутренним" буфером?
Или что-то ещё?

Grabber API

Posted: Fri 23 Jan, 2015 08:19
by Skirda
John Doe wrote:
Skirda wrote: Предложенные функции - работа с буфером обмена.
Речь только о работе с "внутренним" буфером?
Или что-то ещё?
Внутренний буфер тут как бы ни причем. Внутренний буфер это доп.фича (изначально для макросов), чтобы не "портить" основной буфер... ну или иметь на борту несколько буфер обмена.
Если ты читал внимательно моё месаг, то мог увидеть фразу:
FSF.CopyToClipboard ... (с очисткой предыдущего содержимого)
Да, плагин может сам заюзать WinAPI, чтобы добавить в существующий буфер новые данные, не стирая предыдущее значение, но при этом у него не будет доступа к "другим" буферам.

Grabber API

Posted: Fri 23 Jan, 2015 08:28
by John Doe
Skirda wrote: Внутренний буфер тут как бы ни причем.
Выходит я неправильно понял.
Skirda wrote: но при этом у него не будет доступа к "другим" буферам.
Можно подробнее?

Grabber API

Posted: Fri 23 Jan, 2015 10:49
by Skirda
John Doe wrote:
Skirda wrote: но при этом у него не будет доступа к "другим" буферам.
Можно подробнее?
К теме относится косвенно, ну да ладно.
Сейчас макросы могут манипулировать клипбордом достаточно просто - get/set/add/clear/swap/etc.. Причем как виндовым клипбордом, так и внутренними (сценарий работы с разными буферами придумать достаточно просто)
Плагины такого не могут (могут только get/set/clear виндового буфера).
Новые FSF-функции - в первую очередь для add (внутренние буферы - как бонус).

Grabber API

Posted: Fri 23 Jan, 2015 11:09
by John Doe
Skirda wrote: К теме относится косвенно
Тему разделим, не проблема.
Skirda wrote: Сейчас макросы могут манипулировать клипбордом достаточно просто - get/set/add/clear/swap/etc.
"add" тут легко заменить на последовательность "get/set".
Под "swap" видимо понимается переключение между системным/внутренним клипбордом.
Под "etc" видимо копирование внутреннего в системный и наоборот.
Skirda wrote: (сценарий работы с разными буферами придумать достаточно просто)
Мне например сложно.
Внутренний буфер сейчас существует только во время исполнения макроса, и основное его предназначение - это компенсировать неполноту macroapi, или избавить неподготовленного пользователся от изучения этого АПИ.
Какие ещё варианты применения?
Skirda wrote: Плагины такого не могут
Вопрос в том, зачем им это вообще может понадобиться? Пример?
Skirda wrote: Новые FSF-функции - в первую очередь для add (внутренние буферы - как бонус).
"add" в macroapi тупо заменяется на "get/set".
А для плагинов, если я правильно понял, подразумевается другая задача: добавить к содержимому клипборда ещё один формат. Или нет?

Grabber API

Posted: Fri 23 Jan, 2015 18:41
by DrKnS
Skirda wrote: Плагины такого не могут (могут только get/set/clear виндового буфера).
А оно им надо?
Насколько я понимаю, внутренний буфер появился не от хорошей жизни, а от отсутствия нормальных переменных в макроязыке, использования вместо них буфера обмена и нежелания при этом терять его содержимое.

Grabber API

Posted: Mon 26 Jan, 2015 09:48
by Skirda
DrKnS wrote:Насколько я понимаю, внутренний буфер появился не от хорошей жизни, а от отсутствия нормальных переменных в макроязыке, использования вместо них буфера обмена и нежелания при этом терять его содержимое.
Ну вообще-то внутренний буфер появился (10.01.2003, 1.7 build 1587) под влиянием плагина MultiClip :-)
А для того, чтобы не городить огород с клавиатурными сочетаниями, сначала были введены $IClip и IClip, которые потом превратились в макро-функцию clip.

Grabber API

Posted: Mon 26 Jan, 2015 09:53
by John Doe
Skirda wrote: под влиянием плагина MultiClip
История может и интересная, но по факту получилось именно то, о чём написал DrKnS.

Grabber API

Posted: Mon 26 Jan, 2015 09:59
by Skirda
John Doe wrote:по факту получилось именно то, о чём написал DrKnS.
Тогда было проще макрофункцию написать, чем АПИ модифицировать.
Но изначальная задумка была не про макросы.

Grabber API

Posted: Mon 26 Jan, 2015 10:05
by John Doe
Skirda wrote: Но изначальная задумка была не про макросы.
Планируется вернуться к изначальной задумке?
Если да, то я выделю хвост этого обсуждения в отдельную тему.

Grabber API

Posted: Mon 26 Jan, 2015 10:08
by Skirda
Планировать всё что угодно можно, но судя по всему этот функционал никому не нужен...