Advertisement
Guest User

Untitled

a guest
Aug 5th, 2017
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 104.83 KB | None | 0 0
  1. import app
  2. import ime
  3. import grp
  4. import snd
  5. import wndMgr
  6. import item
  7. import skill
  8. import localeinfo
  9. import petskill
  10. import uishop
  11. import dbg
  12. # MARK_BUG_FIX
  13. import guild
  14. # END_OF_MARK_BUG_FIX
  15.  
  16. from _weakref import proxy
  17.  
  18. BACKGROUND_COLOR = grp.GenerateColor(0.0, 0.0, 0.0, 1.0)
  19. DARK_COLOR = grp.GenerateColor(0.2, 0.2, 0.2, 1.0)
  20. BRIGHT_COLOR = grp.GenerateColor(0.7, 0.7, 0.7, 1.0)
  21.  
  22. SELECT_COLOR = grp.GenerateColor(0.0, 0.0, 0.5, 0.3)
  23.  
  24. WHITE_COLOR = grp.GenerateColor(1.0, 1.0, 1.0, 0.5)
  25. HALF_WHITE_COLOR = grp.GenerateColor(1.0, 1.0, 1.0, 0.2)
  26.  
  27. createToolTipWindowDict = {}
  28. def RegisterCandidateWindowClass(codePage, candidateWindowClass):
  29.     EditLine.candidateWindowClassDict[codePage]=candidateWindowClass
  30. def RegisterToolTipWindow(type, createToolTipWindow):
  31.     createToolTipWindowDict[type]=createToolTipWindow
  32.  
  33. app.SetDefaultFontName(localeinfo.UI_DEF_FONT)
  34.  
  35. class __mem_func__:
  36.     class __noarg_call__:
  37.         def __init__(self, cls, obj, func):
  38.             self.cls=cls
  39.             self.obj=proxy(obj)
  40.             self.func=proxy(func)
  41.  
  42.         def __call__(self, *arg):
  43.             return self.func(self.obj)
  44.  
  45.     class __arg_call__:
  46.         def __init__(self, cls, obj, func):
  47.             self.cls=cls
  48.             self.obj=proxy(obj)
  49.             self.func=proxy(func)
  50.  
  51.         def __call__(self, *arg):
  52.             return self.func(self.obj, *arg)
  53.  
  54.     def __init__(self, mfunc):
  55.         if mfunc.im_func.func_code.co_argcount>1:
  56.             self.call=__mem_func__.__arg_call__(mfunc.im_class, mfunc.im_self, mfunc.im_func)
  57.         else:
  58.             self.call=__mem_func__.__noarg_call__(mfunc.im_class, mfunc.im_self, mfunc.im_func)
  59.  
  60.     def __call__(self, *arg):
  61.         return self.call(*arg)
  62.  
  63.  
  64. class Window(object):
  65.     def NoneMethod(cls):
  66.         pass
  67.  
  68.     NoneMethod = classmethod(NoneMethod)
  69.  
  70.     def __init__(self, layer = "UI"):
  71.         self.hWnd = None
  72.         self.parentWindow = 0
  73.         self.RegisterWindow(layer)
  74.         self.Hide()
  75.  
  76.     def __del__(self):
  77.         wndMgr.Destroy(self.hWnd)
  78.  
  79.     def RegisterWindow(self, layer):
  80.         self.hWnd = wndMgr.Register(self, layer)
  81.  
  82.     def Destroy(self):
  83.         pass
  84.  
  85.     def GetWindowHandle(self):
  86.         return self.hWnd
  87.  
  88.     def AddFlag(self, style):
  89.         wndMgr.AddFlag(self.hWnd, style)
  90.  
  91.     def IsRTL(self):
  92.         return wndMgr.IsRTL(self.hWnd)
  93.  
  94.     def SetWindowName(self, Name):
  95.         wndMgr.SetName(self.hWnd, Name)
  96.  
  97.     def SetParent(self, parent):       
  98.         wndMgr.SetParent(self.hWnd, parent.hWnd)
  99.  
  100.     def SetParentProxy(self, parent):
  101.         self.parentWindow=proxy(parent)
  102.         wndMgr.SetParent(self.hWnd, parent.hWnd)
  103.  
  104.    
  105.     def GetParentProxy(self):
  106.         return self.parentWindow
  107.  
  108.     def SetPickAlways(self):
  109.         wndMgr.SetPickAlways(self.hWnd)
  110.  
  111.     def SetWindowHorizontalAlignLeft(self):
  112.         wndMgr.SetWindowHorizontalAlign(self.hWnd, wndMgr.HORIZONTAL_ALIGN_LEFT)
  113.  
  114.     def SetWindowHorizontalAlignCenter(self):
  115.         wndMgr.SetWindowHorizontalAlign(self.hWnd, wndMgr.HORIZONTAL_ALIGN_CENTER)
  116.  
  117.     def SetWindowHorizontalAlignRight(self):
  118.         wndMgr.SetWindowHorizontalAlign(self.hWnd, wndMgr.HORIZONTAL_ALIGN_RIGHT)
  119.  
  120.     def SetWindowVerticalAlignTop(self):
  121.         wndMgr.SetWindowVerticalAlign(self.hWnd, wndMgr.VERTICAL_ALIGN_TOP)
  122.  
  123.     def SetWindowVerticalAlignCenter(self):
  124.         wndMgr.SetWindowVerticalAlign(self.hWnd, wndMgr.VERTICAL_ALIGN_CENTER)
  125.  
  126.     def SetWindowVerticalAlignBottom(self):
  127.         wndMgr.SetWindowVerticalAlign(self.hWnd, wndMgr.VERTICAL_ALIGN_BOTTOM)
  128.  
  129.     def SetTop(self):
  130.         wndMgr.SetTop(self.hWnd)
  131.  
  132.     def Show(self):
  133.         wndMgr.Show(self.hWnd)
  134.  
  135.     def Hide(self):
  136.         wndMgr.Hide(self.hWnd)
  137.  
  138.     def Lock(self):
  139.         wndMgr.Lock(self.hWnd)
  140.  
  141.     def Unlock(self):
  142.         wndMgr.Unlock(self.hWnd)
  143.  
  144.     def IsShow(self):
  145.         return wndMgr.IsShow(self.hWnd)
  146.  
  147.     def UpdateRect(self):
  148.         wndMgr.UpdateRect(self.hWnd)
  149.  
  150.     def SetSize(self, width, height):
  151.         wndMgr.SetWindowSize(self.hWnd, width, height)
  152.  
  153.     def GetWidth(self):
  154.         return wndMgr.GetWindowWidth(self.hWnd)
  155.  
  156.     def GetHeight(self):
  157.         return wndMgr.GetWindowHeight(self.hWnd)
  158.  
  159.     def GetLocalPosition(self):
  160.         return wndMgr.GetWindowLocalPosition(self.hWnd)
  161.  
  162.     def GetGlobalPosition(self):
  163.         return wndMgr.GetWindowGlobalPosition(self.hWnd)
  164.  
  165.     def GetMouseLocalPosition(self):
  166.         return wndMgr.GetMouseLocalPosition(self.hWnd)
  167.  
  168.     def GetRect(self):
  169.         return wndMgr.GetWindowRect(self.hWnd)
  170.  
  171.     def SetPosition(self, x, y):
  172.         wndMgr.SetWindowPosition(self.hWnd, x, y)
  173.  
  174.     def SetYPosition(self, y):
  175.         wndMgr.SetWindowPosition(self.hWnd, y)
  176.  
  177.     def SetXPosition(self, x):
  178.         wndMgr.SetWindowPosition(self.hWnd, x)
  179.  
  180.     def SetCenterPosition(self, x = 0, y = 0):
  181.         self.SetPosition((wndMgr.GetScreenWidth() - self.GetWidth()) / 2 + x, (wndMgr.GetScreenHeight() - self.GetHeight()) / 2 + y)
  182.  
  183.     def IsFocus(self):
  184.         return wndMgr.IsFocus(self.hWnd)
  185.  
  186.     def SetFocus(self):
  187.         wndMgr.SetFocus(self.hWnd)
  188.  
  189.     def KillFocus(self):
  190.         wndMgr.KillFocus(self.hWnd)
  191.  
  192.     def GetChildCount(self):
  193.         return wndMgr.GetChildCount(self.hWnd)
  194.  
  195.     def IsIn(self):
  196.         return wndMgr.IsIn(self.hWnd)
  197.  
  198.    
  199. class ListBoxEx(Window):
  200.  
  201.     class Item(Window):
  202.         def __init__(self):
  203.             Window.__init__(self)
  204.  
  205.         def __del__(self):
  206.             Window.__del__(self)
  207.  
  208.         def SetParent(self, parent):
  209.             Window.SetParent(self, parent)
  210.             self.parent=proxy(parent)
  211.  
  212.         def OnMouseLeftButtonDown(self):
  213.             self.parent.SelectItem(self)
  214.  
  215.         def OnRender(self):
  216.             if self.parent.GetSelectedItem()==self:
  217.                 self.OnSelectedRender()
  218.  
  219.         def OnSelectedRender(self):
  220.             x, y = self.GetGlobalPosition()
  221.             grp.SetColor(grp.GenerateColor(0.0, 0.0, 0.7, 0.7))
  222.             grp.RenderBar(x, y, self.GetWidth(), self.GetHeight())
  223.  
  224.     def __init__(self):
  225.         Window.__init__(self)
  226.  
  227.         self.viewItemCount=10
  228.         self.basePos=0
  229.         self.itemHeight=16
  230.         self.itemStep=20
  231.         self.selItem=0
  232.         self.itemList=[]
  233.         self.onSelectItemEvent = lambda *arg: None
  234.        
  235.         self.itemWidth=100
  236.  
  237.         self.scrollBar=None
  238.         self.__UpdateSize()
  239.  
  240.     def __del__(self):
  241.         Window.__del__(self)
  242.  
  243.     def __UpdateSize(self):
  244.         height=self.itemStep*self.__GetViewItemCount()
  245.  
  246.         self.SetSize(self.itemWidth, height)
  247.  
  248.     def IsEmpty(self):
  249.         if len(self.itemList)==0:
  250.             return 1
  251.         return 0
  252.  
  253.     def SetItemStep(self, itemStep):
  254.         self.itemStep=itemStep
  255.         self.__UpdateSize()
  256.  
  257.     def SetItemSize(self, itemWidth, itemHeight):
  258.         self.itemWidth=itemWidth
  259.         self.itemHeight=itemHeight
  260.         self.__UpdateSize()
  261.  
  262.     def SetViewItemCount(self, viewItemCount):
  263.         self.viewItemCount=viewItemCount
  264.  
  265.     def SetSelectEvent(self, event):
  266.         self.onSelectItemEvent = event
  267.  
  268.     def SetBasePos(self, basePos):
  269.         for oldItem in self.itemList[self.basePos:self.basePos+self.viewItemCount]:
  270.             oldItem.Hide()
  271.  
  272.         self.basePos=basePos
  273.  
  274.         pos=basePos
  275.         for newItem in self.itemList[self.basePos:self.basePos+self.viewItemCount]:
  276.             (x, y)=self.GetItemViewCoord(pos, newItem.GetWidth())
  277.             newItem.SetPosition(x, y)
  278.             newItem.Show()
  279.             pos+=1
  280.  
  281.     def GetItemIndex(self, argItem):
  282.         return self.itemList.index(argItem)
  283.  
  284.     def GetSelectedItem(self):
  285.         return self.selItem
  286.  
  287.     def SelectIndex(self, index):
  288.  
  289.         if index >= len(self.itemList) or index < 0:
  290.             self.selItem = None
  291.             return
  292.  
  293.         try:
  294.             self.selItem=self.itemList[index]
  295.         except:
  296.             pass
  297.  
  298.     def SelectItem(self, selItem):
  299.         self.selItem=selItem
  300.         self.onSelectItemEvent(selItem)
  301.  
  302.     def RemoveAllItems(self):
  303.         self.selItem=None
  304.         self.itemList=[]
  305.  
  306.         if self.scrollBar:
  307.             self.scrollBar.SetPos(0)
  308.  
  309.     def RemoveItem(self, delItem):
  310.         if delItem==self.selItem:
  311.             self.selItem=None
  312.  
  313.         self.itemList.remove(delItem)
  314.  
  315.     def AppendItem(self, newItem):
  316.         newItem.SetParent(self)
  317.         newItem.SetSize(self.itemWidth, self.itemHeight)
  318.  
  319.         pos=len(self.itemList)
  320.         if self.__IsInViewRange(pos):
  321.             (x, y)=self.GetItemViewCoord(pos, newItem.GetWidth())
  322.             newItem.SetPosition(x, y)
  323.             newItem.Show()
  324.         else:
  325.             newItem.Hide()
  326.  
  327.         self.itemList.append(newItem)
  328.  
  329.     def SetScrollBar(self, scrollBar):
  330.         scrollBar.SetScrollEvent(__mem_func__(self.__OnScroll))
  331.         self.scrollBar=scrollBar
  332.  
  333.     def __OnScroll(self):
  334.         self.SetBasePos(int(self.scrollBar.GetPos()*self.__GetScrollLen()))
  335.  
  336.     def __GetScrollLen(self):
  337.         scrollLen=self.__GetItemCount()-self.__GetViewItemCount()
  338.         if scrollLen<0:
  339.             return 0
  340.  
  341.         return scrollLen
  342.  
  343.     def __GetViewItemCount(self):
  344.         return self.viewItemCount
  345.  
  346.     def __GetItemCount(self):
  347.         return len(self.itemList)
  348.  
  349.     def GetItemViewCoord(self, pos, itemWidth):
  350.         return (0, (pos-self.basePos)*self.itemStep)
  351.  
  352.     def __IsInViewRange(self, pos):
  353.         if pos<self.basePos:
  354.             return 0
  355.         if pos>=self.basePos+self.viewItemCount:
  356.             return 0
  357.         return 1
  358.  
  359. class CandidateListBox(ListBoxEx):
  360.  
  361.     HORIZONTAL_MODE = 0
  362.     VERTICAL_MODE = 1
  363.  
  364.     class Item(ListBoxEx.Item):
  365.         def __init__(self, text):
  366.             ListBoxEx.Item.__init__(self)
  367.  
  368.             self.textBox=TextLine()
  369.             self.textBox.SetParent(self)
  370.             self.textBox.SetText(text)
  371.             self.textBox.Show()
  372.  
  373.         def __del__(self):
  374.             ListBoxEx.Item.__del__(self)
  375.  
  376.     def __init__(self, mode = HORIZONTAL_MODE):
  377.         ListBoxEx.__init__(self)
  378.         self.itemWidth=32
  379.         self.itemHeight=32
  380.         self.mode = mode
  381.  
  382.     def __del__(self):
  383.         ListBoxEx.__del__(self)
  384.  
  385.     def SetMode(self, mode):
  386.         self.mode = mode
  387.  
  388.     def AppendItem(self, newItem):
  389.         ListBoxEx.AppendItem(self, newItem)
  390.  
  391.     def GetItemViewCoord(self, pos):
  392.         if self.mode == self.HORIZONTAL_MODE:
  393.             return ((pos-self.basePos)*self.itemStep, 0)
  394.         elif self.mode == self.VERTICAL_MODE:
  395.             return (0, (pos-self.basePos)*self.itemStep)
  396.  
  397.  
  398. class TextLine(Window):
  399.     def __init__(self):
  400.         Window.__init__(self)
  401.         self.max = 0
  402.         self.SetFontName(localeinfo.UI_DEF_FONT)
  403.  
  404.     def __del__(self):
  405.         Window.__del__(self)
  406.  
  407.     def RegisterWindow(self, layer):
  408.         self.hWnd = wndMgr.RegisterTextLine(self, layer)
  409.  
  410.     def SetMax(self, max):
  411.         wndMgr.SetMax(self.hWnd, max)
  412.  
  413.     def SetLimitWidth(self, width):
  414.         wndMgr.SetLimitWidth(self.hWnd, width)
  415.  
  416.     def SetMultiLine(self):
  417.         wndMgr.SetMultiLine(self.hWnd, TRUE)
  418.  
  419.     def SetHorizontalAlignArabic(self):
  420.         wndMgr.SetHorizontalAlign(self.hWnd, wndMgr.TEXT_HORIZONTAL_ALIGN_ARABIC)
  421.  
  422.     def SetHorizontalAlignLeft(self):
  423.         wndMgr.SetHorizontalAlign(self.hWnd, wndMgr.TEXT_HORIZONTAL_ALIGN_LEFT)
  424.  
  425.     def SetHorizontalAlignRight(self):
  426.         wndMgr.SetHorizontalAlign(self.hWnd, wndMgr.TEXT_HORIZONTAL_ALIGN_RIGHT)
  427.  
  428.     def SetHorizontalAlignCenter(self):
  429.         wndMgr.SetHorizontalAlign(self.hWnd, wndMgr.TEXT_HORIZONTAL_ALIGN_CENTER)
  430.  
  431.     def SetVerticalAlignTop(self):
  432.         wndMgr.SetVerticalAlign(self.hWnd, wndMgr.TEXT_VERTICAL_ALIGN_TOP)
  433.  
  434.     def SetVerticalAlignBottom(self):
  435.         wndMgr.SetVerticalAlign(self.hWnd, wndMgr.TEXT_VERTICAL_ALIGN_BOTTOM)
  436.  
  437.     def SetVerticalAlignCenter(self):
  438.         wndMgr.SetVerticalAlign(self.hWnd, wndMgr.TEXT_VERTICAL_ALIGN_CENTER)
  439.  
  440.     def SetSecret(self, Value=TRUE):
  441.         wndMgr.SetSecret(self.hWnd, Value)
  442.  
  443.     def SetOutline(self, Value=TRUE):
  444.         wndMgr.SetOutline(self.hWnd, Value)
  445.  
  446.     def SetFeather(self, value=TRUE):
  447.         wndMgr.SetFeather(self.hWnd, value)
  448.  
  449.     def SetFontName(self, fontName):
  450.         wndMgr.SetFontName(self.hWnd, fontName)
  451.  
  452.     def SetDefaultFontName(self):
  453.         wndMgr.SetFontName(self.hWnd, localeinfo.UI_DEF_FONT)
  454.  
  455.     def SetFontColor(self, red, green, blue):
  456.         wndMgr.SetFontColor(self.hWnd, red, green, blue)
  457.  
  458.     def SetPackedFontColor(self, color):
  459.         wndMgr.SetFontColor(self.hWnd, color)
  460.  
  461.     def SetText(self, text):
  462.         wndMgr.SetText(self.hWnd, text)
  463.  
  464.     def GetText(self):
  465.         return wndMgr.GetText(self.hWnd)
  466.  
  467.     def GetTextSize(self):
  468.         return wndMgr.GetTextSize(self.hWnd)
  469.  
  470. class EmptyCandidateWindow(Window):
  471.     def __init__(self):
  472.         Window.__init__(self)
  473.  
  474.     def __del__(self):
  475.         Window.__init__(self)
  476.  
  477.     def Load(self):
  478.         pass
  479.  
  480.     def SetCandidatePosition(self, x, y, textCount):
  481.         pass
  482.  
  483.     def Clear(self):
  484.         pass
  485.  
  486.     def Append(self, text):
  487.         pass
  488.  
  489.     def Refresh(self):
  490.         pass
  491.  
  492.     def Select(self):
  493.         pass
  494.  
  495. class EditLine(TextLine):
  496.     candidateWindowClassDict = {}
  497.  
  498.     def __init__(self):
  499.         TextLine.__init__(self)
  500.  
  501.         self.eventReturn = Window.NoneMethod
  502.         self.eventEscape = Window.NoneMethod
  503.         self.eventTab = None
  504.         self.numberMode = FALSE
  505.         self.useIME = TRUE
  506.  
  507.         self.bCodePage = FALSE
  508.  
  509.         self.candidateWindowClass = None
  510.         self.candidateWindow = None
  511.         self.SetCodePage(app.GetDefaultCodePage())
  512.  
  513.         self.readingWnd = ReadingWnd()
  514.         self.readingWnd.Hide()
  515.  
  516.     def __del__(self):
  517.         TextLine.__del__(self)
  518.  
  519.         self.eventReturn = Window.NoneMethod
  520.         self.eventEscape = Window.NoneMethod
  521.         self.eventTab = None
  522.  
  523.  
  524.     def SetCodePage(self, codePage):
  525.         candidateWindowClass=EditLine.candidateWindowClassDict.get(codePage, EmptyCandidateWindow)
  526.         self.__SetCandidateClass(candidateWindowClass)
  527.  
  528.     def __SetCandidateClass(self, candidateWindowClass):
  529.         if self.candidateWindowClass==candidateWindowClass:
  530.             return
  531.  
  532.         self.candidateWindowClass = candidateWindowClass
  533.         self.candidateWindow = self.candidateWindowClass()
  534.         self.candidateWindow.Load()
  535.         self.candidateWindow.Hide()
  536.  
  537.     def RegisterWindow(self, layer):
  538.         self.hWnd = wndMgr.RegisterTextLine(self, layer)
  539.  
  540.     def SAFE_SetReturnEvent(self, event):
  541.         self.eventReturn = __mem_func__(event)     
  542.  
  543.     def SetReturnEvent(self, event):
  544.         self.eventReturn = event
  545.  
  546.     def SetEscapeEvent(self, event):
  547.         self.eventEscape = event
  548.  
  549.     def SetTabEvent(self, event):
  550.         self.eventTab = event
  551.  
  552.     def SetMax(self, max):
  553.         self.max = max
  554.         wndMgr.SetMax(self.hWnd, self.max)
  555.         ime.SetMax(self.max)
  556.         self.SetUserMax(self.max)
  557.        
  558.     def SetUserMax(self, max):
  559.         self.userMax = max
  560.         ime.SetUserMax(self.userMax)
  561.  
  562.     def SetNumberMode(self):
  563.         self.numberMode = TRUE
  564.  
  565.     #def AddExceptKey(self, key):
  566.     #   ime.AddExceptKey(key)
  567.  
  568.     #def ClearExceptKey(self):
  569.     #   ime.ClearExceptKey()
  570.  
  571.     def SetIMEFlag(self, flag):
  572.         self.useIME = flag
  573.  
  574.     def SetText(self, text):
  575.         wndMgr.SetText(self.hWnd, text)
  576.  
  577.         if self.IsFocus():
  578.             ime.SetText(text)
  579.  
  580.     def Enable(self):
  581.         wndMgr.ShowCursor(self.hWnd)
  582.  
  583.     def Disable(self):
  584.         wndMgr.HideCursor(self.hWnd)
  585.  
  586.     def SetEndPosition(self):
  587.         ime.MoveEnd()
  588.  
  589.     def OnSetFocus(self):
  590.         Text = self.GetText()
  591.         ime.SetText(Text)
  592.         ime.SetMax(self.max)
  593.         ime.SetUserMax(self.userMax)
  594.         ime.SetCursorPosition(-1)
  595.         if self.numberMode:
  596.             ime.SetNumberMode()
  597.         else:
  598.             ime.SetStringMode()
  599.         ime.EnableCaptureInput()
  600.         if self.useIME:
  601.             ime.EnableIME()
  602.         else:
  603.             ime.DisableIME()
  604.         wndMgr.ShowCursor(self.hWnd, TRUE)
  605.  
  606.     def OnKillFocus(self):
  607.         self.SetText(ime.GetText(self.bCodePage))
  608.         self.OnIMECloseCandidateList()
  609.         self.OnIMECloseReadingWnd()
  610.         ime.DisableIME()
  611.         ime.DisableCaptureInput()
  612.         wndMgr.HideCursor(self.hWnd)
  613.  
  614.     def OnIMEChangeCodePage(self):
  615.         self.SetCodePage(ime.GetCodePage())
  616.  
  617.     def OnIMEOpenCandidateList(self):
  618.         self.candidateWindow.Show()
  619.         self.candidateWindow.Clear()
  620.         self.candidateWindow.Refresh()
  621.  
  622.         gx, gy = self.GetGlobalPosition()
  623.         self.candidateWindow.SetCandidatePosition(gx, gy, len(self.GetText()))
  624.  
  625.         return TRUE
  626.  
  627.     def OnIMECloseCandidateList(self):
  628.         self.candidateWindow.Hide()
  629.         return TRUE
  630.  
  631.     def OnIMEOpenReadingWnd(self):
  632.         gx, gy = self.GetGlobalPosition()
  633.         textlen = len(self.GetText())-2    
  634.         reading = ime.GetReading()
  635.         readinglen = len(reading)
  636.         self.readingWnd.SetReadingPosition( gx + textlen*6-24-readinglen*6, gy )
  637.         self.readingWnd.SetText(reading)
  638.         if ime.GetReadingError() == 0:
  639.             self.readingWnd.SetTextColor(0xffffffff)
  640.         else:
  641.             self.readingWnd.SetTextColor(0xffff0000)
  642.         self.readingWnd.SetSize(readinglen * 6 + 4, 19)
  643.         self.readingWnd.Show()
  644.         return TRUE
  645.  
  646.     def OnIMECloseReadingWnd(self):
  647.         self.readingWnd.Hide()
  648.         return TRUE
  649.  
  650.     def OnIMEUpdate(self):
  651.         snd.PlaySound("sound/ui/type.wav")
  652.         TextLine.SetText(self, ime.GetText(self.bCodePage))
  653.  
  654.     def OnIMETab(self):
  655.         if self.eventTab:
  656.             self.eventTab()
  657.             return TRUE
  658.  
  659.         return FALSE
  660.  
  661.     def OnIMEReturn(self):
  662.         snd.PlaySound("sound/ui/click.wav")
  663.         self.eventReturn()
  664.  
  665.         return TRUE
  666.  
  667.     def OnPressEscapeKey(self):
  668.         self.eventEscape()
  669.         return TRUE
  670.  
  671.     def OnKeyDown(self, key):
  672.         if app.DIK_F1 == key:
  673.             return FALSE
  674.         if app.DIK_F2 == key:
  675.             return FALSE
  676.         if app.DIK_F3 == key:
  677.             return FALSE
  678.         if app.DIK_F4 == key:
  679.             return FALSE
  680.         if app.DIK_LALT == key:
  681.             return FALSE
  682.         if app.DIK_SYSRQ == key:
  683.             return FALSE
  684.         if app.DIK_LCONTROL == key:
  685.             return FALSE
  686.         if app.DIK_V == key:
  687.             if app.IsPressed(app.DIK_LCONTROL):
  688.                 ime.PasteTextFromClipBoard()
  689.  
  690.         return TRUE
  691.  
  692.     def OnKeyUp(self, key):
  693.         if app.DIK_F1 == key:
  694.             return FALSE
  695.         if app.DIK_F2 == key:
  696.             return FALSE
  697.         if app.DIK_F3 == key:
  698.             return FALSE
  699.         if app.DIK_F4 == key:
  700.             return FALSE
  701.         if app.DIK_LALT == key:
  702.             return FALSE
  703.         if app.DIK_SYSRQ == key:
  704.             return FALSE
  705.         if app.DIK_LCONTROL == key:
  706.             return FALSE
  707.  
  708.         return TRUE
  709.  
  710.     def OnIMEKeyDown(self, key):       
  711.         # Left
  712.         if app.VK_LEFT == key:
  713.             ime.MoveLeft()
  714.             return TRUE
  715.         # Right
  716.         if app.VK_RIGHT == key:
  717.             ime.MoveRight()
  718.             return TRUE
  719.  
  720.         # Home
  721.         if app.VK_HOME == key:
  722.             ime.MoveHome()
  723.             return TRUE
  724.         # End
  725.         if app.VK_END == key:
  726.             ime.MoveEnd()
  727.             return TRUE
  728.  
  729.         # Delete
  730.         if app.VK_DELETE == key:
  731.             ime.Delete()
  732.             TextLine.SetText(self, ime.GetText(self.bCodePage))
  733.             return TRUE
  734.            
  735.         return TRUE
  736.  
  737.     #def OnMouseLeftButtonDown(self):
  738.     #   self.SetFocus()
  739.     def OnMouseLeftButtonDown(self):
  740.         if FALSE == self.IsIn():
  741.             return FALSE
  742.  
  743.         self.SetFocus()
  744.         PixelPosition = wndMgr.GetCursorPosition(self.hWnd)
  745.         ime.SetCursorPosition(PixelPosition)
  746.        
  747.        
  748.        
  749. class VerticalSeparator(Window):
  750.     BASE_PATH = "illumina/controls/common/separator"
  751.  
  752.     HEIGHTS = {
  753.         'TOP' : 6,
  754.         'CENTER' : 1,
  755.         'BOTTOM' : 6
  756.     }
  757.  
  758.     WIDTH = 11
  759.  
  760.     def __init__(self, layer = "UI"):
  761.         Window.__init__(self, layer)
  762.  
  763.         self.__CreateUI()
  764.         self.SetHeight(0)
  765.  
  766.     def __del__(self):
  767.         Window.__del__(self)
  768.  
  769.     def __CreateUI(self):
  770.         self.__dictImages = {
  771.             'TOP' : ImageBox(),
  772.             'CENTER' : ExpandedImageBox(),
  773.             'BOTTOM' : ImageBox()
  774.         }
  775.  
  776.         for image in self.__dictImages.itervalues():
  777.             image.SetParent(self)
  778.             image.Show()
  779.            
  780.         self.__dictImages['TOP'].LoadImage("%s/vertical_top.tga" % VerticalSeparator.BASE_PATH)
  781.         self.__dictImages['CENTER'].LoadImage("%s/vertical_center.tga" % VerticalSeparator.BASE_PATH)
  782.         self.__dictImages['BOTTOM'].LoadImage("%s/vertical_bottom.tga" % VerticalSeparator.BASE_PATH)
  783.  
  784.         self.__dictImages['TOP'].SetPosition(0, 0)
  785.         self.__dictImages['CENTER'].SetPosition(0, VerticalSeparator.HEIGHTS['TOP'])
  786.        
  787.     def SetHeight(self, height):
  788.         height = max(VerticalSeparator.HEIGHTS['TOP'] + VerticalSeparator.HEIGHTS['BOTTOM'], height)
  789.  
  790.         self.SetSize(VerticalSeparator.WIDTH, height)
  791.        
  792.         self.__dictImages['CENTER'].SetScale(1.0, float(height - (VerticalSeparator.HEIGHTS['TOP'] + VerticalSeparator.HEIGHTS['BOTTOM'])) / float(VerticalSeparator.HEIGHTS['CENTER']))
  793.         self.__dictImages['BOTTOM'].SetPosition(0, height - VerticalSeparator.HEIGHTS['BOTTOM'])
  794.        
  795. ## ILLUMINA ##
  796.  
  797. class HorizontalSeparator(Window):
  798.     BASE_PATH = "illumina/controls/common/separator"
  799.  
  800.     WIDTHS = {
  801.         'LEFT' : 6,
  802.         'CENTER' : 1,
  803.         'RIGHT' : 6
  804.     }
  805.  
  806.     HEIGHT = 11
  807.  
  808.     def __init__(self, layer = "UI"):
  809.         Window.__init__(self, layer)
  810.  
  811.         self.__CreateUI()
  812.         self.SetWidth(0)
  813.  
  814.     def __del__(self):
  815.         Window.__del__(self)
  816.  
  817.     def __CreateUI(self):
  818.         self.__dictImages = {
  819.             'LEFT' : ImageBox(),
  820.             'CENTER' : ExpandedImageBox(),
  821.             'RIGHT' : ImageBox()
  822.         }
  823.  
  824.         for image in self.__dictImages.itervalues():
  825.             image.SetParent(self)
  826.             image.Show()
  827.            
  828.         self.__dictImages['LEFT'].LoadImage("%s/horizontal_left.tga" % HorizontalSeparator.BASE_PATH)
  829.         self.__dictImages['CENTER'].LoadImage("%s/horizontal_center.tga" % HorizontalSeparator.BASE_PATH)
  830.         self.__dictImages['RIGHT'].LoadImage("%s/horizontal_right.tga" % HorizontalSeparator.BASE_PATH)
  831.  
  832.         self.__dictImages['LEFT'].SetPosition(0, 0)
  833.         self.__dictImages['CENTER'].SetPosition(HorizontalSeparator.WIDTHS['LEFT'], 0)
  834.    
  835.     def SetWidth(self, width):
  836.         width = max(HorizontalSeparator.WIDTHS['LEFT'] + HorizontalSeparator.WIDTHS['RIGHT'], width)
  837.  
  838.         self.SetSize(width, HorizontalSeparator.HEIGHT)
  839.        
  840.         self.__dictImages['CENTER'].SetScale(float(width - (HorizontalSeparator.WIDTHS['LEFT'] + HorizontalSeparator.WIDTHS['RIGHT'])) / float(HorizontalSeparator.WIDTHS['CENTER']), 1.0)
  841.         self.__dictImages['RIGHT'].SetPosition(width - HorizontalSeparator.WIDTHS['RIGHT'], 0)
  842.        
  843. ## ILLUMINA ##
  844.  
  845. class MarkBox(Window):
  846.     def __init__(self, layer = "UI"):
  847.         Window.__init__(self, layer)
  848.  
  849.     def __del__(self):
  850.         Window.__del__(self)
  851.  
  852.     def RegisterWindow(self, layer):
  853.         self.hWnd = wndMgr.RegisterMarkBox(self, layer)
  854.  
  855.     def Load(self):
  856.         wndMgr.MarkBox_Load(self.hWnd)
  857.  
  858.     def SetScale(self, scale):
  859.         wndMgr.MarkBox_SetScale(self.hWnd, scale)
  860.  
  861.     def SetIndex(self, guildID):
  862.         MarkID = guild.GuildIDToMarkID(guildID)
  863.         wndMgr.MarkBox_SetImageFilename(self.hWnd, guild.GetMarkImageFilenameByMarkID(MarkID))
  864.         wndMgr.MarkBox_SetIndex(self.hWnd, guild.GetMarkIndexByMarkID(MarkID))
  865.  
  866.     def SetAlpha(self, alpha):
  867.         wndMgr.MarkBox_SetDiffuseColor(self.hWnd, 1.0, 1.0, 1.0, alpha)
  868.  
  869. class ImageBox(Window):
  870.     def __init__(self, layer = "UI"):
  871.         Window.__init__(self, layer)
  872.  
  873.         self.eventDict={}
  874.  
  875.     def __del__(self):
  876.         Window.__del__(self)
  877.  
  878.     def RegisterWindow(self, layer):
  879.         self.hWnd = wndMgr.RegisterImageBox(self, layer)
  880.  
  881.     def LoadImage(self, imageName):
  882.         self.name=imageName
  883.         wndMgr.LoadImage(self.hWnd, imageName)
  884.  
  885.         if len(self.eventDict)!=0:
  886.             print "LOAD IMAGE", self, self.eventDict
  887.  
  888.     def SetAlpha(self, alpha):
  889.         wndMgr.SetDiffuseColor(self.hWnd, 1.0, 1.0, 1.0, alpha)
  890.  
  891.     def GetWidth(self):
  892.         return wndMgr.GetWidth(self.hWnd)
  893.  
  894.     def GetHeight(self):
  895.         return wndMgr.GetHeight(self.hWnd)
  896.  
  897.     def OnMouseOverIn(self):
  898.         try:
  899.             self.eventDict["MOUSE_OVER_IN"]()
  900.         except KeyError:
  901.             pass
  902.  
  903.     def OnMouseOverOut(self):
  904.         try:
  905.             self.eventDict["MOUSE_OVER_OUT"]()
  906.         except KeyError:
  907.             pass
  908.  
  909.     def SAFE_SetStringEvent(self, event, func):
  910.         self.eventDict[event]=__mem_func__(func)
  911.  
  912.  
  913. class ExpandedImageBox(ImageBox):
  914.     def __init__(self, layer = "UI"):
  915.         ImageBox.__init__(self, layer)
  916.         self.Rot = 0
  917.        
  918.     def __del__(self):
  919.         ImageBox.__del__(self)
  920.  
  921.     def SetAlpha(self, alpha):
  922.         wndMgr.SetDiffuseColor(self.hWnd, 1.0, 1.0, 1.0, alpha)
  923.  
  924.     def RegisterWindow(self, layer):
  925.         self.hWnd = wndMgr.RegisterExpandedImageBox(self, layer)
  926.  
  927.     def SetScale(self, xScale, yScale):
  928.         wndMgr.SetScale(self.hWnd, xScale, yScale)
  929.  
  930.     def SetOrigin(self, x, y):
  931.         wndMgr.SetOrigin(self.hWnd, x, y)
  932.  
  933.     def SetRotation(self, rotation):
  934.         self.Rot = rotation
  935.         wndMgr.SetRotation(self.hWnd, rotation)
  936.    
  937.     def GetRotation(self):
  938.         return self.Rot
  939.    
  940.     def SetRenderingMode(self, mode):
  941.         wndMgr.SetRenderingMode(self.hWnd, mode)
  942.  
  943.     # [0.0, 1.0] 사이의 값만큼 퍼센트로 그리지 않는다.
  944.     def SetRenderingRect(self, left, top, right, bottom):
  945.         wndMgr.SetRenderingRect(self.hWnd, left, top, right, bottom)
  946.  
  947.     def SetPercentage(self, curValue, maxValue):
  948.         if maxValue:
  949.             self.SetRenderingRect(0.0, 0.0, -1.0 + float(curValue) / float(maxValue), 0.0)
  950.         else:
  951.             self.SetRenderingRect(0.0, 0.0, 0.0, 0.0)
  952.  
  953.     def GetWidth(self):
  954.         return wndMgr.GetWindowWidth(self.hWnd)
  955.  
  956.     def GetHeight(self):
  957.         return wndMgr.GetWindowHeight(self.hWnd)
  958.  
  959.     def SetTextPosition(self, x, y):
  960.         self.tx = x
  961.         self.ty = y
  962.         self.SetPosition(x, y)
  963.  
  964.     def GetTextPosition(self):
  965.         return self.tx, self.ty
  966.  
  967. class AniImageBox(Window):
  968.     def __init__(self, layer = "UI"):
  969.         Window.__init__(self, layer)
  970.  
  971.     def __del__(self):
  972.         Window.__del__(self)
  973.  
  974.     def RegisterWindow(self, layer):
  975.         self.hWnd = wndMgr.RegisterAniImageBox(self, layer)
  976.  
  977.     def SetDelay(self, delay):
  978.         wndMgr.SetDelay(self.hWnd, delay)
  979.  
  980.     def AppendImage(self, filename):
  981.         wndMgr.AppendImage(self.hWnd, filename)
  982.  
  983.     def AppendImageScale(self, filename, scale_x, scale_y):
  984.         wndMgr.AppendImageScale(self.hWnd, filename, scale_x, scale_y)
  985.  
  986.     def SetPercentage(self, curValue, maxValue):
  987.         wndMgr.SetRenderingRect(self.hWnd, 0.0, 0.0, -1.0 + float(curValue) / float(maxValue), 0.0)
  988.  
  989.     def OnEndFrame(self):
  990.         pass
  991.  
  992. class Button(Window):
  993.     def __init__(self, layer = "UI"):
  994.         Window.__init__(self, layer)
  995.  
  996.         self.eventFunc = None
  997.         self.eventArgs = None
  998.  
  999.         self.ButtonText = None
  1000.         self.ToolTipText = None
  1001.  
  1002.     def __del__(self):
  1003.         Window.__del__(self)
  1004.  
  1005.         self.eventFunc = None
  1006.         self.eventArgs = None
  1007.  
  1008.     def RegisterWindow(self, layer):
  1009.         self.hWnd = wndMgr.RegisterButton(self, layer)
  1010.  
  1011.     def SetUpVisual(self, filename):
  1012.         wndMgr.SetUpVisual(self.hWnd, filename)
  1013.  
  1014.     def SetOverVisual(self, filename):
  1015.         wndMgr.SetOverVisual(self.hWnd, filename)
  1016.        
  1017. ##Bonus
  1018.     def GetText(self):
  1019.         if not self.ButtonText:
  1020.             return# ""
  1021.         return self.ButtonText.GetText()       
  1022.  
  1023.     def SetDownVisual(self, filename):
  1024.         wndMgr.SetDownVisual(self.hWnd, filename)
  1025.  
  1026.     def SetDisableVisual(self, filename):
  1027.         wndMgr.SetDisableVisual(self.hWnd, filename)
  1028.  
  1029.     def GetUpVisualFileName(self):
  1030.         return wndMgr.GetUpVisualFileName(self.hWnd)
  1031.  
  1032.     def GetOverVisualFileName(self):
  1033.         return wndMgr.GetOverVisualFileName(self.hWnd)
  1034.  
  1035.     def GetDownVisualFileName(self):
  1036.         return wndMgr.GetDownVisualFileName(self.hWnd)
  1037.  
  1038.     def Flash(self):
  1039.         wndMgr.Flash(self.hWnd)
  1040.  
  1041.     def Enable(self):
  1042.         wndMgr.Enable(self.hWnd)
  1043.  
  1044.     def Disable(self):
  1045.         wndMgr.Disable(self.hWnd)
  1046.  
  1047.     def Down(self):
  1048.         wndMgr.Down(self.hWnd)
  1049.  
  1050.     def SetUp(self):
  1051.         wndMgr.SetUp(self.hWnd)
  1052.  
  1053.     def SAFE_SetEvent(self, func, *args):
  1054.         self.eventFunc = __mem_func__(func)
  1055.         self.eventArgs = args
  1056.        
  1057.     def SetEvent(self, func, *args):
  1058.         self.eventFunc = func
  1059.         self.eventArgs = args
  1060.  
  1061.     def SetTextColor(self, color):
  1062.         if not self.ButtonText:
  1063.             return
  1064.         self.ButtonText.SetPackedFontColor(color)
  1065.  
  1066.     def SetText(self, text, height = 4):
  1067.  
  1068.         if not self.ButtonText:
  1069.             textLine = TextLine()
  1070.             textLine.SetParent(self)
  1071.             textLine.SetPosition(self.GetWidth()/2, self.GetHeight()/2)
  1072.             textLine.SetVerticalAlignCenter()
  1073.             textLine.SetHorizontalAlignCenter()
  1074.             textLine.Show()
  1075.             self.ButtonText = textLine
  1076.  
  1077.         self.ButtonText.SetText(text)
  1078.  
  1079.     def SetFormToolTipText(self, type, text, x, y):
  1080.         if not self.ToolTipText:       
  1081.             toolTip=createToolTipWindowDict[type]()
  1082.             toolTip.SetParent(self)
  1083.             toolTip.SetSize(0, 0)
  1084.             toolTip.SetHorizontalAlignCenter()
  1085.             toolTip.SetOutline()
  1086.             toolTip.Hide()
  1087.             toolTip.SetPosition(x + self.GetWidth()/2, y)
  1088.             self.ToolTipText=toolTip
  1089.  
  1090.         self.ToolTipText.SetText(text)
  1091.  
  1092.     def SetToolTipWindow(self, toolTip):       
  1093.         self.ToolTipText=toolTip       
  1094.         self.ToolTipText.SetParentProxy(self)
  1095.  
  1096.     def SetToolTipText(self, text, x=0, y = -19):
  1097.         self.SetFormToolTipText("TEXT", text, x, y)
  1098.  
  1099.     def CallEvent(self):
  1100.         snd.PlaySound("sound/ui/click.wav")
  1101.  
  1102.         if self.eventFunc:
  1103.             apply(self.eventFunc, self.eventArgs)
  1104.  
  1105.     def ShowToolTip(self):
  1106.         if self.ToolTipText:
  1107.             self.ToolTipText.Show()
  1108.  
  1109.     def HideToolTip(self):
  1110.         if self.ToolTipText:
  1111.             self.ToolTipText.Hide()
  1112.            
  1113.     def IsDown(self):
  1114.         return wndMgr.IsDown(self.hWnd)
  1115.  
  1116. class RadioButton(Button):
  1117.     def __init__(self):
  1118.         Button.__init__(self)
  1119.  
  1120.     def __del__(self):
  1121.         Button.__del__(self)
  1122.  
  1123.     def RegisterWindow(self, layer):
  1124.         self.hWnd = wndMgr.RegisterRadioButton(self, layer)
  1125.  
  1126. class ToggleButton(Button):
  1127.     def __init__(self):
  1128.         Button.__init__(self)
  1129.  
  1130.         self.eventUp = None
  1131.         self.eventDown = None
  1132.  
  1133.     def __del__(self):
  1134.         Button.__del__(self)
  1135.  
  1136.         self.eventUp = None
  1137.         self.eventDown = None
  1138.  
  1139.     def SetToggleUpEvent(self, event):
  1140.         self.eventUp = event
  1141.  
  1142.     def SetToggleDownEvent(self, event):
  1143.         self.eventDown = event
  1144.  
  1145.     def RegisterWindow(self, layer):
  1146.         self.hWnd = wndMgr.RegisterToggleButton(self, layer)
  1147.  
  1148.     def OnToggleUp(self):
  1149.         if self.eventUp:
  1150.             self.eventUp()
  1151.  
  1152.     def OnToggleDown(self):
  1153.         if self.eventDown:
  1154.             self.eventDown()
  1155.  
  1156. class DragButton(Button):
  1157.     def __init__(self):
  1158.         Button.__init__(self)
  1159.         self.AddFlag("movable")
  1160.  
  1161.         self.callbackEnable = TRUE
  1162.         self.eventMove = lambda: None
  1163.  
  1164.     def __del__(self):
  1165.         Button.__del__(self)
  1166.  
  1167.         self.eventMove = lambda: None
  1168.  
  1169.     def RegisterWindow(self, layer):
  1170.         self.hWnd = wndMgr.RegisterDragButton(self, layer)
  1171.  
  1172.     def SetMoveEvent(self, event):
  1173.         self.eventMove = event
  1174.  
  1175.     def SetRestrictMovementArea(self, x, y, width, height):
  1176.         wndMgr.SetRestrictMovementArea(self.hWnd, x, y, width, height)
  1177.  
  1178.     def TurnOnCallBack(self):
  1179.         self.callbackEnable = TRUE
  1180.  
  1181.     def TurnOffCallBack(self):
  1182.         self.callbackEnable = FALSE
  1183.  
  1184.     def OnMove(self):
  1185.         if self.callbackEnable:
  1186.             self.eventMove()
  1187.  
  1188. class NumberLine(Window):
  1189.  
  1190.     def __init__(self, layer = "UI"):
  1191.         Window.__init__(self, layer)
  1192.  
  1193.     def __del__(self):
  1194.         Window.__del__(self)
  1195.  
  1196.     def RegisterWindow(self, layer):
  1197.         self.hWnd = wndMgr.RegisterNumberLine(self, layer)
  1198.  
  1199.     def SetHorizontalAlignCenter(self):
  1200.         wndMgr.SetNumberHorizontalAlignCenter(self.hWnd)
  1201.  
  1202.     def SetHorizontalAlignRight(self):
  1203.         wndMgr.SetNumberHorizontalAlignRight(self.hWnd)
  1204.  
  1205.     def SetPath(self, path):
  1206.         wndMgr.SetPath(self.hWnd, path)
  1207.  
  1208.     def SetNumber(self, number):
  1209.         wndMgr.SetNumber(self.hWnd, number)
  1210.  
  1211. ###################################################################################################
  1212. ## PythonScript Element
  1213. ###################################################################################################
  1214.  
  1215. class Box(Window):
  1216.  
  1217.     def RegisterWindow(self, layer):
  1218.         self.hWnd = wndMgr.RegisterBox(self, layer)
  1219.  
  1220.     def SetColor(self, color):
  1221.         wndMgr.SetColor(self.hWnd, color)
  1222.  
  1223. class Bar(Window):
  1224.  
  1225.     def RegisterWindow(self, layer):
  1226.         self.hWnd = wndMgr.RegisterBar(self, layer)
  1227.  
  1228.     def SetColor(self, color):
  1229.         wndMgr.SetColor(self.hWnd, color)
  1230.  
  1231. class Line(Window):
  1232.  
  1233.     def RegisterWindow(self, layer):
  1234.         self.hWnd = wndMgr.RegisterLine(self, layer)
  1235.  
  1236.     def SetColor(self, color):
  1237.         wndMgr.SetColor(self.hWnd, color)
  1238.  
  1239. class SlotBar(Window):
  1240.  
  1241.     def __init__(self):
  1242.         Window.__init__(self)
  1243.  
  1244.     def RegisterWindow(self, layer):
  1245.         self.hWnd = wndMgr.RegisterBar3D(self, layer)
  1246.  
  1247. ## Same with SlotBar
  1248. class Bar3D(Window):
  1249.  
  1250.     def __init__(self):
  1251.         Window.__init__(self)
  1252.  
  1253.     def RegisterWindow(self, layer):
  1254.         self.hWnd = wndMgr.RegisterBar3D(self, layer)
  1255.  
  1256.     def SetColor(self, left, right, center):
  1257.         wndMgr.SetColor(self.hWnd, left, right, center)
  1258.  
  1259. class SlotWindow(Window):
  1260.  
  1261.     def __init__(self):
  1262.         Window.__init__(self)
  1263.  
  1264.         self.StartIndex = 0
  1265.  
  1266.         self.eventSelectEmptySlot = None
  1267.         self.eventSelectItemSlot = None
  1268.         self.eventUnselectEmptySlot = None
  1269.         self.eventUnselectItemSlot = None
  1270.         self.eventUseSlot = None
  1271.         self.eventOverInItem = None
  1272.         self.eventOverOutItem = None
  1273.         self.eventPressedSlotButton = None
  1274.  
  1275.     def __del__(self):
  1276.         Window.__del__(self)
  1277.  
  1278.         self.eventSelectEmptySlot = None
  1279.         self.eventSelectItemSlot = None
  1280.         self.eventUnselectEmptySlot = None
  1281.         self.eventUnselectItemSlot = None
  1282.         self.eventUseSlot = None
  1283.         self.eventOverInItem = None
  1284.         self.eventOverOutItem = None
  1285.         self.eventPressedSlotButton = None
  1286.  
  1287.     def RegisterWindow(self, layer):
  1288.         self.hWnd = wndMgr.RegisterSlotWindow(self, layer)
  1289.  
  1290.     def SetSlotStyle(self, style):
  1291.         wndMgr.SetSlotStyle(self.hWnd, style)
  1292.  
  1293.     def HasSlot(self, slotIndex):
  1294.         return wndMgr.HasSlot(self.hWnd, slotIndex)
  1295.  
  1296.     def SetSlotBaseImage(self, imageFileName, r, g, b, a):
  1297.         wndMgr.SetSlotBaseImage(self.hWnd, imageFileName, r, g, b, a)
  1298.  
  1299.     def SetSlotBaseImageScale(self, imageFileName, r, g, b, a, sx, sy):
  1300.         wndMgr.SetSlotBaseImageScale(self.hWnd, imageFileName, r, g, b, a, sx, sy)
  1301.  
  1302.     def SetCoverButton(self,\
  1303.                         slotIndex,\
  1304.                         upName="illumina/slot1.tga",\
  1305.                         overName="illumina/slot2.tga",\
  1306.                         downName="illumina/slot.tga",\
  1307.                         disableName="illumina/slot.tga",\
  1308.                         LeftButtonEnable = FALSE,\
  1309.                         RightButtonEnable = TRUE):
  1310.         wndMgr.SetCoverButton(self.hWnd, slotIndex, upName, overName, downName, disableName, LeftButtonEnable, RightButtonEnable)
  1311.  
  1312.     def EnableCoverButton(self, slotIndex):
  1313.         wndMgr.EnableCoverButton(self.hWnd, slotIndex)
  1314.  
  1315.     def DisableCoverButton(self, slotIndex):
  1316.         wndMgr.DisableCoverButton(self.hWnd, slotIndex)
  1317.  
  1318.     def SetAlwaysRenderCoverButton(self, slotIndex, bAlwaysRender = TRUE):
  1319.         wndMgr.SetAlwaysRenderCoverButton(self.hWnd, slotIndex, bAlwaysRender)
  1320.  
  1321.     def AppendSlotButton(self, upName, overName, downName):
  1322.         wndMgr.AppendSlotButton(self.hWnd, upName, overName, downName)
  1323.  
  1324.     def ShowSlotButton(self, slotNumber):
  1325.         wndMgr.ShowSlotButton(self.hWnd, slotNumber)
  1326.  
  1327.     def HideAllSlotButton(self):
  1328.         wndMgr.HideAllSlotButton(self.hWnd)
  1329.  
  1330.     def AppendRequirementSignImage(self, filename):
  1331.         wndMgr.AppendRequirementSignImage(self.hWnd, filename)
  1332.  
  1333.     def ShowRequirementSign(self, slotNumber):
  1334.         wndMgr.ShowRequirementSign(self.hWnd, slotNumber)
  1335.  
  1336.     def HideRequirementSign(self, slotNumber):
  1337.         wndMgr.HideRequirementSign(self.hWnd, slotNumber)
  1338.  
  1339.     def ActivateSlot(self, slotNumber):
  1340.         wndMgr.ActivateSlot(self.hWnd, slotNumber)
  1341.  
  1342.     def DeactivateSlot(self, slotNumber):
  1343.         wndMgr.DeactivateSlot(self.hWnd, slotNumber)
  1344.  
  1345.     def ShowSlotBaseImage(self, slotNumber):
  1346.         wndMgr.ShowSlotBaseImage(self.hWnd, slotNumber)
  1347.  
  1348.     def HideSlotBaseImage(self, slotNumber):
  1349.         wndMgr.HideSlotBaseImage(self.hWnd, slotNumber)
  1350.  
  1351.     def SAFE_SetButtonEvent(self, button, state, event):
  1352.         if "LEFT"==button:
  1353.             if "EMPTY"==state:
  1354.                 self.eventSelectEmptySlot=__mem_func__(event)
  1355.             elif "EXIST"==state:
  1356.                 self.eventSelectItemSlot=__mem_func__(event)
  1357.             elif "ALWAYS"==state:
  1358.                 self.eventSelectEmptySlot=__mem_func__(event)
  1359.                 self.eventSelectItemSlot=__mem_func__(event)
  1360.         elif "RIGHT"==button:
  1361.             if "EMPTY"==state:
  1362.                 self.eventUnselectEmptySlot=__mem_func__(event)
  1363.             elif "EXIST"==state:
  1364.                 self.eventUnselectItemSlot=__mem_func__(event)
  1365.             elif "ALWAYS"==state:
  1366.                 self.eventUnselectEmptySlot=__mem_func__(event)
  1367.                 self.eventUnselectItemSlot=__mem_func__(event)
  1368.  
  1369.     def SetSelectEmptySlotEvent(self, empty):
  1370.         self.eventSelectEmptySlot = empty
  1371.  
  1372.     def SetSelectItemSlotEvent(self, item):
  1373.         self.eventSelectItemSlot = item
  1374.  
  1375.     def SetUnselectEmptySlotEvent(self, empty):
  1376.         self.eventUnselectEmptySlot = empty
  1377.  
  1378.     def SetUnselectItemSlotEvent(self, item):
  1379.         self.eventUnselectItemSlot = item
  1380.  
  1381.     def SetUseSlotEvent(self, use):
  1382.         self.eventUseSlot = use
  1383.  
  1384.     def SetOverInItemEvent(self, event):
  1385.         self.eventOverInItem = event
  1386.  
  1387.     def SetOverOutItemEvent(self, event):
  1388.         self.eventOverOutItem = event
  1389.  
  1390.     def SetPressedSlotButtonEvent(self, event):
  1391.         self.eventPressedSlotButton = event
  1392.  
  1393.     def GetSlotCount(self):
  1394.         return wndMgr.GetSlotCount(self.hWnd)
  1395.  
  1396.     def SetUseMode(self, flag):
  1397.         "TRUE일때만 ItemToItem 이 가능한지 보여준다"
  1398.         wndMgr.SetUseMode(self.hWnd, flag)
  1399.  
  1400.     def SetUsableItem(self, flag):
  1401.         "TRUE면 현재 가리킨 아이템이 ItemToItem 적용 가능하다"
  1402.         wndMgr.SetUsableItem(self.hWnd, flag)
  1403.  
  1404.     ## Slot
  1405.     def SetSlotCoolTime(self, slotIndex, coolTime, elapsedTime = 0.0):
  1406.         wndMgr.SetSlotCoolTime(self.hWnd, slotIndex, coolTime, elapsedTime)
  1407.  
  1408.     def LockSlot(self, slotIndex):
  1409.         wndMgr.LockSlot(self.hWnd, slotIndex)
  1410.  
  1411.     def UnlockSlot(self, slotIndex):
  1412.         wndMgr.UnlockSlot(self.hWnd, slotIndex)
  1413.  
  1414.     def RefreshSlot(self):
  1415.         wndMgr.RefreshSlot(self.hWnd)
  1416.  
  1417.     def ClearSlot(self, slotNumber):
  1418.         wndMgr.ClearSlot(self.hWnd, slotNumber)
  1419.  
  1420.     def ClearAllSlot(self):
  1421.         wndMgr.ClearAllSlot(self.hWnd)
  1422.  
  1423.     def AppendSlot(self, index, x, y, width, height):
  1424.         wndMgr.AppendSlot(self.hWnd, index, x, y, width, height)
  1425.  
  1426.     def SetSlot(self, slotIndex, itemIndex, width, height, icon):
  1427.         wndMgr.SetSlot(self.hWnd, slotIndex, itemIndex, width, height, icon)
  1428.  
  1429.     def SetSlotScale(self, slotIndex, itemIndex, width, height, icon, sx, sy, diffuseColor = (1.0, 1.0, 1.0, 1.0)):
  1430.         wndMgr.SetSlotScale(self.hWnd, slotIndex, itemIndex, width, height, icon, diffuseColor, sx, sy)
  1431.  
  1432.     def SetSlotCount(self, slotNumber, count):
  1433.         wndMgr.SetSlotCount(self.hWnd, slotNumber, count)
  1434.  
  1435.     def SetSlotCountNew(self, slotNumber, grade, count):
  1436.         wndMgr.SetSlotCountNew(self.hWnd, slotNumber, grade, count)
  1437.  
  1438.     def SetItemSlot(self, renderingSlotNumber, ItemIndex, ItemCount = 0):
  1439.  
  1440.         if 0 == ItemIndex or None == ItemIndex:
  1441.             wndMgr.ClearSlot(self.hWnd, renderingSlotNumber)
  1442.             return
  1443.  
  1444.         item.SelectItem(ItemIndex)
  1445.         itemIcon = item.GetIconImage()
  1446.  
  1447.         item.SelectItem(ItemIndex)
  1448.         (width, height) = item.GetItemSize()
  1449.  
  1450.         wndMgr.SetSlot(self.hWnd, renderingSlotNumber, ItemIndex, width, height, itemIcon)
  1451.         wndMgr.SetSlotCount(self.hWnd, renderingSlotNumber, ItemCount)
  1452.  
  1453.     def SetPetSkillSlot(self, renderingSlotNumber, skillIndex, skillLevel, sx = 1.0, sy = 1.0):
  1454.  
  1455.         skillIcon = petskill.GetIconImage(skillIndex)
  1456.  
  1457.         if 0 == skillIcon:
  1458.             wndMgr.ClearSlot(self.hWnd, renderingSlotNumber)
  1459.             return
  1460.         petskill.SetSkillSlot(renderingSlotNumber, skillIndex)
  1461.         if sx != 1.0:
  1462.             wndMgr.SetSlotScale(self.hWnd, renderingSlotNumber, skillIndex, 1, 1, skillIcon, (1.0, 1.0, 1.0, 1.0), sx, sy)
  1463.         else:
  1464.             wndMgr.SetSlot(self.hWnd, renderingSlotNumber, skillIndex, 1, 1, skillIcon)
  1465.             wndMgr.SetSlotCount(self.hWnd, renderingSlotNumber, skillLevel)
  1466.  
  1467.     def SetSkillSlot(self, renderingSlotNumber, skillIndex, skillLevel):
  1468.  
  1469.         skillIcon = skill.GetIconImage(skillIndex)
  1470.  
  1471.         if 0 == skillIcon:
  1472.             wndMgr.ClearSlot(self.hWnd, renderingSlotNumber)
  1473.             return
  1474.  
  1475.         wndMgr.SetSlot(self.hWnd, renderingSlotNumber, skillIndex, 1, 1, skillIcon)
  1476.         wndMgr.SetSlotCount(self.hWnd, renderingSlotNumber, skillLevel)
  1477.  
  1478.     def SetSkillSlotNew(self, renderingSlotNumber, skillIndex, skillGrade, skillLevel):
  1479.        
  1480.         skillIcon = skill.GetIconImageNew(skillIndex, skillGrade)
  1481.  
  1482.         if 0 == skillIcon:
  1483.             wndMgr.ClearSlot(self.hWnd, renderingSlotNumber)
  1484.             return
  1485.  
  1486.         wndMgr.SetSlot(self.hWnd, renderingSlotNumber, skillIndex, 1, 1, skillIcon)
  1487.  
  1488.     def SetEmotionSlot(self, renderingSlotNumber, emotionIndex):
  1489.         import player
  1490.         icon = player.GetEmotionIconImage(emotionIndex)
  1491.  
  1492.         if 0 == icon:
  1493.             wndMgr.ClearSlot(self.hWnd, renderingSlotNumber)
  1494.             return
  1495.  
  1496.         wndMgr.SetSlot(self.hWnd, renderingSlotNumber, emotionIndex, 1, 1, icon)
  1497.  
  1498.     ## Event
  1499.     def OnSelectEmptySlot(self, slotNumber):
  1500.         if self.eventSelectEmptySlot:
  1501.             self.eventSelectEmptySlot(slotNumber)
  1502.  
  1503.     def OnSelectItemSlot(self, slotNumber):
  1504.         if self.eventSelectItemSlot:
  1505.             self.eventSelectItemSlot(slotNumber)
  1506.  
  1507.     def OnUnselectEmptySlot(self, slotNumber):
  1508.         if self.eventUnselectEmptySlot:
  1509.             self.eventUnselectEmptySlot(slotNumber)
  1510.  
  1511.     def OnUnselectItemSlot(self, slotNumber):
  1512.         if self.eventUnselectItemSlot:
  1513.             self.eventUnselectItemSlot(slotNumber)
  1514.  
  1515.     def OnUseSlot(self, slotNumber):
  1516.         if self.eventUseSlot:
  1517.             self.eventUseSlot(slotNumber)
  1518.  
  1519.     def OnOverInItem(self, slotNumber):
  1520.         if self.eventOverInItem:
  1521.             self.eventOverInItem(slotNumber)
  1522.  
  1523.     def OnOverOutItem(self):
  1524.         if self.eventOverOutItem:
  1525.             self.eventOverOutItem()
  1526.  
  1527.     def OnPressedSlotButton(self, slotNumber):
  1528.         if self.eventPressedSlotButton:
  1529.             self.eventPressedSlotButton(slotNumber)
  1530.  
  1531.     def GetStartIndex(self):
  1532.         return 0
  1533.  
  1534. class GridSlotWindow(SlotWindow):
  1535.  
  1536.     def __init__(self):
  1537.         SlotWindow.__init__(self)
  1538.  
  1539.         self.startIndex = 0
  1540.  
  1541.     def __del__(self):
  1542.         SlotWindow.__del__(self)
  1543.  
  1544.     def RegisterWindow(self, layer):
  1545.         self.hWnd = wndMgr.RegisterGridSlotWindow(self, layer)
  1546.  
  1547.     def ArrangeSlot(self, StartIndex, xCount, yCount, xSize, ySize, xBlank, yBlank):
  1548.  
  1549.         self.startIndex = StartIndex
  1550.  
  1551.         wndMgr.ArrangeSlot(self.hWnd, StartIndex, xCount, yCount, xSize, ySize, xBlank, yBlank)
  1552.         self.startIndex = StartIndex
  1553.  
  1554.     def GetStartIndex(self):
  1555.         return self.startIndex
  1556.  
  1557. class TitleBar(Window):
  1558.  
  1559.     BLOCK_WIDTH = 35
  1560.     BLOCK_HEIGHT = 28
  1561.  
  1562.     def __init__(self):
  1563.         Window.__init__(self)
  1564.         self.AddFlag("attach")
  1565.  
  1566.     def __del__(self):
  1567.         Window.__del__(self)
  1568.  
  1569.     def MakeTitleBar(self, width, color):
  1570.  
  1571.         ## 현재 Color는 사용하고 있지 않음
  1572.  
  1573.         width = max(64, width)
  1574.  
  1575.         imgLeft = ImageBox()
  1576.         imgCenter = ExpandedImageBox()
  1577.         imgRight = ImageBox()
  1578.         imgRight2 = ImageBox()
  1579.         imgLeft.AddFlag("not_pick")
  1580.         imgCenter.AddFlag("not_pick")
  1581.         imgRight2.AddFlag("not_pick")
  1582.         imgRight.AddFlag("not_pick")
  1583.         imgLeft.SetParent(self)
  1584.         imgCenter.SetParent(self)
  1585.         imgRight2.SetParent(imgRight)
  1586.         imgRight.SetParent(self)
  1587.  
  1588.         imgLeft.LoadImage("d:/ymir work/ui/pattern/titlebar_left.tga")
  1589.         imgCenter.LoadImage("d:/ymir work/ui/pattern/titlebar_center.tga")
  1590.         imgRight.LoadImage("d:/ymir work/ui/pattern/titlebar_right.tga")
  1591.         imgRight2.LoadImage("d:/ymir work/ui/pattern/decoration_right.tga")
  1592.  
  1593.         imgLeft.Show()
  1594.         imgCenter.Show()
  1595.         imgRight.Show()
  1596.         imgRight2.Show()
  1597.  
  1598.         btnClose = Button()
  1599.         btnClose.SetParent(self)
  1600.         btnClose.SetUpVisual("d:/ymir work/ui/pattern/board_close_normal.tga")
  1601.         btnClose.SetOverVisual("d:/ymir work/ui/pattern/board_close_hover.tga")
  1602.         btnClose.SetDownVisual("d:/ymir work/ui/pattern/board_close_active.tga")
  1603.         btnClose.SetToolTipText(localeinfo.UI_CLOSE, 0, -24)
  1604.         btnClose.Show()
  1605.  
  1606.         self.imgLeft = imgLeft
  1607.         self.imgCenter = imgCenter
  1608.         self.imgRight = imgRight
  1609.         self.imgRight2 = imgRight2
  1610.         self.btnClose = btnClose
  1611.  
  1612.         self.SetWidth(width)
  1613.  
  1614.     def SetWidth(self, width):
  1615.         self.imgCenter.SetRenderingRect(0.0, 0.0, float((width - self.BLOCK_WIDTH*2) - 151) / 151, 0.0)
  1616.         self.imgLeft.SetPosition(0,3)
  1617.         self.imgCenter.SetPosition(self.BLOCK_WIDTH, 3)
  1618.         self.imgRight.SetPosition(width - self.BLOCK_WIDTH, 3)
  1619.         self.imgRight2.SetPosition(-13,-17)
  1620.  
  1621.         self.btnClose.SetPosition(width - self.btnClose.GetWidth() - 1, 1)
  1622.            
  1623.         self.SetSize(width, self.BLOCK_HEIGHT)
  1624.  
  1625.     def SetCloseEvent(self, event):
  1626.         self.btnClose.SetEvent(event)
  1627.        
  1628.     def Refresh(self):
  1629.         pass
  1630.  
  1631. class HorizontalBar(Window):
  1632.  
  1633.     BLOCK_WIDTH = 32
  1634.     BLOCK_HEIGHT = 17
  1635.  
  1636.     def __init__(self):
  1637.         Window.__init__(self)
  1638.         self.AddFlag("attach")
  1639.  
  1640.     def __del__(self):
  1641.         Window.__del__(self)
  1642.  
  1643.     def Create(self, width):
  1644.  
  1645.         width = max(96, width)
  1646.  
  1647.         imgLeft = ImageBox()
  1648.         imgLeft.SetParent(self)
  1649.         imgLeft.AddFlag("not_pick")
  1650.         imgLeft.LoadImage("d:/ymir work/ui/pattern/horizontalbar_left.tga")
  1651.         imgLeft.Show()
  1652.  
  1653.         imgCenter = ExpandedImageBox()
  1654.         imgCenter.SetParent(self)
  1655.         imgCenter.AddFlag("not_pick")
  1656.         imgCenter.LoadImage("d:/ymir work/ui/pattern/horizontalbar_center.tga")
  1657.         imgCenter.Show()
  1658.  
  1659.         imgRight = ImageBox()
  1660.         imgRight.SetParent(self)
  1661.         imgRight.AddFlag("not_pick")
  1662.         imgRight.LoadImage("d:/ymir work/ui/pattern/horizontalbar_right.tga")
  1663.         imgRight.Show()
  1664.  
  1665.         self.imgLeft = imgLeft
  1666.         self.imgCenter = imgCenter
  1667.         self.imgRight = imgRight
  1668.         self.SetWidth(width)
  1669.  
  1670.     def SetWidth(self, width):
  1671.         self.imgCenter.SetRenderingRect(0.0, 0.0, float((width - self.BLOCK_WIDTH*2) - self.BLOCK_WIDTH) / self.BLOCK_WIDTH, 0.0)
  1672.         self.imgCenter.SetPosition(self.BLOCK_WIDTH, 0)
  1673.         self.imgRight.SetPosition(width - self.BLOCK_WIDTH, 0)
  1674.         self.SetSize(width, self.BLOCK_HEIGHT)
  1675.  
  1676. class Gauge(Window):
  1677.  
  1678.     SLOT_WIDTH = 16
  1679.     SLOT_HEIGHT = 7
  1680.  
  1681.     GAUGE_TEMPORARY_PLACE = 12
  1682.     GAUGE_WIDTH = 16
  1683.  
  1684.     def __init__(self):
  1685.         Window.__init__(self)
  1686.         self.width = 0
  1687.     def __del__(self):
  1688.         Window.__del__(self)
  1689.  
  1690.     def MakeGauge(self, width, color):
  1691.  
  1692.         self.width = max(48, width)
  1693.  
  1694.         imgSlotLeft = ImageBox()
  1695.         imgSlotLeft.SetParent(self)
  1696.         imgSlotLeft.LoadImage("d:/ymir work/ui/pattern/gauge_slot_left.tga")
  1697.         imgSlotLeft.Show()
  1698.  
  1699.         imgSlotRight = ImageBox()
  1700.         imgSlotRight.SetParent(self)
  1701.         imgSlotRight.LoadImage("d:/ymir work/ui/pattern/gauge_slot_right.tga")
  1702.         imgSlotRight.Show()
  1703.         imgSlotRight.SetPosition(width - self.SLOT_WIDTH, 0)
  1704.  
  1705.         imgSlotCenter = ExpandedImageBox()
  1706.         imgSlotCenter.SetParent(self)
  1707.         imgSlotCenter.LoadImage("d:/ymir work/ui/pattern/gauge_slot_center.tga")
  1708.         imgSlotCenter.Show()
  1709.         imgSlotCenter.SetRenderingRect(0.0, 0.0, float((width - self.SLOT_WIDTH*2) - self.SLOT_WIDTH) / self.SLOT_WIDTH, 0.0)
  1710.         imgSlotCenter.SetPosition(self.SLOT_WIDTH, 0)
  1711.  
  1712.         imgGauge = ExpandedImageBox()
  1713.         imgGauge.SetParent(self)
  1714.         imgGauge.LoadImage("d:/ymir work/ui/pattern/gauge_" + color + ".tga")
  1715.         imgGauge.Show()
  1716.         imgGauge.SetRenderingRect(0.0, 0.0, 0.0, 0.0)
  1717.         imgGauge.SetPosition(self.GAUGE_TEMPORARY_PLACE, 0)
  1718.  
  1719.         imgSlotLeft.AddFlag("attach")
  1720.         imgSlotCenter.AddFlag("attach")
  1721.         imgSlotRight.AddFlag("attach")
  1722.  
  1723.         self.imgLeft = imgSlotLeft
  1724.         self.imgCenter = imgSlotCenter
  1725.         self.imgRight = imgSlotRight
  1726.         self.imgGauge = imgGauge
  1727.  
  1728.         self.SetSize(width, self.SLOT_HEIGHT)
  1729.  
  1730.     def SetPercentage(self, curValue, maxValue):
  1731.  
  1732.         # PERCENTAGE_MAX_VALUE_ZERO_DIVISION_ERROR
  1733.         if maxValue > 0.0:
  1734.             percentage = min(1.0, float(curValue)/float(maxValue))
  1735.         else:
  1736.             percentage = 0.0
  1737.         # END_OF_PERCENTAGE_MAX_VALUE_ZERO_DIVISION_ERROR
  1738.  
  1739.         gaugeSize = -1.0 + float(self.width - self.GAUGE_TEMPORARY_PLACE*2) * percentage / self.GAUGE_WIDTH
  1740.         self.imgGauge.SetRenderingRect(0.0, 0.0, gaugeSize, 0.0)
  1741.  
  1742. class Board(Window):
  1743.  
  1744.     CORNER_WIDTH = 55
  1745.     CORNER_HEIGHT = 55
  1746.     LINE_WIDTH = 128
  1747.     LINE_HEIGHT = 128
  1748.  
  1749.     LT = 0
  1750.     LB = 1
  1751.     RT = 2
  1752.     RB = 3
  1753.     L = 0
  1754.     R = 1
  1755.     T = 2
  1756.     B = 3
  1757.  
  1758.     def __init__(self):
  1759.         Window.__init__(self)
  1760.  
  1761.         self.MakeBoard("d:/ymir work/ui/pattern/Board_Corner_", "d:/ymir work/ui/pattern/Board_Line_")
  1762.         self.MakeBase()
  1763.  
  1764.     def MakeBoard(self, cornerPath, linePath):
  1765.  
  1766.         CornerFileNames = [ cornerPath+dir+".tga" for dir in ("LeftTop", "LeftBottom", "RightTop", "RightBottom", ) ]
  1767.         LineFileNames = [ linePath+dir+".tga" for dir in ("Left", "Right", "Top", "Bottom", ) ]
  1768.         """
  1769.         CornerFileNames = (
  1770.                             "d:/ymir work/ui/pattern/Board_Corner_LeftTop.tga",
  1771.                             "d:/ymir work/ui/pattern/Board_Corner_LeftBottom.tga",
  1772.                             "d:/ymir work/ui/pattern/Board_Corner_RightTop.tga",
  1773.                             "d:/ymir work/ui/pattern/Board_Corner_RightBottom.tga",
  1774.                             )
  1775.         LineFileNames = (
  1776.                             "d:/ymir work/ui/pattern/Board_Line_Left.tga",
  1777.                             "d:/ymir work/ui/pattern/Board_Line_Right.tga",
  1778.                             "d:/ymir work/ui/pattern/Board_Line_Top.tga",
  1779.                             "d:/ymir work/ui/pattern/Board_Line_Bottom.tga",
  1780.                             )
  1781.         """
  1782.  
  1783.         self.Corners = []
  1784.         for fileName in CornerFileNames:
  1785.             Corner = ExpandedImageBox()
  1786.             Corner.AddFlag("not_pick")
  1787.             Corner.LoadImage(fileName)
  1788.             Corner.SetParent(self)
  1789.             Corner.SetPosition(0, 0)
  1790.             Corner.Show()
  1791.             self.Corners.append(Corner)
  1792.  
  1793.         self.Lines = []
  1794.         for fileName in LineFileNames:
  1795.             Line = ExpandedImageBox()
  1796.             Line.AddFlag("not_pick")
  1797.             Line.LoadImage(fileName)
  1798.             Line.SetParent(self)
  1799.             Line.SetPosition(0, 0)
  1800.             Line.Show()
  1801.             self.Lines.append(Line)
  1802.  
  1803.         self.Lines[self.L].SetPosition(0, self.CORNER_HEIGHT)
  1804.         self.Lines[self.T].SetPosition(self.CORNER_WIDTH, 0)
  1805.  
  1806.     def MakeBase(self):
  1807.         self.Base = ExpandedImageBox()
  1808.         self.Base.AddFlag("not_pick")
  1809.         self.Base.LoadImage("d:/ymir work/ui/pattern/Board_Base.tga")
  1810.         self.Base.SetParent(self)
  1811.         self.Base.SetPosition(self.CORNER_WIDTH, self.CORNER_HEIGHT)
  1812.         self.Base.Show()
  1813.            
  1814.         self.Decoration = ExpandedImageBox()
  1815.         self.Decoration.AddFlag("not_pick")
  1816.         self.Decoration.LoadImage("d:/ymir work/ui/pattern/decoration_leftbottom.tga")
  1817.         self.Decoration.SetParent(self)
  1818.         self.Decoration.SetPosition(self.CORNER_WIDTH, self.CORNER_HEIGHT)
  1819.         self.Decoration.Show()
  1820.  
  1821.     def __del__(self):
  1822.         Window.__del__(self)
  1823.  
  1824.     def SetSize(self, width, height):
  1825.  
  1826.         width = max(self.CORNER_WIDTH*2, width)
  1827.         height = max(self.CORNER_HEIGHT*2, height)
  1828.         Window.SetSize(self, width, height)
  1829.  
  1830.         self.Corners[self.LB].SetPosition(0, height - self.CORNER_HEIGHT)
  1831.         self.Corners[self.RT].SetPosition(width - self.CORNER_WIDTH, 0)
  1832.         self.Corners[self.RB].SetPosition(width - self.CORNER_WIDTH, height - self.CORNER_HEIGHT)
  1833.         self.Lines[self.R].SetPosition(width - self.CORNER_WIDTH, self.CORNER_HEIGHT)
  1834.         self.Lines[self.B].SetPosition(self.CORNER_HEIGHT, height - self.CORNER_HEIGHT)
  1835.        
  1836.         self.Decoration.SetPosition(-5,height-57)
  1837.  
  1838.         verticalShowingPercentage = float((height - self.CORNER_HEIGHT*2) - self.LINE_HEIGHT) / self.LINE_HEIGHT
  1839.         horizontalShowingPercentage = float((width - self.CORNER_WIDTH*2) - self.LINE_WIDTH) / self.LINE_WIDTH
  1840.         self.Lines[self.L].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
  1841.         self.Lines[self.R].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
  1842.         self.Lines[self.T].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
  1843.         self.Lines[self.B].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
  1844.  
  1845.         if self.Base:
  1846.             self.Base.SetRenderingRect(0, 0, horizontalShowingPercentage, verticalShowingPercentage)
  1847.  
  1848. class BoardWithTitleBar(Board):
  1849.     def __init__(self):
  1850.         Board.__init__(self)
  1851.  
  1852.         titleBar = TitleBar()
  1853.         titleBar.SetParent(self)
  1854.         titleBar.MakeTitleBar(0, "red")
  1855.         titleBar.SetPosition(8, 7)
  1856.         titleBar.Show()
  1857.  
  1858.         titleName = TextLine()
  1859.         titleName.SetParent(titleBar)
  1860.         titleName.SetPosition(0, 7)
  1861.         titleName.SetWindowHorizontalAlignCenter()
  1862.         titleName.SetHorizontalAlignCenter()
  1863.         titleName.Show()
  1864.  
  1865.         self.titleBar = titleBar
  1866.         self.titleName = titleName
  1867.  
  1868.         self.SetCloseEvent(self.Hide)
  1869.  
  1870.     def __del__(self):
  1871.         Board.__del__(self)
  1872.         self.titleBar = None
  1873.         self.titleName = None
  1874.  
  1875.     def SetSize(self, width, height):
  1876.         self.titleBar.SetWidth(width - 15)
  1877.         #self.pickRestrictWindow.SetSize(width, height - 30)
  1878.         Board.SetSize(self, width, height)
  1879.         self.titleName.UpdateRect()
  1880.  
  1881.     def SetTitleColor(self, color):
  1882.         self.titleName.SetPackedFontColor(color)
  1883.  
  1884.     def SetTitleName(self, name):
  1885.         self.titleName.SetText(name)
  1886.  
  1887.     def SetCloseEvent(self, event):
  1888.         self.titleBar.SetCloseEvent(event)
  1889.  
  1890. class ThinBoard(Window):
  1891.  
  1892.     CORNER_WIDTH = 21
  1893.     CORNER_HEIGHT = 21
  1894.     LINE_WIDTH = 20
  1895.     LINE_HEIGHT = 20
  1896.     BOARD_COLOR = grp.GenerateColor(0.0, 0.0, 0.0, 0.6)
  1897.  
  1898.     LT = 0
  1899.     LB = 1
  1900.     RT = 2
  1901.     RB = 3
  1902.     L = 0
  1903.     R = 1
  1904.     T = 2
  1905.     B = 3
  1906.  
  1907.     def __init__(self, layer = "UI"):
  1908.         Window.__init__(self, layer)
  1909.  
  1910.         CornerFileNames = [ "d:/ymir work/ui/pattern/ThinBoard_Corner_"+dir+".tga" for dir in ["LeftTop","LeftBottom","RightTop","RightBottom"] ]
  1911.         LineFileNames = [ "d:/ymir work/ui/pattern/ThinBoard_Line_"+dir+".tga" for dir in ["Left","Right","Top","Bottom"] ]
  1912.  
  1913.         self.Corners = []
  1914.         for fileName in CornerFileNames:
  1915.             Corner = ExpandedImageBox()
  1916.             Corner.AddFlag("attach")
  1917.             Corner.AddFlag("not_pick")
  1918.             Corner.LoadImage(fileName)
  1919.             Corner.SetParent(self)
  1920.             Corner.SetPosition(0, 0)
  1921.             Corner.Show()
  1922.             self.Corners.append(Corner)
  1923.  
  1924.         self.Lines = []
  1925.         for fileName in LineFileNames:
  1926.             Line = ExpandedImageBox()
  1927.             Line.AddFlag("attach")
  1928.             Line.AddFlag("not_pick")
  1929.             Line.LoadImage(fileName)
  1930.             Line.SetParent(self)
  1931.             Line.SetPosition(0, 0)
  1932.             Line.Show()
  1933.             self.Lines.append(Line)
  1934.  
  1935.         Base = Bar()
  1936.         Base.SetParent(self)
  1937.         Base.AddFlag("attach")
  1938.         Base.AddFlag("not_pick")
  1939.         Base.SetPosition(self.CORNER_WIDTH, self.CORNER_HEIGHT)
  1940.         Base.SetColor(self.BOARD_COLOR)
  1941.         Base.Show()
  1942.         self.Base = Base
  1943.  
  1944.         self.Lines[self.L].SetPosition(0, self.CORNER_HEIGHT)
  1945.         self.Lines[self.T].SetPosition(self.CORNER_WIDTH, 0)
  1946.  
  1947.     def __del__(self):
  1948.         Window.__del__(self)
  1949.  
  1950.     def SetSize(self, width, height):
  1951.  
  1952.         width = max(self.CORNER_WIDTH*2, width)
  1953.         height = max(self.CORNER_HEIGHT*2, height)
  1954.         Window.SetSize(self, width, height)
  1955.  
  1956.         self.Corners[self.LB].SetPosition(0, height - self.CORNER_HEIGHT)
  1957.         self.Corners[self.RT].SetPosition(width - self.CORNER_WIDTH, 0)
  1958.         self.Corners[self.RB].SetPosition(width - self.CORNER_WIDTH, height - self.CORNER_HEIGHT)
  1959.         self.Lines[self.R].SetPosition(width - self.CORNER_WIDTH, self.CORNER_HEIGHT)
  1960.         self.Lines[self.B].SetPosition(self.CORNER_HEIGHT, height - self.CORNER_HEIGHT)
  1961.  
  1962.         verticalShowingPercentage = float((height - self.CORNER_HEIGHT*2) - self.LINE_HEIGHT) / self.LINE_HEIGHT
  1963.         horizontalShowingPercentage = float((width - self.CORNER_WIDTH*2) - self.LINE_WIDTH) / self.LINE_WIDTH
  1964.         self.Lines[self.L].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
  1965.         self.Lines[self.R].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
  1966.         self.Lines[self.T].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
  1967.         self.Lines[self.B].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
  1968.         self.Base.SetSize(width - self.CORNER_WIDTH*2, height - self.CORNER_HEIGHT*2)
  1969.  
  1970.     def ShowInternal(self):
  1971.         self.Base.Show()
  1972.         for wnd in self.Lines:
  1973.             wnd.Show()
  1974.         for wnd in self.Corners:
  1975.             wnd.Show()
  1976.  
  1977.     def HideInternal(self):
  1978.         self.Base.Hide()
  1979.         for wnd in self.Lines:
  1980.             wnd.Hide()
  1981.         for wnd in self.Corners:
  1982.             wnd.Hide()
  1983.            
  1984. ############## NOWE OKNO ###############
  1985.  
  1986.  
  1987.  
  1988. class ThinBoardNew(Window):
  1989.  
  1990.     CORNER_WIDTH = 16
  1991.     CORNER_HEIGHT = 16
  1992.     LINE_WIDTH = 1
  1993.     LINE_HEIGHT = 1
  1994.  
  1995.     LT = 0
  1996.     LB = 1
  1997.     RT = 2
  1998.     RB = 3
  1999.     L = 0
  2000.     R = 1
  2001.     T = 2
  2002.     B = 3
  2003.  
  2004.     def __init__(self):
  2005.         Window.__init__(self)
  2006.  
  2007.         self.MakeBoard("d:/ymir work/ui/pattern/newbar/bar_corner_", "d:/ymir work/ui/pattern/newbar/bar_")
  2008.         self.MakeBase()
  2009.  
  2010.     def MakeBoard(self, cornerPath, linePath):
  2011.  
  2012.         CornerFileNames = [ cornerPath+dir+".tga" for dir in ("LeftTop", "LeftBottom", "RightTop", "RightBottom", ) ]
  2013.         LineFileNames = [ linePath+dir+".tga" for dir in ("Left", "Right", "Top", "Bottom", ) ]
  2014.         """
  2015.         CornerFileNames = (
  2016.                             "d:/ymir work/ui/pattern/Board_Corner_LeftTop.tga",
  2017.                             "d:/ymir work/ui/pattern/Board_Corner_LeftBottom.tga",
  2018.                             "d:/ymir work/ui/pattern/Board_Corner_RightTop.tga",
  2019.                             "d:/ymir work/ui/pattern/Board_Corner_RightBottom.tga",
  2020.                             )
  2021.         LineFileNames = (
  2022.                             "d:/ymir work/ui/pattern/Board_Line_Left.tga",
  2023.                             "d:/ymir work/ui/pattern/Board_Line_Right.tga",
  2024.                             "d:/ymir work/ui/pattern/Board_Line_Top.tga",
  2025.                             "d:/ymir work/ui/pattern/Board_Line_Bottom.tga",
  2026.                             )
  2027.         """
  2028.  
  2029.         self.Corners = []
  2030.         for fileName in CornerFileNames:
  2031.             Corner = ExpandedImageBox()
  2032.             Corner.AddFlag("not_pick")
  2033.             Corner.LoadImage(fileName)
  2034.             Corner.SetParent(self)
  2035.             Corner.SetPosition(0, 0)
  2036.             Corner.Show()
  2037.             self.Corners.append(Corner)
  2038.  
  2039.         self.Lines = []
  2040.         for fileName in LineFileNames:
  2041.             Line = ExpandedImageBox()
  2042.             Line.AddFlag("not_pick")
  2043.             Line.LoadImage(fileName)
  2044.             Line.SetParent(self)
  2045.             Line.SetPosition(0, 0)
  2046.             Line.Show()
  2047.             self.Lines.append(Line)
  2048.  
  2049.         self.Lines[self.L].SetPosition(0, self.CORNER_HEIGHT)
  2050.         self.Lines[self.T].SetPosition(self.CORNER_WIDTH, 0)
  2051.  
  2052.     def MakeBase(self):
  2053.         self.Base = ExpandedImageBox()
  2054.         self.Base.AddFlag("not_pick")
  2055.         self.Base.LoadImage("d:/ymir work/ui/pattern/newbar/bar_fill.tga")
  2056.         self.Base.SetParent(self)
  2057.         self.Base.SetPosition(self.CORNER_WIDTH, self.CORNER_HEIGHT)
  2058.         self.Base.Show()
  2059.  
  2060.     def __del__(self):
  2061.         Window.__del__(self)
  2062.  
  2063.     def SetSize(self, width, height):
  2064.  
  2065.         width = max(self.CORNER_WIDTH*2, width)
  2066.         height = max(self.CORNER_HEIGHT*2, height)
  2067.         Window.SetSize(self, width, height)
  2068.  
  2069.         self.Corners[self.LB].SetPosition(0, height - self.CORNER_HEIGHT)
  2070.         self.Corners[self.RT].SetPosition(width - self.CORNER_WIDTH, 0)
  2071.         self.Corners[self.RB].SetPosition(width - self.CORNER_WIDTH, height - self.CORNER_HEIGHT)
  2072.         self.Lines[self.R].SetPosition(width - self.CORNER_WIDTH, self.CORNER_HEIGHT)
  2073.         self.Lines[self.B].SetPosition(self.CORNER_HEIGHT, height - self.CORNER_HEIGHT)
  2074.  
  2075.         verticalShowingPercentage = float((height - self.CORNER_HEIGHT*2) - self.LINE_HEIGHT) / self.LINE_HEIGHT
  2076.         horizontalShowingPercentage = float((width - self.CORNER_WIDTH*2) - self.LINE_WIDTH) / self.LINE_WIDTH
  2077.         self.Lines[self.L].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
  2078.         self.Lines[self.R].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
  2079.         self.Lines[self.T].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
  2080.         self.Lines[self.B].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
  2081.  
  2082.         if self.Base:
  2083.             self.Base.SetRenderingRect(0, 0, horizontalShowingPercentage, verticalShowingPercentage)
  2084.            
  2085. ############## NOWE OKNO #############
  2086.  
  2087. class ScrollBar(Window):
  2088.  
  2089.     SCROLLBAR_WIDTH = 17
  2090.     SCROLLBAR_MIDDLE_HEIGHT = 1
  2091.     SCROLLBAR_BUTTON_WIDTH = 17
  2092.     SCROLLBAR_BUTTON_HEIGHT = 17
  2093.     MIDDLE_BAR_POS = 5
  2094.     MIDDLE_BAR_UPPER_PLACE = 3
  2095.     MIDDLE_BAR_DOWNER_PLACE = 4
  2096.     TEMP_SPACE = MIDDLE_BAR_UPPER_PLACE + MIDDLE_BAR_DOWNER_PLACE
  2097.  
  2098.     class MiddleBar(DragButton):
  2099.         def __init__(self):
  2100.             DragButton.__init__(self)
  2101.             self.AddFlag("movable")
  2102.             #self.AddFlag("restrict_x")
  2103.  
  2104.         def MakeImage(self):
  2105.             top = ImageBox()
  2106.             top.SetParent(self)
  2107.             top.LoadImage("illumina/scrollbar/scroll_top.tga")
  2108.             top.SetPosition(0, 0)
  2109.             top.AddFlag("not_pick")
  2110.             top.Show()
  2111.             bottom = ImageBox()
  2112.             bottom.SetParent(self)
  2113.             bottom.LoadImage("illumina/scrollbar/scroll_bottom.tga")
  2114.             bottom.AddFlag("not_pick")
  2115.             bottom.Show()
  2116.  
  2117.             middle = ExpandedImageBox()
  2118.             middle.SetParent(self)
  2119.             middle.LoadImage("illumina/scrollbar/scroll_middle.tga")
  2120.             middle.SetPosition(0, 4)
  2121.             middle.AddFlag("not_pick")
  2122.             middle.Show()
  2123.  
  2124.             self.top = top
  2125.             self.bottom = bottom
  2126.             self.middle = middle
  2127.  
  2128.         def SetSize(self, height):
  2129.             height = max(12, height)
  2130.             DragButton.SetSize(self, 10, height)
  2131.             self.bottom.SetPosition(0, height-4)
  2132.  
  2133.             height -= 4*2
  2134.             self.middle.SetRenderingRect(0, 0, 0, float(height)/1.0)
  2135.  
  2136.     def __init__(self):
  2137.         Window.__init__(self)
  2138.  
  2139.         self.pageSize = 1
  2140.         self.curPos = 0.0
  2141.         self.eventScroll = lambda *arg: None
  2142.         self.eventScrollUp = lambda *arg: None
  2143.         self.eventScrollDown = lambda *arg: None
  2144.         self.lockFlag = FALSE
  2145.  
  2146.         self.CreateScrollBar()
  2147.  
  2148.     def __del__(self):
  2149.         Window.__del__(self)
  2150.  
  2151.     def CreateScrollBar(self):
  2152.         barSlot = Bar3D()
  2153.         barSlot.SetParent(self)
  2154.         barSlot.AddFlag("not_pick")
  2155.         barSlot.Show()
  2156.  
  2157.         middleBar = self.MiddleBar()
  2158.         middleBar.SetParent(self)
  2159.         middleBar.SetMoveEvent(__mem_func__(self.OnMove))
  2160.         middleBar.Show()
  2161.         middleBar.MakeImage()
  2162.         middleBar.SetSize(12)
  2163.  
  2164.         upButton = Button()
  2165.         upButton.SetParent(self)
  2166.         upButton.SetEvent(__mem_func__(self.OnUp))
  2167.         upButton.SetUpVisual("illumina/buttons/btn_up_n.tga")
  2168.         upButton.SetOverVisual("illumina/buttons/btn_up_h.tga")
  2169.         upButton.SetDownVisual("illumina/buttons/btn_up_a.tga")
  2170.         upButton.Show()
  2171.  
  2172.         downButton = Button()
  2173.         downButton.SetParent(self)
  2174.         downButton.SetEvent(__mem_func__(self.OnDown))
  2175.         downButton.SetUpVisual("illumina/buttons/btn_down_n.tga")
  2176.         downButton.SetOverVisual("illumina/buttons/btn_down_h.tga")
  2177.         downButton.SetDownVisual("illumina/buttons/btn_down_a.tga")
  2178.         downButton.Show()
  2179.  
  2180.         self.upButton = upButton
  2181.         self.downButton = downButton
  2182.         self.middleBar = middleBar
  2183.         self.barSlot = barSlot
  2184.  
  2185.         self.SCROLLBAR_WIDTH = self.upButton.GetWidth()
  2186.         self.SCROLLBAR_MIDDLE_HEIGHT = self.middleBar.GetHeight()
  2187.         self.SCROLLBAR_BUTTON_WIDTH = self.upButton.GetWidth()
  2188.         self.SCROLLBAR_BUTTON_HEIGHT = self.upButton.GetHeight()
  2189.  
  2190.     def Destroy(self):
  2191.         self.middleBar = None
  2192.         self.upButton = None
  2193.         self.downButton = None
  2194.         self.eventScroll = lambda *arg: None
  2195.         self.eventScrollUp = lambda *arg: None
  2196.         self.eventScrollDown = lambda *arg: None
  2197.  
  2198.     def SetScrollEvent(self, event):
  2199.         self.eventScroll = event
  2200.         self.eventScrollUp = event
  2201.         self.eventScrollDown = event
  2202.  
  2203.     def SetUpEvent(self, event):
  2204.         self.eventScrollUp = event
  2205.    
  2206.     def SetDownEvent(self, event):
  2207.         self.eventScrollDown = event
  2208.  
  2209.     def SetMiddleBarSize(self, pageScale):
  2210.         realHeight = self.GetHeight() - self.SCROLLBAR_BUTTON_HEIGHT*2
  2211.         self.SCROLLBAR_MIDDLE_HEIGHT = int(pageScale * float(realHeight))
  2212.         self.middleBar.SetSize(self.SCROLLBAR_MIDDLE_HEIGHT)
  2213.         self.pageSize = (self.GetHeight() - self.SCROLLBAR_BUTTON_HEIGHT*2) - self.SCROLLBAR_MIDDLE_HEIGHT - (self.TEMP_SPACE)
  2214.  
  2215.     def SetScrollBarSize(self, height):
  2216.         self.pageSize = (height - self.SCROLLBAR_BUTTON_HEIGHT*2) - self.SCROLLBAR_MIDDLE_HEIGHT - (self.TEMP_SPACE)
  2217.         self.SetSize(self.SCROLLBAR_WIDTH, height)
  2218.         self.upButton.SetPosition(0, 0)
  2219.         self.downButton.SetPosition(0, height - self.SCROLLBAR_BUTTON_HEIGHT)
  2220.         self.middleBar.SetRestrictMovementArea(self.MIDDLE_BAR_POS, self.SCROLLBAR_BUTTON_HEIGHT + self.MIDDLE_BAR_UPPER_PLACE, self.MIDDLE_BAR_POS+2, height - self.SCROLLBAR_BUTTON_HEIGHT*2 - self.TEMP_SPACE)
  2221.         self.middleBar.SetPosition(self.MIDDLE_BAR_POS, 0)
  2222.  
  2223.         self.UpdateBarSlot()
  2224.  
  2225.     def UpdateBarSlot(self):
  2226.         self.barSlot.SetPosition(0, self.SCROLLBAR_BUTTON_HEIGHT)
  2227.         self.barSlot.SetSize(self.GetWidth() - 2, self.GetHeight() - self.SCROLLBAR_BUTTON_HEIGHT*2 - 2)
  2228.  
  2229.     def GetPos(self):
  2230.         return self.curPos
  2231.  
  2232.     def SetPos(self, pos, event=TRUE):
  2233.         pos = max(0.0, pos)
  2234.         pos = min(1.0, pos)
  2235.  
  2236.         newPos = float(self.pageSize) * pos
  2237.         self.middleBar.SetPosition(self.MIDDLE_BAR_POS, int(newPos) + self.SCROLLBAR_BUTTON_HEIGHT + self.MIDDLE_BAR_UPPER_PLACE)
  2238.        
  2239.         self.OnMove(event)
  2240.  
  2241.     def SetScrollStep(self, step):
  2242.         self.scrollStep = step
  2243.  
  2244.     def OnUp(self):
  2245.         self.SetPos(self.curPos-self.scrollStep, FALSE)
  2246.         self.eventScrollUp()
  2247.  
  2248.     def OnDown(self):
  2249.         self.SetPos(self.curPos+self.scrollStep, FALSE)
  2250.         self.eventScrollDown()
  2251.  
  2252.     def OnMove(self, event=TRUE):
  2253.  
  2254.         if self.lockFlag:
  2255.             return
  2256.  
  2257.         if 0 == self.pageSize:
  2258.             return
  2259.  
  2260.         (xLocal, yLocal) = self.middleBar.GetLocalPosition()
  2261.         self.curPos = float(yLocal - self.SCROLLBAR_BUTTON_HEIGHT - self.MIDDLE_BAR_UPPER_PLACE) / float(self.pageSize)
  2262.         if event == TRUE:
  2263.             self.eventScroll()
  2264.  
  2265.     def OnMouseLeftButtonDown(self):
  2266.         (xMouseLocalPosition, yMouseLocalPosition) = self.GetMouseLocalPosition()
  2267.         pickedPos = yMouseLocalPosition - self.SCROLLBAR_BUTTON_HEIGHT - self.SCROLLBAR_MIDDLE_HEIGHT/2
  2268.         newPos = float(pickedPos) / float(self.pageSize)
  2269.         self.SetPos(newPos)
  2270.  
  2271.     def LockScroll(self):
  2272.         self.lockFlag = TRUE
  2273.  
  2274.     def UnlockScroll(self):
  2275.         self.lockFlag = FALSE
  2276.  
  2277. class ThinScrollBar(ScrollBar):
  2278.  
  2279.     def CreateScrollBar(self):
  2280.         middleBar = self.MiddleBar()
  2281.         middleBar.SetParent(self)
  2282.         middleBar.SetMoveEvent(__mem_func__(self.OnMove))
  2283.         middleBar.Show()
  2284.         middleBar.SetUpVisual("d:/ymir work/ui/public/scrollbar_thin_middle_button_01.sub")
  2285.         middleBar.SetOverVisual("d:/ymir work/ui/public/scrollbar_thin_middle_button_02.sub")
  2286.         middleBar.SetDownVisual("d:/ymir work/ui/public/scrollbar_thin_middle_button_03.sub")
  2287.  
  2288.         upButton = Button()
  2289.         upButton.SetParent(self)
  2290.         upButton.SetUpVisual("d:/ymir work/ui/public/scrollbar_thin_up_button_01.sub")
  2291.         upButton.SetOverVisual("d:/ymir work/ui/public/scrollbar_thin_up_button_02.sub")
  2292.         upButton.SetDownVisual("d:/ymir work/ui/public/scrollbar_thin_up_button_03.sub")
  2293.         upButton.SetEvent(__mem_func__(self.OnUp))
  2294.         upButton.Show()
  2295.  
  2296.         downButton = Button()
  2297.         downButton.SetParent(self)
  2298.         downButton.SetUpVisual("d:/ymir work/ui/public/scrollbar_thin_down_button_01.sub")
  2299.         downButton.SetOverVisual("d:/ymir work/ui/public/scrollbar_thin_down_button_02.sub")
  2300.         downButton.SetDownVisual("d:/ymir work/ui/public/scrollbar_thin_down_button_03.sub")
  2301.         downButton.SetEvent(__mem_func__(self.OnDown))
  2302.         downButton.Show()
  2303.  
  2304.         self.middleBar = middleBar
  2305.         self.upButton = upButton
  2306.         self.downButton = downButton
  2307.  
  2308.         self.SCROLLBAR_WIDTH = self.upButton.GetWidth()
  2309.         self.SCROLLBAR_MIDDLE_HEIGHT = self.middleBar.GetHeight()
  2310.         self.SCROLLBAR_BUTTON_WIDTH = self.upButton.GetWidth()
  2311.         self.SCROLLBAR_BUTTON_HEIGHT = self.upButton.GetHeight()
  2312.         self.MIDDLE_BAR_POS = 0
  2313.         self.MIDDLE_BAR_UPPER_PLACE = 0
  2314.         self.MIDDLE_BAR_DOWNER_PLACE = 0
  2315.         self.TEMP_SPACE = 0
  2316.  
  2317.     def UpdateBarSlot(self):
  2318.         pass
  2319.  
  2320. class SmallThinScrollBar(ScrollBar):
  2321.  
  2322.     def CreateScrollBar(self):
  2323.         middleBar = self.MiddleBar()
  2324.         middleBar.SetParent(self)
  2325.         middleBar.SetMoveEvent(__mem_func__(self.OnMove))
  2326.         middleBar.Show()
  2327.         middleBar.SetUpVisual("d:/ymir work/ui/public/scrollbar_small_thin_middle_button_01.sub")
  2328.         middleBar.SetOverVisual("d:/ymir work/ui/public/scrollbar_small_thin_middle_button_01.sub")
  2329.         middleBar.SetDownVisual("d:/ymir work/ui/public/scrollbar_small_thin_middle_button_01.sub")
  2330.  
  2331.         upButton = Button()
  2332.         upButton.SetParent(self)
  2333.         upButton.SetUpVisual("d:/ymir work/ui/public/scrollbar_small_thin_up_button_01.sub")
  2334.         upButton.SetOverVisual("d:/ymir work/ui/public/scrollbar_small_thin_up_button_02.sub")
  2335.         upButton.SetDownVisual("d:/ymir work/ui/public/scrollbar_small_thin_up_button_03.sub")
  2336.         upButton.SetEvent(__mem_func__(self.OnUp))
  2337.         upButton.Show()
  2338.  
  2339.         downButton = Button()
  2340.         downButton.SetParent(self)
  2341.         downButton.SetUpVisual("d:/ymir work/ui/public/scrollbar_small_thin_down_button_01.sub")
  2342.         downButton.SetOverVisual("d:/ymir work/ui/public/scrollbar_small_thin_down_button_02.sub")
  2343.         downButton.SetDownVisual("d:/ymir work/ui/public/scrollbar_small_thin_down_button_03.sub")
  2344.         downButton.SetEvent(__mem_func__(self.OnDown))
  2345.         downButton.Show()
  2346.  
  2347.         self.middleBar = middleBar
  2348.         self.upButton = upButton
  2349.         self.downButton = downButton
  2350.  
  2351.         self.SCROLLBAR_WIDTH = self.upButton.GetWidth()
  2352.         self.SCROLLBAR_MIDDLE_HEIGHT = self.middleBar.GetHeight()
  2353.         self.SCROLLBAR_BUTTON_WIDTH = self.upButton.GetWidth()
  2354.         self.SCROLLBAR_BUTTON_HEIGHT = self.upButton.GetHeight()
  2355.         self.MIDDLE_BAR_POS = 0
  2356.         self.MIDDLE_BAR_UPPER_PLACE = 0
  2357.         self.MIDDLE_BAR_DOWNER_PLACE = 0
  2358.         self.TEMP_SPACE = 0
  2359.  
  2360.     def UpdateBarSlot(self):
  2361.         pass
  2362.  
  2363. class SliderBar(Window):
  2364.  
  2365.     def __init__(self):
  2366.         Window.__init__(self)
  2367.  
  2368.         self.curPos = 1.0
  2369.         self.pageSize = 1.0
  2370.         self.eventChange = None
  2371.  
  2372.         self.__CreateBackGroundImage()
  2373.         self.__CreateCursor()
  2374.  
  2375.     def __del__(self):
  2376.         Window.__del__(self)
  2377.  
  2378.     def __CreateBackGroundImage(self):
  2379.         img = ImageBox()
  2380.         img.SetParent(self)
  2381.         img.LoadImage("d:/ymir work/ui/game/windows/sliderbar.sub")
  2382.         img.Show()
  2383.         self.backGroundImage = img
  2384.  
  2385.         ##
  2386.         self.SetSize(self.backGroundImage.GetWidth(), self.backGroundImage.GetHeight())
  2387.  
  2388.     def __CreateCursor(self):
  2389.         cursor = DragButton()
  2390.         cursor.AddFlag("movable")
  2391.         cursor.AddFlag("restrict_y")
  2392.         cursor.SetParent(self)
  2393.         cursor.SetMoveEvent(__mem_func__(self.__OnMove))
  2394.         cursor.SetUpVisual("d:/ymir work/ui/game/windows/sliderbar_cursor.sub")
  2395.         cursor.SetOverVisual("d:/ymir work/ui/game/windows/sliderbar_cursor.sub")
  2396.         cursor.SetDownVisual("d:/ymir work/ui/game/windows/sliderbar_cursor.sub")
  2397.         cursor.Show()
  2398.         self.cursor = cursor
  2399.  
  2400.         ##
  2401.         self.cursor.SetRestrictMovementArea(0, 0, self.backGroundImage.GetWidth(), 0)
  2402.         self.pageSize = self.backGroundImage.GetWidth() - self.cursor.GetWidth()
  2403.  
  2404.     def __OnMove(self):
  2405.         (xLocal, yLocal) = self.cursor.GetLocalPosition()
  2406.         self.curPos = float(xLocal) / float(self.pageSize)
  2407.  
  2408.         if self.eventChange:
  2409.             self.eventChange()
  2410.  
  2411.     def SetSliderPos(self, pos):
  2412.         self.curPos = pos
  2413.         self.cursor.SetPosition(int(self.pageSize * pos), 0)
  2414.  
  2415.     def GetSliderPos(self):
  2416.         return self.curPos
  2417.  
  2418.     def SetEvent(self, event):
  2419.         self.eventChange = event
  2420.  
  2421.     def Enable(self):
  2422.         self.cursor.Show()
  2423.  
  2424.     def Disable(self):
  2425.         self.cursor.Hide()
  2426.  
  2427. class ListBox(Window):
  2428.  
  2429.     TEMPORARY_PLACE = 3
  2430.  
  2431.     def __init__(self, layer = "UI"):
  2432.         Window.__init__(self, layer)
  2433.         self.overLine = -1
  2434.         self.selectedLine = -1
  2435.         self.width = 0
  2436.         self.height = 0
  2437.         self.stepSize = 17
  2438.         self.basePos = 0
  2439.         self.showLineCount = 0
  2440.         self.itemCenterAlign = TRUE
  2441.         self.itemList = []
  2442.         self.keyDict = {}
  2443.         self.textDict = {}
  2444.         self.event = lambda *arg: None
  2445.     def __del__(self):
  2446.         Window.__del__(self)
  2447.  
  2448.     def SetWidth(self, width):
  2449.         self.SetSize(width, self.height)
  2450.  
  2451.     def SetSize(self, width, height):
  2452.         Window.SetSize(self, width, height)
  2453.         self.width = width
  2454.         self.height = height
  2455.  
  2456.     def SetTextCenterAlign(self, flag):
  2457.         self.itemCenterAlign = flag
  2458.  
  2459.     def SetBasePos(self, pos):
  2460.         self.basePos = pos
  2461.         self._LocateItem()
  2462.  
  2463.     def ClearItem(self):
  2464.         self.keyDict = {}
  2465.         self.textDict = {}
  2466.         self.itemList = []
  2467.         self.overLine = -1
  2468.         self.selectedLine = -1
  2469.  
  2470.     def InsertItem(self, number, text):
  2471.         self.keyDict[len(self.itemList)] = number
  2472.         self.textDict[len(self.itemList)] = text
  2473.  
  2474.         textLine = TextLine()
  2475.         textLine.SetParent(self)
  2476.         textLine.SetText(text)
  2477.         textLine.Show()
  2478.  
  2479.         if self.itemCenterAlign:
  2480.             textLine.SetWindowHorizontalAlignCenter()
  2481.             textLine.SetHorizontalAlignCenter()
  2482.  
  2483.         self.itemList.append(textLine)
  2484.  
  2485.         self._LocateItem()
  2486.  
  2487.     def ChangeItem(self, number, text):
  2488.         for key, value in self.keyDict.items():
  2489.             if value == number:
  2490.                 self.textDict[key] = text
  2491.  
  2492.                 if number < len(self.itemList):
  2493.                     self.itemList[key].SetText(text)
  2494.  
  2495.                 return
  2496.  
  2497.     def LocateItem(self):
  2498.         self._LocateItem()
  2499.  
  2500.     def _LocateItem(self):
  2501.  
  2502.         skipCount = self.basePos
  2503.         yPos = 0
  2504.         self.showLineCount = 0
  2505.  
  2506.         for textLine in self.itemList:
  2507.             textLine.Hide()
  2508.  
  2509.             if skipCount > 0:
  2510.                 skipCount -= 1
  2511.                 continue
  2512.  
  2513.             textLine.SetPosition(0, yPos + 3)
  2514.  
  2515.             yPos += self.stepSize
  2516.  
  2517.             if yPos <= self.GetHeight():
  2518.                 self.showLineCount += 1
  2519.                 textLine.Show()
  2520.  
  2521.     def ArrangeItem(self):
  2522.         self.SetSize(self.width, len(self.itemList) * self.stepSize)
  2523.         self._LocateItem()
  2524.  
  2525.     def GetViewItemCount(self):
  2526.         return int(self.GetHeight() / self.stepSize)
  2527.  
  2528.     def GetItemCount(self):
  2529.         return len(self.itemList)
  2530.  
  2531.     def SetEvent(self, event):
  2532.         self.event = event
  2533.  
  2534.     def SelectItem(self, line):
  2535.  
  2536.         if not self.keyDict.has_key(line):
  2537.             return
  2538.  
  2539.         if line == self.selectedLine:
  2540.             return
  2541.  
  2542.         self.selectedLine = line
  2543.         self.event(self.keyDict.get(line, 0), self.textDict.get(line, "None"))
  2544.  
  2545.     def GetSelectedItem(self):
  2546.         return self.keyDict.get(self.selectedLine, 0)
  2547.  
  2548.     def OnMouseLeftButtonDown(self):
  2549.         if self.overLine < 0:
  2550.             return
  2551.  
  2552.     def OnMouseLeftButtonUp(self):
  2553.         if self.overLine >= 0:
  2554.             self.SelectItem(self.overLine+self.basePos)
  2555.  
  2556.     def OnUpdate(self):
  2557.  
  2558.         self.overLine = -1
  2559.  
  2560.         if self.IsIn():
  2561.             x, y = self.GetGlobalPosition()
  2562.             height = self.GetHeight()
  2563.             xMouse, yMouse = wndMgr.GetMousePosition()
  2564.  
  2565.             if yMouse - y < height - 1:
  2566.                 self.overLine = (yMouse - y) / self.stepSize
  2567.  
  2568.                 if self.overLine < 0:
  2569.                     self.overLine = -1
  2570.                 if self.overLine >= len(self.itemList):
  2571.                     self.overLine = -1
  2572.  
  2573.     def OnRender(self):
  2574.         xRender, yRender = self.GetGlobalPosition()
  2575.         yRender -= self.TEMPORARY_PLACE
  2576.         widthRender = self.width
  2577.         heightRender = self.height + self.TEMPORARY_PLACE*2
  2578.  
  2579.         if localeinfo.IsCIBN10:
  2580.             if -1 != self.overLine and self.keyDict[self.overLine] != -1:
  2581.                 grp.SetColor(HALF_WHITE_COLOR)
  2582.                 grp.RenderBar(xRender + 2, yRender + self.overLine*self.stepSize + 4, self.width - 3, self.stepSize)               
  2583.  
  2584.             if -1 != self.selectedLine and self.keyDict[self.selectedLine] != -1:
  2585.                 if self.selectedLine >= self.basePos:
  2586.                     if self.selectedLine - self.basePos < self.showLineCount:
  2587.                         grp.SetColor(SELECT_COLOR)
  2588.                         grp.RenderBar(xRender + 2, yRender + (self.selectedLine-self.basePos)*self.stepSize + 4, self.width - 3, self.stepSize)
  2589.  
  2590.         else:      
  2591.             if -1 != self.overLine:
  2592.                 grp.SetColor(HALF_WHITE_COLOR)
  2593.                 grp.RenderBar(xRender + 2, yRender + self.overLine*self.stepSize + 4, self.width - 3, self.stepSize)               
  2594.  
  2595.             if -1 != self.selectedLine:
  2596.                 if self.selectedLine >= self.basePos:
  2597.                     if self.selectedLine - self.basePos < self.showLineCount:
  2598.                         grp.SetColor(SELECT_COLOR)
  2599.                         grp.RenderBar(xRender + 2, yRender + (self.selectedLine-self.basePos)*self.stepSize + 4, self.width - 3, self.stepSize)
  2600.  
  2601.  
  2602.  
  2603. class ListBox2(ListBox):
  2604.     def __init__(self, *args, **kwargs):
  2605.         ListBox.__init__(self, *args, **kwargs)
  2606.         self.rowCount = 10
  2607.         self.barWidth = 0
  2608.         self.colCount = 0
  2609.  
  2610.     def SetRowCount(self, rowCount):
  2611.         self.rowCount = rowCount
  2612.  
  2613.     def SetSize(self, width, height):
  2614.         ListBox.SetSize(self, width, height)
  2615.         self._RefreshForm()
  2616.  
  2617.     def ClearItem(self):
  2618.         ListBox.ClearItem(self)
  2619.         self._RefreshForm()
  2620.  
  2621.     def InsertItem(self, *args, **kwargs):
  2622.         ListBox.InsertItem(self, *args, **kwargs)
  2623.         self._RefreshForm()
  2624.  
  2625.     def OnUpdate(self):
  2626.         mpos = wndMgr.GetMousePosition()
  2627.         self.overLine = self._CalcPointIndex(mpos)
  2628.  
  2629.     def OnRender(self):
  2630.         x, y = self.GetGlobalPosition()
  2631.         pos = (x + 2, y)
  2632.  
  2633.         if -1 != self.overLine:
  2634.             grp.SetColor(HALF_WHITE_COLOR)
  2635.             self._RenderBar(pos, self.overLine)
  2636.  
  2637.         if -1 != self.selectedLine:
  2638.             if self.selectedLine >= self.basePos:
  2639.                 if self.selectedLine - self.basePos < self.showLineCount:
  2640.                     grp.SetColor(SELECT_COLOR)
  2641.                     self._RenderBar(pos, self.selectedLine-self.basePos)
  2642.  
  2643.    
  2644.  
  2645.     def _CalcPointIndex(self, mpos):
  2646.         if self.IsIn():
  2647.             px, py = mpos
  2648.             gx, gy = self.GetGlobalPosition()
  2649.             lx, ly = px - gx, py - gy
  2650.  
  2651.             col = lx / self.barWidth
  2652.             row = ly / self.stepSize
  2653.             idx = col * self.rowCount + row
  2654.             if col >= 0 and col < self.colCount:
  2655.                 if row >= 0 and row < self.rowCount:
  2656.                     if idx >= 0 and idx < len(self.itemList):
  2657.                         return idx
  2658.        
  2659.         return -1
  2660.  
  2661.     def _CalcRenderPos(self, pos, idx):
  2662.         x, y = pos
  2663.         row = idx % self.rowCount
  2664.         col = idx / self.rowCount
  2665.         return (x + col * self.barWidth, y + row * self.stepSize)
  2666.  
  2667.     def _RenderBar(self, basePos, idx):
  2668.         x, y = self._CalcRenderPos(basePos, idx)
  2669.         grp.RenderBar(x, y, self.barWidth - 3, self.stepSize)
  2670.  
  2671.     def _LocateItem(self):
  2672.         pos = (0, self.TEMPORARY_PLACE)
  2673.  
  2674.         self.showLineCount = 0
  2675.         for textLine in self.itemList:
  2676.             x, y = self._CalcRenderPos(pos, self.showLineCount)
  2677.             textLine.SetPosition(x, y)
  2678.             textLine.Show()
  2679.  
  2680.             self.showLineCount += 1
  2681.  
  2682.     def _RefreshForm(self):
  2683.         if len(self.itemList) % self.rowCount:
  2684.             self.colCount = len(self.itemList) / self.rowCount + 1
  2685.         else:
  2686.             self.colCount = len(self.itemList) / self.rowCount
  2687.  
  2688.         if self.colCount:
  2689.             self.barWidth = self.width / self.colCount
  2690.         else:
  2691.             self.barWidth = self.width
  2692.  
  2693.  
  2694. class ComboBox(Window):
  2695.  
  2696.     class ListBoxWithBoard(ListBox):
  2697.  
  2698.         def __init__(self, layer):
  2699.             ListBox.__init__(self, layer)
  2700.  
  2701.         def OnRender(self):
  2702.             xRender, yRender = self.GetGlobalPosition()
  2703.             yRender -= self.TEMPORARY_PLACE
  2704.             widthRender = self.width
  2705.             heightRender = self.height + self.TEMPORARY_PLACE*2
  2706.             grp.SetColor(BACKGROUND_COLOR)
  2707.             grp.RenderBar(xRender, yRender, widthRender, heightRender)
  2708.             grp.SetColor(DARK_COLOR)
  2709.             grp.RenderLine(xRender, yRender, widthRender, 0)
  2710.             grp.RenderLine(xRender, yRender, 0, heightRender)
  2711.             grp.SetColor(BRIGHT_COLOR)
  2712.             grp.RenderLine(xRender, yRender+heightRender, widthRender, 0)
  2713.             grp.RenderLine(xRender+widthRender, yRender, 0, heightRender)
  2714.  
  2715.             ListBox.OnRender(self)
  2716.  
  2717.     def __init__(self):
  2718.         Window.__init__(self)
  2719.         self.x = 0
  2720.         self.y = 0
  2721.         self.width = 0
  2722.         self.height = 0
  2723.         self.isSelected = FALSE
  2724.         self.isOver = FALSE
  2725.         self.isListOpened = FALSE
  2726.         self.event = lambda *arg: None
  2727.         self.enable = TRUE
  2728.  
  2729.         self.textLine = MakeTextLine(self)
  2730.         self.textLine.SetText(localeinfo.UI_ITEM)
  2731.  
  2732.         self.listBox = self.ListBoxWithBoard("TOP_MOST")
  2733.         self.listBox.SetPickAlways()
  2734.         self.listBox.SetParent(self)
  2735.         self.listBox.SetEvent(__mem_func__(self.OnSelectItem))
  2736.         self.listBox.Hide()
  2737.  
  2738.     def __del__(self):
  2739.         Window.__del__(self)
  2740.  
  2741.     def Destroy(self):
  2742.         self.textLine = None
  2743.         self.listBox = None
  2744.  
  2745.     def SetPosition(self, x, y):
  2746.         Window.SetPosition(self, x, y)
  2747.         self.x = x
  2748.         self.y = y
  2749.         self.__ArrangeListBox()
  2750.  
  2751.     def SetSize(self, width, height):
  2752.         Window.SetSize(self, width, height)
  2753.         self.width = width
  2754.         self.height = height
  2755.         self.textLine.UpdateRect()
  2756.         self.__ArrangeListBox()
  2757.  
  2758.     def __ArrangeListBox(self):
  2759.         self.listBox.SetPosition(0, self.height + 5)
  2760.         self.listBox.SetWidth(self.width)
  2761.  
  2762.     def Enable(self):
  2763.         self.enable = TRUE
  2764.  
  2765.     def Disable(self):
  2766.         self.enable = FALSE
  2767.         self.textLine.SetText("")
  2768.         self.CloseListBox()
  2769.  
  2770.     def SetEvent(self, event):
  2771.         self.event = event
  2772.  
  2773.     def ClearItem(self):
  2774.         self.CloseListBox()
  2775.         self.listBox.ClearItem()
  2776.  
  2777.     def InsertItem(self, index, name):
  2778.         self.listBox.InsertItem(index, name)
  2779.         self.listBox.ArrangeItem()
  2780.  
  2781.     def SetCurrentItem(self, text):
  2782.         self.textLine.SetText(text)
  2783.  
  2784.     def SelectItem(self, key):
  2785.         self.listBox.SelectItem(key)
  2786.  
  2787.     def OnSelectItem(self, index, name):
  2788.  
  2789.         self.CloseListBox()
  2790.         self.event(index)
  2791.  
  2792.     def CloseListBox(self):
  2793.         self.isListOpened = FALSE
  2794.         self.listBox.Hide()
  2795.  
  2796.     def OnMouseLeftButtonDown(self):
  2797.  
  2798.         if not self.enable:
  2799.             return
  2800.  
  2801.         self.isSelected = TRUE
  2802.  
  2803.     def OnMouseLeftButtonUp(self):
  2804.  
  2805.         if not self.enable:
  2806.             return
  2807.  
  2808.         self.isSelected = FALSE
  2809.  
  2810.         if self.isListOpened:
  2811.             self.CloseListBox()
  2812.         else:
  2813.             if self.listBox.GetItemCount() > 0:
  2814.                 self.isListOpened = TRUE
  2815.                 self.listBox.Show()
  2816.                 self.__ArrangeListBox()
  2817.  
  2818.     def OnUpdate(self):
  2819.  
  2820.         if not self.enable:
  2821.             return
  2822.  
  2823.         if self.IsIn():
  2824.             self.isOver = TRUE
  2825.         else:
  2826.             self.isOver = FALSE
  2827.  
  2828.     def OnRender(self):
  2829.         self.x, self.y = self.GetGlobalPosition()
  2830.         xRender = self.x
  2831.         yRender = self.y
  2832.         widthRender = self.width
  2833.         heightRender = self.height
  2834.         grp.SetColor(BACKGROUND_COLOR)
  2835.         grp.RenderBar(xRender, yRender, widthRender, heightRender)
  2836.         grp.SetColor(DARK_COLOR)
  2837.         grp.RenderLine(xRender, yRender, widthRender, 0)
  2838.         grp.RenderLine(xRender, yRender, 0, heightRender)
  2839.         grp.SetColor(BRIGHT_COLOR)
  2840.         grp.RenderLine(xRender, yRender+heightRender, widthRender, 0)
  2841.         grp.RenderLine(xRender+widthRender, yRender, 0, heightRender)
  2842.  
  2843.         if self.isOver:
  2844.             grp.SetColor(HALF_WHITE_COLOR)
  2845.             grp.RenderBar(xRender + 2, yRender + 3, self.width - 3, heightRender - 5)
  2846.  
  2847.             if self.isSelected:
  2848.                 grp.SetColor(WHITE_COLOR)
  2849.                 grp.RenderBar(xRender + 2, yRender + 3, self.width - 3, heightRender - 5)
  2850.  
  2851. ###################################################################################################
  2852. ## Python Script Loader
  2853. ###################################################################################################
  2854.  
  2855. class ScriptWindow(Window):
  2856.     def __init__(self, layer = "UI"):
  2857.         Window.__init__(self, layer)
  2858.         self.Children = []
  2859.         self.ElementDictionary = {}
  2860.     def __del__(self):
  2861.         Window.__del__(self)
  2862.  
  2863.     def ClearDictionary(self):
  2864.         self.Children = []
  2865.         self.ElementDictionary = {}
  2866.     def InsertChild(self, name, child):
  2867.         self.ElementDictionary[name] = child
  2868.  
  2869.     def IsChild(self, name):
  2870.         return self.ElementDictionary.has_key(name)
  2871.     def GetChild(self, name):
  2872.         return self.ElementDictionary[name]
  2873.  
  2874.     def GetChild2(self, name):
  2875.         return self.ElementDictionary.get(name, None)
  2876.  
  2877. class PythonScriptLoader(object):
  2878.  
  2879.     BODY_KEY_LIST = ( "x", "y", "width", "height" )
  2880.    
  2881.     VERTICAL_SEPARATOR_KEY_LIST = ("height", )
  2882.     HORIZONTAL_SEPARATOR_KEY_LIST = ("width", )
  2883.  
  2884.     #####
  2885.  
  2886.     DEFAULT_KEY_LIST = ( "type", "x", "y", )
  2887.     WINDOW_KEY_LIST = ( "width", "height", )
  2888.     IMAGE_KEY_LIST = ( "image", )
  2889.     EXPANDED_IMAGE_KEY_LIST = ( "image", )
  2890.     ANI_IMAGE_KEY_LIST = ( "images", )
  2891.     SLOT_KEY_LIST = ( "width", "height", "slot", )
  2892.     CANDIDATE_LIST_KEY_LIST = ( "item_step", "item_xsize", "item_ysize", )
  2893.     GRID_TABLE_KEY_LIST = ( "start_index", "x_count", "y_count", "x_step", "y_step", )
  2894.     EDIT_LINE_KEY_LIST = ( "width", "height", "input_limit", )
  2895.     COMBO_BOX_KEY_LIST = ( "width", "height", "item", )
  2896.     TITLE_BAR_KEY_LIST = ( "width", )
  2897.     HORIZONTAL_BAR_KEY_LIST = ( "width", )
  2898.     BOARD_KEY_LIST = ( "width", "height", )
  2899.     BOARD_WITH_TITLEBAR_KEY_LIST = ( "width", "height", "title", )
  2900.     BOX_KEY_LIST = ( "width", "height", )
  2901.     BAR_KEY_LIST = ( "width", "height", )
  2902.     LINE_KEY_LIST = ( "width", "height", )
  2903.     SLOTBAR_KEY_LIST = ( "width", "height", )
  2904.     GAUGE_KEY_LIST = ( "width", "color", )
  2905.     SCROLLBAR_KEY_LIST = ( "size", )
  2906.     LIST_BOX_KEY_LIST = ( "width", "height", )
  2907.  
  2908.     def __init__(self):
  2909.         self.Clear()
  2910.  
  2911.     def Clear(self):
  2912.         self.ScriptDictionary = { "SCREEN_WIDTH" : wndMgr.GetScreenWidth(), "SCREEN_HEIGHT" : wndMgr.GetScreenHeight() }
  2913.         self.InsertFunction = 0
  2914.  
  2915.     def LoadScriptFile(self, window, FileName):
  2916.  
  2917.         self.Clear()
  2918.  
  2919.         print "===== Load Script File : %s" % (FileName)
  2920.  
  2921.         try:
  2922.             execfile(FileName, self.ScriptDictionary)
  2923.         except:
  2924.             import dbg
  2925.             import exception
  2926.             dbg.TraceError("Failed to load script file : %s" % (FileName))
  2927.             exception.Abort("LoadScriptFile")
  2928.        
  2929.         #####
  2930.  
  2931.         Body = self.ScriptDictionary["window"]
  2932.         self.CheckKeyList("window", Body, self.BODY_KEY_LIST)
  2933.  
  2934.         window.ClearDictionary()
  2935.         self.InsertFunction = window.InsertChild
  2936.  
  2937.         window.SetPosition(int(Body["x"]), int(Body["y"]))
  2938.  
  2939.         window.SetSize(int(Body["width"]), int(Body["height"]))
  2940.         if TRUE == Body.has_key("style"):
  2941.             for StyleList in Body["style"]:
  2942.                 window.AddFlag(StyleList)
  2943.        
  2944.  
  2945.         self.LoadChildren(window, Body)
  2946.  
  2947.     def LoadChildren(self, parent, dicChildren):
  2948.  
  2949.         if TRUE == dicChildren.has_key("style"):
  2950.             for style in dicChildren["style"]:
  2951.                 parent.AddFlag(style)
  2952.  
  2953.         if FALSE == dicChildren.has_key("children"):
  2954.             return FALSE
  2955.  
  2956.         Index = 0
  2957.  
  2958.         ChildrenList = dicChildren["children"]
  2959.         parent.Children = range(len(ChildrenList))
  2960.         for ElementValue in ChildrenList:
  2961.             try:
  2962.                 Name = ElementValue["name"]            
  2963.             except KeyError:
  2964.                 Name = ElementValue["name"] = "NONAME"
  2965.                
  2966.             try:
  2967.                 Type = ElementValue["type"]
  2968.             except KeyError:                               
  2969.                 Type = ElementValue["type"] = "window"             
  2970.  
  2971.             if FALSE == self.CheckKeyList(Name, ElementValue, self.DEFAULT_KEY_LIST):
  2972.                 del parent.Children[Index]
  2973.                 continue
  2974.                
  2975.             elif Type == "verticalseparator":
  2976.                 parent.Children[Index] = VerticalSeparator()
  2977.                 parent.Children[Index].SetParent(parent)
  2978.                 self.LoadElementVerticalSeparator(parent.Children[Index], ElementValue, parent)
  2979.  
  2980.             elif Type == "horizontalseparator":
  2981.                 parent.Children[Index] = HorizontalSeparator()
  2982.                 parent.Children[Index].SetParent(parent)
  2983.                 self.LoadElementHorizontalSeparator(parent.Children[Index], ElementValue, parent)
  2984.  
  2985.             if Type == "window":
  2986.                 parent.Children[Index] = ScriptWindow()
  2987.                 parent.Children[Index].SetParent(parent)
  2988.                 self.LoadElementWindow(parent.Children[Index], ElementValue, parent)
  2989.  
  2990.             elif Type == "button":
  2991.                 parent.Children[Index] = Button()
  2992.                 parent.Children[Index].SetParent(parent)
  2993.                 self.LoadElementButton(parent.Children[Index], ElementValue, parent)
  2994.  
  2995.             elif Type == "radio_button":
  2996.                 parent.Children[Index] = RadioButton()
  2997.                 parent.Children[Index].SetParent(parent)
  2998.                 self.LoadElementButton(parent.Children[Index], ElementValue, parent)
  2999.  
  3000.             elif Type == "toggle_button":
  3001.                 parent.Children[Index] = ToggleButton()
  3002.                 parent.Children[Index].SetParent(parent)
  3003.                 self.LoadElementButton(parent.Children[Index], ElementValue, parent)
  3004.  
  3005.             elif Type == "mark":
  3006.                 parent.Children[Index] = MarkBox()
  3007.                 parent.Children[Index].SetParent(parent)
  3008.                 self.LoadElementMark(parent.Children[Index], ElementValue, parent)
  3009.  
  3010.             elif Type == "image":
  3011.                 parent.Children[Index] = ImageBox()
  3012.                 parent.Children[Index].SetParent(parent)
  3013.                 self.LoadElementImage(parent.Children[Index], ElementValue, parent)
  3014.  
  3015.             elif Type == "expanded_image":
  3016.                 parent.Children[Index] = ExpandedImageBox()
  3017.                 parent.Children[Index].SetParent(parent)
  3018.                 self.LoadElementExpandedImage(parent.Children[Index], ElementValue, parent)
  3019.  
  3020.             elif Type == "ani_image":
  3021.                 parent.Children[Index] = AniImageBox()
  3022.                 parent.Children[Index].SetParent(parent)
  3023.                 self.LoadElementAniImage(parent.Children[Index], ElementValue, parent)
  3024.  
  3025.             elif Type == "slot":
  3026.                 parent.Children[Index] = SlotWindow()
  3027.                 parent.Children[Index].SetParent(parent)
  3028.                 self.LoadElementSlot(parent.Children[Index], ElementValue, parent)
  3029.  
  3030.             elif Type == "candidate_list":
  3031.                 parent.Children[Index] = CandidateListBox()
  3032.                 parent.Children[Index].SetParent(parent)
  3033.                 self.LoadElementCandidateList(parent.Children[Index], ElementValue, parent)
  3034.  
  3035.             elif Type == "grid_table":
  3036.                 parent.Children[Index] = GridSlotWindow()
  3037.                 parent.Children[Index].SetParent(parent)
  3038.                 self.LoadElementGridTable(parent.Children[Index], ElementValue, parent)
  3039.  
  3040.             elif Type == "text":
  3041.                 parent.Children[Index] = TextLine()
  3042.                 parent.Children[Index].SetParent(parent)
  3043.                 self.LoadElementText(parent.Children[Index], ElementValue, parent)
  3044.  
  3045.             elif Type == "editline":
  3046.                 parent.Children[Index] = EditLine()
  3047.                 parent.Children[Index].SetParent(parent)
  3048.                 self.LoadElementEditLine(parent.Children[Index], ElementValue, parent)
  3049.  
  3050.             elif Type == "titlebar":
  3051.                 parent.Children[Index] = TitleBar()
  3052.                 parent.Children[Index].SetParent(parent)
  3053.                 self.LoadElementTitleBar(parent.Children[Index], ElementValue, parent)
  3054.  
  3055.             elif Type == "horizontalbar":
  3056.                 parent.Children[Index] = HorizontalBar()
  3057.                 parent.Children[Index].SetParent(parent)
  3058.                 self.LoadElementHorizontalBar(parent.Children[Index], ElementValue, parent)
  3059.  
  3060.             elif Type == "board":
  3061.                 parent.Children[Index] = Board()
  3062.                 parent.Children[Index].SetParent(parent)
  3063.                 self.LoadElementBoard(parent.Children[Index], ElementValue, parent)
  3064.  
  3065.             elif Type == "board_with_titlebar":
  3066.                 parent.Children[Index] = BoardWithTitleBar()
  3067.                 parent.Children[Index].SetParent(parent)
  3068.                 self.LoadElementBoardWithTitleBar(parent.Children[Index], ElementValue, parent)
  3069.  
  3070.             elif Type == "thinboard":
  3071.                 parent.Children[Index] = ThinBoard()
  3072.                 parent.Children[Index].SetParent(parent)
  3073.                 self.LoadElementThinBoard(parent.Children[Index], ElementValue, parent)
  3074.  
  3075.             elif Type == "thinboardnew":
  3076.                 parent.Children[Index] = ThinBoardNew()
  3077.                 parent.Children[Index].SetParent(parent)
  3078.                 self.LoadElementThinBoardNew(parent.Children[Index], ElementValue, parent)
  3079.  
  3080.             elif Type == "box":
  3081.                 parent.Children[Index] = Box()
  3082.                 parent.Children[Index].SetParent(parent)
  3083.                 self.LoadElementBox(parent.Children[Index], ElementValue, parent)
  3084.  
  3085.             elif Type == "bar":
  3086.                 parent.Children[Index] = Bar()
  3087.                 parent.Children[Index].SetParent(parent)
  3088.                 self.LoadElementBar(parent.Children[Index], ElementValue, parent)
  3089.  
  3090.             elif Type == "line":
  3091.                 parent.Children[Index] = Line()
  3092.                 parent.Children[Index].SetParent(parent)
  3093.                 self.LoadElementLine(parent.Children[Index], ElementValue, parent)
  3094.  
  3095.             elif Type == "slotbar":
  3096.                 parent.Children[Index] = SlotBar()
  3097.                 parent.Children[Index].SetParent(parent)
  3098.                 self.LoadElementSlotBar(parent.Children[Index], ElementValue, parent)
  3099.  
  3100.             elif Type == "gauge":
  3101.                 parent.Children[Index] = Gauge()
  3102.                 parent.Children[Index].SetParent(parent)
  3103.                 self.LoadElementGauge(parent.Children[Index], ElementValue, parent)
  3104.  
  3105.             elif Type == "scrollbar":
  3106.                 parent.Children[Index] = ScrollBar()
  3107.                 parent.Children[Index].SetParent(parent)
  3108.                 self.LoadElementScrollBar(parent.Children[Index], ElementValue, parent)
  3109.  
  3110.             elif Type == "thin_scrollbar":
  3111.                 parent.Children[Index] = ThinScrollBar()
  3112.                 parent.Children[Index].SetParent(parent)
  3113.                 self.LoadElementScrollBar(parent.Children[Index], ElementValue, parent)
  3114.  
  3115.             elif Type == "small_thin_scrollbar":
  3116.                 parent.Children[Index] = SmallThinScrollBar()
  3117.                 parent.Children[Index].SetParent(parent)
  3118.                 self.LoadElementScrollBar(parent.Children[Index], ElementValue, parent)
  3119.  
  3120.             elif Type == "sliderbar":
  3121.                 parent.Children[Index] = SliderBar()
  3122.                 parent.Children[Index].SetParent(parent)
  3123.                 self.LoadElementSliderBar(parent.Children[Index], ElementValue, parent)
  3124.  
  3125.             elif Type == "listbox":
  3126.                 parent.Children[Index] = ListBox()
  3127.                 parent.Children[Index].SetParent(parent)
  3128.                 self.LoadElementListBox(parent.Children[Index], ElementValue, parent)
  3129.  
  3130.             elif Type == "listbox2":
  3131.                 parent.Children[Index] = ListBox2()
  3132.                 parent.Children[Index].SetParent(parent)
  3133.                 self.LoadElementListBox2(parent.Children[Index], ElementValue, parent)
  3134.             elif Type == "listboxex":
  3135.                 parent.Children[Index] = ListBoxEx()
  3136.                 parent.Children[Index].SetParent(parent)
  3137.                 self.LoadElementListBoxEx(parent.Children[Index], ElementValue, parent)
  3138.  
  3139.             else:
  3140.                 Index += 1
  3141.                 continue
  3142.  
  3143.             parent.Children[Index].SetWindowName(Name)
  3144.             if 0 != self.InsertFunction:
  3145.                 self.InsertFunction(Name, parent.Children[Index])
  3146.  
  3147.             self.LoadChildren(parent.Children[Index], ElementValue)
  3148.             Index += 1
  3149.  
  3150.     def CheckKeyList(self, name, value, key_list):
  3151.  
  3152.         for DataKey in key_list:
  3153.             if FALSE == value.has_key(DataKey):
  3154.                 print "Failed to find data key", "[" + name + "/" + DataKey + "]"
  3155.                 return FALSE
  3156.  
  3157.         return TRUE
  3158.  
  3159.     def LoadDefaultData(self, window, value, parentWindow):
  3160.         loc_x = int(value["x"])
  3161.         loc_y = int(value["y"])
  3162.         if value.has_key("vertical_align"):
  3163.             if "center" == value["vertical_align"]:
  3164.                 window.SetWindowVerticalAlignCenter()
  3165.             elif "bottom" == value["vertical_align"]:
  3166.                 window.SetWindowVerticalAlignBottom()
  3167.  
  3168.         if parentWindow.IsRTL():
  3169.             loc_x = int(value["x"]) + window.GetWidth()
  3170.             if value.has_key("horizontal_align"):
  3171.                 if "center" == value["horizontal_align"]:
  3172.                     window.SetWindowHorizontalAlignCenter()
  3173.                     loc_x = - int(value["x"])
  3174.                 elif "right" == value["horizontal_align"]:
  3175.                     window.SetWindowHorizontalAlignLeft()
  3176.                     loc_x = int(value["x"]) - window.GetWidth()
  3177.                     ## loc_x = parentWindow.GetWidth() - int(value["x"]) + window.GetWidth()
  3178.             else:
  3179.                 window.SetWindowHorizontalAlignRight()
  3180.  
  3181.             if value.has_key("all_align"):
  3182.                 window.SetWindowVerticalAlignCenter()
  3183.                 window.SetWindowHorizontalAlignCenter()
  3184.                 loc_x = - int(value["x"])
  3185.         else:
  3186.             if value.has_key("horizontal_align"):
  3187.                 if "center" == value["horizontal_align"]:
  3188.                     window.SetWindowHorizontalAlignCenter()
  3189.                 elif "right" == value["horizontal_align"]:
  3190.                     window.SetWindowHorizontalAlignRight()
  3191.  
  3192.         window.SetPosition(loc_x, loc_y)
  3193.         window.Show()
  3194.  
  3195.     ## Window
  3196.     def LoadElementWindow(self, window, value, parentWindow):
  3197.  
  3198.         if FALSE == self.CheckKeyList(value["name"], value, self.WINDOW_KEY_LIST):
  3199.             return FALSE
  3200.  
  3201.         window.SetSize(int(value["width"]), int(value["height"]))
  3202.         self.LoadDefaultData(window, value, parentWindow)
  3203.  
  3204.         return TRUE
  3205.  
  3206.     ## Button
  3207.     def LoadElementButton(self, window, value, parentWindow):
  3208.  
  3209.         if value.has_key("width") and value.has_key("height"):
  3210.             window.SetSize(int(value["width"]), int(value["height"]))
  3211.  
  3212.         if TRUE == value.has_key("default_image"):
  3213.             window.SetUpVisual(value["default_image"])
  3214.         if TRUE == value.has_key("over_image"):
  3215.             window.SetOverVisual(value["over_image"])
  3216.         if TRUE == value.has_key("down_image"):
  3217.             window.SetDownVisual(value["down_image"])
  3218.         if TRUE == value.has_key("disable_image"):
  3219.             window.SetDisableVisual(value["disable_image"])
  3220.  
  3221.         if TRUE == value.has_key("text"):
  3222.             if TRUE == value.has_key("text_height"):
  3223.                 window.SetText(value["text"], value["text_height"])
  3224.             else:
  3225.                 window.SetText(value["text"])
  3226.  
  3227.             if value.has_key("text_color"):
  3228.                 window.SetTextColor(value["text_color"])
  3229.  
  3230.         if TRUE == value.has_key("tooltip_text"):
  3231.             if TRUE == value.has_key("tooltip_x") and TRUE == value.has_key("tooltip_y"):
  3232.                 window.SetToolTipText(value["tooltip_text"], int(value["tooltip_x"]), int(value["tooltip_y"]))
  3233.             else:
  3234.                 window.SetToolTipText(value["tooltip_text"])
  3235.  
  3236.         self.LoadDefaultData(window, value, parentWindow)
  3237.  
  3238.         return TRUE
  3239.        
  3240.        
  3241.     def LoadElementVerticalSeparator(self, window, value, parentWindow):
  3242.         if FALSE == self.CheckKeyList(value["name"], value, self.VERTICAL_SEPARATOR_KEY_LIST):
  3243.             return FALSE
  3244.  
  3245.         window.SetHeight(int(value["height"]))
  3246.         self.LoadDefaultData(window, value, parentWindow)
  3247.  
  3248.         return TRUE
  3249.  
  3250.     def LoadElementHorizontalSeparator(self, window, value, parentWindow):
  3251.         if FALSE == self.CheckKeyList(value["name"], value, self.HORIZONTAL_SEPARATOR_KEY_LIST):
  3252.             return FALSE
  3253.  
  3254.         window.SetWidth(int(value["width"]))
  3255.         self.LoadDefaultData(window, value, parentWindow)
  3256.  
  3257.         return TRUE
  3258.  
  3259.     ## Mark
  3260.     def LoadElementMark(self, window, value, parentWindow):
  3261.  
  3262.         #if FALSE == self.CheckKeyList(value["name"], value, self.MARK_KEY_LIST):
  3263.         #   return FALSE
  3264.  
  3265.         self.LoadDefaultData(window, value, parentWindow)
  3266.  
  3267.         return TRUE
  3268.  
  3269.     ## Image
  3270.     def LoadElementImage(self, window, value, parentWindow):
  3271.  
  3272.         if FALSE == self.CheckKeyList(value["name"], value, self.IMAGE_KEY_LIST):
  3273.             return FALSE
  3274.  
  3275.         window.LoadImage(value["image"])
  3276.         self.LoadDefaultData(window, value, parentWindow)
  3277.  
  3278.         return TRUE
  3279.  
  3280.     ## AniImage
  3281.     def LoadElementAniImage(self, window, value, parentWindow):
  3282.  
  3283.         if FALSE == self.CheckKeyList(value["name"], value, self.ANI_IMAGE_KEY_LIST):
  3284.             return FALSE
  3285.  
  3286.         if TRUE == value.has_key("delay"):
  3287.             window.SetDelay(value["delay"])
  3288.        
  3289.         if TRUE == value.has_key("x_scale") and TRUE == value.has_key("y_scale"):
  3290.             for image in value["images"]:
  3291.                 window.AppendImageScale(image, float(value["x_scale"]), float(value["y_scale"]))
  3292.         else:
  3293.             for image in value["images"]:
  3294.                 window.AppendImage(image)
  3295.  
  3296.         if value.has_key("width") and value.has_key("height"):
  3297.             window.SetSize(value["width"], value["height"])
  3298.  
  3299.         self.LoadDefaultData(window, value, parentWindow)
  3300.  
  3301.         return TRUE
  3302.  
  3303.     ## Expanded Image
  3304.     def LoadElementExpandedImage(self, window, value, parentWindow):
  3305.  
  3306.         if FALSE == self.CheckKeyList(value["name"], value, self.EXPANDED_IMAGE_KEY_LIST):
  3307.             return FALSE
  3308.  
  3309.         window.LoadImage(value["image"])
  3310.  
  3311.         if TRUE == value.has_key("x_origin") and TRUE == value.has_key("y_origin"):
  3312.             window.SetOrigin(float(value["x_origin"]), float(value["y_origin"]))
  3313.  
  3314.         if TRUE == value.has_key("x_scale") and TRUE == value.has_key("y_scale"):
  3315.             window.SetScale(float(value["x_scale"]), float(value["y_scale"]))
  3316.  
  3317.         if TRUE == value.has_key("rect"):
  3318.             RenderingRect = value["rect"]
  3319.             window.SetRenderingRect(RenderingRect[0], RenderingRect[1], RenderingRect[2], RenderingRect[3])
  3320.  
  3321.         if TRUE == value.has_key("mode"):
  3322.             mode = value["mode"]
  3323.             if "MODULATE" == mode:
  3324.                 window.SetRenderingMode(wndMgr.RENDERING_MODE_MODULATE)
  3325.  
  3326.         self.LoadDefaultData(window, value, parentWindow)
  3327.  
  3328.         return TRUE
  3329.  
  3330.     ## Slot
  3331.     def LoadElementSlot(self, window, value, parentWindow):
  3332.  
  3333.         if FALSE == self.CheckKeyList(value["name"], value, self.SLOT_KEY_LIST):
  3334.             return FALSE
  3335.  
  3336.         global_x = int(value["x"])
  3337.         global_y = int(value["y"])
  3338.         global_width = int(value["width"])
  3339.         global_height = int(value["height"])
  3340.  
  3341.         window.SetPosition(global_x, global_y)
  3342.         window.SetSize(global_width, global_height)
  3343.         window.Show()
  3344.  
  3345.         r = 1.0
  3346.         g = 1.0
  3347.         b = 1.0
  3348.         a = 1.0
  3349.  
  3350.         if TRUE == value.has_key("image_r") and \
  3351.             TRUE == value.has_key("image_g") and \
  3352.             TRUE == value.has_key("image_b") and \
  3353.             TRUE == value.has_key("image_a"):
  3354.             r = float(value["image_r"])
  3355.             g = float(value["image_g"])
  3356.             b = float(value["image_b"])
  3357.             a = float(value["image_a"])
  3358.  
  3359.         SLOT_ONE_KEY_LIST = ("index", "x", "y", "width", "height")
  3360.  
  3361.         for slot in value["slot"]:
  3362.             if TRUE == self.CheckKeyList(value["name"] + " - one", slot, SLOT_ONE_KEY_LIST):
  3363.                 wndMgr.AppendSlot(window.hWnd,
  3364.                                     int(slot["index"]),
  3365.                                     int(slot["x"]),
  3366.                                     int(slot["y"]),
  3367.                                     int(slot["width"]),
  3368.                                     int(slot["height"]))
  3369.  
  3370.         if TRUE == value.has_key("image"):
  3371.             if TRUE == value.has_key("x_scale") and TRUE == value.has_key("y_scale"):
  3372.                 wndMgr.SetSlotBaseImageScale(window.hWnd,
  3373.                                         value["image"],
  3374.                                         r, g, b, a, float(value["x_scale"]), float(value["y_scale"]))
  3375.             else:
  3376.                 wndMgr.SetSlotBaseImage(window.hWnd,
  3377.                                         value["image"],
  3378.                                         r, g, b, a)
  3379.  
  3380.         return TRUE
  3381.  
  3382.     def LoadElementCandidateList(self, window, value, parentWindow):
  3383.         if FALSE == self.CheckKeyList(value["name"], value, self.CANDIDATE_LIST_KEY_LIST):
  3384.             return FALSE
  3385.  
  3386.         window.SetPosition(int(value["x"]), int(value["y"]))
  3387.         window.SetItemSize(int(value["item_xsize"]), int(value["item_ysize"]))
  3388.         window.SetItemStep(int(value["item_step"]))    
  3389.         window.Show()
  3390.  
  3391.         return TRUE
  3392.                
  3393.     ## Table
  3394.     def LoadElementGridTable(self, window, value, parentWindow):
  3395.  
  3396.         if FALSE == self.CheckKeyList(value["name"], value, self.GRID_TABLE_KEY_LIST):
  3397.             return FALSE
  3398.  
  3399.         xBlank = 0
  3400.         yBlank = 0
  3401.         if TRUE == value.has_key("x_blank"):
  3402.             xBlank = int(value["x_blank"])
  3403.         if TRUE == value.has_key("y_blank"):
  3404.             yBlank = int(value["y_blank"])
  3405.  
  3406.         window.SetPosition(int(value["x"]), int(value["y"]))
  3407.  
  3408.         window.ArrangeSlot( int(value["start_index"]),
  3409.                             int(value["x_count"]),
  3410.                             int(value["y_count"]),
  3411.                             int(value["x_step"]),
  3412.                             int(value["y_step"]),
  3413.                             xBlank,
  3414.                             yBlank)
  3415.         if TRUE == value.has_key("image"):
  3416.             r = 1.0
  3417.             g = 1.0
  3418.             b = 1.0
  3419.             a = 1.0
  3420.             if TRUE == value.has_key("image_r") and \
  3421.                 TRUE == value.has_key("image_g") and \
  3422.                 TRUE == value.has_key("image_b") and \
  3423.                 TRUE == value.has_key("image_a"):
  3424.                 r = float(value["image_r"])
  3425.                 g = float(value["image_g"])
  3426.                 b = float(value["image_b"])
  3427.                 a = float(value["image_a"])
  3428.             wndMgr.SetSlotBaseImage(window.hWnd, value["image"], r, g, b, a)
  3429.  
  3430.         if TRUE == value.has_key("style"):
  3431.             if "select" == value["style"]:
  3432.                 wndMgr.SetSlotStyle(window.hWnd, wndMgr.SLOT_STYLE_SELECT)
  3433.         window.Show()
  3434.  
  3435.         return TRUE
  3436.  
  3437.     ## Text
  3438.     def LoadElementText(self, window, value, parentWindow):
  3439.  
  3440.         if value.has_key("fontsize"):
  3441.             fontSize = value["fontsize"]
  3442.  
  3443.             if "LARGE" == fontSize:
  3444.                 window.SetFontName(localeinfo.UI_DEF_FONT_LARGE)
  3445.  
  3446.         elif value.has_key("fontname"):
  3447.             fontName = value["fontname"]
  3448.             window.SetFontName(fontName)
  3449.  
  3450.         if value.has_key("text_horizontal_align"):
  3451.             if "left" == value["text_horizontal_align"]:
  3452.                 window.SetHorizontalAlignLeft()
  3453.             elif "center" == value["text_horizontal_align"]:
  3454.                 window.SetHorizontalAlignCenter()
  3455.             elif "right" == value["text_horizontal_align"]:
  3456.                 window.SetHorizontalAlignRight()
  3457.  
  3458.         if value.has_key("text_vertical_align"):
  3459.             if "top" == value["text_vertical_align"]:
  3460.                 window.SetVerticalAlignTop()
  3461.             elif "center" == value["text_vertical_align"]:
  3462.                 window.SetVerticalAlignCenter()
  3463.             elif "bottom" == value["text_vertical_align"]:
  3464.                 window.SetVerticalAlignBottom()
  3465.  
  3466.         if value.has_key("all_align"):
  3467.             window.SetHorizontalAlignCenter()
  3468.             window.SetVerticalAlignCenter()
  3469.             window.SetWindowHorizontalAlignCenter()
  3470.             window.SetWindowVerticalAlignCenter()
  3471.  
  3472.         if value.has_key("r") and value.has_key("g") and value.has_key("b"):
  3473.             window.SetFontColor(float(value["r"]), float(value["g"]), float(value["b"]))
  3474.         elif value.has_key("color"):
  3475.             window.SetPackedFontColor(value["color"])
  3476.         else:
  3477.             window.SetFontColor(0.8549, 0.8549, 0.8549)
  3478.  
  3479.         if value.has_key("outline"):
  3480.             if value["outline"]:
  3481.                 window.SetOutline()
  3482.         if TRUE == value.has_key("text"):
  3483.             window.SetText(value["text"])
  3484.  
  3485.         self.LoadDefaultData(window, value, parentWindow)
  3486.  
  3487.         return TRUE
  3488.  
  3489.     ## EditLine
  3490.     def LoadElementEditLine(self, window, value, parentWindow):
  3491.  
  3492.         if FALSE == self.CheckKeyList(value["name"], value, self.EDIT_LINE_KEY_LIST):
  3493.             return FALSE
  3494.  
  3495.  
  3496.         if value.has_key("secret_flag"):
  3497.             window.SetSecret(value["secret_flag"])
  3498.         if value.has_key("with_codepage"):
  3499.             if value["with_codepage"]:
  3500.                 window.bCodePage = TRUE
  3501.         if value.has_key("only_number"):
  3502.             if value["only_number"]:
  3503.                 window.SetNumberMode()
  3504.         if value.has_key("enable_codepage"):
  3505.             window.SetIMEFlag(value["enable_codepage"])
  3506.         if value.has_key("enable_ime"):
  3507.             window.SetIMEFlag(value["enable_ime"])
  3508.         if value.has_key("limit_width"):
  3509.             window.SetLimitWidth(value["limit_width"])
  3510.         if value.has_key("multi_line"):
  3511.             if value["multi_line"]:
  3512.                 window.SetMultiLine()
  3513.  
  3514.         window.SetMax(int(value["input_limit"]))
  3515.         window.SetSize(int(value["width"]), int(value["height"]))
  3516.         self.LoadElementText(window, value, parentWindow)
  3517.  
  3518.         return TRUE
  3519.  
  3520.     ## TitleBar
  3521.     def LoadElementTitleBar(self, window, value, parentWindow):
  3522.  
  3523.         if FALSE == self.CheckKeyList(value["name"], value, self.TITLE_BAR_KEY_LIST):
  3524.             return FALSE
  3525.  
  3526.         window.MakeTitleBar(int(value["width"]), value.get("color", "red"))
  3527.         self.LoadDefaultData(window, value, parentWindow)
  3528.  
  3529.         return TRUE
  3530.  
  3531.     ## HorizontalBar
  3532.     def LoadElementHorizontalBar(self, window, value, parentWindow):
  3533.  
  3534.         if FALSE == self.CheckKeyList(value["name"], value, self.HORIZONTAL_BAR_KEY_LIST):
  3535.             return FALSE
  3536.  
  3537.         window.Create(int(value["width"]))
  3538.         self.LoadDefaultData(window, value, parentWindow)
  3539.  
  3540.         return TRUE
  3541.  
  3542.     ## Board
  3543.     def LoadElementBoard(self, window, value, parentWindow):
  3544.  
  3545.         if FALSE == self.CheckKeyList(value["name"], value, self.BOARD_KEY_LIST):
  3546.             return FALSE
  3547.  
  3548.         window.SetSize(int(value["width"]), int(value["height"]))
  3549.         self.LoadDefaultData(window, value, parentWindow)
  3550.  
  3551.         return TRUE
  3552.  
  3553.     ## Board With TitleBar
  3554.     def LoadElementBoardWithTitleBar(self, window, value, parentWindow):
  3555.  
  3556.         if FALSE == self.CheckKeyList(value["name"], value, self.BOARD_WITH_TITLEBAR_KEY_LIST):
  3557.             return FALSE
  3558.  
  3559.         window.SetSize(int(value["width"]), int(value["height"]))
  3560.         window.SetTitleName(value["title"])
  3561.         self.LoadDefaultData(window, value, parentWindow)
  3562.  
  3563.         return TRUE
  3564.  
  3565.     ## ThinBoard
  3566.     def LoadElementThinBoard(self, window, value, parentWindow):
  3567.  
  3568.         if FALSE == self.CheckKeyList(value["name"], value, self.BOARD_KEY_LIST):
  3569.             return FALSE
  3570.  
  3571.         window.SetSize(int(value["width"]), int(value["height"]))
  3572.         self.LoadDefaultData(window, value, parentWindow)
  3573.  
  3574.         return TRUE
  3575.  
  3576.     ## ThinBoardNew
  3577.     def LoadElementThinBoardNew(self, window, value, parentWindow):
  3578.  
  3579.         if FALSE == self.CheckKeyList(value["name"], value, self.BOARD_KEY_LIST):
  3580.             return FALSE
  3581.  
  3582.         window.SetSize(int(value["width"]), int(value["height"]))
  3583.         self.LoadDefaultData(window, value, parentWindow)
  3584.  
  3585.         return TRUE
  3586.  
  3587.     ## Box
  3588.     def LoadElementBox(self, window, value, parentWindow):
  3589.  
  3590.         if FALSE == self.CheckKeyList(value["name"], value, self.BOX_KEY_LIST):
  3591.             return FALSE
  3592.  
  3593.         if TRUE == value.has_key("color"):
  3594.             window.SetColor(value["color"])
  3595.  
  3596.         window.SetSize(int(value["width"]), int(value["height"]))
  3597.         self.LoadDefaultData(window, value, parentWindow)
  3598.  
  3599.         return TRUE
  3600.  
  3601.     ## Bar
  3602.     def LoadElementBar(self, window, value, parentWindow):
  3603.  
  3604.         if FALSE == self.CheckKeyList(value["name"], value, self.BAR_KEY_LIST):
  3605.             return FALSE
  3606.  
  3607.         if TRUE == value.has_key("color"):
  3608.             window.SetColor(value["color"])
  3609.  
  3610.         window.SetSize(int(value["width"]), int(value["height"]))
  3611.         self.LoadDefaultData(window, value, parentWindow)
  3612.  
  3613.         return TRUE
  3614.  
  3615.     ## Line
  3616.     def LoadElementLine(self, window, value, parentWindow):
  3617.  
  3618.         if FALSE == self.CheckKeyList(value["name"], value, self.LINE_KEY_LIST):
  3619.             return FALSE
  3620.  
  3621.         if TRUE == value.has_key("color"):
  3622.             window.SetColor(value["color"])
  3623.  
  3624.         window.SetSize(int(value["width"]), int(value["height"]))
  3625.         self.LoadDefaultData(window, value, parentWindow)
  3626.  
  3627.         return TRUE
  3628.  
  3629.     ## Slot
  3630.     def LoadElementSlotBar(self, window, value, parentWindow):
  3631.  
  3632.         if FALSE == self.CheckKeyList(value["name"], value, self.SLOTBAR_KEY_LIST):
  3633.             return FALSE
  3634.  
  3635.         window.SetSize(int(value["width"]), int(value["height"]))
  3636.         self.LoadDefaultData(window, value, parentWindow)
  3637.  
  3638.         return TRUE
  3639.  
  3640.     ## Gauge
  3641.     def LoadElementGauge(self, window, value, parentWindow):
  3642.  
  3643.         if FALSE == self.CheckKeyList(value["name"], value, self.GAUGE_KEY_LIST):
  3644.             return FALSE
  3645.  
  3646.         window.MakeGauge(value["width"], value["color"])
  3647.         self.LoadDefaultData(window, value, parentWindow)
  3648.  
  3649.         return TRUE
  3650.  
  3651.     ## ScrollBar
  3652.     def LoadElementScrollBar(self, window, value, parentWindow):
  3653.  
  3654.         if FALSE == self.CheckKeyList(value["name"], value, self.SCROLLBAR_KEY_LIST):
  3655.             return FALSE
  3656.  
  3657.         window.SetScrollBarSize(value["size"])
  3658.         self.LoadDefaultData(window, value, parentWindow)
  3659.  
  3660.         return TRUE
  3661.  
  3662.     ## SliderBar
  3663.     def LoadElementSliderBar(self, window, value, parentWindow):
  3664.  
  3665.         self.LoadDefaultData(window, value, parentWindow)
  3666.  
  3667.         return TRUE
  3668.  
  3669.     ## ListBox
  3670.     def LoadElementListBox(self, window, value, parentWindow):
  3671.  
  3672.         if FALSE == self.CheckKeyList(value["name"], value, self.LIST_BOX_KEY_LIST):
  3673.             return FALSE
  3674.  
  3675.         if value.has_key("item_align"):
  3676.             window.SetTextCenterAlign(value["item_align"])
  3677.  
  3678.         window.SetSize(value["width"], value["height"])
  3679.         self.LoadDefaultData(window, value, parentWindow)
  3680.  
  3681.         return TRUE
  3682.  
  3683.     ## ListBox2
  3684.     def LoadElementListBox2(self, window, value, parentWindow):
  3685.  
  3686.         if FALSE == self.CheckKeyList(value["name"], value, self.LIST_BOX_KEY_LIST):
  3687.             return FALSE
  3688.  
  3689.         window.SetRowCount(value.get("row_count", 10)) # 기본 세로 개수 10개
  3690.         window.SetSize(value["width"], value["height"])
  3691.         self.LoadDefaultData(window, value, parentWindow)
  3692.  
  3693.         if value.has_key("item_align"):
  3694.             window.SetTextCenterAlign(value["item_align"])
  3695.  
  3696.         return TRUE
  3697.     def LoadElementListBoxEx(self, window, value, parentWindow):
  3698.  
  3699.         if FALSE == self.CheckKeyList(value["name"], value, self.LIST_BOX_KEY_LIST):
  3700.             return FALSE
  3701.  
  3702.         window.SetSize(value["width"], value["height"])
  3703.         self.LoadDefaultData(window, value, parentWindow)
  3704.  
  3705.         if value.has_key("itemsize_x") and value.has_key("itemsize_y"):
  3706.             window.SetItemSize(int(value["itemsize_x"]), int(value["itemsize_y"]))
  3707.  
  3708.         if value.has_key("itemstep"):
  3709.             window.SetItemStep(int(value["itemstep"]))
  3710.  
  3711.         if value.has_key("viewcount"):
  3712.             window.SetViewItemCount(int(value["viewcount"]))
  3713.  
  3714.         return TRUE
  3715.  
  3716. class ReadingWnd(Bar):
  3717.  
  3718.     def __init__(self):
  3719.         Bar.__init__(self,"TOP_MOST")
  3720.  
  3721.         self.__BuildText()
  3722.         self.SetSize(80, 19)
  3723.         self.Show()
  3724.  
  3725.     def __del__(self):
  3726.         Bar.__del__(self)
  3727.  
  3728.     def __BuildText(self):
  3729.         self.text = TextLine()
  3730.         self.text.SetParent(self)
  3731.         self.text.SetPosition(4, 3)
  3732.         self.text.Show()
  3733.  
  3734.     def SetText(self, text):
  3735.         self.text.SetText(text)
  3736.  
  3737.     def SetReadingPosition(self, x, y):
  3738.         xPos = x + 2
  3739.         yPos = y  - self.GetHeight() - 2
  3740.         self.SetPosition(xPos, yPos)
  3741.  
  3742.     def SetTextColor(self, color):
  3743.         self.text.SetPackedFontColor(color)
  3744.  
  3745.  
  3746. def MakeSlotBar(parent, x, y, width, height):
  3747.     slotBar = SlotBar()
  3748.     slotBar.SetParent(parent)
  3749.     slotBar.SetSize(width, height)
  3750.     slotBar.SetPosition(x, y)
  3751.     slotBar.Show()
  3752.     return slotBar
  3753.  
  3754. def MakeImageBox(parent, name, x, y):
  3755.     image = ImageBox()
  3756.     image.SetParent(parent)
  3757.     image.LoadImage(name)
  3758.     image.SetPosition(x, y)
  3759.     image.Show()
  3760.     return image
  3761.  
  3762. def MakeTextLine(parent):
  3763.     textLine = TextLine()
  3764.     textLine.SetParent(parent)
  3765.     textLine.SetWindowHorizontalAlignCenter()
  3766.     textLine.SetWindowVerticalAlignCenter()
  3767.     textLine.SetHorizontalAlignCenter()
  3768.     textLine.SetVerticalAlignCenter()
  3769.     textLine.Show()
  3770.     return textLine
  3771.  
  3772. def MakeButton(parent, x, y, tooltipText, path, up, over, down):
  3773.     button = Button()
  3774.     button.SetParent(parent)
  3775.     button.SetPosition(x, y)
  3776.     button.SetUpVisual(path + up)
  3777.     button.SetOverVisual(path + over)
  3778.     button.SetDownVisual(path + down)
  3779.     button.SetToolTipText(tooltipText)
  3780.     button.Show()
  3781.     return button
  3782.  
  3783. def RenderRoundBox(x, y, width, height, color):
  3784.     grp.SetColor(color)
  3785.     grp.RenderLine(x+2, y, width-3, 0)
  3786.     grp.RenderLine(x+2, y+height, width-3, 0)
  3787.     grp.RenderLine(x, y+2, 0, height-4)
  3788.     grp.RenderLine(x+width, y+1, 0, height-3)
  3789.     grp.RenderLine(x, y+2, 2, -2)
  3790.     grp.RenderLine(x, y+height-2, 2, 2)
  3791.     grp.RenderLine(x+width-2, y, 2, 2)
  3792.     grp.RenderLine(x+width-2, y+height, 2, -2)
  3793.  
  3794. def GenerateColor(r, g, b):
  3795.     r = float(r) / 255.0
  3796.     g = float(g) / 255.0
  3797.     b = float(b) / 255.0
  3798.     return grp.GenerateColor(r, g, b, 1.0)
  3799.  
  3800. def EnablePaste(flag):
  3801.     ime.EnablePaste(flag)
  3802.  
  3803. def GetHyperlink():
  3804.     return wndMgr.GetHyperlink()
  3805.  
  3806. RegisterToolTipWindow("TEXT", TextLine)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement