summaryrefslogtreecommitdiffstats
path: root/src/DESIGN
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-10 01:02:50 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-10 01:02:50 +0000
commitc66249b79aa9bfa0924494adcd5345b5b1244b0c (patch)
tree19a77c57cc41d8b522554fbde0c36d6f20d7dc7b /src/DESIGN
downloadgwenview-c66249b79aa9bfa0924494adcd5345b5b1244b0c.tar.gz
gwenview-c66249b79aa9bfa0924494adcd5345b5b1244b0c.zip
Added old abandoned KDE3 version of gwenview
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/gwenview@1088034 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'src/DESIGN')
-rw-r--r--src/DESIGN142
1 files changed, 142 insertions, 0 deletions
diff --git a/src/DESIGN b/src/DESIGN
new file mode 100644
index 0000000..fcb0e3f
--- /dev/null
+++ b/src/DESIGN
@@ -0,0 +1,142 @@
+# Folders
+
+Here is a description of each folder:
+
+* app/
+ Code specific to the standalone application (== not the KParts)
+
+* desktopfiles/
+ Desktop files, to start the standalone application, from the menu and from
+ within Konqueror.
+
+* doc/
+ Man page. This is not the HTML doc. The HTML doc is in
+ extragear/graphics/doc/gwenview.
+
+* gvcore/
+ Code shared between the application and the KParts.
+
+* gvdirpart/
+ The Gwenview KPart used to browse folders.
+
+* gvimagepart/
+ The Gwenview KPart to display images.
+
+* imageutils/
+ Various image code, like rotation (lossless for JPEG, classic for others),
+ scaling...
+
+* pics/
+ Icons.
+
+* spec/
+ .spec files to build RPM (probably outdated)
+
+* tools/
+ Desktop files describing external tools.
+
+* tsthread/
+ A thread library written by Lubos Lunak.
+
+* updates/
+ Update scripts to migrate configuration files within versions.
+
+
+# Code
+
+In this part we describe the main classes, not getting too deeply into details
+so that this document doesn't get obsoleted too fast :-)
+
+
+## gvcore
+### Document classes
+document.h
+document*impl.h
+
+This is the heart of Gwenview. The Document class represents a media file. It
+uses the "State" design pattern to adapt its behavior depending on its state.
+The various states are implemented in the Document*Impl classes.
+It knows how to load, save, edit a comment, rotate and mirror a document.
+
+
+### Image loader and cache
+imageloader.h
+cache.h
+
+Image loading is done by the ImageLoader classes, which work together with the
+cache to avoid loading an image multiple times.
+A loader may be shared, for example if an image is selected and a thumbnail of
+it is being generated, the same loader will be used by both.
+
+
+### File views
+fileviewcontroller.h
+filedetailview*.h
+filethumbnailview*.h
+fileviewbase.h
+
+The main class is FileViewController, which contains the KDirLister responsible
+for listing folder content. It also contains a QWidgetStack which contains
+both the FileDetailView and the FileThumbnailView.
+FileViewBase is an abstract class, which inherits from KFileView and adds the
+concept of a "shown item": the item currently viewed in the image view.
+
+
+### Image view
+imageview.h
+imageviewtools.h
+
+The ImageView class inherits from QScrollView to show the current image. It
+implements zooming and panning.
+The ImageViewTools implements the different behaviors: for example when you
+use the mouse wheel you will scroll (or browse): This is implemented by the
+ImageView::ScrollTool class. If you press Ctrl and use the mouse wheel, you
+will zoom in the image: This is implemented by the ImageView::ZoomTool.
+
+
+### ImageViewController
+
+ImageViewController contains a stack which contains an ImageView and a KPart.
+The ImageView class is used to show raster images. For SVG images and movies,
+the ImageViewController loads the corresponding KPart.
+
+
+### File operations
+fileoperation.h
+fileopobject.h
+
+These classes implements file operations: from the user interface to the actual
+operation.
+
+
+## app
+
+### Main window
+mainwindow.h
+
+The MainWindow class is responsible for gluing together all components of the
+application. It is made of a QWidgetStack which contains two pages: one for
+the docked windows (==Browse mode) and another for the ImageViewController
+(==View and Fullscreen modes).
+There is only one instance of ImageViewController. It is 'reparent'ed when the
+QWidgetStack switch between modes.
+
+
+### Folder view
+dirviewcontroller.h
+vtabwidget.h
+bookmarkviewcontroller.h
+treeview.h
+
+These classes implement the folder view. The main class is DirViewController.
+It contains a VTabWidget, which contains an instance of the
+BoookmarkViewController and TreeView classes.
+
+
+## gvdirpart
+
+This KPart is made of a splitter, a FileThumbnailView and an ImageView.
+
+## gvimagepart
+
+This KPart is simply an ImageView.