Commit 48741f0b authored by Pedro Castro's avatar Pedro Castro

Importing from git-migration-etc.

parent 509fbb88
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48px"
height="48px"
id="svg1578"
sodipodi:version="0.32"
inkscape:version="0.43"
sodipodi:docbase="/home/sak/wip/gsubtitles"
sodipodi:docname="06icon48x.svg"
inkscape:export-filename="/home/sak/wip/gsubtitles/06icon128x.png"
inkscape:export-xdpi="240"
inkscape:export-ydpi="240">
<defs
id="defs1580">
<linearGradient
inkscape:collect="always"
id="linearGradient2404">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop2406" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop2408" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2404"
id="linearGradient1608"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.355019,0,0,0.355019,344.1661,330.576)"
x1="65.102867"
y1="15.99996"
x2="65.102867"
y2="55.06274" />
<linearGradient
id="linearGradient3147">
<stop
id="stop3149"
offset="0"
style="stop-color:#ffd980;stop-opacity:1;" />
<stop
id="stop3151"
offset="1"
style="stop-color:#ffb200;stop-opacity:1;" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3147"
id="radialGradient1606"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.753552,1.541246e-16,4.547577e-15,0.252113,318.2205,338.372)"
cx="65.102829"
cy="76.848564"
fx="65.102829"
fy="76.848564"
r="50.415974" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3147"
id="radialGradient2612"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.753552,1.541246e-16,4.547577e-15,0.252113,318.2205,338.372)"
cx="65.102829"
cy="76.848564"
fx="65.102829"
fy="76.848564"
r="50.415974" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2404"
id="linearGradient2614"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.355019,0,0,0.355019,344.1661,330.576)"
x1="65.102867"
y1="15.99996"
x2="65.102867"
y2="55.06274" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2404"
id="linearGradient2622"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.415929,0,0,0.415929,-3.320866,-4.060106)"
x1="65.102867"
y1="15.99996"
x2="65.102867"
y2="55.06274" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3147"
id="radialGradient2625"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.882838,1.805676e-16,5.3278e-15,0.295368,-33.71793,5.073446)"
cx="65.102829"
cy="76.848564"
fx="65.102829"
fy="76.848564"
r="50.415974" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2404"
id="linearGradient3658"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.415929,0,0,0.415929,-3.320866,-4.060106)"
x1="65.102867"
y1="15.99996"
x2="65.102867"
y2="55.06274" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3147"
id="radialGradient3661"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.882838,1.805676e-16,5.3278e-15,0.295368,-33.71793,5.073446)"
cx="65.102829"
cy="76.848564"
fx="65.102829"
fy="76.848564"
r="50.415974" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6568542"
inkscape:cx="24"
inkscape:cy="25.428571"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="872"
inkscape:window-height="587"
inkscape:window-x="0"
inkscape:window-y="25" />
<metadata
id="metadata1583">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<path
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.70000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="M 33.544919,30.733466 L 7.4447397,30.733466 C 4.9800397,30.733466 2.9958353,28.749262 2.9958353,26.284574 L 2.9958353,7.9713333 C 2.9958353,5.506645 5.5732285,3.5224406 8.0379168,3.5224406 L 40.069972,3.5224406 C 42.534661,3.5224406 44.518865,5.506645 44.518865,7.9713333 L 44.518865,26.284574 C 44.518865,28.749262 42.534661,30.733466 40.069972,30.733466 L 40.125516,30.825634 C 40.125516,36.068709 27.542151,42.2855 31.436997,38.315732 C 35.331866,34.345988 33.544919,30.733466 33.544919,30.733466 z "
id="path2930"
sodipodi:nodetypes="ccccccccc"
inkscape:export-filename="/home/sak/wip/gsubtitles/path3001.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<path
style="fill:url(#radialGradient3661);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="M 33.544872,30.733419 L 7.4446929,30.733419 C 4.9799929,30.733419 2.9957885,28.749215 2.9957885,26.284527 L 2.9957885,7.9712747 C 2.9957885,5.5065864 5.5731817,3.522382 8.03787,3.522382 L 40.069925,3.522382 C 42.534614,3.522382 44.518818,5.5065864 44.518818,7.9712747 L 44.518818,26.284527 C 44.518818,28.749215 42.534614,30.733419 40.069925,30.733419 L 40.12547,30.825587 C 40.12547,36.068651 27.542104,42.285441 31.43695,38.315685 C 35.331819,34.345929 33.544872,30.733419 33.544872,30.733419 z "
id="path2934"
sodipodi:nodetypes="ccccccccc"
inkscape:export-filename="/home/sak/wip/gsubtitles/path3001.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<path
style="fill:url(#linearGradient3658);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 7.541031,5.5062467 L 39.973564,5.5062467 C 41.243662,5.5062467 42.266149,6.5287452 42.266149,7.7988432 L 42.266149,11.532247 C 42.266149,12.802345 34.097278,14.370115 29.12159,14.656693 C 24.145901,14.94327 5.2484462,12.802345 5.2484462,11.532247 L 5.2484462,7.7988432 C 5.2484462,6.5287452 6.2709447,5.5062467 7.541031,5.5062467 z "
id="path2946"
sodipodi:nodetypes="cccczccc"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
ry="0.065390877"
rx="0.17479347"
y="17.011066"
x="11.071433"
height="1"
width="25.371679"
id="rect2791"
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.08187136;visibility:visible;display:block;overflow:visible"
inkscape:export-filename="/home/sak/wip/gsubtitles/path3001.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
ry="0.065390877"
rx="0.17479347"
y="19.986227"
x="11.071433"
height="1"
width="25.371679"
id="rect2793"
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.08187136;visibility:visible;display:block;overflow:visible"
inkscape:export-filename="/home/sak/wip/gsubtitles/path3001.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
ry="0.065390877"
rx="0.17479347"
y="22.927456"
x="11.071433"
height="1"
width="25.371679"
id="rect2795"
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.08187136;visibility:visible;display:block;overflow:visible"
inkscape:export-filename="/home/sak/wip/gsubtitles/path3001.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
ry="0.065390877"
rx="0.078657083"
y="26.011539"
x="18.048643"
height="1"
width="11.41726"
id="rect2797"
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.08187136;visibility:visible;display:block;overflow:visible"
inkscape:export-filename="/home/sak/wip/gsubtitles/path3001.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
</g>
</svg>
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16px"
height="16px"
id="svg2794"
sodipodi:version="0.32"
inkscape:version="0.44"
sodipodi:docbase="/home/sak/wip/gsubtitles"
sodipodi:docname="set-end_silver16x.svg"
inkscape:export-filename="/mnt/NARCISSUS/Backup/wip/gsubtitles/set-end_silver16x.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs
id="defs2796">
<linearGradient
id="linearGradient3020">
<stop
style="stop-color:white;stop-opacity:0"
offset="0"
id="stop3022" />
<stop
style="stop-color:#d3d7cf;stop-opacity:1;"
offset="1"
id="stop3024" />
</linearGradient>
<linearGradient
id="linearGradient3012">
<stop
style="stop-color:#666;stop-opacity:1;"
offset="0"
id="stop3014" />
<stop
style="stop-color:#666;stop-opacity:0;"
offset="1"
id="stop3016" />
</linearGradient>
<linearGradient
id="linearGradient8650"
inkscape:collect="always">
<stop
id="stop8652"
offset="0"
style="stop-color:#ffffff;stop-opacity:1;" />
<stop
id="stop8654"
offset="1"
style="stop-color:#ffffff;stop-opacity:0;" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient8650"
id="radialGradient2789"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.683969,0,0,0.377577,-5.911472,2.331948)"
cx="18.968266"
cy="3.0045178"
fx="18.968266"
fy="3.0045178"
r="17.171415" />
<linearGradient
id="linearGradient1428">
<stop
id="stop1430"
offset="0"
style="stop-color:white;stop-opacity:1;" />
<stop
id="stop1432"
offset="1"
style="stop-color:#d3d7cf;stop-opacity:1;" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient1428"
id="radialGradient2792"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.324514,0,0,0.249804,0.98805,3.624881)"
cx="26.789845"
cy="25.445641"
fx="26.789845"
fy="25.445641"
r="16.9562" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3012"
id="linearGradient3018"
x1="9.0515766"
y1="1.9304608"
x2="9.0515766"
y2="10.90099"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.197802"
inkscape:cx="10.80242"
inkscape:cy="8"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="914"
inkscape:window-height="627"
inkscape:window-x="260"
inkscape:window-y="106" />
<metadata
id="metadata2799">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<path
style="color:black;fill:url(#radialGradient2792);fill-opacity:1;fill-rule:evenodd;stroke:#666;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
d="M 15.233846,3.2759584 L 13.860747,3.2759584 L 13.860747,8.330381 L 7.844297,3.2864014 L 7.823411,6.6177257 L 3.5,6.6177257 L 3.5,9.5 L 7.823411,9.5 L 13.860747,9.5 L 15.233846,9.5 L 15.233846,3.2759584 z "
id="path18242"
sodipodi:nodetypes="ccccccccccc" />
<path
style="color:black;fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:#666;stroke-width:0.8334471;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
d="M 1.6508409,6.589929 L 0.41672355,6.589929 L 0.41672355,9.5832765 L 1.6508409,9.5832765 L 1.6508409,6.589929 z "
id="path2887"
sodipodi:nodetypes="ccccc" />
<rect
style="opacity:0.481;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:0.373;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2885"
width="2.3514626"
height="0.82521343"
x="6.9121523"
y="-1.4457459"
transform="matrix(0,1,-1,0,0,0)" />
<rect
style="opacity:0.481;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.25232241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2818"
width="5.6165733"
height="0.75274175"
x="3.5520682"
y="-14.958988"
transform="matrix(0,1,-1,0,0,0)" />
<path
style="opacity:0.48128339;color:black;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:0.31788829;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
d="M 4.1715145,7.2658376 L 4.1715145,8.8861043 L 8.2051589,8.8861043 L 13.544029,8.8861043 L 8.4232698,4.6094392 L 8.4232698,7.2658376 L 4.1715145,7.2658376 z "
id="path8658"
sodipodi:nodetypes="ccccccc" />
<rect
style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:0.373;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.50273222"
id="rect2842"
width="5.2459202"
height="0.71967113"
x="3.5676582"
y="-14.906093"
transform="matrix(0,1,-1,0,0,0)" />
</g>
</svg>
Gnome Subtitles
=============================
http://gnome-subtitles.sf.net
RELEASE PROCEDURE
=================
1. Revise base project files
2. Set shell variables
3. Copy SubLib
4. Create source package
5. Commit changes and tag
6. Create screenshots
7. Release sources
8. Update websites
9. Notify
10. Packages
1. Revise base project files
============================
- CREDITS
- README
- NEWS
- TODO
- configure.ac: ACINIT
- ChangeLog using svn2log:
svn log -v --xml http://svn.gnome.org/svn/gnome-subtitles/trunk | svn2log.py -s -O -H -p '/(branches/[^/]+|trunk)/' -o ChangeLog
- po ChangeLog using svn2log:
svn log -v --xml http://svn.gnome.org/svn/gnome-subtitles/trunk/po | svn2log.py -s -O -H -p '/(branches/[^/]+|trunk)/' -o po/ChangeLog
2. Set shell variables
======================
- GS_VERSION="0.X"
3. Copy SubLib
==============
- Extract the latest SubLib sources to the project dir
- Delete all files inside sublib/docs
4. Create source package
========================
- Autogen autotools files with:
autogen.sh
- Package with:
make dist
- Test package with:
tar xzf gnome-subtitles-$GS_VERSION.tar.gz && cd gnome-subtitles-$GS_VERSION && ./configure && make
make check
5. Commit changes and tag
=========================
- Commit changes for the release
- Tag the release with:
svn copy svn+ssh://pcastro@svn.gnome.org/svn/gnome-subtitles/trunk svn+ssh://pcastro@svn.gnome.org/svn/gnome-subtitles/tags/gnome-subtitles-$GS_VERSION -m "Tagging the $GS_VERSION release."
- Check new version in:
http://svn.gnome.org/viewcvs/gnome-subtitles/tags
6. Create Screenshots
=====================
- Screenshots are to be created for the windows or dialogs that have changed
- Create screenshots with:
gnome-screenshot --window --include-border --delay=5 --border-effect=shadow
- Flatten images with white background
- Screenshots for sf.net project page:
- Rescale to maximum 640x480 with cubic method
- Sharpen with a factor of 25
7. Release sources
===================
- Add to File Release System in Sourceforge
- Verify integrity
- Build the source package using the "Test package with" commands above
8. Update websites
==================
- Gnome Subtitles website:
About
Download
Screenshots
- Sourceforge project page:
Summary
Screenshots
- Freshmeat project page
Release
Project info
Screenshot
- Gnome Files page
New release
Project info
- Gnome Bugzilla
Add new version
9. Notify
=========
- Gnome Subtitles News
- Update the Sourceforge project news
- Send Email Release Notice in the File Release System
- Send mail to the Gnome Announce mailing list
- Send mail to the Gnome Subtitles mailing list
10. Packages
============
- Make changes to the Gentoo ebuild
- Notify packagers
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
<TITLE></TITLE>
<META NAME="GENERATOR" CONTENT="OpenOffice.org 2.0 (Linux)">
<META NAME="CREATED" CONTENT="20061011;23522100">
<META NAME="CHANGED" CONTENT="20061023;1322200">
<STYLE>
<!--
@page { size: 21cm 29.7cm; margin: 2cm }
P { margin-bottom: 0.21cm }
H1.heading-2-western { font-family: "Times New Roman", serif; font-size: 18pt }
H1.heading-2-cjk { font-family: "Bitstream Vera Sans"; font-size: 18pt }
H1.heading-2-ctl { font-family: "Andale Sans UI"; font-size: 18pt }
-->
</STYLE>
</HEAD>
<BODY LANG="en-IE" DIR="LTR">
<H1 ALIGN=CENTER>Gnome Subtitles Architecture</H1>
<P ALIGN=LEFT>Contents:</P>
<UL>
<LI><P ALIGN=LEFT><A HREF="#TheGui">The GUI</A></P>
<LI><P ALIGN=LEFT><A HREF="#TheCore">The Core</A></P>
<LI><P ALIGN=LEFT><A HREF="#TheDialogs">The Dialogs</A></P>
<LI><P ALIGN=LEFT><A HREF="#Conclusion">Conclusion</A></P>
</UL>
<H1 CLASS="heading-2-western"><A NAME="TheGui"></A>The GUI</H1>
<P>Because a picture's worth a thousand words, i'll start with one.</P>
<P><IMG SRC="architecture.mainwindow.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=702 HEIGHT=541 BORDER=0>
</P>
<P>As you can see, there are 3 main areas of relevance here:</P>
<UL>
<LI><P><B>Menus.cs</B> – Handles all menus and toolbar operations,
like setting the sensitivity for example.</P>
<LI><P><B>SubtitleView.cs</B> – Handles the TreeView with the list
of subtitles. The inherent model of the TreeView is the Subtitles
class (Subtitles.cs).
</P>
<LI><P><B>SubtitleEdit.cs</B> – Contains a TextView and the timing
SpinButtons which relate to the currently selected subtitle.</P>
</UL>
<P><BR><BR>
</P>
<H1 CLASS="heading-2-western"><A NAME="TheCore"></A>The Core</H1>
<P>The top class of the entire interface is GUI (GUI.cs). This class
contains the 3 parts of the window just described and a very
important class in the whole program - the application core:</P>
<UL>
<LI><P><B>ApplicationCore.cs</B> – Centralizes a set of variables
to be used throught the program. The most important are references
to the current timing mode being used (frames or times), the
subtitles (Subtitles.cs), the event handlers (EventHandlers.cs), the
command manager (CommandManager.cs) that performs undo/redo
operations, and the clipboards (Clipboards.cs). We'll get to these
soon.</P>
</UL>
<P>One thing to keep in mind about Gnome Subtitles is that it uses
SubLib as the backend. So, any methods to handle subtitles aren't
implemented in Gnome Subtitles. In Gnome Subtitles, we handle the
interface. SubLib is changed at request to include more features. The
communication is easy because its lead developer is Gnome Subtitles'
lead developer too. The SubLib's API is available at
<A HREF="http://sublib.sf.net/api">http://sublib.sf.net/api</A>.</P>
<P>In Gnome Subtitles, the Subtitles class is used to call SubLib's
methods:</P>
<UL>
<LI><P><B>Subtitles.cs</B> extends SubLib.Subtitles and so all
SubLib's methods are called in Subtitles.cs. The Subtitles class is
also the model used in the TreeView (SubtitleView.cs).</P>
</UL>
<P>Now, let's refer other important files of Gnome Subtitles, in
alphabetical order:</P>
<UL>
<LI><P><B>Clipboards.cs</B> – handles the Primary and Secondary
clipboards. The primary is the one used in copy/cut/paste. The
secondary is the one used when you select text and paste it with the
middle mouse button.</P>
<LI><P><B>CommandManager.cs</B>: Manages commands. A command is an
operation that changes subtitles, like adding text or changing a
time, and is used in undo/redo. It stores the old value of the bits
of subtitles it will change so they can be reverted on an undo. This
file also contains the base Command classes, to be used when
creating commands. Basically, when implementing a new feature, one
has to write a NewFeatureCommand class that extends a base Command
class. The available base commands are:</P>
<UL>
<LI><P><I>Command</I> – The most basic of them all.</P>
<LI><P><I>MultipleSelectionCommand</I> – A command applied to
(possibly) multiple selected subtitles. It automatically stores the
selected subtitles when the command was ran and contains methods to
select the subtitles and scroll to the selection. To implement a
command like this one (e.g. The time shift command), you only have
to override the ChangeValues method to shift the timings of the
subtitles, the rest is already done for you.</P>
<LI><P><I>SingleSelectionCommand</I> – A command applied to a
single subtitle. As the previous, it automatically handles subtitle
selection and scrolling. You only have to override the ChangeValues
method to do the actual job of changing the subtitle.</P>