Kuwanger.net

Unofficial Pogoshell v2.x Themes

There are many aspects to a Pogoshell theme. Along with providing the very foundation for the display of Pogoshell, there is a certain level of flexibility on just what is displayed and how. This is especially true in my unofficial fork, which includes some incompatibilities with earlier versions to extend the possible. This is an attempt to provide a complete guide on exactly what is necessary and possible with Pogoshell themes. So, please read through this if you're interested in creating your own Pogoshell theme.

Manditory And Optional

The first thing to mention is that there are a list of elements that are absolutely manditory in any Pogoshell theme. There are also manditory files necessary for Pogoshell's various built-in plugins, but they're not listed here. An important thing to always remember is to include all files you need that aren't in the standard distribution.

Elements

Each named element in a Pogoshell theme corresponds to a predefined component of the GUI. While most are optional, some optional elements predicate the need to include other optional components. Here is a run down of what each element requires and what function it performs.

Available Elements
NAMETypeDescription
rootTRICONTAINERThe root of each theme. This contains as manditory CHILD0 as "title" and CHILD1 as "list". CHILD2 can be optionally "status".
titleTEXTBARThe main titlebar of Pogoshell.
listLISTVIEWThe main list of Pogoshell.
statusTEXTBARThe optional main status bar of Pogoshell.
msgboxTRICONTAINERThe optional message box for displaying questions or helpful information. CHILD0 is optionally mtitle. CHILD1 is manditorily mflow.
mtitleTEXTBARThe title bar of the optional message box.
mflowTEXTFLOWThe text area for the optional message box. Note, including of msgbox makes this manditory. Also note, some attributes of mflow's TEXTFLOW are made into an automatically generated listview also associated with msgbox.
dlgboxTRICONTAINERThe optional dialog box for displaying the Please wait... message. If this is excluded, list is used to display the Please wait... message instead. CHILD0 is optional dtitle. CHILD1 is manditorily dflow.
dtitleTEXTBARThe title bar for the optional dialog box.
dflowTEXTFLOWThe text area for the optional dialog box. Notw, including of dlgbox makes this manditory. Also note, some attributes are ignored (specifically, COLOR2 and COLOR3).
jpgviewerTYPEFACEThe typeface used for the zoom display in the [encrypted] jpeg viewer. If left unspecified, cnokia.font is used.
textnormalTYPEFACEThe typeface used for textreader's normal text. If left unspecified, dungeon.font is used.
textboldTYPEFACEThe typeface used for textreader's bold text. If left unspecified, dungeon.font is used with the BOLD attribute set.
textemphTYPEFACEThe typeface used for textreader's emphasis text. If left unspecified, dungeon.font is used.
textbigTYPEFACEThe typeface used for textreader's big text. If left unspecified, dungeon12.font is used.

Types

There are several types that form the widget set for Pogoshell. Along with having specific properties, many have several configurable attributes that can greatly effect their appearance.

TRICONTAINER

A vertically stacked container of up to three sub widgets.

TEXTBAR

A horizontal bar of text. This will be horizontally truncated to fit the available space.

TEXTFLOW

A horizontal flow of text that will spill onto successive lines if not enough space is available. Note, some attributes (COLOR2 and COLOR3) are overloaded for the use of "mflow".

LISTVIEW

Used to provide a list of selectable items. This and SCROLLBAR are the only types that don't ignore the alpha attribute of colors.

ICONSET

Optionally provides the icons to be used with Pogoshell.

BACKDROP

Used to provide the backdrop for many widgets. This is rather useful for skinning purposes.

SCROLLBAR

Provides the scrollbar for listview.

TYPEFACE

Provides a further qualified character representation. In short, BITMAP : BACKDROP :: FONT : TYPEFACE. This will replace FONT in other widgets in future versions, probably.

Color Alphas

Both LISTVIEW and SCROLLBAR offer attributes that include support for alpha colors. Alpha colors occupy the space in other color formats which would normally contain the alpha channel. In Pogoshell themes, however, this channel is used as a means of providing a variety of color options. First, this is the format of the color option with alpha: $AARRGGBB; without alpha, it is: $RRGGBB. AA specifies the "alpha channel". RR, GG, and BB specify the red, green, and blue channels respectively. Here is a simple table on the "alpha channel" and its effects.

Alpha Effects
Alpha Value Effect
0x00 - 0x7A $RRGGBB is used directly.
0x7B - 0x7F $RRGGBB is added to the background. Before adding, the backdrop color is shifted downward (once for 0x7F, twice for 0x7E, ..., five times for 0x7B). 0x7B is equivalent to 0x00-0x7A. Each channel maxes out at 0xFF.
0x81 - 0x85 $RRGGBB is added to the background. Before adding, the $RRGGB color is shifted downward (once for 0x81, twice for 0x82, ..., five times for 0x85). 0x85 is equivalent to $FF000000. Each channel maxes out at 0xFF.
0x80, 0x86-0xFD $RRGGBB and the background are averaged.
0xFE $RRGGBB is subtracted from the background. Each channel minimals out at 0x00.
0xFF $RRGGBB is added to the background. Each channel maxes out at 0xFF.

Gradient Bar

The gradient bar is a line used to represent, in color, all files in the current folder. With properly defined file assocation colors, this can be used to at a vaguely know the contents of a folder. File assocation colors are specifed in the form $RRGGBB in the pogo.cfg file, after the saver option (if present) but before the description (if present). Specifying a zero width gradient bar causes the gradient bar to not be displayed.

Syntax Tree

Links

Projects

Gameboy Advance

GamePark 32

Python

DOS

Other Things

Kuwanger.net - Sort of like stag beetles in tubes.