Code:
import sysinfo, e32,graphics
from graphics import *
from appuifw import app
import sysinfo
pane_name={appuifw.EMainPane:u'appuifw.EMainPane',
appuifw.EApplicationWindow:u'appuifw.EApplicationWindow',
appuifw.EStatusPane:u'appuifw.EStatusPane',
appuifw.EScreen:u'appuifw.EScreen',
appuifw.EControlPane:u'appuifw.EControlPane',
appuifw.ESignalPane:u'appuifw.ESignalPane',
appuifw.EContextPane:u'appuifw.EContextPane',
appuifw.ETitlePane:u'appuifw.ETitlePane',
appuifw.EBatteryPane:u'appuifw.EBatteryPane',
appuifw.EUniversalIndicatorPane:u'appuifw.EUniversalIndicatorPane',
appuifw.ENaviPane:u'appuifw.ENaviPane',
appuifw.EFindPane:u'appuifw.EFindPane',
appuifw.EWallpaperPane:u'appuifw.EWallpaperPane',
appuifw.EIndicatorPane:u'appuifw.EIndicatorPane',
appuifw.EAColumn:u'appuifw.EAColumn',
appuifw.EBColumn:u'appuifw.EBColumn',
appuifw.ECColumn:u'appuifw.ECColumn',
appuifw.EDColumn:u'appuifw.EDColumn',
appuifw.EStaconTop:u'appuifw.EStaconTop',
appuifw.EStaconBottom:u'appuifw.EStaconBottom',
appuifw.EStatusPaneBottom:u'appuifw.EStatusPaneBottom',
appuifw.EControlPaneBottom:u'appuifw.EControlPaneBottom',
appuifw.EControlPaneTop:u'appuifw.EControlPaneTop',
appuifw.EStatusPaneTop:u'appuifw.EStatusPaneTop'
}
def exit():
global runz
runz=0
def refresh(rect):
if im:
c.blit(im)
if im_l:
c.blit(im_l)
def pane_display(pane_id):
try:
pane=appuifw.app.layout(pane_id)
except:
appuifw.note(u'ERROR : %s'%pane_name[pane_id],'error',1)
else:
pane_w,pane_h=pane[0]
pane_x,pane_y=pane[1]
pane_pos=(pane_x,pane_y,pane_x+pane_w,pane_y+pane_h)
im.clear((0,255,0))
im.rectangle(pane_pos,fill=(255,0,0))
im_l.clear((0,255,0))
im_l.rectangle(pane_pos,fill=(255,0,0))
def resiz(h1,w1): # BUG must be rect !
if (w1==w) and (h1==h):
appuifw.note(u'Landscape (%d,%d)'%(w1,h1),'info',1)
else:
appuifw.note(u'Portrait (%d,%d)'%(h1,w1),'info',1)
ww,hh=sysinfo.display_pixels()
#appuifw.note(u'(%d,%d)'%(ww,hh),'info',1)
w,h=sysinfo.display_pixels() # in portrait mode !!!
im_l=Image.new((w,h)) # landscape !
im=Image.new((h,w)) # portrait
app.exit_key_handler=exit
app.screen = 'full' # fullscreen
c=appuifw.Canvas(redraw_callback=refresh,resize_callback=resiz)
app.body = c
im.clear((0,255,0))
im_l.clear((0,255,0))
appuifw.app.menu = [(u'Landscape',
(
(u'Stacon Top', lambda : pane_display(appuifw.EStaconTop) ),
(u'Stacon Bottom', lambda : pane_display(appuifw.EStaconBottom)),
(u'Status Pane Bottom', lambda : pane_display(appuifw.EStatusPaneBottom)),
(u'Control Pane Bottom', lambda : pane_display(appuifw.EControlPaneBottom)),
(u'Control Pane Top', lambda : pane_display(appuifw.EControlPaneTop)),
(u'Status Pane Top', lambda : pane_display(appuifw.EStatusPaneTop)),
)
),
(u'Main pane', lambda : pane_display(appuifw.EMainPane)),
(u'Application Window', lambda : pane_display(appuifw.EApplicationWindow)),
(u'Status Pane', lambda : pane_display(appuifw.EStatusPane)),
(u'Screen', lambda : pane_display(appuifw.EScreen)),
(u'Control Pane', lambda : pane_display(appuifw.EControlPane)),
(u'Signal Pane', lambda : pane_display(appuifw.ESignalPane)),
(u'Context Pane', lambda : pane_display(appuifw.EContextPane)),
(u'Title Pane', lambda : pane_display(appuifw.ETitlePane)),
(u'Battery Pane', lambda : pane_display(appuifw.EBatteryPane)),
(u'Universal Indicator Pane', lambda : pane_display(appuifw.EUniversalIndicatorPane)),
(u'Navi Pane', lambda : pane_display(appuifw.ENaviPane)),
(u'Find Pane', lambda : pane_display(appuifw.EFindPane)),
(u'Wallpaper Pane', lambda : pane_display(appuifw.EWallpaperPane)),
(u'Indicator Pane', lambda : pane_display(appuifw.EIndicatorPane)),
(u'A Column', lambda : pane_display(appuifw.EAColumn)),
(u'B Column', lambda : pane_display(appuifw.EBColumn)),
(u'C Column', lambda : pane_display(appuifw.ECColumn)),
(u'D Column', lambda : pane_display(appuifw.EDColumn)),
(u'Exit', exit)]
runz=0
info_edition=e32.s60_version_info
if info_edition==(2,8) or info_edition[0]>=3:
runz=1
else:
appuifw.note(u'Layout is only supported on 2nd Ed FP3 and onwards !','error',1)
while runz:
e32.ao_sleep(0.1)
EDIT