Advertisement
Guest User

Untitled

a guest
Aug 19th, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.25 KB | None | 0 0
  1. import app
  2. import ui
  3. import grp
  4. import net
  5. import guild
  6. import messenger
  7. import localeInfo
  8. import constInfo
  9. import uiToolTip
  10. import uiGameOption
  11.  
  12. import uiCommon
  13. from _weakref import proxy
  14.  
  15. FRIEND = 0
  16. GUILD = 1
  17.  
  18. class MessengerItem(ui.Window):
  19.  
  20. def __init__(self, getParentEvent):
  21. ui.Window.__init__(self)
  22.  
  23. self.SetParent(getParentEvent())
  24. self.AddFlag("float")
  25.  
  26. self.name = ""
  27. self.image = ui.ImageBox()
  28. self.image.AddFlag("not_pick")
  29. self.image.SetParent(self)
  30. self.image.Show()
  31. self.text = ui.TextLine()
  32. self.text.SetParent(self)
  33. self.text.SetPosition(20, 2)
  34. self.text.Show()
  35.  
  36. self.lovePoint = -1
  37. self.lovePointToolTip = None
  38.  
  39. self.isSelected = False
  40.  
  41. self.getParentEvent = getParentEvent
  42.  
  43. def SetName(self, name):
  44. self.name = name
  45. if name:
  46. self.text.SetText(name)
  47. self.SetSize(20 + 6*len(name) + 4, 16)
  48.  
  49. if localeInfo.IsARABIC():
  50. self.text.SetPosition(20 + 6*len(name) + 4, 2)
  51.  
  52. def SetLovePoint(self, lovePoint):
  53. self.lovePoint = lovePoint
  54.  
  55. def Select(self):
  56. self.isSelected = True
  57.  
  58. def UnSelect(self):
  59. self.isSelected = False
  60.  
  61. def GetName(self):
  62. return self.name
  63.  
  64. def GetStepWidth(self):
  65. return 0
  66.  
  67. # Whisper
  68. def CanWhisper(self):
  69. return False
  70.  
  71. def IsOnline(self):
  72. return False
  73.  
  74. def IsMobile(self):
  75. return False
  76.  
  77. def OnWhisper(self):
  78. pass
  79.  
  80. def OnMobileMessage(self):
  81. pass
  82.  
  83. # Remove
  84. def CanRemove(self):
  85. return False
  86.  
  87. def OnRemove(self):
  88. return False
  89.  
  90. # Warp
  91. def CanWarp(self):
  92. return False
  93.  
  94. def OnWarp(self):
  95. pass
  96.  
  97. def OnMouseOverIn(self):
  98. if -1 != self.lovePoint:
  99. if not self.lovePointToolTip:
  100. self.lovePointToolTip = uiToolTip.ToolTip(100)
  101. self.lovePointToolTip.SetTitle(self.name)
  102. self.lovePointToolTip.AppendTextLine(localeInfo.AFF_LOVE_POINT % (self.lovePoint))
  103. self.lovePointToolTip.ResizeToolTip()
  104. self.lovePointToolTip.ShowToolTip()
  105.  
  106. def OnMouseOverOut(self):
  107. if self.lovePointToolTip:
  108. self.lovePointToolTip.HideToolTip()
  109.  
  110. def OnMouseLeftButtonDown(self):
  111. self.getParentEvent().OnSelectItem(self)
  112.  
  113. def OnMouseLeftButtonDoubleClick(self):
  114. self.getParentEvent().OnDoubleClickItem(self)
  115.  
  116. def OnRender(self):
  117. if self.isSelected:
  118. x, y = self.GetGlobalPosition()
  119. grp.SetColor(grp.GenerateColor(0.0, 0.0, 0.7, 0.7))
  120. grp.RenderBar(x+16, y, self.GetWidth()-16, self.GetHeight())
  121.  
  122. class MessengerMemberItem(MessengerItem):
  123.  
  124. STATE_OFFLINE = 0
  125. STATE_ONLINE = 1
  126. STATE_MOBILE = 2
  127.  
  128. IMAGE_FILE_NAME = { "ONLINE" : "d:/ymir work/ui/game/windows/messenger_list_online.sub",
  129. "OFFLINE" : "d:/ymir work/ui/game/windows/messenger_list_offline.sub",
  130. "MOBILE" : "d:/ymir work/ui/game/windows/messenger_list_mobile.sub", }
  131.  
  132. def __init__(self, getParentEvent):
  133. MessengerItem.__init__(self, getParentEvent)
  134. self.key = None
  135. self.state = self.STATE_OFFLINE
  136. self.mobileFlag = False
  137. self.Offline()
  138.  
  139. def GetStepWidth(self):
  140. return 15
  141.  
  142. def SetKey(self, key):
  143. self.key = key
  144.  
  145. def IsSameKey(self, key):
  146. return self.key == key
  147.  
  148. def IsOnline(self):
  149. if self.STATE_ONLINE == self.state:
  150. return True
  151.  
  152. return False
  153.  
  154. def IsMobile(self):
  155. if self.STATE_MOBILE == self.state:
  156. return True
  157.  
  158. return False
  159.  
  160. def Online(self):
  161. self.image.LoadImage(self.IMAGE_FILE_NAME["ONLINE"])
  162. self.state = self.STATE_ONLINE
  163.  
  164. def Offline(self):
  165. if self.mobileFlag:
  166. self.image.LoadImage(self.IMAGE_FILE_NAME["MOBILE"])
  167. self.state = self.STATE_MOBILE
  168.  
  169. else:
  170. self.image.LoadImage(self.IMAGE_FILE_NAME["OFFLINE"])
  171. self.state = self.STATE_OFFLINE
  172.  
  173. def SetMobile(self, flag):
  174. self.mobileFlag = flag
  175.  
  176. if not self.IsOnline():
  177. self.Offline()
  178.  
  179. def CanWhisper(self):
  180. if self.IsOnline():
  181. return True
  182.  
  183. return False
  184.  
  185. def OnWhisper(self):
  186. if self.IsOnline():
  187. self.getParentEvent().whisperButtonEvent(self.GetName())
  188.  
  189. def OnMobileMessage(self):
  190. if not uiGameOption.MOBILE:
  191. return
  192.  
  193. if not self.IsMobile():
  194. return
  195.  
  196. self.getParentEvent().SendMobileMessage(self.GetName())
  197.  
  198. def Select(self):
  199. MessengerItem.Select(self)
  200.  
  201. class MessengerGroupItem(MessengerItem):
  202.  
  203. IMAGE_FILE_NAME = { "OPEN" : "d:/ymir work/ui/game/windows/messenger_list_open.sub",
  204. "CLOSE" : "d:/ymir work/ui/game/windows/messenger_list_close.sub", }
  205.  
  206. def __init__(self, getParentEvent):
  207. self.isOpen = False
  208. self.memberList = []
  209.  
  210. MessengerItem.__init__(self, getParentEvent)
  211.  
  212. def AppendMember(self, member, key, name):
  213. member.SetKey(key)
  214. member.SetName(name)
  215. self.memberList.append(member)
  216. return member
  217.  
  218. def RemoveMember(self, item):
  219. for i in xrange(len(self.memberList)):
  220. if item == self.memberList[i]:
  221. del self.memberList[i]
  222. return
  223.  
  224. def ClearMember(self):
  225. self.memberList = []
  226.  
  227. def FindMember(self, key):
  228. list = filter(lambda argMember, argKey=key: argMember.IsSameKey(argKey), self.memberList)
  229. if list:
  230. return list[0]
  231.  
  232. return None
  233.  
  234. def GetLoginMemberList(self):
  235. return filter(MessengerMemberItem.IsOnline, self.memberList)
  236.  
  237. def GetLogoutMemberList(self):
  238. return filter(lambda arg: not arg.IsOnline(), self.memberList)
  239.  
  240. def IsOpen(self):
  241. return self.isOpen
  242.  
  243. def Open(self):
  244. self.image.LoadImage(self.IMAGE_FILE_NAME["OPEN"])
  245. self.isOpen = True
  246.  
  247. def Close(self):
  248. self.image.LoadImage(self.IMAGE_FILE_NAME["CLOSE"])
  249. self.isOpen = False
  250.  
  251. map(ui.Window.Hide, self.memberList)
  252.  
  253. def Select(self):
  254.  
  255. if self.IsOpen():
  256. self.Close()
  257. else:
  258. self.Open()
  259.  
  260. MessengerItem.Select(self)
  261. self.getParentEvent().OnRefreshList()
  262.  
  263. class MessengerFriendItem(MessengerMemberItem):
  264.  
  265. def __init__(self, getParentEvent):
  266. MessengerMemberItem.__init__(self, getParentEvent)
  267.  
  268. def CanRemove(self):
  269. return True
  270.  
  271. def OnRemove(self):
  272. messenger.RemoveFriend(self.key)
  273. net.SendMessengerRemovePacket(self.key, self.name)
  274. return True
  275.  
  276. class MessengerGuildItem(MessengerMemberItem):
  277.  
  278. def __init__(self, getParentEvent):
  279. MessengerMemberItem.__init__(self, getParentEvent)
  280.  
  281. def CanWarp(self):
  282. if not self.IsOnline():
  283. return False
  284. return True
  285.  
  286. def OnWarp(self):
  287. net.SendGuildUseSkillPacket(155, self.key)
  288.  
  289. def CanRemove(self):
  290. for i in xrange(guild.ENEMY_GUILD_SLOT_MAX_COUNT):
  291. if guild.GetEnemyGuildName(i) != "":
  292. return False
  293.  
  294. if guild.MainPlayerHasAuthority(guild.AUTH_REMOVE_MEMBER):
  295. if guild.IsMemberByName(self.name):
  296. return True
  297.  
  298. return False
  299.  
  300. def OnRemove(self):
  301. net.SendGuildRemoveMemberPacket(self.key)
  302. return True
  303.  
  304. class MessengerFriendGroup(MessengerGroupItem):
  305.  
  306. def __init__(self, getParentEvent):
  307. MessengerGroupItem.__init__(self, getParentEvent)
  308. self.SetName(localeInfo.MESSENGER_FRIEND)
  309.  
  310. def AppendMember(self, key, name):
  311. item = MessengerFriendItem(self.getParentEvent)
  312. return MessengerGroupItem.AppendMember(self, item, key, name)
  313.  
  314. class MessengerGuildGroup(MessengerGroupItem):
  315.  
  316. def __init__(self, getParentEvent):
  317. MessengerGroupItem.__init__(self, getParentEvent)
  318. self.SetName(localeInfo.MESSENGER_GUILD)
  319. self.AddFlag("float")
  320.  
  321. def AppendMember(self, key, name):
  322. item = MessengerGuildItem(self.getParentEvent)
  323. return MessengerGroupItem.AppendMember(self, item, key, name)
  324.  
  325. class MessengerFamilyGroup(MessengerGroupItem):
  326.  
  327. def __init__(self, getParentEvent):
  328. MessengerGroupItem.__init__(self, getParentEvent)
  329. self.SetName(localeInfo.MESSENGER_FAMILY)
  330. self.AddFlag("float")
  331.  
  332. self.lover = None
  333.  
  334. def AppendMember(self, key, name):
  335. item = MessengerGuildItem(self.getParentEvent)
  336. self.lover = item
  337. return MessengerGroupItem.AppendMember(self, item, key, name)
  338.  
  339. def GetLover(self):
  340. return self.lover
  341.  
  342. ###################################################################################################
  343. ###################################################################################################
  344. ###################################################################################################
  345.  
  346. class MessengerWindow(ui.ScriptWindow):
  347.  
  348. START_POSITION = 40
  349.  
  350. class ResizeButton(ui.DragButton):
  351.  
  352. def OnMouseOverIn(self):
  353. app.SetCursor(app.VSIZE)
  354.  
  355. def OnMouseOverOut(self):
  356. app.SetCursor(app.NORMAL)
  357.  
  358. def __init__(self):
  359. ui.ScriptWindow.__init__(self)
  360. messenger.SetMessengerHandler(self)
  361.  
  362. self.board = None
  363. self.groupList = []
  364. self.showingItemList = []
  365. self.selectedItem = None
  366. self.whisperButtonEvent = lambda *arg: None
  367. self.familyGroup = None
  368.  
  369. self.guildButtonEvent = None
  370.  
  371. self.showingPageSize = 0
  372. self.startLine = 0
  373. self.hasMobilePhoneNumber = True
  374.  
  375. self.isLoaded = 0
  376.  
  377. self.__AddGroup()
  378. messenger.RefreshGuildMember()
  379.  
  380. def Show(self):
  381. if self.isLoaded==0:
  382. self.isLoaded=1
  383.  
  384. self.__LoadWindow()
  385. self.OnRefreshList()
  386. self.OnResizeDialog()
  387.  
  388. ui.ScriptWindow.Show(self)
  389.  
  390. def __LoadWindow(self):
  391.  
  392. pyScrLoader = ui.PythonScriptLoader()
  393. pyScrLoader.LoadScriptFile(self, "UIScript/MessengerWindow.py")
  394.  
  395. try:
  396. self.board = self.GetChild("board")
  397. self.scrollBar = self.GetChild("ScrollBar")
  398. self.whisperButton = self.GetChild("WhisperButton")
  399. self.mobileButton = self.GetChild("MobileButton")
  400. self.removeButton = self.GetChild("RemoveButton")
  401. self.addFriendButton = self.GetChild("AddFriendButton")
  402. self.guildButton = self.GetChild("GuildButton")
  403. except:
  404. import exception
  405. exception.Abort("MessengerWindow.__LoadWindow.__Bind")
  406.  
  407. self.board.SetCloseEvent(ui.__mem_func__(self.Close))
  408. self.scrollBar.SetScrollEvent(ui.__mem_func__(self.OnScroll))
  409. self.whisperButton.SetEvent(ui.__mem_func__(self.OnPressWhisperButton))
  410. self.mobileButton.SetEvent(ui.__mem_func__(self.OnPressMobileButton))
  411. self.removeButton.SetEvent(ui.__mem_func__(self.OnPressRemoveButton))
  412. self.addFriendButton.SetEvent(ui.__mem_func__(self.OnPressAddFriendButton))
  413. self.guildButton.SetEvent(ui.__mem_func__(self.OnPressGuildButton))
  414.  
  415. if not uiGameOption.MOBILE: #constInfo.SEND_MOBILE_PHONE_MESSAGE_ENABLE:
  416. self.mobileButton.Hide()
  417. width = self.GetWidth()
  418. height = self.GetHeight()
  419. self.addFriendButton.SetPosition(-60, 30)
  420. self.whisperButton.SetPosition(-20, 30)
  421. self.removeButton.SetPosition(20, 30)
  422. self.guildButton.SetPosition(60, 30)
  423.  
  424. self.whisperButton.Disable()
  425. self.mobileButton.Disable()
  426. self.removeButton.Disable()
  427.  
  428. resizeButton = self.ResizeButton()
  429. resizeButton.AddFlag("restrict_x")
  430. resizeButton.SetParent(self)
  431. resizeButton.SetSize(self.GetWidth(), 10)
  432. resizeButton.SetWindowVerticalAlignBottom()
  433. resizeButton.SetPosition(0, 0)
  434. resizeButton.Show()
  435. self.resizeButton = resizeButton
  436. self.resizeButton.SetMoveEvent(ui.__mem_func__(self.OnResizeDialog))
  437. self.resizeButton.SetPosition(0, 300)
  438.  
  439. for list in self.groupList:
  440. list.SetTop()
  441.  
  442. def __del__(self):
  443. messenger.SetMessengerHandler(None)
  444. ui.ScriptWindow.__del__(self)
  445.  
  446. def Destroy(self):
  447. self.board = None
  448. self.scrollBar = None
  449. self.resizeButton = None
  450. self.friendNameBoard = None
  451. self.questionDialog = None
  452. self.popupDialog = None
  453. self.inputDialog = None
  454. self.familyGroup = None
  455.  
  456. self.whisperButton = None
  457. self.mobileButton = None
  458. self.removeButton = None
  459.  
  460. def OnCloseQuestionDialog(self):
  461. self.questionDialog.Close()
  462. self.questionDialog = None
  463. return True
  464.  
  465. def Close(self):
  466. self.questionDialog = None
  467. self.Hide()
  468.  
  469. def SetSize(self, width, height):
  470. ui.ScriptWindow.SetSize(self, width, height)
  471. if self.board:
  472. self.board.SetSize(width, height)
  473.  
  474. def OnResizeDialog(self):
  475. x, y = self.resizeButton.GetLocalPosition()
  476. if y < 140:
  477. self.resizeButton.SetPosition(x, 140)
  478. return
  479. self.SetSize(self.GetWidth(), y + self.resizeButton.GetHeight())
  480.  
  481. self.showingPageSize = y - (self.START_POSITION + 26)
  482. self.scrollBar.SetScrollBarSize(self.showingPageSize)
  483.  
  484. self.__LocateMember()
  485.  
  486. self.resizeButton.TurnOffCallBack()
  487. self.UpdateRect()
  488. self.resizeButton.TurnOnCallBack()
  489.  
  490. def __LocateMember(self):
  491.  
  492. if self.isLoaded==0:
  493. return
  494.  
  495. if self.showingPageSize/20 >= len(self.showingItemList):
  496. self.scrollBar.Hide()
  497. self.startLine = 0
  498. else:
  499. if self.showingItemList:
  500. self.scrollBar.SetMiddleBarSize(float(self.showingPageSize/20) / float(len(self.showingItemList)))
  501. self.scrollBar.Show()
  502.  
  503. #####
  504.  
  505. yPos = self.START_POSITION
  506. heightLimit = self.GetHeight() - (self.START_POSITION + 13)
  507.  
  508. map(ui.Window.Hide, self.showingItemList)
  509.  
  510. for item in self.showingItemList[self.startLine:]:
  511. item.SetPosition(20 + item.GetStepWidth(), yPos)
  512. item.SetTop()
  513. item.Show()
  514.  
  515. yPos += 20
  516. if yPos > heightLimit:
  517. break
  518.  
  519. def __AddGroup(self):
  520. member = MessengerFriendGroup(ui.__mem_func__(self.GetSelf))
  521. member.Open()
  522. member.Show()
  523. self.groupList.append(member)
  524.  
  525. member = MessengerGuildGroup(ui.__mem_func__(self.GetSelf))
  526. member.Open()
  527. member.Show()
  528. self.groupList.append(member)
  529.  
  530. def __AddFamilyGroup(self):
  531. member = MessengerFamilyGroup(ui.__mem_func__(self.GetSelf))
  532. member.Open()
  533. member.Show()
  534.  
  535. self.familyGroup = member
  536.  
  537. def ClearGuildMember(self):
  538. self.groupList[GUILD].ClearMember()
  539.  
  540. def SetWhisperButtonEvent(self, event):
  541. self.whisperButtonEvent=event
  542.  
  543. def SetGuildButtonEvent(self, event):
  544. self.guildButtonEvent=event
  545.  
  546. def SendMobileMessage(self, name):
  547. if not uiGameOption.MOBILE:
  548. return
  549.  
  550. if not self.hasMobilePhoneNumber:
  551. questionDialog = uiCommon.QuestionDialog2()
  552. questionDialog.SetText1(localeInfo.MESSENGER_INPUT_MOBILE_PHONE_NUMBER_1)
  553. questionDialog.SetText2(localeInfo.MESSENGER_INPUT_MOBILE_PHONE_NUMBER_2)
  554. questionDialog.SetAcceptEvent(ui.__mem_func__(self.OnAcceptInputMobilePhoneNumber))
  555. questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCancelInputMobilePhoneNumber))
  556. questionDialog.SetWidth(400)
  557. questionDialog.Open()
  558. self.questionDialog = questionDialog
  559. return
  560.  
  561. ## Input Sending Mobile Message
  562. inputDialog = uiCommon.InputDialog()
  563. inputDialog.SetTitle(localeInfo.MESSENGER_SEND_MOBILE_MESSAGE_TITLE)
  564. inputDialog.SetMaxLength(50)
  565. inputDialog.SetAcceptEvent(ui.__mem_func__(self.OnInputMobileMessage))
  566. inputDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseInputDialog))
  567. inputDialog.name = name
  568. inputDialog.Open()
  569. self.inputDialog = inputDialog
  570.  
  571. def OnAcceptInputMobilePhoneNumber(self):
  572. if not uiGameOption.MOBILE:
  573. return
  574.  
  575. ## Input Mobile Phone Number
  576. inputDialog = uiCommon.InputDialog()
  577. inputDialog.SetTitle(localeInfo.MESSENGER_INPUT_MOBILE_PHONE_NUMBER_TITLE)
  578. inputDialog.SetMaxLength(13)
  579. inputDialog.SetAcceptEvent(ui.__mem_func__(self.OnInputMobilePhoneNumber))
  580. inputDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseInputDialog))
  581. inputDialog.Open()
  582. self.inputDialog = inputDialog
  583. self.OnCancelInputMobilePhoneNumber()
  584.  
  585. def OnCancelInputMobilePhoneNumber(self):
  586. if not uiGameOption.MOBILE:
  587. return
  588. self.questionDialog.Close()
  589. self.questionDialog = None
  590. return True
  591.  
  592. def OnInputMobilePhoneNumber(self):
  593. if not uiGameOption.MOBILE:
  594. return
  595.  
  596. text = self.inputDialog.GetText()
  597.  
  598. if not text:
  599. return
  600.  
  601. text.replace('-', '')
  602. net.SendChatPacket("/mobile " + text)
  603. self.OnCloseInputDialog()
  604. return True
  605.  
  606. def OnInputMobileMessage(self):
  607. if not uiGameOption.MOBILE:
  608. return
  609.  
  610. text = self.inputDialog.GetText()
  611.  
  612. if not text:
  613. return
  614.  
  615. net.SendMobileMessagePacket(self.inputDialog.name, text)
  616. self.OnCloseInputDialog()
  617. return True
  618.  
  619. def OnCloseInputDialog(self):
  620. self.inputDialog.Close()
  621. self.inputDialog = None
  622. return True
  623.  
  624. def OnPressGuildButton(self):
  625. self.guildButtonEvent()
  626.  
  627. def OnPressAddFriendButton(self):
  628. friendNameBoard = uiCommon.InputDialog()
  629. friendNameBoard.SetTitle(localeInfo.MESSENGER_ADD_FRIEND)
  630. friendNameBoard.SetAcceptEvent(ui.__mem_func__(self.OnAddFriend))
  631. friendNameBoard.SetCancelEvent(ui.__mem_func__(self.OnCancelAddFriend))
  632. friendNameBoard.Open()
  633. self.friendNameBoard = friendNameBoard
  634.  
  635. def OnAddFriend(self):
  636. text = self.friendNameBoard.GetText()
  637. if text:
  638. net.SendMessengerAddByNamePacket(text)
  639. self.friendNameBoard.Close()
  640. self.friendNameBoard = None
  641. return True
  642.  
  643. def OnCancelAddFriend(self):
  644. self.friendNameBoard.Close()
  645. self.friendNameBoard = None
  646. return True
  647.  
  648. def OnPressWhisperButton(self):
  649. if self.selectedItem:
  650. self.selectedItem.OnWhisper()
  651.  
  652. def OnPressMobileButton(self):
  653. if self.selectedItem:
  654. self.selectedItem.OnMobileMessage()
  655.  
  656. def OnPressRemoveButton(self):
  657. if self.selectedItem:
  658. if self.selectedItem.CanRemove():
  659. self.questionDialog = uiCommon.QuestionDialog()
  660. self.questionDialog.SetText(localeInfo.MESSENGER_DO_YOU_DELETE)
  661. self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.OnRemove))
  662. self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
  663. self.questionDialog.Open()
  664.  
  665. def OnRemove(self):
  666. if self.selectedItem:
  667. if self.selectedItem.CanRemove():
  668. map(lambda arg, argDeletingItem=self.selectedItem: arg.RemoveMember(argDeletingItem), self.groupList)
  669. self.selectedItem.OnRemove()
  670. self.selectedItem.UnSelect()
  671. self.selectedItem = None
  672. self.OnRefreshList()
  673.  
  674. self.OnCloseQuestionDialog()
  675.  
  676. def OnScroll(self):
  677. scrollLineCount = len(self.showingItemList) - (self.showingPageSize/20)
  678. startLine = int(scrollLineCount * self.scrollBar.GetPos())
  679.  
  680. if startLine != self.startLine:
  681. self.startLine = startLine
  682. self.__LocateMember()
  683.  
  684. def OnPressEscapeKey(self):
  685. self.Close()
  686. return True
  687.  
  688. ## CallBack
  689. def OnSelectItem(self, item):
  690.  
  691. if self.selectedItem:
  692. if item != self.selectedItem:
  693. self.selectedItem.UnSelect()
  694.  
  695. self.selectedItem = item
  696.  
  697. if self.selectedItem:
  698. self.selectedItem.Select()
  699.  
  700. if self.selectedItem.CanWhisper():
  701. self.whisperButton.Enable()
  702. else:
  703. self.whisperButton.Disable()
  704.  
  705. if self.selectedItem.IsMobile():
  706. self.mobileButton.Enable()
  707. else:
  708. self.mobileButton.Disable()
  709.  
  710. if self.selectedItem.CanRemove():
  711. self.removeButton.Enable()
  712. else:
  713. self.removeButton.Disable()
  714.  
  715. def OnDoubleClickItem(self, item):
  716.  
  717. if not self.selectedItem:
  718. return
  719.  
  720. if self.selectedItem.IsOnline():
  721. self.OnPressWhisperButton()
  722.  
  723. elif self.selectedItem.IsMobile():
  724. self.OnPressMobileButton()
  725.  
  726. def GetSelf(self):
  727. return self
  728.  
  729. def OnRefreshList(self):
  730. self.showingItemList = []
  731.  
  732. if self.familyGroup:
  733. self.showingItemList.append(self.familyGroup)
  734. if self.familyGroup.GetLover():
  735. self.showingItemList.append(self.familyGroup.GetLover())
  736.  
  737. for group in self.groupList:
  738.  
  739. self.showingItemList.append(group)
  740.  
  741. if group.IsOpen():
  742.  
  743. loginMemberList = group.GetLoginMemberList()
  744. logoutMemberList = group.GetLogoutMemberList()
  745.  
  746. if loginMemberList or logoutMemberList:
  747. for member in loginMemberList:
  748. self.showingItemList.append(member)
  749. for member in logoutMemberList:
  750. self.showingItemList.append(member)
  751.  
  752. else:
  753. item = MessengerItem(ui.__mem_func__(self.GetSelf))
  754. item.SetName(localeInfo.MESSENGER_EMPTY_LIST)
  755. self.showingItemList.append(item)
  756.  
  757. self.__LocateMember()
  758.  
  759. def RefreshMessenger(self):
  760. self.OnRefreshList()
  761.  
  762. ## EventHandler
  763. def __AddList(self, groupIndex, key, name):
  764. group = self.groupList[groupIndex]
  765. member = group.FindMember(key)
  766. if not member:
  767. member = group.AppendMember(key, name)
  768. self.OnSelectItem(None)
  769. return member
  770.  
  771. def OnRemoveList(self, groupIndex, key):
  772. group = self.groupList[groupIndex]
  773. group.RemoveMember(group.FindMember(key))
  774. self.OnRefreshList()
  775.  
  776. def OnRemoveAllList(self, groupIndex):
  777. group = self.groupList[groupIndex]
  778. group.ClearMember()
  779. self.OnRefreshList()
  780.  
  781. def OnLogin(self, groupIndex, key, name=None):
  782. if not name:
  783. name = key
  784. group = self.groupList[groupIndex]
  785. member = self.__AddList(groupIndex, key, name)
  786. member.SetName(name)
  787. member.Online()
  788. self.OnRefreshList()
  789.  
  790. def OnLogout(self, groupIndex, key, name=None):
  791. group = self.groupList[groupIndex]
  792. member = self.__AddList(groupIndex, key, name)
  793. if not name:
  794. name = key
  795. member.SetName(name)
  796. member.Offline()
  797. self.OnRefreshList()
  798.  
  799. def OnMobile(self, groupIndex, key, mobileFlag):
  800. group = self.groupList[groupIndex]
  801. member = group.FindMember(key)
  802. if not member:
  803. return
  804. member.SetMobile(mobileFlag)
  805. self.OnRefreshList()
  806.  
  807. def OnAddLover(self, name, lovePoint):
  808. if not self.familyGroup:
  809. self.__AddFamilyGroup()
  810.  
  811. member = self.familyGroup.AppendMember(0, name)
  812.  
  813. member.SetName(name)
  814. member.SetLovePoint(lovePoint)
  815. member.Offline()
  816. self.OnRefreshList()
  817.  
  818. def OnUpdateLovePoint(self, lovePoint):
  819. if not self.familyGroup:
  820. return
  821.  
  822. lover = self.familyGroup.GetLover()
  823. if not lover:
  824. return
  825.  
  826. lover.SetLovePoint(lovePoint)
  827.  
  828. def OnLoginLover(self):
  829. if not self.familyGroup:
  830. return
  831.  
  832. lover = self.familyGroup.GetLover()
  833. if not lover:
  834. return
  835.  
  836. lover.Online()
  837.  
  838. def OnLogoutLover(self):
  839. if not self.familyGroup:
  840. return
  841.  
  842. lover = self.familyGroup.GetLover()
  843. if not lover:
  844. return
  845.  
  846. lover.Offline()
  847.  
  848. def ClearLoverInfo(self):
  849. if not self.familyGroup:
  850. return
  851.  
  852. self.familyGroup.ClearMember()
  853. self.familyGroup = None
  854. self.OnRefreshList()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement