Advertisement
Guest User

ui.py

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