Xpoint
   [напомнить пароль]

GeckoPluginSDK-samples (basic) изучение примера

Метки: [без меток]
2007-04-30 14:41:49 [обр] Luciefer[досье]

В общем, изучаю различные примеры работы плагинов с Firefox, для создания своего.
Один плагин я все таки подключил :) полазил в нем, поизменял...

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

Кто-нибудь сможет подсказать как откомпелировать и запустить?
Кто-нибудь имел с ним дело?

весь пакет примеров: http://www.mozilla.org/project......eckoPluginSDK-samplesWin32.zip
отдельно пример basic: http://luciefer.nm.ru/XPCOM/basic.rar

спустя 1 час 53 минуты [обр] Luciefer[досье]
Как я понял, надо открыть dsp файл, отредактировать его (ссылки) и откомпилировать
пробую...пока без успешно :(
спустя 53 минуты [обр] Luciefer[досье]

Итак, запустил .dsp файл, Build... все создалось
получился файл dll, но он не коннектится к Mozilla FireFox :(

в dll ошибки, но что они означают, не понимаю http://luciefer.nm.ru/XPCOM/npbasic.dll

спустя 18 часов [обр] Luciefer[досье]
В dll вроде и нет ошибок, но к FireFox так и не смог его подключить
спустя 3 часа 28 минут [обр] Владимир Палант(434/4445)[досье]
А куда вы этот dll пихаете? Это ведь не XPCOM-компонента уже, а плагин. Его надо в каталог plugins скопировать, и он заработает автоматически (.autoreg'и и прочее не нужны).
спустя 24 минуты [обр] Luciefer[досье]

А я пихал....в компоненты :)
Все работает.
Спасибо!!!

P.S. два дня мучался...а решение такое простое...

спустя 1 день [обр] KML[досье]
Luciefer[досье], а чем вы компилировали, я пробовал Cygwin но посыпались эксепшены и я скомпилил в Visual Studio. Хотя сборка под Cygwin-ом по прежнему интересна...
спустя 3 часа 36 минут [обр] Luciefer[досье]
компилировал Visual Studio 2005
спустя 3 часа 41 минуту [обр] Владимир Палант(434/4445)[досье]
KML[досье]
Mozilla больше не поддерживает Cygwin (начиная с Gecko 1.9), поскольку появились бесплатные компиляторы от Microsoft. С Cygwin и до этого были одни проблемы...
спустя 3 дня [обр] Luciefer[досье]

Появилось несколько вопросов.

  1. в html коде примера есть строка:

<embed type="application/basic-plugin" width=600 height=100>
По которой рисуется обводка области.
Если параметры удалить обводка все равно остается. Видимо параметры задаются по умолчанию, примерно 100х100. Можно ли как-нибудь избавиться от этой обводки?

  1. как можно считать дополнительные коды из html файла? например такого вида... Еще не представляю как это будет выглядить, но смысл в следующем...

В html файле будет писаться текст, каким шрифтом он написан и где расположен на экране. Это нужно считать. Ну а выводить это легко тем же TextOut

спустя 5 минут [обр] Luciefer[досье]
по поводу '1'
саму обводку черную убрал..это функция FrameRect(hdc, &rc, GetStockBrush(BLACK_BRUSH));
Но...все равно если область слишком маленькая, то текста не видно, если слишком большая, то появляются скролы..
спустя 9 часов [обр] KML[досье]
Владимир Палант[досье] А чем собирают под платформы, отличные от win32?
спустя 2 дня 4 часа [обр] Владимир Палант(434/4445)[досье]

Luciefer[досье]

  1. Так оно с плагинами — они отвечают только за определенную область на странице. Можно задать размеры этой области как width="100%" height="100%", можно менять размеры динамически к примеру с помощью JavaScript, но на этом дело и заканчивается.
  2. Боюсь, что придется послать вас к следующей технологии: XFT. С помощью XTF можно реализовать собственный обработчик тегов HTML-документа (я сам не пробовал, имею об этом весьма отдаленное представление). Хотя, может быть, вам подойдет и XBL, для него компилировать вообще ничего не нужно. Но, с другой стороны, реально рисовать в XBL нельзя, нужно выражать все в виде уже существующих элементов (HTML или XUL).

KML[досье]
На других платформах обычно используется все-таки gcc, но под Win32 какие-то свои нюансы.

спустя 5 часов [обр] Luciefer[досье]
Владимир Палант, из примера этого плагина я по маленьку стал делать программу.
Почитал про XFT, написано что он для XPCOM.
XBL как я понял, немножко другое.
Мне нужно что бы именно моим плагином можно было считать текст из html.
спустя 3 часа 25 минут [обр] Владимир Палант(434/4445)[досье]
В том и дело, что плагины так не работают. Они получают разве что содержимое тегов <param> внутри <embed>, остальной документ их не касается. Можете передавать параметром URL файла, где лежат данные.
спустя 1 день 3 часа [обр] Luciefer[досье]

в лющем сказали что можно на php
<?php
header("Content-type: application/reportviewer-plugin");
...

?>

а как распознавать, что передается? я так понял передача такая же как если передать просто файл?

спустя 2 минуты [обр] Luciefer[досье]
сорри, "в общем"
спустя 8 минут [обр] Luciefer[досье]
и еще вопрос: как к этому всему цепляется панель инструментов? есть какие-нибудь примеры или статьи?
спустя 1 час 44 минуты [обр] Владимир Палант(434/4445)[досье]

Эх... Вы уж определитесь, что вам надо. У плагинов интеграции с пользовательским интерфейсом браузера — ноль. Смотрите, к примеру, что делает Acrobat Reader. Там есть панель инструментов, но она внутри области, отведенной для плагина. Плагин реализует эту панель инструментов полностью самостоятельно, к пользовательскому интерфейсу браузера она не имеет никакого отношения.

А вот работать с пользовательским интерфейсом браузера — это могут расширения. В принципе, возможна и комбинация плагина и расширения, см. к примеру IE Tab (на сайте есть исходники). Но вам бы не помешало для начала разобраться хотя бы с одним. Документация по расширениям здесь (на русском варианте страницы информации пока не слишком много).

спустя 14 часов [обр] Luciefer[досье]
Владимир Палант, просто я начинаю делать одно,а мой дипломный руководитель потом говорит, то так не пойдет..надо вот так. Сначала я делал все это расширением и программу почти сделал. Но были проблемы с точностью..., в общем не понимаю толком почему..сказали мне делать dll'ой.
По поводу панели инструментов, действительно..не подумал, проще всего сделать внутри области.
Мне как раз и нужна программа как Acrobat Reader. Т.е. она будет читать отчеты, которые формируются с помощью php. Вот только как читать php не знаю.
спустя 5 часов [обр] Владимир Палант(434/4445)[досье]
У плагинов есть параметр src (указывается в HTML-коде, браузер передает его в NPP_New). Это адрес данных, которые ваш плагин должен отобразить. Преобразуете относительные URL в абсолютные и вызываете NPN_GetURL. Вот вы и получили свои данные. А кто их выдал, PHP ли, или может они просто лежат как файл на сервере, уже роли не играет.
спустя 21 час [обр] Luciefer[досье]

Владимир, а если у меня примерно так:

<?php
header("Content-type: application/reportviewer-plugin");
...
<text>Any text</text>
...
?>

где <text>Any text</text> и есть те строки или просто линии которые надо распознать плагином и вывести
т.е. никакой url не указывается, а все прописывается прямо в этом же файле.

...или можно сделать что бы NPN_GetURL получал URL той страницы...которая сейчас просматривается?

спустя 4 часа 13 минут [обр] Luciefer[досье]
попробовал NPN_GetURL, функция просто выводит страницу..в плагине указывается в какое окно
нужно считать данные в плагин, что бы обработать их
спустя 17 минут [обр] Владимир Палант(434/4445)[досье]

Это неважно. Если ваша страница должна отображаться плагином, то Gecko автоматически создает HTML-документ с тегом <embed> и соответствующим src. Ничего от этого не меняется.

Насчет NPN_GetURL я ошибся, все-таки плагины я не пишу. Видимо, вам нужно вот это: http://developer.mozilla.org/e......o_Plugin_API_Reference:Streams

То есть, браузер вызовет NPP_NewStream, а потом передаст вам данные с помощью NPP_Write.

спустя 15 минут [обр] Luciefer[досье]
Спасибо. Как раз про эти функции сейчас прочитал, буду пробовать.
спустя 1 день 18 часов [обр] Luciefer[досье]
Попробовал.
NPP_NewStream вроде как считывает данные. как проверить..не знаю...
NPP_Write по идеи записывает свое в этот поток данных
NPN_RequestRead должна считывать...но не понятно куда :(
спустя 2 дня 22 часа [обр] Luciefer[досье]

Возник очередной вопрос.
С функциями чтения я разобрался.
пишу такой test.php файл
<?php
header("Content-type: application/reportviewer-plugin");

<report>
<page-1:1>
<text>
Test text
</text>
</page-1:1>
</report>
?>

Браузер выдает оишбку: Parse error: parse error, unexpected '<' in z:\home\multimedia\www\test.php on line 4

Т.е. он пытается дальше распознать данные в файле.
Я думал, что теперь за все отвечает плагин.
Как сделать что бы Мозилла не пыталась распознавать эти данные?

спустя 26 минут [обр] Lynn «Кофеман»(21/571)[досье]
М-дя, это не браузер выдаёт ошибку, а PHP.
Писать надо так:
<?php
header("Content-type: application/reportviewer-plugin");
?>
<report>
…
спустя 10 дней [обр] Luciefer[досье]
Большое спасиба. Во всем разобрался.
Powered by POEM™ Engine Copyright © 2002-2005