58 lines
2.3 KiB
Plaintext
58 lines
2.3 KiB
Plaintext
|
PIKA UI Framework
|
||
|
=================
|
||
|
|
||
|
This document describes how the PIKA UI framework functions and is
|
||
|
implemented. Here, "UI framework" refers to the system that saves the
|
||
|
UI layout between PIKA sessions, i.e. how docks, dockable dialogs etc
|
||
|
are setup.
|
||
|
|
||
|
|
||
|
Key Classes
|
||
|
-----------
|
||
|
|
||
|
PikaDockable - Represents a dockable dialog.
|
||
|
PikaDockbook - A GtkNotebook of PikaDockables
|
||
|
PikaDock - A columns of PikaDockbooks
|
||
|
PikaToolbox - Subclasses PikaDock, contains the toolbox.
|
||
|
Dockables are added at the bottom
|
||
|
PikaMenuDock - Subclasses PikaDock, contains dockables, should
|
||
|
probably be merged with PikaDock. The name
|
||
|
contains "menu" from the time when it hosted the
|
||
|
Image Selection Menu that is now in the
|
||
|
PikaDockWindow
|
||
|
PikaDockColumns - A set of PikaDocks arranged side by side.
|
||
|
PikaDockWindow - A toplevel window containing a PikaDockColumns.
|
||
|
PikaImageWindow - A toplevel window containing images and one
|
||
|
PikaDockColumns to the left and to the right.
|
||
|
PikaDialogFactory - A factory to create and position toplevel windows
|
||
|
PikaSessionInfo - Contains session info for one toplevel
|
||
|
PikaUIConfigurer - Configures the UI when switching between
|
||
|
single-window and multi-window mode
|
||
|
|
||
|
|
||
|
PikaDialogFactory
|
||
|
-----------------
|
||
|
|
||
|
The PikaDialogFactory can be considered to solve two distinct
|
||
|
problems:
|
||
|
|
||
|
1. Create widgets from text, in particular from text in sessionrc
|
||
|
2. Session manage toplevel windows so their position is remembered
|
||
|
across PIKA sessions
|
||
|
|
||
|
One possible design adjustment would be to have PikaWidgetFactory that
|
||
|
takes care of 1), and then have PikaDialogFactory inherit from
|
||
|
GtkWidgetFactory and implementing 2). PikaWidgetFactory could possibly
|
||
|
use GtkBuilder.
|
||
|
|
||
|
|
||
|
sessionrc
|
||
|
---------
|
||
|
When PIKA starts, the sessionrc file is parsed. This step puts
|
||
|
PikaSessionInfo:s into PikaDialogFactories. Later when dialogs are
|
||
|
created, the dialog factory looks up existing session info entries. If
|
||
|
one exists, it uses the session info to set e.g. the position of the
|
||
|
created dialog. If it doesn't exist, it creates a new session info
|
||
|
object for the dialog. When PIKA exists, the current session infos are
|
||
|
then written back to sessionrc.
|