>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Исходники XPCOM http://forum.mozilla-russia.org/viewtopic.php?id=22592 |
Lermontov > 09-04-2008 20:20:40 |
скачал исходник firebug, получил из nsIFireBug.idl с помощью xpidl nsIFireBug.h, но че то в этом хедере я не вижу ни одного нормального описания функций, все какие то пустые, так и должно быть, или надо этот хедер как то по другому получать? |
Anton > 09-04-2008 20:48:57 |
В *.idl - только объявление интерфейса. Реализация - в отдельном файле. Если реализовано на javascript, значит в *.js, если на C, значит надо компилировать *.h + *.c. Ну и *.xpt, если интерфейс не стандартный. |
Lermontov > 09-04-2008 20:53:27 |
Как же ж тогда получить доступ к этому компоненту из C++ приложения, основанное на XULRunner'e? |
Anton > 09-04-2008 21:12:41 |
Может быть я конечно и ошибаюсь, но, скорее всего нет - из C кода особого смысла вызывать библиотечный код, написанный на скрипте, нет. Кроме тех случаев, когда C-код реализует исполнение этих самых скриптов. Я думаю, тут два варианта - если этот код должен вызываться и из C и из JavaScript, тогда надо его переписать целиком на C. Если он должен вызываться только из JavaScript, тогда можно оставить как есть. В xulrunner приложения ведь компоненты тоже встраиваются. Скорее всего, часть логики приложения будет на xul/js, может быть, функциональность компоненты будет востребована только этой частью ? |
Lermontov > 10-04-2008 11:27:49 |
Если компонент написан js/xul, файл.xpi , можно ли как то вручную установить и зарегестрировать этот компонент, чтоб потом я мог к нему обратится через nsComponentManager? |
Anton > 10-04-2008 14:17:09 |
Если js+xpt находится в папке components, то он должен зарегистрироваться при запуске приложения, насколько я понимаю. Ну, может быть сначала ещё придётся удалить comreg.dat и/или xpti.dat. |
Lermontov > 10-04-2008 14:44:24 |
Спасибо, Anton, действительно зарегистрировалась компонента, в файлах compreg.dat,xpti.dat, она прописалась,теперь буду пробовать получить к ней доступ через менеджер компонентов, если есть наброски по реализации такого, просьба выложить в эту тему. |
Anton > 10-04-2008 15:32:37 |
Если доступ к компоненту из js - то Components. classes [contract_id]. createInstance/getService (interface_id) |