#!/usr/bin/env lua5.1 require[[fp]] require[[fptheme]] require[[fpeffects]] require[[fpwidgets]] require[[fpselectorwidgets]] -- Set the background from the theme. bg = fp.image{ style = "background" } -- A predefined set of filenames. This could come from anywhere really, -- such as a database or the network. -- These images are all square. The transform effect only works on square -- images for the time being. filenames = { "icon_AlarmClock.png", "icon_Browser.png", "icon_Camera.png","icon_Email.png", "icon_Gallery.png", "icon_Music.png","icon_Settings.png", "icon_Videos.png", "icon_Calendar.png"} -- Create a FancyPants matrix widget. The matrix is populated with the -- images below. The matrix is a FancyPants selector widget. Selector -- widgets are use as buttons and icons to select an action. matrix = fp.create{ type="matrix", focus=true, w=300, h=300, x=100, y=100 } images = {} for i = 1, #filenames do -- Load the images. It doesn't matter where we place them for now -- as the matrix widget moves them into place. images[i] = fp.image{ file = "data/icon/"..filenames[i], x=0, y=0, w=100, h=100 } matrix:add(images[i]) end -- Create a callback function for the matrix focus event. -- There can be more than one callback for each event so they -- need to be named. matrix.cb.focused.me = function(item) for i = 1, #images do -- We iterate through the images to find which image -- was focussed.and set a bouncer on it if one -- was not yet set. if item == images[i] then if false == images[i]:bouncer_get() then images[i]:bouncer(true) end else images[i]:bouncer(false) end end end -- Initialise the matrix. matrix:current_set(images[3]) -- Set the callback on the click event for the matrix. When clicked once, start -- bouncing, when clicked a second time, stop. -- This is where an action, to be executed when the icon was clicked, could be added. matrix.cb.clicked.me = function(item) if true == item:bouncer_get() then item:bouncer_end() end end -- Start the main loop. fp.begin()