MrP0wers

ui.py

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