Gtkmozembed: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
(Add table.)
Line 1: Line 1:
== Introduction ==
[[http://www.mozilla.org/unix/gtk-embedding.html GtkMozEmbed]] is an embedding API designed many years ago for use in Gtk applications. See also [[http://lxr.mozilla.org/seamonkey/source/embedding/browser/gtk/src/ source code]]
[[http://www.mozilla.org/unix/gtk-embedding.html GtkMozEmbed]] is an embedding API designed many years ago for use in Gtk applications. See also [[http://lxr.mozilla.org/seamonkey/source/embedding/browser/gtk/src/ source code]]


Line 7: Line 9:
GtkMozEmbed hasn't really had much development in the past years, partly because of a Glib ABI promise (which we intend to break for Mozilla1.9, as the Linux distributors have explained very clearly that they really really really don't care about ABIs at all, as long as there's source compatibility, because as it happens, they rebuild everything for each distribution they make anyway).
GtkMozEmbed hasn't really had much development in the past years, partly because of a Glib ABI promise (which we intend to break for Mozilla1.9, as the Linux distributors have explained very clearly that they really really really don't care about ABIs at all, as long as there's source compatibility, because as it happens, they rebuild everything for each distribution they make anyway).


Goals:
== Goals ==
   1) Provide extended Gtk Interface, which should include:
   1) Provide extended Gtk Interface, which should include:
       a) Important components, (some of them implemented in XUL inside Gecko)
       a) Important components, (some of them implemented in XUL inside Gecko)
Line 14: Line 16:
           (Cookies, Plugins, Preferences, Page/Image saving,
           (Cookies, Plugins, Preferences, Page/Image saving,
           Clipboard, Encoding, Zooming)
           Clipboard, Encoding, Zooming)
       c) Some extensions like Panning, features for "Non-Mouse" devices.
       c) Some extensions like Panning.
 
== Notes ==
 
There is an extended GtkMozEmbed implementation available from [http://bonsai.mozilla.org/cvsquery.cgi?treeid=default&module=all&branch=MICROB_20061031_BRANCH&branchtype=match&dir=&file=&filetype=match&who=&whotype=match&sortby=Date&hours=2&date=all&mindate=1970-12-31+16%3A00%3A01&maxdate=1970-12-31+16%3A00%3A01&cvsroot=%2Fcvsroot MICROB_20061031_BRANCH]
 
The changes made for the original GtkMozEmbed code can be found in this table:
 
{| border="1"
!style="background:#efefef;" | File
!style="background:#efefef;" | New
!style="background:#efefef;" | Description
|-  
| gtkmozembedmarshal.list || yes || ???
|-
| gtkmozembed_download.h gtkmozembed_download.cpp || yes || ??? 
|-
| gtkmozembed_common.h gtkmozembed_common.cpp || yes || ??? 
|-
| EmbedPasswordMgr.h EmbedPasswordMgr.cpp || yes || Embedded Password Manager support
|-
| EmbedGtkTools.h EmbedGtkTools.cpp || yes || Misc Embedded functions
|-
| EmbedGlobalHistory.h EmbedGlobalHistory.cpp || yes || Embedded Global History support
|-
| EmbedFilePicker.h EmbedFilePicker.cpp || yes || Embedded File Picker
|-
| EmbedDownloadMgr.h EmbedDownloadMgr.cpp || yes || Embedded Download Manager
|-
| EmbedContextMenuInfo.h EmbedContextMenuInfo.cpp || yes || Embedded Context Menu support
|-
| EmbedCertificates.h EmbedCertificates.cpp || yes || Embedded Certificates Listener
|}

Revision as of 12:55, 21 November 2006

Introduction

[GtkMozEmbed] is an embedding API designed many years ago for use in Gtk applications. See also [source code]

Gtk is built around Glib signals and has a fixed C structure method dispatch design. GtkMozEmbed unfortunately isn't perfect and was designed with basically a single object to represent the entire browser of its time. This didn't scale well and unfortunately wrapping each and every object in Gecko is unreasonable. It is conceivable that someone might someday make a Glib-connect XPTCall layer or something like it that could proxy between XPCOM (or its replacement) and Glib. The main advantage of doing this is that no person would have to manually spend time writing bloaty wrappers for each and every imaginable Gecko object.

Mozilla 2.0 is likely to cause this embedding API to be replaced. The exact plans for this are entirely unknown. Whether there will be a single cross platform, or a per platform API is unknown. If you're interested in expressing your opinions, there's probably a newsgroup that might accept input.

GtkMozEmbed hasn't really had much development in the past years, partly because of a Glib ABI promise (which we intend to break for Mozilla1.9, as the Linux distributors have explained very clearly that they really really really don't care about ABIs at all, as long as there's source compatibility, because as it happens, they rebuild everything for each distribution they make anyway).

Goals

  1) Provide extended Gtk Interface, which should include:
     a) Important components, (some of them implemented in XUL inside Gecko)
         (Certificates, Passwords, Download, Upload, History)
     b) Provide features, that usefull in most browser applications
         (Cookies, Plugins, Preferences, Page/Image saving,
          Clipboard, Encoding, Zooming)
     c) Some extensions like Panning.

Notes

There is an extended GtkMozEmbed implementation available from MICROB_20061031_BRANCH

The changes made for the original GtkMozEmbed code can be found in this table:

File New Description
gtkmozembedmarshal.list yes ???
gtkmozembed_download.h gtkmozembed_download.cpp yes ???
gtkmozembed_common.h gtkmozembed_common.cpp yes ???
EmbedPasswordMgr.h EmbedPasswordMgr.cpp yes Embedded Password Manager support
EmbedGtkTools.h EmbedGtkTools.cpp yes Misc Embedded functions
EmbedGlobalHistory.h EmbedGlobalHistory.cpp yes Embedded Global History support
EmbedFilePicker.h EmbedFilePicker.cpp yes Embedded File Picker
EmbedDownloadMgr.h EmbedDownloadMgr.cpp yes Embedded Download Manager
EmbedContextMenuInfo.h EmbedContextMenuInfo.cpp yes Embedded Context Menu support
EmbedCertificates.h EmbedCertificates.cpp yes Embedded Certificates Listener