Guest User

231

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