home *** CD-ROM | disk | FTP | other *** search
/ Star Trek Starfleet Academy Mini Omnipedia / MINI_OMNI.ISO / pc / omni_v2.dxr / 00381_indexmaker.ls < prev    next >
Encoding:
Text File  |  1996-04-15  |  13.7 KB  |  500 lines

  1. property iTheIndex, iIndexTypeK, iPagePointer, iPageHeightK, iIndexLength, iLineHeight, iWinTop, iNumofColsK, iColHeightK, iFSlistType, iPrevHL, iMyPage, itheItemNow, iDontResetLineF, iCHROpointer
  2. global gIndxScrollFldK, gOurFontK, gStatusField, gMACListenStatus, ghitlist, gInputField, gGlobalStepCount, gCHROisScrolling, gdescfield, gAlphaState, gNumofHits, oSLlookup, gFirstYearK, gLastYearK, gModeState, gLocalStepCount, oIndexMediator, oINTERfaceAlph, oINTERfaceEpis, oINTERfaceUpdate, oIndexSlider, oTextSlider, gStashedHitsList, gStashedSEEList
  3.  
  4. on birth me, pType, pHeight, pCols
  5.   set gIndxScrollFldK to the number of cast "BltIndexWin1"
  6.   put " " into field gIndxScrollFldK
  7.   set iNumofColsK to pCols
  8.   set iPageHeightK to pHeight * pCols
  9.   set iColHeightK to pHeight
  10.   set iPagePointer to 1
  11.   set itheItemNow to 1
  12.   set iMyPage to EMPTY
  13.   set iFSlistType to 1
  14.   mInitStyle(me)
  15.   mGetIndexData(me)
  16.   hputmsg(">birth event of oIndexScroller computes iIndexLength=" & iIndexLength)
  17.   return me
  18. end
  19.  
  20. on mClearIndexParams me
  21.   set iPagePointer to 1
  22.   set itheItemNow to 0
  23.   set iIndexLength to 0
  24.   put " " into field gIndxScrollFldK
  25. end
  26.  
  27. on mInitStyle me
  28.   put " " into field gIndxScrollFldK
  29.   set the textFont of field gIndxScrollFldK to gOurFontK
  30.   set the textHeight of cast gIndxScrollFldK to 13
  31.   set iLineHeight to the textHeight of cast gIndxScrollFldK
  32. end
  33.  
  34. on mGetIndexData me
  35.   set iTheIndex to [:]
  36.   sort(iTheIndex)
  37.   set iTheIndex to mGrabCurrAttrList(oIndexMediator, gModeState)
  38.   if not objectp(iTheIndex) then
  39.     abort()
  40.   end if
  41.   set itheItemNow to integer(value(mGrabCurrItem(oIndexMediator)))
  42.   set iIndexLength to mGetModesMaxEntryNum(oIndexMediator)
  43.   put "Retrieving data..." into field "Status"
  44. end
  45.  
  46. on mUpdatePagePointer me
  47.   set iPagePointer to mGetItemsFirstEntryNum(oIndexMediator, itheItemNow)
  48. end
  49.  
  50. on mSetDontResetLine me, pTo
  51.   set iDontResetLineF to pTo
  52. end
  53.  
  54. on mJumpIndex me, pMseLine
  55.   if pMseLine > 0 then
  56.     put line pMseLine of field gIndxScrollFldK into field gInputField
  57.     hilite char 999 of field gInputField
  58.     hHiliteItem(pMseLine)
  59.     set iDontResetLineF to 1
  60.     mMatchScrollBar(me)
  61.   end if
  62. end
  63.  
  64. on mMatchScrollBar me
  65.   mSetSlider(oIndexSlider, iPagePointer, 0)
  66.   if gModeState = #CHRO then
  67.     mSetSlider(oTextSlider, iPagePointer, 0)
  68.   end if
  69.   hSysAlert(#LCARSREADY)
  70.   hWinVoiceMicOn()
  71. end
  72.  
  73. on mNextPage me
  74.   if (iPagePointer + iPageHeightK - 1) <= iIndexLength then
  75.     set iPagePointer to iPagePointer + iPageHeightK - 1
  76.     hSetIncomingCurrItem(iPagePointer)
  77.   else
  78.     abort()
  79.   end if
  80.   mMatchScrollBar(me)
  81. end
  82.  
  83. on mPriorPage me
  84.   set iPagePointer to iPagePointer - iPageHeightK
  85.   if iPagePointer < 1 then
  86.     set iPagePointer to 1
  87.   end if
  88.   mMatchScrollBar(me)
  89. end
  90.  
  91. on mNextLine me
  92.   if (iPagePointer + 1) <= iIndexLength then
  93.     set iPagePointer to iPagePointer + 1
  94.     hSetIncomingCurrItem(iPagePointer)
  95.   end if
  96.   mMatchScrollBar(me)
  97. end
  98.  
  99. on mPriorLine me
  100.   set iPagePointer to iPagePointer - 1
  101.   if iPagePointer < 1 then
  102.     set iPagePointer to 1
  103.   end if
  104.   mMatchScrollBar(me)
  105. end
  106.  
  107. on mIndexForwardPage me
  108.   mNextPage(me)
  109.   mGetPage(me)
  110.   mMatchScrollBar(me)
  111.   hMatchTbarToWindow()
  112. end
  113.  
  114. on mIndexBackPage me
  115.   mPriorPage(me)
  116.   mGetPage(me)
  117.   mMatchScrollBar(me)
  118.   hMatchTbarToWindow()
  119. end
  120.  
  121. on mIndexForwardLine me
  122.   mNextLine(me)
  123.   mGetPage(me)
  124.   mMatchScrollBar(me)
  125.   hMatchTbarToWindow()
  126. end
  127.  
  128. on mIndexBackLine me
  129.   mPriorLine(me)
  130.   mGetPage(me)
  131.   mMatchScrollBar(me)
  132.   hMatchTbarToWindow()
  133. end
  134.  
  135. on mUpdateChroIndex me, pGlobNdx
  136.   hSetGlobalCounter(pGlobNdx)
  137.   mConvertGlobaltoLocal(oIndexMediator)
  138.   mShiftWindowToEntry(me, gLocalStepCount, 1)
  139.   hMatchEntryToIndexLine(1)
  140. end
  141.  
  142. on mUpdateWinToCHROEntry me, pGlobEntNum, pAtTop
  143.   if pGlobEntNum >= 1 then
  144.     if iDontResetLineF then
  145.       set iPagePointer to iPagePointer
  146.     else
  147.       if pAtTop then
  148.         set iPagePointer to pGlobEntNum
  149.       else
  150.         set iPagePointer to pGlobEntNum - (iPageHeightK / 2)
  151.       end if
  152.     end if
  153.     if iPagePointer > iIndexLength then
  154.       set iPagePointer to iIndexLength
  155.     end if
  156.     if iPagePointer < 1 then
  157.       set iPagePointer to 1
  158.     end if
  159.     set iCHROpointer to pGlobEntNum
  160.     mGetPage(me)
  161.     hMatchTbarToWindow()
  162.   else
  163.   end if
  164.   set iDontResetLineF to 0
  165.   mMatchScrollBar(me)
  166. end
  167.  
  168. on mShiftWindowToEntry me, pEntryNum, pAtTop
  169.   if (pEntryNum >= 1) and not gCHROisScrolling then
  170.     if iDontResetLineF then
  171.       set iPagePointer to iPagePointer
  172.     else
  173.       if pAtTop then
  174.         set iPagePointer to mTranslateLocaltoGlobal(oIndexMediator, pEntryNum)
  175.       else
  176.         set iPagePointer to mTranslateLocaltoGlobal(oIndexMediator, pEntryNum) - (iPageHeightK / 2)
  177.       end if
  178.     end if
  179.     if iPagePointer > iIndexLength then
  180.       set iPagePointer to iIndexLength
  181.     end if
  182.     if iPagePointer < 1 then
  183.       set iPagePointer to 1
  184.     end if
  185.     mGetPage(me)
  186.     hMatchTbarToWindow()
  187.     if gModeState = #CHRO then
  188.       mHomeTxtScroll(oTextScroller)
  189.     end if
  190.   else
  191.   end if
  192.   set iDontResetLineF to 0
  193.   mMatchScrollBar(me)
  194. end
  195.  
  196. on mBuildaPage me, pMyItem
  197.   set iMyPage to EMPTY
  198.   set LmyLocalCntr to mTranslateGlobaltoLocal(oIndexMediator, iPagePointer, pMyItem)
  199.   if iIndexLength < iPageHeightK then
  200.     set Llastline to iIndexLength
  201.   else
  202.     set lx to iPagePointer + iPageHeightK - 1
  203.     if lx > iIndexLength then
  204.       set Loffset to lx - iIndexLength
  205.       set Llastline to LmyLocalCntr + iPageHeightK - 1 - Loffset
  206.     else
  207.       set Llastline to LmyLocalCntr + iPageHeightK - 1
  208.     end if
  209.   end if
  210.   repeat with vIndexItem = LmyLocalCntr to Llastline
  211.     put getPropAt(iTheIndex, vIndexItem) & RETURN after iMyPage
  212.   end repeat
  213.   set the textStyle of field gIndxScrollFldK to "plain"
  214.   put iMyPage into field gIndxScrollFldK
  215.   return 1
  216. end
  217.  
  218. on mBuildEPISSUBPage me
  219.   set iMyPage to EMPTY
  220.   set LmyItem to the iCurrentItem of oIndexMediator
  221.   set LmyLocalCntr to iPagePointer
  222.   if iIndexLength < iPageHeightK then
  223.     set Llastline to iIndexLength
  224.   else
  225.     set lx to iPagePointer + iPageHeightK - 1
  226.     if lx > iIndexLength then
  227.       set Llastline to iIndexLength
  228.     else
  229.       set Llastline to iPagePointer + iPageHeightK - 1
  230.     end if
  231.   end if
  232.   repeat with vIndexItem = LmyLocalCntr to Llastline
  233.     put getPropAt(iTheIndex, vIndexItem) & RETURN after iMyPage
  234.   end repeat
  235.   put mAddTrailingReturns(me) after iMyPage
  236.   set the textStyle of field gIndxScrollFldK to "plain"
  237.   put iMyPage into field gIndxScrollFldK
  238.   return 1
  239. end
  240.  
  241. on mAddTrailingReturns me
  242.   set vWindowBlanks to iPagePointer + iPageHeightK - 1 - iIndexLength
  243.   set vBlankstoAdd to EMPTY
  244.   if vWindowBlanks > 0 then
  245.     repeat with vLineCount = 1 to vWindowBlanks
  246.       put RETURN after vBlankstoAdd
  247.     end repeat
  248.   end if
  249.   return vBlankstoAdd
  250. end
  251.  
  252. on mBuildFTLUPage me, pStart
  253.   set iMyPage to EMPTY
  254.   if iIndexLength < iPageHeightK then
  255.     set Llastline to iIndexLength
  256.   else
  257.     set lx to iPagePointer + iPageHeightK - 1
  258.     if lx > iIndexLength then
  259.       set Llastline to iIndexLength
  260.     else
  261.       set Llastline to pStart + iPageHeightK - 1
  262.     end if
  263.   end if
  264.   repeat with vIndexItem = pStart to Llastline
  265.     put mSetOneFTfromLU(oSLlookup, vIndexItem) & RETURN after iMyPage
  266.   end repeat
  267.   set the textStyle of field gIndxScrollFldK to "plain"
  268.   put iMyPage into field gIndxScrollFldK
  269.   return 1
  270. end
  271.  
  272. on mGetPage me
  273.   if gModeState = #FoundSet then
  274.     mBuildFTLUPage(me, iPagePointer)
  275.   else
  276.     if gModeState = #EPISSUB then
  277.       mBuildEPISSUBPage(me)
  278.     else
  279.       set vLastLine to iPagePointer + iPageHeightK - 1
  280.       if vLastLine > iIndexLength then
  281.         set vLastLine to iIndexLength
  282.       end if
  283.       set iPagePointer to 1 + vLastLine - iPageHeightK
  284.       if iPagePointer < 1 then
  285.         set iPagePointer to 1
  286.       end if
  287.       set Lstartitem to hGetMyAlphaGroupItem(iPagePointer)
  288.       set Lenditem to hGetMyAlphaGroupItem(vLastLine)
  289.       set Lcurritem to integer(value(mGrabCurrItem(oIndexMediator)))
  290.       if (Lstartitem = Lenditem) and (Lstartitem = Lcurritem) then
  291.         if itheItemNow <> Lcurritem then
  292.           mGetIndexData(me)
  293.         end if
  294.         mBuildaPage(me, Lstartitem)
  295.       else
  296.         set iMyPage to EMPTY
  297.         if Lstartitem < Lcurritem then
  298.           set Lprevitem to integer(value(Lcurritem - 1))
  299.           mRequestAnyAttrList(oIndexMediator, Lprevitem, gModeState)
  300.         end if
  301.         if Lenditem > Lcurritem then
  302.           set LnextItem to integer(value(mGrabCurrItem(oIndexMediator) + 1))
  303.           mRequestAnyAttrList(oIndexMediator, LnextItem, gModeState)
  304.         end if
  305.         mBuildFragPage(me, vLastLine)
  306.       end if
  307.     end if
  308.   end if
  309.   if gModeState <> #CHRO then
  310.     mHighlightMyScrollLine(me, gGlobalStepCount)
  311.   else
  312.     mHighlightMyScrollLine(me, iCHROpointer)
  313.   end if
  314.   if not (gModeState = #FoundSet) and not (gModeState = #Resources) and not (gModeState = #TOPICS) then
  315.     set Lchars to char 1 to 2 of line 1 of iMyPage
  316.     hUpdateCurrItem(hFilterSearchChars(Lchars))
  317.   end if
  318. end
  319.  
  320. on mSliderGetPage me
  321.   set vLastLine to iPagePointer + iPageHeightK - 1
  322.   if vLastLine > iIndexLength then
  323.     set vLastLine to iIndexLength
  324.   end if
  325.   if gModeState = #FoundSet then
  326.     mBuildFTLUPage(me, iPagePointer)
  327.   else
  328.     if gModeState = #EPISSUB then
  329.       mBuildEPISSUBPage(me)
  330.     else
  331.       set Lstartitem to hGetMyAlphaGroupItem(iPagePointer)
  332.       set Lenditem to hGetMyAlphaGroupItem(vLastLine)
  333.       set Lcurritem to integer(value(mGrabCurrItem(oIndexMediator)))
  334.       if (Lstartitem = Lenditem) and (Lstartitem = Lcurritem) then
  335.         if itheItemNow <> Lcurritem then
  336.           mGetIndexData(me)
  337.         end if
  338.         mBuildaPage(me, Lstartitem)
  339.       else
  340.         set iMyPage to EMPTY
  341.         mBuildFragPage(me, vLastLine)
  342.         mEndIndexToLine(me)
  343.       end if
  344.     end if
  345.   end if
  346. end
  347.  
  348. on mIndexSliderKeyPage me, pDist
  349.   set the textStyle of field gIndxScrollFldK to "plain"
  350.   mNudgeSlider(oIndexSlider, pDist)
  351.   mEndIndexToLine(me)
  352. end
  353.  
  354. on mSwitchtoEpisSubindex me, pWhich
  355.   if pWhich = 6 then
  356.     hSwitchBacktoEpis()
  357.     return 1
  358.   end if
  359.   set LmyfldName to "ATTRIB_" & pWhich & "_EPISSUB"
  360.   hSetMode(#EPISSUB)
  361.   mSetCurrAttrList(oIndexMediator, LmyfldName, #EPISSUB)
  362.   set iPagePointer to 1
  363.   hSetAlphaState(hConvertItemtoAlpha(value(pWhich)))
  364.   hSetGlobalCounter(1)
  365.   set iIndexLength to count(iTheIndex)
  366.   mGetPage(me)
  367.   mHltfromScripts(oINTERfaceEpis, pWhich)
  368.   set vNewSliderMax to iIndexLength - (iPageHeightK - 1)
  369.   if vNewSliderMax < iPagePointer then
  370.     set vNewSliderMax to iPagePointer
  371.   end if
  372.   mReDefineSlider(oIndexSlider, iPagePointer, vNewSliderMax, iPagePointer)
  373.   mSetSlider(oIndexSlider, iPagePointer)
  374. end
  375.  
  376. on mBuildFragPage me, pLast
  377.   set the textStyle of field gIndxScrollFldK to "plain"
  378.   repeat with i = iPagePointer to pLast
  379.     set LmyItem to hGetMyAlphaGroupItem(i)
  380.     set LmyLocalCntr to mTranslateGlobaltoLocal(oIndexMediator, i, LmyItem)
  381.     put mGetThisEntryName(oIndexMediator, gModeState, LmyItem, LmyLocalCntr) & RETURN after iMyPage
  382.     put iMyPage into field gIndxScrollFldK
  383.   end repeat
  384.   return 1
  385. end
  386.  
  387. on mSetCustomList me, pTheList, pTheNum, pHitFlag
  388.   if voidp(pTheList) then
  389.     hearit(gNopeSND)
  390.     hReportStatus("No search has been performed in this session as yet.")
  391.     abort()
  392.   end if
  393.   setAt(mGetEntireMode(oIndexMediator, #FoundSet), 1, pTheList)
  394.   set Lsize to count(mGetModesAttribGroup(oIndexMediator, #FoundSet, 1))
  395.   mUpdateLimitsList(oIndexMediator, #FoundSet, Lsize)
  396.   mUpdateIndexParams(oIndexMediator)
  397.   set iIndexLength to mGetModesMaxEntryNum(oIndexMediator)
  398.   set iPagePointer to pTheNum
  399.   set iFSlistType to pHitFlag
  400.   mReDefineSlider(oIndexSlider, iPagePointer, Lsize, 1)
  401.   hSetGlobalCounter(1)
  402. end
  403.  
  404. on mSetupSEEList me
  405.   set iFSlistType to 0
  406.   mSetSingleList(oIndexMediator, gStashedSEEList)
  407.   hBuildFTfromEntries()
  408.   set iIndexLength to mGetModesMaxEntryNum(oIndexMediator)
  409.   set iPagePointer to 1
  410. end
  411.  
  412. on mSetupHitsList me
  413.   set thelist to gStashedHitsList
  414.   set iFSlistType to 1
  415.   mSetSingleList(oIndexMediator, thelist)
  416.   mUpdateLimitsList(oIndexMediator, #FoundSet, gNumofHits)
  417.   set iIndexLength to gNumofHits
  418.   set iPagePointer to 1
  419.   hAnnounce("Search Complete")
  420.   mGetPage(me)
  421.   hSetGlobalCounter(1)
  422.   hReportStatus("Word search complete...")
  423. end
  424.  
  425. on mWhatFSlistType me
  426.   return iFSlistType
  427. end
  428.  
  429. on mSetFSlistType me, pTowhat
  430.   set iFSlistType to pTowhat
  431. end
  432.  
  433. on mHighlightMyScrollLine me, pCount
  434.   if iDontResetLineF and (gModeState = #CHRO) then
  435.     return 
  436.   end if
  437.   set Lnumb to pCount - iPagePointer + 1
  438.   hHiliteItem(Lnumb)
  439. end
  440.  
  441. on mShiftWindowToItem me, pNewItem
  442.   set LnextField to hConstructFieldName(pNewItem, gModeState)
  443.   mSetCurrAttrList(oIndexMediator, LnextField, gModeState)
  444.   set LentryNum to mGetItemsFirstEntryNum(oIndexMediator, pNewItem)
  445.   set iPagePointer to value(LentryNum)
  446.   if iPagePointer > iIndexLength then
  447.     set iPagePointer to iIndexLength
  448.   end if
  449.   if iPagePointer < 1 then
  450.     set iPagePointer to 1
  451.   end if
  452.   mGetPage(me)
  453.   mMatchScrollBar(me)
  454.   hMatchTbarToWindow()
  455. end
  456.  
  457. on mGetNdxLength me
  458.   return iIndexLength
  459. end
  460.  
  461. on mStartIndexToLine me, pWhichline
  462.   set iPagePointer to pWhichline
  463.   mSliderGetPage(me)
  464. end
  465.  
  466. on mEndIndexToLine me
  467.   if (gModeState = #ENCY) or (gModeState = #EPIS) or (gModeState = #CHRO) then
  468.     set vNewAttr to hGetMyAlphaGroupItem(iPagePointer)
  469.     set LnextField to hConstructFieldName(vNewAttr, gModeState)
  470.     mSetCurrAttrList(oIndexMediator, LnextField, gModeState)
  471.   end if
  472.   hMatchTbarToWindow()
  473.   if gMACListenStatus then
  474.     hLoadIndextoLexicon()
  475.   end if
  476. end
  477.  
  478. on mIndexSliderPage me, pStyle
  479.   if pStyle = #page then
  480.     set vshift to iPageHeightK
  481.   else
  482.     set vshift to 1
  483.   end if
  484.   set the textStyle of field gIndxScrollFldK to "plain"
  485.   mSliderBarPage(oIndexSlider, vshift)
  486.   mEndIndexToLine(me)
  487. end
  488.  
  489. on mDumpProps me
  490.   put me
  491.   put "size of itheIndex=" & count(iTheIndex)
  492.   put "iPagePointer=" & iPagePointer
  493.   put "iIndexLength=" & iIndexLength
  494.   put "iLineHeight=" & iLineHeight
  495.   put "iWinTop=" & iWinTop
  496.   put "iFSlistType=" & iFSlistType
  497.   put "iPrevHL=" & iPrevHL
  498.   put "iMyPage=" & iMyPage
  499. end
  500.