-
-
Notifications
You must be signed in to change notification settings - Fork 7
/
DESIGN
32 lines (24 loc) · 1.4 KB
/
DESIGN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
The most global class is 'Project'. It is a singleton and keeps project-related data/settings
'Settings' is also a singleton (src/prefs).
==LokalizeMainWindow==
'LokalizeMainWindow' is the main window with multitabs interface.
Uses QMdiArea for tabbing interface, and guiFactory()->addClient()/guiFactory()->removeClient()
to merge actions from tabs (editor, project overview, tm-search tab), and StatusBarProxy to deliver info from tabs.
Tabs are KMainWindows + KXmlGuiCleints.
==Project Overview tab==
Hacks KDirLister to merge contents from two dirs.
uses kdesdk/strigi-analyzer/po to scan translation files
==Editor tab==
'EditorTab' is a dispatcher (controller) for one catalog editing window (tab).
'EditorView' is msgid/msgstr viewer/editor for it.
'MsgCtxtView', 'GlossaryView' and other QDockWidget derivatives provide specialized features.
All specialized actions should go into views (QDockWidgets) or separate classes used from views.
'Catalog' is a controller+proxymodel for CatalogStorage translation files
'CatalogStorage' is interface for different storage models (QVector for gettext, QDom for xliff)
==Translation Memory==
Implemented as series of jobs running in second thread (src/tm/jobs.cpp).
See initDB() for database schema
==Glossary==
SAX parser/generator based. Tries to preserve unknown metadata on saving when possible.
API docs:
http://api.kde.org/4.x-api/kdesdk-apidocs/lokalize/html/annotated.html