home *** CD-ROM | disk | FTP | other *** search
/ PC PowerPlay 56 / CDPowerplay56Disc2.iso / demos / blade / data1.cab / Program_Executable_Files / Lib / Widgets / ListWidget.py < prev    next >
Encoding:
Python Source  |  2000-10-27  |  4.9 KB  |  175 lines

  1.  
  2.  
  3.  
  4. import Raster 
  5. import BUIx
  6. import MenuWidget
  7. import ScorerWidgets
  8. import pdb 
  9.  
  10.  
  11.  
  12. # Caracter flecha arriba: 190
  13. # Caracter flecha abajo: 191
  14.  
  15. class B_ListWidget(MenuWidget.B_MenuFocusManager,BUIx.B_FrameWidget):
  16.   def __init__(self,Parent,Menudesc,StackMenu,VertPos=0):
  17.  
  18.     width,height=Raster.GetSize()
  19.     try:
  20.       width,height=Menudesc["Size"]
  21.       #print Menudesc["Size"]
  22.     except:
  23.       pass
  24.  
  25.     MenuWidget.B_MenuFocusManager.__init__(self)
  26.     BUIx.B_FrameWidget.__init__(self,Parent,"List"+Menudesc["Name"],width,height)
  27.     self.nElements=0
  28.     self.Position=0
  29.     self.ListItems=[]
  30.     self.VertPos=0
  31.     self.ListSize=0
  32.     self.WidgetsVPos=[]
  33.     self.WidgetsHeights=[]
  34.     self.SetClipDraw(1)
  35.  
  36.     for i in Menudesc["ListDescr"]:
  37.       m_class=MenuWidget.B_MenuItemTextNoFX
  38.       try:
  39.         m_class=i["Kind"]
  40.       except:
  41.         pass
  42.  
  43.       wSubMenu=m_class(self,i,StackMenu)
  44.       self.AddMenuElement(wSubMenu)
  45.  
  46.     self.SetFocus_Idx(1)
  47.  
  48.     self.UpArrow=BUIx.B_TextWidget(self,"UpArrow",chr(190),ScorerWidgets.font_server,"..\\..\\Data\\Letras menu med.bmp")
  49.     self.AddWidget(self.UpArrow,77,0,BUIx.B_FrameWidget.B_FR_AbsoluteLeft,BUIx.B_FrameWidget.B_FR_Left,
  50.                                     BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  51.     self.UpArrow.SetColor(250,0,0)
  52.     self.UpArrow.SetAlpha(0.5)
  53.  
  54.     
  55.     self.DownArrow=BUIx.B_TextWidget(self,"DownArrow",chr(191),ScorerWidgets.font_server,"..\\..\\Data\\Letras menu med.bmp")
  56.     self.AddWidget(self.DownArrow,77,0,BUIx.B_FrameWidget.B_FR_AbsoluteLeft,BUIx.B_FrameWidget.B_FR_Left,
  57.                                       BUIx.B_FrameWidget.B_FR_AbsoluteBottom,BUIx.B_FrameWidget.B_FR_Bottom)
  58.     self.DownArrow.SetColor(250,0,0)
  59.     self.DownArrow.SetAlpha(0.5)
  60.  
  61.  
  62.  
  63.   def __del__(self):
  64. ##    print "B_ListWidget.__del__()",self.Name()
  65.     for i in self.MenuItems:
  66.       i.SetDrawFunc(None)
  67.  
  68.     MenuWidget.B_MenuFocusManager.__del__(self)
  69.     BUIx.B_FrameWidget.__del__(self)
  70.  
  71.  
  72.   def __str__(self):
  73.     print "B_ListWidget",self.Name()
  74.  
  75.  
  76.   def AdjustScrollArrows(self):
  77.     if self.VertPos<0:
  78.       self.UpArrow.SetAlpha(1)
  79.     else:
  80.       self.UpArrow.SetAlpha(0.4)
  81.  
  82.     w,h=self.GetSize()
  83.     if self.ListSize+self.VertPos>h:
  84.       self.DownArrow.SetAlpha(1)
  85.     else:
  86.       self.DownArrow.SetAlpha(0.4)
  87.  
  88.  
  89.   def AddMenuElement(self,widget,sep=0,
  90.                      HPos=0.5,HIndicator=BUIx.B_FrameWidget.B_FR_HRelative,HAnchor=BUIx.B_FrameWidget.B_FR_HCenter):
  91.     MenuWidget.B_MenuFocusManager.AddMenuElement(self,widget)
  92.     self.AddWidget(widget,117,self.ListSize,
  93.                    BUIx.B_FrameWidget.B_FR_AbsoluteLeft,BUIx.B_FrameWidget.B_FR_Left,
  94.                    BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  95.     self.WidgetsVPos.append(self.ListSize)
  96.     widget_height=widget.GetSize()[1]
  97.     self.WidgetsHeights.append(widget_height)
  98.     self.ListSize=self.ListSize+widget_height
  99.     #if self.ListSize>self.GetSize()[1]:
  100.     #  self.DoScroll(-1*widget_height)
  101.     #  print "Calling ScrollUp(): ListSize=",self.ListSize,"widget_height=",widget_height
  102.     self.SetFocus(widget.Name())
  103.     #self.AdjustScrollArrows()  #No Funciona (?)
  104.  
  105.  
  106.   def NextFocus(self):
  107.     curr_focus=self.GetFocus()
  108.     index=self.MenuItems.index(curr_focus)
  109.     if index>=len(self.MenuItems)-1:
  110.       self.AdjustScrollArrows()
  111.       return
  112.  
  113.     MenuWidget.B_MenuFocusManager.NextFocus(self)
  114.     wFoc=self.GetFocus()
  115.     i=self.MenuItems.index(wFoc)
  116.     if self.WidgetsVPos[i]+ self.WidgetsHeights[i] +self.VertPos >= self.GetSize()[1]:
  117.       self.DoScroll(-self.WidgetsHeights[i])
  118.     self.AdjustScrollArrows()
  119.  
  120.  
  121.   def PrevFocus(self):
  122.     curr_focus=self.GetFocus()
  123.     index=self.MenuItems.index(curr_focus)
  124.     if index<=0:
  125.       self.AdjustScrollArrows()
  126.       return
  127.  
  128.     MenuWidget.B_MenuFocusManager.PrevFocus(self)
  129.     wFoc=self.GetFocus()
  130.     i=self.MenuItems.index(wFoc)
  131.     #print self.WidgetsVPos[i]+ self.WidgetsHeights[i] +self.VertPos ,self.GetSize()[1]
  132.     if self.WidgetsVPos[i]+ self.WidgetsHeights[i]  +self.VertPos<=0:
  133.       self.DoScroll(self.WidgetsHeights[i])
  134.     self.AdjustScrollArrows()
  135.  
  136.  
  137.   def RemoveWidget(self,widget):
  138.     print "B_ListWidget::RemoveWidget() not implemented."
  139.     pass
  140.  
  141.  
  142.   def DoScroll(self,amount):
  143.     for i in range(self.nWidgets()-2): # Me salto los dos ·ltimos widgets, son las flechas
  144.       self.MoveWidgetRel_Idx(i,0,amount)
  145.     self.VertPos=self.VertPos+amount
  146.       
  147.  
  148.  
  149.   def GetTopIndex(self):
  150.     pass
  151.  
  152.   def SetTopIndex(self,index):
  153.     pass
  154.  
  155.   def EnsureVisible(self,index):
  156.     pass
  157.  
  158. ##  def Draw(self,x,y,time):
  159. ##    if self.GetVisible()==0:
  160. ##      return
  161. ##
  162. ##    #print "MenuItemText",self.Name()
  163. ##    foc=self.GetHasFocus()
  164. ##    if foc:
  165. ##      self.SetBorderColor(220,220,220)
  166. ##    else:
  167. ##      self.SetBorderColor(220,10,10)
  168. ##
  169. ##    self.DefDraw(x,y,time)
  170.  
  171.  
  172.  
  173.  
  174.  
  175.