Advertisement
Guest User

ui.py

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