Overview

Dragonfly

Directories:

src: source code for dragonfly client
docs: documentation that is not auto-generated
tools: tools needed for building/distributing/testing

Developing Dragonfly:

When working on the code base it's you should use the "dragonkeeper"
tool. See the README file for dragonkeeper for more information:

http://bitbucket.org/scope/dragonkeeper/


Building Dragonfly:

*Note:* It is not necessary to build Dragonfly during development. See above.

Building dragonfly means concatenating resources together (js and css),
adding a license preamble to files, generating inline data-uri
versions of graphics, minifying, translating and doing keyword
substitution on the source files to insert version number and so on.

The build is done using the dfbuild.py tool. This requires python. Currently
it will only work in python 2.5 and 2.6, but minimal changes are required to fix this
if necessary. The module depends on the jsminify module for minifying
scripts. This is bundled with dfbuild.
dfbuild lives in the tools directory in the repository.

This is the command line help for dfbuild:

Usage: dfbuild.py [options] source destination

Destination can be either a directory or a zip file

Options:
  -h, --help            show this help message and exit
  -c, --no-concat       Do NOT concatenate script and css
  -l, --no-license      Do NOT append license file to js and css. (license is
                        taken from $cwd/include-license.txt
  -k key=value, --keyword=key=value
                        A key/value pair. All instances of key will be
                        replaced by value in all files. More than one
                        key/value is allowed by adding more -k switches
  -d, --delete          Delete the destination before copying to it. Makes
                        sure that there are no files left over from previous
                        builds. Is destructive!
  -t, --translate       Apply translation changes to the finished build
  -s, --no-string-check
                        Don't check validity of strings before building
  -e, --no-enc-check    Don't check encoding of files before building
  -m, --minify          Minify the sources
  -u, --no-data-uri     Don't generate data URIs for images in css
  -b SET_BASE, --set-base=SET_BASE
                        Set a base url in the document. The value of the
                        setting is the realative root in the destination path.
                        E.g. a the value "app" with the destination "<some
                        loca path>/app/core-2-5" will set the base url to
                        "/app/core-2-5/". The purpose is to ba able to rewrite
                        urls without breaking other urls of the rewritten
                        document, e.g. handling all different core version on
                        the "/app/" path without redirects.




Suitable command line for release builds

pyhton tools/dfbuild.py -l include-license.txt -m -t -s -k "$dfversion$=Dragonfly testversion" -k "$revdate$=<todays datetime>" src build



Running test builds of dragonfly:

Open opera:config#DeveloperTools|DeveloperToolsURL and set the url to the
path to the dragonfly build to use.

Updating translations:

NOTE: While translated strings are placed in the src/ui-strings
directory, that is not the authoritative location for translations.
Strings are kept in Opera's translation infrastructure, which uses .po
files. These are not publicly available.

As a consequence, we can not integrate string fixes from volunteers by
simply merging new versions of the JavaScript string files. The
strings will need to be whetted by the translations team and
integrated into the Opera translation infrastructure.

For those with access to Opera translations, do the following to
update the strings:

- Make sure you have python, and that you have installed polib. polib
  is on pypi.
- Check out the translations
- In the tools directory of the dragonfly repo there is a script
  called po2js.py. Run it as follows:

  python ./tools/po2js.py -d <translations checkout dir> ./src/ui-strings

- If there were new languages added, the language code must be added
  to the list in ./src/client.xml


To submit new strings to translators you need to make a diff between
strings used in dragonfly and the strings that exist in the english.db
file. This is done with the stringdiff.py script in the tools
directory.

- Check out the strings module
- Run stringdiff.py as follows;

  python ./tools/stringdiff.py ./src/ui-strings/en.js <path_to_engish_db>


Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.