Advertisement
Guest User

Untitled

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