kingMistic

Untitled

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