⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frame.tpl

📁 在手机操作系统symbina上使用的一个脚本扩展语言的代码实现,可以参考用于自己的开发
💻 TPL
📖 第 1 页 / 共 2 页
字号:
	LOCAL dial%
	dINIT title$
	dFILE gNFile$, "File,Folder,Disk", type% OR KDFileSelectorWithSystem%, 0,0,KUidFrame&
	LOCK ON
	dial%=DIALOG
	LOCK OFF
	IF dial%
		RETURN KTrue%
	ELSE
		RETURN KFalse%
	ENDIF
ENDP

PROC Revert:
	EXTERNAL gFileDeltaF%,gFile$,gNFile$
	LOCAL dial%
	IF gFileDeltaF% = KFalse%
		GIPRINT "File has not changed", KBusyTopRight%
		RETURN
	ENDIF

	REM In case gFile$ does not exist for new files.
	IF NOT EXIST(gFile$)
		GIPRINT "No file to revert to", KBusyTopRight%
		RETURN
	ENDIF

	dINIT "Revert to saved?"
	dTEXT "", "All changes will be lost"
	dBUTTONS "No",-(%N OR KDButtonNoLabel% OR KDButtonPlainKey%), "Yes", (%Y OR KDButtonNoLabel% OR KDButtonPlainKey%)
	LOCK ON
	dial%=DIALOG
	LOCK OFF
	IF dial%<>%y
		RETURN
	ENDIF

	REM Revert it by pretending there's a system
	REM event causing it to open.
	gFileDeltaF% = KFalse%	REM Prevent current file being saved.
	REM (Openfile needs gNFile!)
	gNFile$=gFile$
	OpenFile:(KCSystemEvent%)
ENDP

PROC Init:
	EXTERNAL gWId%,gDebugF%
	REM Nice courier, mono-spaced font.
	gWId%=0
	
	Read_ini:	REM This sets the debug flag.

	IF gDebugF%
		FONT KFontCourierNormal13&, 16
		SCREEN 64,18, 1,1
	ELSE
		REM switch screen off?
		REM !!TODO
	ENDIF

	DEFAULTWIN 5
	
	initTBar:
	initTopTBar:
	REM initStat:

	REM Main window into background.
	REM gORDER 1,255
ENDP

PROC Read_ini:
	EXTERNAL gLUFile$,gDebugF%,TBVis%,gTopTBVis%,gStatVis%
	GLOBAL glh%	REM INI handle
	LOCAL check$(10)

	ONERR closeit::
	glh% = OpenINIFile%:(KUidFrame&,KReadMode%)

	PRINT "Read_ini: Opened INI="; glh%

	
	IF glh% :gLUFile$ = readINIrec$:( "" ) :ENDIF
	IF glh% :gDebugF% = VAL( readINIrec$:( "0" )) :ENDIF
	IF glh% :TBVis% = VAL( readINIrec$:( "-1" )) :ENDIF
	IF glh% :gTopTBVis% = VAL( readINIrec$:( "1" )) :ENDIF
	IF glh% :gStatVis% = VAL( readINIrec$:( "0" )) :ENDIF
	IF glh% :check$ = readINIrec$:( "101" ) :ENDIF

	IF gDebugF%
		print "read_ini: LastUsedFile="; gLUFile$
		PRINT "read_ini: debug="; gDebugF%
	ENDIF

closeit::
	REM End of INI file.
	ONERR OFF
	IOCLOSE(glh%)
ENDP

PROC ReadINIrec$:(default$)
	EXTERNAL glh%
	LOCAL value$(255), ret%
	IF glh%
		ret% = IOREAD(glh%, ADDR(value$), 256)
		IF ret%<>256
			PRINT "readInirec: duff read=";ret%
			if ret%<0 :print "readinirec: "+ERR$(ret%) :endif
			IOCLOSE(glh%)
			glh%=0
		ELSE
			print "readinirec: read=";value$
		ENDIF
	ELSE
		print "readini: no handle, using default"
		value$ = default$
	ENDIF
	RETURN value$
ENDP

PROC Write_ini:
	EXTERNAL gFile$,gDebugF%,TBVis%,gTopTBVis%,gStatVis%
	GLOBAL glh%
	ONERR closeit::
	glh% = OpenINIFile%:(KUidFrame&,KWriteMode%)
	PRINT "Write_INI: handle="; glh%
	IF glh%=0
		REM Can't do anything here.
		print "write_ini: no handle, abort"
		RETURN
	ENDIF

	REM Last used name is one active when program is closed.
	IF glh% :writeINIrec%:( gFile$ ) :ENDIF
	IF glh% :writeINIrec%:( NUM$(gDebugF%,5) ) :ENDIF
	IF glh% :writeINIrec%:( NUM$(TBVis%,5) ) :ENDIF
	IF glh% :writeINIrec%:( NUM$(gTopTBVis%,5) ) :ENDIF
	IF glh% :writeINIrec%:( NUM$(gStatVis%,5) ) :ENDIF
	REM And the check...
	IF glh% :writeINIrec%:( "314" ) :ENDIF

closeit::
	ONERR OFF
	REM End of INI file.
	IOCLOSE(glh%)
	glh%=0
ENDP

PROC WriteINIrec%:(aValue$)
	EXTERNAL glh%
	LOCAL ret%, value$(255)
	IF glh%=0
		print "writeinirec: no handle"
	ELSE
		value$ = aValue$
		print "WriteINIrec%: writing [";value$;"]"
		ret% = IOWRITE (glh%, ADDR(value$), 256)
		IF ret%<0
			PRINT "WriteINIrec: failed to write ";value$;
			PRINT " Error="; ret%; " = "; ERR$(ret%)
			IOCLOSE(glh%)
			glh%=0
		ENDIF
	ENDIF
ENDP

PROC OpenIniFile%:(AppUid&,aMode%)
	LOCAL IniFile$(255),handle%,ret%,uidType$(16),mode%
	mode%=KIoOpenModeOpen% OR KIoOpenFormatBinary%
	IniFile$="c:\system\apps\frame\frame.ini"
	print "OpenINIfile:",inifile$

	IF aMode%=KReadMode%
		print "Read mode"
		IF NOT EXIST(IniFile$) :print "no exist" :RETURN 0 :ENDIF
		ret%=IOOPEN(handle%,IniFile$,mode%)
		IF ret%<0 :print ERR$(ret%) :RETURN 0 :ENDIF
		ret%=IOREAD(handle%,ADDR(uidType$)+1+KOplAlignment%,16*KUnicodeCharLen%)
		if ret%<>16*KUnicodeCharLen% :print "ioread=",ret% :ioclose(handle%) :return 0 :endif
		POKEB ADDR(uidType$),16 rem KUnicodeCharLen%
		if (uidType$<>CheckUid$:(0,0,AppUid&))
			print "bad UIDs"
			print "[";uidType$;"][";CheckUid$:(0,0,AppUid&)
			ioclose(handle%)
			return 0
		endif
	ELSE
		mode%=KIoOpenModeReplace% OR KIoOpenFormatBinary% OR KIoOpenAccessUpdate%
		print "opening for write."
		ret%=ioopen(handle%,IniFile$,mode%)
		if ret%<0 :print ERR$(ret%) :return 0 :endif
		uidType$=CheckUid$:(0,0,AppUid&)
		print "writing checkuid"
		ret%=IOWRITE(handle%,ADDR(uidType$)+1+KOplAlignment%,16*KUnicodeCharLen%)
		IF ret%<0 :print err$(ret%) :ioclose(handle%) :RETURN 0 :ENDIF
	ENDIF
	RETURN handle%
ENDP

PROC GetLang:
	PRINT "!!TODO:GetLang:"
ENDP

PROC initTBar:
	EXTERNAL gScrWid%, gScrHt%, TBVis%

	REM set up the Toolbar buttons and actions
	LOCAL mbmTbar$(50), bitmapid1&, bitmapid2&
	LOCAL c1&,c2&,c3&,c4&,c5&,c6&

	REM Have to deliver this file to end-user.
	mbmTbar$="c:"+KAppDir$+"buttons.mbm"

	bitmapId1&=gLoadBit(mbmTbar$,0,0)
	bitmapId2&=gLoadBit(mbmTbar$,0,1)

	rem !!TODO lose this. for visibility (screen too narrow!)
	rem c1&=kRgbMagenta&
	rem c2&=KRgbYellow&
	rem c3&=KRgbDarkRed&
	rem c4&=kRgbYellow&
	rem c5&=kRgbDarkBlue&
	rem c6&=kRgbDarkmagenta&
	REM New in 1.02
	rem TBarColor:(KColorgCreate256ColorMode%, c1&, c2&, c3&, c4&, c5&, c6&)

	REM If that wasn't called, the default toolbar mode/colors are used...

	REM Set title above Toolbar.
	REM Use appName for the docname for now...
	TBarInit:(kAppname$, gScrWid%, gScrHt%)

	TBarButt:("c",1,"Color",0,bitmapid1&,bitmapid1&,0)
	TBarButt:("a",2,"Rubber",0,bitmapid2&,bitmapid2&,0)
	TBarButt:("p",3,"Popup"+chr$(10)+"demo",0,&0,&0,1)
	TBarButt:("e",4,"Exit",0,&0,&0,0)

	IF TbVis%
		TBarShow:
	ELSE
			TBarHide:
	ENDIF
ENDP

PROC initTopTBar:
	EXTERNAL gTopTBVis%
	gTopTBVis%=KFalse%
ENDP

PROC StatVis:
	EXTERNAL gStatVis%
	IF gStatVis%=KTrue%
		gStatVis%=KFalse%
		REM kill stat window
	ELSE
		gStatVis%=KTrue%
		initStat:
	ENDIF
ENDP

PROC initStat:
	REM Initialise the status window.
	GIPRINT "initStat:" + NYI$
ENDP


PROC TopToolVis:
	EXTERNAL gTopTBVis%
	GIPRINT "TopToolVis" + NYI$
	IF gTopTBVis%=KTrue%
		gTopTBVis%=KFalse%
	ELSE
		gTopTBVis%=KTrue%
	ENDIF
ENDP

PROC Help:
	EXTERNAL gHelpId&,gHStatus&
	LOCAL fullpath$(255), previous&, ret&

	IF gHelpId& = 0
		fullpath$ = WhereIs$:( KAppdir$ + KAppname$ + KApphlp$ )
		IF fullpath$ = ""
			GIPRINT "Help file not found"
			RETURN
		ENDIF
		gHelpId& = RUNAPP&:("Data", fullpath$, "", 0)
		LOGONTOTHREAD:(gHelpId&, gHStatus&)
	ELSE
		REM Allow status word to update.
		IOYIELD
		REM If it's still running...
		IF gHStatus& = KStatusPending32&
			ret&=SETFOREGROUNDBYTHREAD&:(gHelpId&,previous&)
		ELSEIF gHStatus& = 0
			gHelpId& = 0
			REM Recall this proc to start Help.
			Help:
		ENDIF
	ENDIF
	RETURN
ENDP

PROC KillHelp:
	EXTERNAL gHelpId&
	REM On exit, make sure the help thread dies.
	REM GIPRINT "!!TODO - KillHelp"
	IF gHelpId&<>0
		ONERR dieDieDie::
		ENDTASK&:(gHelpId&,0)
	ENDIF
diediedie::
	ONERR OFF
	RETURN
ENDP

PROC whereIs$:( path$ ) REM Hunt a file on different disks.
	LOCAL fullpath$(255), off%(6), disk$(2)
	LOCAL search$(2), search%
	
	REM List of disks to search, in search order.
	REM (Remember default disk gets checked first anyway.)
	search$="CD"

	search%=0
	DO
		REM Check the default disk first.
		IF search%=0
			disk$ = ""
		ELSE
			disk$ = MID$( search$, search%, 1 ) + ":"
		ENDIF
		
		fullpath$ = PARSE$( path$, disk$, off%())
		IF EXIST(fullpath$)
			RETURN fullpath$
		ENDIF
		
		search%=search%+1
	UNTIL search%>LEN(search$)
	RETURN ""
ENDP

PROC UpdateTBarTitle:
	local off%(6),file$(255)
	file$=GETDOC$
	file$=PARSE$(file$,"",off%())
	TBarSetTitle:(RIGHT$(file$, LEN(file$)-off%(4)+1))
ENDP

PROC InitScr:
	EXTERNAL gWid%,TBVis%
	gUSE gWId%
	IF TBVis%
		TBarShow:
	ELSE
		TBarHide:
	ENDIF
	gSETPENWIDTH 10
ENDP

PROC Pref:
	EXTERNAL gDebugF%
	LOCAL dial%
	dINIT "Preferences"
rem	No longer supported in Crystal
rem	dCHECKBOX gDebugF%, "Use debug mode"
	dCHOICE gDebugF%,"Use debug mode","No,Yes"
	dBUTTONS "Cancel",-(KDButtonEsc% OR KDButtonNoLabel% OR KDButtonPlainKey%), "OK", (KDButtonEnter% OR KDButtonNoLabel% OR KDButtonPlainKey%)
	LOCK ON
	dial%=DIALOG
	LOCK OFF
	IF gDebugF%=2 rem Yes
		gDebugF%=KTrue%
		DebugPref:
	ELSE
		gDebugF%=KFalse%
	ENDIF
ENDP

PROC DebugPref:
	EXTERNAL gPointerFilterF%
	LOCAL dial%
	dINIT "DEBUG Preferences"
rem	No longer supported in Crystal
rem	dCHECKBOX gPointerFilterF%, "Use PointerFilter"
	dCHOICE gPointerFilterF%, "Use PointerFilter","No,Yes"
	dBUTTONS "Cancel",-(KDButtonEsc% OR KDButtonNoLabel% OR KDButtonPlainKey%), "OK", (KDButtonEnter% OR KDButtonNoLabel% OR KDButtonPlainKey%)
	LOCK ON
	dial%=DIALOG
	LOCK OFF
	IF gPointerFilterF%=2
		gPointerFilterF%=KTrue%
		PointerFilterPref:
	ELSE
		gPointerFilterF%=KFalse%
	ENDIF
ENDP

PROC PointerFilterPref:
	EXTERNAL gPFFilter%,pPFMask%,gPFMask%
	LOCAL dial%,filter&,mask&
	filter&=gPFFilter%
	mask&=gPFMask%
	dINIT "Pointer Filter Preferences"
	dLONG filter&, "Filter",0,7
	dLONG mask&, "Mask", 0,7
	dBUTTONS "Cancel",-(KDButtonEsc% OR KDButtonNoLabel% OR KDButtonPlainKey%), "OK", (KDButtonEnter% OR KDButtonNoLabel% OR KDButtonPlainKey%)
	LOCK ON
	dial%=DIALOG
	LOCK OFF
	IF dial%
		gPFFilter%=filter&
		gPFMask%=mask&
	ENDIF
ENDP

PROC Save:
	EXTERNAL gDeltaF%,gFileDeltaF%,gFile$
	LowSave:( gFile$, KTrue% ) REM Inform user.
	REM And reset the delta flag.
	gDeltaF%=KFalse%
	gFileDeltaF%=KFalse%
ENDP

