home *** CD-ROM | disk | FTP | other *** search
Wrap
EPOC OPL Source | 1998-06-29 | 15.5 KB | 831 lines
INCLUDE "CONST.OPH" INCLUDE "PRINTER.OXH" INCLUDE "SYSTEM.OXH" INCLUDE "TOOLBAR.OPH" INCLUDE "DATE.OXH" APP Generic,424345 ENDA CONST NomAppli$="Generic" CONST shortpath$="\System\Apps\Generic\" CONST PictFile$="Generic.mbm" CONST IniFile$="Generic.ini" CONST Generic_UID&=424345 CONST Pointer_Used&=&408 CONST Pointer_Enter&=&409 CONST Pointer_Exit&=&40A REM Pour ERR CONST noErr%=0 REM for gTest% CONST KgTest_Short% = 1 CONST KgTest_Medium% = 2 CONST KgTest_Long% = 3 REM Maximum Length for a filename (Ctrl-f) CONST MAX_FILENAME% = 20 CONST MAX_STRING_FILENAME% = 22 REM 2 more than MAX_FILENAME% REM First procedure called PROC App_Start: LOADM "Z:\SYSTEM\OPL\TOOLBAR.OPO" TBarLink:("App_Main") ENDP PROC App_Main: REM Run/Quit application GLOBAL gOK% REM Idle management GLOBAL gIdle% REM InfraRed management GLOBAL gIR_flagSend%, gIR_flagReceive% REM Cut/Copy/Paste management GLOBAL gCCP_flagCut%, gCCP_flagCopy%, gCCP_flagPaste% REM Menu management GLOBAL gMinit%, gMDT$(52,20) REM Task "Data" for Help GLOBAL gThread& REM Files paths GLOBAL gDev$(2) REM Current mode GLOBAL gMode1%, gMode2% REM Window data and zoom GLOBAL gScrWid%,gScrHght% GLOBAL gMainscn% GLOBAL gZoom%,gFont&,gTFont% REM ToolBar GLOBAL gToolbar%, gScreenWidth% GLOBAL g_TbPict1&,g_TbPict2&,g_TbPict3&,g_TbPict4& GLOBAL gPath$(255) GLOBAL gControl%,gShift% App_Init: gOK%=KTrue% App_Evnt:(CMD$(3),CMD$(2)) WHILE gOK% App_Run: ENDWH App_End: ENDP PROC App_Run: LOCAL t& GLOBAL gA&(20) REM idle management IF gIdle% Idle_Do: IF NOT TESTEVENT :RETURN :ENDIF ENDIF REM wait for the next event GETEVENT32 gA&() t&=gA&(1) IF t& >= KKeySidebarMenu% Event_Sbar:(t& - KKeySidebarMenu%) ELSEIF (t& AND &400) =0 Event_Key: ELSE Event_Syst:(t&) ENDIF ENDP REM system events management PROC App_Evnt:(t$,w$) IF t$=KCmdLetterOpen$ File_Set:(w$) ELSEIF t$=KCmdLetterRun$ File_Resume: ELSEIF t$=KCmdLetterCreate$ File_Create: ELSEIF t$="X" App_Quit: ENDIF ENDP REM Quit the application PROC App_Quit: REM exit of the never end loop REM App_End is then called by App_Main gOK%=KFalse% ENDP REM Begining of the program PROC App_Init: gDev$=LEFT$(CMD$(1),2) gScrWid%=gWidth :gScrHght%=gHeight gPath$=gDev$+shortpath$ TRAP MKDIR gPath$ IniFile_Load: Menu_Init: Zoom_Set:(gZoom%) Toolbar_Init: ENDP REM End of the program PROC App_End: IniFile_Save: REM save preferences Help_End: Draw_Close: STOP ENDP REM Event Management REM -+-+-+-+-+-+-+-+ REM Slidebar tap PROC Event_Sbar:(t&) LOCAL k& IF t& = 0 Menu_Disp&: ELSEIF t& = 1 CCP_Popup: ELSEIF t& = 2 IR_Popup: ELSEIF t& = 3 Zoom_In: ELSEIF t& = 4 Zoom_Out: ENDIF ENDP REM Key press event PROC Event_Key: LOCAL k&,Mod% REM key code k&=gA&(1) REM Determine status of modifier keys Mod%=gA&(4) AND 255 IF Mod% AND 2 : gShift%=KTrue% : ELSE : gShift%=KFalse% : ENDIF IF Mod% AND 4 : gControl%=KTrue% : ELSE : gControl%=KFalse% : ENDIF REM Menu key IF k&=KKeyMenu% :Menu_Disp&: :RETURN :ENDIF REM Menu shortcut IF gControl% AND k& <= 26 Menu_Key:(k&) ELSEIF k&=KKeyEsc% :Key_Esc: ELSEIF k&=KKeySpace% :Key_Space: ELSEIF k&=KKeyDel% :Key_Del: ELSEIF k&=KKeyTab% :Key_Tab: ELSEIF k&=KKeyEnter% :Key_Enter: ELSEIF k&=4101 : Curs_PgDwn: ELSEIF k&=4100 : Curs_PgUp: ELSEIF k&=4099 : Curs_End: ELSEIF k&=4098 : Curs_Home: ELSEIF k&=4106 : Curs_Down: ELSEIF k&=4105 : Curs_Up: ELSEIF k&=4104 : Curs_Right: ELSEIF k&=4103 : Curs_Left: ELSE GIPRINT "Key:"+HEX$(gA&(1)) :PAUSE 20 ENDIF ENDP REM System event PROC Event_syst:(t&) LOCAL c$(255) IF t&=KEvFocusGained& Event_Fore: ELSEIF t&=KEvFocusLost& Event_Back: ELSEIF t&=KEvSwitchOn& Event_On: ELSEIF t&=KEvCommand& c$=GETCMD$ App_Evnt:(LEFT$(c$,1),MID$(c$,2,255)) ELSEIF t&=KEvDateChanged& ELSEIF t&=KEvKeyDown& ELSEIF t&=KEvKeyUp& ELSEIF t&=KEvPtr& Touch_Tap: ELSEIF t&=KEvPtrEnter& Touch_Enter:(gA&(3)) ELSEIF t&=KEvPtrExit& Touch_Exit:(gA&(3)) ENDIF ENDP REM Background/foreground Managment REM -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- REM Application go to background PROC Event_Back: GIPRINT "Event_Back" :PAUSE 20 ENDP REM Application go to foreground PROC Event_Fore: GIPRINT "Event_Fore" :PAUSE 20 ENDP REM Series 5 switch On PROC Event_On: GIPRINT "Event_On" :PAUSE 20 ENDP REM Keys Management REM +-+-+-+-+-+-+-+ PROC Key_Esc: GIPRINT "Key_Esc" :PAUSE 20 ENDP PROC Key_Space: GIPRINT "Key_Space" :PAUSE 20 ENDP PROC Key_Del: GIPRINT "Key_Del" :PAUSE 20 ENDP PROC Key_Tab: GIPRINT "Key_Tab" :PAUSE 20 ENDP PROC Key_Enter: GIPRINT "Key_Enter" :PAUSE 20 ENDP REM Cursor Management REM +-+-+-+-+-+-+-+-+ PROC Curs_PgDwn: GIPRINT "Curs_PgDwn" :PAUSE 20 ENDP PROC Curs_PgUp: GIPRINT "Curs_pgUp" :PAUSE 20 ENDP PROC Curs_End: GIPRINT "Curs_End" :PAUSE 20 ENDP PROC Curs_Home: GIPRINT "Curs_Home" :PAUSE 20 ENDP PROC Curs_Down: GIPRINT "Curs_Down" :PAUSE 20 ENDP PROC Curs_Up: GIPRINT "Curs_Up" :PAUSE 20 ENDP PROC Curs_Right: GIPRINT "Curs_Right" :PAUSE 20 ENDP PROC Curs_Left: GIPRINT "Curs_Left" :PAUSE 20 ENDP REM Cut/Copy/Paste Managment REM +-+-+-+-+-+-+-+-+-+-+-+- REM Cut/Copy/Paste Popup Menu PROC CCP_Popup: LOCAL k% k%=mPOPUP(10,40,KMPopupPosTopLeft%,"Cut",%x,"Copy",%c,"Paste",%v) IF k%=%x CCP_Cut: ELSEIF k%=%c CCP_Copy: ELSEIF k%=%v CCP_Paste: ENDIF ENDP REM Cut Command PROC CCP_Cut: GIPRINT "CCP_Cut" :PAUSE 20 ENDP REM Copy Command PROC CCP_Copy: GIPRINT "CCP_Copy" :PAUSE 20 ENDP REM Paste Command PROC CCP_Paste: GIPRINT "CPP_Paste" :PAUSE 20 ENDP REM InfraRed Management REM +-+-+-+-+-+-+-+-+-+ REM Infrared Popup Menu PROC IR_Popup: LOCAL k% k%=mPOPUP(10,95,KMPopupPosTopLeft%,"Infrared send",3,"Infrared receive",4 OR KMenuDimmed%) IF k%=3 IR_Send: ELSEIF k%=4 IR_Receive: ENDIF ENDP REM Infrared send Command PROC IR_Send: GIPRINT "IR_Send" :PAUSE 20 ENDP REM Infrared receive Command PROC IR_Receive: GIPRINT "IR_Receive" :PAUSE 20 ENDP REM Menu Managment REM -=-=-=-=-=-=-= REM initialise the menu dispatch table PROC Menu_Init: gMDT$(1)="Help_About" REM Ctrl+A gMDT$(2)="" REM Ctrl+B gMDT$(3)="CCP_Copy" REM Ctrl+C gMDT$(4)="Mode_Set2" REM Ctrl+D gMDT$(5)="App_Quit" REM Ctrl+E gMDT$(6)="" REM Ctrl+F gMDT$(7)="" REM Ctrl+G gMDT$(8)="Mode_Set1" REM Ctrl+H gMDT$(9)="IR_Send" REM Ctrl+I gMDT$(10)="" REM Ctrl+J gMDT$(11)="Pref_Disp" REM Ctrl+K gMDT$(12)="" REM Ctrl+L gMDT$(13)="Zoom_In" REM Ctrl+M gMDT$(14)="" REM Ctrl+N gMDT$(15)="" REM Ctrl+O gMDT$(16)="Print_Print" REM Ctrl+P gMDT$(17)="" REM Ctrl+Q gMDT$(18)="" REM Ctrl+R gMDT$(19)="" REM Ctrl+S gMDT$(20)="Toolbar_Switch" REM Ctrl+T gMDT$(21)="" REM Ctrl+U gMDT$(22)="CCP_Paste" REM Ctrl+V gMDT$(23)="" REM Ctrl+W gMDT$(24)="CCP_Cut" REM Ctrl+X gMDT$(25)="" REM Ctrl+Y gMDT$(26)="" REM Ctrl+Z gMDT$(27)="" REM Ctrl+Shift+A gMDT$(28)="" REM Ctrl+Shift+B gMDT$(29)="" REM Ctrl+Shift+C gMDT$(30)="" REM Ctrl+Shift+D gMDT$(31)="" REM Ctrl+Shift+E gMDT$(32)="" REM Ctrl+Shift+F gMDT$(33)="" REM Ctrl+Shift+G gMDT$(34)="Help_Disp" REM Ctrl+Shift+H gMDT$(35)="IR_Receive" REM Ctrl+Shift+I gMDT$(36)="" REM Ctrl+Shift+J gMDT$(37)="" REM Ctrl+Shift+K gMDT$(38)="" REM Ctrl+Shift+L gMDT$(39)="Zoom_Out" REM Ctrl+Shift+M gMDT$(40)="" REM Ctrl+Shift+N gMDT$(41)="" REM Ctrl+Shift+O gMDT$(42)="Print_Setup" REM Ctrl+Shift+P gMDT$(43)="" REM Ctrl+Shift+Q gMDT$(44)="" REM Ctrl+Shift+R gMDT$(45)="" REM Ctrl+Shift+S gMDT$(46)="" REM Ctrl+Shift+T gMDT$(47)="Print_PageSetup" REM Ctrl+Shift+U gMDT$(48)="Print_Preview" REM Ctrl+Shift+V gMDT$(49)="" REM Ctrl+Shift+W gMDT$(50)="" REM Ctrl+Shift+X gMDT$(51)="" REM Ctrl+Shift+Y gMDT$(52)="" REM Ctrl+Shift+Z ENDP REM display the menu and execute the user choice PROC Menu_Disp&: LOCAL k& mINIT mCASC "Printing","Page setup…",%U, "Print setup…",%P, "Print preview…",%V,"Print…",%p IF gMode1%=1 mCARD "File","Open File…",-%o, "Printing>",-16,"Close",%e ELSE mCARD "File","Save File",-%s, "Printing>",-16,"Close",%e ENDIF mCARD "Edit","Undo",-%z, "Cut",%x, "Copy",%c, "Paste",%v mCARD "View","Mode 1",%h OR KMenuOptionStart% OR KMenuSymbolOn% * gMode1%, "Mode 2",-(%d OR KMenuOptionEnd% OR KMenuSymbolOn% * gMode2%),"Zoom in",%m, "Zoom out",-%M, "Show toolbar",%t OR $2800*(gToolbar%+1) mCASC "Infrared","Send",%i, "Receive",%I mCARD "Tools","Preference",%k, "About",%a,"Help",-%H,"Infrared>",15 gControl%=KTrue% LOCK ON :k&=MENU(gMinit%)-%A+1 :LOCK OFF IF k& > 31 : gShift%=KFalse% : k&=k&-32 ELSE : gShift%=KTrue% ENDIF Menu_Key:(k&) ENDP PROC Menu_Key:(k&) LOCAL p$(255) IF k&<1 OR k&>26 :RETURN :ENDIF IF gShift% p$=gMDT$(26+k&) ELSE p$=gMDT$(k&) ENDIF IF p$<>"" @(p$): ENDIF ENDP REM Touch-screen management REM +-+-+-+-+-+-+-+-+-+-+-+ REM Tap on the touch-screen PROC Touch_Tap: IF TBarOffer%:(gA&(3),gA&(4),gA&(6),gA&(7)) RETURN ELSE IF gA&(KEvAPtrType%) = 0 Touch_First:(gA&(3),gA&(6),gA&(7)) ELSEIF gA&(KEvAPtrType%) = 1 Touch_Last:(gA&(3),gA&(6),gA&(7)) ELSEIF gA&(KEvAPtrType%) = 6 Touch_Middle:(gA&(3),gA&(6),gA&(7)) ENDIF ENDIF ENDP REM tap on the touch screen PROC Touch_First:(W&,X_P&,Y_P&) GIPRINT "Touch_First W="+NUM$(W&,12)+", X="+NUM$(X_P&,12)+", Y="+NUM$(Y_P&,12) :PAUSE 20 ENDP REM tap on the touch screen PROC Touch_Middle:(W&,X_P&,Y_P&) GIPRINT "Touch_Middle W="+NUM$(W&,12)+", X="+NUM$(X_P&,12)+", Y="+NUM$(Y_P&,12) :PAUSE 20 ENDP REM tap on the touch screen PROC Touch_Last:(W&,X_P&,Y_P&) GIPRINT "Touch_Last W="+NUM$(W&,12)+", X="+NUM$(X_P&,12)+", Y="+NUM$(Y_P&,12) :PAUSE 20 ENDP REM touch-screen: the pointer enter in the area PROC Touch_Enter:(W&) GIPRINT "Touch_Enter W="+NUM$(W&,12) :PAUSE 20 ENDP REM touch-screen: the pointer exit the area PROC Touch_Exit:(W&) GIPRINT "Touch_Exit W="+NUM$(W&,12) :PAUSE 20 ENDP REM Display Managment REM -=-=-=-=-=-=-=-=-= REM Create all the windows PROC Draw_Create: IF gMainScn% = 0 gMainScn%=gCREATE (0,0,gScreenwidth%,gScrHght%,KgCreateVisible%,KgCreate2ColourMode%) ELSE gUSE gMainScn% gSETWIN 0,0,gScreenwidth%,gScrHght% ENDIF Draw_All: ENDP REM close all open windows PROC Draw_Close: IF gMainScn% :gCLOSE gMainScn% :ENDIF ENDP REM Draw the windows PROC Draw_All: gUSE gMainscn% gCLS :gBORDER 0 Time_Draw: ENDP REM Draw the windows PROC Time_Draw: LOCAL ch$(255) gFONT gFont& gAT 48,32 : gFILL 320,22,1 : gBOX 320,22 ch$=DATIM$ IF gMode2% = 1 ch$=LEFT$(ch$,15) ENDIF gAT 50,50 :gPRINT ch$ ENDP REM Zoom Management REM -=-=-=-=-=-=-=- REM Zoom in (magnify) PROC Zoom_In: GIPRINT "Zoom_In" :PAUSE 20 Zoom_Set:((gZoom%+1) AND 3) Time_Draw: ENDP REM Zoom out (reduce) PROC Zoom_Out: GIPRINT "Zoom_In" :PAUSE 20 Zoom_Set:((gZoom%-1) AND 3) Time: ENDP REM Change the current zoom level PROC Zoom_Set:(z%) gZoom%=z% REM update the font IF gTFont% = 1 gFont&=KFontArialNormal11&+gZoom% ELSEIF gTFont% = 2 gFont&=KFontTimesNormal11&+gZoom% ELSE gFont&=KFontCourierNormal11&+gZoom% ENDIF ENDP REM Tool Bar Management REM -=-=-=-=-=-=-=-=-=- PROC Toolbar_Init: LOCAL mbmTbar$(255) mbmTbar$=gPath$+PictFile$ g_TbPict1&=gLoadBit(mbmTbar$,0,0) g_TbPict2&=gLoadBit(mbmTbar$,0,1) g_TbPict3&=gLoadBit(mbmTbar$,0,2) g_TbPict4&=gLoadBit(mbmTbar$,0,3) TBarInit:(NomAppli$,gScrWid%,gScrHght%) TBarButt:("h",1,"Hour",0,g_TbPict1&,g_TbPict1&, KTbFlgLatchStart%) TBarButt:("d",2,"Day",0,g_TbPict2&,g_TbPict2&, KTbFlgLatchEnd%) TBarButt:("V",3,"Print",0,g_TbPict3&,g_TbPict3&,0) TBarButt:("H",4,"Help",0,g_TbPict4&,g_TbPict4&,0) ToolBar_Mode: ToolBar_Set: Toolbar_Title:(NomAppli$) ENDP PROC ToolBar_Mode: IF gMode1% = 1 TBARLatch:(1) ELSEIF gMode2% = 1 TBARLatch:(2) ENDIF ENDP PROC ToolBar_Set: IF gToolbar% :TBarHide: ELSE :TBarShow: ENDIF gScreenwidth%=gScrWid%+(TbWidth%* NOT gToolbar%)-1 Draw_Create: ENDP PROC Toolbar_Switch: gToolbar% = NOT gToolbar% ToolBar_Set: ENDP PROC Toolbar_Title:(A$) REM 'Trim Filename to 7 characters to fit ToolBar TBarSetTitle:(LEFT$(A$,7)) ENDP REM Help from Toolbar PROC CmdSh%: Help_Disp: ENDP REM Print from Toolbar PROC CmdSv%: Print_Preview: ENDP REM Mode 1 from Toolbar PROC Cmdh%: Mode_Set1: ENDP REM Mode 2 from Toolbar PROC Cmdd%: Mode_Set2: ENDP REM .ini File Management REM -=-=-=-=-=-=-=-=-=-= REM default values for preferences when the REM ini file doesn't exist or when it is REM corrupted PROC IniFile_Default: gToolbar%=KFalse% gMode1%=1 gMode2%=0 gTFont%=1 gZoom%=1 ENDP REM load the preferences from the ini file PROC IniFile_Load: IF EXIST (gPath$+IniFile$) TRAP OPEN gPath$+IniFile$,A,tb%,m1%,m2%,tf%,z% IF ERR = NoErr% gToolbar%=A.tb% gMode1%=A.m1% gMode2%=A.m2% gTFont%=A.tf% gZoom%=A.z% CLOSE RETURN ENDIF ENDIF IniFile_Default: ENDP REM save the preferences to the ini file PROC IniFile_Save: TRAP DELETE gPath$+IniFile$ CREATE gPath$+IniFile$,A,tb%,m1%,m2%,tf%,z% A.tb%=gToolbar% A.m1%=gMode1% A.m2%=gMode2% A.tf%=gTFont% A.z%=gZoom% APPEND CLOSE ENDP REM Mode Management REM -=-=-=-=-=-=-=- PROC Mode_Set1: IF gMode1% <> 1 gMode1%=1 gMode2%=0 ToolBar_Mode: Draw_All: ENDIF ENDP PROC Mode_Set2: IF gMode2% <> 1 gMode2%=1 gMode1%=0 ToolBar_Mode: Draw_All: ENDIF ENDP REM File Management REM -=-=-=-=-=-=-=- REM Open a existing file PROC File_Set:(w$) ENDP REM Open the file last opened PROC File_Resume: ENDP REM creation of a new file PROC File_Create: ENDP REM Printing Management REM -=-=-=-=-=-=-=-=-=- REM Printing PROC Print_Write: REM initialisation RESETPRINTING: SETFONTNAME:("Courier") SETFONTHEIGHT:(12) REM write on page(s) SENDSTRINGTOPRINTER:("Test d'impression") SENDNEWPARATOPRINTER: ENDP REM Menu File / Printing / Page setup… PROC Print_PageSetup: PageSetupDialog: ENDP REM Menu File / Printing / Print setup… PROC Print_Setup: PrintRangeDialog: ENDP REM Menu File / Printing / Print preview… PROC Print_Preview: ONERR CmdSvquit:: Print_Write: : PrintPreviewDialog: ONERR OFF : RETURN CmdSvquit:: ONERR OFF giPRINT "Printer not connected" :PAUSE 20 ENDP REM File / Printing / Print… PROC Print_Print: ONERR CmdpQuit:: Print_Write: : PrintDialog: ONERR OFF : RETURN CmdpQuit:: ONERR OFF giPRINT "Printer not connected" ENDP REM Preferences Management REM -=-=-=-=-=-=-=-=-=-=-= REM Display the preference dialog PROC Pref_Disp: LOCAL r%,old% old%=gTFont% dINIT NomAppli$+" preferences" dCHOICE gTFont%,"Font","Arial,Times,Courier" dBUTTONS "Cancel",KDButtonEsc% OR KDButtonNoLabel% OR KDButtonPlainKey%,"Yes",KDButtonEnter% OR KDButtonNoLabel% OR KDButtonPlainKey% LOCK ON :r%=DIALOG :LOCK OFF IF r%=KDButtonEnter% IF old% <> gTFont% Zoom_Set:(gZoom%) Draw_Time: ENDIF ENDIF ENDP REM Help Management REM -=-=-=-=-=-=-=- REM Menu: Tools / About PROC Help_About: dINIT "Generic application (Freeware)" dTEXT "Author:"," Didier CABUZEL" dTEXT "Email:","didier@cabuzel.com" dTEXT "Version:","1.0" dTEXT "Date:","08/Oct/1997" dBUTTONS "Close",KDButtonEnter% OR KDButtonNoLabel% OR KDButtonPlainKey% LOCK ON :DIALOG :LOCK OFF ENDP REM Menu Tools / Help and Toolbar Button PROC Help_Disp: LOCAL HelpFile$(255) Helpfile$=gPath$+NomAppli$+".hlp" IF EXIST (helpfile$) IF gThread&<>0 ONERR HelpNotopen:: SETFOREGROUNDBYTHREAD&:(gThread&,0) ELSE HelpNotopen:: ONERR OFF gThread&=RUNAPP&:("Data",Helpfile$,"",0) ENDIF ELSE GIPRINT "Help file not found" ENDIF ENDP REM Kills the help task, if it exists PROC Help_End: IF gThread&<>0 REM kill help thread ONERR EndAnyway:: ENDTASK&:(gThread&,0) ENDIF EndAnyway:: ENDP