blob: 83903493d1d79bc983296b34822ef30e01068dfb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
/****************************************************************************
**
** Index page
**
** Copyright (C) 1995-2008 Trolltech ASA. All rights reserved.
**
*****************************************************************************/
#if defined(QT_DEBUG)
#endif
/*! \page netscape-plugin.html
\title Qt Netscape Plugin Extension
\keyword Netscape
The Qt Netscape Plugin software makes it easy to write browser plugins
that can be used on both Unix/Linux and MS-Windows, in Netscape,
Mozilla, and any other web browser supporting Netscape's LiveConnect
protocol. Modern versions of MSIE do not support this protocol. Use
the ActiveQt Framework to develop plugins for these browsers.
\section1 Information
The Netscape Plugin Extension consists of the follow classes:
\list
\i \l QNPlugin
\i \l QNPInstance
\i \l QNPWidget
\i \l QNPStream
\endlist
\section1 How-to
\list 1
\i Download the
\link http://home.netscape.com/comprod/development_partners/plugin_api/index.html
Plugin SDK from Netscape \endlink, and copy the following files from there to
\c{$QTDIR/extensions/nsplugin/src}
\list
\i \c common/npwin.cpp
\i \c common/npunix.c
\i \c include/npapi.h
\i \c include/npupp.h
\i \c include/jri.h
\i \c include/jri_md.h
\i \c include/jritypes.h
\endlist
\i Build the Netscape Plugin extension library, found in the
\c{extensions/nsplugin/src} directory of your Qt distribution.
This produces a static library to be linked with your plugin code.
\i Read the \link qnplugin.html plugin class documentation \endlink, and
examine the \link nsplugin-examples.html example plugins \endlink.
\i Do most of your development as a stand-alone Qt application - debugging
Netscape Plugins is cumbersome. You may want to use \c{signal(2)}
in your plugin to enable core-dumps if your browser disables them.
\i Note the platform-specific build steps below.
\i Read about the raw plugin interface
\link http://developer.netscape.com/docs/manuals/communicator/plugin/index.htm
in Netscape's handbook. \endlink
\i If files viewed by a plugin are provided by an HTTP server
(using a \c{http://...} URL) then
the server must be configured to send the correct MIME type
for the file, e.g. by editing Apache's \c{mime.types} file.
If the files are viewed via a \c{file://...}
URL, then the browser will use the filename extension to decide
the file type (and hence the plugin to load) - the user may need
to set the filename extension in the Helpers or Applications
section of their browser preferences.
\endlist
\section2 Building under X11
\list
\i The Makefiles in the examples are appropriate for UNIX/X11.
\i The user must install the resulting Shared Object in the Plugins
directory of the browser.
\endlist
\section2 Building under Windows
\list
\i For Netscape plugins to work, Qt needs to be in the system DLL
path or be compiled into the plugin as a static library.
\i Plugins must be named \c{np}\e{name}\c{.dll},
or the browser will ignore them.
\i The link step must include:
\list
\i \c{/def:}\e{name}\c{.def}
\i \c{/dll}
\i a compiled resource file defining the
file/MIME types accepted by the plugin.
\endlist
\i The user must install the resulting DLL in the Plugins directory
of the browser.
\endlist
\section1 Known Bugs and Limitations
The Qt-based LiveConnect Plugin binding code has a number of bugs and
limitations, but is sufficiently stable for many production
applications.
\list
\i Keyboard input only works in secondary windows (e.g. dialogs created by the plugin).
\i You should not expect modality between the plugin and the browser to work.
\i Netscape 4.78 on Unix/X11 tends to terminate with a bus error.
\i Opaque resize behaviour is erratic due to browser behavior.
\endlist
*/
|