AlleXuSS

Untitled

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