pmenu.tpl

来自「在手机操作系统symbina上使用的一个脚本扩展语言的代码实现,可以参考用于自己」· TPL 代码 · 共 361 行

TPL
361
字号
REM pMenu.tpl
REM EPOC OPL interactive test code for menus.
REM Copyright (c) 1991-2000 Symbian Ltd. All rights reserved.

INCLUDE "const.oph"
INCLUDE "hUtils.oph"

DECLARE EXTERNAL
EXTERNAL pMenu:
EXTERNAL Reset:
EXTERNAL pMenuTest:
EXTERNAL tCasc:
EXTERNAL tCascMenu%:
EXTERNAL tDim:
EXTERNAL tDimMenu%:
EXTERNAL tCheck:
EXTERNAL tCheckboxMenu%:
EXTERNAL tOption:
EXTERNAL tOptionMenu%:
EXTERNAL tCombo:
EXTERNAL tComboMenu%:
EXTERNAL tInvalidShortCuts%:
EXTERNAL tTooWide%:

PROC Standalone:
	REM Main procedure called when not running inside test harness.
	LOADM KhUtils$
	hLink:("pMenu", hThreadIdFromOplDoc&:, KhUserLoggingOnly%)
	REM After standalone completion, control returns here.
	dINIT "Interactive tests complete" :DIALOG
ENDP


PROC pMenu:
	REM Comment the following line to let the harness trap and process
	REM any errors RAISEd by this program.
	rem hInitTestHarness:(KhInitLocalErrorHandling%, KhInitNotUsed%)
	hCall%:("pMenuTest")
	hSpoofSetFlagTargetApp%:(CMD$(1),KhDeleteFlag%)
rem	hCleanUp%:("Reset")
ENDP


PROC Reset:
	rem Any clean-up code here.
ENDP


PROC pMenuTest:
	tCasc:
	tDim:
	tCheck:
	tOption:
	tCombo:	
	tInvalidShortCuts%:
	tTooWide%:
ENDP


PROC tCasc:
	PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT
	PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT 

	REM Default.
	PRINT :PRINT "Default menu selection -- choose File | New"
	IF tCascMenu%:<>%n :RAISE 1 :ENDIF
	REM This also tested the run-time tests of:
	REM Unused casc ignored.
	REM Shortcut on casc.

	REM Normal.
	PRINT :PRINT "Normal menu selection -- choose File | Open"
	IF tCascMenu%:<>%o :RAISE 2 :ENDIF

	REM Cascade.
	PRINT :PRINT "Cascaded selection -- choose Edit | Find | Replace"
	IF tCascMenu%:<>%r :RAISE 3 :ENDIF

	REM Cascade with extra chevron.
	PRINT :PRINT "Casc with extra > -- choose Tests | Extra> | Dummy2"
	IF tCascMenu%:<>%d :RAISE 4 :ENDIF

	REM Choice with no shortcut.
	PRINT :PRINT "No shortcut -- choose Tests | NoShortcut"
	IF tCascMenu%:<>26 :RAISE 5 :ENDIF


REM Negative tests.

	REM Cascade with missing chevon is not displayed.
	PRINT :PRINT "Casc with missing > -- attempt to choose File | MissingChevron | Dummy3"
	IF tCascMenu%:<>%x :RAISE 6 :ENDIF	

REM Error tests:
REM Now handled by pMenuA.tpl
ENDP


PROC tDim:
	CLS
	PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT
	PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT 

	REM Default.
	PRINT :PRINT "Dimmed menu selection -- attempt to choose File | New"
	PRINT "Dimmed cascade selection -- and attempt to choose File | More> | Save"
	PRINT "Exit the test -- finally, choose File | Exit"
	IF tDimMenu%:<>%e :RAISE 20 :ENDIF
ENDP


PROC tCascMenu%:
	LOCAL m%
	mInit
	mCasc "More","Save",%s,"Export",%e,"Import",%i
	mCasc "Printing","Page Setup",%u,"Print Preview",%w,"Print",%p
	mCasc "Find","Find Next",%t,"Replace",%r,"Go to",%g
	REM This isn't used.
	mCasc "NotUsed", "Dummy5",24, "Dummy6",25
	REM This won't get displayed.
	mCasc "MissingChevron","Dummy3",22, "Dummy4",23
	mCard "File","New",%n,"Open",%o, "MissingChevron",21,"More>",16,"Printing>",17,"Close",%e
	mCard "Edit","Cut",%x,"Copy",%c,"Paste",%v,"Find>",18
	mCasc "Extra>","Dummy1",21,"Dummy2",%d
	mCasc "ShortcutCasc","Dummy7",28,"Dummy8",29
	mCard "Tests","Extra>>",19, "NoShortcut",26, "ShortcutCasc>",%z
	m%=MENU
	RETURN m%
