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