Guest User

Untitled

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