Advertisement
Guest User

Untitled

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