home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Meeting Pearls 3
/
Meeting_Pearls_III.iso
/
Pearls
/
dev
/
AmigaE
/
ArisModules
/
MeasConv
/
MeasConv.e
< prev
next >
Wrap
Text File
|
1995-09-07
|
28KB
|
723 lines
OPT OSVERSION=37
->
-> MeasConv.e (EASYGUI) © Aris Basic 1995
->
-> COMPILED_NAME:
-> MeasConv
->
-> COPYRIGHT (DISTRIBUTION):
-> GMYware
-> (see MeasConv.guide "GMYWare")
->
-> DESCRIPTION:
-> This Program Converts Some Metrics Measurments to English(American)
-> Measurments System.
->
->
-> HISTORY:
-> 17.08.1995 01.00 initial release
-> 18.08.1995 01.10 added locale library support
-> 29.08.1995 01.20 program is now commoditie
-> added arg and tooltype PUBSCREEN
-> 30.08.1995 01.21 added Kilometers conversion (on Peter 'Stoebi' Schulz`s request)
-> added NODEFAULTPUBSCREEN argument and tooltype
-> 31.08.1995 01.22 removed dumb Bug which would cause opening main window
-> on hotkey also when an converter window is opened
-> 03.09.1995 01.23 removed some nasty Enforcer Hits which i could find on my
-> EC030 machine :))
-> added Menu Option and Gadget (on Peter 'Stoebi' Schulz`s request)
-> on Child Windows for opening of Main Window
-> if these is closed
-> 07.09.1995 01.50 now uses measconv.library
->
->
->
->
OPT PREPROCESS
->#define DEBUG
-> Modules
MODULE 'icon','commodities','measconv',
'libraries/commodities',
'libraries/gadtools',
'intuition/intuition',
'exec/nodes',
'dos/dostags',
'utility/tagitem',
'amigalib/argarray',
'amigalib/cx',
'tools/easygui',
'tools/exceptions',
'tools/blockinput',
'oomodules/eLocale',
'oomodules/msgport'
->// Locale ID`s
ENUM MSG_MENU_PROJEKT,MSG_ABOUT,MSG_MENU_CONVERTORS,MSG_MENU_LENGTH,MSG_MENU_OTHER,
MSG_QUIT,MSG_GUI_LENGTH,MSG_GUI_OTHER,MSG_REQ_OK,MSG_GUI_WIN_LEN_TITLE,
MSG_GUI_WIN_OTH_TITLE,MSG_GUI_WIN_LEN_TXT,MSG_GUI_CENTIMETERS,MSG_GUI_INCHES,
MSG_GUI_FEETS,MSG_GUI_MILES,MSG_GUI_WIN_OTH_TXT_1,MSG_GUI_WIN_OTH_TXT_2,MSG_GUI_KILOGRAMS,
MSG_GUI_POUNDS,MSG_GUI_CELSIUS,MSG_GUI_FAHRENHEIT,MSG_GUI_KELVIN,MSG_TRANSLATOR_INFO,
MSG_ERROR_TITLE,MSG_ERROR_RUNNING,MSG_ERROR_CHECKTT,MSG_HIDE,MSG_MENU_QUIT_MC,MSG_EXIT,
MSG_GUI_KILOMETERS,MSG_BACKTOMAIN
->///
->// Exceptions
ENUM ERR_BRKR,ERR_ARG,ERR_CRCX,ERR_CXERR,ERR_LIB,ERR_PORT,ERR_HOTKEY
RAISE ERR_BRKR IF CxBroker()=NIL,
ERR_CRCX IF CreateCxObj()=NIL,
ERR_LIB IF OpenLibrary()=NIL
->///
->// CxEvents IDs
ENUM EVT_HOTKEY1,EVT_HOTKEY2,EVT_HOTKEY3
->///
->// Global Variables
OBJECT config
mpopup,lpopup,opopup,nopopup
ENDOBJECT
DEF gadget_cm:PTR TO LONG,gadget_inch:PTR TO LONG,
gadget_ft:PTR TO LONG,gadget_mile:PTR TO LONG,
gadget_kg:PTR TO LONG,gadget_pound:PTR TO LONG,
gadget_c:PTR TO LONG,gadget_f:PTR TO LONG,
gadget_k:PTR TO LONG,lgh1=NIL:PTR TO guihandle,
lgh2=NIL:PTR TO guihandle,gui=NIL:PTR TO guihandle,
myreq:requester,local:PTR TO eLocale,
conf:PTR TO config,dummy,quit=FALSE,
hidden,brokerport:PTR TO msgport,broker,
hotkey1,hotkey2,hotkey3,pubscreen=NIL,pubscreen_name[100]:STRING,
gadget_km:PTR TO LONG,guidata
->///
->// Gadget Functions (Convert)
PROC cm_gadget(info,valuestr)
DEF value=0,s[20]:STRING,inch=0,ft=0
value:=RealVal(valuestr)
setstr(lgh1,gadget_inch,RealF(s,(inch:=Cm2inch(value)),6))
StrCopy(s,NIL)
setstr(lgh1,gadget_ft,RealF(s,(ft:=Inch2ft(inch)),6))
StrCopy(s,NIL)
setstr(lgh1,gadget_mile,RealF(s,Ft2mile(ft),6))
StrCopy(s,NIL)
IF info<>10 THEN setstr(lgh1,gadget_km,RealF(s,(value/100000.0),6))
ENDPROC
PROC inch_gadget(info,valuestr)
DEF value=0,s[20]:STRING,ft=0,cm=0
value:=RealVal(valuestr)
setstr(lgh1,gadget_cm,RealF(s,(cm:=Inch2cm(value)),6))
StrCopy(s,NIL)
setstr(lgh1,gadget_km,RealF(s,(cm/100000.0),6))
StrCopy(s,NIL)
setstr(lgh1,gadget_ft,RealF(s,(ft:=Inch2ft(value)),6))
StrCopy(s,NIL)
setstr(lgh1,gadget_mile,RealF(s,Ft2mile(ft),6))
ENDPROC
PROC ft_gadget(info,valuestr)
DEF value=0:LONG,s[20]:STRING,inch=0,cm=0
value:=RealVal(valuestr)
setstr(lgh1,gadget_inch,RealF(s,(inch:=Ft2inch(value)),6))
StrCopy(s,NIL)
setstr(lgh1,gadget_cm,RealF(s,(cm:=Inch2cm(inch)),6))
StrCopy(s,NIL)
setstr(lgh1,gadget_km,RealF(s,(cm/100000.0),6))
StrCopy(s,NIL)
setstr(lgh1,gadget_mile,RealF(s,Ft2mile(value),6))
ENDPROC
PROC mile_gadget(info,valuestr)
DEF value=0,s[20]:STRING,inch=0,ft=0
value:=RealVal(valuestr)
setstr(lgh1,gadget_ft,RealF(s,(ft:=Mile2ft(value)),6))
StrCopy(s,NIL)
setstr(lgh1,gadget_inch,RealF(s,(inch:=Ft2inch(ft)),6))
StrCopy(s,NIL)
setstr(lgh1,gadget_cm,RealF(s,Inch2cm(inch),6))
StrCopy(s,NIL)
setstr(lgh1,gadget_km,RealF(s,Mile2km(value),6))
ENDPROC
PROC kg_gadget(info,valuestr)
DEF value=0:LONG,s[20]:STRING
value:=RealVal(valuestr)
setstr(lgh2,gadget_pound,RealF(s,Kg2pound(value),6))
ENDPROC
PROC pound_gadget(info,valuestr)
DEF value=0:LONG,s[20]:STRING
value:=RealVal(valuestr)
setstr(lgh2,gadget_kg,RealF(s,Pound2kg(value),6))
ENDPROC
PROC c_gadget(info,valuestr)
DEF value=0:LONG,s[20]:STRING
value:=RealVal(valuestr)
setstr(lgh2,gadget_f,RealF(s,Cg2fg(value),6))
StrCopy(s,NIL)
setstr(lgh2,gadget_k,RealF(s,Cg2kg(value),6))
ENDPROC
PROC f_gadget(info,valuestr)
DEF value=0:LONG,s[20]:STRING
value:=RealVal(valuestr)
setstr(lgh2,gadget_c,RealF(s,Fg2cg(value),6))
StrCopy(s,NIL)
setstr(lgh2,gadget_k,RealF(s,Fg2kg(value),6))
ENDPROC
PROC k_gadget(info,valuestr)
DEF value=0:LONG,s[20]:STRING
value:=RealVal(valuestr)
setstr(lgh2,gadget_c,RealF(s,Kg2cg(value),6))
StrCopy(s,NIL)
setstr(lgh2,gadget_f,RealF(s,Kg2fg(value),6))
ENDPROC
PROC km_gadget(info,valuestr)
DEF value=0:LONG,s[20]:STRING,cm=0
value:=RealVal(valuestr)
cm:=value*100000.0
RealF(s,cm,2)
setstr(lgh1,gadget_cm,s)
cm_gadget(10,s)
ENDPROC
->///
->// Function for Length GUI
PROC gui_length(info)
DEF sig,res,msg,msgid,msgtype,lgh1menu:PTR TO newmenu
lgh1menu:=[NM_TITLE,NIL,local.getstring(MSG_MENU_PROJEKT),0,0,0,0,
NM_ITEM,NIL,local.getstring(MSG_BACKTOMAIN),'B',0,0,2,
NM_ITEM,NIL,local.getstring(MSG_EXIT),'X',0,0,5,
NM_ITEM,NIL,NM_BARLABEL,0,0,0,0,
NM_ITEM,NIL,local.getstring(MSG_MENU_QUIT_MC),'Q',0,0,{quit_func},
NM_END]:newmenu
IF gui THEN beginWait(gui.wnd,myreq)
IF ((gui=NIL) AND (pubscreen=NIL)) THEN setscreen()
lgh1:=guiinit(local.getstring(MSG_GUI_WIN_LEN_TITLE),[EQROWS,
[TEXT,local.getstring(MSG_GUI_WIN_LEN_TXT),NIL,TRUE,5],
[BAR],
gadget_cm:=NEW [STR,{cm_gadget},local.getstring(MSG_GUI_CENTIMETERS),'0',20,5],
gadget_km:=NEW [STR,{km_gadget},local.getstring(MSG_GUI_KILOMETERS),'0',20,5],
gadget_inch:=NEW [STR,{inch_gadget},local.getstring(MSG_GUI_INCHES),'0',20,5],
gadget_ft:=NEW [STR,{ft_gadget},local.getstring(MSG_GUI_FEETS),'0',20,5],
gadget_mile:=NEW [STR,{mile_gadget},local.getstring(MSG_GUI_MILES),'0',20,5],
[BAR],
[EQCOLS,
[SBUTTON,2,local.getstring(MSG_BACKTOMAIN)],
[SBUTTON,5,local.getstring(MSG_EXIT)]]],NIL,pubscreen,NIL,lgh1menu)
REPEAT
sig:=Wait((lgh1.sig OR brokerport.sigbitA()))
IF sig=lgh1.sig
res:=guimessage(lgh1)
IF res>=0
cleangui(lgh1)
lgh1:=NIL
IF (gui AND myreq) THEN endWait(gui.wnd,myreq)
IF res=2
IF gui=NIL THEN doGUI(5)
ENDIF
ENDIF
ELSEIF sig=brokerport.sigbitA()
WHILE msg:=brokerport.getmsg()
msgid:=CxMsgID(msg)
msgtype:=CxMsgType(msg)
brokerport.reply(msg)
SELECT msgtype
CASE CXM_IEVENT
SELECT msgid
CASE EVT_HOTKEY1
NOP
CASE EVT_HOTKEY2
IF lgh1
NOP
ELSE
gui_length(5)
ENDIF
CASE EVT_HOTKEY3
IF lgh2
NOP
ELSE
gui_other(5)
ENDIF
DEFAULT
NOP
ENDSELECT
CASE CXM_COMMAND
SELECT msgid
CASE CXCMD_DISABLE
NOP
CASE CXCMD_ENABLE
NOP
CASE CXCMD_KILL
quit:=TRUE
CASE CXCMD_APPEAR
IF gui
NOP
ELSE
cleangui(lgh1)
doGUI(5)
ENDIF
CASE CXCMD_DISAPPEAR
hidden:=TRUE
IF gui
IF myreq THEN endWait(gui.wnd,myreq)
cleangui(gui)
gui:=NIL
ENDIF
IF lgh1
cleangui(lgh1)
gui:=NIL
ENDIF
IF lgh2
cleangui(lgh2)
gui:=NIL
ENDIF
IF pubscreen THEN unsetscreen()
res:=1
DEFAULT
NOP
ENDSELECT
DEFAULT
NOP
ENDSELECT
ENDWHILE
ENDIF
UNTIL ((res>=0) OR (quit=TRUE))
IF ((gui=NIL) AND (hidden=FALSE)) THEN hidden:=TRUE
IF ((gui=NIL) AND pubscreen) THEN unsetscreen()
ENDPROC
->///
->// Function for Other GUI
PROC gui_other(info)
DEF msg,msgid,msgtype,res,sig,lgh2menu:PTR TO newmenu
lgh2menu:=[NM_TITLE,NIL,local.getstring(MSG_MENU_PROJEKT),0,0,0,0,
NM_ITEM,NIL,local.getstring(MSG_BACKTOMAIN),'B',0,0,2,
NM_ITEM,NIL,local.getstring(MSG_EXIT),'X',0,0,5,
NM_ITEM,NIL,NM_BARLABEL,0,0,0,0,
NM_ITEM,NIL,local.getstring(MSG_MENU_QUIT_MC),'Q',0,0,{quit_func},
NM_END]:newmenu
IF gui THEN beginWait(gui.wnd,myreq)
IF ((gui=NIL) AND (pubscreen=NIL)) THEN setscreen()
lgh2:=guiinit(local.getstring(MSG_GUI_WIN_OTH_TITLE),[EQROWS,
[TEXT,local.getstring(MSG_GUI_WIN_OTH_TXT_1),NIL,TRUE,5],
[BAR],
gadget_kg:=NEW [STR,{kg_gadget},local.getstring(MSG_GUI_KILOGRAMS),'0',20,5],
gadget_pound:=NEW [STR,{pound_gadget},local.getstring(MSG_GUI_POUNDS),'0',20,5],
[BAR],
[TEXT,local.getstring(MSG_GUI_WIN_OTH_TXT_2),NIL,TRUE,5],
[BAR],
gadget_c:=NEW [STR,{c_gadget},local.getstring(MSG_GUI_CELSIUS),'0',20,5],
gadget_f:=NEW [STR,{f_gadget},local.getstring(MSG_GUI_FAHRENHEIT),'0',20,5],
gadget_k:=NEW [STR,{k_gadget},local.getstring(MSG_GUI_KELVIN),'0',20,5],
[BAR],
[EQCOLS,
[SBUTTON,2,local.getstring(MSG_BACKTOMAIN)],
[SBUTTON,5,local.getstring(MSG_EXIT)]]],NIL,pubscreen,NIL,lgh2menu)
REPEAT
sig:=Wait((lgh2.sig OR brokerport.sigbitA()))
IF sig=lgh2.sig
res:=guimessage(lgh2)
IF res>=0
cleangui(lgh2)
lgh2:=NIL
IF (gui AND myreq) THEN endWait(gui.wnd,myreq)
IF res=2
IF gui=NIL THEN doGUI(5)
ENDIF
ENDIF
ELSEIF sig=brokerport.sigbitA()
WHILE msg:=brokerport.getmsg()
msgid:=CxMsgID(msg)
msgtype:=CxMsgType(msg)
brokerport.reply(msg)
SELECT msgtype
CASE CXM_IEVENT
SELECT msgid
CASE EVT_HOTKEY1
NOP
CASE EVT_HOTKEY2
IF lgh1
NOP
ELSE
gui_length(5)
hidden:=FALSE
ENDIF
CASE EVT_HOTKEY3
IF lgh2
NOP
ELSE
gui_other(5)
hidden:=FALSE
ENDIF
DEFAULT
NOP
ENDSELECT
CASE CXM_COMMAND
SELECT msgid
CASE CXCMD_DISABLE
NOP
CASE CXCMD_ENABLE
NOP
CASE CXCMD_KILL
quit:=TRUE
CASE CXCMD_APPEAR
IF (gui OR (hidden=FALSE))
NOP
ELSE
cleangui(lgh2)
doGUI(5)
hidden:=FALSE
ENDIF
CASE CXCMD_DISAPPEAR
hidden:=TRUE
IF gui
IF myreq THEN endWait(gui.wnd,myreq)
cleangui(gui)
gui:=NIL
ENDIF
IF lgh1
cleangui(lgh1)
lgh1:=NIL
ENDIF
IF lgh2
cleangui(lgh2)
lgh2:=NIL
ENDIF
IF pubscreen THEN unsetscreen()
res:=1
DEFAULT
NOP
ENDSELECT
DEFAULT
NOP
ENDSELECT
ENDWHILE
ENDIF
UNTIL ((res>=0) OR (quit=TRUE))
IF ((gui=NIL) AND (hidden=FALSE)) THEN hidden:=TRUE
IF ((gui=NIL) AND pubscreen) THEN unsetscreen()
ENDPROC
->///
->// About Requester
PROC about(info)
DEF eereq:PTR TO easystruct,result,string[200]:STRING,title[20]:STRING
StringF(string,'\s\n\s\n\s\n\s',' MeasConv By Aris Basic',' GMYware 1995 ',{version},local.getstring(MSG_TRANSLATOR_INFO))
StringF(title,'\s \s\c',local.getstring(MSG_ABOUT),'MeasConv',$a0)
NEW eereq
eereq.structsize:=SIZEOF easystruct
eereq.flags:=NIL
eereq.title:=title
eereq.textformat:=string
eereq.gadgetformat:=local.getstring(MSG_REQ_OK)
beginWait(gui.wnd,myreq)
result:=EasyRequestArgs(NIL,eereq,NIL,NIL)
endWait(gui.wnd,myreq)
ENDPROC -1
->///
->// Locale Library Initalization
PROC initLocale()
NEW local
local.init(['Project','About','Convertors','Length',
'Other','Quit','Length Converter','Other Convertors',
'Ok','Length Converter Window','Other Converters Window',
'Length Converter','Centimeters','Inches','Feets',
'Miles','Weigth Converter','Temperature Converter',
'Kilograms','Pounds','Celsius','Fahreheit','Kelvin',
'Built in English by Aris Basic','Error',
'Program Is Started Before','Check ToolTypes(Arguments)!',
'Hide','Quit MeasConv','Exit','Kilometers',
'BackToMain'],'measconv.catalog')
ENDPROC
->//
->// GUI Start
PROC doGUI(info)
DEF menues:PTR TO newmenu
menues:=[NM_TITLE,NIL,local.getstring(MSG_MENU_PROJEKT),0,0,0,0,
NM_ITEM,NIL,local.getstring(MSG_ABOUT),'?',0,0,{about},
NM_ITEM,NIL,NM_BARLABEL,0,0,0,0,
NM_ITEM,NIL,local.getstring(MSG_MENU_CONVERTORS),0,0,0,0,
NM_SUB,NIL,local.getstring(MSG_MENU_LENGTH),'L',0,0,{gui_length},
NM_SUB,NIL,local.getstring(MSG_MENU_OTHER),'O',0,0,{gui_other},
NM_ITEM,NIL,NM_BARLABEL,0,0,0,0,
NM_ITEM,NIL,local.getstring(MSG_HIDE),'H',0,0,25,
NM_ITEM,NIL,local.getstring(MSG_QUIT),'Q',0,0,5,
NM_END]:newmenu
gui:=guiinit('MeasConv 1.50',guidata:=NEW [EQROWS,
NEW [BEVEL,
NEW [EQROWS,
NEW [TEXT,' MeasConv 1.50 ',NIL,FALSE,5],
NEW [TEXT,' © Aris Basic 1995',NIL,FALSE,5],
NEW [TEXT,' GMYware ',NIL,FALSE,5]]],
NEW [SBUTTON,{gui_length},local.getstring(MSG_GUI_LENGTH)],
NEW [SBUTTON,{gui_other},local.getstring(MSG_GUI_OTHER)],
NEW [BAR],
NEW [SBUTTON,{about},local.getstring(MSG_ABOUT)],
NEW [BAR],
NEW [EQCOLS,
NEW [SBUTTON,25,local.getstring(MSG_HIDE)],
NEW [SBUTTON,5,local.getstring(MSG_QUIT)]]],NIL,pubscreen,NIL,menues)
ENDPROC
->///
->// Error Requester
PROC reqerror(txt)
DEF eereq:PTR TO easystruct,result,string[150]:STRING,title[20]:STRING
StringF(string,'\s\n',txt)
StringF(title,'\s\c',local.getstring(MSG_ERROR_TITLE),$a0)
NEW eereq
eereq.structsize:=SIZEOF easystruct
eereq.flags:=NIL
eereq.title:=title
eereq.textformat:=string
eereq.gadgetformat:=local.getstring(MSG_REQ_OK)
result:=EasyRequestArgs(NIL,eereq,NIL,NIL)
ENDPROC
->///
->// Function quit_func()
PROC quit_func()
quit:=TRUE
ENDPROC
->///
->// Function setscreen()
PROC setscreen()
pubscreen:=LockPubScreen(pubscreen_name)
ENDPROC
->///
->// Function unsetscreen()
PROC unsetscreen()
IF pubscreen THEN UnlockPubScreen(pubscreen_name,pubscreen)
pubscreen:=NIL
ENDPROC
->///
->// Function readargCLI()
PROC readargCLI()
DEF arguments:PTR TO LONG,rdarg
arguments:=[0,0,0]
IF rdarg:=ReadArgs('NOPOPUP/S,PUBSCREEN/K,NODEFAULTPUBSCREEN=NODPS/S',arguments,NIL)
IF arguments[0] THEN conf.nopopup:=TRUE
IF arguments[1] THEN StrCopy(pubscreen_name,arguments[1])
IF arguments[2]=FALSE
IF pubscreen_name=NIL THEN StrCopy(pubscreen_name,NIL)
ELSE
StrCopy(pubscreen_name,'Workbench')
ENDIF
FreeArgs(rdarg)
ENDIF
ENDPROC
->///
->// Function readargWB()
PROC readargWB()
DEF ttypes,check,check2
iconbase:=OpenLibrary('icon.library',0)
ttypes:=argArrayInit()
check:=argInt(ttypes,'NOPOPUP',-5)
#ifdef DEBUG
PrintF(' NOPOPUP \d\n',check)
#endif
IF (check>-5) THEN conf.nopopup:=TRUE
StrCopy(conf.mpopup,argString(ttypes,'MAIN_HOTKEY',conf.mpopup))
#ifdef DEBUG
PrintF(' MAIN_HOTKEY \s\n',conf.mpopup)
#endif
StrCopy(conf.lpopup,argString(ttypes,'LENGTH_HOTKEY',conf.lpopup))
#ifdef DEBUG
PrintF(' LENGTH_HOTKEY \s\n',conf.lpopup)
#endif
StrCopy(conf.opopup,argString(ttypes,'OTHER_HOTKEY',conf.opopup))
#ifdef DEBUG
PrintF(' OTHER_HOTKEY \s\n',conf.opopup)
#endif
StrCopy(pubscreen_name,argString(ttypes,'PUBSCREEN',NIL))
check2:=argInt(ttypes,'NODEFAULTPUBSCREEN',-5)
#ifdef DEBUG
PrintF(' NODPS \d\n',check2)
#endif
IF (check2=-5)
IF StrCmp(pubscreen_name,NIL) THEN StrCopy(pubscreen_name,NIL)
ELSE
StrCopy(pubscreen_name,'Workbench')
ENDIF
#ifdef DEBUG
PrintF(' PUBSCREEN \s\n',pubscreen_name)
#endif
argArrayDone()
IF iconbase THEN CloseLibrary(iconbase)
ENDPROC
->///
->// Function goNormal()
PROC goNormal() HANDLE
DEF sig,
res,msg,msgid,msgtype
res:=-1
cxbase:=OpenLibrary('commodities.library',0)
NEW brokerport.create('MEASCONV.CX')
broker:=CxBroker([NB_VERSION,0,
'MeasConv',
'MeasConv 1.50',
'A Measurment Converter By Aris Basic',
NBU_UNIQUE,
COF_SHOW_HIDE,
0,0,brokerport.msgport,0]:newbroker,NIL)
IF NIL=(hotkey1:=hotKey(conf.mpopup,brokerport.msgport,EVT_HOTKEY1)) THEN Raise(ERR_HOTKEY)
IF NIL=(hotkey2:=hotKey(conf.lpopup,brokerport.msgport,EVT_HOTKEY2)) THEN Raise(ERR_HOTKEY)
IF NIL=(hotkey3:=hotKey(conf.opopup,brokerport.msgport,EVT_HOTKEY3)) THEN Raise(ERR_HOTKEY)
AttachCxObj(broker,hotkey1)
AttachCxObj(broker,hotkey2)
AttachCxObj(broker,hotkey3)
IF CxObjError(hotkey1)<> FALSE THEN Raise(ERR_CXERR)
IF CxObjError(hotkey2)<> FALSE THEN Raise(ERR_CXERR)
IF CxObjError(hotkey3)<> FALSE THEN Raise(ERR_CXERR)
ActivateCxObj(broker,TRUE)
IF conf.nopopup<>TRUE
setscreen()
doGUI(5)
ENDIF
WHILE (((res<0) OR (res=25) AND (quit=FALSE)))
sig:=Wait(IF gui THEN (gui.sig OR brokerport.sigbitA()) ELSE brokerport.sigbitA())
IF sig=gui.sig
res:=guimessage(gui)
IF ((res>=0) AND (res<>25))
cleangui(gui)
gui:=NIL
IF hidden=FALSE THEN quit:=TRUE
ELSEIF res=25
cleangui(gui)
disposegui(guidata)
hidden:=TRUE
gui:=NIL
ENDIF
ELSEIF sig=brokerport.sigbitA()
WHILE msg:=brokerport.getmsg()
msgid:=CxMsgID(msg)
msgtype:=CxMsgType(msg)
brokerport.reply(msg)
SELECT msgtype
CASE CXM_IEVENT
SELECT msgid
CASE EVT_HOTKEY1
IF gui
NOP
ELSE
IF pubscreen=NIL THEN setscreen()
doGUI(5)
hidden:=FALSE
ENDIF
CASE EVT_HOTKEY2
IF lgh1
NOP
ELSE
gui_length(5)
hidden:=FALSE
ENDIF
CASE EVT_HOTKEY3
IF lgh2
NOP
ELSE
gui_other(5)
hidden:=FALSE
ENDIF
DEFAULT
NOP
ENDSELECT
CASE CXM_COMMAND
SELECT msgid
CASE CXCMD_DISABLE
NOP
CASE CXCMD_ENABLE
NOP
CASE CXCMD_KILL
quit:=TRUE
CASE CXCMD_APPEAR
IF ((hidden=FALSE) OR gui)
NOP
ELSE
setscreen()
doGUI(5)
hidden:=FALSE
ENDIF
CASE CXCMD_DISAPPEAR
hidden:=TRUE
IF gui
cleangui(gui)
gui:=NIL
ENDIF
IF lgh1
cleangui(lgh1)
lgh1:=NIL
ENDIF
IF lgh2
cleangui(lgh2)
lgh2:=NIL
ENDIF
unsetscreen()
res:=1
DEFAULT
NOP
ENDSELECT
DEFAULT
NOP
ENDSELECT
ENDWHILE
ENDIF
ENDWHILE
IF broker THEN DeleteCxObjAll(broker)
IF brokerport THEN END brokerport
Raise(0)
EXCEPT
IF broker THEN DeleteCxObjAll(broker)
IF lgh1 THEN cleangui(lgh1)
IF lgh2 THEN cleangui(lgh2)
IF gui THEN cleangui(gui)
IF brokerport THEN END broker
ENDPROC
->///
->// main() Program
PROC main() HANDLE
initLocale()
measconvbase:=OpenLibrary('measconv.library',0)
conf:=['rawkey lalt m','rawkey lalt l','rawkey lalt o',FALSE]:config
IF FindPort('MEASCONV.CX') THEN Raise(-15)
IF FindPort('MEASCONV') THEN Raise(-15)
IF wbmessage=NIL
readargCLI()
ELSE
readargWB()
ENDIF
goNormal()
Raise(0)
EXCEPT
IF measconvbase THEN CloseLibrary(measconvbase)
IF iconbase THEN CloseLibrary(iconbase)
IF cxbase THEN CloseLibrary(cxbase)
IF pubscreen THEN unsetscreen()
SELECT exception
CASE -15
reqerror(local.getstring(MSG_ERROR_RUNNING))
CASE 0
VOID dummy:=10
DEFAULT
report_exception()
ENDSELECT
IF local THEN END local
ENDPROC
->///
version:
CHAR '$VER: MeasConv (EASYGUI) 01.50 (07.09.95) © Aris Basic\n',0