Guest User

2018 ui.py

a guest
Apr 25th, 2020
585
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 140.37 KB | None | 0 0
  1. import app
  2. import ime
  3. import grp
  4. import snd
  5. import wndMgr
  6. import item
  7. import skill
  8. import localeInfo
  9. import dbg
  10. # MARK_BUG_FIX
  11. import guild
  12. # END_OF_MARK_BUG_FIX
  13.  
  14. if app.ENABLE_FISH_EVENT:
  15.     import playerm2g2
  16.  
  17. from _weakref import proxy
  18.  
  19. BACKGROUND_COLOR = grp.GenerateColor(0.0, 0.0, 0.0, 1.0)
  20. DARK_COLOR = grp.GenerateColor(0.2, 0.2, 0.2, 1.0)
  21. BRIGHT_COLOR = grp.GenerateColor(0.7, 0.7, 0.7, 1.0)
  22.  
  23. if localeInfo.IsCANADA():
  24.     SELECT_COLOR = grp.GenerateColor(0.9, 0.03, 0.01, 0.4)
  25. else:
  26.     SELECT_COLOR = grp.GenerateColor(0.0, 0.0, 0.5, 0.3)
  27.  
  28. WHITE_COLOR = grp.GenerateColor(1.0, 1.0, 1.0, 0.5)
  29. HALF_WHITE_COLOR = grp.GenerateColor(1.0, 1.0, 1.0, 0.2)
  30.  
  31. if app.ENABLE_KEYCHANGE_SYSTEM:
  32.     RED_COLOR = grp.GenerateColor(1.0, 0.0, 0.0, 0.5)
  33.     HALF_HALF_RED_COLOR = grp.GenerateColor(1.0, 0.0, 0.0, 0.4)
  34.     HALF_RED_COLOR = grp.GenerateColor(1.0, 0.0, 0.0, 0.3)
  35.  
  36. createToolTipWindowDict = {}
  37. def RegisterCandidateWindowClass(codePage, candidateWindowClass):
  38.     EditLine.candidateWindowClassDict[codePage]=candidateWindowClass
  39. def RegisterToolTipWindow(type, createToolTipWindow):
  40.     createToolTipWindowDict[type]=createToolTipWindow
  41.  
  42. app.SetDefaultFontName(localeInfo.UI_DEF_FONT)
  43.  
  44. ## Window Manager Event List##
  45. ##############################
  46. ## "OnMouseLeftButtonDown"
  47. ## "OnMouseLeftButtonUp"
  48. ## "OnMouseLeftButtonDoubleClick"
  49. ## "OnMouseRightButtonDown"
  50. ## "OnMouseRightButtonUp"
  51. ## "OnMouseRightButtonDoubleClick"
  52. ## "OnMouseDrag"
  53. ## "OnSetFocus"
  54. ## "OnKillFocus"
  55. ## "OnMouseOverIn"
  56. ## "OnMouseOverOut"
  57. ## "OnRender"
  58. ## "OnUpdate"
  59. ## "OnKeyDown"
  60. ## "OnKeyUp"
  61. ## "OnTop"
  62. ## "OnIMEUpdate" ## IME Only
  63. ## "OnIMETab"   ## IME Only
  64. ## "OnIMEReturn" ## IME Only
  65. ##############################
  66. ## Window Manager Event List##
  67.  
  68.  
  69. class __mem_func__:
  70.     class __noarg_call__:
  71.         def __init__(self, cls, obj, func):
  72.             self.cls=cls
  73.             self.obj=proxy(obj)
  74.             self.func=proxy(func)
  75.  
  76.         def __call__(self, *arg):
  77.             return self.func(self.obj)
  78.  
  79.     class __arg_call__:
  80.         def __init__(self, cls, obj, func):
  81.             self.cls=cls
  82.             self.obj=proxy(obj)
  83.             self.func=proxy(func)
  84.  
  85.         def __call__(self, *arg):
  86.             return self.func(self.obj, *arg)
  87.  
  88.     def __init__(self, mfunc):
  89.         if mfunc.im_func.func_code.co_argcount>1:
  90.             self.call=__mem_func__.__arg_call__(mfunc.im_class, mfunc.im_self, mfunc.im_func)
  91.         else:
  92.             self.call=__mem_func__.__noarg_call__(mfunc.im_class, mfunc.im_self, mfunc.im_func)
  93.  
  94.     def __call__(self, *arg):
  95.         return self.call(*arg)
  96.  
  97.  
  98. class Window(object):
  99.     def NoneMethod(cls):
  100.         pass
  101.  
  102.     NoneMethod = classmethod(NoneMethod)
  103.  
  104.     def __init__(self, layer = "UI"):
  105.         self.hWnd = None
  106.         self.parentWindow = 0
  107.         self.onMouseLeftButtonUpEvent = None
  108.         self.RegisterWindow(layer)
  109.         self.Hide()
  110.  
  111.     def __del__(self):
  112.         wndMgr.Destroy(self.hWnd)
  113.  
  114.     def RegisterWindow(self, layer):
  115.         self.hWnd = wndMgr.Register(self, layer)
  116.  
  117.     def Destroy(self):
  118.         pass
  119.  
  120.     def GetWindowHandle(self):
  121.         return self.hWnd
  122.  
  123.     def AddFlag(self, style):
  124.         wndMgr.AddFlag(self.hWnd, style)
  125.  
  126.     def IsRTL(self):
  127.         return wndMgr.IsRTL(self.hWnd)
  128.  
  129.     def SetWindowName(self, Name):
  130.         wndMgr.SetName(self.hWnd, Name)
  131.  
  132.     def GetWindowName(self):
  133.         return wndMgr.GetName(self.hWnd)
  134.  
  135.     def SetParent(self, parent):       
  136.         wndMgr.SetParent(self.hWnd, parent.hWnd)
  137.  
  138.     def SetParentProxy(self, parent):
  139.         self.parentWindow=proxy(parent)
  140.         wndMgr.SetParent(self.hWnd, parent.hWnd)
  141.  
  142.    
  143.     def GetParentProxy(self):
  144.         return self.parentWindow
  145.  
  146.     def SetPickAlways(self):
  147.         wndMgr.SetPickAlways(self.hWnd)
  148.  
  149.     def SetWindowHorizontalAlignLeft(self):
  150.         wndMgr.SetWindowHorizontalAlign(self.hWnd, wndMgr.HORIZONTAL_ALIGN_LEFT)
  151.  
  152.     def SetWindowHorizontalAlignCenter(self):
  153.         wndMgr.SetWindowHorizontalAlign(self.hWnd, wndMgr.HORIZONTAL_ALIGN_CENTER)
  154.  
  155.     def SetWindowHorizontalAlignRight(self):
  156.         wndMgr.SetWindowHorizontalAlign(self.hWnd, wndMgr.HORIZONTAL_ALIGN_RIGHT)
  157.  
  158.     def SetWindowVerticalAlignTop(self):
  159.         wndMgr.SetWindowVerticalAlign(self.hWnd, wndMgr.VERTICAL_ALIGN_TOP)
  160.  
  161.     def SetWindowVerticalAlignCenter(self):
  162.         wndMgr.SetWindowVerticalAlign(self.hWnd, wndMgr.VERTICAL_ALIGN_CENTER)
  163.  
  164.     def SetWindowVerticalAlignBottom(self):
  165.         wndMgr.SetWindowVerticalAlign(self.hWnd, wndMgr.VERTICAL_ALIGN_BOTTOM)
  166.  
  167.     def SetTop(self):
  168.         wndMgr.SetTop(self.hWnd)
  169.  
  170.     def Show(self):
  171.         wndMgr.Show(self.hWnd)
  172.  
  173.     def Hide(self):
  174.         wndMgr.Hide(self.hWnd)
  175.  
  176.     def Lock(self):
  177.         wndMgr.Lock(self.hWnd)
  178.  
  179.     def Unlock(self):
  180.         wndMgr.Unlock(self.hWnd)
  181.  
  182.     def IsShow(self):
  183.         return wndMgr.IsShow(self.hWnd)
  184.  
  185.     def UpdateRect(self):
  186.         wndMgr.UpdateRect(self.hWnd)
  187.  
  188.     def SetSize(self, width, height):
  189.         wndMgr.SetWindowSize(self.hWnd, width, height)
  190.  
  191.     def GetWidth(self):
  192.         return wndMgr.GetWindowWidth(self.hWnd)
  193.  
  194.     def GetHeight(self):
  195.         return wndMgr.GetWindowHeight(self.hWnd)
  196.  
  197.     def GetLocalPosition(self):
  198.         return wndMgr.GetWindowLocalPosition(self.hWnd)
  199.  
  200.     def GetGlobalPosition(self):
  201.         return wndMgr.GetWindowGlobalPosition(self.hWnd)
  202.  
  203.     def GetMouseLocalPosition(self):
  204.         return wndMgr.GetMouseLocalPosition(self.hWnd)
  205.  
  206.     def GetRect(self):
  207.         return wndMgr.GetWindowRect(self.hWnd)
  208.  
  209.     def SetPosition(self, x, y):
  210.         wndMgr.SetWindowPosition(self.hWnd, x, y)
  211.  
  212.     def SetCenterPosition(self, x = 0, y = 0):
  213.         self.SetPosition((wndMgr.GetScreenWidth() - self.GetWidth()) / 2 + x, (wndMgr.GetScreenHeight() - self.GetHeight()) / 2 + y)
  214.  
  215.     def IsFocus(self):
  216.         return wndMgr.IsFocus(self.hWnd)
  217.  
  218.     def SetFocus(self):
  219.         wndMgr.SetFocus(self.hWnd)
  220.  
  221.     def KillFocus(self):
  222.         wndMgr.KillFocus(self.hWnd)
  223.  
  224.     def GetChildCount(self):
  225.         return wndMgr.GetChildCount(self.hWnd)
  226.  
  227.     def IsIn(self):
  228.         return wndMgr.IsIn(self.hWnd)
  229.  
  230.     def SetOnMouseLeftButtonUpEvent(self, event):
  231.         self.onMouseLeftButtonUpEvent = event
  232.        
  233.     def OnMouseLeftButtonUp(self):
  234.         if self.onMouseLeftButtonUpEvent:
  235.             self.onMouseLeftButtonUpEvent()
  236.  
  237. class ListBoxEx(Window):
  238.  
  239.     class Item(Window):
  240.         def __init__(self):
  241.             Window.__init__(self)
  242.  
  243.         def __del__(self):
  244.             Window.__del__(self)
  245.  
  246.         def SetParent(self, parent):
  247.             Window.SetParent(self, parent)
  248.             self.parent=proxy(parent)
  249.  
  250.         def OnMouseLeftButtonDown(self):
  251.             self.parent.SelectItem(self)
  252.  
  253.         def OnRender(self):
  254.             if self.parent.GetSelectedItem()==self:
  255.                 self.OnSelectedRender()
  256.  
  257.         def OnSelectedRender(self):
  258.             x, y = self.GetGlobalPosition()
  259.             grp.SetColor(grp.GenerateColor(0.0, 0.0, 0.7, 0.7))
  260.             grp.RenderBar(x, y, self.GetWidth(), self.GetHeight())
  261.  
  262.     def __init__(self):
  263.         Window.__init__(self)
  264.  
  265.         self.viewItemCount=10
  266.         self.basePos=0
  267.         self.itemHeight=16
  268.         self.itemStep=20
  269.         self.selItem=0
  270.         self.itemList=[]
  271.         self.onSelectItemEvent = lambda *arg: None
  272.  
  273.         if localeInfo.IsARABIC():
  274.             self.itemWidth=130
  275.         else:
  276.             self.itemWidth=100
  277.  
  278.         self.scrollBar=None
  279.         self.__UpdateSize()
  280.  
  281.     def __del__(self):
  282.         Window.__del__(self)
  283.  
  284.     def __UpdateSize(self):
  285.         height=self.itemStep*self.__GetViewItemCount()
  286.  
  287.         self.SetSize(self.itemWidth, height)
  288.  
  289.     def IsEmpty(self):
  290.         if len(self.itemList)==0:
  291.             return 1
  292.         return 0
  293.  
  294.     def SetItemStep(self, itemStep):
  295.         self.itemStep=itemStep
  296.         self.__UpdateSize()
  297.  
  298.     def SetItemSize(self, itemWidth, itemHeight):
  299.         self.itemWidth=itemWidth
  300.         self.itemHeight=itemHeight
  301.         self.__UpdateSize()
  302.  
  303.     def SetViewItemCount(self, viewItemCount):
  304.         self.viewItemCount=viewItemCount
  305.  
  306.     def SetSelectEvent(self, event):
  307.         self.onSelectItemEvent = event
  308.  
  309.     def SetBasePos(self, basePos):
  310.         for oldItem in self.itemList[self.basePos:self.basePos+self.viewItemCount]:
  311.             oldItem.Hide()
  312.  
  313.         self.basePos=basePos
  314.  
  315.         pos=basePos
  316.         for newItem in self.itemList[self.basePos:self.basePos+self.viewItemCount]:
  317.             (x, y)=self.GetItemViewCoord(pos, newItem.GetWidth())
  318.             newItem.SetPosition(x, y)
  319.             newItem.Show()
  320.             pos+=1
  321.  
  322.     def GetItemIndex(self, argItem):
  323.         return self.itemList.index(argItem)
  324.  
  325.     def GetSelectedItem(self):
  326.         return self.selItem
  327.  
  328.     def SelectIndex(self, index):
  329.  
  330.         if index >= len(self.itemList) or index < 0:
  331.             self.selItem = None
  332.             return
  333.  
  334.         try:
  335.             self.selItem=self.itemList[index]
  336.         except:
  337.             pass
  338.  
  339.     def SelectItem(self, selItem):
  340.         self.selItem=selItem
  341.         self.onSelectItemEvent(selItem)
  342.  
  343.     def RemoveAllItems(self):
  344.         self.selItem=None
  345.         self.itemList=[]
  346.  
  347.         if self.scrollBar:
  348.             self.scrollBar.SetPos(0)
  349.  
  350.     def RemoveItem(self, delItem):
  351.         if delItem==self.selItem:
  352.             self.selItem=None
  353.  
  354.         self.itemList.remove(delItem)
  355.  
  356.     def AppendItem(self, newItem):
  357.         newItem.SetParent(self)
  358.         newItem.SetSize(self.itemWidth, self.itemHeight)
  359.  
  360.         pos=len(self.itemList)
  361.         if self.__IsInViewRange(pos):
  362.             (x, y)=self.GetItemViewCoord(pos, newItem.GetWidth())
  363.             newItem.SetPosition(x, y)
  364.             newItem.Show()
  365.         else:
  366.             newItem.Hide()
  367.  
  368.         self.itemList.append(newItem)
  369.  
  370.     def SetScrollBar(self, scrollBar):
  371.         scrollBar.SetScrollEvent(__mem_func__(self.__OnScroll))
  372.         self.scrollBar=scrollBar
  373.  
  374.     def __OnScroll(self):
  375.         self.SetBasePos(int(self.scrollBar.GetPos()*self.__GetScrollLen()))
  376.  
  377.     def __GetScrollLen(self):
  378.         scrollLen=self.__GetItemCount()-self.__GetViewItemCount()
  379.         if scrollLen<0:
  380.             return 0
  381.  
  382.         return scrollLen
  383.  
  384.     def __GetViewItemCount(self):
  385.         return self.viewItemCount
  386.  
  387.     def __GetItemCount(self):
  388.         return len(self.itemList)
  389.  
  390.     def GetItemViewCoord(self, pos, itemWidth):
  391.         if localeInfo.IsARABIC():
  392.             return (self.GetWidth()-itemWidth-10, (pos-self.basePos)*self.itemStep)
  393.         else:
  394.             return (0, (pos-self.basePos)*self.itemStep)
  395.  
  396.     def __IsInViewRange(self, pos):
  397.         if pos<self.basePos:
  398.             return 0
  399.         if pos>=self.basePos+self.viewItemCount:
  400.             return 0
  401.         return 1
  402.  
  403. class CandidateListBox(ListBoxEx):
  404.  
  405.     HORIZONTAL_MODE = 0
  406.     VERTICAL_MODE = 1
  407.  
  408.     class Item(ListBoxEx.Item):
  409.         def __init__(self, text):
  410.             ListBoxEx.Item.__init__(self)
  411.  
  412.             self.textBox=TextLine()
  413.             self.textBox.SetParent(self)
  414.             self.textBox.SetText(text)
  415.             self.textBox.Show()
  416.  
  417.         def __del__(self):
  418.             ListBoxEx.Item.__del__(self)
  419.  
  420.     def __init__(self, mode = HORIZONTAL_MODE):
  421.         ListBoxEx.__init__(self)
  422.         self.itemWidth=32
  423.         self.itemHeight=32
  424.         self.mode = mode
  425.  
  426.     def __del__(self):
  427.         ListBoxEx.__del__(self)
  428.  
  429.     def SetMode(self, mode):
  430.         self.mode = mode
  431.  
  432.     def AppendItem(self, newItem):
  433.         ListBoxEx.AppendItem(self, newItem)
  434.  
  435.     def GetItemViewCoord(self, pos):
  436.         if self.mode == self.HORIZONTAL_MODE:
  437.             return ((pos-self.basePos)*self.itemStep, 0)
  438.         elif self.mode == self.VERTICAL_MODE:
  439.             return (0, (pos-self.basePos)*self.itemStep)
  440.  
  441.  
  442. class TextLine(Window):
  443.     def __init__(self):
  444.         Window.__init__(self)
  445.         self.max = 0
  446.         self.SetFontName(localeInfo.UI_DEF_FONT)
  447.  
  448.     def __del__(self):
  449.         Window.__del__(self)
  450.  
  451.     def RegisterWindow(self, layer):
  452.         self.hWnd = wndMgr.RegisterTextLine(self, layer)
  453.  
  454.     def SetMax(self, max):
  455.         wndMgr.SetMax(self.hWnd, max)
  456.  
  457.     def SetLimitWidth(self, width):
  458.         wndMgr.SetLimitWidth(self.hWnd, width)
  459.  
  460.     def SetMultiLine(self):
  461.         wndMgr.SetMultiLine(self.hWnd, True)
  462.  
  463.     def SetHorizontalAlignArabic(self):
  464.         wndMgr.SetHorizontalAlign(self.hWnd, wndMgr.TEXT_HORIZONTAL_ALIGN_ARABIC)
  465.  
  466.     def SetHorizontalAlignLeft(self):
  467.         wndMgr.SetHorizontalAlign(self.hWnd, wndMgr.TEXT_HORIZONTAL_ALIGN_LEFT)
  468.  
  469.     def SetHorizontalAlignRight(self):
  470.         wndMgr.SetHorizontalAlign(self.hWnd, wndMgr.TEXT_HORIZONTAL_ALIGN_RIGHT)
  471.  
  472.     def SetHorizontalAlignCenter(self):
  473.         wndMgr.SetHorizontalAlign(self.hWnd, wndMgr.TEXT_HORIZONTAL_ALIGN_CENTER)
  474.  
  475.     def SetVerticalAlignTop(self):
  476.         wndMgr.SetVerticalAlign(self.hWnd, wndMgr.TEXT_VERTICAL_ALIGN_TOP)
  477.  
  478.     def SetVerticalAlignBottom(self):
  479.         wndMgr.SetVerticalAlign(self.hWnd, wndMgr.TEXT_VERTICAL_ALIGN_BOTTOM)
  480.  
  481.     def SetVerticalAlignCenter(self):
  482.         wndMgr.SetVerticalAlign(self.hWnd, wndMgr.TEXT_VERTICAL_ALIGN_CENTER)
  483.  
  484.     def SetSecret(self, Value=True):
  485.         wndMgr.SetSecret(self.hWnd, Value)
  486.  
  487.     def SetOutline(self, Value=True):
  488.         wndMgr.SetOutline(self.hWnd, Value)
  489.  
  490.     def SetFeather(self, value=True):
  491.         wndMgr.SetFeather(self.hWnd, value)
  492.  
  493.     def SetFontName(self, fontName):
  494.         wndMgr.SetFontName(self.hWnd, fontName)
  495.  
  496.     def SetDefaultFontName(self):
  497.         wndMgr.SetFontName(self.hWnd, localeInfo.UI_DEF_FONT)
  498.  
  499.     def SetFontColor(self, red, green, blue):
  500.         wndMgr.SetFontColor(self.hWnd, red, green, blue)
  501.  
  502.     def SetPackedFontColor(self, color):
  503.         wndMgr.SetFontColor(self.hWnd, color)
  504.  
  505.     def SetText(self, text):
  506.         wndMgr.SetText(self.hWnd, text)
  507.  
  508.     def GetTextLineCount(self):
  509.         return wndMgr.GetTextLineCount(self.hWnd)
  510.        
  511.     def DisableEnterToken(self):
  512.         wndMgr.DisableEnterToken(self.hWnd)
  513.        
  514.     def SetLineHeight(self, Height):
  515.         wndMgr.SetLineHeight(self.hWnd, Height)
  516.            
  517.     def GetLineHeight(self):
  518.         return wndMgr.GetLineHeight(self.hWnd)
  519.            
  520.     def GetText(self):
  521.         return wndMgr.GetText(self.hWnd)
  522.  
  523.     def GetTextSize(self):
  524.         return wndMgr.GetTextSize(self.hWnd)
  525.  
  526. if app.ENABLE_MINI_GAME_YUTNORI:
  527.     class MoveTextLine(TextLine):
  528.         def __init__(self):
  529.             TextLine.__init__(self)
  530.             self.end_move_event_func = None
  531.             self.end_move_event_args = None
  532.            
  533.         def __del__(self):
  534.             TextLine.__del__(self)
  535.             self.end_move_event_func = None
  536.             self.end_move_event_args = None
  537.            
  538.         def RegisterWindow(self, layer):
  539.             self.hWnd = wndMgr.RegisterMoveTextLine(self, layer)
  540.            
  541.         def SetMovePosition(self, dst_x, dst_y):
  542.             wndMgr.SetMovePosition(self.hWnd, dst_x, dst_y)
  543.            
  544.         def SetMoveSpeed(self, speed):
  545.             wndMgr.SetMoveSpeed(self.hWnd, speed)
  546.            
  547.         def MoveStart(self):
  548.             wndMgr.MoveStart(self.hWnd)
  549.         def MoveStop(self):
  550.             wndMgr.MoveStop(self.hWnd)
  551.         def GetMove(self):
  552.             return wndMgr.GetMove(self.hWnd)
  553.        
  554.         def OnEndMove(self):
  555.             if self.end_move_event_func:
  556.                 apply(self.end_move_event_func, self.end_move_event_args)
  557.  
  558.         def SetEndMoveEvent(self, event, *args):
  559.             self.end_move_event_func = event
  560.             self.end_move_event_args = args
  561.            
  562.        
  563. class EmptyCandidateWindow(Window):
  564.     def __init__(self):
  565.         Window.__init__(self)
  566.  
  567.     def __del__(self):
  568.         Window.__del__(self)
  569.  
  570.     def Load(self):
  571.         pass
  572.  
  573.     def SetCandidatePosition(self, x, y, textCount):
  574.         pass
  575.  
  576.     def Clear(self):
  577.         pass
  578.  
  579.     def Append(self, text):
  580.         pass
  581.  
  582.     def Refresh(self):
  583.         pass
  584.  
  585.     def Select(self):
  586.         pass
  587.  
  588. class EditLine(TextLine):
  589.     candidateWindowClassDict = {}
  590.  
  591.     def __init__(self):
  592.         TextLine.__init__(self)
  593.  
  594.         if app.WJ_MULTI_TEXTLINE:
  595.             self.DisableEnterToken()
  596.         self.eventReturn = Window.NoneMethod
  597.         self.eventEscape = Window.NoneMethod
  598.         self.eventTab = None
  599.         self.numberMode = False
  600.         self.UseCodePage = True #MT-679 °³ÀÎ »óÁ¡ ŸÀÌÆ²ÀÇ CodePage À̽´
  601.         self.useIME = True
  602.  
  603.         self.bCodePage = False
  604.  
  605.         self.candidateWindowClass = None
  606.         self.candidateWindow = None
  607.         self.SetCodePage(app.GetDefaultCodePage())
  608.  
  609.         self.readingWnd = ReadingWnd()
  610.         self.readingWnd.Hide()
  611.        
  612.         if app.ENABLE_INPUT_WIDTH_CHECK_SYSTEM:
  613.             self.widthcheckenable = False
  614.  
  615.     def __del__(self):
  616.         TextLine.__del__(self)
  617.  
  618.         self.eventReturn = Window.NoneMethod
  619.         self.eventEscape = Window.NoneMethod
  620.         self.eventTab = None
  621.  
  622.  
  623.     def SetCodePage(self, codePage):
  624.         candidateWindowClass=EditLine.candidateWindowClassDict.get(codePage, EmptyCandidateWindow)
  625.         self.__SetCandidateClass(candidateWindowClass)
  626.  
  627.     def __SetCandidateClass(self, candidateWindowClass):
  628.         if self.candidateWindowClass==candidateWindowClass:
  629.             return
  630.  
  631.         self.candidateWindowClass = candidateWindowClass
  632.         self.candidateWindow = self.candidateWindowClass()
  633.         self.candidateWindow.Load()
  634.         self.candidateWindow.Hide()
  635.  
  636.     def RegisterWindow(self, layer):
  637.         self.hWnd = wndMgr.RegisterTextLine(self, layer)
  638.  
  639.     def SAFE_SetReturnEvent(self, event):
  640.         self.eventReturn = __mem_func__(event)     
  641.  
  642.     def SetReturnEvent(self, event):
  643.         self.eventReturn = event
  644.  
  645.     def SetEscapeEvent(self, event):
  646.         self.eventEscape = event
  647.  
  648.     def SetTabEvent(self, event):
  649.         self.eventTab = event
  650.  
  651.     def SetMax(self, max):
  652.         self.max = max
  653.         wndMgr.SetMax(self.hWnd, self.max)
  654.         ime.SetMax(self.max)
  655.         self.SetUserMax(self.max)
  656.        
  657.     def SetUserMax(self, max):
  658.         self.userMax = max
  659.         ime.SetUserMax(self.userMax)
  660.        
  661.     if app.ENABLE_INPUT_WIDTH_CHECK_SYSTEM:
  662.         def SetCheckWidth(self,enable):
  663.             self.widthcheckenable = enable
  664.             ime.SetCheckWidth(enable)
  665.  
  666.     def SetNumberMode(self):
  667.         self.numberMode = True
  668.  
  669.     #MT-679 °³ÀÎ »óÁ¡ ŸÀÌÆ²ÀÇ CodePage À̽´
  670.     def SetUseCodePage(self, bUse = True):
  671.         self.UseCodePage = bUse
  672.  
  673.     #def AddExceptKey(self, key):
  674.     #   ime.AddExceptKey(key)
  675.  
  676.     #def ClearExceptKey(self):
  677.     #   ime.ClearExceptKey()
  678.  
  679.     def SetIMEFlag(self, flag):
  680.         self.useIME = flag
  681.  
  682.     def SetText(self, text):
  683.         wndMgr.SetText(self.hWnd, text)
  684.  
  685.         if self.IsFocus():
  686.             ime.SetText(text)
  687.  
  688.     def Enable(self):
  689.         wndMgr.ShowCursor(self.hWnd)
  690.  
  691.     def Disable(self):
  692.         wndMgr.HideCursor(self.hWnd)
  693.  
  694.     def SetEndPosition(self):
  695.         ime.MoveEnd()
  696.  
  697.     def OnSetFocus(self):
  698.         Text = self.GetText()
  699.         ime.SetText(Text)
  700.         ime.SetMax(self.max)
  701.         ime.SetUserMax(self.userMax)
  702.         ime.SetCursorPosition(-1)
  703.         if self.numberMode:
  704.             ime.SetNumberMode()
  705.         else:
  706.             ime.SetStringMode()
  707.         ime.EnableCaptureInput()
  708.         if self.useIME:
  709.             ime.EnableIME()
  710.         else:
  711.             ime.DisableIME()
  712.         if app.ENABLE_INPUT_WIDTH_CHECK_SYSTEM:
  713.             ime.SetCheckWidth(self.widthcheckenable)
  714.         wndMgr.ShowCursor(self.hWnd, True)
  715.  
  716.     def OnKillFocus(self):
  717.         self.SetText(ime.GetText(self.bCodePage))
  718.         self.OnIMECloseCandidateList()
  719.         self.OnIMECloseReadingWnd()
  720.         ime.DisableIME()
  721.         ime.DisableCaptureInput()
  722.         wndMgr.HideCursor(self.hWnd)
  723.  
  724.     def OnIMEChangeCodePage(self):
  725.         self.SetCodePage(ime.GetCodePage())
  726.  
  727.     def OnIMEOpenCandidateList(self):
  728.         self.candidateWindow.Show()
  729.         self.candidateWindow.Clear()
  730.         self.candidateWindow.Refresh()
  731.  
  732.         gx, gy = self.GetGlobalPosition()
  733.         self.candidateWindow.SetCandidatePosition(gx, gy, len(self.GetText()))
  734.  
  735.         return True
  736.  
  737.     def OnIMECloseCandidateList(self):
  738.         self.candidateWindow.Hide()
  739.         return True
  740.  
  741.     def OnIMEOpenReadingWnd(self):
  742.         gx, gy = self.GetGlobalPosition()
  743.         textlen = len(self.GetText())-2    
  744.         reading = ime.GetReading()
  745.         readinglen = len(reading)
  746.         self.readingWnd.SetReadingPosition( gx + textlen*6-24-readinglen*6, gy )
  747.         self.readingWnd.SetText(reading)
  748.         if ime.GetReadingError() == 0:
  749.             self.readingWnd.SetTextColor(0xffffffff)
  750.         else:
  751.             self.readingWnd.SetTextColor(0xffff0000)
  752.         self.readingWnd.SetSize(readinglen * 6 + 4, 19)
  753.         self.readingWnd.Show()
  754.         return True
  755.  
  756.     def OnIMECloseReadingWnd(self):
  757.         self.readingWnd.Hide()
  758.         return True
  759.  
  760.     def IsNumber(self, text) :
  761.         try :
  762.             int(text)
  763.             return True
  764.         except ValueError :
  765.             return False
  766.  
  767.     def IsIncludeCodePage(self, text) :
  768.         textLen = len(text)
  769.         idx = 0
  770.        
  771.         while(idx < textLen) :
  772.             n = text.find("@", idx)
  773.            
  774.             if n == -1 :
  775.                 break
  776.             elif n+4 < textLen and self.IsNumber(text[n+1:n+4]) == True:
  777.                 return True
  778.             else:
  779.                 idx = n + 1
  780.        
  781.         return False
  782.  
  783.     def OnIMEUpdate(self):
  784.         #MT-679 °³ÀÎ »óÁ¡ ŸÀÌÆ²ÀÇ CodePage À̽´
  785.         if self.UseCodePage == False and self.IsIncludeCodePage(ime.GetText(self.bCodePage)) == True :
  786.             ime.SetText("")
  787.        
  788.         snd.PlaySound("sound/ui/type.wav")
  789.         TextLine.SetText(self, ime.GetText(self.bCodePage))
  790.  
  791.     def OnIMETab(self):
  792.         if self.eventTab:
  793.             self.eventTab()
  794.             return True
  795.  
  796.         return False
  797.  
  798.     def OnIMEReturn(self):
  799.         snd.PlaySound("sound/ui/click.wav")
  800.         self.eventReturn()
  801.  
  802.         return True
  803.  
  804.     def OnPressEscapeKey(self):
  805.         self.eventEscape()
  806.         return True
  807.  
  808.     def OnKeyDown(self, key):
  809.         if app.DIK_F1 == key:
  810.             return False
  811.         if app.DIK_F2 == key:
  812.             return False
  813.         if app.DIK_F3 == key:
  814.             return False
  815.         if app.DIK_F4 == key:
  816.             return False
  817.         if app.DIK_LALT == key:
  818.             return False
  819.         if app.DIK_SYSRQ == key:
  820.             return False
  821.         if app.DIK_LCONTROL == key:
  822.             return False
  823.         if app.DIK_V == key:
  824.             if app.IsPressed(app.DIK_LCONTROL):
  825.                 ime.PasteTextFromClipBoard()
  826.  
  827.         return True
  828.  
  829.     def OnKeyUp(self, key):
  830.         if app.DIK_F1 == key:
  831.             return False
  832.         if app.DIK_F2 == key:
  833.             return False
  834.         if app.DIK_F3 == key:
  835.             return False
  836.         if app.DIK_F4 == key:
  837.             return False
  838.         if app.DIK_LALT == key:
  839.             return False
  840.         if app.DIK_SYSRQ == key:
  841.             return False
  842.         if app.DIK_LCONTROL == key:
  843.             return False
  844.  
  845.         return True
  846.  
  847.     def OnIMEKeyDown(self, key):       
  848.         # Left
  849.         if app.VK_LEFT == key:
  850.             ime.MoveLeft()
  851.             return True
  852.         # Right
  853.         if app.VK_RIGHT == key:
  854.             ime.MoveRight()
  855.             return True
  856.  
  857.         # Home
  858.         if app.VK_HOME == key:
  859.             ime.MoveHome()
  860.             return True
  861.         # End
  862.         if app.VK_END == key:
  863.             ime.MoveEnd()
  864.             return True
  865.  
  866.         # Delete
  867.         if app.VK_DELETE == key:
  868.             ime.Delete()
  869.             TextLine.SetText(self, ime.GetText(self.bCodePage))
  870.             return True
  871.            
  872.         return True
  873.  
  874.     #def OnMouseLeftButtonDown(self):
  875.     #   self.SetFocus()
  876.     def OnMouseLeftButtonDown(self):
  877.         if False == self.IsIn():
  878.             return False
  879.  
  880.         self.SetFocus()
  881.         PixelPosition = wndMgr.GetCursorPosition(self.hWnd)
  882.         ime.SetCursorPosition(PixelPosition)
  883.  
  884. class MarkBox(Window):
  885.     def __init__(self, layer = "UI"):
  886.         Window.__init__(self, layer)
  887.  
  888.     def __del__(self):
  889.         Window.__del__(self)
  890.  
  891.     def RegisterWindow(self, layer):
  892.         self.hWnd = wndMgr.RegisterMarkBox(self, layer)
  893.  
  894.     def Load(self):
  895.         wndMgr.MarkBox_Load(self.hWnd)
  896.  
  897.     def SetScale(self, scale):
  898.         wndMgr.MarkBox_SetScale(self.hWnd, scale)
  899.  
  900.     def SetIndex(self, guildID):
  901.         MarkID = guild.GuildIDToMarkID(guildID)
  902.         wndMgr.MarkBox_SetImageFilename(self.hWnd, guild.GetMarkImageFilenameByMarkID(MarkID))
  903.         wndMgr.MarkBox_SetIndex(self.hWnd, guild.GetMarkIndexByMarkID(MarkID))
  904.  
  905.     def SetAlpha(self, alpha):
  906.         wndMgr.MarkBox_SetDiffuseColor(self.hWnd, 1.0, 1.0, 1.0, alpha)
  907.  
  908. class ImageBox(Window):
  909.     def __init__(self, layer = "UI"):
  910.         Window.__init__(self, layer)
  911.  
  912.         self.eventDict={}
  913.         self.eventFunc = {"mouse_click" : None, "mouse_over_in" : None, "mouse_over_out" : None}
  914.         self.eventArgs = {"mouse_click" : None, "mouse_over_in" : None, "mouse_over_out" : None}
  915.  
  916.     def __del__(self):
  917.         Window.__del__(self)
  918.         self.eventFunc = None
  919.         self.eventArgs = None
  920.  
  921.     def RegisterWindow(self, layer):
  922.         self.hWnd = wndMgr.RegisterImageBox(self, layer)
  923.  
  924.     def LoadImage(self, imageName):
  925.         self.name=imageName
  926.         wndMgr.LoadImage(self.hWnd, imageName)
  927.  
  928.         if len(self.eventDict)!=0:
  929.             print "LOAD IMAGE", self, self.eventDict
  930.  
  931.     def SetAlpha(self, alpha):
  932.         wndMgr.SetDiffuseColor(self.hWnd, 1.0, 1.0, 1.0, alpha)
  933.  
  934.     def GetWidth(self):
  935.         return wndMgr.GetWidth(self.hWnd)
  936.  
  937.     def GetHeight(self):
  938.         return wndMgr.GetHeight(self.hWnd)
  939.  
  940.     def OnMouseOverIn(self):
  941.         try:
  942.             self.eventDict["MOUSE_OVER_IN"]()
  943.         except KeyError:
  944.             pass
  945.  
  946.     def OnMouseOverOut(self):
  947.         try:
  948.             self.eventDict["MOUSE_OVER_OUT"]()
  949.         except KeyError:
  950.             pass
  951.  
  952.     def SAFE_SetStringEvent(self, event, func):
  953.         self.eventDict[event]=__mem_func__(func)
  954.  
  955.     def SetEvent(self, func, *args) :
  956.         result = self.eventFunc.has_key(args[0])       
  957.         if result :
  958.             self.eventFunc[args[0]] = func
  959.             self.eventArgs[args[0]] = args
  960.         else :
  961.             print "[ERROR] ui.py SetEvent, Can`t Find has_key : %s" % args[0]
  962.  
  963.     def OnMouseLeftButtonUp(self) :
  964.         if self.eventFunc["mouse_click"] :
  965.             apply(self.eventFunc["mouse_click"], self.eventArgs["mouse_click"])
  966.  
  967.     def OnMouseOverIn(self) :
  968.         if self.eventFunc["mouse_over_in"] :
  969.             apply(self.eventFunc["mouse_over_in"], self.eventArgs["mouse_over_in"])
  970.         else:
  971.             try:
  972.                 self.eventDict["MOUSE_OVER_IN"]()
  973.             except KeyError:
  974.                 pass
  975.  
  976.     def OnMouseOverOut(self) :
  977.         if self.eventFunc["mouse_over_out"] :
  978.             apply(self.eventFunc["mouse_over_out"], self.eventArgs["mouse_over_out"])
  979.         else :
  980.             try:
  981.                 self.eventDict["MOUSE_OVER_OUT"]()
  982.             except KeyError:
  983.                 pass
  984.                
  985.                
  986.     if app.ENABLE_GROWTH_PET_SYSTEM or app.ENABLE_PRIVATESHOP_SEARCH_SYSTEM:
  987.         def LeftRightReverse(self):
  988.             wndMgr.LeftRightReverseImageBox(self.hWnd)
  989.            
  990.     if app.ENABLE_12ZI:
  991.         def SetCoolTime(self, time):
  992.             wndMgr.SetCoolTimeImageBox(self.hWnd, time)
  993.        
  994.         def SetStartCoolTime(self, time):
  995.             wndMgr.SetStartCoolTimeImageBox(self.hWnd, time)
  996.  
  997. class ExpandedImageBox(ImageBox):
  998.     def __init__(self, layer = "UI"):
  999.         ImageBox.__init__(self, layer)
  1000.  
  1001.     def __del__(self):
  1002.         ImageBox.__del__(self)
  1003.  
  1004.     def RegisterWindow(self, layer):
  1005.         self.hWnd = wndMgr.RegisterExpandedImageBox(self, layer)
  1006.  
  1007.     def SetScale(self, xScale, yScale):
  1008.         wndMgr.SetScale(self.hWnd, xScale, yScale)
  1009.  
  1010.     def SetOrigin(self, x, y):
  1011.         wndMgr.SetOrigin(self.hWnd, x, y)
  1012.  
  1013.     def SetRotation(self, rotation):
  1014.         wndMgr.SetRotation(self.hWnd, rotation)
  1015.  
  1016.     def SetRenderingMode(self, mode):
  1017.         wndMgr.SetRenderingMode(self.hWnd, mode)
  1018.  
  1019.     # [0.0, 1.0] »çÀÌÀÇ °ª¸¸Å­ ÆÛ¼¾Æ®·Î ±×¸®Áö ¾Ê´Â´Ù.
  1020.     def SetRenderingRect(self, left, top, right, bottom):
  1021.         wndMgr.SetRenderingRect(self.hWnd, left, top, right, bottom)
  1022.  
  1023.     def SetPercentage(self, curValue, maxValue):
  1024.         if maxValue:
  1025.             self.SetRenderingRect(0.0, 0.0, -1.0 + float(curValue) / float(maxValue), 0.0)
  1026.         else:
  1027.             self.SetRenderingRect(0.0, 0.0, 0.0, 0.0)
  1028.  
  1029.     def GetWidth(self):
  1030.         return wndMgr.GetWindowWidth(self.hWnd)
  1031.  
  1032.     def GetHeight(self):
  1033.         return wndMgr.GetWindowHeight(self.hWnd)
  1034.  
  1035. class AniImageBox(Window):
  1036.     def __init__(self, layer = "UI"):
  1037.         Window.__init__(self, layer)
  1038.         self.end_frame_event = None
  1039.         self.key_frame_event = None
  1040.        
  1041.         if app.ENABLE_MINI_GAME_YUTNORI:
  1042.             self.eventFunc = {"mouse_click" : None, "mouse_over_in" : None, "mouse_over_out" : None}
  1043.             self.eventArgs = {"mouse_click" : None, "mouse_over_in" : None, "mouse_over_out" : None}
  1044.            
  1045.     def __del__(self):
  1046.         Window.__del__(self)
  1047.         self.end_frame_event = None
  1048.         self.key_frame_event = None
  1049.        
  1050.         if app.ENABLE_MINI_GAME_YUTNORI:
  1051.             self.eventFunc = None
  1052.             self.eventArgs = None
  1053.  
  1054.     def RegisterWindow(self, layer):
  1055.         self.hWnd = wndMgr.RegisterAniImageBox(self, layer)
  1056.  
  1057.     def SetDelay(self, delay):
  1058.         wndMgr.SetDelay(self.hWnd, delay)
  1059.  
  1060.     def AppendImage(self, filename):
  1061.         wndMgr.AppendImage(self.hWnd, filename)
  1062.  
  1063.     def SetPercentage(self, curValue, maxValue):
  1064.         wndMgr.SetRenderingRect(self.hWnd, 0.0, 0.0, -1.0 + float(curValue) / float(maxValue), 0.0)
  1065.  
  1066.     def OnEndFrame(self):
  1067.         if self.end_frame_event:
  1068.             self.end_frame_event()
  1069.                    
  1070.     if app.ENABLE_GROWTH_PET_SYSTEM:   
  1071.         def SetPercentageWithScale(self, curValue, maxValue):
  1072.             wndMgr.SetRenderingRectWithScale(self.hWnd, 0.0, 0.0, -1.0 + float(curValue) / float(maxValue), 0.0)
  1073.            
  1074.     def SetScale(self, xScale, yScale):
  1075.         wndMgr.SetAniImgScale(self.hWnd, xScale, yScale)
  1076.            
  1077.     def SetEndFrameEvent(self, event):
  1078.         self.end_frame_event = event
  1079.        
  1080.     def ResetFrame(self):
  1081.         wndMgr.ResetFrame(self.hWnd)
  1082.        
  1083.     def OnKeyFrame(self, cur_frame):
  1084.         if self.key_frame_event:
  1085.             self.key_frame_event(cur_frame)
  1086.            
  1087.     def SetKeyFrameEvent(self, event):
  1088.         self.key_frame_event = event
  1089.        
  1090.     if app.ENABLE_MINI_GAME_YUTNORI:
  1091.         def SetEvent(self, func, *args) :
  1092.             result = self.eventFunc.has_key(args[0])       
  1093.             if result:
  1094.                 self.eventFunc[args[0]] = func
  1095.                 self.eventArgs[args[0]] = args
  1096.             else :
  1097.                 print "[ERROR] ui.py SetEvent, Can`t Find has_key : %s" % args[0]
  1098.  
  1099.         def OnMouseLeftButtonUp(self) :
  1100.             if self.eventFunc["mouse_click"] :
  1101.                 apply(self.eventFunc["mouse_click"], self.eventArgs["mouse_click"])
  1102.  
  1103.         def OnMouseOverIn(self) :
  1104.             if self.eventFunc["mouse_over_in"] :
  1105.                 apply(self.eventFunc["mouse_over_in"], self.eventArgs["mouse_over_in"])
  1106.  
  1107.         def OnMouseOverOut(self) :
  1108.             if self.eventFunc["mouse_over_out"] :
  1109.                 apply(self.eventFunc["mouse_over_out"], self.eventArgs["mouse_over_out"])
  1110.                
  1111.            
  1112. class MoveImageBox(ImageBox):
  1113.     def __init__(self, layer = "UI"):
  1114.         ImageBox.__init__(self, layer)
  1115.         self.end_move_event = None
  1116.  
  1117.     def __del__(self):
  1118.         ImageBox.__del__(self)
  1119.         self.end_move_event = None
  1120.  
  1121.     def RegisterWindow(self, layer):
  1122.         self.hWnd = wndMgr.RegisterMoveImageBox(self, layer)
  1123.        
  1124.     def MoveStart(self):
  1125.         wndMgr.MoveStart(self.hWnd)
  1126.     def MoveStop(self):
  1127.         wndMgr.MoveStop(self.hWnd)
  1128.     def GetMove(self):
  1129.         return wndMgr.GetMove(self.hWnd)
  1130.        
  1131.     def SetMovePosition(self, dst_x, dst_y):
  1132.         wndMgr.SetMovePosition(self.hWnd, dst_x, dst_y)
  1133.        
  1134.     def SetMoveSpeed(self, speed):
  1135.         wndMgr.SetMoveSpeed(self.hWnd, speed)
  1136.    
  1137.     def OnEndMove(self):
  1138.         if self.end_move_event:
  1139.             self.end_move_event()
  1140.  
  1141.     def SetEndMoveEvent(self, event):
  1142.         self.end_move_event = event
  1143.  
  1144. if app.ENABLE_MINI_GAME_YUTNORI:
  1145.     class MoveScaleImageBox(MoveImageBox):
  1146.         def __init__(self, layer = "UI"):
  1147.             MoveImageBox.__init__(self, layer)
  1148.  
  1149.         def __del__(self):
  1150.             MoveImageBox.__del__(self)
  1151.  
  1152.         def RegisterWindow(self, layer):
  1153.             self.hWnd = wndMgr.RegisterMoveScaleImageBox(self, layer)
  1154.            
  1155.         def SetMaxScale(self, scale):
  1156.             wndMgr.SetMaxScale(self.hWnd, scale)
  1157.            
  1158.         def SetMaxScaleRate(self, pivot):
  1159.             wndMgr.SetMaxScaleRate(self.hWnd, pivot)
  1160.            
  1161.         def SetScalePivotCenter(self, flag):
  1162.             wndMgr.SetScalePivotCenter(self.hWnd, flag)
  1163.                
  1164. class Button(Window):
  1165.     def __init__(self, layer = "UI"):
  1166.         Window.__init__(self, layer)
  1167.  
  1168.         self.eventFunc = None
  1169.         self.eventArgs = None
  1170.  
  1171.         self.ButtonText = None
  1172.         self.ToolTipText = None
  1173.  
  1174.         self.TextChild = []
  1175.  
  1176.         if app.ENABLE_PARTY_MATCH or app.ENABLE_DETAILS_UI or app.ENABLE_USER_SITUATION_NOTICE or app.ENABLE_MINI_GAME_YUTNORI:
  1177.             self.overFunc = None
  1178.             self.overArgs = None
  1179.             self.overOutFunc = None
  1180.             self.overOutArgs = None
  1181.            
  1182.         self.showtooltipevent = None
  1183.         self.showtooltiparg = None
  1184.         self.hidetooltipevent = None
  1185.         self.hidetooltiparg = None
  1186.  
  1187.     def __del__(self):
  1188.         Window.__del__(self)
  1189.  
  1190.         self.eventFunc = None
  1191.         self.eventArgs = None
  1192.  
  1193.         if app.ENABLE_PARTY_MATCH or app.ENABLE_DETAILS_UI or app.ENABLE_USER_SITUATION_NOTICE or app.ENABLE_MINI_GAME_YUTNORI:
  1194.             self.overFunc = None
  1195.             self.overArgs = None
  1196.             self.overOutFunc = None
  1197.             self.overOutArgs = None
  1198.  
  1199.     def RegisterWindow(self, layer):
  1200.         self.hWnd = wndMgr.RegisterButton(self, layer)
  1201.  
  1202.     def SetUpVisual(self, filename):
  1203.         wndMgr.SetUpVisual(self.hWnd, filename)
  1204.  
  1205.     def SetOverVisual(self, filename):
  1206.         wndMgr.SetOverVisual(self.hWnd, filename)
  1207.  
  1208.     def SetDownVisual(self, filename):
  1209.         wndMgr.SetDownVisual(self.hWnd, filename)
  1210.  
  1211.     def SetDisableVisual(self, filename):
  1212.         wndMgr.SetDisableVisual(self.hWnd, filename)
  1213.  
  1214.     def GetUpVisualFileName(self):
  1215.         return wndMgr.GetUpVisualFileName(self.hWnd)
  1216.  
  1217.     def GetOverVisualFileName(self):
  1218.         return wndMgr.GetOverVisualFileName(self.hWnd)
  1219.  
  1220.     def GetDownVisualFileName(self):
  1221.         return wndMgr.GetDownVisualFileName(self.hWnd)
  1222.  
  1223.     def Flash(self):
  1224.         wndMgr.Flash(self.hWnd)
  1225.        
  1226.     def EnableFlash(self):
  1227.         wndMgr.EnableFlash(self.hWnd)
  1228.        
  1229.     def DisableFlash(self):
  1230.         wndMgr.DisableFlash(self.hWnd)
  1231.  
  1232.     def Enable(self):
  1233.         wndMgr.Enable(self.hWnd)
  1234.  
  1235.     def Disable(self):
  1236.         wndMgr.Disable(self.hWnd)
  1237.  
  1238.     def Down(self):
  1239.         wndMgr.Down(self.hWnd)
  1240.  
  1241.     def SetUp(self):
  1242.         wndMgr.SetUp(self.hWnd)
  1243.  
  1244.     def SAFE_SetEvent(self, func, *args):
  1245.         self.eventFunc = __mem_func__(func)
  1246.         self.eventArgs = args
  1247.        
  1248.     def SetEvent(self, func, *args):
  1249.         self.eventFunc = func
  1250.         self.eventArgs = args
  1251.  
  1252.     def Over(self):
  1253.         wndMgr.Over(self.hWnd)
  1254.  
  1255.     def LeftRightReverse(self) :
  1256.         wndMgr.LeftRightReverse(self.hWnd)
  1257.  
  1258.     def SetTextColor(self, color):
  1259.         if not self.ButtonText:
  1260.             return
  1261.         self.ButtonText.SetPackedFontColor(color)
  1262.        
  1263.     if app.ENABLE_PRIVATESHOP_SEARCH_SYSTEM:
  1264.  
  1265.         def SetAlpha(self, alpha):
  1266.             wndMgr.SetButtonDiffuseColor(self.hWnd, 1.0, 1.0, 1.0, alpha)
  1267.  
  1268.         def GetText(self):
  1269.             if self.ButtonText:
  1270.                 return self.ButtonText.GetText()
  1271.             else:
  1272.                 return ""
  1273.                
  1274.         def IsDIsable(self):
  1275.                 return wndMgr.IsDIsable(self.hWnd)
  1276.  
  1277.     def SetText(self, text, height = 4):
  1278.  
  1279.         if not self.ButtonText:
  1280.             textLine = TextLine()
  1281.             textLine.SetParent(self)
  1282.             textLine.SetPosition(self.GetWidth()/2, self.GetHeight()/2)
  1283.             textLine.SetVerticalAlignCenter()
  1284.             textLine.SetHorizontalAlignCenter()
  1285.             textLine.Show()
  1286.             self.ButtonText = textLine
  1287.  
  1288.         self.ButtonText.SetText(text)
  1289.  
  1290.     if app.ENABLE_WEB_LINKED_BANNER or app.ENABLE_MINI_GAME_YUTNORI:
  1291.         def SetAutoSizeText(self, text):
  1292.             if not self.ButtonText:
  1293.                 textLine = TextLine()
  1294.                 textLine.SetParent(self)
  1295.                 textLine.SetVerticalAlignCenter()
  1296.                 textLine.SetHorizontalAlignCenter()
  1297.                 textLine.Show()
  1298.                 self.ButtonText = textLine
  1299.  
  1300.             self.ButtonText.SetText(text)
  1301.            
  1302.             imageWidth = self.GetButtonImageWidth()
  1303.             imageHeight = self.GetButtonImageHeight()
  1304.            
  1305.             if imageWidth==0 or imageHeight==0:
  1306.                 return
  1307.            
  1308.             (textWidth, textHeight)=self.ButtonText.GetTextSize()
  1309.             textWidth += imageWidth/5
  1310.             textHeight += imageHeight/10
  1311.            
  1312.             curWidth = self.GetWidth()
  1313.             curHeight = self.GetHeight()
  1314.            
  1315.             if curWidth < textWidth:
  1316.                 curWidth = textWidth
  1317.                
  1318.             if curHeight < textHeight:
  1319.                 curHeight = textHeight
  1320.            
  1321.             self.SetSize(curWidth, curHeight)
  1322.             self.SetButtonScale(curWidth*1.0/imageWidth, curHeight*1.0/imageHeight)
  1323.             self.ButtonText.SetPosition(self.GetWidth()/2, self.GetHeight()/2)
  1324.    
  1325.     if app.ENABLE_USER_SITUATION_NOTICE:
  1326.         def SetTextAddPos(self, text, x_add = 0, y_add = 0, height = 4):
  1327.             if not self.ButtonText:
  1328.                 textLine = TextLine()
  1329.                 textLine.SetParent(self)
  1330.                 textLine.SetPosition(self.GetWidth()/2 + x_add, self.GetHeight()/2 + y_add)
  1331.                 textLine.SetVerticalAlignCenter()
  1332.                 textLine.SetHorizontalAlignCenter()
  1333.                 textLine.Show()
  1334.                 self.ButtonText = textLine
  1335.             self.ButtonText.SetText(text)
  1336.            
  1337.     def AppendTextLineAllClear(self) :
  1338.         self.TextChild = []
  1339.  
  1340.     def SetAppendTextChangeText(self, idx, text):
  1341.         if not len(self.TextChild) :
  1342.             return
  1343.  
  1344.         self.TextChild[idx].SetText(text)
  1345.  
  1346.     def SetAppendTextColor(self, idx, color) :
  1347.         if not len(self.TextChild) :
  1348.             return
  1349.  
  1350.         self.TextChild[idx].SetPackedFontColor(color)
  1351.  
  1352.     def AppendTextLine(self, text
  1353.         , font_size = localeInfo.UI_DEF_FONT
  1354.         , font_color = grp.GenerateColor(0.7607, 0.7607, 0.7607, 1.0)
  1355.         , text_sort = "center"
  1356.         , pos_x = None
  1357.         , pos_y = None) :
  1358.         textLine = TextLine()
  1359.         textLine.SetParent(self)
  1360.         textLine.SetFontName(font_size)
  1361.         textLine.SetPackedFontColor(font_color)
  1362.         textLine.SetText(text)
  1363.         textLine.Show()
  1364.  
  1365.         if not pos_x and not pos_y :
  1366.             textLine.SetPosition(self.GetWidth()/2, self.GetHeight()/2)
  1367.         else :
  1368.             textLine.SetPosition(pos_x, pos_y)
  1369.  
  1370.         textLine.SetVerticalAlignCenter()
  1371.         if "center" == text_sort :
  1372.             textLine.SetHorizontalAlignCenter()
  1373.         elif "right" == text_sort :
  1374.             textLine.SetHorizontalAlignRight()
  1375.         elif "left" ==  text_sort :
  1376.             textLine.SetHorizontalAlignLeft()
  1377.            
  1378.         self.TextChild.append(textLine)
  1379.  
  1380.     def SetFormToolTipText(self, type, text, x, y):
  1381.         if not self.ToolTipText:       
  1382.             toolTip=createToolTipWindowDict[type]()
  1383.             toolTip.SetParent(self)
  1384.             toolTip.SetSize(0, 0)
  1385.             toolTip.SetHorizontalAlignCenter()
  1386.             toolTip.SetOutline()
  1387.             toolTip.Hide()
  1388.             toolTip.SetPosition(x + self.GetWidth()/2, y)
  1389.             self.ToolTipText=toolTip
  1390.  
  1391.         self.ToolTipText.SetText(text)
  1392.  
  1393.     def SetToolTipWindow(self, toolTip):       
  1394.         self.ToolTipText=toolTip       
  1395.         self.ToolTipText.SetParentProxy(self)
  1396.  
  1397.     def SetToolTipText(self, text, x=0, y = -19):
  1398.         self.SetFormToolTipText("TEXT", text, x, y)
  1399.  
  1400.     def CallEvent(self):
  1401.         snd.PlaySound("sound/ui/click.wav")
  1402.  
  1403.         if self.eventFunc:
  1404.             apply(self.eventFunc, self.eventArgs)
  1405.  
  1406.     def ShowToolTip(self):
  1407.         if self.ToolTipText:
  1408.             self.ToolTipText.Show()
  1409.  
  1410.         if self.showtooltipevent:
  1411.             apply(self.showtooltipevent, self.showtooltiparg)
  1412.  
  1413.     def HideToolTip(self):
  1414.         if self.ToolTipText:
  1415.             self.ToolTipText.Hide()
  1416.  
  1417.         if self.hidetooltipevent:
  1418.             apply(self.hidetooltipevent, self.hidetooltiparg)
  1419.        
  1420.     def SetShowToolTipEvent(self, func, *args):
  1421.         self.showtooltipevent = func
  1422.         self.showtooltiparg = args
  1423.        
  1424.     def SetHideToolTipEvent(self, func, *args):
  1425.         self.hidetooltipevent = func
  1426.         self.hidetooltiparg = args
  1427.            
  1428.     def IsDown(self):
  1429.         return wndMgr.IsDown(self.hWnd)
  1430.    
  1431.     if app.ENABLE_MONSTER_CARD:
  1432.         def SetAlwaysToolTip(self, bFlag):
  1433.             wndMgr.SetAlwaysToolTip(self.hWnd, bFlag)
  1434.            
  1435.     if app.ENABLE_PARTY_MATCH or app.ENABLE_DETAILS_UI or app.ENABLE_USER_SITUATION_NOTICE or app.ENABLE_MINI_GAME_YUTNORI:
  1436.         def OnMouseOverIn(self):
  1437.             if self.overFunc:
  1438.                 apply(self.overFunc, self.overArgs )
  1439.         def OnMouseOverOut(self):
  1440.             if self.overOutFunc:
  1441.                 apply(self.overOutFunc, self.overOutArgs )
  1442.         def SetOverEvent(self, func, *args):
  1443.             self.overFunc = func
  1444.             self.overArgs = args
  1445.         def SetOverOutEvent(self, func, *args):
  1446.             self.overOutFunc = func
  1447.             self.overOutArgs = args
  1448.        
  1449.     if app.ENABLE_WEB_LINKED_BANNER or app.ENABLE_MINI_GAME_YUTNORI:
  1450.         def SetButtonScale(self, xScale, yScale):
  1451.             wndMgr.SetButtonScale(self.hWnd, xScale, yScale)
  1452.        
  1453.         def GetButtonImageWidth(self):
  1454.             return wndMgr.GetButtonImageWidth(self.hWnd)
  1455.        
  1456.         def GetButtonImageHeight(self):
  1457.             return wndMgr.GetButtonImageHeight(self.hWnd)
  1458.        
  1459. class RadioButton(Button):
  1460.     def __init__(self):
  1461.         Button.__init__(self)
  1462.  
  1463.     def __del__(self):
  1464.         Button.__del__(self)
  1465.  
  1466.     def RegisterWindow(self, layer):
  1467.         self.hWnd = wndMgr.RegisterRadioButton(self, layer)
  1468.  
  1469. class RadioButtonGroup:
  1470.     def __init__(self):
  1471.         self.buttonGroup = []
  1472.         self.selectedBtnIdx = -1
  1473.    
  1474.     def __del__(self):
  1475.         self.buttonGroup = []
  1476.         self.selectedBtnIdx = -1
  1477.    
  1478.     def Show(self):
  1479.         for (button, selectEvent, unselectEvent) in self.buttonGroup:
  1480.             button.Show()
  1481.    
  1482.     def Hide(self):
  1483.         for (button, selectEvent, unselectEvent) in self.buttonGroup:
  1484.             button.Hide()
  1485.    
  1486.     def SetText(self, idx, text):
  1487.         if idx >= len(self.buttonGroup):
  1488.             return
  1489.         (button, selectEvent, unselectEvent) = self.buttonGroup[idx]
  1490.         button.SetText(text)
  1491.    
  1492.     def OnClick(self, btnIdx):
  1493.         if btnIdx == self.selectedBtnIdx:
  1494.             return
  1495.         (button, selectEvent, unselectEvent) = self.buttonGroup[self.selectedBtnIdx]
  1496.         if unselectEvent:
  1497.             unselectEvent(self.selectedBtnIdx)
  1498.         button.SetUp()
  1499.        
  1500.         self.selectedBtnIdx = btnIdx
  1501.         (button, selectEvent, unselectEvent) = self.buttonGroup[btnIdx]
  1502.         if selectEvent:
  1503.             selectEvent(btnIdx)
  1504.  
  1505.         button.Down()
  1506.        
  1507.     def AddButton(self, button, selectEvent, unselectEvent):
  1508.         i = len(self.buttonGroup)
  1509.         button.SetEvent(__mem_func__(self.OnClick),i)
  1510.         self.buttonGroup.append([button, selectEvent, unselectEvent])
  1511.         button.SetUp()
  1512.  
  1513.     def Create(rawButtonGroup):
  1514.         radioGroup = RadioButtonGroup()
  1515.         for (button, selectEvent, unselectEvent) in rawButtonGroup:
  1516.             radioGroup.AddButton(button, selectEvent, unselectEvent)
  1517.        
  1518.         radioGroup.OnClick(0)
  1519.        
  1520.         return radioGroup
  1521.        
  1522.     Create=staticmethod(Create)
  1523.  
  1524. class ToggleButton(Button):
  1525.     def __init__(self):
  1526.         Button.__init__(self)
  1527.  
  1528.         self.eventUp = None
  1529.         self.eventDown = None
  1530.  
  1531.         self.eventUpArgs = None
  1532.         self.eventDownArgs = None
  1533.  
  1534.     def __del__(self):
  1535.         Button.__del__(self)
  1536.  
  1537.         self.eventUp = None
  1538.         self.eventDown = None
  1539.  
  1540.     def SetToggleUpEvent(self, event, *args):
  1541.         self.eventUp = event
  1542.         self.eventUpArgs = args
  1543.  
  1544.     def SetToggleDownEvent(self, event, *args):
  1545.         self.eventDown = event
  1546.         self.eventDownArgs = args
  1547.  
  1548.     def RegisterWindow(self, layer):
  1549.         self.hWnd = wndMgr.RegisterToggleButton(self, layer)
  1550.  
  1551.     def OnToggleUp(self):
  1552.         if self.eventUp:
  1553.             if self.eventUpArgs:
  1554.                 apply(self.eventUp, self.eventUpArgs)
  1555.             else:
  1556.                 self.eventUp()
  1557.  
  1558.     def OnToggleDown(self):
  1559.         if self.eventDown:
  1560.             if self.eventDownArgs:
  1561.                 apply(self.eventDown, self.eventDownArgs)
  1562.             else:
  1563.                 self.eventDown()
  1564.  
  1565. class DragButton(Button):
  1566.     def __init__(self):
  1567.         Button.__init__(self)
  1568.         self.AddFlag("movable")
  1569.  
  1570.         self.callbackEnable = True
  1571.         self.eventMove = lambda: None
  1572.  
  1573.     def __del__(self):
  1574.         Button.__del__(self)
  1575.  
  1576.         self.eventMove = lambda: None
  1577.  
  1578.     def RegisterWindow(self, layer):
  1579.         self.hWnd = wndMgr.RegisterDragButton(self, layer)
  1580.  
  1581.     def SetMoveEvent(self, event):
  1582.         self.eventMove = event
  1583.  
  1584.     def SetRestrictMovementArea(self, x, y, width, height):
  1585.         wndMgr.SetRestrictMovementArea(self.hWnd, x, y, width, height)
  1586.  
  1587.     def TurnOnCallBack(self):
  1588.         self.callbackEnable = True
  1589.  
  1590.     def TurnOffCallBack(self):
  1591.         self.callbackEnable = False
  1592.  
  1593.     def OnMove(self):
  1594.         if self.callbackEnable:
  1595.             self.eventMove()
  1596.  
  1597. class NumberLine(Window):
  1598.  
  1599.     def __init__(self, layer = "UI"):
  1600.         Window.__init__(self, layer)
  1601.  
  1602.     def __del__(self):
  1603.         Window.__del__(self)
  1604.  
  1605.     def RegisterWindow(self, layer):
  1606.         self.hWnd = wndMgr.RegisterNumberLine(self, layer)
  1607.  
  1608.     def SetHorizontalAlignCenter(self):
  1609.         wndMgr.SetNumberHorizontalAlignCenter(self.hWnd)
  1610.  
  1611.     def SetHorizontalAlignRight(self):
  1612.         wndMgr.SetNumberHorizontalAlignRight(self.hWnd)
  1613.  
  1614.     def SetPath(self, path):
  1615.         wndMgr.SetPath(self.hWnd, path)
  1616.  
  1617.     def SetNumber(self, number):
  1618.         wndMgr.SetNumber(self.hWnd, number)
  1619.        
  1620.     if app.ENABLE_CHEQUE_SYSTEM:
  1621.         def SetNumber(self, number, r = 1.0, g = 1.0, b = 1.0):
  1622.             wndMgr.SetNumber(self.hWnd, number, r, g, b)
  1623.     else:
  1624.         def SetNumber(self, number):
  1625.             wndMgr.SetNumber(self.hWnd, number)
  1626.  
  1627. ###################################################################################################
  1628. ## PythonScript Element
  1629. ###################################################################################################
  1630.  
  1631. class Box(Window):
  1632.  
  1633.     def RegisterWindow(self, layer):
  1634.         self.hWnd = wndMgr.RegisterBox(self, layer)
  1635.  
  1636.     def SetColor(self, color):
  1637.         wndMgr.SetColor(self.hWnd, color)
  1638.  
  1639. class Bar(Window):
  1640.  
  1641.     def RegisterWindow(self, layer):
  1642.         self.hWnd = wndMgr.RegisterBar(self, layer)
  1643.  
  1644.     def SetColor(self, color):
  1645.         wndMgr.SetColor(self.hWnd, color)
  1646.  
  1647. class Line(Window):
  1648.  
  1649.     def RegisterWindow(self, layer):
  1650.         self.hWnd = wndMgr.RegisterLine(self, layer)
  1651.  
  1652.     def SetColor(self, color):
  1653.         wndMgr.SetColor(self.hWnd, color)
  1654.  
  1655. class SlotBar(Window):
  1656.  
  1657.     def __init__(self):
  1658.         Window.__init__(self)
  1659.  
  1660.     def RegisterWindow(self, layer):
  1661.         self.hWnd = wndMgr.RegisterBar3D(self, layer)
  1662.  
  1663. ## Same with SlotBar
  1664. class Bar3D(Window):
  1665.  
  1666.     def __init__(self):
  1667.         Window.__init__(self)
  1668.  
  1669.     def RegisterWindow(self, layer):
  1670.         self.hWnd = wndMgr.RegisterBar3D(self, layer)
  1671.  
  1672.     def SetColor(self, left, right, center):
  1673.         wndMgr.SetColor(self.hWnd, left, right, center)
  1674.  
  1675. class SlotWindow(Window):
  1676.  
  1677.     def __init__(self):
  1678.         Window.__init__(self)
  1679.  
  1680.         self.StartIndex = 0
  1681.  
  1682.         self.eventSelectEmptySlot = None
  1683.         self.eventSelectItemSlot = None
  1684.         self.eventUnselectEmptySlot = None
  1685.         self.eventUnselectItemSlot = None
  1686.         self.eventUseSlot = None
  1687.         self.eventOverInItem = None
  1688.         self.eventOverOutItem = None
  1689.         self.eventPressedSlotButton = None
  1690.        
  1691.         if app.ENABLE_EXTEND_INVEN_SYSTEM:
  1692.             self.eventSelectEmptySlotWindow  = None
  1693.             self.eventSelectItemSlotWindow   = None
  1694.             self.eventUseSlotWindow          = None
  1695.             self.eventOverInItemSlotWindow   = None
  1696.             self.eventUnselectItemSlotWindow = None
  1697.  
  1698.         self.eventSelectItemSlotArgs = None
  1699.         self.eventOverInItemArgs = None
  1700.  
  1701.     def __del__(self):
  1702.         Window.__del__(self)
  1703.  
  1704.         self.eventSelectEmptySlot = None
  1705.         self.eventSelectItemSlot = None
  1706.         self.eventUnselectEmptySlot = None
  1707.         self.eventUnselectItemSlot = None
  1708.         self.eventUseSlot = None
  1709.         self.eventOverInItem = None
  1710.         self.eventOverOutItem = None
  1711.         self.eventPressedSlotButton = None
  1712.        
  1713.         if app.ENABLE_EXTEND_INVEN_SYSTEM:
  1714.             self.eventSelectEmptySlotWindow  = None
  1715.             self.eventSelectItemSlotWindow   = None
  1716.             self.eventUseSlotWindow          = None
  1717.             self.eventOverInItemSlotWindow   = None
  1718.             self.eventUnselectItemSlotWindow = None
  1719.  
  1720.         self.eventSelectItemSlotArgs = None
  1721.         self.eventOverInItemArgs = None
  1722.  
  1723.     def RegisterWindow(self, layer):
  1724.         self.hWnd = wndMgr.RegisterSlotWindow(self, layer)
  1725.  
  1726.     def SetSlotStyle(self, style):
  1727.         wndMgr.SetSlotStyle(self.hWnd, style)
  1728.  
  1729.     def HasSlot(self, slotIndex):
  1730.         return wndMgr.HasSlot(self.hWnd, slotIndex)
  1731.  
  1732.     def SetSlotScale(self, xScale, yScale):
  1733.         wndMgr.SetSlotScale(self.hWnd, xScale, yScale)
  1734.        
  1735.     def SetSlotBaseImage(self, imageFileName, r, g, b, a):
  1736.         wndMgr.SetSlotBaseImage(self.hWnd, imageFileName, r, g, b, a)
  1737.        
  1738.     def SetBaseImageScale(self, xScale, yScale):
  1739.         wndMgr.SetBaseImageScale(self.hWnd, xScale, yScale)
  1740.  
  1741.     def SetCoverButton(self,\
  1742.                         slotIndex,\
  1743.                         upName="d:/ymir work/ui/public/slot_cover_button_01.sub",\
  1744.                         overName="d:/ymir work/ui/public/slot_cover_button_02.sub",\
  1745.                         downName="d:/ymir work/ui/public/slot_cover_button_03.sub",\
  1746.                         disableName="d:/ymir work/ui/public/slot_cover_button_04.sub",\
  1747.                         LeftButtonEnable = False,\
  1748.                         RightButtonEnable = True):
  1749.         wndMgr.SetCoverButton(self.hWnd, slotIndex, upName, overName, downName, disableName, LeftButtonEnable, RightButtonEnable)
  1750.        
  1751.     def SetCorverButtonScale(self, slotIndex, xScale, yScale):
  1752.         wndMgr.SetCorverButtonScale(self.hWnd, slotIndex, xScale, yScale)
  1753.  
  1754.     def EnableCoverButton(self, slotIndex):
  1755.         wndMgr.EnableCoverButton(self.hWnd, slotIndex)
  1756.  
  1757.     def DisableCoverButton(self, slotIndex):
  1758.         wndMgr.DisableCoverButton(self.hWnd, slotIndex)
  1759.        
  1760.     def SetAlwaysRenderCoverButton(self, slotIndex, bAlwaysRender = TRUE):
  1761.         wndMgr.SetAlwaysRenderCoverButton(self.hWnd, slotIndex, bAlwaysRender)
  1762.  
  1763.     def AppendSlotButton(self, upName, overName, downName):
  1764.         wndMgr.AppendSlotButton(self.hWnd, upName, overName, downName)
  1765.  
  1766.     def ShowSlotButton(self, slotNumber):
  1767.         wndMgr.ShowSlotButton(self.hWnd, slotNumber)
  1768.  
  1769.     def HideAllSlotButton(self):
  1770.         wndMgr.HideAllSlotButton(self.hWnd)
  1771.  
  1772.     def AppendRequirementSignImage(self, filename):
  1773.         wndMgr.AppendRequirementSignImage(self.hWnd, filename)
  1774.  
  1775.     def ShowRequirementSign(self, slotNumber):
  1776.         wndMgr.ShowRequirementSign(self.hWnd, slotNumber)
  1777.  
  1778.     def HideRequirementSign(self, slotNumber):
  1779.         wndMgr.HideRequirementSign(self.hWnd, slotNumber)
  1780.  
  1781.     def ActivateSlot(self, slotNumber):
  1782.         wndMgr.ActivateSlot(self.hWnd, slotNumber)
  1783.  
  1784.     def SetSlotDiffuseColor(self, slotindex, colortype):
  1785.         wndMgr.SetSlotDiffuseColor(self.hWnd, slotindex, colortype)
  1786.  
  1787.     def DeactivateSlot(self, slotNumber):
  1788.         wndMgr.DeactivateSlot(self.hWnd, slotNumber)
  1789.            
  1790.     def ShowSlotBaseImage(self, slotNumber):
  1791.         wndMgr.ShowSlotBaseImage(self.hWnd, slotNumber)
  1792.  
  1793.     def HideSlotBaseImage(self, slotNumber):
  1794.         wndMgr.HideSlotBaseImage(self.hWnd, slotNumber)
  1795.  
  1796.     if app.ENABLE_EXTEND_INVEN_SYSTEM:
  1797.         def SAFE_SetButtonEvent(self, button, state, event, window = None):
  1798.             if "LEFT"==button:
  1799.                 if "EMPTY"==state:
  1800.                     self.eventSelectEmptySlot=__mem_func__(event)
  1801.                     self.eventSelectEmptySlotWindow = window
  1802.                 elif "EXIST"==state:
  1803.                     self.eventSelectItemSlot=__mem_func__(event)
  1804.                     self.eventSelectItemSlotWindow  = window
  1805.                 elif "ALWAYS"==state:
  1806.                     self.eventSelectEmptySlot=__mem_func__(event)
  1807.                     self.eventSelectEmptySlotWindow = window
  1808.                     self.eventSelectItemSlot=__mem_func__(event)
  1809.                     self.eventSelectItemSlotWindow  = window
  1810.             elif "RIGHT"==button:
  1811.                 if "EMPTY"==state:
  1812.                     self.eventUnselectEmptySlot=__mem_func__(event)
  1813.                 elif "EXIST"==state:
  1814.                     self.eventUnselectItemSlot=__mem_func__(event)
  1815.                     self.eventUnselectItemSlotWindow = window
  1816.                 elif "ALWAYS"==state:
  1817.                     self.eventUnselectEmptySlot=__mem_func__(event)
  1818.                     self.eventUnselectItemSlot=__mem_func__(event)
  1819.                     self.eventUnselectItemSlotWindow = window
  1820.     else:
  1821.         def SAFE_SetButtonEvent(self, button, state, event):
  1822.             if "LEFT"==button:
  1823.                 if "EMPTY"==state:
  1824.                     self.eventSelectEmptySlot=__mem_func__(event)
  1825.                 elif "EXIST"==state:
  1826.                     self.eventSelectItemSlot=__mem_func__(event)
  1827.                 elif "ALWAYS"==state:
  1828.                     self.eventSelectEmptySlot=__mem_func__(event)
  1829.                     self.eventSelectItemSlot=__mem_func__(event)
  1830.             elif "RIGHT"==button:
  1831.                 if "EMPTY"==state:
  1832.                     self.eventUnselectEmptySlot=__mem_func__(event)
  1833.                 elif "EXIST"==state:
  1834.                     self.eventUnselectItemSlot=__mem_func__(event)
  1835.                 elif "ALWAYS"==state:
  1836.                     self.eventUnselectEmptySlot=__mem_func__(event)
  1837.                     self.eventUnselectItemSlot=__mem_func__(event)
  1838.                    
  1839.  
  1840.     if app.ENABLE_EXTEND_INVEN_SYSTEM:
  1841.         def SetSelectEmptySlotEvent(self, empty, window = None):
  1842.             self.eventSelectEmptySlot       = empty
  1843.             self.eventSelectEmptySlotWindow = window
  1844.     else:
  1845.         def SetSelectEmptySlotEvent(self, empty):
  1846.             self.eventSelectEmptySlot = empty
  1847.  
  1848.     if app.ENABLE_EXTEND_INVEN_SYSTEM:
  1849.         def SetSelectItemSlotEvent(self, item, window = None, *args):
  1850.             self.eventSelectItemSlot        = item
  1851.             self.eventSelectItemSlotWindow  = window
  1852.             self.eventSelectItemSlotArgs = args
  1853.     else:
  1854.         def SetSelectItemSlotEvent(self, item, *args):
  1855.             self.eventSelectItemSlot = item
  1856.             self.eventSelectItemSlotArgs = args
  1857.  
  1858.     def SetUnselectEmptySlotEvent(self, empty):
  1859.         self.eventUnselectEmptySlot = empty
  1860.  
  1861.     if app.ENABLE_EXTEND_INVEN_SYSTEM:
  1862.         def SetUnselectItemSlotEvent(self, item, window = None):
  1863.             self.eventUnselectItemSlot       = item
  1864.             self.eventUnselectItemSlotWindow = window
  1865.     else:
  1866.         def SetUnselectItemSlotEvent(self, item):
  1867.             self.eventUnselectItemSlot = item
  1868.    
  1869.     if app.ENABLE_EXTEND_INVEN_SYSTEM:
  1870.         def SetUseSlotEvent(self, use, window = None):
  1871.             self.eventUseSlot       = use
  1872.             self.eventUseSlotWindow = window
  1873.     else:
  1874.         def SetUseSlotEvent(self, use):
  1875.             self.eventUseSlot = use
  1876.  
  1877.     if app.ENABLE_EXTEND_INVEN_SYSTEM:
  1878.         def SetOverInItemEvent(self, event, window = None, *args ):
  1879.             self.eventOverInItem            = event
  1880.             self.eventOverInItemArgs = args
  1881.             self.eventOverInItemSlotWindow  = window
  1882.     else:
  1883.         def SetOverInItemEvent(self, event, *args ):
  1884.             self.eventOverInItem = event
  1885.             self.eventOverInItemArgs = args
  1886.  
  1887.     def SetOverOutItemEvent(self, event):
  1888.         self.eventOverOutItem = event
  1889.  
  1890.     def SetPressedSlotButtonEvent(self, event):
  1891.         self.eventPressedSlotButton = event
  1892.  
  1893.     def GetSlotCount(self):
  1894.         return wndMgr.GetSlotCount(self.hWnd)
  1895.  
  1896.     def SetUseMode(self, flag):
  1897.         "TrueÀ϶§¸¸ ItemToItem ÀÌ °¡´ÉÇÑÁö º¸¿©ÁØ´Ù"
  1898.         wndMgr.SetUseMode(self.hWnd, flag)
  1899.  
  1900.     def SetUsableItem(self, flag):
  1901.         "True¸é ÇöÀç °¡¸®Å² ¾ÆÀÌÅÛÀÌ ItemToItem Àû¿ë °¡´ÉÇÏ´Ù"
  1902.         wndMgr.SetUsableItem(self.hWnd, flag)
  1903.  
  1904.     ## Slot
  1905.     def SetSlotCoolTime(self, slotIndex, coolTime, elapsedTime = 0.0):
  1906.         wndMgr.SetSlotCoolTime(self.hWnd, slotIndex, coolTime, elapsedTime)
  1907.    
  1908.     def SetSlotCoolTimeColor(self, slotIndex, r, g, b, a):
  1909.         wndMgr.SetSlotCoolTimeColor(self.hWnd, slotIndex, r, g, b, a)
  1910.            
  1911.     def StoreSlotCoolTime(self, key, slotIndex, coolTime, elapsedTime = 0.0):
  1912.         wndMgr.StoreSlotCoolTime(self.hWnd, key, slotIndex, coolTime, elapsedTime)
  1913.    
  1914.     def RestoreSlotCoolTime(self, key):
  1915.         wndMgr.RestoreSlotCoolTime(self.hWnd, key)
  1916.        
  1917.     if app.ENABLE_GROWTH_PET_SYSTEM:
  1918.         def SetSlotCoolTimeInverse(self, slotIndex, coolTime, elapsedTime = 0.0):
  1919.             wndMgr.SetSlotCoolTimeInverse(self.hWnd, slotIndex, coolTime, elapsedTime)
  1920.            
  1921.     if app.ENABLE_GROWTH_PET_SYSTEM or app.ENABLE_MOVE_COSTUME_ATTR:   
  1922.         def SetCantMouseEventSlot(self, slotIndex):
  1923.             wndMgr.SetCantMouseEventSlot(self.hWnd, slotIndex)
  1924.    
  1925.     if app.ENABLE_GROWTH_PET_SYSTEM or app.ENABLE_MOVE_COSTUME_ATTR:
  1926.         def SetCanMouseEventSlot(self, slotIndex):
  1927.             wndMgr.SetCanMouseEventSlot(self.hWnd, slotIndex)
  1928.            
  1929.     if app.WJ_ENABLE_TRADABLE_ICON or app.ENABLE_MOVE_COSTUME_ATTR:
  1930.         def SetUnusableSlotOnTopWnd(self, slotIndex):
  1931.             wndMgr.SetUnusableSlotOnTopWnd(self.hWnd, slotIndex)
  1932.            
  1933.         def SetUsableSlotOnTopWnd(self, slotIndex):
  1934.             wndMgr.SetUsableSlotOnTopWnd(self.hWnd, slotIndex)
  1935.  
  1936.     def DisableSlot(self, slotIndex):
  1937.         wndMgr.DisableSlot(self.hWnd, slotIndex)
  1938.  
  1939.     def EnableSlot(self, slotIndex):
  1940.         wndMgr.EnableSlot(self.hWnd, slotIndex)
  1941.  
  1942.     def LockSlot(self, slotIndex):
  1943.         wndMgr.LockSlot(self.hWnd, slotIndex)
  1944.  
  1945.     def UnlockSlot(self, slotIndex):
  1946.         wndMgr.UnlockSlot(self.hWnd, slotIndex)
  1947.  
  1948.     def RefreshSlot(self):
  1949.         wndMgr.RefreshSlot(self.hWnd)
  1950.  
  1951.     def ClearSlot(self, slotNumber):
  1952.         wndMgr.ClearSlot(self.hWnd, slotNumber)
  1953.  
  1954.     def ClearAllSlot(self):
  1955.         wndMgr.ClearAllSlot(self.hWnd)
  1956.  
  1957.     def AppendSlot(self, index, x, y, width, height):
  1958.         wndMgr.AppendSlot(self.hWnd, index, x, y, width, height)
  1959.  
  1960.     def SetSlot(self, slotIndex, itemIndex, width, height, icon, diffuseColor = (1.0, 1.0, 1.0, 1.0)):
  1961.         wndMgr.SetSlot(self.hWnd, slotIndex, itemIndex, width, height, icon, diffuseColor)
  1962.  
  1963.     def SetSlotCount(self, slotNumber, count):
  1964.         wndMgr.SetSlotCount(self.hWnd, slotNumber, count)
  1965.  
  1966.     def SetSlotCountNew(self, slotNumber, grade, count):
  1967.         wndMgr.SetSlotCountNew(self.hWnd, slotNumber, grade, count)
  1968.  
  1969.     def SetItemSlot(self, renderingSlotNumber, ItemIndex, ItemCount = 0, diffuseColor = (1.0, 1.0, 1.0, 1.0)):
  1970.         if 0 == ItemIndex or None == ItemIndex:
  1971.             wndMgr.ClearSlot(self.hWnd, renderingSlotNumber)
  1972.             return
  1973.  
  1974.         item.SelectItem(ItemIndex)
  1975.         itemIcon = item.GetIconImage()
  1976.  
  1977.         item.SelectItem(ItemIndex)
  1978.         (width, height) = item.GetItemSize()
  1979.        
  1980.         wndMgr.SetSlot(self.hWnd, renderingSlotNumber, ItemIndex, width, height, itemIcon, diffuseColor)
  1981.         wndMgr.SetSlotCount(self.hWnd, renderingSlotNumber, ItemCount)
  1982.  
  1983.     def SetSkillSlot(self, renderingSlotNumber, skillIndex, skillLevel):
  1984.  
  1985.         skillIcon = skill.GetIconImage(skillIndex)
  1986.  
  1987.         if 0 == skillIcon:
  1988.             wndMgr.ClearSlot(self.hWnd, renderingSlotNumber)
  1989.             return
  1990.  
  1991.         wndMgr.SetSlot(self.hWnd, renderingSlotNumber, skillIndex, 1, 1, skillIcon)
  1992.         wndMgr.SetSlotCount(self.hWnd, renderingSlotNumber, skillLevel)
  1993.  
  1994.     def SetSkillSlotNew(self, renderingSlotNumber, skillIndex, skillGrade, skillLevel):
  1995.        
  1996.         skillIcon = skill.GetIconImageNew(skillIndex, skillGrade)
  1997.  
  1998.         if 0 == skillIcon:
  1999.             wndMgr.ClearSlot(self.hWnd, renderingSlotNumber)
  2000.             return
  2001.  
  2002.         wndMgr.SetSlot(self.hWnd, renderingSlotNumber, skillIndex, 1, 1, skillIcon)
  2003.  
  2004.     def SetEmotionSlot(self, renderingSlotNumber, emotionIndex):
  2005.         import playerm2g2
  2006.         icon = playerm2g2.GetEmotionIconImage(emotionIndex)
  2007.  
  2008.         if 0 == icon:
  2009.             wndMgr.ClearSlot(self.hWnd, renderingSlotNumber)
  2010.             return
  2011.  
  2012.         wndMgr.SetSlot(self.hWnd, renderingSlotNumber, emotionIndex, 1, 1, icon)
  2013.        
  2014.     if app.ENABLE_GROWTH_PET_SYSTEM:
  2015.         def SetPetSkillSlotNew(self, renderingSlotNumber, petSkillIndex):
  2016.        
  2017.             petSkillIcon = skill.GetPetSkillIconImage(petSkillIndex)
  2018.  
  2019.             if 0 == petSkillIcon:
  2020.                 wndMgr.ClearSlot(self.hWnd, renderingSlotNumber)
  2021.                 return
  2022.  
  2023.             wndMgr.SetSlot(self.hWnd, renderingSlotNumber, petSkillIndex, 1, 1, petSkillIcon)
  2024.  
  2025.     ## Event
  2026.     if app.ENABLE_EXTEND_INVEN_SYSTEM:
  2027.         def OnSelectEmptySlot(self, slotNumber):
  2028.             if self.eventSelectEmptySlot:
  2029.                 if self.eventSelectEmptySlotWindow:
  2030.                     self.eventSelectEmptySlot(slotNumber, self.eventSelectEmptySlotWindow)
  2031.                 else:
  2032.                     self.eventSelectEmptySlot(slotNumber)
  2033.     else:
  2034.         def OnSelectEmptySlot(self, slotNumber):
  2035.             if self.eventSelectEmptySlot:
  2036.                 self.eventSelectEmptySlot(slotNumber)
  2037.  
  2038.     if app.ENABLE_EXTEND_INVEN_SYSTEM:
  2039.         def OnSelectItemSlot(self, slotNumber):
  2040.             if self.eventSelectItemSlot:
  2041.                 if self.eventSelectItemSlotWindow:
  2042.                     if self.eventSelectItemSlotArgs:
  2043.                         apply(self.eventSelectItemSlot, self.eventSelectItemSlotArgs)
  2044.                     else:
  2045.                         self.eventSelectItemSlot(slotNumber, self.eventSelectItemSlotWindow)
  2046.                 else:
  2047.                     if self.eventSelectItemSlotArgs:
  2048.                         apply(self.eventSelectItemSlot, self.eventSelectItemSlotArgs)
  2049.                     else:
  2050.                         self.eventSelectItemSlot(slotNumber)
  2051.     else:
  2052.         def OnSelectItemSlot(self, slotNumber):
  2053.             if self.eventSelectItemSlot:
  2054.                 if self.eventSelectItemSlotArgs:
  2055.                     apply(self.eventSelectItemSlot, self.eventSelectItemSlotArgs)
  2056.                 else:
  2057.                     self.eventSelectItemSlot(slotNumber)
  2058.  
  2059.     def OnUnselectEmptySlot(self, slotNumber):
  2060.         if self.eventUnselectEmptySlot:
  2061.             self.eventUnselectEmptySlot(slotNumber)
  2062.  
  2063.     if app.ENABLE_EXTEND_INVEN_SYSTEM:
  2064.         def OnUnselectItemSlot(self, slotNumber):
  2065.             if self.eventUnselectItemSlot:
  2066.                 if self.eventUnselectItemSlotWindow:
  2067.                     self.eventUnselectItemSlot(slotNumber, self.eventUnselectItemSlotWindow)
  2068.                 else:
  2069.                     self.eventUnselectItemSlot(slotNumber)
  2070.     else:
  2071.         def OnUnselectItemSlot(self, slotNumber):
  2072.             if self.eventUnselectItemSlot:
  2073.                 self.eventUnselectItemSlot(slotNumber)
  2074.    
  2075.     if app.ENABLE_EXTEND_INVEN_SYSTEM:
  2076.         def OnUseSlot(self, slotNumber):
  2077.             if self.eventUseSlot:
  2078.                 if self.eventUseSlotWindow:
  2079.                     self.eventUseSlot(slotNumber, self.eventUseSlotWindow)
  2080.                 else:
  2081.                     self.eventUseSlot(slotNumber)
  2082.     else:
  2083.         def OnUseSlot(self, slotNumber):
  2084.             if self.eventUseSlot:
  2085.                 self.eventUseSlot(slotNumber)
  2086.  
  2087.     if app.ENABLE_EXTEND_INVEN_SYSTEM:
  2088.         def OnOverInItem(self, slotNumber):
  2089.             if self.eventOverInItem:
  2090.                 if None == self.eventOverInItemSlotWindow:
  2091.                     if self.eventOverInItemArgs:
  2092.                         apply(self.eventOverInItem, self.eventOverInItemArgs)
  2093.                     else:
  2094.                         self.eventOverInItem(slotNumber)
  2095.                 else:
  2096.                     if self.eventOverInItemArgs:
  2097.                         apply(self.eventOverInItem, self.eventOverInItemArgs)
  2098.                     else:
  2099.                         self.eventOverInItem(slotNumber, self.eventOverInItemSlotWindow)
  2100.     else:
  2101.         def OnOverInItem(self, slotNumber):
  2102.             if self.eventOverInItem:
  2103.                 if self.eventOverInItemArgs:
  2104.                     apply(self.eventOverInItem, self.eventOverInItemArgs)
  2105.                 else:
  2106.                     self.eventOverInItem(slotNumber)
  2107.  
  2108.     def OnOverOutItem(self):
  2109.         if self.eventOverOutItem:
  2110.             self.eventOverOutItem()
  2111.  
  2112.     def OnPressedSlotButton(self, slotNumber):
  2113.         if self.eventPressedSlotButton:
  2114.             self.eventPressedSlotButton(slotNumber)
  2115.  
  2116.     def GetStartIndex(self):
  2117.         return 0
  2118.        
  2119.     def GetSlotGlobalPosition(self, index):
  2120.         return wndMgr.GetSlotGlobalPosition(self.hWnd, index)
  2121.        
  2122.     def GetSlotLocalPosition(self, index):
  2123.         return wndMgr.GetSlotLocalPosition(self.hWnd, index)
  2124.        
  2125.     if app.ENABLE_SLOT_COVER_IMAGE_SYSTEM:
  2126.         def SetSlotCoverImage(self, slotindex, filename):
  2127.             wndMgr.SetSlotCoverImage(self.hWnd, slotindex, filename)
  2128.         def EnableSlotCoverImage(self, slotindex, onoff):
  2129.             wndMgr.EnableSlotCoverImage(self.hWnd, slotindex, onoff)
  2130.            
  2131.     def SetSlotType(self, flag):
  2132.         wndMgr.SetSlotType(self.hWnd, flag)
  2133.  
  2134. class GridSlotWindow(SlotWindow):
  2135.  
  2136.     def __init__(self):
  2137.         SlotWindow.__init__(self)
  2138.  
  2139.         self.startIndex = 0
  2140.  
  2141.     def __del__(self):
  2142.         SlotWindow.__del__(self)
  2143.  
  2144.     def RegisterWindow(self, layer):
  2145.         self.hWnd = wndMgr.RegisterGridSlotWindow(self, layer)
  2146.  
  2147.     def ArrangeSlot(self, StartIndex, xCount, yCount, xSize, ySize, xBlank, yBlank):
  2148.  
  2149.         self.startIndex = StartIndex
  2150.  
  2151.         wndMgr.ArrangeSlot(self.hWnd, StartIndex, xCount, yCount, xSize, ySize, xBlank, yBlank)
  2152.         self.startIndex = StartIndex
  2153.  
  2154.     def GetStartIndex(self):
  2155.         return self.startIndex
  2156.  
  2157. class TitleBar(Window):
  2158.  
  2159.     BLOCK_WIDTH = 32
  2160.     BLOCK_HEIGHT = 23
  2161.  
  2162.     def __init__(self):
  2163.         Window.__init__(self)
  2164.         self.AddFlag("attach")
  2165.  
  2166.     def __del__(self):
  2167.         Window.__del__(self)
  2168.  
  2169.     def MakeTitleBar(self, width, color):
  2170.  
  2171.         ## ÇöÀç Color´Â »ç¿ëÇϰí ÀÖÁö ¾ÊÀ½
  2172.  
  2173.         width = max(64, width)
  2174.  
  2175.         imgLeft = ImageBox()
  2176.         imgCenter = ExpandedImageBox()
  2177.         imgRight = ImageBox()
  2178.         imgLeft.AddFlag("not_pick")
  2179.         imgCenter.AddFlag("not_pick")
  2180.         imgRight.AddFlag("not_pick")
  2181.         imgLeft.SetParent(self)
  2182.         imgCenter.SetParent(self)
  2183.         imgRight.SetParent(self)
  2184.  
  2185.         if localeInfo.IsARABIC():
  2186.             imgLeft.LoadImage("locale/ae/ui/pattern/titlebar_left.tga")
  2187.             imgCenter.LoadImage("locale/ae/ui/pattern/titlebar_center.tga")
  2188.             imgRight.LoadImage("locale/ae/ui/pattern/titlebar_right.tga")
  2189.         else:
  2190.             imgLeft.LoadImage("d:/ymir work/ui/pattern/titlebar_left.tga")
  2191.             imgCenter.LoadImage("d:/ymir work/ui/pattern/titlebar_center.tga")
  2192.             imgRight.LoadImage("d:/ymir work/ui/pattern/titlebar_right.tga")
  2193.  
  2194.         imgLeft.Show()
  2195.         imgCenter.Show()
  2196.         imgRight.Show()
  2197.  
  2198.         btnClose = Button()
  2199.         btnClose.SetParent(self)
  2200.         btnClose.SetUpVisual("d:/ymir work/ui/public/close_button_01.sub")
  2201.         btnClose.SetOverVisual("d:/ymir work/ui/public/close_button_02.sub")
  2202.         btnClose.SetDownVisual("d:/ymir work/ui/public/close_button_03.sub")
  2203.         btnClose.SetToolTipText(localeInfo.UI_CLOSE, 0, -23)
  2204.         btnClose.Show()
  2205.  
  2206.         self.imgLeft = imgLeft
  2207.         self.imgCenter = imgCenter
  2208.         self.imgRight = imgRight
  2209.         self.btnClose = btnClose
  2210.  
  2211.         self.SetWidth(width)
  2212.  
  2213.     def SetWidth(self, width):
  2214.         self.imgCenter.SetRenderingRect(0.0, 0.0, float((width - self.BLOCK_WIDTH*2) - self.BLOCK_WIDTH) / self.BLOCK_WIDTH, 0.0)
  2215.         self.imgCenter.SetPosition(self.BLOCK_WIDTH, 0)
  2216.         self.imgRight.SetPosition(width - self.BLOCK_WIDTH, 0)
  2217.  
  2218.         if localeInfo.IsARABIC():
  2219.             self.btnClose.SetPosition(3, 3)
  2220.         else:
  2221.             self.btnClose.SetPosition(width - self.btnClose.GetWidth() - 3, 3)
  2222.            
  2223.         self.SetSize(width, self.BLOCK_HEIGHT)
  2224.  
  2225.     def SetCloseEvent(self, event):
  2226.         self.btnClose.SetEvent(event)
  2227.  
  2228.     if app.ENABLE_CHANGED_ATTR or app.ENABLE_DETAILS_UI:
  2229.         def CloseButtonHide(self) :
  2230.             if localeInfo.IsARABIC():
  2231.                 self.imgLeft.LoadImage("d:/ymir work/ui/pattern/titlebar_right_02.tga")
  2232.                 self.imgLeft.LeftRightReverse()
  2233.                 self.btnClose.Hide()
  2234.             else:
  2235.                 self.imgRight.LoadImage("d:/ymir work/ui/pattern/titlebar_right_02.tga")
  2236.                 self.btnClose.Hide()
  2237.  
  2238. class HorizontalBar(Window):
  2239.  
  2240.     BLOCK_WIDTH = 32
  2241.     BLOCK_HEIGHT = 17
  2242.  
  2243.     def __init__(self):
  2244.         Window.__init__(self)
  2245.         self.AddFlag("attach")
  2246.  
  2247.     def __del__(self):
  2248.         Window.__del__(self)
  2249.  
  2250.     def Create(self, width):
  2251.  
  2252.         width = max(96, width)
  2253.  
  2254.         imgLeft = ImageBox()
  2255.         imgLeft.SetParent(self)
  2256.         imgLeft.AddFlag("not_pick")
  2257.         imgLeft.LoadImage("d:/ymir work/ui/pattern/horizontalbar_left.tga")
  2258.         imgLeft.Show()
  2259.  
  2260.         imgCenter = ExpandedImageBox()
  2261.         imgCenter.SetParent(self)
  2262.         imgCenter.AddFlag("not_pick")
  2263.         imgCenter.LoadImage("d:/ymir work/ui/pattern/horizontalbar_center.tga")
  2264.         imgCenter.Show()
  2265.  
  2266.         imgRight = ImageBox()
  2267.         imgRight.SetParent(self)
  2268.         imgRight.AddFlag("not_pick")
  2269.         imgRight.LoadImage("d:/ymir work/ui/pattern/horizontalbar_right.tga")
  2270.         imgRight.Show()
  2271.  
  2272.         self.imgLeft = imgLeft
  2273.         self.imgCenter = imgCenter
  2274.         self.imgRight = imgRight
  2275.         self.SetWidth(width)
  2276.  
  2277.     def SetWidth(self, width):
  2278.         self.imgCenter.SetRenderingRect(0.0, 0.0, float((width - self.BLOCK_WIDTH*2) - self.BLOCK_WIDTH) / self.BLOCK_WIDTH, 0.0)
  2279.         self.imgCenter.SetPosition(self.BLOCK_WIDTH, 0)
  2280.         self.imgRight.SetPosition(width - self.BLOCK_WIDTH, 0)
  2281.         self.SetSize(width, self.BLOCK_HEIGHT)
  2282.  
  2283. class Gauge(Window):
  2284.  
  2285.     SLOT_WIDTH = 16
  2286.     SLOT_HEIGHT = 7
  2287.  
  2288.     GAUGE_TEMPORARY_PLACE = 12
  2289.     GAUGE_WIDTH = 16
  2290.  
  2291.     def __init__(self):
  2292.         Window.__init__(self)
  2293.         self.width = 0
  2294.     def __del__(self):
  2295.         Window.__del__(self)
  2296.  
  2297.     def MakeGauge(self, width, color):
  2298.  
  2299.         self.width = max(48, width)
  2300.  
  2301.         imgSlotLeft = ImageBox()
  2302.         imgSlotLeft.SetParent(self)
  2303.         imgSlotLeft.LoadImage("d:/ymir work/ui/pattern/gauge_slot_left.tga")
  2304.         imgSlotLeft.Show()
  2305.  
  2306.         imgSlotRight = ImageBox()
  2307.         imgSlotRight.SetParent(self)
  2308.         imgSlotRight.LoadImage("d:/ymir work/ui/pattern/gauge_slot_right.tga")
  2309.         imgSlotRight.Show()
  2310.         imgSlotRight.SetPosition(width - self.SLOT_WIDTH, 0)
  2311.  
  2312.         imgSlotCenter = ExpandedImageBox()
  2313.         imgSlotCenter.SetParent(self)
  2314.         imgSlotCenter.LoadImage("d:/ymir work/ui/pattern/gauge_slot_center.tga")
  2315.         imgSlotCenter.Show()
  2316.         imgSlotCenter.SetRenderingRect(0.0, 0.0, float((width - self.SLOT_WIDTH*2) - self.SLOT_WIDTH) / self.SLOT_WIDTH, 0.0)
  2317.         imgSlotCenter.SetPosition(self.SLOT_WIDTH, 0)
  2318.  
  2319.         imgGauge = ExpandedImageBox()
  2320.         imgGauge.SetParent(self)
  2321.         imgGauge.LoadImage("d:/ymir work/ui/pattern/gauge_" + color + ".tga")
  2322.         imgGauge.Show()
  2323.         imgGauge.SetRenderingRect(0.0, 0.0, 0.0, 0.0)
  2324.         imgGauge.SetPosition(self.GAUGE_TEMPORARY_PLACE, 0)
  2325.  
  2326.         imgSlotLeft.AddFlag("attach")
  2327.         imgSlotCenter.AddFlag("attach")
  2328.         imgSlotRight.AddFlag("attach")
  2329.        
  2330.         if app.WJ_SHOW_PARTY_ON_MINIMAP:
  2331.             imgSlotLeft.AddFlag("not_pick")
  2332.             imgSlotCenter.AddFlag("not_pick")
  2333.             imgSlotRight.AddFlag("not_pick")
  2334.             imgGauge.AddFlag("not_pick")
  2335.  
  2336.         self.imgLeft = imgSlotLeft
  2337.         self.imgCenter = imgSlotCenter
  2338.         self.imgRight = imgSlotRight
  2339.         self.imgGauge = imgGauge
  2340.  
  2341.         self.SetSize(width, self.SLOT_HEIGHT)
  2342.  
  2343.     def SetPercentage(self, curValue, maxValue):
  2344.  
  2345.         # PERCENTAGE_MAX_VALUE_ZERO_DIVISION_ERROR
  2346.         if maxValue > 0.0:
  2347.             percentage = min(1.0, float(curValue)/float(maxValue))
  2348.         else:
  2349.             percentage = 0.0
  2350.         # END_OF_PERCENTAGE_MAX_VALUE_ZERO_DIVISION_ERROR
  2351.  
  2352.         gaugeSize = -1.0 + float(self.width - self.GAUGE_TEMPORARY_PLACE*2) * percentage / self.GAUGE_WIDTH
  2353.         self.imgGauge.SetRenderingRect(0.0, 0.0, gaugeSize, 0.0)
  2354.    
  2355.     if app.WJ_SHOW_PARTY_ON_MINIMAP:   
  2356.         def GaugeImgBoxAddFlag(self, flag):
  2357.             self.imgLeft.AddFlag(flag)
  2358.             self.imgCenter.AddFlag(flag)
  2359.             self.imgRight.AddFlag(flag)
  2360.             self.imgGauge.AddFlag(flag)
  2361.  
  2362. class Board(Window):
  2363.  
  2364.     CORNER_WIDTH = 32
  2365.     CORNER_HEIGHT = 32
  2366.     LINE_WIDTH = 128
  2367.     LINE_HEIGHT = 128
  2368.  
  2369.     LT = 0
  2370.     LB = 1
  2371.     RT = 2
  2372.     RB = 3
  2373.     L = 0
  2374.     R = 1
  2375.     T = 2
  2376.     B = 3
  2377.  
  2378.     def __init__(self):
  2379.         Window.__init__(self)
  2380.  
  2381.         self.MakeBoard("d:/ymir work/ui/pattern/Board_Corner_", "d:/ymir work/ui/pattern/Board_Line_")
  2382.         self.MakeBase()
  2383.  
  2384.     def MakeBoard(self, cornerPath, linePath):
  2385.  
  2386.         CornerFileNames = [ cornerPath+dir+".tga" for dir in ("LeftTop", "LeftBottom", "RightTop", "RightBottom", ) ]
  2387.         LineFileNames = [ linePath+dir+".tga" for dir in ("Left", "Right", "Top", "Bottom", ) ]
  2388.         """
  2389.         CornerFileNames = (
  2390.                             "d:/ymir work/ui/pattern/Board_Corner_LeftTop.tga",
  2391.                             "d:/ymir work/ui/pattern/Board_Corner_LeftBottom.tga",
  2392.                             "d:/ymir work/ui/pattern/Board_Corner_RightTop.tga",
  2393.                             "d:/ymir work/ui/pattern/Board_Corner_RightBottom.tga",
  2394.                             )
  2395.         LineFileNames = (
  2396.                             "d:/ymir work/ui/pattern/Board_Line_Left.tga",
  2397.                             "d:/ymir work/ui/pattern/Board_Line_Right.tga",
  2398.                             "d:/ymir work/ui/pattern/Board_Line_Top.tga",
  2399.                             "d:/ymir work/ui/pattern/Board_Line_Bottom.tga",
  2400.                             )
  2401.         """
  2402.  
  2403.         self.Corners = []
  2404.         for fileName in CornerFileNames:
  2405.             Corner = ExpandedImageBox()
  2406.             Corner.AddFlag("not_pick")
  2407.             Corner.LoadImage(fileName)
  2408.             Corner.SetParent(self)
  2409.             Corner.SetPosition(0, 0)
  2410.             Corner.Show()
  2411.             self.Corners.append(Corner)
  2412.  
  2413.         self.Lines = []
  2414.         for fileName in LineFileNames:
  2415.             Line = ExpandedImageBox()
  2416.             Line.AddFlag("not_pick")
  2417.             Line.LoadImage(fileName)
  2418.             Line.SetParent(self)
  2419.             Line.SetPosition(0, 0)
  2420.             Line.Show()
  2421.             self.Lines.append(Line)
  2422.  
  2423.         self.Lines[self.L].SetPosition(0, self.CORNER_HEIGHT)
  2424.         self.Lines[self.T].SetPosition(self.CORNER_WIDTH, 0)
  2425.  
  2426.     def MakeBase(self):
  2427.         self.Base = ExpandedImageBox()
  2428.         self.Base.AddFlag("not_pick")
  2429.         self.Base.LoadImage("d:/ymir work/ui/pattern/Board_Base.tga")
  2430.         self.Base.SetParent(self)
  2431.         self.Base.SetPosition(self.CORNER_WIDTH, self.CORNER_HEIGHT)
  2432.         self.Base.Show()
  2433.  
  2434.     def __del__(self):
  2435.         Window.__del__(self)
  2436.  
  2437.     def SetSize(self, width, height):
  2438.  
  2439.         width = max(self.CORNER_WIDTH*2, width)
  2440.         height = max(self.CORNER_HEIGHT*2, height)
  2441.         Window.SetSize(self, width, height)
  2442.  
  2443.         self.Corners[self.LB].SetPosition(0, height - self.CORNER_HEIGHT)
  2444.         self.Corners[self.RT].SetPosition(width - self.CORNER_WIDTH, 0)
  2445.         self.Corners[self.RB].SetPosition(width - self.CORNER_WIDTH, height - self.CORNER_HEIGHT)
  2446.         self.Lines[self.R].SetPosition(width - self.CORNER_WIDTH, self.CORNER_HEIGHT)
  2447.         self.Lines[self.B].SetPosition(self.CORNER_HEIGHT, height - self.CORNER_HEIGHT)
  2448.  
  2449.         verticalShowingPercentage = float((height - self.CORNER_HEIGHT*2) - self.LINE_HEIGHT) / self.LINE_HEIGHT
  2450.         horizontalShowingPercentage = float((width - self.CORNER_WIDTH*2) - self.LINE_WIDTH) / self.LINE_WIDTH
  2451.         self.Lines[self.L].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
  2452.         self.Lines[self.R].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
  2453.         self.Lines[self.T].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
  2454.         self.Lines[self.B].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
  2455.  
  2456.         if self.Base:
  2457.             self.Base.SetRenderingRect(0, 0, horizontalShowingPercentage, verticalShowingPercentage)
  2458.  
  2459. class BoardWithTitleBar(Board):
  2460.     def __init__(self):
  2461.         Board.__init__(self)
  2462.  
  2463.         titleBar = TitleBar()
  2464.         titleBar.SetParent(self)
  2465.         titleBar.MakeTitleBar(0, "red")
  2466.         titleBar.SetPosition(8, 7)
  2467.         titleBar.Show()
  2468.  
  2469.         titleName = TextLine()
  2470.         titleName.SetParent(titleBar)
  2471.         titleName.SetPosition(0, 4)
  2472.         titleName.SetWindowHorizontalAlignCenter()
  2473.         titleName.SetHorizontalAlignCenter()
  2474.         titleName.Show()
  2475.  
  2476.         self.titleBar = titleBar
  2477.         self.titleName = titleName
  2478.  
  2479.         self.SetCloseEvent(self.Hide)
  2480.  
  2481.     def __del__(self):
  2482.         Board.__del__(self)
  2483.         self.titleBar = None
  2484.         self.titleName = None
  2485.  
  2486.     def SetSize(self, width, height):
  2487.         self.titleBar.SetWidth(width - 15)
  2488.         #self.pickRestrictWindow.SetSize(width, height - 30)
  2489.         Board.SetSize(self, width, height)
  2490.         self.titleName.UpdateRect()
  2491.  
  2492.     def SetTitleColor(self, color):
  2493.         self.titleName.SetPackedFontColor(color)
  2494.  
  2495.     def SetTitleName(self, name):
  2496.         self.titleName.SetText(name)
  2497.  
  2498.     def SetCloseEvent(self, event):
  2499.         self.titleBar.SetCloseEvent(event)
  2500.  
  2501. class ThinBoard(Window):
  2502.  
  2503.     CORNER_WIDTH = 16
  2504.     CORNER_HEIGHT = 16
  2505.     LINE_WIDTH = 16
  2506.     LINE_HEIGHT = 16
  2507.     BOARD_COLOR = grp.GenerateColor(0.0, 0.0, 0.0, 0.51)
  2508.  
  2509.     LT = 0
  2510.     LB = 1
  2511.     RT = 2
  2512.     RB = 3
  2513.     L = 0
  2514.     R = 1
  2515.     T = 2
  2516.     B = 3
  2517.  
  2518.     def __init__(self, layer = "UI"):
  2519.         Window.__init__(self, layer)
  2520.  
  2521.         CornerFileNames = [ "d:/ymir work/ui/pattern/ThinBoard_Corner_"+dir+".tga" for dir in ["LeftTop","LeftBottom","RightTop","RightBottom"] ]
  2522.         LineFileNames = [ "d:/ymir work/ui/pattern/ThinBoard_Line_"+dir+".tga" for dir in ["Left","Right","Top","Bottom"] ]
  2523.  
  2524.         self.Corners = []
  2525.         for fileName in CornerFileNames:
  2526.             Corner = ExpandedImageBox()
  2527.             Corner.AddFlag("attach")
  2528.             Corner.AddFlag("not_pick")
  2529.             Corner.LoadImage(fileName)
  2530.             Corner.SetParent(self)
  2531.             Corner.SetPosition(0, 0)
  2532.             Corner.Show()
  2533.             self.Corners.append(Corner)
  2534.  
  2535.         self.Lines = []
  2536.         for fileName in LineFileNames:
  2537.             Line = ExpandedImageBox()
  2538.             Line.AddFlag("attach")
  2539.             Line.AddFlag("not_pick")
  2540.             Line.LoadImage(fileName)
  2541.             Line.SetParent(self)
  2542.             Line.SetPosition(0, 0)
  2543.             Line.Show()
  2544.             self.Lines.append(Line)
  2545.  
  2546.         Base = Bar()
  2547.         Base.SetParent(self)
  2548.         Base.AddFlag("attach")
  2549.         Base.AddFlag("not_pick")
  2550.         Base.SetPosition(self.CORNER_WIDTH, self.CORNER_HEIGHT)
  2551.         Base.SetColor(self.BOARD_COLOR)
  2552.         Base.Show()
  2553.         self.Base = Base
  2554.  
  2555.         self.Lines[self.L].SetPosition(0, self.CORNER_HEIGHT)
  2556.         self.Lines[self.T].SetPosition(self.CORNER_WIDTH, 0)
  2557.  
  2558.     def __del__(self):
  2559.         Window.__del__(self)
  2560.  
  2561.     def SetSize(self, width, height):
  2562.  
  2563.         width = max(self.CORNER_WIDTH*2, width)
  2564.         height = max(self.CORNER_HEIGHT*2, height)
  2565.         Window.SetSize(self, width, height)
  2566.  
  2567.         self.Corners[self.LB].SetPosition(0, height - self.CORNER_HEIGHT)
  2568.         self.Corners[self.RT].SetPosition(width - self.CORNER_WIDTH, 0)
  2569.         self.Corners[self.RB].SetPosition(width - self.CORNER_WIDTH, height - self.CORNER_HEIGHT)
  2570.         self.Lines[self.R].SetPosition(width - self.CORNER_WIDTH, self.CORNER_HEIGHT)
  2571.         self.Lines[self.B].SetPosition(self.CORNER_HEIGHT, height - self.CORNER_HEIGHT)
  2572.  
  2573.         verticalShowingPercentage = float((height - self.CORNER_HEIGHT*2) - self.LINE_HEIGHT) / self.LINE_HEIGHT
  2574.         horizontalShowingPercentage = float((width - self.CORNER_WIDTH*2) - self.LINE_WIDTH) / self.LINE_WIDTH
  2575.         self.Lines[self.L].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
  2576.         self.Lines[self.R].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
  2577.         self.Lines[self.T].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
  2578.         self.Lines[self.B].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
  2579.         self.Base.SetSize(width - self.CORNER_WIDTH*2, height - self.CORNER_HEIGHT*2)
  2580.  
  2581.     def ShowInternal(self):
  2582.         self.Base.Show()
  2583.         for wnd in self.Lines:
  2584.             wnd.Show()
  2585.         for wnd in self.Corners:
  2586.             wnd.Show()
  2587.  
  2588.     def HideInternal(self):
  2589.         self.Base.Hide()
  2590.         for wnd in self.Lines:
  2591.             wnd.Hide()
  2592.         for wnd in self.Corners:
  2593.             wnd.Hide()
  2594.  
  2595. class ThinBoardGold(Window):
  2596.     CORNER_WIDTH = 16
  2597.     CORNER_HEIGHT = 16
  2598.     LINE_WIDTH = 16
  2599.     LINE_HEIGHT = 16
  2600.  
  2601.     LT = 0
  2602.     LB = 1
  2603.     RT = 2
  2604.     RB = 3
  2605.     L = 0
  2606.     R = 1
  2607.     T = 2
  2608.     B = 3
  2609.  
  2610.     def __init__(self, layer = "UI"):
  2611.         Window.__init__(self, layer)
  2612.  
  2613.         CornerFileNames = [ "d:/ymir work/ui/pattern/thinboardgold/ThinBoard_Corner_"+dir+"_Gold.tga" for dir in ["LeftTop","LeftBottom","RightTop","RightBottom"] ]
  2614.         LineFileNames = [ "d:/ymir work/ui/pattern/thinboardgold/ThinBoard_Line_"+dir+"_Gold.tga" for dir in ["Left","Right","Top","Bottom"] ]
  2615.  
  2616.         self.MakeBase()
  2617.  
  2618.         self.Corners = []
  2619.         for fileName in CornerFileNames:
  2620.             Corner = ExpandedImageBox()
  2621.             Corner.AddFlag("attach")
  2622.             Corner.AddFlag("not_pick")
  2623.             Corner.LoadImage(fileName)
  2624.             Corner.SetParent(self)
  2625.             Corner.SetPosition(0, 0)
  2626.             Corner.Show()
  2627.             self.Corners.append(Corner)
  2628.  
  2629.         self.Lines = []
  2630.         for fileName in LineFileNames:
  2631.             Line = ExpandedImageBox()
  2632.             Line.AddFlag("attach")
  2633.             Line.AddFlag("not_pick")
  2634.             Line.LoadImage(fileName)
  2635.             Line.SetParent(self)
  2636.             Line.SetPosition(0, 0)
  2637.             Line.Show()
  2638.             self.Lines.append(Line)
  2639.  
  2640.         self.Lines[self.L].SetPosition(0, self.CORNER_HEIGHT)
  2641.         self.Lines[self.T].SetPosition(self.CORNER_WIDTH, 0)
  2642.  
  2643.     def __del__(self):
  2644.         Window.__del__(self)
  2645.  
  2646.     def SetSize(self, width, height):
  2647.  
  2648.         width = max(self.CORNER_WIDTH*2, width)
  2649.         height = max(self.CORNER_HEIGHT*2, height)
  2650.         Window.SetSize(self, width, height)
  2651.  
  2652.         self.Corners[self.LB].SetPosition(0, height - self.CORNER_HEIGHT)
  2653.         self.Corners[self.RT].SetPosition(width - self.CORNER_WIDTH, 0)
  2654.         self.Corners[self.RB].SetPosition(width - self.CORNER_WIDTH, height - self.CORNER_HEIGHT)
  2655.         self.Lines[self.R].SetPosition(width - self.CORNER_WIDTH, self.CORNER_HEIGHT)
  2656.         self.Lines[self.B].SetPosition(self.CORNER_HEIGHT, height - self.CORNER_HEIGHT)
  2657.  
  2658.         verticalShowingPercentage = float((height - self.CORNER_HEIGHT*2) - self.LINE_HEIGHT) / self.LINE_HEIGHT
  2659.         horizontalShowingPercentage = float((width - self.CORNER_WIDTH*2) - self.LINE_WIDTH) / self.LINE_WIDTH
  2660.  
  2661.         self.Lines[self.L].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
  2662.         self.Lines[self.R].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
  2663.         self.Lines[self.T].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
  2664.         self.Lines[self.B].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
  2665.  
  2666.         #self.Base.GetWidth()
  2667.         #self.Base.GetHeight()
  2668.         """
  2669.             Defalt Width : 128, Height : 128
  2670.             0.0 > 128, 1.0 > 256
  2671.         """
  2672.         if self.Base:
  2673.             self.Base.SetRenderingRect(0, 0, (float(width)-32)/float(self.Base.GetWidth()) - 1.0, (float(height)-32)/float(self.Base.GetHeight()) - 1.0)
  2674.  
  2675.     def MakeBase(self):
  2676.         self.Base = ExpandedImageBox()
  2677.         self.Base.AddFlag("not_pick")
  2678.         self.Base.LoadImage("d:/ymir work/ui/pattern/Board_Base.tga")
  2679.         self.Base.SetParent(self)
  2680.         self.Base.SetPosition(16, 16)
  2681.         self.Base.SetAlpha(0.8)
  2682.         self.Base.Show()
  2683.  
  2684.     def ShowInternal(self):
  2685.         self.Base.Show()
  2686.         for wnd in self.Lines:
  2687.             wnd.Show()
  2688.         for wnd in self.Corners:
  2689.             wnd.Show()
  2690.  
  2691.     def HideInternal(self):
  2692.         self.Base.Hide()
  2693.         for wnd in self.Lines:
  2694.             wnd.Hide()
  2695.         for wnd in self.Corners:
  2696.             wnd.Hide()
  2697.  
  2698. class ThinBoardCircle(Window):
  2699.     CORNER_WIDTH = 4
  2700.     CORNER_HEIGHT = 4
  2701.     LINE_WIDTH = 4
  2702.     LINE_HEIGHT = 4
  2703.     BOARD_COLOR = grp.GenerateColor(0.0, 0.0, 0.0, 1.0)
  2704.  
  2705.     LT = 0
  2706.     LB = 1
  2707.     RT = 2
  2708.     RB = 3
  2709.     L = 0
  2710.     R = 1
  2711.     T = 2
  2712.     B = 3
  2713.  
  2714.     def __init__(self, layer = "UI"):
  2715.         Window.__init__(self, layer)
  2716.  
  2717.         CornerFileNames = [ "d:/ymir work/ui/pattern/thinboardcircle/ThinBoard_Corner_"+dir+"_Circle.tga" for dir in ["LeftTop","LeftBottom","RightTop","RightBottom"] ]
  2718.         LineFileNames = [ "d:/ymir work/ui/pattern/thinboardcircle/ThinBoard_Line_"+dir+"_Circle.tga" for dir in ["Left","Right","Top","Bottom"] ]
  2719.  
  2720.         self.Corners = []
  2721.         for fileName in CornerFileNames:
  2722.             Corner = ExpandedImageBox()
  2723.             Corner.AddFlag("attach")
  2724.             Corner.AddFlag("not_pick")
  2725.             Corner.LoadImage(fileName)
  2726.             Corner.SetParent(self)
  2727.             Corner.SetPosition(0, 0)
  2728.             Corner.Show()
  2729.             self.Corners.append(Corner)
  2730.  
  2731.         self.Lines = []
  2732.         for fileName in LineFileNames:
  2733.             Line = ExpandedImageBox()
  2734.             Line.AddFlag("attach")
  2735.             Line.AddFlag("not_pick")
  2736.             Line.LoadImage(fileName)
  2737.             Line.SetParent(self)
  2738.             Line.SetPosition(0, 0)
  2739.             Line.Show()
  2740.             self.Lines.append(Line)
  2741.  
  2742.         Base = Bar()
  2743.         Base.SetParent(self)
  2744.         Base.AddFlag("attach")
  2745.         Base.AddFlag("not_pick")
  2746.         Base.SetPosition(self.CORNER_WIDTH, self.CORNER_HEIGHT)
  2747.         Base.SetColor(self.BOARD_COLOR)
  2748.         Base.Show()
  2749.         self.Base = Base
  2750.  
  2751.         self.Lines[self.L].SetPosition(0, self.CORNER_HEIGHT)
  2752.         self.Lines[self.T].SetPosition(self.CORNER_WIDTH, 0)
  2753.  
  2754.     def __del__(self):
  2755.         Window.__del__(self)
  2756.  
  2757.     def SetSize(self, width, height):
  2758.  
  2759.         width = max(self.CORNER_WIDTH*2, width)
  2760.         height = max(self.CORNER_HEIGHT*2, height)
  2761.         Window.SetSize(self, width, height)
  2762.  
  2763.         self.Corners[self.LB].SetPosition(0, height - self.CORNER_HEIGHT)
  2764.         self.Corners[self.RT].SetPosition(width - self.CORNER_WIDTH, 0)
  2765.         self.Corners[self.RB].SetPosition(width - self.CORNER_WIDTH, height - self.CORNER_HEIGHT)
  2766.         self.Lines[self.R].SetPosition(width - self.CORNER_WIDTH, self.CORNER_HEIGHT)
  2767.         self.Lines[self.B].SetPosition(self.CORNER_HEIGHT, height - self.CORNER_HEIGHT)
  2768.  
  2769.         verticalShowingPercentage = float((height - self.CORNER_HEIGHT*2) - self.LINE_HEIGHT) / self.LINE_HEIGHT
  2770.         horizontalShowingPercentage = float((width - self.CORNER_WIDTH*2) - self.LINE_WIDTH) / self.LINE_WIDTH
  2771.         self.Lines[self.L].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
  2772.         self.Lines[self.R].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
  2773.         self.Lines[self.T].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
  2774.         self.Lines[self.B].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
  2775.         self.Base.SetSize(width - self.CORNER_WIDTH*2, height - self.CORNER_HEIGHT*2)
  2776.  
  2777.     def ShowInternal(self):
  2778.         self.Base.Show()
  2779.         for wnd in self.Lines:
  2780.             wnd.Show()
  2781.         for wnd in self.Corners:
  2782.             wnd.Show()
  2783.  
  2784.     def HideInternal(self):
  2785.         self.Base.Hide()
  2786.         for wnd in self.Lines:
  2787.             wnd.Hide()
  2788.         for wnd in self.Corners:
  2789.             wnd.Hide()
  2790.  
  2791. if app.ENABLE_MYSHOP_DECO:
  2792.     class ShopDecoTitle(Window):
  2793.         DEFAULT_VALUE = 16
  2794.         CORNER_WIDTH = 48
  2795.         CORNER_HEIGHT = 32
  2796.         LINE_WIDTH = 16
  2797.         LINE_HEIGHT = 32
  2798.  
  2799.         LT = 0
  2800.         LB = 1
  2801.         RT = 2
  2802.         RB = 3
  2803.         L = 0
  2804.         R = 1
  2805.         T = 2
  2806.         B = 3
  2807.  
  2808.         def __init__(self, type, layer = "UI"):
  2809.             Window.__init__(self, layer)
  2810.            
  2811.             CornerFileNames, LineFileNames = self.__GetFilePath(type)
  2812.            
  2813.             if CornerFileNames == None or LineFileNames == None :
  2814.                 return
  2815.  
  2816.             self.Corners = []
  2817.             for fileName in CornerFileNames:
  2818.                 Corner = ExpandedImageBox()
  2819.                 Corner.AddFlag("attach")
  2820.                 Corner.AddFlag("not_pick")
  2821.                 Corner.LoadImage(fileName)
  2822.                 Corner.SetParent(self)
  2823.                 Corner.SetPosition(0, 0)
  2824.                 Corner.Show()
  2825.                 self.Corners.append(Corner)
  2826.  
  2827.             self.Lines = []
  2828.             for fileName in LineFileNames:
  2829.                 Line = ExpandedImageBox()
  2830.                 Line.AddFlag("attach")
  2831.                 Line.AddFlag("not_pick")
  2832.                 Line.LoadImage(fileName)
  2833.                 Line.SetParent(self)
  2834.                 Line.SetPosition(0, 0)
  2835.                 Line.Show()
  2836.                 self.Lines.append(Line)
  2837.                
  2838.         def __del__(self):
  2839.             Window.__del__(self)
  2840.            
  2841.         def __GetFilePath(self, type):
  2842.             import uiMyShopDecoration
  2843.            
  2844.             CornerFileNames = [ uiMyShopDecoration.DECO_SHOP_TITLE_LIST[type][1]+"_"+dir+".tga" for dir in ["left_top","left_bottom","right_top","right_bottom"] ]
  2845.             LineFileNames = [ uiMyShopDecoration.DECO_SHOP_TITLE_LIST[type][1]+"_"+dir+".tga" for dir in ["left","right","top","bottom"] ]
  2846.            
  2847.             return CornerFileNames, LineFileNames
  2848.  
  2849.         def SetSize(self, width, height):
  2850.             width = max(self.DEFAULT_VALUE*2, width)
  2851.             height = max(self.DEFAULT_VALUE*2, height)
  2852.             Window.SetSize(self, width, height)
  2853.            
  2854.             self.Corners[self.LT].SetPosition(-self.CORNER_WIDTH + self.DEFAULT_VALUE, -self.CORNER_HEIGHT + self.DEFAULT_VALUE)
  2855.             self.Corners[self.LB].SetPosition(-self.CORNER_WIDTH + self.DEFAULT_VALUE, height - self.CORNER_HEIGHT + self.DEFAULT_VALUE)
  2856.            
  2857.             self.Corners[self.RT].SetPosition(width - self.DEFAULT_VALUE, -self.CORNER_HEIGHT + self.DEFAULT_VALUE)
  2858.             self.Corners[self.RB].SetPosition(width - self.DEFAULT_VALUE, height - self.CORNER_HEIGHT + self.DEFAULT_VALUE)
  2859.            
  2860.             self.Lines[self.L].SetPosition(0, self.DEFAULT_VALUE)
  2861.             self.Lines[self.R].SetPosition(width - self.DEFAULT_VALUE, self.DEFAULT_VALUE)
  2862.             self.Lines[self.B].SetPosition(self.DEFAULT_VALUE, height - self.LINE_HEIGHT + self.DEFAULT_VALUE)
  2863.             self.Lines[self.T].SetPosition(self.DEFAULT_VALUE, -self.LINE_HEIGHT + self.DEFAULT_VALUE)
  2864.            
  2865.             verticalShowingPercentage = float((height - self.DEFAULT_VALUE*2) - self.DEFAULT_VALUE) / self.DEFAULT_VALUE
  2866.             horizontalShowingPercentage = float((width - self.DEFAULT_VALUE*2) - self.DEFAULT_VALUE) / self.DEFAULT_VALUE
  2867.            
  2868.             self.Lines[self.L].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
  2869.             self.Lines[self.R].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
  2870.             self.Lines[self.T].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
  2871.             self.Lines[self.B].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
  2872.  
  2873.         def ShowInternal(self):
  2874.             for wnd in self.Lines:
  2875.                 wnd.Show()
  2876.             for wnd in self.Corners:
  2877.                 wnd.Show()
  2878.  
  2879.         def HideInternal(self):
  2880.             for wnd in self.Lines:
  2881.                 wnd.Hide()
  2882.             for wnd in self.Corners:
  2883.                 wnd.Hide()
  2884.  
  2885.  
  2886. class ScrollBar(Window):
  2887.  
  2888.     SCROLLBAR_WIDTH = 17
  2889.     SCROLLBAR_MIDDLE_HEIGHT = 9
  2890.     SCROLLBAR_BUTTON_WIDTH = 17
  2891.     SCROLLBAR_BUTTON_HEIGHT = 17
  2892.     MIDDLE_BAR_POS = 5
  2893.     MIDDLE_BAR_UPPER_PLACE = 3
  2894.     MIDDLE_BAR_DOWNER_PLACE = 4
  2895.     TEMP_SPACE = MIDDLE_BAR_UPPER_PLACE + MIDDLE_BAR_DOWNER_PLACE
  2896.  
  2897.     class MiddleBar(DragButton):
  2898.         def __init__(self):
  2899.             DragButton.__init__(self)
  2900.             self.AddFlag("movable")
  2901.             #self.AddFlag("restrict_x")
  2902.  
  2903.         def MakeImage(self):
  2904.             top = ImageBox()
  2905.             top.SetParent(self)
  2906.             top.LoadImage("d:/ymir work/ui/pattern/ScrollBar_Top.tga")
  2907.             top.SetPosition(0, 0)
  2908.             top.AddFlag("not_pick")
  2909.             top.Show()
  2910.             bottom = ImageBox()
  2911.             bottom.SetParent(self)
  2912.             bottom.LoadImage("d:/ymir work/ui/pattern/ScrollBar_Bottom.tga")
  2913.             bottom.AddFlag("not_pick")
  2914.             bottom.Show()
  2915.  
  2916.             middle = ExpandedImageBox()
  2917.             middle.SetParent(self)
  2918.             middle.LoadImage("d:/ymir work/ui/pattern/ScrollBar_Middle.tga")
  2919.             middle.SetPosition(0, 4)
  2920.             middle.AddFlag("not_pick")
  2921.             middle.Show()
  2922.  
  2923.             self.top = top
  2924.             self.bottom = bottom
  2925.             self.middle = middle
  2926.  
  2927.         def SetSize(self, height):
  2928.             height = max(12, height)
  2929.             DragButton.SetSize(self, 10, height)
  2930.             self.bottom.SetPosition(0, height-4)
  2931.  
  2932.             height -= 4*3
  2933.             self.middle.SetRenderingRect(0, 0, 0, float(height)/4.0)
  2934.  
  2935.     def __init__(self):
  2936.         Window.__init__(self)
  2937.  
  2938.         self.pageSize = 1
  2939.         self.curPos = 0.0
  2940.         self.eventScroll = lambda *arg: None
  2941.         self.lockFlag = False
  2942.         self.scrollStep = 0.20
  2943.        
  2944.         self.UpScrollButtonEvent    = lambda *arg: None
  2945.         self.DownScrollButtonEvent  = lambda *arg: None
  2946.        
  2947.         self.eventFuncCall = True
  2948.            
  2949.  
  2950.  
  2951.         self.CreateScrollBar()
  2952.  
  2953.     def __del__(self):
  2954.         Window.__del__(self)
  2955.  
  2956.     def CreateScrollBar(self):
  2957.         barSlot = Bar3D()
  2958.         barSlot.SetParent(self)
  2959.         barSlot.AddFlag("not_pick")
  2960.         barSlot.Show()
  2961.  
  2962.         middleBar = self.MiddleBar()
  2963.         middleBar.SetParent(self)
  2964.         middleBar.SetMoveEvent(__mem_func__(self.OnMove))
  2965.         middleBar.Show()
  2966.         middleBar.MakeImage()
  2967.         middleBar.SetSize(12)
  2968.  
  2969.         upButton = Button()
  2970.         upButton.SetParent(self)
  2971.         upButton.SetEvent(__mem_func__(self.OnUp))
  2972.         upButton.SetUpVisual("d:/ymir work/ui/public/scrollbar_up_button_01.sub")
  2973.         upButton.SetOverVisual("d:/ymir work/ui/public/scrollbar_up_button_02.sub")
  2974.         upButton.SetDownVisual("d:/ymir work/ui/public/scrollbar_up_button_03.sub")
  2975.         upButton.Show()
  2976.  
  2977.         downButton = Button()
  2978.         downButton.SetParent(self)
  2979.         downButton.SetEvent(__mem_func__(self.OnDown))
  2980.         downButton.SetUpVisual("d:/ymir work/ui/public/scrollbar_down_button_01.sub")
  2981.         downButton.SetOverVisual("d:/ymir work/ui/public/scrollbar_down_button_02.sub")
  2982.         downButton.SetDownVisual("d:/ymir work/ui/public/scrollbar_down_button_03.sub")
  2983.         downButton.Show()
  2984.  
  2985.         self.upButton = upButton
  2986.         self.downButton = downButton
  2987.         self.middleBar = middleBar
  2988.         self.barSlot = barSlot
  2989.  
  2990.         self.SCROLLBAR_WIDTH = self.upButton.GetWidth()
  2991.         self.SCROLLBAR_MIDDLE_HEIGHT = self.middleBar.GetHeight()
  2992.         self.SCROLLBAR_BUTTON_WIDTH = self.upButton.GetWidth()
  2993.         self.SCROLLBAR_BUTTON_HEIGHT = self.upButton.GetHeight()
  2994.  
  2995.     def Destroy(self):
  2996.         self.middleBar = None
  2997.         self.upButton = None
  2998.         self.downButton = None
  2999.         self.eventScroll = lambda *arg: None
  3000.        
  3001.         self.UpScrollButtonEvent    = lambda *arg: None
  3002.         self.DownScrollButtonEvent  = lambda *arg: None
  3003.        
  3004.         self.eventFuncCall  = True
  3005.  
  3006.     def SetUpScrollButtonEvent(self, event):
  3007.         self.UpScrollButtonEvent = event
  3008.    
  3009.     def SetDownScrollButtonEvent(self, event):
  3010.         self.DownScrollButtonEvent = event
  3011.        
  3012.     def SetEvnetFuncCall(self, callable):
  3013.         self.eventFuncCall = callable
  3014.            
  3015.     def SetScrollEvent(self, event):
  3016.         self.eventScroll = event
  3017.  
  3018.     def SetMiddleBarSize(self, pageScale):
  3019.         realHeight = self.GetHeight() - self.SCROLLBAR_BUTTON_HEIGHT*2
  3020.         self.SCROLLBAR_MIDDLE_HEIGHT = int(pageScale * float(realHeight))
  3021.         self.middleBar.SetSize(self.SCROLLBAR_MIDDLE_HEIGHT)
  3022.         self.pageSize = (self.GetHeight() - self.SCROLLBAR_BUTTON_HEIGHT*2) - self.SCROLLBAR_MIDDLE_HEIGHT - (self.TEMP_SPACE)
  3023.  
  3024.     def SetScrollBarSize(self, height):
  3025.         self.pageSize = (height - self.SCROLLBAR_BUTTON_HEIGHT*2) - self.SCROLLBAR_MIDDLE_HEIGHT - (self.TEMP_SPACE)
  3026.         self.SetSize(self.SCROLLBAR_WIDTH, height)
  3027.         self.upButton.SetPosition(0, 0)
  3028.         self.downButton.SetPosition(0, height - self.SCROLLBAR_BUTTON_HEIGHT)
  3029.         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)
  3030.         self.middleBar.SetPosition(self.MIDDLE_BAR_POS, 0)
  3031.  
  3032.         self.UpdateBarSlot()
  3033.  
  3034.     def UpdateBarSlot(self):
  3035.         self.barSlot.SetPosition(0, self.SCROLLBAR_BUTTON_HEIGHT)
  3036.         self.barSlot.SetSize(self.GetWidth() - 2, self.GetHeight() - self.SCROLLBAR_BUTTON_HEIGHT*2 - 2)
  3037.  
  3038.     def GetPos(self):
  3039.         return self.curPos
  3040.  
  3041.     def SetPos(self, pos, event_callable = True):
  3042.         pos = max(0.0, pos)
  3043.         pos = min(1.0, pos)
  3044.  
  3045.         newPos = float(self.pageSize) * pos
  3046.         self.middleBar.SetPosition(self.MIDDLE_BAR_POS, int(newPos) + self.SCROLLBAR_BUTTON_HEIGHT + self.MIDDLE_BAR_UPPER_PLACE)
  3047.        
  3048.         self.OnMove(event_callable)
  3049.  
  3050.     def SetScrollStep(self, step):
  3051.         self.scrollStep = step
  3052.    
  3053.     def GetScrollStep(self):
  3054.         return self.scrollStep
  3055.        
  3056.     def OnUp(self):
  3057.         self.SetPos(self.curPos-self.scrollStep, self.eventFuncCall)
  3058.         self.UpScrollButtonEvent()
  3059.            
  3060.     def OnDown(self):
  3061.         self.SetPos(self.curPos+self.scrollStep, self.eventFuncCall)
  3062.         self.DownScrollButtonEvent()
  3063.    
  3064.     def OnMove(self, event_callable = True):
  3065.  
  3066.         if self.lockFlag:
  3067.             return
  3068.  
  3069.         if 0 == self.pageSize:
  3070.             return
  3071.  
  3072.         (xLocal, yLocal) = self.middleBar.GetLocalPosition()
  3073.         self.curPos = float(yLocal - self.SCROLLBAR_BUTTON_HEIGHT - self.MIDDLE_BAR_UPPER_PLACE) / float(self.pageSize)
  3074.        
  3075.         if event_callable:
  3076.             self.eventScroll()
  3077.  
  3078.     def OnMouseLeftButtonDown(self):
  3079.         (xMouseLocalPosition, yMouseLocalPosition) = self.GetMouseLocalPosition()
  3080.         pickedPos = yMouseLocalPosition - self.SCROLLBAR_BUTTON_HEIGHT - self.SCROLLBAR_MIDDLE_HEIGHT/2
  3081.         newPos = float(pickedPos) / float(self.pageSize)
  3082.         self.SetPos(newPos)
  3083.  
  3084.     def LockScroll(self):
  3085.         self.lockFlag = True
  3086.  
  3087.     def UnlockScroll(self):
  3088.         self.lockFlag = False
  3089.  
  3090. class ThinScrollBar(ScrollBar):
  3091.  
  3092.     def CreateScrollBar(self):
  3093.         middleBar = self.MiddleBar()
  3094.         middleBar.SetParent(self)
  3095.         middleBar.SetMoveEvent(__mem_func__(self.OnMove))
  3096.         middleBar.Show()
  3097.         middleBar.SetUpVisual("d:/ymir work/ui/public/scrollbar_thin_middle_button_01.sub")
  3098.         middleBar.SetOverVisual("d:/ymir work/ui/public/scrollbar_thin_middle_button_02.sub")
  3099.         middleBar.SetDownVisual("d:/ymir work/ui/public/scrollbar_thin_middle_button_03.sub")
  3100.  
  3101.         upButton = Button()
  3102.         upButton.SetParent(self)
  3103.         upButton.SetUpVisual("d:/ymir work/ui/public/scrollbar_thin_up_button_01.sub")
  3104.         upButton.SetOverVisual("d:/ymir work/ui/public/scrollbar_thin_up_button_02.sub")
  3105.         upButton.SetDownVisual("d:/ymir work/ui/public/scrollbar_thin_up_button_03.sub")
  3106.         upButton.SetEvent(__mem_func__(self.OnUp))
  3107.         upButton.Show()
  3108.  
  3109.         downButton = Button()
  3110.         downButton.SetParent(self)
  3111.         downButton.SetUpVisual("d:/ymir work/ui/public/scrollbar_thin_down_button_01.sub")
  3112.         downButton.SetOverVisual("d:/ymir work/ui/public/scrollbar_thin_down_button_02.sub")
  3113.         downButton.SetDownVisual("d:/ymir work/ui/public/scrollbar_thin_down_button_03.sub")
  3114.         downButton.SetEvent(__mem_func__(self.OnDown))
  3115.         downButton.Show()
  3116.  
  3117.         self.middleBar = middleBar
  3118.         self.upButton = upButton
  3119.         self.downButton = downButton
  3120.  
  3121.         self.SCROLLBAR_WIDTH = self.upButton.GetWidth()
  3122.         self.SCROLLBAR_MIDDLE_HEIGHT = self.middleBar.GetHeight()
  3123.         self.SCROLLBAR_BUTTON_WIDTH = self.upButton.GetWidth()
  3124.         self.SCROLLBAR_BUTTON_HEIGHT = self.upButton.GetHeight()
  3125.         self.MIDDLE_BAR_POS = 0
  3126.         self.MIDDLE_BAR_UPPER_PLACE = 0
  3127.         self.MIDDLE_BAR_DOWNER_PLACE = 0
  3128.         self.TEMP_SPACE = 0
  3129.  
  3130.     def UpdateBarSlot(self):
  3131.         pass
  3132.  
  3133. class SmallThinScrollBar(ScrollBar):
  3134.  
  3135.     def CreateScrollBar(self):
  3136.         middleBar = self.MiddleBar()
  3137.         middleBar.SetParent(self)
  3138.         middleBar.SetMoveEvent(__mem_func__(self.OnMove))
  3139.         middleBar.Show()
  3140.         middleBar.SetUpVisual("d:/ymir work/ui/public/scrollbar_small_thin_middle_button_01.sub")
  3141.         middleBar.SetOverVisual("d:/ymir work/ui/public/scrollbar_small_thin_middle_button_01.sub")
  3142.         middleBar.SetDownVisual("d:/ymir work/ui/public/scrollbar_small_thin_middle_button_01.sub")
  3143.  
  3144.         upButton = Button()
  3145.         upButton.SetParent(self)
  3146.         upButton.SetUpVisual("d:/ymir work/ui/public/scrollbar_small_thin_up_button_01.sub")
  3147.         upButton.SetOverVisual("d:/ymir work/ui/public/scrollbar_small_thin_up_button_02.sub")
  3148.         upButton.SetDownVisual("d:/ymir work/ui/public/scrollbar_small_thin_up_button_03.sub")
  3149.         upButton.SetEvent(__mem_func__(self.OnUp))
  3150.         upButton.Show()
  3151.  
  3152.         downButton = Button()
  3153.         downButton.SetParent(self)
  3154.         downButton.SetUpVisual("d:/ymir work/ui/public/scrollbar_small_thin_down_button_01.sub")
  3155.         downButton.SetOverVisual("d:/ymir work/ui/public/scrollbar_small_thin_down_button_02.sub")
  3156.         downButton.SetDownVisual("d:/ymir work/ui/public/scrollbar_small_thin_down_button_03.sub")
  3157.         downButton.SetEvent(__mem_func__(self.OnDown))
  3158.         downButton.Show()
  3159.  
  3160.         self.middleBar = middleBar
  3161.         self.upButton = upButton
  3162.         self.downButton = downButton
  3163.  
  3164.         self.SCROLLBAR_WIDTH = self.upButton.GetWidth()
  3165.         self.SCROLLBAR_MIDDLE_HEIGHT = self.middleBar.GetHeight()
  3166.         self.SCROLLBAR_BUTTON_WIDTH = self.upButton.GetWidth()
  3167.         self.SCROLLBAR_BUTTON_HEIGHT = self.upButton.GetHeight()
  3168.         self.MIDDLE_BAR_POS = 0
  3169.         self.MIDDLE_BAR_UPPER_PLACE = 0
  3170.         self.MIDDLE_BAR_DOWNER_PLACE = 0
  3171.         self.TEMP_SPACE = 0
  3172.  
  3173.     def UpdateBarSlot(self):
  3174.         pass
  3175.  
  3176. class SliderBar(Window):
  3177.  
  3178.     def __init__(self):
  3179.         Window.__init__(self)
  3180.  
  3181.         self.curPos = 1.0
  3182.         self.pageSize = 1.0
  3183.         self.eventChange = None
  3184.  
  3185.         self.__CreateBackGroundImage()
  3186.         self.__CreateCursor()
  3187.  
  3188.     def __del__(self):
  3189.         Window.__del__(self)
  3190.  
  3191.     def __CreateBackGroundImage(self):
  3192.         img = ImageBox()
  3193.         img.SetParent(self)
  3194.         img.LoadImage("d:/ymir work/ui/game/windows/sliderbar.sub")
  3195.         img.Show()
  3196.         self.backGroundImage = img
  3197.  
  3198.         ##
  3199.         self.SetSize(self.backGroundImage.GetWidth(), self.backGroundImage.GetHeight())
  3200.  
  3201.     def __CreateCursor(self):
  3202.         cursor = DragButton()
  3203.         cursor.AddFlag("movable")
  3204.         cursor.AddFlag("restrict_y")
  3205.         cursor.SetParent(self)
  3206.         cursor.SetMoveEvent(__mem_func__(self.__OnMove))
  3207.         cursor.SetUpVisual("d:/ymir work/ui/game/windows/sliderbar_cursor.sub")
  3208.         cursor.SetOverVisual("d:/ymir work/ui/game/windows/sliderbar_cursor.sub")
  3209.         cursor.SetDownVisual("d:/ymir work/ui/game/windows/sliderbar_cursor.sub")
  3210.         cursor.Show()
  3211.         self.cursor = cursor
  3212.  
  3213.         ##
  3214.         self.cursor.SetRestrictMovementArea(0, 0, self.backGroundImage.GetWidth(), 0)
  3215.         self.pageSize = self.backGroundImage.GetWidth() - self.cursor.GetWidth()
  3216.  
  3217.     def __OnMove(self):
  3218.         (xLocal, yLocal) = self.cursor.GetLocalPosition()
  3219.         self.curPos = float(xLocal) / float(self.pageSize)
  3220.  
  3221.         if self.eventChange:
  3222.             self.eventChange()
  3223.  
  3224.     def SetSliderPos(self, pos):
  3225.         self.curPos = pos
  3226.         self.cursor.SetPosition(int(self.pageSize * pos), 0)
  3227.  
  3228.     def GetSliderPos(self):
  3229.         return self.curPos
  3230.  
  3231.     def SetEvent(self, event):
  3232.         self.eventChange = event
  3233.  
  3234.     def Enable(self):
  3235.         self.cursor.Show()
  3236.  
  3237.     def Disable(self):
  3238.         self.cursor.Hide()
  3239.  
  3240. class ListBox(Window):
  3241.  
  3242.     TEMPORARY_PLACE = 3
  3243.  
  3244.     def __init__(self, layer = "UI"):
  3245.         Window.__init__(self, layer)
  3246.         self.overLine = -1
  3247.         self.selectedLine = -1
  3248.         self.width = 0
  3249.         self.height = 0
  3250.         self.stepSize = 17
  3251.         self.basePos = 0
  3252.         self.showLineCount = 0
  3253.         self.itemCenterAlign = True
  3254.         self.itemList = []
  3255.         self.keyDict = {}
  3256.         self.textDict = {}
  3257.         self.event = lambda *arg: None
  3258.         if app.ENABLE_12ZI:
  3259.             self.SelectColor = SELECT_COLOR
  3260.     def __del__(self):
  3261.         Window.__del__(self)
  3262.  
  3263.     def SetWidth(self, width):
  3264.         self.SetSize(width, self.height)
  3265.        
  3266.     if app.ENABLE_12ZI:    
  3267.         def SetSelectColor(self, color):
  3268.             self.SelectColor = color
  3269.  
  3270.     def SetSize(self, width, height):
  3271.         Window.SetSize(self, width, height)
  3272.         self.width = width
  3273.         self.height = height
  3274.  
  3275.     def SetTextCenterAlign(self, flag):
  3276.         self.itemCenterAlign = flag
  3277.  
  3278.     def SetBasePos(self, pos):
  3279.         self.basePos = pos
  3280.         self._LocateItem()
  3281.  
  3282.     def ClearItem(self):
  3283.         self.keyDict = {}
  3284.         self.textDict = {}
  3285.         self.itemList = []
  3286.         self.overLine = -1
  3287.         self.selectedLine = -1
  3288.  
  3289.     if app.ENABLE_CHANNEL_LIST:
  3290.         def InsertItem(self, number, text, textColor = 0x00000000):
  3291.             self.keyDict[len(self.itemList)] = number
  3292.             self.textDict[len(self.itemList)] = text
  3293.  
  3294.             textLine = TextLine()
  3295.             textLine.SetParent(self)
  3296.             textLine.SetText(text)
  3297.             if textColor != 0x00000000:
  3298.                 textLine.SetPackedFontColor(textColor)
  3299.             textLine.Show()
  3300.    
  3301.             if self.itemCenterAlign:
  3302.                 textLine.SetWindowHorizontalAlignCenter()
  3303.                 textLine.SetHorizontalAlignCenter()
  3304.  
  3305.             self.itemList.append(textLine)
  3306.  
  3307.             self._LocateItem()
  3308.     else:
  3309.         def InsertItem(self, number, text):
  3310.             self.keyDict[len(self.itemList)] = number
  3311.             self.textDict[len(self.itemList)] = text
  3312.  
  3313.             textLine = TextLine()
  3314.             textLine.SetParent(self)
  3315.             textLine.SetText(text)
  3316.             textLine.Show()
  3317.  
  3318.             if self.itemCenterAlign:
  3319.                 textLine.SetWindowHorizontalAlignCenter()
  3320.                 textLine.SetHorizontalAlignCenter()
  3321.  
  3322.             self.itemList.append(textLine)
  3323.  
  3324.             self._LocateItem()
  3325.  
  3326.     def ChangeItem(self, number, text):
  3327.         for key, value in self.keyDict.items():
  3328.             if value == number:
  3329.                 self.textDict[key] = text
  3330.  
  3331.                 if number < len(self.itemList):
  3332.                     self.itemList[key].SetText(text)
  3333.  
  3334.                 return
  3335.  
  3336.     def LocateItem(self):
  3337.         self._LocateItem()
  3338.  
  3339.     def _LocateItem(self):
  3340.  
  3341.         skipCount = self.basePos
  3342.         yPos = 0
  3343.         self.showLineCount = 0
  3344.  
  3345.         for textLine in self.itemList:
  3346.             textLine.Hide()
  3347.  
  3348.             if skipCount > 0:
  3349.                 skipCount -= 1
  3350.                 continue
  3351.  
  3352.             if app.ENABLE_PRIVATESHOP_SEARCH_SYSTEM:
  3353.                 textLine.SetPosition(0, yPos + 3)
  3354.             else:
  3355.                 if localeInfo.IsARABIC():
  3356.                     w, h = textLine.GetTextSize()
  3357.                     textLine.SetPosition(w+10, yPos + 3)
  3358.                 else:
  3359.                     textLine.SetPosition(0, yPos + 3)
  3360.  
  3361.             yPos += self.stepSize
  3362.  
  3363.             if yPos <= self.GetHeight():
  3364.                 self.showLineCount += 1
  3365.                 textLine.Show()
  3366.  
  3367.     def ArrangeItem(self):
  3368.         self.SetSize(self.width, len(self.itemList) * self.stepSize)
  3369.         self._LocateItem()
  3370.  
  3371.     def GetViewItemCount(self):
  3372.         return int(self.GetHeight() / self.stepSize)
  3373.  
  3374.     def GetItemCount(self):
  3375.         return len(self.itemList)
  3376.  
  3377.     def SetEvent(self, event):
  3378.         self.event = event
  3379.  
  3380.     def SelectItem(self, line):
  3381.  
  3382.         if not self.keyDict.has_key(line):
  3383.             return
  3384.  
  3385.         if not app.ENABLE_PRIVATESHOP_SEARCH_SYSTEM:
  3386.             if line == self.selectedLine:
  3387.                 return
  3388.  
  3389.         self.selectedLine = line
  3390.         self.event(self.keyDict.get(line, 0), self.textDict.get(line, "None"))
  3391.  
  3392.     def GetSelectedItem(self):
  3393.         return self.keyDict.get(self.selectedLine, 0)
  3394.  
  3395.     def OnMouseLeftButtonDown(self):
  3396.         if self.overLine < 0:
  3397.             return
  3398.  
  3399.     def OnMouseLeftButtonUp(self):
  3400.         if self.overLine >= 0:
  3401.             self.SelectItem(self.overLine+self.basePos)
  3402.  
  3403.     def OnUpdate(self):
  3404.  
  3405.         self.overLine = -1
  3406.  
  3407.         if self.IsIn():
  3408.             x, y = self.GetGlobalPosition()
  3409.             height = self.GetHeight()
  3410.             xMouse, yMouse = wndMgr.GetMousePosition()
  3411.  
  3412.             if yMouse - y < height - 1:
  3413.                 self.overLine = (yMouse - y) / self.stepSize
  3414.  
  3415.                 if self.overLine < 0:
  3416.                     self.overLine = -1
  3417.                 if self.overLine >= len(self.itemList):
  3418.                     self.overLine = -1
  3419.  
  3420.     def OnRender(self):
  3421.         xRender, yRender = self.GetGlobalPosition()
  3422.         yRender -= self.TEMPORARY_PLACE
  3423.         widthRender = self.width
  3424.         heightRender = self.height + self.TEMPORARY_PLACE*2
  3425.  
  3426.         if localeInfo.IsCIBN10:
  3427.             if -1 != self.overLine and self.keyDict[self.overLine] != -1:
  3428.                 grp.SetColor(HALF_WHITE_COLOR)
  3429.                 grp.RenderBar(xRender + 2, yRender + self.overLine*self.stepSize + 4, self.width - 3, self.stepSize)               
  3430.  
  3431.             if -1 != self.selectedLine and self.keyDict[self.selectedLine] != -1:
  3432.                 if self.selectedLine >= self.basePos:
  3433.                     if self.selectedLine - self.basePos < self.showLineCount:
  3434.                         if app.ENABLE_12ZI:
  3435.                             grp.SetColor(self.SelectColor)
  3436.                         else:
  3437.                             grp.SetColor(SELECT_COLOR)
  3438.                         grp.RenderBar(xRender + 2, yRender + (self.selectedLine-self.basePos)*self.stepSize + 4, self.width - 3, self.stepSize)
  3439.  
  3440.         else:      
  3441.             if -1 != self.overLine:
  3442.                 grp.SetColor(HALF_WHITE_COLOR)
  3443.                 grp.RenderBar(xRender + 2, yRender + self.overLine*self.stepSize + 4, self.width - 3, self.stepSize)               
  3444.  
  3445.             if -1 != self.selectedLine:
  3446.                 if self.selectedLine >= self.basePos:
  3447.                     if self.selectedLine - self.basePos < self.showLineCount:
  3448.                         if app.ENABLE_12ZI:
  3449.                             grp.SetColor(self.SelectColor)
  3450.                         else:
  3451.                             grp.SetColor(SELECT_COLOR)
  3452.                         grp.RenderBar(xRender + 2, yRender + (self.selectedLine-self.basePos)*self.stepSize + 4, self.width - 3, self.stepSize)
  3453.  
  3454.  
  3455.  
  3456. class ListBox2(ListBox):
  3457.     def __init__(self, *args, **kwargs):
  3458.         ListBox.__init__(self, *args, **kwargs)
  3459.         self.rowCount = 10
  3460.         self.barWidth = 0
  3461.         self.colCount = 0
  3462.  
  3463.     def SetRowCount(self, rowCount):
  3464.         self.rowCount = rowCount
  3465.  
  3466.     def SetSize(self, width, height):
  3467.         ListBox.SetSize(self, width, height)
  3468.         self._RefreshForm()
  3469.  
  3470.     def ClearItem(self):
  3471.         ListBox.ClearItem(self)
  3472.         self._RefreshForm()
  3473.  
  3474.     def InsertItem(self, *args, **kwargs):
  3475.         ListBox.InsertItem(self, *args, **kwargs)
  3476.         self._RefreshForm()
  3477.  
  3478.     def OnUpdate(self):
  3479.         mpos = wndMgr.GetMousePosition()
  3480.         self.overLine = self._CalcPointIndex(mpos)
  3481.  
  3482.     def OnRender(self):
  3483.         x, y = self.GetGlobalPosition()
  3484.         pos = (x + 2, y)
  3485.  
  3486.         if -1 != self.overLine:
  3487.             grp.SetColor(HALF_WHITE_COLOR)
  3488.             self._RenderBar(pos, self.overLine)
  3489.  
  3490.         if -1 != self.selectedLine:
  3491.             if self.selectedLine >= self.basePos:
  3492.                 if self.selectedLine - self.basePos < self.showLineCount:
  3493.                     if app.ENABLE_12ZI:
  3494.                         grp.SetColor(self.SelectColor)
  3495.                     else:
  3496.                         grp.SetColor(SELECT_COLOR)
  3497.                     self._RenderBar(pos, self.selectedLine-self.basePos)
  3498.  
  3499.    
  3500.  
  3501.     def _CalcPointIndex(self, mpos):
  3502.         if self.IsIn():
  3503.             px, py = mpos
  3504.             gx, gy = self.GetGlobalPosition()
  3505.             lx, ly = px - gx, py - gy
  3506.  
  3507.             col = lx / self.barWidth
  3508.             row = ly / self.stepSize
  3509.             idx = col * self.rowCount + row
  3510.             if col >= 0 and col < self.colCount:
  3511.                 if row >= 0 and row < self.rowCount:
  3512.                     if idx >= 0 and idx < len(self.itemList):
  3513.                         return idx
  3514.        
  3515.         return -1
  3516.  
  3517.     def _CalcRenderPos(self, pos, idx):
  3518.         x, y = pos
  3519.         row = idx % self.rowCount
  3520.         col = idx / self.rowCount
  3521.         return (x + col * self.barWidth, y + row * self.stepSize)
  3522.  
  3523.     def _RenderBar(self, basePos, idx):
  3524.         x, y = self._CalcRenderPos(basePos, idx)
  3525.         grp.RenderBar(x, y, self.barWidth - 3, self.stepSize)
  3526.  
  3527.     def _LocateItem(self):
  3528.         pos = (0, self.TEMPORARY_PLACE)
  3529.  
  3530.         self.showLineCount = 0
  3531.         for textLine in self.itemList:
  3532.             x, y = self._CalcRenderPos(pos, self.showLineCount)
  3533.             textLine.SetPosition(x, y)
  3534.             textLine.Show()
  3535.  
  3536.             self.showLineCount += 1
  3537.  
  3538.     def _RefreshForm(self):
  3539.         if len(self.itemList) % self.rowCount:
  3540.             self.colCount = len(self.itemList) / self.rowCount + 1
  3541.         else:
  3542.             self.colCount = len(self.itemList) / self.rowCount
  3543.  
  3544.         if self.colCount:
  3545.             self.barWidth = self.width / self.colCount
  3546.         else:
  3547.             self.barWidth = self.width
  3548.            
  3549. if app.ENABLE_PRIVATESHOP_SEARCH_SYSTEM:
  3550.     class ComboBoxImage(Window):
  3551.         class ListBoxWithBoard(ListBox):
  3552.  
  3553.             def __init__(self, layer):
  3554.                 ListBox.__init__(self, layer)
  3555.  
  3556.             def OnRender(self):
  3557.                 xRender, yRender = self.GetGlobalPosition()
  3558.                 yRender -= self.TEMPORARY_PLACE
  3559.                 widthRender = self.width
  3560.                 heightRender = self.height + self.TEMPORARY_PLACE*2
  3561.                 grp.SetColor(BACKGROUND_COLOR)
  3562.                 grp.RenderBar(xRender, yRender, widthRender, heightRender)
  3563.                 grp.SetColor(DARK_COLOR)
  3564.                 grp.RenderLine(xRender, yRender, widthRender, 0)
  3565.                 grp.RenderLine(xRender, yRender, 0, heightRender)
  3566.                 ListBox.OnRender(self)
  3567.  
  3568.         def __init__(self, parent, name, x ,y):
  3569.             Window.__init__(self)
  3570.             self.isSelected = False
  3571.             self.isOver = False
  3572.             self.isListOpened = False
  3573.             self.event = lambda *arg: None
  3574.             self.enable = True
  3575.             self.imagebox = None
  3576.            
  3577.             ## imagebox
  3578.             image = ImageBox()
  3579.             image.SetParent(parent)
  3580.             image.LoadImage(name)
  3581.             image.SetPosition(x, y)
  3582.             image.Show()
  3583.             self.imagebox = image
  3584.            
  3585.             ## BaseSetting
  3586.             self.x = x + 1
  3587.             self.y = y + 1
  3588.             self.width = self.imagebox.GetWidth() - 3
  3589.             self.height = self.imagebox.GetHeight() - 3
  3590.             self.SetParent(parent)
  3591.  
  3592.             ## TextLine
  3593.             self.textLine = MakeTextLine(self)
  3594.             self.textLine.SetText(localeInfo.UI_ITEM)
  3595.            
  3596.             ## ListBox
  3597.             self.listBox = self.ListBoxWithBoard("TOP_MOST")
  3598.             self.listBox.SetPickAlways()
  3599.             self.listBox.SetParent(self)
  3600.             self.listBox.SetEvent(__mem_func__(self.OnSelectItem))
  3601.             self.listBox.Hide()
  3602.  
  3603.             Window.SetPosition(self, self.x, self.y)
  3604.             Window.SetSize(self, self.width, self.height)
  3605.             self.textLine.UpdateRect()
  3606.             self.__ArrangeListBox()
  3607.            
  3608.         def __del__(self):
  3609.             Window.__del__(self)
  3610.  
  3611.         def Destroy(self):
  3612.             self.textLine = None
  3613.             self.listBox = None
  3614.             self.imagebox = None
  3615.  
  3616.         def SetPosition(self, x, y):
  3617.             Window.SetPosition(self, x, y)
  3618.             self.imagebox.SetPosition(x, y)
  3619.             self.x = x
  3620.             self.y = y
  3621.             self.__ArrangeListBox()
  3622.  
  3623.         def SetSize(self, width, height):
  3624.             Window.SetSize(self, width, height)
  3625.             self.width = width
  3626.             self.height = height
  3627.             self.textLine.UpdateRect()
  3628.             self.__ArrangeListBox()
  3629.  
  3630.         def __ArrangeListBox(self):
  3631.             self.listBox.SetPosition(0, self.height + 5)
  3632.             self.listBox.SetWidth(self.width)
  3633.  
  3634.         def Enable(self):
  3635.             self.enable = True
  3636.  
  3637.         def Disable(self):
  3638.             self.enable = False
  3639.             self.textLine.SetText("")
  3640.             self.CloseListBox()
  3641.  
  3642.         def SetEvent(self, event):
  3643.             self.event = event
  3644.  
  3645.         def ClearItem(self):
  3646.             self.CloseListBox()
  3647.             self.listBox.ClearItem()
  3648.  
  3649.         def InsertItem(self, index, name):
  3650.             self.listBox.InsertItem(index, name)
  3651.             self.listBox.ArrangeItem()
  3652.  
  3653.         def SetCurrentItem(self, text):
  3654.             self.textLine.SetText(text)
  3655.  
  3656.         def SelectItem(self, key):
  3657.             self.listBox.SelectItem(key)
  3658.  
  3659.         def OnSelectItem(self, index, name):
  3660.             self.CloseListBox()
  3661.             self.event(index)
  3662.  
  3663.         def CloseListBox(self):
  3664.             self.isListOpened = False
  3665.             self.listBox.Hide()
  3666.  
  3667.         def OnMouseLeftButtonDown(self):
  3668.        
  3669.             if not self.enable:
  3670.                 return
  3671.  
  3672.             self.isSelected = True
  3673.  
  3674.         def OnMouseLeftButtonUp(self):
  3675.             if not self.enable:
  3676.                 return
  3677.            
  3678.             self.isSelected = False
  3679.            
  3680.             if self.isListOpened:
  3681.                 self.CloseListBox()
  3682.             else:
  3683.                 if self.listBox.GetItemCount() > 0:
  3684.                     self.isListOpened = True
  3685.                     self.listBox.Show()
  3686.                     self.__ArrangeListBox()
  3687.  
  3688.         def OnUpdate(self):
  3689.  
  3690.             if not self.enable:
  3691.                 return
  3692.  
  3693.             if self.IsIn():
  3694.                 self.isOver = True
  3695.             else:
  3696.                 self.isOver = False
  3697.  
  3698.         def OnRender(self):
  3699.             self.x, self.y = self.GetGlobalPosition()
  3700.             xRender = self.x
  3701.             yRender = self.y
  3702.             widthRender = self.width
  3703.             heightRender = self.height
  3704.             if self.isOver:
  3705.                 grp.SetColor(HALF_WHITE_COLOR)
  3706.                 grp.RenderBar(xRender + 2, yRender + 3, self.width - 3, heightRender - 5)
  3707.                 if self.isSelected:
  3708.                     grp.SetColor(WHITE_COLOR)
  3709.                     grp.RenderBar(xRender + 2, yRender + 3, self.width - 3, heightRender - 5)
  3710.  
  3711. class ComboBox(Window):
  3712.  
  3713.     class ListBoxWithBoard(ListBox):
  3714.  
  3715.         def __init__(self, layer):
  3716.             ListBox.__init__(self, layer)
  3717.  
  3718.         def OnRender(self):
  3719.             xRender, yRender = self.GetGlobalPosition()
  3720.             yRender -= self.TEMPORARY_PLACE
  3721.             widthRender = self.width
  3722.             heightRender = self.height + self.TEMPORARY_PLACE*2
  3723.             grp.SetColor(BACKGROUND_COLOR)
  3724.             grp.RenderBar(xRender, yRender, widthRender, heightRender)
  3725.             grp.SetColor(DARK_COLOR)
  3726.             grp.RenderLine(xRender, yRender, widthRender, 0)
  3727.             grp.RenderLine(xRender, yRender, 0, heightRender)
  3728.             grp.SetColor(BRIGHT_COLOR)
  3729.             grp.RenderLine(xRender, yRender+heightRender, widthRender, 0)
  3730.             grp.RenderLine(xRender+widthRender, yRender, 0, heightRender)
  3731.  
  3732.             ListBox.OnRender(self)
  3733.  
  3734.     def __init__(self):
  3735.         Window.__init__(self)
  3736.         self.x = 0
  3737.         self.y = 0
  3738.         self.width = 0
  3739.         self.height = 0
  3740.         self.isSelected = False
  3741.         self.isOver = False
  3742.         self.isListOpened = False
  3743.         self.event = lambda *arg: None
  3744.         self.enable = True
  3745.  
  3746.         self.textLine = MakeTextLine(self)
  3747.         self.textLine.SetText(localeInfo.UI_ITEM)
  3748.  
  3749.         self.listBox = self.ListBoxWithBoard("TOP_MOST")
  3750.         self.listBox.SetPickAlways()
  3751.         self.listBox.SetParent(self)
  3752.         self.listBox.SetEvent(__mem_func__(self.OnSelectItem))
  3753.         self.listBox.Hide()
  3754.  
  3755.     def __del__(self):
  3756.         Window.__del__(self)
  3757.  
  3758.     def Destroy(self):
  3759.         self.textLine = None
  3760.         self.listBox = None
  3761.  
  3762.     def SetPosition(self, x, y):
  3763.         Window.SetPosition(self, x, y)
  3764.         self.x = x
  3765.         self.y = y
  3766.         self.__ArrangeListBox()
  3767.  
  3768.     def SetSize(self, width, height):
  3769.         Window.SetSize(self, width, height)
  3770.         self.width = width
  3771.         self.height = height
  3772.         self.textLine.UpdateRect()
  3773.         self.__ArrangeListBox()
  3774.  
  3775.     def __ArrangeListBox(self):
  3776.         self.listBox.SetPosition(0, self.height + 5)
  3777.         self.listBox.SetWidth(self.width)
  3778.  
  3779.     def Enable(self):
  3780.         self.enable = True
  3781.  
  3782.     def Disable(self):
  3783.         self.enable = False
  3784.         self.textLine.SetText("")
  3785.         self.CloseListBox()
  3786.  
  3787.     def SetEvent(self, event):
  3788.         self.event = event
  3789.  
  3790.     def ClearItem(self):
  3791.         self.CloseListBox()
  3792.         self.listBox.ClearItem()
  3793.  
  3794.     def InsertItem(self, index, name):
  3795.         self.listBox.InsertItem(index, name)
  3796.         self.listBox.ArrangeItem()
  3797.  
  3798.     def SetCurrentItem(self, text):
  3799.         self.textLine.SetText(text)
  3800.  
  3801.     def SelectItem(self, key):
  3802.         self.listBox.SelectItem(key)
  3803.  
  3804.     def OnSelectItem(self, index, name):
  3805.  
  3806.         self.CloseListBox()
  3807.         self.event(index)
  3808.  
  3809.     def CloseListBox(self):
  3810.         self.isListOpened = False
  3811.         self.listBox.Hide()
  3812.  
  3813.     def OnMouseLeftButtonDown(self):
  3814.  
  3815.         if not self.enable:
  3816.             return
  3817.  
  3818.         self.isSelected = True
  3819.  
  3820.     def OnMouseLeftButtonUp(self):
  3821.  
  3822.         if not self.enable:
  3823.             return
  3824.  
  3825.         self.isSelected = False
  3826.  
  3827.         if self.isListOpened:
  3828.             self.CloseListBox()
  3829.         else:
  3830.             if self.listBox.GetItemCount() > 0:
  3831.                 self.isListOpened = True
  3832.                 self.listBox.Show()
  3833.                 self.__ArrangeListBox()
  3834.  
  3835.     def OnUpdate(self):
  3836.  
  3837.         if not self.enable:
  3838.             return
  3839.  
  3840.         if self.IsIn():
  3841.             self.isOver = True
  3842.         else:
  3843.             self.isOver = False
  3844.  
  3845.     def OnRender(self):
  3846.         self.x, self.y = self.GetGlobalPosition()
  3847.         xRender = self.x
  3848.         yRender = self.y
  3849.         widthRender = self.width
  3850.         heightRender = self.height
  3851.         grp.SetColor(BACKGROUND_COLOR)
  3852.         grp.RenderBar(xRender, yRender, widthRender, heightRender)
  3853.         grp.SetColor(DARK_COLOR)
  3854.         grp.RenderLine(xRender, yRender, widthRender, 0)
  3855.         grp.RenderLine(xRender, yRender, 0, heightRender)
  3856.         grp.SetColor(BRIGHT_COLOR)
  3857.         grp.RenderLine(xRender, yRender+heightRender, widthRender, 0)
  3858.         grp.RenderLine(xRender+widthRender, yRender, 0, heightRender)
  3859.  
  3860.         if self.isOver:
  3861.             grp.SetColor(HALF_WHITE_COLOR)
  3862.             grp.RenderBar(xRender + 2, yRender + 3, self.width - 3, heightRender - 5)
  3863.  
  3864.             if self.isSelected:
  3865.                 grp.SetColor(WHITE_COLOR)
  3866.                 grp.RenderBar(xRender + 2, yRender + 3, self.width - 3, heightRender - 5)
  3867.  
  3868. ###################################################################################################
  3869. ## Python Script Loader
  3870. ###################################################################################################
  3871.  
  3872. class ScriptWindow(Window):
  3873.     def __init__(self, layer = "UI"):
  3874.         Window.__init__(self, layer)
  3875.         self.Children = []
  3876.         self.ElementDictionary = {}
  3877.     def __del__(self):
  3878.         Window.__del__(self)
  3879.  
  3880.     def ClearDictionary(self):
  3881.         self.Children = []
  3882.         self.ElementDictionary = {}
  3883.     def InsertChild(self, name, child):
  3884.         self.ElementDictionary[name] = child
  3885.  
  3886.     def IsChild(self, name):
  3887.         return self.ElementDictionary.has_key(name)
  3888.     def GetChild(self, name):
  3889.         return self.ElementDictionary[name]
  3890.  
  3891.     def GetChild2(self, name):
  3892.         return self.ElementDictionary.get(name, None)
  3893.  
  3894.  
  3895. class PythonScriptLoader(object):
  3896.  
  3897.     BODY_KEY_LIST = ( "x", "y", "width", "height" )
  3898.  
  3899.     #####
  3900.  
  3901.     DEFAULT_KEY_LIST = ( "type", "x", "y", )
  3902.     WINDOW_KEY_LIST = ( "width", "height", )
  3903.     IMAGE_KEY_LIST = ( "image", )
  3904.     EXPANDED_IMAGE_KEY_LIST = ( "image", )
  3905.     ANI_IMAGE_KEY_LIST = ( "images", )
  3906.     SLOT_KEY_LIST = ( "width", "height", "slot", )
  3907.     CANDIDATE_LIST_KEY_LIST = ( "item_step", "item_xsize", "item_ysize", )
  3908.     GRID_TABLE_KEY_LIST = ( "start_index", "x_count", "y_count", "x_step", "y_step", )
  3909.     EDIT_LINE_KEY_LIST = ( "width", "height", "input_limit", )
  3910.     COMBO_BOX_KEY_LIST = ( "width", "height", "item", )
  3911.     TITLE_BAR_KEY_LIST = ( "width", )
  3912.     HORIZONTAL_BAR_KEY_LIST = ( "width", )
  3913.     BOARD_KEY_LIST = ( "width", "height", )
  3914.     BOARD_WITH_TITLEBAR_KEY_LIST = ( "width", "height", "title", )
  3915.     BOX_KEY_LIST = ( "width", "height", )
  3916.     BAR_KEY_LIST = ( "width", "height", )
  3917.     LINE_KEY_LIST = ( "width", "height", )
  3918.     SLOTBAR_KEY_LIST = ( "width", "height", )
  3919.     GAUGE_KEY_LIST = ( "width", "color", )
  3920.     SCROLLBAR_KEY_LIST = ( "size", )
  3921.     LIST_BOX_KEY_LIST = ( "width", "height", )
  3922.    
  3923.     if app.ENABLE_MONSTER_CARD or app.ENABLE_MYSHOP_DECO or app.ENABLE_MINI_GAME_YUTNORI:
  3924.         RENDER_TARGET_KEY_LIST = ( "index", )
  3925.  
  3926.     if app.ENABLE_FISH_EVENT:
  3927.         SP_GRID_TABLE_KEY_LIST = ( "start_index", "x_count", "y_count", "x_step", "y_step", )
  3928.    
  3929.     def __init__(self):
  3930.         self.Clear()
  3931.  
  3932.     def Clear(self):
  3933.         self.ScriptDictionary = { "SCREEN_WIDTH" : wndMgr.GetScreenWidth(), "SCREEN_HEIGHT" : wndMgr.GetScreenHeight() }
  3934.         self.InsertFunction = 0
  3935.  
  3936.     def LoadScriptFile(self, window, FileName):
  3937.         import exception
  3938.         import exceptions
  3939.         import os
  3940.         import errno
  3941.         self.Clear()
  3942.  
  3943.         #print "===== Load Script File : %s" % (FileName)
  3944.  
  3945.         #ui ÄÚµå´Â sandbox ³»¿¡¼­ ½ÇÇàµÇ¾î¾ßÇÑ´Ù.(º¿ÀÌ ²¸ÀÖÀ» ¿©Áö°¡ Àֱ⠶§¹®¿¡)
  3946.         import sys
  3947.         from utils import Sandbox
  3948.         sandbox = Sandbox(True, ["uiScriptLocale", "localeInfo", "sys", "item", "app"])
  3949.        
  3950.         # chr, player µîÀº sandbox ³»¿¡¼­ import°¡ Çã¿ëµÇÁö ¾Ê±â ¶§¹®¿¡,(º¿ÀÌ ¾Ç¿ëÇÒ ¿©Áö°¡ ¸Å¿ì Å­.)
  3951.         #  ¹Ì¸® script dictionary¿¡ ÇÊ¿äÇÑ »ó¼ö¸¦ ³Ö¾î³õ´Â´Ù.
  3952.         import chr
  3953.         import playerm2g2
  3954.         import app
  3955.         self.ScriptDictionary["PLAYER_NAME_MAX_LEN"] = chr.PLAYER_NAME_MAX_LEN
  3956.         self.ScriptDictionary["DRAGON_SOUL_EQUIPMENT_SLOT_START"] = playerm2g2.DRAGON_SOUL_EQUIPMENT_SLOT_START
  3957.         self.ScriptDictionary["LOCALE_PATH"] = app.GetLocalePath()
  3958.  
  3959.         try:
  3960.             sandbox.execfile(FileName, self.ScriptDictionary)
  3961.         except IOError, err:
  3962.             import sys
  3963.             import dbg
  3964.             dbg.TraceError("Failed to load script file : %s" % (FileName))
  3965.             dbg.TraceError("error  : %s" % (err))
  3966.             exception.Abort("LoadScriptFile1")
  3967.         except RuntimeError,err:
  3968.             import sys
  3969.             import dbg         
  3970.             dbg.TraceError("Failed to load script file : %s" % (FileName))
  3971.             dbg.TraceError("error  : %s" % (err))
  3972.             exception.Abort("LoadScriptFile2")
  3973.         except:
  3974.             import sys
  3975.             import dbg         
  3976.             dbg.TraceError("Failed to load script file : %s" % (FileName))
  3977.             exception.Abort("LoadScriptFile!!!!!!!!!!!!!!")
  3978.        
  3979.         #####
  3980.  
  3981.         Body = self.ScriptDictionary["window"]
  3982.         self.CheckKeyList("window", Body, self.BODY_KEY_LIST)
  3983.  
  3984.         window.ClearDictionary()
  3985.         self.InsertFunction = window.InsertChild
  3986.  
  3987.         window.SetPosition(int(Body["x"]), int(Body["y"]))
  3988.  
  3989.         if localeInfo.IsARABIC():
  3990.             w = wndMgr.GetScreenWidth()
  3991.             h = wndMgr.GetScreenHeight()
  3992.             if Body.has_key("width"):
  3993.                 w = int(Body["width"])
  3994.             if Body.has_key("height"):
  3995.                 h = int(Body["height"])
  3996.  
  3997.             window.SetSize(w, h)
  3998.         else:
  3999.             window.SetSize(int(Body["width"]), int(Body["height"]))
  4000.             if True == Body.has_key("style"):
  4001.                 for StyleList in Body["style"]:
  4002.                     window.AddFlag(StyleList)
  4003.        
  4004.  
  4005.         self.LoadChildren(window, Body)
  4006.  
  4007.     def LoadChildren(self, parent, dicChildren):
  4008.  
  4009.         if localeInfo.IsARABIC():
  4010.             parent.AddFlag( "rtl" )
  4011.  
  4012.         if True == dicChildren.has_key("style"):
  4013.             for style in dicChildren["style"]:
  4014.                 parent.AddFlag(style)
  4015.  
  4016.         if False == dicChildren.has_key("children"):
  4017.             return False
  4018.  
  4019.         Index = 0
  4020.  
  4021.         ChildrenList = dicChildren["children"]
  4022.         parent.Children = range(len(ChildrenList))
  4023.         for ElementValue in ChildrenList:
  4024.             try:
  4025.                 Name = ElementValue["name"]            
  4026.             except KeyError:
  4027.                 Name = ElementValue["name"] = "NONAME"
  4028.                
  4029.             try:
  4030.                 Type = ElementValue["type"]
  4031.             except KeyError:                               
  4032.                 Type = ElementValue["type"] = "window"             
  4033.  
  4034.             if False == self.CheckKeyList(Name, ElementValue, self.DEFAULT_KEY_LIST):
  4035.                 del parent.Children[Index]
  4036.                 continue
  4037.  
  4038.             if Type == "window":
  4039.                 parent.Children[Index] = ScriptWindow()
  4040.                 parent.Children[Index].SetParent(parent)
  4041.                 self.LoadElementWindow(parent.Children[Index], ElementValue, parent)
  4042.  
  4043.             elif Type == "button":
  4044.                 parent.Children[Index] = Button()
  4045.                 parent.Children[Index].SetParent(parent)
  4046.                 self.LoadElementButton(parent.Children[Index], ElementValue, parent)
  4047.  
  4048.             elif Type == "radio_button":
  4049.                 parent.Children[Index] = RadioButton()
  4050.                 parent.Children[Index].SetParent(parent)
  4051.                 self.LoadElementButton(parent.Children[Index], ElementValue, parent)
  4052.  
  4053.             elif Type == "toggle_button":
  4054.                 parent.Children[Index] = ToggleButton()
  4055.                 parent.Children[Index].SetParent(parent)
  4056.                 self.LoadElementButton(parent.Children[Index], ElementValue, parent)
  4057.  
  4058.             elif Type == "mark":
  4059.                 parent.Children[Index] = MarkBox()
  4060.                 parent.Children[Index].SetParent(parent)
  4061.                 self.LoadElementMark(parent.Children[Index], ElementValue, parent)
  4062.  
  4063.             elif Type == "image":
  4064.                 parent.Children[Index] = ImageBox()
  4065.                 parent.Children[Index].SetParent(parent)
  4066.                 self.LoadElementImage(parent.Children[Index], ElementValue, parent)
  4067.  
  4068.             elif Type == "expanded_image":
  4069.                 parent.Children[Index] = ExpandedImageBox()
  4070.                 parent.Children[Index].SetParent(parent)
  4071.                 self.LoadElementExpandedImage(parent.Children[Index], ElementValue, parent)
  4072.  
  4073.             elif Type == "ani_image":
  4074.                 parent.Children[Index] = AniImageBox()
  4075.                 parent.Children[Index].SetParent(parent)
  4076.                 self.LoadElementAniImage(parent.Children[Index], ElementValue, parent)
  4077.  
  4078.             elif Type == "slot":
  4079.                 parent.Children[Index] = SlotWindow()
  4080.                 parent.Children[Index].SetParent(parent)
  4081.                 self.LoadElementSlot(parent.Children[Index], ElementValue, parent)
  4082.  
  4083.             elif Type == "candidate_list":
  4084.                 parent.Children[Index] = CandidateListBox()
  4085.                 parent.Children[Index].SetParent(parent)
  4086.                 self.LoadElementCandidateList(parent.Children[Index], ElementValue, parent)
  4087.  
  4088.             elif Type == "grid_table":
  4089.                 parent.Children[Index] = GridSlotWindow()
  4090.                 parent.Children[Index].SetParent(parent)
  4091.                 self.LoadElementGridTable(parent.Children[Index], ElementValue, parent)
  4092.  
  4093.             elif Type == "text":
  4094.                 parent.Children[Index] = TextLine()
  4095.                 parent.Children[Index].SetParent(parent)
  4096.                 self.LoadElementText(parent.Children[Index], ElementValue, parent)
  4097.  
  4098.             elif Type == "editline":
  4099.                 parent.Children[Index] = EditLine()
  4100.                 parent.Children[Index].SetParent(parent)
  4101.                 self.LoadElementEditLine(parent.Children[Index], ElementValue, parent)
  4102.  
  4103.             elif Type == "titlebar":
  4104.                 parent.Children[Index] = TitleBar()
  4105.                 parent.Children[Index].SetParent(parent)
  4106.                 self.LoadElementTitleBar(parent.Children[Index], ElementValue, parent)
  4107.  
  4108.             elif Type == "horizontalbar":
  4109.                 parent.Children[Index] = HorizontalBar()
  4110.                 parent.Children[Index].SetParent(parent)
  4111.                 self.LoadElementHorizontalBar(parent.Children[Index], ElementValue, parent)
  4112.  
  4113.             elif Type == "board":
  4114.                 parent.Children[Index] = Board()
  4115.                 parent.Children[Index].SetParent(parent)
  4116.                 self.LoadElementBoard(parent.Children[Index], ElementValue, parent)
  4117.  
  4118.             elif Type == "board_with_titlebar":
  4119.                 parent.Children[Index] = BoardWithTitleBar()
  4120.                 parent.Children[Index].SetParent(parent)
  4121.                 self.LoadElementBoardWithTitleBar(parent.Children[Index], ElementValue, parent)
  4122.  
  4123.             elif Type == "thinboard":
  4124.                 parent.Children[Index] = ThinBoard()
  4125.                 parent.Children[Index].SetParent(parent)
  4126.                 self.LoadElementThinBoard(parent.Children[Index], ElementValue, parent)
  4127.  
  4128.             elif Type == "thinboard_gold":
  4129.                 parent.Children[Index] = ThinBoardGold()
  4130.                 parent.Children[Index].SetParent(parent)
  4131.                 self.LoadElementThinBoard(parent.Children[Index], ElementValue, parent)
  4132.  
  4133.             elif Type == "thinboard_circle":
  4134.                 parent.Children[Index] = ThinBoardCircle()
  4135.                 parent.Children[Index].SetParent(parent)
  4136.                 self.LoadElementThinBoard(parent.Children[Index], ElementValue, parent)
  4137.  
  4138.             elif Type == "box":
  4139.                 parent.Children[Index] = Box()
  4140.                 parent.Children[Index].SetParent(parent)
  4141.                 self.LoadElementBox(parent.Children[Index], ElementValue, parent)
  4142.  
  4143.             elif Type == "bar":
  4144.                 parent.Children[Index] = Bar()
  4145.                 parent.Children[Index].SetParent(parent)
  4146.                 self.LoadElementBar(parent.Children[Index], ElementValue, parent)
  4147.  
  4148.             elif Type == "line":
  4149.                 parent.Children[Index] = Line()
  4150.                 parent.Children[Index].SetParent(parent)
  4151.                 self.LoadElementLine(parent.Children[Index], ElementValue, parent)
  4152.  
  4153.             elif Type == "slotbar":
  4154.                 parent.Children[Index] = SlotBar()
  4155.                 parent.Children[Index].SetParent(parent)
  4156.                 self.LoadElementSlotBar(parent.Children[Index], ElementValue, parent)
  4157.  
  4158.             elif Type == "gauge":
  4159.                 parent.Children[Index] = Gauge()
  4160.                 parent.Children[Index].SetParent(parent)
  4161.                 self.LoadElementGauge(parent.Children[Index], ElementValue, parent)
  4162.  
  4163.             elif Type == "scrollbar":
  4164.                 parent.Children[Index] = ScrollBar()
  4165.                 parent.Children[Index].SetParent(parent)
  4166.                 self.LoadElementScrollBar(parent.Children[Index], ElementValue, parent)
  4167.  
  4168.             elif Type == "thin_scrollbar":
  4169.                 parent.Children[Index] = ThinScrollBar()
  4170.                 parent.Children[Index].SetParent(parent)
  4171.                 self.LoadElementScrollBar(parent.Children[Index], ElementValue, parent)
  4172.  
  4173.             elif Type == "small_thin_scrollbar":
  4174.                 parent.Children[Index] = SmallThinScrollBar()
  4175.                 parent.Children[Index].SetParent(parent)
  4176.                 self.LoadElementScrollBar(parent.Children[Index], ElementValue, parent)
  4177.  
  4178.             elif Type == "sliderbar":
  4179.                 parent.Children[Index] = SliderBar()
  4180.                 parent.Children[Index].SetParent(parent)
  4181.                 self.LoadElementSliderBar(parent.Children[Index], ElementValue, parent)
  4182.  
  4183.             elif Type == "listbox":
  4184.                 parent.Children[Index] = ListBox()
  4185.                 parent.Children[Index].SetParent(parent)
  4186.                 self.LoadElementListBox(parent.Children[Index], ElementValue, parent)
  4187.  
  4188.             elif Type == "listbox2":
  4189.                 parent.Children[Index] = ListBox2()
  4190.                 parent.Children[Index].SetParent(parent)
  4191.                 self.LoadElementListBox2(parent.Children[Index], ElementValue, parent)
  4192.             elif Type == "listboxex":
  4193.                 parent.Children[Index] = ListBoxEx()
  4194.                 parent.Children[Index].SetParent(parent)
  4195.                 self.LoadElementListBoxEx(parent.Children[Index], ElementValue, parent)
  4196.                
  4197.             elif Type == "numberline":
  4198.                 parent.Children[Index] = NumberLine()
  4199.                 parent.Children[Index].SetParent(parent)
  4200.                 self.LoadElementNumberLine(parent.Children[Index], ElementValue, parent)
  4201.            
  4202.             elif Type == "render_target":  
  4203.                 if app.ENABLE_MONSTER_CARD or app.ENABLE_MYSHOP_DECO or app.ENABLE_MINI_GAME_YUTNORI:
  4204.                     parent.Children[Index] = RenderTarget()
  4205.                     parent.Children[Index].SetParent(parent)
  4206.                     self.LoadElementRenderTarget(parent.Children[Index], ElementValue, parent)
  4207.                    
  4208.             elif app.ENABLE_FISH_EVENT:
  4209.                 if Type == "fish_event_grid_table":
  4210.                     parent.Children[Index] = FishEventGridSlotWindow()
  4211.                     parent.Children[Index].SetParent(parent)
  4212.                     self.LoadElementSpecialGridTable(parent.Children[Index], ElementValue, parent) 
  4213.             else:
  4214.                 Index += 1
  4215.                 continue
  4216.  
  4217.             parent.Children[Index].SetWindowName(Name)
  4218.             if 0 != self.InsertFunction:
  4219.                 self.InsertFunction(Name, parent.Children[Index])
  4220.  
  4221.             self.LoadChildren(parent.Children[Index], ElementValue)
  4222.             Index += 1
  4223.  
  4224.     def CheckKeyList(self, name, value, key_list):
  4225.  
  4226.         for DataKey in key_list:
  4227.             if False == value.has_key(DataKey):
  4228.                 print "Failed to find data key", "[" + name + "/" + DataKey + "]"
  4229.                 return False
  4230.  
  4231.         return True
  4232.  
  4233.     def LoadDefaultData(self, window, value, parentWindow):
  4234.         loc_x = int(value["x"])
  4235.         loc_y = int(value["y"])
  4236.         if value.has_key("vertical_align"):
  4237.             if "center" == value["vertical_align"]:
  4238.                 window.SetWindowVerticalAlignCenter()
  4239.             elif "bottom" == value["vertical_align"]:
  4240.                 window.SetWindowVerticalAlignBottom()
  4241.  
  4242.         if parentWindow.IsRTL():
  4243.             loc_x = int(value["x"]) + window.GetWidth()
  4244.             if value.has_key("horizontal_align"):
  4245.                 if "center" == value["horizontal_align"]:
  4246.                     window.SetWindowHorizontalAlignCenter()
  4247.                     loc_x = - int(value["x"])
  4248.                 elif "right" == value["horizontal_align"]:
  4249.                     window.SetWindowHorizontalAlignLeft()
  4250.                     loc_x = int(value["x"]) - window.GetWidth()
  4251.                     ## loc_x = parentWindow.GetWidth() - int(value["x"]) + window.GetWidth()
  4252.             else:
  4253.                 window.SetWindowHorizontalAlignRight()
  4254.  
  4255.             if value.has_key("all_align"):
  4256.                 window.SetWindowVerticalAlignCenter()
  4257.                 window.SetWindowHorizontalAlignCenter()
  4258.                 loc_x = - int(value["x"])
  4259.         else:
  4260.             if value.has_key("horizontal_align"):
  4261.                 if "center" == value["horizontal_align"]:
  4262.                     window.SetWindowHorizontalAlignCenter()
  4263.                 elif "right" == value["horizontal_align"]:
  4264.                     window.SetWindowHorizontalAlignRight()
  4265.  
  4266.         window.SetPosition(loc_x, loc_y)
  4267.         window.Show()
  4268.  
  4269.     ## Window
  4270.     def LoadElementWindow(self, window, value, parentWindow):
  4271.  
  4272.         if False == self.CheckKeyList(value["name"], value, self.WINDOW_KEY_LIST):
  4273.             return False
  4274.  
  4275.         window.SetSize(int(value["width"]), int(value["height"]))
  4276.         self.LoadDefaultData(window, value, parentWindow)
  4277.  
  4278.         return True
  4279.  
  4280.     ## Button
  4281.     def LoadElementButton(self, window, value, parentWindow):
  4282.  
  4283.         if value.has_key("width") and value.has_key("height"):
  4284.             window.SetSize(int(value["width"]), int(value["height"]))
  4285.  
  4286.         if True == value.has_key("default_image"):
  4287.             window.SetUpVisual(value["default_image"])
  4288.         if True == value.has_key("over_image"):
  4289.             window.SetOverVisual(value["over_image"])
  4290.         if True == value.has_key("down_image"):
  4291.             window.SetDownVisual(value["down_image"])
  4292.         if True == value.has_key("disable_image"):
  4293.             window.SetDisableVisual(value["disable_image"])
  4294.  
  4295.         if True == value.has_key("text"):
  4296.             if True == value.has_key("text_height"):
  4297.                 window.SetText(value["text"], value["text_height"])
  4298.             else:
  4299.                 window.SetText(value["text"])
  4300.  
  4301.             if value.has_key("text_color"):
  4302.                 window.SetTextColor(value["text_color"])
  4303.  
  4304.         if True == value.has_key("tooltip_text"):
  4305.             if True == value.has_key("tooltip_x") and True == value.has_key("tooltip_y"):
  4306.                 window.SetToolTipText(value["tooltip_text"], int(value["tooltip_x"]), int(value["tooltip_y"]))
  4307.             else:
  4308.                 window.SetToolTipText(value["tooltip_text"])
  4309.  
  4310.         self.LoadDefaultData(window, value, parentWindow)
  4311.  
  4312.         return True
  4313.  
  4314.     ## Mark
  4315.     def LoadElementMark(self, window, value, parentWindow):
  4316.  
  4317.         #if False == self.CheckKeyList(value["name"], value, self.MARK_KEY_LIST):
  4318.         #   return False
  4319.  
  4320.         self.LoadDefaultData(window, value, parentWindow)
  4321.  
  4322.         return True
  4323.  
  4324.     ## Image
  4325.     def LoadElementImage(self, window, value, parentWindow):
  4326.  
  4327.         if False == self.CheckKeyList(value["name"], value, self.IMAGE_KEY_LIST):
  4328.             return False
  4329.  
  4330.         window.LoadImage(value["image"])
  4331.        
  4332.         if app.ENABLE_MONSTER_CARD:
  4333.             if True == value.has_key("alpha"):
  4334.                 window.SetAlpha( float(value["alpha"]) )
  4335.                
  4336.         self.LoadDefaultData(window, value, parentWindow)
  4337.  
  4338.         return True
  4339.  
  4340.     ## AniImage
  4341.     def LoadElementAniImage(self, window, value, parentWindow):
  4342.  
  4343.         if False == self.CheckKeyList(value["name"], value, self.ANI_IMAGE_KEY_LIST):
  4344.             return False
  4345.  
  4346.         if True == value.has_key("delay"):
  4347.             window.SetDelay(value["delay"])
  4348.  
  4349.         for image in value["images"]:
  4350.             window.AppendImage(image)
  4351.  
  4352.         if value.has_key("width") and value.has_key("height"):
  4353.             window.SetSize(value["width"], value["height"])
  4354.            
  4355.         if app.ENABLE_GROWTH_PET_SYSTEM:
  4356.             if True == value.has_key("x_scale") and True == value.has_key("y_scale"):
  4357.                 window.SetScale(float(value["x_scale"]), float(value["y_scale"]))
  4358.  
  4359.         self.LoadDefaultData(window, value, parentWindow)
  4360.  
  4361.         return True
  4362.  
  4363.     ## Expanded Image
  4364.     def LoadElementExpandedImage(self, window, value, parentWindow):
  4365.  
  4366.         if False == self.CheckKeyList(value["name"], value, self.EXPANDED_IMAGE_KEY_LIST):
  4367.             return False
  4368.  
  4369.         window.LoadImage(value["image"])
  4370.  
  4371.         if True == value.has_key("x_origin") and True == value.has_key("y_origin"):
  4372.             window.SetOrigin(float(value["x_origin"]), float(value["y_origin"]))
  4373.  
  4374.         if True == value.has_key("x_scale") and True == value.has_key("y_scale"):
  4375.             window.SetScale(float(value["x_scale"]), float(value["y_scale"]))
  4376.  
  4377.         if True == value.has_key("rect"):
  4378.             RenderingRect = value["rect"]
  4379.             window.SetRenderingRect(RenderingRect[0], RenderingRect[1], RenderingRect[2], RenderingRect[3])
  4380.  
  4381.         if True == value.has_key("mode"):
  4382.             mode = value["mode"]
  4383.             if "MODULATE" == mode:
  4384.                 window.SetRenderingMode(wndMgr.RENDERING_MODE_MODULATE)
  4385.                
  4386.         if app.ENABLE_MONSTER_CARD:
  4387.             if True == value.has_key("alpha"):
  4388.                 window.SetAlpha( float(value["alpha"]) )
  4389.  
  4390.         self.LoadDefaultData(window, value, parentWindow)
  4391.  
  4392.         return True
  4393.  
  4394.     ## Slot
  4395.     def LoadElementSlot(self, window, value, parentWindow):
  4396.  
  4397.         if False == self.CheckKeyList(value["name"], value, self.SLOT_KEY_LIST):
  4398.             return False
  4399.  
  4400.         global_x = int(value["x"])
  4401.         global_y = int(value["y"])
  4402.         global_width = int(value["width"])
  4403.         global_height = int(value["height"])
  4404.  
  4405.         window.SetPosition(global_x, global_y)
  4406.         window.SetSize(global_width, global_height)
  4407.         window.Show()
  4408.  
  4409.         r = 1.0
  4410.         g = 1.0
  4411.         b = 1.0
  4412.         a = 1.0
  4413.  
  4414.         if True == value.has_key("image_r") and \
  4415.             True == value.has_key("image_g") and \
  4416.             True == value.has_key("image_b") and \
  4417.             True == value.has_key("image_a"):
  4418.             r = float(value["image_r"])
  4419.             g = float(value["image_g"])
  4420.             b = float(value["image_b"])
  4421.             a = float(value["image_a"])
  4422.  
  4423.         SLOT_ONE_KEY_LIST = ("index", "x", "y", "width", "height")
  4424.  
  4425.         for slot in value["slot"]:
  4426.             if True == self.CheckKeyList(value["name"] + " - one", slot, SLOT_ONE_KEY_LIST):
  4427.                 wndMgr.AppendSlot(window.hWnd,
  4428.                                     int(slot["index"]),
  4429.                                     int(slot["x"]),
  4430.                                     int(slot["y"]),
  4431.                                     int(slot["width"]),
  4432.                                     int(slot["height"]))
  4433.                                    
  4434.         if True == value.has_key("x_scale") and True == value.has_key("y_scale"):
  4435.             window.SetSlotScale(float(value["x_scale"]), float(value["y_scale"]))
  4436.  
  4437.         if True == value.has_key("image"):
  4438.             wndMgr.SetSlotBaseImage(window.hWnd,
  4439.                                     value["image"],
  4440.                                     r, g, b, a)
  4441.  
  4442.         return True
  4443.  
  4444.     def LoadElementCandidateList(self, window, value, parentWindow):
  4445.         if False == self.CheckKeyList(value["name"], value, self.CANDIDATE_LIST_KEY_LIST):
  4446.             return False
  4447.  
  4448.         window.SetPosition(int(value["x"]), int(value["y"]))
  4449.         window.SetItemSize(int(value["item_xsize"]), int(value["item_ysize"]))
  4450.         window.SetItemStep(int(value["item_step"]))    
  4451.         window.Show()
  4452.  
  4453.         return True
  4454.                
  4455.     ## Table
  4456.     def LoadElementGridTable(self, window, value, parentWindow):
  4457.  
  4458.         if False == self.CheckKeyList(value["name"], value, self.GRID_TABLE_KEY_LIST):
  4459.             return False
  4460.  
  4461.         xBlank = 0
  4462.         yBlank = 0
  4463.         if True == value.has_key("x_blank"):
  4464.             xBlank = int(value["x_blank"])
  4465.         if True == value.has_key("y_blank"):
  4466.             yBlank = int(value["y_blank"])
  4467.  
  4468.         if localeInfo.IsARABIC():
  4469.             pass
  4470.         else:
  4471.             window.SetPosition(int(value["x"]), int(value["y"]))
  4472.  
  4473.         window.ArrangeSlot( int(value["start_index"]),
  4474.                             int(value["x_count"]),
  4475.                             int(value["y_count"]),
  4476.                             int(value["x_step"]),
  4477.                             int(value["y_step"]),
  4478.                             xBlank,
  4479.                             yBlank)
  4480.         if True == value.has_key("image"):
  4481.             r = 1.0
  4482.             g = 1.0
  4483.             b = 1.0
  4484.             a = 1.0
  4485.             if True == value.has_key("image_r") and \
  4486.                 True == value.has_key("image_g") and \
  4487.                 True == value.has_key("image_b") and \
  4488.                 True == value.has_key("image_a"):
  4489.                 r = float(value["image_r"])
  4490.                 g = float(value["image_g"])
  4491.                 b = float(value["image_b"])
  4492.                 a = float(value["image_a"])
  4493.             wndMgr.SetSlotBaseImage(window.hWnd, value["image"], r, g, b, a)
  4494.  
  4495.         if True == value.has_key("style"):
  4496.             if "select" == value["style"]:
  4497.                 wndMgr.SetSlotStyle(window.hWnd, wndMgr.SLOT_STYLE_SELECT)
  4498.         if localeInfo.IsARABIC():
  4499.             self.LoadDefaultData(window, value, parentWindow)
  4500.         else:
  4501.             window.Show()
  4502.  
  4503.         return True
  4504.  
  4505.     ## Text
  4506.     def LoadElementText(self, window, value, parentWindow):
  4507.  
  4508.         if value.has_key("multi_line"):
  4509.             if value["multi_line"]:
  4510.                 window.SetMultiLine()
  4511.            
  4512.         if value.has_key("fontsize"):
  4513.             fontSize = value["fontsize"]
  4514.  
  4515.             if "LARGE" == fontSize:
  4516.                 window.SetFontName(localeInfo.UI_DEF_FONT_LARGE)
  4517.  
  4518.         elif value.has_key("fontname"):
  4519.             fontName = value["fontname"]
  4520.             window.SetFontName(fontName)
  4521.  
  4522.         if value.has_key("text_horizontal_align"):
  4523.             if "left" == value["text_horizontal_align"]:
  4524.                 window.SetHorizontalAlignLeft()
  4525.             elif "center" == value["text_horizontal_align"]:
  4526.                 window.SetHorizontalAlignCenter()
  4527.             elif "right" == value["text_horizontal_align"]:
  4528.                 window.SetHorizontalAlignRight()
  4529.  
  4530.         if value.has_key("text_vertical_align"):
  4531.             if "top" == value["text_vertical_align"]:
  4532.                 window.SetVerticalAlignTop()
  4533.             elif "center" == value["text_vertical_align"]:
  4534.                 window.SetVerticalAlignCenter()
  4535.             elif "bottom" == value["text_vertical_align"]:
  4536.                 window.SetVerticalAlignBottom()
  4537.  
  4538.         if value.has_key("all_align"):
  4539.             window.SetHorizontalAlignCenter()
  4540.             window.SetVerticalAlignCenter()
  4541.             window.SetWindowHorizontalAlignCenter()
  4542.             window.SetWindowVerticalAlignCenter()
  4543.  
  4544.         if value.has_key("r") and value.has_key("g") and value.has_key("b"):
  4545.             window.SetFontColor(float(value["r"]), float(value["g"]), float(value["b"]))
  4546.         elif value.has_key("color"):
  4547.             window.SetPackedFontColor(value["color"])
  4548.         else:
  4549.             window.SetFontColor(0.8549, 0.8549, 0.8549)
  4550.  
  4551.         if value.has_key("outline"):
  4552.             if value["outline"]:
  4553.                 window.SetOutline()
  4554.         if True == value.has_key("text"):
  4555.             window.SetText(value["text"])
  4556.  
  4557.         self.LoadDefaultData(window, value, parentWindow)
  4558.  
  4559.         return True
  4560.  
  4561.     ## EditLine
  4562.     def LoadElementEditLine(self, window, value, parentWindow):
  4563.  
  4564.         if False == self.CheckKeyList(value["name"], value, self.EDIT_LINE_KEY_LIST):
  4565.             return False
  4566.  
  4567.  
  4568.         if value.has_key("secret_flag"):
  4569.             window.SetSecret(value["secret_flag"])
  4570.         if value.has_key("with_codepage"):
  4571.             if value["with_codepage"]:
  4572.                 window.bCodePage = True
  4573.         if value.has_key("only_number"):
  4574.             if value["only_number"]:
  4575.                 window.SetNumberMode()
  4576.         if value.has_key("enable_codepage"):
  4577.             window.SetIMEFlag(value["enable_codepage"])
  4578.         if value.has_key("enable_ime"):
  4579.             window.SetIMEFlag(value["enable_ime"])
  4580.         if value.has_key("limit_width"):
  4581.             window.SetLimitWidth(value["limit_width"])
  4582.         if value.has_key("multi_line"):
  4583.             if value["multi_line"]:
  4584.                 window.SetMultiLine()
  4585.  
  4586.         window.SetMax(int(value["input_limit"]))
  4587.         window.SetSize(int(value["width"]), int(value["height"]))
  4588.  
  4589.         if app.ENABLE_INPUT_WIDTH_CHECK_SYSTEM:
  4590.             if value.has_key("check_width"):
  4591.                 window.SetCheckWidth(int(value["check_width"]))
  4592.  
  4593.         self.LoadElementText(window, value, parentWindow)
  4594.  
  4595.         return True
  4596.  
  4597.     ## TitleBar
  4598.     def LoadElementTitleBar(self, window, value, parentWindow):
  4599.  
  4600.         if False == self.CheckKeyList(value["name"], value, self.TITLE_BAR_KEY_LIST):
  4601.             return False
  4602.  
  4603.         window.MakeTitleBar(int(value["width"]), value.get("color", "red"))
  4604.         self.LoadDefaultData(window, value, parentWindow)
  4605.  
  4606.         return True
  4607.  
  4608.     ## HorizontalBar
  4609.     def LoadElementHorizontalBar(self, window, value, parentWindow):
  4610.  
  4611.         if False == self.CheckKeyList(value["name"], value, self.HORIZONTAL_BAR_KEY_LIST):
  4612.             return False
  4613.  
  4614.         window.Create(int(value["width"]))
  4615.         self.LoadDefaultData(window, value, parentWindow)
  4616.  
  4617.         return True
  4618.  
  4619.     ## Board
  4620.     def LoadElementBoard(self, window, value, parentWindow):
  4621.  
  4622.         if False == self.CheckKeyList(value["name"], value, self.BOARD_KEY_LIST):
  4623.             return False
  4624.  
  4625.         window.SetSize(int(value["width"]), int(value["height"]))
  4626.         self.LoadDefaultData(window, value, parentWindow)
  4627.  
  4628.         return True
  4629.  
  4630.     ## Board With TitleBar
  4631.     def LoadElementBoardWithTitleBar(self, window, value, parentWindow):
  4632.  
  4633.         if False == self.CheckKeyList(value["name"], value, self.BOARD_WITH_TITLEBAR_KEY_LIST):
  4634.             return False
  4635.  
  4636.         window.SetSize(int(value["width"]), int(value["height"]))
  4637.         window.SetTitleName(value["title"])
  4638.         self.LoadDefaultData(window, value, parentWindow)
  4639.  
  4640.         return True
  4641.  
  4642.     ## ThinBoard
  4643.     def LoadElementThinBoard(self, window, value, parentWindow):
  4644.  
  4645.         if False == self.CheckKeyList(value["name"], value, self.BOARD_KEY_LIST):
  4646.             return False
  4647.  
  4648.         window.SetSize(int(value["width"]), int(value["height"]))
  4649.         self.LoadDefaultData(window, value, parentWindow)
  4650.  
  4651.         return True
  4652.  
  4653.     ## Box
  4654.     def LoadElementBox(self, window, value, parentWindow):
  4655.  
  4656.         if False == self.CheckKeyList(value["name"], value, self.BOX_KEY_LIST):
  4657.             return False
  4658.  
  4659.         if True == value.has_key("color"):
  4660.             window.SetColor(value["color"])
  4661.  
  4662.         window.SetSize(int(value["width"]), int(value["height"]))
  4663.         self.LoadDefaultData(window, value, parentWindow)
  4664.  
  4665.         return True
  4666.  
  4667.     ## Bar
  4668.     def LoadElementBar(self, window, value, parentWindow):
  4669.  
  4670.         if False == self.CheckKeyList(value["name"], value, self.BAR_KEY_LIST):
  4671.             return False
  4672.  
  4673.         if True == value.has_key("color"):
  4674.             window.SetColor(value["color"])
  4675.  
  4676.         window.SetSize(int(value["width"]), int(value["height"]))
  4677.         self.LoadDefaultData(window, value, parentWindow)
  4678.  
  4679.         return True
  4680.  
  4681.     ## Line
  4682.     def LoadElementLine(self, window, value, parentWindow):
  4683.  
  4684.         if False == self.CheckKeyList(value["name"], value, self.LINE_KEY_LIST):
  4685.             return False
  4686.  
  4687.         if True == value.has_key("color"):
  4688.             window.SetColor(value["color"])
  4689.  
  4690.         window.SetSize(int(value["width"]), int(value["height"]))
  4691.         self.LoadDefaultData(window, value, parentWindow)
  4692.  
  4693.         return True
  4694.  
  4695.     ## Slot
  4696.     def LoadElementSlotBar(self, window, value, parentWindow):
  4697.  
  4698.         if False == self.CheckKeyList(value["name"], value, self.SLOTBAR_KEY_LIST):
  4699.             return False
  4700.  
  4701.         window.SetSize(int(value["width"]), int(value["height"]))
  4702.         self.LoadDefaultData(window, value, parentWindow)
  4703.  
  4704.         return True
  4705.  
  4706.     ## Gauge
  4707.     def LoadElementGauge(self, window, value, parentWindow):
  4708.  
  4709.         if False == self.CheckKeyList(value["name"], value, self.GAUGE_KEY_LIST):
  4710.             return False
  4711.  
  4712.         window.MakeGauge(value["width"], value["color"])
  4713.         self.LoadDefaultData(window, value, parentWindow)
  4714.  
  4715.         return True
  4716.  
  4717.     ## ScrollBar
  4718.     def LoadElementScrollBar(self, window, value, parentWindow):
  4719.  
  4720.         if False == self.CheckKeyList(value["name"], value, self.SCROLLBAR_KEY_LIST):
  4721.             return False
  4722.  
  4723.         window.SetScrollBarSize(value["size"])
  4724.         self.LoadDefaultData(window, value, parentWindow)
  4725.  
  4726.         return True
  4727.  
  4728.     ## SliderBar
  4729.     def LoadElementSliderBar(self, window, value, parentWindow):
  4730.  
  4731.         self.LoadDefaultData(window, value, parentWindow)
  4732.  
  4733.         return True
  4734.  
  4735.     ## ListBox
  4736.     def LoadElementListBox(self, window, value, parentWindow):
  4737.  
  4738.         if False == self.CheckKeyList(value["name"], value, self.LIST_BOX_KEY_LIST):
  4739.             return False
  4740.  
  4741.         if value.has_key("item_align"):
  4742.             window.SetTextCenterAlign(value["item_align"])
  4743.  
  4744.         window.SetSize(value["width"], value["height"])
  4745.         self.LoadDefaultData(window, value, parentWindow)
  4746.  
  4747.         return True
  4748.  
  4749.     ## ListBox2
  4750.     def LoadElementListBox2(self, window, value, parentWindow):
  4751.  
  4752.         if False == self.CheckKeyList(value["name"], value, self.LIST_BOX_KEY_LIST):
  4753.             return False
  4754.  
  4755.         window.SetRowCount(value.get("row_count", 10))
  4756.         window.SetSize(value["width"], value["height"])
  4757.         self.LoadDefaultData(window, value, parentWindow)
  4758.  
  4759.         if value.has_key("item_align"):
  4760.             window.SetTextCenterAlign(value["item_align"])
  4761.  
  4762.         return True
  4763.     def LoadElementListBoxEx(self, window, value, parentWindow):
  4764.  
  4765.         if False == self.CheckKeyList(value["name"], value, self.LIST_BOX_KEY_LIST):
  4766.             return False
  4767.  
  4768.         window.SetSize(value["width"], value["height"])
  4769.         self.LoadDefaultData(window, value, parentWindow)
  4770.  
  4771.         if value.has_key("itemsize_x") and value.has_key("itemsize_y"):
  4772.             window.SetItemSize(int(value["itemsize_x"]), int(value["itemsize_y"]))
  4773.  
  4774.         if value.has_key("itemstep"):
  4775.             window.SetItemStep(int(value["itemstep"]))
  4776.  
  4777.         if value.has_key("viewcount"):
  4778.             window.SetViewItemCount(int(value["viewcount"]))
  4779.  
  4780.         return True
  4781.        
  4782.     def LoadElementNumberLine(self, window, value, parentWindow):
  4783.         self.LoadDefaultData(window, value, parentWindow)
  4784.         return True
  4785.        
  4786.     if app.ENABLE_MONSTER_CARD or app.ENABLE_MYSHOP_DECO or app.ENABLE_MINI_GAME_YUTNORI:
  4787.         def LoadElementRenderTarget(self, window, value, parentWindow):
  4788.  
  4789.             if False == self.CheckKeyList(value["name"], value, self.RENDER_TARGET_KEY_LIST):
  4790.                 return False
  4791.  
  4792.             window.SetSize(value["width"], value["height"])
  4793.            
  4794.             if True == value.has_key("style"):
  4795.                 for style in value["style"]:
  4796.                     window.AddFlag(style)
  4797.                    
  4798.             self.LoadDefaultData(window, value, parentWindow)
  4799.            
  4800.             if value.has_key("index"):
  4801.                 window.SetRenderTarget(int(value["index"]))
  4802.  
  4803.             return True
  4804.     if app.ENABLE_FISH_EVENT:
  4805.         def LoadElementSpecialGridTable(self, window, value, parentWindow):
  4806.  
  4807.             if False == self.CheckKeyList(value["name"], value, self.SP_GRID_TABLE_KEY_LIST):
  4808.                 return False
  4809.  
  4810.             xBlank = 0
  4811.             yBlank = 0
  4812.             if True == value.has_key("x_blank"):
  4813.                 xBlank = int(value["x_blank"])
  4814.             if True == value.has_key("y_blank"):
  4815.                 yBlank = int(value["y_blank"])
  4816.  
  4817.             if localeInfo.IsARABIC():
  4818.                 pass
  4819.             else:
  4820.                 window.SetPosition(int(value["x"]), int(value["y"]))
  4821.  
  4822.             window.ArrangeSlot( int(value["start_index"]),
  4823.                                 int(value["x_count"]),
  4824.                                 int(value["y_count"]),
  4825.                                 int(value["x_step"]),
  4826.                                 int(value["y_step"]),
  4827.                                 xBlank,
  4828.                                 yBlank)
  4829.             if True == value.has_key("image"):
  4830.                 r = 1.0
  4831.                 g = 1.0
  4832.                 b = 1.0
  4833.                 a = 1.0
  4834.                 if True == value.has_key("image_r") and \
  4835.                     True == value.has_key("image_g") and \
  4836.                     True == value.has_key("image_b") and \
  4837.                     True == value.has_key("image_a"):
  4838.                     r = float(value["image_r"])
  4839.                     g = float(value["image_g"])
  4840.                     b = float(value["image_b"])
  4841.                     a = float(value["image_a"])
  4842.                 wndMgr.SetSlotBaseImage(window.hWnd, value["image"], r, g, b, a)
  4843.  
  4844.             if True == value.has_key("style"):
  4845.                 if "select" == value["style"]:
  4846.                     wndMgr.SetSlotStyle(window.hWnd, wndMgr.SLOT_STYLE_SELECT)
  4847.             if localeInfo.IsARABIC():
  4848.                 self.LoadDefaultData(window, value, parentWindow)
  4849.             else:
  4850.                 window.Show()
  4851.  
  4852.             return True
  4853.        
  4854. class ReadingWnd(Bar):
  4855.  
  4856.     def __init__(self):
  4857.         Bar.__init__(self,"TOP_MOST")
  4858.  
  4859.         self.__BuildText()
  4860.         self.SetSize(80, 19)
  4861.         self.Show()
  4862.  
  4863.     def __del__(self):
  4864.         Bar.__del__(self)
  4865.  
  4866.     def __BuildText(self):
  4867.         self.text = TextLine()
  4868.         self.text.SetParent(self)
  4869.         self.text.SetPosition(4, 3)
  4870.         self.text.Show()
  4871.  
  4872.     def SetText(self, text):
  4873.         self.text.SetText(text)
  4874.  
  4875.     def SetReadingPosition(self, x, y):
  4876.         xPos = x + 2
  4877.         yPos = y  - self.GetHeight() - 2
  4878.         self.SetPosition(xPos, yPos)
  4879.  
  4880.     def SetTextColor(self, color):
  4881.         self.text.SetPackedFontColor(color)
  4882.  
  4883.  
  4884. def MakeSlotBar(parent, x, y, width, height):
  4885.     slotBar = SlotBar()
  4886.     slotBar.SetParent(parent)
  4887.     slotBar.SetSize(width, height)
  4888.     slotBar.SetPosition(x, y)
  4889.     slotBar.Show()
  4890.     return slotBar
  4891.  
  4892. def MakeImageBox(parent, name, x, y):
  4893.     image = ImageBox()
  4894.     image.SetParent(parent)
  4895.     image.LoadImage(name)
  4896.     image.SetPosition(x, y)
  4897.     image.Show()
  4898.     return image
  4899.  
  4900. def MakeTextLine(parent):
  4901.     textLine = TextLine()
  4902.     textLine.SetParent(parent)
  4903.     textLine.SetWindowHorizontalAlignCenter()
  4904.     textLine.SetWindowVerticalAlignCenter()
  4905.     textLine.SetHorizontalAlignCenter()
  4906.     textLine.SetVerticalAlignCenter()
  4907.     textLine.Show()
  4908.     return textLine
  4909.  
  4910. def MakeButton(parent, x, y, tooltipText, path, up, over, down):
  4911.     button = Button()
  4912.     button.SetParent(parent)
  4913.     button.SetPosition(x, y)
  4914.     button.SetUpVisual(path + up)
  4915.     button.SetOverVisual(path + over)
  4916.     button.SetDownVisual(path + down)
  4917.     button.SetToolTipText(tooltipText)
  4918.     button.Show()
  4919.     return button
  4920.  
  4921. def RenderRoundBox(x, y, width, height, color):
  4922.     grp.SetColor(color)
  4923.     grp.RenderLine(x+2, y, width-3, 0)
  4924.     grp.RenderLine(x+2, y+height, width-3, 0)
  4925.     grp.RenderLine(x, y+2, 0, height-4)
  4926.     grp.RenderLine(x+width, y+1, 0, height-3)
  4927.     grp.RenderLine(x, y+2, 2, -2)
  4928.     grp.RenderLine(x, y+height-2, 2, 2)
  4929.     grp.RenderLine(x+width-2, y, 2, 2)
  4930.     grp.RenderLine(x+width-2, y+height, 2, -2)
  4931.  
  4932. def GenerateColor(r, g, b):
  4933.     r = float(r) / 255.0
  4934.     g = float(g) / 255.0
  4935.     b = float(b) / 255.0
  4936.     return grp.GenerateColor(r, g, b, 1.0)
  4937.  
  4938. def EnablePaste(flag):
  4939.     ime.EnablePaste(flag)
  4940.  
  4941. def GetHyperlink():
  4942.     return wndMgr.GetHyperlink()
  4943.  
  4944. RegisterToolTipWindow("TEXT", TextLine)
  4945.  
  4946. if app.ENABLE_MONSTER_CARD or app.ENABLE_MYSHOP_DECO or app.ENABLE_MINI_GAME_YUTNORI:
  4947.     class RenderTarget(Window):
  4948.    
  4949.         def __init__(self, layer = "UI"):
  4950.             Window.__init__(self, layer)
  4951.            
  4952.             self.number = -1
  4953.  
  4954.         def __del__(self):
  4955.             Window.__del__(self)
  4956.  
  4957.         def RegisterWindow(self, layer):
  4958.             self.hWnd = wndMgr.RegisterRenderTarget(self, layer)
  4959.            
  4960.         def SetRenderTarget(self, number):
  4961.             self.number = number
  4962.             wndMgr.SetRenderTarget(self.hWnd, self.number)
  4963.            
  4964.            
  4965. if app.ENABLE_FISH_EVENT:
  4966.     class FishEventGridSlotWindow(GridSlotWindow):
  4967.  
  4968.         def __init__(self):
  4969.             GridSlotWindow.__init__(self)
  4970.  
  4971.             self.startIndex = 0
  4972.  
  4973.         def __del__(self):
  4974.             GridSlotWindow.__del__(self)
  4975.  
  4976.         def RegisterWindow(self, layer):
  4977.             self.hWnd = wndMgr.RegisterFishEventGridSlotWindow(self, layer)
  4978.  
  4979.         def ArrangeSlot(self, StartIndex, xCount, yCount, xSize, ySize, xBlank, yBlank):
  4980.  
  4981.             self.startIndex = StartIndex
  4982.  
  4983.             wndMgr.ArrangeSlot(self.hWnd, StartIndex, xCount, yCount, xSize, ySize, xBlank, yBlank)
  4984.             self.startIndex = StartIndex
  4985.  
  4986.         def GetStartIndex(self):
  4987.             return self.startIndex
  4988.            
  4989.         def SetPickedAreaRender(self, flag):
  4990.             wndMgr.SetPickedAreaRender(self.hWnd, flag)
Advertisement
Add Comment
Please, Sign In to add comment