1 # DCP-o-matic development notes
3 This file collects a few notes relevant to DCP-o-matic developers. There is also some information
4 [on the web site](https://dcpomatic.com/development).
9 The main dcpomatic repo has the following branches:
11 * `main` - the main development branch; contains 2.16.x versions
12 * `v2.17.x` - development branch for v2.17.x versions; periodically rebased onto `main`
14 The `test/data` submodule has the following branches:
16 * `v2.16.x` - branch for use with v2.16.x versions
17 * `v2.18.x` - branch for use with v2.17.x versions (as will become v2.18.x)
20 ## Player stress testing
22 If you configure DCP-o-matic with `--enable-player-stress-test` you can make a script which
23 will run and manipulate the player in predictable ways. The script is a series of commands
24 read line-by-line, and each line can be one of:
28 Open a DCP, for example
30 ```O /home/carl/DCP/MyTestDCP```
34 Start playing the currently-loaded DCP.
36 * `W <time-in-milliseconds>`
38 Wait for approximately the given time before carrying on, for example
42 to wait for 14 seconds.
46 Stop any current playback.
50 Seek to some point in the current DCP, where 0 is the start and 4095 is the end; for example
54 seeks half-way through the DCP.
58 Stops playback and closes the player.
60 The script can be run using something like
62 ```dcpomatic2_player -s stress```
64 to load a script file called `stress` and start executing it.
67 ## Adding a new language
69 - Edit `src/wx/config_dialog.cc` to add the language to languages.
70 - Add to `platform/windows/wscript`, `platform/osx/make_dmg.sh`, `cscript`.
72 - cp build/src/lib/libdcpomatic.pot src/lib/po/$LANG.po
73 - cp build/src/wx/libdcpomatic-wx.pot src/wx/po/$LANG.po
74 - cp build/src/tools/libdcpomatic-wx.pot src/tools/po/$LANG.po
75 - sed -i "s/CHARSET/UTF-8/" src/{lib,wx,tools}/po/$LANG.po
77 - Add credit to `src/wx/about_dialog.cc` and database.
78 - Add to `i18n.php` on website and `update-i18n-stats` script, then run `update-i18n-stats` script.
81 ## Taking screenshots for the manual
83 The manual PDF looks nice if vector screenshots are used. These can be taken as follows:
85 - Build `gtk-vector-screenshot.git` (using meson/ninja)
86 - Copy `libgtk-vector-screenshot.so` to `/usr/local/lib/gtk-3.0/modules/`
87 - Run DCP-o-matic using `run/dcpomatic --screenshot`
88 - Start `take-vector-screenshot`, click "Take screenshot" then click on the DCP-o-matic window.
89 - Find a PDF in `/tmp/dcpomatic2.pdf`
90 - Copy this to `doc/manual/raw-screenshots`