ENDP


PROC tDimMenu%:
	LOCAL m%
	mInit
	mCasc "More","Save",%s,"Export",%e OR KMenuDimmed%,"Import",%i
	mCasc "Printing","Page Setup",%g,"Print Preview",%v,"Print",%p OR KMenuDimmed%
	mCasc "Find","Find Next",%n OR KMenuDimmed%,"Replace",%n,"Go to",%t
	mCard "File","New",%n OR KMenuDimmed%,"Open",%o,"More>",16 OR KMenuDimmed%,"Printing>",17,"Close",%e
	mCard "Edit","Cut",%x,"Copy",%c OR KMenuDimmed%,"Paste",%v,"Find>",18
	m%=MENU
	rem print "keycode=$";hex$(m%);"('";chr$(m% and $ff);"')"
	RETURN m%
ENDP


PROC tCheck:
	PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT 
	PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT 

	REM Check box toggling.
	PRINT :PRINT "Check box -- choose Display | Carriage Returns"
	IF tCheckboxMenu%:<>%c :RAISE 30 :ENDIF
ENDP


PROC tCheckboxMenu%:
	LOCAL m%
	mInit
	mCard "Display","Tabs",%t OR KMenuCheckBox% OR KMenuSymbolOn%,"Carriage Returns",%c OR KMenuCheckBox%OR KMenuSymbolOn%,"Spaces",%s OR KMenuCheckBox%
	mCard "Allow","Para breaks",%b OR KMenuCheckBox% OR KMenuSymbolOn%,"Orphaned lines",%o OR KMenuCheckBox% OR KMenuSymbolOn%,"Page numbers",%n OR KMenuCheckBox% OR KMenuSymbolOn%
	m%=MENU
	rem print "keycode=$";hex$(m%);"('";chr$(m% and $ff);"')"
	RETURN m%
ENDP


PROC tOption:
	PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT 
	PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT 

	REM Option button list.
	PRINT :PRINT "Option button -- choose Fonts | Roman"
	IF tOptionMenu%:<>%r :RAISE 40 :ENDIF
ENDP


PROC tOptionMenu%:
	LOCAL m%,r%,s%,h%,t%
	s%=%s OR KMenuOptionStart% OR KMenuSymbolOn%
	r%=%r OR KMenuOptionMiddle%
	h%=%h OR KMenuOptionMiddle%
	t%=%t OR KMenuOptionEnd% 
	mInit
	mCard "Font","Swiss",s%,"Roman",r%,"Helvetia",h%,"Times",t%
	m%=menu
	rem print "keycode=$";hex$(m%);"('";chr$(m% and $ff);"')"
	RETURN m%
ENDP


PROC tCombo:
	PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT 
	PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT 

	REM Combination menu.
	PRINT :PRINT "Combo menu -- choose Fonts | Helv"
	IF tComboMenu%:<>%h :RAISE 50 :ENDIF
ENDP


PROC tComboMenu%:
	local menu%,s%,r%,h%,g%,m%,i%,b%,u%,t%,a%,d%
	s%=%s OR KMenuOptionStart% OR KMenuSymbolOn% : r%=%r OR KMenuOptionMiddle% : h%=%h OR KMenuOptionEnd%
	g%=%g OR KMenuOptionStart% : m%=%m OR KMenuOptionEnd% OR KMenuSymbolOn%
	i%=%i OR KMenuCheckBox% : b%=%b OR KMenuCheckBox% : u%=%u OR KMenuCheckBox% OR KMenuDimmed%
	t%=%t OR KMenuCheckBox% : d%=%d OR KMenuCheckBox%  OR KMenuSymbolIndeterminate% : a%=%a OR KMenuCheckBox%
	mInit
	mCasc "More","Save",%s,"Export",%e OR KMenuDimmed%,"Import",%i
	mCasc "Find","Find Next",31,"Replace",30,"Go to",29
	mCasc "Font","Swiss",s%,"Roman",r%,"Helvetia",h%
	mCasc "Style","Italic",i%,"Bold",b%,"Underline",u%
	mCard "File","New",%n OR KMenuDimmed%,"Open",%o,"More>",16,"Print",%p,"Close",%e
	mCard "Edit","Cut",%x,"Copy",%c,"Paste",%v,"Find>",18
	mCard "Text","Font>",17,"Big",g%,"Small",m%,"Style>",18
	mCard "Display","Tabs",t%,"Carriage Returns",d%,"Spaces",a% OR KMenuDimmed%
	menu%=menu
	RETURN menu%
