Advertisement
Guest User

ui.py

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