Skip to content

HACKING

Benjamin C Meyer edited this page Jun 18, 2015 · 1 revision

If you run 'make dox' it will build a doc/ directory using Doxygen which you can use to browse and explore the code.

/src/

  • BrowserApplication - Various functions and owner of main objects like the BrowserManager, has a list of BrowserMainWindow's.
  • BrowserMainWindow - The main window, owner of all of the actions, location bar, search widget, and a TabWidget.
  • TabWidget - Subclass of QTabWidget, has a bunch of QWebView's. Decides if a middle mouse click should open a new tab or not.
  • WebView - Subclass of QWebView, has a WebPage. Right click menu and actions are here.
  • WebPage - Subclass of QWebPage.

Various other classes such the view source classes, the drop down search widget, and the download window class, and settings dialog.

/src/locationbar/

Our customized location bar, the site icon and privacy icon. It is a subclass of LineEdit which isfound in src/utils. The completion is done by the HistoryCompleter which is in ...

/src/history/

  • HistoryManager - Owner of all of the history, stored in a very simple format (pretty much one entryper line in a text file)
  • HistoryCompleter - sits on top of HistoryManager and populates the completer in the location bar.
  • HistoryDialog (and friends) - Used to show the History Dialog and History Menu

/src/bookmarks/

We use the open standard xBel for bookmarks, classes to read/write are found in the xbel/ folder. I mporting html to xbel is found in the tools/html2bel tool.

  • BookmarksManager - Ownser of all bookmarks, loads and saves.
  • BookmarksToolbar - class that sits in the main window
  • BookmarksMenu, BookmarksDialog, AddBookmarkDialog - User interfaces to our bookmarks

/src/opensearch/

All of the code that handles the search widget in the top right of the toolbar is found in here.

  • OpenSearchManager - owns a bunch of OpenSearchEngines which are read and written via OpenSearchReader and OpenSearchWriter
  • OpenSearchDialog - the configuration dialog

/src/network/

The NetworkAccessManager which routes all network connections is here. Disk cache, proxy, custom sc heme's and a complete replacement CookieJar is found here.

/src/qwebplugins/

QtWebKit's "plugin" system (like netscape plugins, but for Qt), currently only clicktoflash is here.

/src/utils/

This is a collection of very useful classes (i.e. stuff that could/should be in Qt) that are not specific to Arora and other applications can/do copy the code. See the README file for details.

/autotests/

Many of the classes in Arora have matching autotests that can be found here. They use the Qt test system.

/manualtests/

Many of the classes in Arora have little manual test application that can be found here.

/git_hooks/

If you sym-link this directory to your .git/hooks these scripts will run on commit. They do several things including:

  • Spell check your commit message
  • Run the autotest that goes to the file you are changing to confirm that you didn't break anything. (and only that autotest, not all of them)
  • Makes sure arora builds (this should be a noop because you built before committing, right...?)
  • Runs a simple shell script that does some code style checking.
Clone this wiki locally