Mozilla::DOM
------------

This module wraps the Mozilla DOM interface in Perl.
In conjuction with an embedded Gecko widget (e.g. Gtk2::MozEmbed),
you can use Perl to manipulate the browser DOM, handle DOM signals,
and create events such as mouse clicks -- all within a Mozilla-like
browser (so it also does JavaScript). See `perldoc Mozilla::DOM`
for more details.

Mozilla::DOM comes with automatically generated API documentation:

  perldoc Mozilla::DOM::index

Much of this documentation was copied from Mozilla headers
and the DOM Level 2 specifications.

There are examples in the `examples' directory showing how
to use this module with Gtk2::MozEmbed. See the README file
in that directory.


Installation
------------

Note: I've only built this on Debian Linux with Mozilla 1.7.5.
People running Gentoo with Mozilla 1.7.6 have reported being
able to build it.

To install Mozilla::DOM, run the following commands:

  perl Makefile.PL
  make
  make test      (not really any tests yet)
  make install   (as root)

(See dependencies below.)

It's normal to see warnings during `make` such as

  missing: Mozilla::DOM::EventTarget::nsIDOMEventTarget->GetIID
  !! is not registered with the GLib type system.

These are due to limitations in the POD generator
(which I intend to take out).

For this module to be useful, you'll probably also want
to install Gtk2::MozEmbed (> 0.03) _after_ you install this.
That module includes Mozilla::DOM (through the magic of
ExtUtils::Depends) if it's already installed. Similarly,
if you upgrade Mozilla::DOM, you'll also want to rebuild
and reinstall Gtk2::MozEmbed.


Dependencies
------------

You might have to manually install ExtUtils::Depends and ExtUtils::PkgConfig
before anything else. Sorry about that. You'll also have to install Mozilla
with its development headers.

Mozilla::DOM depends on:

  ExtUtils::Depends
  ExtUtils::PkgConfig
  Glib.pm
  `pkg-config --modversion mozilla-xpcom` >= 1.7

I hope to remove Glib and add the equivalent of mozilla-xpcom for Firefox.


Troubleshooting
---------------

A common problem seems to be that header files are put in different
directories. If so, you'll get an error like

  mozilladom2perl.h:37:27: nsIWebBrowser.h: No such file or directory
  mozilladom2perl.h:38:26: nsISelection.h: No such file or directory

If this happens, do

  find . -name 'nsIWebBrowser.h'

from within the Mozilla include directory (e.g. /usr/include/mozilla).
It will probably be under some directory of /usr/include/mozilla/.
Try adding that directory to the set_inc method in Makefile.PL,
and please report it to me.


Bugs
----

You can send bugs to me directly, or through RT at
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Mozilla-DOM .


Contact
-------

Scott Lanning  lannings at who dot int

You can also use the CPAN Forum at
http://www.cpanforum.com/dist/Mozilla-DOM .

I (slanning) am usually on IRC at irc.perl.org,
where we could create a channel.
