Advertisement
kingMistic

Untitled

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