Structure of marbrow
How is marbrow !?
On the model of PPBrowser, I embedded mozilla browser in my original simple framework.
Its main features are
- not to use the existing framework, but to implement in plain Macintosh code
- to implement the contols except for the browser, not by mozilla widget but by Macintosh control
- a trial that 1 window has 2 browser
- to test the file downloading by netlib
- to support addition of bookmark and jump to bookmark (editing is unsupported)
etc.
- Build
- Source tree structure
- Visual structure
- Class structure
Build 
Download the source of marbrow
If you download the source from the above URL and extract it, the folder named marbrow will appear. Then please copy this folder under
mozilla/embedding/browser/
This is the same place as PowerPlant folder of PPBrowser exists.
You can build by CodeWorrior project shown below.
mozilla/embedding/browser/marbrow/marbrow.mcp
Executables of building result is outputted in the places shown below.
mozilla/dist/viewer/marbrow
mozilla/dist/viewer_debug/marbrow Debug
[Screen shot of PPBrowser]

Source tree structure 
Source/Application
main.cpp - Main process
glob.cpp - Grobal variale init.cpp - Initializing/Terminating process
evnt.cpp - Event process
docu.cpp - Document process
err.cpp - Showing errors
wmng.cpp - Window manager
Source/Dialog
dlog.cpp - Showing modal dialogs
MMlDlog.cpp - Modeless dialog class (MMlDlog)
MProgDlog.cpp - Progress dialog class (MProgDlog)
Source/Net
dnload.cpp - netlib download process
Source/Utility
ustr.cpp - Character string utility
ufile.cpp - File utility
uprcs.cpp - Process utility
uinetc.cpp - Internet Config utility
udlg.cpp - Dialog utility
UMacUnicode.cpp - Unicode conversion utility
Source/View
MView.cpp - View basic class (MView)
MWind.cpp - Window class (MWind) MLoca.cpp - Location bar class (MLoca) MStat.cpp - Status bar class (MStat) MButt.cpp - Button class (MButt) MBrow.cpp - Browser class (MBrow) MChrome.cpp - Chrome class (MChrome)
Resource
marbrow.rsrc - Resource file
cfmAlias.rsrc - Alias resource for Release Building
cfmAliasDebug.rsrc - Alias resource for Debug Building
Embed API
EmbedAPI.mcp - Project for Embedding Library EmbedAPI.o - Embedding Library for Release Building EmbedAPIDebug.o - Embedding Library for Debug Building
Mac Libraries - Library for Macintosh
InternetConfigLib - Stub library for Internet Config
Moz Libraries - Library for mozilla (Common to Release & Debug)
NSAppStartup.o - Startup for mozzila (mozilla/dist/mac/lib/) InterfaceStubs - InterfaceLib stub library for mozilla (mozilla/dist/client_stubs/)
Moz Libraries/Release - Library for mozilla (For Release)
appfilelocprovider.o - (mozilla/modules/appfilelocprovider/)
mpfilelocprovider.o - (mozilla/modules/mpfilelocprovider/)
gfx.shlb - (mozilla/dist/viewer/Essential Files/)
NSRuntime.shlb- (mozilla/dist/viewer/Essential Files/)
NSStdLib.shlb- (mozilla/dist/viewer/Essential Files/)
NSPR20.shlb- (mozilla/dist/viewer/Essential Files/)
RaptorShell.shlb- (mozilla/dist/viewer/Essential Files/)
widget.shlb- (mozilla/dist/viewer/Essential Files/)
xpcom.shlb- (mozilla/dist/viewer/Essential Files/)
Moz Libraries/Debug - Library for mozilla (For Debug)
appfilelocproviderDebug.o - (mozilla/modules/appfilelocprovider/)
mpfilelocproviderDebug.o - (mozilla/modules/mpfilelocprovider/)
gfxDebug.shlb - (mozilla/dist/viewer_debug/Essential Files/)
NSRuntimeDebug.shlb - (mozilla/dist/viewer_debug/Essential Files/)
NSStdLibDebug.shlb - (mozilla/dist/viewer_debug/Essential Files/)
NSPR20Debug.shlb - (mozilla/dist/viewer_debug/Essential Files/)
RaptorShellDebug.shlb - (mozilla/dist/viewer_debug/Essential Files/)
widgetDebug.shlb - (mozilla/dist/viewer_debug/Essential Files/)
xpcomDebug.shlb - (mozilla/dist/viewer_debug/Essential Files/)
Visual structure 
In marbrow, the visual structure is constructed dynamically on the program.
In docu.cpp, DoNew() constructs the main window and DoNewPlain() constructs the plain window.
The visual structure of the main window is fixed and like this.
|
Main window (MWind)
+ Browser 1 (MBrow)
+ Location bar for Browser 1 (MLoca)
+ Status bar for Browser 1 (MStat)
+ Print button for Browser 1 (MButt)
+ View Source button for Browser 1 (MButt)
+ Home button for Browser 1 (MButt)
+ Exit button (MButt)
+ Browser 2 (MBrow)
+ Location bar for Browser 2 (MLoca)
+ Status bar for Browser 2 (MStat)
+ Back button for Browser 2 (MButt)
+ Forward button for Browser 2 (MButt)
+ Stop button for Browser 2 (MButt)
+ Refresh button for Browser 2 (MButt)
|
And the visual structure of the plain window is like below. But the chrome flag may prevent some parts from being shown.
|
Plain window (MWind)
+ Browser (MBrow)
+ Location bar (MLoca)
+ Status bar (MStat)
+ Back button (MButt)
+ Forward button (MButt)
+ Stop button (MButt)
+ Refresh button (MButt)
|
Class structure 
MView (MView.cpp, MView.h)
This is the foundation class (virtual class) that defines member varialbes and methods visual parts should implement.
MWind (MWind.cpp, MWind.h)
This is the class of the main window.
MLoca (MLoca.cpp, MLoca.h)
This is the class of the location bar.
MStat (MStat.cpp, MStat.h)
This is the class of the status bar.
MButt (MButt.cpp, MButt.h)
This is the class of buttons.
MBrow (MBrow.cpp, MBrow.h)
This is the class of the browser (HTML part).
MChrome (MChrome.cpp, MChrome.h)
This is the class of the browser chrome. This class implements necessary interfaces and is in close cooperation with the browser shell, and acts as a mediator between the browser shell class and mozilla side.
|