Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
160 lines (150 sloc) 11.4 KB
- Data "name" for the name of the theme
- Data "author" for the author of the theme
- Data "version" for the version of the theme
- Data "description" for the description of the theme
- Data "compatible" for the Eleganz version compatibility
- Main window
- Group "main"
- Part "Eleganz/primary" of type SWALLOW for the primary screen
- Part "Eleganz/secondary_below" of type SWALLOW for the secondary screens (behind primary)
- Part "Eleganz/secondary_above" of type SWALLOW for the secondary screens (above primary)
- Signal handler "Eleganz/primary,set" for when setting the primary screen
- Signal handler "Eleganz/secondary,set" for when setting the secondary screen
- Signal source will be set to "above" or "below"
- Signal handler "Eleganz/primary,unset" for when unsetting the primary screen
- Signal handler "Eleganz/secondary,unset" for when unsetting the secondary screen
- Signal source will be set to "above" or "below"
- Signal "Eleganz/primary,set,end" for when setting the primary screen is done
- Signal "Eleganz/secondary,set,end" for when setting the secondary screen is done
- Signal source must be set to "above" or "below"
- Signal "Eleganz/primary,unset,end" for when unsetting the primary screen is done
- Signal "Eleganz/secondary,unset,end" for when unsetting the secondary screen is done
- Signal source must be set to "above" or "below"
- Main menu group
- Group "Eleganz/menu"
- Data 'category_next' for key event to go to next category
- Data 'category_previous' for key event to go to next category
- Data 'select' for key event to enter category (OPTIONAL)
- Signal handler "Eleganz/menu,init" to start splash screen
- Signal "Eleganz/menu,ready" for when the menu is ready for actions
set to "Up/Down/Right/Left" to represent how the menu should be navigated
- Custom Wallpaper (for games)
- Part "Eleganz/menu/wallpaper" of type IMAGE for the wallpaper/background
- Signal handler "Eleganz/menu/wallpaper,set" for when the custom wallpaper is set
- Signal handler "Eleganz/menu/wallpaper,unset" for when the custom wallpaper is removed
- Menu categories
- Parts "Eleganz/menu/category.before_%d" of type SWALLOW for previous categories
- Part "Eleganz/menu/category.selection" of type SWALLOW for the selected category
- Parts "Eleganz/menu/category.after_%d" of type SWALLOW for next categories
- Signal handler "Eleganz/menu,category_set" for when a category is added
- The source of the signal will be the suffix of the part that was set
- Signal handler "Eleganz/menu,category_unset" for when a category is removed
- The source of the signal will be the suffix of the part that was unset
- Signal handler "Eleganz/menu,category_set,reset" for when a category is valid after a reset
- The source of the signal will be the suffix of the part that was set
- Signal handler "Eleganz/menu,category_unset,reset" for when a category is invalid after a reset
- The source of the signal will be the suffix of the part that was unset
- Signal handler "Eleganz/menu,category_next" for when the user scrolls to the next category
- Signal handler "Eleganz/menu,category_previous" for when the user scrolls the previous category
- Signal handler "Eleganz/menu,category_reset" for resetting the state to all set after a next/previous
- Signal handler "Eleganz/menu,category_error_tail" for when the user tries to seek beyond the end
- Signal handler "Eleganz/menu,category_error_head" for when the user tries to seek before the start
- Signal "Eleganz/menu,category_next,end" for when the animation of a 'next' scroll is finished
- Signal "Eleganz/menu,category_previous,end" for when the animation of a 'previous' scroll is finished
- Signal "Eleganz/menu,category_set,end" for when the set animation is done (not on ",reset")
- Signal "Eleganz/menu,category_unset,end" for when the unset animation is done (not on ",reset")
- "Eleganz/menu/category/*" groups :
- Data 'item_next' for key event to go to next category
- Data 'item_previous' for key event to go to next category
- Data 'select' for key event to select the item
- Signal handler "Eleganz/menu/category,selected" when selecting it
- Signal handler "Eleganz/menu/category,deselected" when deselecting it
- Signal "Eleganz/menu/category,selected,end" when the animation of 'selected' is finished
- Signal "Eleganz/menu/category,deselected,end" when the animation of 'deselected' is finished
- Category Items
- Parts "Eleganz/menu/category/item.before_%d" of type SWALLOW for previous items
- Part "Eleganz/menu/category/item.selection" of type SWALLOW for the selected item
- Parts "Eleganz/menu/category/item.after_%d" of type SWALLOW for next items
- Signal handler "Eleganz/menu/category,item_set" for when an item is added
- The source of the signal will be the suffix of the part that was set
- Signal handler "Eleganz/menu/category,item_unset" for when an item is removed
- The source of the signal will be the suffix of the part that was unset
- Signal handler "Eleganz/menu/category,item_set,reset" for when an item is valid after a reset
- The source of the signal will be the suffix of the part that was set
- Signal handler "Eleganz/menu/category,item_unset,reset" for when an item is invalid after a reset
- The source of the signal will be the suffix of the part that was unset
- Signal handler "Eleganz/menu/category,item_next" for when the user scrolls to the next item
- Signal handler "Eleganz/menu/category,item_previous" for when the user scrolls the previous item
- Signal handler "Eleganz/menu/category,item_reset" for resetting the state to all set after a next/previous
- Signal handler "Eleganz/menu/category,item_error_tail" for when the user tries to seek beyond the end
- Signal handler "Eleganz/menu/category,item_error_head" for when the user tries to seek before the start
- Signal "Eleganz/menu/category,item_next,end" for when the animation of a 'next' scroll is finished
- Signal "Eleganz/menu/category,item_previous,end" for when the animation of a 'previous' scroll is finished
- Accepted Individual Categories
- Group "Eleganz/menu/category/quit" for the settings
- Group "Eleganz/menu/category/settings" for the settings
- Group "Eleganz/menu/category/theme" for the settings
- Group "Eleganz/menu/category/games" for the installed system games
- Group "Eleganz/menu/category/homebrew" for the installed homebrew games
- Group "Eleganz/menu/category/device_homebrew" for the homebrew games on a USB device
- Group "Eleganz/menu/category/device_packages" for the homebrew packages on a USB device
- "Eleganz/menu/item/*" groups :
- Signal handler "Eleganz/menu/item,selected" when selecting it
- Signal handler "Eleganz/menu/item,deselected" when deselecting it
- Individual items
- Group "Eleganz/menu/item/game" for a game item
- Part "Eleganz/menu/item/game/icon" for the game icon
- Part "Eleganz/menu/item/game/title" for the game title
- Group "Eleganz/menu/item/package" for a game item
- Part "Eleganz/menu/item/game/name" for the game package name
- Group "Eleganz/menu/item/theme" for a theme item
- Part "Eleganz/menu/item/theme/name" for the theme name
- Part "Eleganz/menu/item/theme/author" for the theme author
- Part "Eleganz/menu/item/theme/version" for the theme version
- Part "Eleganz/menu/item/theme/description" for the theme description
- Part "Eleganz/menu/item/theme/preview" for the theme preview screen
- Group "Eleganz/menu/item/usb_theme" for a theme item from usb
- same parts as "Eleganz/menu/item/theme"
- Group "Eleganz/menu/item/about"
- Group "Eleganz/menu/item/help"
- Group "Eleganz/menu/item/wallpaper"
- Secondary windows
- Signal handler "Eleganz/secondary,init" to show the screen
- Signal "Eleganz/secondary,ready" for when the screen is shown
- Data "secondary" set to "above" or "below" to determine which screen to swallow
- Group "Eleganz/secondary/game"
- Part "Eleganz/secondary/game/picture" for the game background picture
- Part "Eleganz/secondary/game/icon" for the game icon (optional)
- Part "Eleganz/secondary/game/title" for the game title (optional)
- Group "Eleganz/secondary/dialogbox"
- Part "Eleganz/secondary/dialogbox/message"
- Group "exquisite/theme" for exquisite theme (messages and progress bar)
Behavior :
At first, the "main" group will be created and the "Eleganz/primary" part will be swallowed by the "Eleganz/menu" group.
All swallowed parts from "Eleganz/menu" will be set depending on the available categories at startup .
Then the signal "Eleganz/primary,set" will be sent to the "main" group so it can show the screen, then it should send
the signal "Eleganz/primary,set,end" to notify the app that the animation is done and the primary screen is shown.
Then the signal "Eleganz/menu,init" will be sent to notify the group to start any initialization, then it will wait to receive
the signal "Eleganz/menu,ready" at which point it will send the signal "Eleganz/menu,category_set,reset" and
the signal "Eleganz/menu,category_unset,reset" to the group with the source of the emission set to the part name's suffix
that is set or unset ("before_0" will be sent for part "Eleganz/menu/category.before_0" for example) to reflect that status.
This is to allow you to do an animation or splash screen at bootup. Since non-swallowed parts will appear invisble,
you can assume that all the parts are 'set', until you receive the "Eleganz/menu_category_set,reset" and
"Eleganz/menu/category_unset,reset" signals. Note that these two signals (the ',reset' variants) should be instantenuous, so
the user shouldn't notice that they happened. It will only allow you to have a better animation if later a new category
is added and the "Eleganz/menu/category_set" signal is sent for it.
The item parts of a category will be swallowed then the "Eleganz/menu/category,selected" signal will be sent to the
selected category. You can assume that all are items are 'set' at that point. Once the animation is done, you should
send the "Eleganz/menu/category,selected,end" signal, at which point the "Eleganz/menu/category,item_set,reset"
and "Eleganz/menu/category,item_unset,reset" signals will be sent for each item.
There you go, the menu is finally appearing and you are ready to handle user events!
At this point, the user can either scroll the categories or the items, for both, the behavior is the same, you will
receive the signal "*_next" or "*_previous" to create the scrolling, once you are done, you should send the associated
",end" signal. Eleganz will then send the unswallow and swallow the parts properly to reflect the scroll then it will
send the signal "*_reset" to reset the screen as it should be, and send the "*_set,reset" and "*_unset,reset" signals.
This next,end->swallow->unswallow->reset->set,reset+unset,reset chain of events should happen instantenuously so that the
user does not perceive it and only sees the actual scrolling animation.
In the case of categories, the selected one will also receive a "*,category_unselected" signal and the next/previous one
will receive the "*,category_selected" signal. After the "*,category_selected,end" signal is received, the
"*item_set,reset" and "*item_unset,reset" will be called to put the items in a consistent state.
There will never be a item_set/item_unset or item_set,reset/item_unset,reset signals when the category is not selected.