ATTACHEDWINDOWAnInterlisp-DpackageformanipulatingwindowsingroupsWrittenby:RichardR.BurtonLastmodified:April12,1984,vanMelleLocatedon:Library>ATTACHEDWINDOW.DCOMIntroductionATTACHEDWINDOWisapackagedesignedtomakeiteasytomanipulateagroupofwindowasaunit.StandardoperationslikeMOVE,RESHAPE,OPENandCLOSEcanbedonesothatitappearstotheuserasifthewindowsareasingleentity.Eachcollectionofattachedwindowshasonemainwindowandanynumberofotherwindowsthatare"attached"toit.Movingorreshapingthemainwindowcausesalloftheattachedwindowstobemovedorreshapedaswell.Movingorreshapinganattachedwindowdoesnotaffectthemainwindow.Theinitialmotivationforattachedwindowswastoallowmultiplemenustobeassociatedwiththesamewindowbutthereisnorestrictiononwhatwindowscanbeattached.(ATTACHWINDOWWINDOWTOATTACHMAINWINDOWEDGEPOSITIONONEDGEWINDOWCOMACTION)AssociatesWINDOWTOATTACHwithMAINWINDOWsothatshape,move,close,shrinkandexpandoperationsdonetoMAINWINDOWarealsodonetoWINDOWTOATTACH.ATTACHWINDOWmovesWINDOWTOATTACHtoitspositionrelativetoMAINWINDOWbutdoesnotopenit.EDGEandPOSITIONONEDGEindicatewhereWINDOWTOATTACHistobepositioned.TheargumentEDGEdetermineswhichedge:TOP,BOTTOM,LEFT,orRIGHT.Thedefault,usedifEDGEisNIL,isTOP.TheargumentPOSITIONONEDGEdetermineswherealongedgethewindowispositioned:JUSTIFYmeansthattheattachedwindowistofilltheentireedge.ATTACHWINDOWreshapesthewindowifnecessary;LEFTorRIGHTfortheleftorright(foraTOPorBOTTOMedge);BOTTOMorTOPforthebottomortop(ofaLEFTorRIGHTedge);CENTERforthecenteroftheedge.ThedefaultforPOSITIONONEDGEisJUSTIFY.ThesizethatisfilledbythejustificationincludestheextentofanyotherwindowsthathavealreadybeenattachedtoMAINWINDOW.Thus(ATTACHWINDOWAMW'RIGHT'JUSTIFY)followedby(ATTACHWINDOWBMW'TOP'JUSTIFY)willputBacrossthetopofbothMWandA.WINDOWCOMACTIONprovidesaconvenientwayofsettingthewaytheattachedwindowrespondstorightbuttoning.IfWINDOWCOMACTIONisMAIN,theDOWINDOWCOMFNofWINDOWTOATTACHissettoDOMAINWINDOWCOMFN.IfWINDOWCOMACTIONisHERE,theDOWINDOWCOMFNofWINDOWTOATTACHisnotchanged.IfWINDOWCOMACTIONisLOCALCLOSE,theDOWINDOWCOMFNofWINDOWTOATTACHissettoDOATTACHEDWINDOWCOM2.Otherwise,theDOWINDOWCOMFNofWINDOWTOATTACHissettoDOATTACHEDWINDOWCOM.Thesefunctionsaredescribedbelowinthesectionon"attachedwindowmenucommands."(DETACHWINDOWWINDOWTODETACH)DetachesWINDOWTODETACHfromitsmainwindow.ReturnsadottedpairwhoseCARisEDGEandwhoseCDRisPOSITIONONEDGEifWINDOWTODETACHwasanattachedwindow.ReturnsNILotherwise.ThisdoesnotcloseWINDOWTODETACH.BehavioronstandardwindowoperationsWhenawindowoperation,suchasmovingorclearing,isperformedonawindow,thereisaquestionaboutpî êïc/î!õïbq î3_ïbrïbî3eïbîï_Àsî, î" î'î)* î1Qî6Ïî8Oî¦îBÍîEtîJîJïDæîàïC@ î~îåîŠîŠïC@uïC@ î#þïC@sïC@î$zî&Äî)†î,íî.‘î.‘ïC@uïC@ î:$ïC@sïC@î:øî;tî;tïC@rïC@ îEˆïC@sïC@îFîJîJïC@îàïA‘u îsïA‘sïA‘îËîKî÷î$î(²î*2î*2ïA‘uïA‘ î2¦ïA‘sïA‘î2þî5Pî8Qî:—î=Úî?ïA‘îàï>Ñuî ï>Ñsï>Ñîfîóîóï>Ñuï>Ñ î ï>Ñsï>Ñî Ûî%Ùî)Æî)Æï>Ñuï>Ñ î5Yï>Ñsï>Ñî5µî6÷î8{î:B îAîArîDîJîJï>Ñîàï=+uî ï=+sï=+îo îPî:î!×î!×ï=+rï=+î$\ï=+sï=+î%î%ï=+rï=+î*#ï=+sï=+î*àî*àï=+rï=+î.<ï=+sï=+î.øî0›î0›ï=+rï=+î4Îï=+sï=+î5Šî5îî8¤î=€î@™îAÙîAÙï=+rï=+îE5ï=+sï=+îEšîFäîFäï=+rï=+îIiï=+sï=+îJîJï=+îàï;|îîï;|rï;|î£ï;|sï;|îRîªîSîLîLï;|uï;| î'Øï;|sï;|î(0 î/î2íî6|î9”î;Åî@¿îAý îH�ï;|î[ï8³rî<ï8³sï8³î—î¯îQî!„î&Ðî+Íî-î.‘î0‹î2¿î6~î9ðî:Kî:Kï8³rï8³ îD_ï8³sï8³îD¹îJîJï8³î[ï7îŒî†î¹ î Ãï7î[ï4Drî·ï4Dsï4Dîî¥î¥ï4Drï4DîØï4Dsï4Dî0î?î pî"¶î$Lî'nî)öî*óî*óï4Drï4Dî-xï4Dsï4Dî-Ðî/fî/fï4Drï4Dî4pï4Dsï4Dî4Èî8€ï4Dî[ï1{rîeï1{sï1{î½îSîSï1{rï1{îØï1{sï1{î0î?î pî%î&�î(ãî*çî+äî+äï1{rï1{î/@ï1{sï1{î/˜î1.î1.ï1{rï1{î5aï1{sï1{î5¹î9kï1{rï1{î9qï1{î[ï.²îeï.²sï.²î½îÌîýîñî!|î#­î&Êï.²îàï+éî‰îîîï+éuï+é î#›ï+ésï+éî#óî%1î%1ï+érï+éî+ï+ésï+éî+oï+éîàï) îÓî™î‚î î¶îÎî"I î)Ñî/Lî1Çî6î7Úî:—î>PîDîGîJîJï) îàï'zîœîäîFîàîàï'zuï'z î'Tï'zsï'zî(î(Žî+õî+õï'zrï'z î7Ñî9˜î<7îB1îIÀï'zsï'zîJîJï'zîàï%Ëîaî@î@ï%Ërï%Ë î#î$Ñî'fî+ªî39ï%Ësï%Ëî3¢î6-î8�î9Þî=Ìî@ îBdîCÿîG îJîJï%Ëîàï$îiîÍï$îàï!\uîXï!\sï!\îÅî"7î#I î*%î,äî.„î2Îî5î7Òî:î?vîD„îJîJï!\îàï¶î²î& îçî ‘î#8î#8ï¶uï¶î/°ï¶sï¶î1Zî3êî3êï¶rï¶î7Fï¶sï¶î9Hî;!ï¶rï¶î=J îH5ï¶sï¶îH�îJîJï¶îàïu îsïsïîCîùî aî"Yî"Yïrïî0 ïsïî1Çî2—î4eî4eïuïî@ÝïsïîA­îCcîCcïrïîF¿ïsïîGçîJîJïîàïXr îËïXsïXî9îÙîÙïXuïX î*lïXsïXî+Úî.-î1‰î83î9¡î< î< ïXuïXîHƒïXsïXîHÛîJîJïXîàï©r îFï©sï©îùî,î,ï©rï© î&ï©sï©î&qî'þî'þï©uï© î3‘ï©sï©î3ëî5+î7î8žî8žï©rï©îIjï©sï©îJîJqîJqï©îàïú îòîŽîŽïúrïú î$yïúsïúî%<î'2î'2ïúuïú î2Åïúsïúî3ˆî51î7‹î9uî9uïúrïúîIjïúsïúîJîJqîJqïúîàïKî²î}î£î!›î%wî&÷î)(î-“î/kî5dî:^î> îExïKî êï¿r î¬î¬ï¿uï¿ î"[ï¿rï¿î#8ï¿îàïösî¼î¼ïöuïö î!kïösïöî!èî%Eî'î*‰î/ÿî0|î5¨î6Êî;î=ÜîAÿîAÿïörïöîD„ïösïöîEîFdîFdïörïöîIÀïösïöîJîJïöîàïGî”î½î½ïGrïGîBïGsïGîÆî/î/ïGrïG î&ñïGsïGî'uî(Óî(ÓïGuïG î4‚ïGsïGî5î7¯î9�î?îDŽîEîJîJïGîàï˜rîeï˜sï˜î½ î îcîMîNî!”î$Ëî$Ëï˜uï˜ î0zï˜rï˜î1Wï˜î êï Dqîî‡î«î$Ç î.ï Drï Dî.ï Dî êïPsîßîéîð îJîYîæî$¶î&Xî+·î-î3 î5„î6Žî;ìî?Sî@�îA§îGîJÁîJÁïP ô êq?€[ÇXwhetherornotthatoperationalsobeperformedonthewindowsattachedtoitorperformedonthewindowitisattachedto.Thefollowingarethedefaultbehaviorsofmainandattachedwindowsunderthewindowoperationswheninvokedprogrammatically,e.g.,fromthefunctionsMOVEW,SHAPEW,etc.ThebehaviorwhenanoperationisinvokedfromthewindowmenudependsontheWINDOWCOMACTIONargumenttoATTACHWINDOW,orultimatelythewindow'sDOWINDOWCOMFNproperty.Mentionof"menu"belowassumesthatthewindowwasattachedusingthedefault(NIL)WINDOWCOMACTION.Thebehaviorforanyparticularoperationcan,ofcourse,bechangedforparticularwindowsbysettingthestandardwindowproperties(e.g.,MOVEFNorCLOSEFN)oftheparticularattachedwindow.Move:Ifthemainwindowmoves,allattachedwindowsmovewithit,andtherelativepositioningbetweenthemainwindowandtheattachedwindowsismaintained.Iftheregionisdeterminedinteractively,thepromptregionforthemoveistheunionoftheextentofthemainwindowandallattachedwindows.MOVEWmovesanattachedwindowwithoutaffectingthemainwindow.TheMovecommandinthewindowmenuisbydefaultpassedontothemainwindow,sothatallwindowsinthegroupmove.Reshape:Ifthemainwindowisreshaped,theminimumsizeofitandallofitsattachedwindowsisusedastheminimumofthespacefortheresult.Anyspacegreaterthantheminimumisdistributedamongthemainwindowanditsattachedwindows.SHAPEWreshapesanattachedwindowindependently.TheShapecommandinthewindowmenuisbydefaultpassedontothemainwindow.Close:Ifthemainwindowisclosed,alloftheattachedwindowsareclosedalsoandthelinksfromtheattachedwindowstothemainwindowarebroken.Thisisnecessaryforthewindowstobegarbagecollected.CLOSEWclosesanattachedwindowwithoutaffectingthemainwindow.Closeinthewindowmenuisbydefaultpassedontothemainwindow.IfWINDOWCOMACTIONofLOCALCLOSEwasspecifiedinthecalltoATTACHWINDOW,themenuCloseoperatesindependently.Notethatclosinganattachedwindowdoesnotdetachit.Open:Ifthemainwindowisopened,itopensallattachedwindowsandreestablisheslinksfromthemtothemainwindow.Attachedwindowscanbeopenedindependentlyandthisdoesnotaffectthemainwindow.Shrink:Thecollectionofwindowsshrinksasagroup.TheSHRINKFNsoftheattachedwindowsareevaluatedbuttheonlyicondisplayedistheoneforthemainwindow.{Howdoesthesystemknowthattheattachedwindowsareshrunkenratherthanclosed?Itdoesn't.Doesthismakeanydifference?}Redisplay:Themainorattachedwindowscanberedisplayedindependently.Totop:Ifanymainorattachedwindowisbroughttothetop,alloftheotherwindowsarebroughttothetopalso.Expand:Expandinganyofthewindowsexpandsthewholecollection.Scrolling:Allofthewindowsinvolvedinthegroupscrollindependently.Clear:Allwindowsclearindependentlyofeachother.AttachedwindowmenucommandsThequestionofhowtohandlethewindowcommandmenuofanyparticularwindow(eitherbyrightî êïc8î êïaßsîî±îîªîªîQî!î'ºî)œî+×î1_î6²î8<î9nî;îAªîCŒîEÇîJÁîJÁïaßî êï`9î 'î zîØîÄî1îïîâî î"dî&ðî-î.§î2 î4¨î:î?™îC�îEÇîJÁîJÁï`9î êï^“ îdîêîùî%î'³î*ëî-î2çî2çï^“rï^“î7ï^“sï^“î7Êî7Êï^“rï^“î<Ôï^“sï^“î=„î?Žï^“î êï[Êî ·îYîîêîî fî%™î(õî+Jî0hî4>î9 î;œî=ñî=ñï[Êuï[ÊîJiï[Êsï[ÊîJÁîJÁï[Êî êïZ$îêîrîrïZ$rïZ$ î†ïZ$sïZ$î=îÛ î%&î'^î-<î-<ïZ$rïZ$ î8'ïZ$sïZ$î8†î>Nî>­îDîE¯îJÁîJÁïZ$î êïXuîÆîãî‚î³î­î +î%tî(îî+î/–î0ïXurïXuî2”ïXusïXuî3eî3eïXuuïXuî?ÝïXusïXuî@:ïXuî êïU¬î ¯îIîtî î î$2î'î(©î-<î/î4uî6Ÿ î<½îBWîDAîH‘îJÂîJÂïU¬î êïTîTîN î’î¾î¾ïTrïTî#ÈïTsïTî$ î%¶î%¶ïTrïTî+—ïTsïTî,hî-óî0$ î6&î;oî@nïTî êïQ=vîCïQ=sïQ=îîwîÒî î]î]îÏî!–î&åî,iî/ÿî2ðî4vî7î9<î=ï îDÚîJîJïQ=îàïOvî™îoîñîî!»î'Œî-’î/X î7+î8 î9èî<¡îA<îC îJîJïOvîàïMÐ îÉîÿî½î"Ôî$èî'î*²î+õî.+î1õî3…î5»î9³î;Cî=yî@ËîEÊîHWîJîJïMÐîàïL*î)î¬ïL*îàïIjrîïIjsïIjî“îÏîºî ,î%Nî*Oî/ëî2Dî5»î;4î;´î>…îBiîH˜îJîJïIjîàïG»î4îRî(î‰î{î#î'pî)kî+î-dî0Õî6Kî8î:Èî<¬îBNîCòîFFîJîJïG»îàïFîuïFî êïCUvîÙïCUsïCUîµîîQîªî¯îøî#üî&8î,gî.îî0„î1·î4Kî6î7­î9dî>¸îDAîEŠîH—îJîJïCUîàïAŽîRî¶î‚îóî ºî# î%{î)®î*Gî-\î1#î5Ñî9î;zîAÞîC\ îJîJïAŽîàï?èî6îgîµî¯î!8î"äî(-î-°ï?èîàï=(rîêï=(sï=(îQîÀî“î!ìî&õ î0)î0‘î3Jî7Mî=Œî?îA]îFfîJîJï=(îàï;yîîìîcî™îqîñî!"î$pî)oï;yî êï8¹vî+ï8¹sï8¹î#î£î îyîïîîwî!óî#Üî%�î'èî-Yî2ÿî5Lî9qî<6î>çîA@îDˆîGçîJîJï8¹îàï6òî+î«î-îaî!±î&­î(Õî-°î. î0öî26î8î:-î<`îAàîCbîE'îJîJï6òîàï5L îmï5Lîàï2Œrîêï2Œsï2Œîîxîxî þî&6î+Lî0þî3lî6÷î<†î=î@óîB°îEîJîJï2Œîàï0Ýî©îÿîäîsîÁî!°î#Hî%�î(öî._î.Îî0;î0;ï0Ýuï0Ýî<³ï0Ýsï0Ýî="î>Åî>Åï0Ýrï0Ý îG+ï0Ýsï0ÝîGšîJîJï0Ýîàï/.î½î‘îîÅî™î™ï/.rï/. î(­ï/.sï/.î)±î,6î0<î4*î9» îC3îCßîGzîJîJï/.îàï-îJî îVî Pî#Qî#Qï-wï-î%.ï-sï-î%†î)¼î*éï-î êï*¬vîï*¬sï*¬îîxîéî6î î¶îî"2î#uî'Xî)5î.šî44î6Ù î>¯îAëîE>îH˜îJîJï*¬îàï(åîî_î^ï(åîàï&%î‹î îfî)î#× î,¤î/-î1Ÿî4 î6æî:‚î<³î@îEï&%î êï#evîÚï#esï#eîæîzî^ î™î_î!î%àî'�î(Õî-:î-Íî0²î0²ï#erï#eî7jï#esï#eî8�î:Hî<´îB9îGòîJîJï#eîàï!žîÝî5îkî[î 4î&&î'iî) î,"î.7î0mî3Áî9î<ûî@îB8îF‰îJîJï!žîàïøîÊîEîØî  î#î)2î-Zî0›î5qî6î7§î<Õî=xîAîC×îG¦îJîJïøîàïR îïRî êï’vî“ï’sï’îdî¼îeî³îIî’î$î&mî(0 î/E î8ï’î êï±vîzï±sï±î_îÌî5î½îîÉî'î#5î$ˆî)¢î+6î-|î0.î2î3£î5èî9lî>þîA9îFSîGçîJîJï±îàïêî&îÈïêî êï*vîTï*sï*î%î}î:î­î8îiî"çî(î*@î. î4rî4Êî5"î5(ï*î êïIvî9ïIsïIî îbî…îîAî¿î"&î#¦î%×î)©î-! î5óïIî êïhvîïhsïhîèî î‰î« î"xî$î'î*yïhî êï üqî5îQîxî(Íï ürï üî(Óï üî êïsî ÛîîQîmî4îÑî!Iî&Šî-î0ùî2Ëî5… î;ÎîAîE‹îG îJÂîJÂïÿ P êq?€[ÇbuttoningorbyacalltothefunctionDOWINDOWCOM)ishandledbythewindow'sDOWINDOWCOMFNproperty.TheWINDOWCOMACTIONargumenttoATTACHWINDOWselectsoneofthefollowingthreefunctionstobetheattachedwindow'sDOWINDOWCOMFNproperty,orleavesthepropertyNILifWINDOWCOMACTIONisHERE,meaningtousethestandardwindowcommandmenu,ignorantofthewindow'sattachments.TheprogrammercaninsteadsupplyherownDOWINDOWCOMFNpropertyifsomeotherbehaviorisdesired.(DOATTACHEDWINDOWCOMATTACHEDWLOCALCLOSEFLG)Thedefault(whenWINDOWCOMACTIONisNIL).Bringsupthewindowcommandmenuandthen,dependinguponthecommandselected,eitherpassesthecommandtothemainwindowofATTACHEDWorperformsitonATTACHEDW.IfLOCALCLOSEFLGisnon-NIL,theCLOSEcommandisappliedtoATTACHEDW.Otherwise,theCLOSEcommandispassedtothemainwindow.ThecommandsMOVE,RESHAPE,SHRINKandBURYarepassedtothemainwindow.TheothercommandsareperformedonATTACHEDW.(DOATTACHEDWINDOWCOM2ATTACHEDW)UsedwhenWINDOWCOMACTIONisLOCALCLOSE.Performs(DOATTACHEDWINDOWCOMATTACHEDWT)sothatthecommandCLOSEisperformedonATTACHEDW.(DOMAINWINDOWCOMFNATTACHEDW)UsedwhenWINDOWCOMACTIONisMAIN.PerformsDOWINDOWCOMonthewindowthatistheMAINWINDOWpropertyofATTACHEDW.Inotherwords,assumingtheDOWINDOWCOMFNofthemainwindowhasn'tbeenchanged,thispassesallwindowcommandsontothemainwindow.AttachingmenustowindowsATTACHEDWINDOWsupersedestheMENUEDWINDOWpackageandusersofitareencouragedtoconverttheircode.Thefollowingfunctionsareprovidedtoassociatemenustowindows.(ATTACHMENUMENUMAINWINDOWEDGEPOSITIONONEDGE)CreatesawindowthatcontainsthemenuMENU(bycallingMENUWINDOW,seebelow)andattachesittothewindowMAINWINDOWonedgeEDGEatpositionPOSITIONONEDGE.(MENUWINDOWMENUVERTFLG)ReturnsaclosedwindowthathasthemenuMENUinit.IfMENUisalist,amenuiscreatedwithMENUasitsitems.Otherwise,MENUshouldbeamenu.ThereturnedwindowhastheappropriateRESHAPEFN,MINSIZEandMAXSIZEwindowpropertiestoallowitsuseinawindowgroup.VERTFLGisprovidedtoallowconvenientsettingofthedefaultmenushapeandwillonlybeconsideredifboththeMENUROWSandMENUCOLUMNSfieldsofMENUareNIL.IfVERTFLGisnon-NIL,theMENUROWSfieldofMENUwillbesetto1;otherwisetheMENUCOLUMNSfieldofMENUwillbesetto1.(CREATEMENUEDWINDOWMENUWINDOWTITLELOCATIONWINDOWSPEC)Createsawindowwithanattachedmenuandreturnsthemainwindow.MENUistheonlyrequiredargument,andmaybeamenuoralistofmenuitems.WINDOWTITLEisastringspecifyingthetitleofthemainwindow.LOCATIONspecifiestheedgeonwhichtoplacethemenu,aswithATTACHWINDOW'sEDGEargument;thedefaultisTOP.WINDOWSPECisaREGION,specifyingaregionfortheaggregatewindow;ifNIL,theuserispromptedforaregion.ThisfunctionissimilartoMENUEDWINDOW'sfunctionMAKEMENUEDWINDOW.However,notethatitisnotanexactreplacement.Inparticular,theMENUWINDOWpropertyisnotused.Examples:î êïc8î êïaßsîUî>î_î¯î]î0îµî#Oî#Oïaßrïaß î,Œïaßsïaßî-°î/Aî4°î6Ñî9Uî?~î?~ïaßrïaß îJiïaßsïaßîJÁîJÁïaßî êï`0îîÒîãîãï`0uï`0î![ï`0sï`0î"î({î*cî*cï`0rï`0 î4wï`0sï`0î57î9²î<—î>ŠîA#îGhîJÂîJÂï`0î êï^�îRîoîÏîœî‚î$õî$õï^�rï^� î/àï^�sï^�î0Õî72î9eî=ßî@­îF²îF²ï^�rï^�îI7ï^�sï^�îI�îJÂîJÂï^�î êï\Òuîbï\Òsï\Òîî²î²ï\Òrï\Òîï\Òsï\Òîî#âî%¿î(dî*òî0¹î6î<�îAîF¨îH�îJÁîJÁï\Òî êï[#îé îÍîNî! î#úî&€î++î/”î2î5î5ï[#rï[# î?îï[#sï[#î@oîFîG]îJÁîJÁï[#î êïYtîYî×îîî\îbïYtî êïVèrî�î�ïVèuïVèî$G î.QïVèrïVèî/.ïVèîàïTsî‹îîîïTuïTî'~ïTsïTî'Øî)î)ïTrïTî+�ïTsïTî,Èî-"î1Bî3)î5\î:Xî@ŠîD>îFÉîJîJïTîàïRpîÜîªîFî#ßî)œî-Ãî2!î4¼î;Vî=@î?ÛîC“îH�îJîJïRpîàïPÊuîTïPÊsïPÊî-îDî pî"î$rî$rïPÊuïPÊî+æïPÊsïPÊî-î-ïî/Åî/ÅïPÊuïPÊ î9ÏïPÊsïPÊî:¨îîB„îDOîFÊîJîJïOîàïMlî[îÝî°î�î�ïMlrïMlî"éïMlsïMlî#Ãî#ÃïMlrïMlî)¤ïMlsïMlî*~î*~ïMlrïMlî/ˆïMlsïMlî0 î2½î2½ïMlrïMlî6ïMlsïMlî6›î8ëî=Kî>õîAPîDÈîJîJqîJqïMlîàïK½î‰îøî«îÑî%cî';î';ïK½uïK½î.¯ïK½sïK½î/ïK½rïK½î/ ïK½î êïHôîdîdïHôuïHôî$ØïHôrïHôî%¯ïHôsïHôî%µïHôîàïF+îúî6î6ïF+uïF+î$®ïF+sïF+î%¼î'°î'°ïF+rïF+ î0ïF+sïF+î1{î2‰î8ôî8ôïF+rïF+îJ—îJ—ïF+îàïD|uîTïD|rïD|î+îÙïD|sïD|î1îÇîfî —î&Æî&ÆïD|rïD|î*ùïD|sïD|î+Qî,�î3!î4ùî4ùïD|uïD|îêîvî-î-ï>êuï>êî#¥ï>êsï>êî$/î%žî%žï>êrï>êî(úï>êsï>êî)Úî*dî0Kî0Kï>êrï>ê î9ˆï>êsï>êî:î<î>}îC¨îFxîGçîJîJï>êîàï=;r îFï=;sï=;îÄîSî î ï=;uï=;î'xï=;sï=;î(Mî(Ëî*”î.)î2„î8vî:Íî:Íï=;rï=; îE¸ï=;sï=;îF6îGçîJîJï=;îàï;Œî.î(îûî)î$¿î'1î+%î,æî1àî8“î:kî;ëî>îAjîFcï;Œrï;ŒîFiï;Œî êï88qî¸îÚîöî#¤ï88rï88î#ªï88î êï5D î¬ï5Dsï5Dî î·îîîîï5Drï5D î*ï5Dsï5Dî*_î/uî2î5Xî6èî8î:A îAgîBìîGªîJÁîJÁï5Dî êï3•îXî°îYî7îî(î$Çî&Gî+ºî/ðî1pî6óï3•î êï1 r îþîþï1 uï1 îÎ î!ˆî$ø î/„ï1 rï1 î0aï1 îàï.@sî î£î£îIî"€î$·î(pî(pï.@uï.@î+úï.@sï.@î,Xî.¥î2Þî2Þï.@rï.@ î;Dï.@sï.@î;ûî>'îB‚îEîJîJï.@îàï,‘îîˆî¹î³î³ï,‘uï,‘ î"'ï,‘sï,‘î"î$Wî'oî'oï,‘uï,‘î*™ï,‘sï,‘î*ñî,\î1jî1jï,‘uï,‘ î;öï,‘sï,‘îkî@·îBí îJîJï%–îàï#ðrîoï#ðsï#ðî^î^ï#ðrï#ðî?ï#ðsï#ðîÖî!žî!žï#ðrï#ðî'ï#ðsï#ðî(î-P î3Óî5’î9Iî;5î=»î?zî@¶îEïîJîJpîJpï#ðîàï"Auî*ï"Asï"AîÔîdîUî'î"ñ î* î.’î0oî2òî7»î;¿î?ÃîBžîEkîHUîJîJï"Aîàï › îÊî5îyîâîâï ›rï ›î$šï ›sï ›î%*î'ëî'ëï ›rï › î1(ï ›sï ›î1¸î5tî77î77ï ›uï ›î:Áï ›sï ›î;Qî=¯î=¯ï ›rï ›î@4ï ›sï ›îAîA«îC8îC8ï ›uï ›îH‚ï ›sï ›îHÚîJîJï ›îàïìîŸïìrïìî$ïìsïìî îwîwïìrïìî/ïìsïìîÀî"úî$¾î$¾ïìuïìî(Hïìsïìî(Ùî+�î-‰î/²î1kî3%î9Uî;¿î;¿ïìrïì îDüïìsïìîE�îH�îJîJïìîàï=uîjï=sï=îÂî=îîïîoî|ï=î êï±rî¶î¶ï±uï±î† î(~î.á î7ï±rï±î7õï±îàïèsî›î™î”î€îDî$Žî(Aî*Ëî/Oî1�î4Ðî:"î:{î:{ïèuïèî>ïèsïèî>^î?�îAÏîDºîJîJïèîàïBî2î¼î“îWîUî"î#Ÿî$�î&¬î(8î+ëî/½î0î0ïBuïB î8ÈïBsïBî9!î:`î;^î? îEJîG|îJîJïBîàïœîàî…îGî îØîØïœuïœî$õïœsïœî%Áî+|î.!î1­î3ùî8Jî:>î>î@»îE9îG.îJîJïœîàïör îôïösïöîNîNïöuïöîxïösïöîõî%�î'äî,�î-åî-åïörïöî0jïösïöî1>î1¼î1¼ïöuïö î9óïösïöî:qî;Õî<øî<øïörïöîBïösïöîB× îIîJîJïöîàïGîóîî3î!î#”î$Çî$ÇïGrïGî'LïGsïGî'üî*-î,øî.6î4Zî6iî7fî;~ïGîàï~îÒî"îiîÆîOîOï~rï~ î)cï~sï~î* î/ðî/ðï~rï~î=`ï~sï~î>î>yîD†îGyîJîJï~îàï ÏîîFîŒîOî© î!�î!çî#‰ î)ãî,î,ï Ïrï Ï î4zï Ïsï Ïî4Òî:;î;yî=¿î@Ñï Ïî êï îï ÿ R êq?€[Çù(SETQMENUW(MENUWINDOW(createMENUITEMS_'(smallerLARGER)MENUFONT_'(GACHA12)TITLE_"zoomcontrols"CENTERFLG_TWHENSELECTEDFN_(FUNCTIONZOOMMAINWINDOW))))createsamenuwindowthatcontainsthetwoitems"smaller"and"LARGER"withthetitle"zoomcontrols"andthatcallsthefunctionZOOMMAINWINDOWwhenanitemisselected.(ATTACHWINDOWMENUW(CREATEW'(5050150150))'TOP'JUSTIFY)createsawindowonthescreenandattachestheabovecreatedmenuwindowtoitstop.(CREATEMENUEDWINDOW(CREATEMENUITEMS_'(smallerLARGER)MENUFONT_'(GACHA12)TITLE_"zoomcontrols"CENTERFLG_TWHENSELECTEDFN_(FUNCTIONZOOMMAINWINDOW))))createsthesamesortofwindowinonestep,promptingtheuserforaregion.AttachedPromptWindowsManypackageshaveaneedtodisplaystatusinformationorpromptforsmallamountsofuserinputinaplaceoutsidetheirstandardwindow.Aconvenientwaytodothisistoattachasmallwindowtothetopoftheprogram'smainwindow.Thefollowingfunctionsdosoinauniformwaythatcanbedependedonamongdiverseapplications.(GETPROMPTWINDOWMAINWINDOW#LINESFONT)ReturnstheattachedpromptwindowassociatedwithMAINWINDOW,creatingitifnecessary.ThewindowisalwaysattachedtothetopofMAINWINDOW,hasDSPSCROLLsettoT,andhasaPAGEFULLFNofNILLtoinhibitpageholding.Thewindowisatleast#LINESlineshigh(default1);ifapre-existingwindowisshorterthanthat,itisreshapedtomakeitlargeenough.FONTisthefonttogivethepromptwindow(defaultstothefontofMAINWINDOW),andappliesonlywhenthewindowisfirstcreated.(REMOVEPROMPTWINDOWMAINWINDOW)Detachestheattachedpromptwindow,ifany,associatedwithMAINWINDOW,andclosesit.WindowpropertiesofattachedwindowsWindowsthatareinvolvedinacollectioneitherasamainwindoworasanattachedwindowhavepropertiesstoredonthem.TheonlypropertiesthatareintendedtobesetbesetbytheuseraretheMINSIZEandMAXSIZEproperties.Theotherpropertiesshouldbeconsideredreadonly;theyaremaintainedbytheATTACHEDWINDOWpackage.MINSIZE,MAXSIZE:Eachshouldbeadottedpair(width.height)orafunctiontoapplytothewindowthatreturnsadottedpair.Thenumbersareusedwhenthemainwindowisreshaped.TheMINSIZEisusedtodeterminethesizeofthesmallestregionacceptableduringreshaping.AnyamountgreaterthanthecollectiveminimumisspreadevenlyamongthewindowsuntileachreachesMAXSIZE.Anyexcessisgiventothemainwindow.Thisalgorithmmaychangeasexperienceisgained.Lobbyforyourfavorite.Note:Thisdoesn'taddressthehardproblemofoverlappingattachedwindowssidetoside,forexampleifwindowAwasattachedas[TOP,LEFT]andBas[TOP,RIGHT].Initiallythereshapegetregionwon'tworryabouttheoverlap.î êïc8îàïarîêî#ïaîàï_¡î·îŽ î¢î"Zî%¼ï_¡îàï^&î·îŽîeî<îîêîÁî˜îoîFîîôîËî¢îyîPî"Zî$î,nî2Uï^&îàï\«î·îŽîeî<îîêîÁî˜îoîFîîôîËî¢îyîPî$ßî&�î-Eî/Ðï\«îàï[0î·îŽîeî<îîêîÁî˜îoîFîîôîËî¢îyîPî"Zî$î)î0§ï[0îàïYµî·îŽîeî<îîêîÁî˜îoîFîîôîËî¢îyîPî%¶î'dî(AïYµîàïX:î·îŽîeî<îîêîÁî˜îoîFîîôîËî¢îyîP î)éî+—î3ýîC!ïX:î êïUqsî¡îþîîkîjî"üî%�î(jî,Eî2œî5…î=ªî@õîC†îFƒîJÁîJÁïUqî êïSËîžî'îÆî¥îÖî î ïSËrïSË î+ßïSËsïSËî,7î/½î1€î4vî5´î:´ïSËîàïQYr î¢î ¬î(;î,nî.óî2Oî7Yî;ŒîC!ïQYî êïN�sîAî>î8îîAîKîÔî$Ûî' î*Þî/wî3)î8#î9£î;Oî=šïN�îàïL'rî ¬î'dî*ÆïL'îàïJ¬î·îŽîeî<îîêîÁî˜îoîFîîôîËî¢îyîPî"Zî$î,nî2UïJ¬îàïI1î·îŽîeî<îîêîÁî˜îoîFîîôîËî¢îyîPî$ßî&�î-Eî/ÐïI1îàïG¶î·îŽîeî<îîêîÁî˜îoîFîîôîËî¢îyîPî"Zî$î)î0§ïG¶îàïF;î·îŽîeî<îîêîÁî˜îoîFîîôîËî¢îyîPî%¶î'dî(AïF;îàïDÀî·îŽîeî<îîêîÁî˜îoîFîîôîËî¢îyîP î)éî+—î3ýîC!ïDÀî êïA÷sîAîrîÁîIîÔîÎîNî!Ëî$Øî+iî-šî0eî2tî3qî7‰ïA÷î êï>¬qî5îèî!Ëï>¬rï>¬î!Ñï>¬î êï;¸sîßî îäî îhîî"Áî&” î.î/Øî4½î6øî:“î@îAÔîDËîHEîIÅîJÂîJÂï;¸î êï:îcîî9î·î!î!‰î"ü î)Øî,—î.+î0î2�î3ðî5„î9vî:‡î> îCîD¬îFñîI7îJÂîJÂï:î êï8lî RîÃîIîÑî`î Aî&Vî,Xî.hî05î1ìî3!î8~î;_î>6î@ÊîBÄîHéîJÁîJÁï8lî êï6Æî@î î'ï6Æî êï4:rî1î1ï4:uï4: î!ëî&Öî)öï4:rï4:î*Óï4:îàï1qsîýîDî£î!sî&ƒ î,Òî/Óî/Óï1quï1q î8Gï1qsï1qî9 î>*î?hî@± îGîGoîJîJï1qîàï/Ëî.îÀîIî æî"ºî%?î'Ùî)¸î)¸ï/Ëuï/Ë î2,ï/Ësï/Ëî30î5Ëî5Ëï/Ërï/Ëî=Zï/Ësï/Ëî>î@IîBîBï/Ërï/ËîBôï/Ësï/ËîCøîFÕîIîJîJï/Ëîàï.r îFï.sï.î©î?î?ï.rï.î›ï.sï.îþî‰î#Òî&õî,/î,’î/Fî4Kî5”î7 î: î: ï.uï.î>°ï.sï.î?îB)îE)îJîJï.îàï,mîàîî îbî bî!¦î&#î) î,î-Kî.�î45î5»î9Fî:tî=²îBÈîC&îC&ï,muï,mîFFï,msï,mîF¤îGçîJîJï,mîàï*Çîªî5îÿî:îþî#î(�î* î,Hî/î0§î0§ï*Çuï*Ç î9ï*Çsï*Çî:Oî<âîAcîDXîGèîJîJï*Çîàï)!îÚîîÁî_ï)!î êï&•rî¶î¶ï&•uï&• î$*ï&•rï&•î%ï&•îàï#Ìsî—îÈîî!Êî'î(Oî+ î1Sî4>î4>ï#Ìuï#Ì î<²ï#Ìsï#Ìî=bî?ëîC¦îDÓï#Ìî êï �qî; î›î·î%Àî-nï �rï �î-tï �î êï�sîÏîsîžî îŽî� î#“î'Tî(Úî)Ûî-.î2-î3Çî5Mî7îýî@‡îFËîGoîJîJïîàïkrîÁïksïkî<îžîÎîrî"æî%:î'Úî)ˆî+Ýî1î5< î;Üî@? îFÈîGCîJîJïkîàï¼î îÈîî‘ î%¶î,)î-¸î2?î6¹î;`î=áîC°îGîJîJï¼îàïîÞîÞïrïî¿ïsïî¾îeîŠî#Íî%[î)/î*ÿî-î1î6½î7eî:žî@úîDîH—îJîJïîàï g îˆîÆî]î ‘î" î%¬î*Šï gîàï ätîñîGî­îaî9î î!Œî%àî'- î-î1iî5Þî8î9Tî;Ìî=�îAÍîBÔîFàîH îJîJï äîàï ‹îîNîdîÙîàîÞî î#'î'Éî(î,î-Âî1¤î6Oî90î<4î?)î@êîD¶ï ‹ÿ R êq?€[ÇhDefaultMAXSIZEisNIL,whichwilllettheregiongrowindefinitely.MAINWINDOW:pointerfromattachedwindowstothemainwindowofthegroup.Thislinkisnotavailableifthemainwindowisclosed.ATTACHEDWINDOWS:pointerfromawindowtoitsattachedwindows.Forfunctionalaccesstothisinformation,thefunctionATTACHEDWINDOWSisdocumentedbelow.WHEREATTACHED:forattachedwindows,alistwhosefirstelementistheEDGEandwhosesecondelementisthePOSITIONONEDGEthatdeterminetheplacementconditionforthiswindow.TheTOTOPFNpropertyonattachedwindowsandthepropertiesTOTOPFN,DOSHAPEFN,MOVEFN,CLOSEFN,OPENFN,SHRINKFN,EXPANDFNandCALCULATEREGIONFNcontainelementsthatimplementthewindowmanipulationfacilities.Careshouldbeusedinmodifyingorreplacingtheseproperties.NotesAwindowscanbeattachedtoonlyoneotherwindow.Attachingawindowtoasecondwindowwilldetachitfromthefirst.Attachmentscannotformloops.Thatis,awindowcannotbeattachedtoitselfortoawindowthatisattachedtoit.ATTACHWINDOWwillgenerateanerrorifthisisattempted.Attachedwindowscanhaveotherwindowsattachedtothem.Thus,itispossibletoattachwindowAtowindowBwhenBisalreadyattachedtowindowC.Similarly,ifAhasotherwindowsattachedtoititcanstillbeattachedtoB.Movingthemainwindowwillmaintaintherelationshipsbetweenwindows.ReshapingthemainwindowwillrestoretheconditionsestablishedbythecalltoATTACHWINDOW,movingthemainwindowdoesnot.Thus,ifAisattachedtothetopofBandthenmovedbytheuser,itsnewpositionrelativetoBwillbemaintainedifBismoved.IfBisreshaped,AwillbereshapedtothetopofB.Additionally,if,whileAismovedawayfromthetopofB,CisattachedtothetopofB,CwillpositionitselfabovewhereAusedtobe.Theattachedwindowscanbeclosedbythemselves.Theywillbereopenedwheneverthemainwindowisreshaped.TheclosefnforthemainwindowbreaksthelinksfromtheattachedwindowstoittoallowthemtobeGC'ed.Thereopenfnforthemainwindowreestablishestheselinks.Thusitispossibletoreopenaclosed,attachedwindowandnothaveitlinkedtoitsmainwindow.Exampleofuse(ATTACHWINDOWATWINMAINWIN'TOP'CENTER)willmoveATWINtoimmediatelyaboveMAINWINandmaintainitsattachmentthere.(ATTACHWINDOWNOTHERWINMAINWIN'TOP'CENTER)willmoveNOTHERWINtoimmediatelyaboveATWINandmaintainitsattachmentthere.Miscellaneousfunctions(WINDOWREGIONWINDOW)ReturnsthescreenregionoccupiedbyWINDOWanditsattachedwindows,ifithasany.(WINDOWSIZEWINDOW)ReturnsthesizeofWINDOWanditsattachedwindows,ifithasany.(MINATTACHEDWINDOWEXTENTWINDOW)î êïc8îàï`Åsî¯î¯ï`Årï`Åî�ï`Åsï`Åîèî&î&ï`Årï`Åî«ï`Åsï`Åî[î#8î%³î'€î)±î-Äî1 î8ï`Åî êï]ür îPï]üsï]üî*îÊî î!]î&äî(mî*§î-þî3î4•î6Ïî;î;bî>Uî@úîBAîD�îJîJï]üîàï\MîîDî’îŒîÊî Ìï\Mî êïY�rîƒïY�sïY�î«î™î!(î"|î'Íî)¤î+§î1Gî7sî8"î:õ îAšîEÏîG¦îJîJïY�îàïWÞ î�î¾îîïWÞrïWÞî+žïWÞsïWÞî+öî-4 î4Ùî8ºïWÞî êïUr îÕïUsïUî©îîî_î$8î%7î'Gî+Gî-óî2ûî4;î6nî6nïUrïUî9ÊïUsïUî:%î<°î@°îEîJîJïUîàïSfîîOîOïSfrïSf îïSfsïSfîiî"î(Xî*‰î0ïî6Ùî8èî;Zî@YïSfî êïP�îîïP�rïP�îñïP�sïP�îÇî­îî"Êî(Åî+Ìî.{ î5<î5<ïP�rïP�î;ïP�sïP�î� îDæïM?î êïIôqîÝïIôrïIôîãïIôî êïGsî VîáîKîîrîÿîöî"€î%ýî+[î+Àî1åî2ïî7÷î9„î:Žî>üîDîF‹îJÁîJÁïGî êïEZî îJî{î{î�ïEZî êïBš îìî†îî}î‰î î#qî%Cî&}î+³î0;î2;î7Àî9}î<åî>¸î@tîA®îFäîIƒîJÁîJÁïBšî êï@ôî3î³î2îŠîŠï@ôrï@ô îžï@ôsï@ôîöî qî%Åî'ˆî*Ëî+þî.pî/® î5ùï@ôî êï>+îÈîyîîSîôî%¥î+ î,Óî0·î1Aî5î6tî7åî=&î>ÙîBéîGãîIBîJÂîJÂï>+î êï<…îüîRîðîFîœîWî!¸î#Pî(bî*&î*– î0®î1ùî3pî5Ïî9Vî>ìîDMîEåîG%îHeîJÂîJÂï<…î êï:ßî Zîîfîæî{î�ï:ßî êï8îÙî îXîRîÍî"Vî$‡ î,Uî1“î7hî7Àî7Æï8î êï5_î‘î×î:îJîÚî#Eî%‹ î, î2÷î4Úî7 î9�î;%î;%ï5_rï5_ îE9ï5_sï5_îEþîJÁîJÁï5_î êï3°î MîÍîúî-îüî‡î _î!Äî#Vî$Æî*Aî+ôî.Wî0Ïî2�î3ýî6¸î9âî>jî@jîBÎîF#îHîJÁîJÁï3°î êï2 îîÄîTî¢î,îÿ î#î$Eî%“î&áî+žî,î-jî.¸î0î6î7}î:î;ÚîA‹îCîE[îG¡îI,îJÁîKîKï2 î êï0d îûîŠîîtîµîî"aî%œî'Ñî*î+©î-Bî.›î/Üî5)î6¬î8àî;*î<¸î>Rî>­î@îB„îG•îJÁîJÁï0dî êï.¾î¼î¥îîî‘îYï.¾î êï+þî ¹î(îÍîPî9î!]î#Q î*Œî+ î.Šî1+î3î9î?<îA“ îIƒîJÁîJÁï+þî êï*Xîòî[îî›î»îüî [î%fî) î+âî/î2[î4�î9öî?…îAîBNîCßîGgîJÁîJÁï*Xî êï(²î ˆîiîî•î\î%îRî ¡î$ î)% î0ýî4uî8 î8€î;ìî=2î>ŽîC»îEYîIÅîJÂîJÂï(²î êï' î?îˆî‚î îQî!iî"‘î&˜î(î)Ä î2 î2cî2»î2Áï' î êï#Áqî†î¢îºï#Árï#ÁîÀï#Áîàï! î¢î ¬î'dî+—î2Uï!î êï8sî eîõîõï8rï8î(ï8sï8î€î î£î"uî"uï8rï8î(Vï8sï8î(®î+7î0Àî2l î9Lî<«ï8îàï£r î¢î$î*Àî.óî5±ï£î êïÚsî eîõîõïÚrïÚî„ïÚsïÚîÜî\ î!ÿî%Ñî%ÑïÚrïÚî*ïÚsïÚî*\î,åî2nî4 î:úî>YïÚî êï†q î£îÆï†rï†îÌï†î êïÆ î¬î¬ïÆuïÆîïïÆrïÆîÌïÆîàïýsîçîî"î5î$Ôî&¢î&¢ïýuïýî+åïýsïýî,=î.Æî0rî5»î;‘î<Äî=ìî@3îB«ïýî êï qr îþîþï quï qîAï qrï qîï qîàï ¨sîçîî”îîï ¨uï ¨î bï ¨sï ¨î ºî#Cî$ïî*8î0î1Aî2iî4°î7(ï ¨î êïrîéîéïuïî%,ïrïî& ï  êq?€[ǯReturnstheminimumextent(adottedpairofwidthandheight)ofWINDOWanditsattachedwindows(ifany)willaccept.ThisisdeterminedbyusingthewindowpropertyMINEXTENTwhichiseitheradottedpairorafunctionwhichwhenAPPLYedtothewindowreturnsadottedpair.(ATTACHEDWINDOWSMAINWINDOW)Returnsthelistofwindowsattachedtothiswindow.(ALLATTACHEDWINDOWSMAINWINDOW)ReturnsalistofallofthewindowsattachedtoMAINWINDOWorattachedtoawindowattachedtoit.î êïc8îàï`Åsî'î˜îûî"/î#åî(Dî+-î,øî0éî3²î8tî:?î:?ï`Åuï`Åî?‚ï`Åsï`Åî@îBãîDÏîJîJï`Åîàï_î_î îùîuî ×î!0î$î%[ î,rî.Aî1¼î3îî8éî>Sî>Sï_rï_îEâï_sï_îF;îJîJï_îàï]pîîÚî×îöîŸî5î2î$yî(Vî+Üî+Üï]prï]pî0ï]psï]pî1Òî3Rî5ƒî:}î?î?ýîDîFÊï]pî êïZÛrî1î1ïZÛuïZÛ î!¥ïZÛrïZÛî"‚ïZÛîàïXsîçîî&î±î /î%xî&øî)jî.iïXî êïU†rî¶î¶ïU†uïU† î$*ïU†rïU†î%ïU†îàïR½sîöîîî¹î‰î"îbî$ïî*Gî+Öî+ÖïR½uïR½ î4JïR½sïR½î4°î6Uî;­î=<î>HîCPîH™îJîJïR½îàïQî_îeïQÿ› êq?€[Ç TIMESROMAN  TIMESROMAN  TIMESROMAN TIMESROMAN TIMESROMAN ~GACHA  HELVETICA ~GACHA ­ ÅÝ' î3 Î>@j/CAÿÿœ§'µÿÿÿÿÿÿ{DSK}ATTACHEDWINDOW.TED;7VANMELLE13-Apr-84 15:38:41