ENDP


PROC tInvalidShortCuts%:
	local m%
	
	rem cls
	rem print "Menu with invalid short-cuts should raise an error"	

	onerr toobigincasc
	mInit
	mCasc "More","Save - should not appear",33,"Export",20,"Import",21
	mCard "Card1","More>",16
	menu
	onerr off
	raise 100

toobigincasc::
	onerr off
	if err<>-2 : print err : raise 102 : endif

REM 0 is now a valid shortcut.
rem	onerr toosmallincasc	
rem	minit
rem	mCasc "Printing","Page Setup - should not appear",0,"Print Preview",24,"Print",25
rem	mCard "Card1","Printing>",17
rem	menu
rem	onerr off
rem	raise 103
rem
rem toosmallincasc::
rem	onerr off
rem	if err<>-2 : raise 104 : endif

	onerr toobig
	minit	
	mCard "File","New - should not appear",33,"Open",17,"More>",18,"Printing>",22,"Close",26
	menu
	onerr off
	raise 105

toobig::
	if err<>-2 : raise 106 : endif

REM 0 is now valid.
rem	onerr toosmall	
rem	minit
rem	mCard "Edit","Cut",27,"Copy",28,"Paste",29,"Find - should not appear",0
rem	menu
rem	onerr off
rem	raise 107
rem
rem toosmall::
rem	onerr off
rem	if err<>-2 : raise 108 : endif

	onerr notallowed1
	minit
	mCard "Style","Bold",%b,"Italic",%i,"Underline",%_
	menu
	onerr off
	raise 109

notallowed1::
	if err<>-2 : raise 110 : endif

	onerr notallowed2
	minit
	mCard "Font","Arial",%A or KMenuOptionStart%,"Times",%* or KMenuOptionMiddle%,"Courier",%C or KMenuOptionEnd%
	menu
	onerr off
	raise 111

notallowed2::
	if err<>-2 : raise 112 : endif
	
	onerr someOK1
	mInit
	mCard "Edit","Cut",27,"Copy",28,"Paste",29,"Find",30      rem OK
	mCard "Style","Bold",%b,"Italic",%i,"Underline",%_				rem Invalid
	onerr off
	raise 113

someOK1::
	onerr off
	if err<>-2 : raise 114 : endif

REM 0 is now valid
rem	onerr someOK2
rem	mInit
rem	mCasc "Style","Bold",%b,"Italic",%i,"Underline",%u							rem OK
rem	mCard "Edit","Cut",27,"Copy",28,"Paste",29,"Find",30,"Style>",0  rem Invalid
rem	onerr off
rem	raise 115
rem
rem someOK2::
rem	onerr off
rem	if err<>-2 : raise 116 : endif

	rem print "Errors detected OK"
	rem pause -20	
endp


PROC tTooWide%:
	local m%
	rem print "Test dimmed cascade titles too wide cause errors"
	onerr m1
	mInit
	mCasc "1234567890123456789012345678901234567890","Save",%s,"Export",%e OR KMenuDimmed%,"Import",%i
	mCasc "Printing","Page Setup",%g,"Print Preview",%v,"Print",%p OR KMenuDimmed%
	mCasc "Find","Find Next",%n OR KMenuDimmed%,"Replace",%n,"Go to",%t
	mCard "File","New",%n OR KMenuDimmed%,"Open",%o,"1234567890123456789012345678901234567890>",16 OR KMenuDimmed%,"Printing>",17,"Close",%c
	mCard "Edit","Cut",%x,"Copy",%c OR KMenuDimmed%,"Paste",%v,"Find>",18
	m%=menu
	onerr off
	raise 200

m1::
	onerr off 		
	if err<>-22 : raise 300 : print err : print err$(err)	: endif
	rem	print "Menu cancelled"
	rem	pause -20

	rem print "Test that cascade title too wide causes an error"
	onerr m2
	mInit
	mCasc "1234567890123456789012345678901234567890","Save",1,"Export",2,"Import",3
	mCasc "Printing","Page Setup",4,"Print Preview",5,"Print",6
	mCard "File","New",7,"Open",8,"1234567890123456789012345678901234567890>",18,"Printing>",22,"Close",26
	mCard "Edit","Cut",27,"Copy",28,"Paste",29,"Find",30
	m%=menu
	onerr off
	raise 400

m2::
	onerr off 		
	if err<>-22 : raise 500: print err : print err$(err)	: endif
	rem print "Menu cancelled"
	REM pause -30
endp

REM End of pMenu.tpl

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?