Overall Structure
CLD Developer's Guide
Organization into modules
The module seal.app can be considered to belong to CLD. All
other CLD modules are within the package seal.cld.
- Toplevel: seal.cld.ui.__init__
- Infrastructure: seal.cld.ui.file
- seal.cld.file
- seal.cld.permissions
- seal.cld.pool
- seal.cld.writer
- Corpus: seal.cld.ui.corpus
- seal.cld.corpus
- seal.cld.ui.users
- seal.cld.users
- Language: seal.cld.ui.language
- Text and page: seal.cld.ui.text
- seal.cld.text
- seal.cld.ui.toc
- seal.cld.toc
- seal.cld.ui.page
- seal.cld.page
- Word: seal.cld.rom
- Tokenized text: seal.cld.token
- Lexicon: seal.cld.ui.lexicon
- seal.cld.lexicon
- seal.cld.sim
- Concordance: seal.cld.ui.conc
- Audio: seal.cld.ui.media
- seal.cld.media
- seal.cld.ui.audio
- seal.cld.audio
- seal.script.clips
- Video: seal.cld.ui.video
- Drill: seal.cld.ui.course
- seal.cld.course
- seal.cld.drill
- Defunct: seal.cld.old_lexicon
Organization by URL
The most natural starting point for examining code
is often the URL that you use to reach a page. Each page is generated
by a particular method of an HTML directory instance. The page
connects to other pieces of source code:
there may be Javascript code associated with the page, placing
callbacks to the HTML directory; and the HTML directory
is generally associated with one or more disk objects.
The quickest way to determine the page and directory associated with a
URL is to run a query in python (\S\ref{seal.script.cld.sec:running}).
For example, in the directory \verb|~/git/cld|, do:
\begin{myverb}
>>> from seal.cld.app import App
>>> app = App('test.cfg')
>>> app('/langs/lang.oji/texts/text.7/page/xscript/edit.0')
<HtmlPage Media 33>
>>> page = _
\end{myverb}
From the page, one can get the parent (and determine its class):
\begin{myverb}
>>> page.__parent__
<seal.cld.ui.media.Transcriber object at 0x10bde84a8>
\end{myverb}
One can also determine the name that was used to access the page:
\begin{myverb}
>>> page.__file__.name
'edit.0'
\end{myverb}
The last directory component of the URL pathname (``{\tt xscript},''
in our example) often determines a unique directory class. The
following table lists the associations.
\begin{tabbing}mmmmmmmmm\=\kill
{\tt /}\>{\tt CorpusEditor} \S\ref{CorpusEditor:sec}\\
{\tt users}\>{\tt GroupsEditor}\\
{\tt langs}\>{\tt LanguageListEditor} \S\ref{LanguageListEditor:sec}\\
{\tt lgsel}\>{\tt LanguageSelector}\\
{\tt lang.}{\it name\/}\>{\tt LanguageEditor} \S\ref{LanguageEditor:sec}\\
{\tt texts}\>{\tt TocEditor} \S\ref{TocEditor:sec}\\
{\tt text.}{\it id\/}\>{\tt TextEditor} \S\ref{TextEditor:sec}\\
{\tt page}\>{\tt PageEditor} \S\ref{PageEditor:sec}\\
{\tt xscript}\>{\tt Transcriber} \S\ref{Transcriber:sec}
\end{tabbing}
The following provides an overview of the interface pages. The names
are classes within {\tt seal.cld.ui}, and the arguments are classes
within {\tt seal.cld}.
\begin{tt}
\begin{tabbing}mm\=mm\=mm\=\kill
CorpusEditor(corpus:Corpus)\\
\>corpora: CorpusListEditor(contents:CorpusList)\\
\>\>lang: LanguageEditor(lang:Language)\\
\>\>\>text: TextEditor
\end{tabbing}
\end{tt}
\begin{tabbing}mmmmmmmmm\=mmmmmmmmm\=\kill
{\tt langs}
\>{\tt LanguageListEditor}({\tt contents}: {\tt LanguageList})\\
\>{\it Search\/} \>\ra\ {\tt langs/search}\\
\>{\it Ojibwa\/} \>\ra\ {\tt lang.oji}\\[2ex]
{\tt lgsel}
\>{\tt LanguageSelector}({\tt langlist}: {\tt LanguageList})\\[2ex]
{\tt lang.}$\ell$
\>{\tt LanguageEditor}({\tt lang}: {\tt Language})\\
\>{\it Texts\/} \>\ra\ {\tt texts}\\
\>{\it Lexicon\/} \>\ra\ {\tt lexicon}\\[2ex]
{\tt texts}, {\tt text.}$i$
\>{\tt TextEditor}({\tt text}: {\tt Text})\\
\>{\it Redirect\/} \>\ra\ {\tt toc}, {\tt page}, {\tt stub}\\[2ex]
{\tt toc}
\>{\tt TocEditor}({\tt toc}: {\tt Toc})\\
\>{\it Noodin Lessons\/} \>\ra\ {\tt ../text.26}\\[2ex]
{\tt page}
\>{\tt PageEditor}({\tt page}: {\tt Page})\\
\>[{\tt PlainTextPanel}]\\
\>{\it click\/} \>\ra\ {\tt igt}\\[2ex]
{\tt igt}
\>{\tt IGTEditor}\\
\>[{\tt IGTEditor}, {\tt LexentViewer}]\\
\end{tabbing}