Guest User

ui.py

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