PROC SaveAs:
	EXTERNAL gFile$,gDeltaF%,gFileDeltaF%
	LOCAL f$(255), offset%(6)
	f$ = GETDOC$
	f$ = PARSE$(f$, "" ,offset%())
	f$ = LEFT$(f$, offset%(4)-1) rem Just the drive and path
	f$ = SaveAsFileDialog$:(f$,#0)
	IF LEN(f$)>0
		gFile$ = f$
		SETDOC gFile$
		UpdateTBarTitle:
		LowSave:( gFile$, KTrue% ) REM Inform user.
		gDeltaF%=KFalse%
		gFileDeltaF%=KFalse%
	ENDIF
ENDP

PROC LowSave:( fn$, InformUserF% )
	EXTERNAL gWId%
	REM In fact, I can't think of a single instance
	REM where the user /shouldn't/ be told.

	IF gWId%
		gUSE gWId%
		IF InformUserF%
			BUSY "Saving file " + CHR$(KEllipsis&), KBusyBottomRight%, 15 REM 0.75 seconds
		ENDIF
		gSAVEBIT fn$
		IF InformUserF%
			BUSY OFF
			GIPRINT "File saved", KBusyTopRight%
		ENDIF
	ENDIF
ENDP

PROC LowLoad%:(fn$)
	LOCAL bitmap%, width%, height%
	LOCAL newMain%
	ONERR exit::
	IF EXIST(fn$)
		bitmap% = gLOADBIT(fn$,0,0)
		width% = gWIDTH
		height% = gHEIGHT
		newMain% = gCREATE(0,0, width%, height%, 1, kColorMode%)
		gCOPY bitmap%, 0,0 ,width%,height%,3
		gCLOSE bitmap%
		RETURN newMain%
	ENDIF
exit::
	ONERR OFF
	RETURN 0
ENDP

PROC CmdE%: REM toolbar Exit
	EXTERNAL gExit%
	gExit%=KTrue%
ENDP

PROC CmdA%:
	SetColor:(255,255,255)
ENDP

PROC CmdC%:
	Color:
ENDP

PROC CmdTBDownP%:
	EXTERNAL gScrWid%,TBWidth%
	LOCAL pop%
	REM           x    ,    y       ,   corner
	pop%=mPOPUP(gScrWid%-TbWidth%,97,KMPopupPosTopRight%,"Item a",%a,"Item b",%b)
	IF pop%=0
		REM GIPRINT "Popup cancelled"
	ELSE
		GIPRINT "Item "+chr$(pop%)+" selected"
	ENDIF
ENDP

PROC ToolVis:
	EXTERNAL TbVis%
	REM Toolbar visibility toggle on/off
	IF TbVis%
		TBarHide:
	ELSE
		TBarShow:
	ENDIF
ENDP

PROC DemoA:
	PRINT "!!TODO - demoa"
ENDP

PROC Democ:
	PRINT "!!TODO - democ"
ENDP

PROC DoSomething:
	GIPRINT "DoSomething:" + NYI$
ENDP

PROC SelectAll:
	GIPRINT "SelectAll:" + NYI$
ENDP

PROC About:
	GIPRINT "About:" + NYI$
ENDP

PROC Copy:
	GIPRINT "Copy:" + NYI$
ENDP

PROC Delete:
	GIPRINT "Delete:" + NYI$
ENDP

PROC Export:
	GIPRINT "Export:" + NYI$
ENDP

PROC MergeIn:
	GIPRiNT "MergeIn:" + NYI$
ENDP

PROC Print:
	GIPRINT "Print:" + NYI$
ENDP

PROC PrintSetup:
	GIPRINT "PrintSetup:" + NYI$
ENDP

PROC PageSetup:
	GIPRINT "PageSetup:" + NYI$
ENDP

PROC Paste:
	GIPRINT "Paste:" + NYI$
ENDP

PROC PrintPreview:
	GIPRINT "PrintPreview:" + NYI$
ENDP

PROC Cut:
	GIPRINT "Cut:" + NYI$
ENDP

PROC Redo:
	GIPRINT "Redo:" + NYI$
ENDP

PROC Undo:
	GIPRINT "Undo:" + NYI$
ENDP

PROC CutPaste:
	LOCAL pop%
	pop%=mPOPUP(1,48, KMPopupPosTopLeft%, "Cut",%x, "Copy",%c, "Paste",%v)
	IF pop%=0
		REM GIPRINT "Popup cancelled"
	ELSE
		IF pop%=%x: Cut:
		ELSEIF pop%=%c: Copy:
		ELSE : Paste:
		ENDIF
	ENDIF
ENDP

PROC Irtrans:
	GIPRINT "Irtrans:" + NYI$
ENDP

PROC ZoomIn:
	GIPRINT "ZoomIn:" + NYI$
ENDP

PROC ZoomOut:
	GIPRINT "ZoomOut:" + NYI$
ENDP

PROC Color:
	LOCAL red%,green%,blue%
	red%=rnd*256
	green%=rnd*256
	blue%=rnd*256
	SetColor:(red%,green%,blue%)
ENDP

PROC SetColor:(red%,green%,blue%)
	EXTERNAL gWId%
	gUSE gWId%
	gCOLOR red%,green%,blue%
ENDP

⌨️ 快捷键说明

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