Advertisement
Guest User

Untitled

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