elws

uimessenger.py

Nov 1st, 2024
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.82 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. if app.ENABLE_MESSENGER_TEAM:
  277. class MessengerTeamItem(MessengerMemberItem):
  278.  
  279. def __init__(self, getParentEvent):
  280. MessengerMemberItem.__init__(self, getParentEvent)
  281.  
  282. def CanRemove(self):
  283. return FALSE
  284.  
  285. def OnRemove(self):
  286. messenger.RemoveFriend(self.key)
  287. net.SendMessengerRemovePacket(self.key, self.name)
  288. return FASLE
  289.  
  290. class MessengerTeamItem(MessengerMemberItem):
  291.  
  292. def __init__(self, getParentEvent):
  293. MessengerMemberItem.__init__(self, getParentEvent)
  294.  
  295. def CanRemove(self):
  296. return FALSE
  297.  
  298. def OnRemove(self):
  299. return FASLE
  300.  
  301. class MessengerGuildItem(MessengerMemberItem):
  302.  
  303. def __init__(self, getParentEvent):
  304. MessengerMemberItem.__init__(self, getParentEvent)
  305.  
  306. def CanWarp(self):
  307. if not self.IsOnline():
  308. return False
  309. return True
  310.  
  311. def OnWarp(self):
  312. net.SendGuildUseSkillPacket(155, self.key)
  313.  
  314. def CanRemove(self):
  315. for i in xrange(guild.ENEMY_GUILD_SLOT_MAX_COUNT):
  316. if guild.GetEnemyGuildName(i) != "":
  317. return False
  318.  
  319. if guild.MainPlayerHasAuthority(guild.AUTH_REMOVE_MEMBER):
  320. if guild.IsMemberByName(self.name):
  321. return True
  322.  
  323. return False
  324.  
  325. def OnRemove(self):
  326. net.SendGuildRemoveMemberPacket(self.key)
  327. return True
  328.  
  329. class MessengerFriendGroup(MessengerGroupItem):
  330.  
  331. def __init__(self, getParentEvent):
  332. MessengerGroupItem.__init__(self, getParentEvent)
  333. self.SetName(localeInfo.MESSENGER_FRIEND)
  334.  
  335. def AppendMember(self, key, name):
  336. item = MessengerFriendItem(self.getParentEvent)
  337. return MessengerGroupItem.AppendMember(self, item, key, name)
  338.  
  339. if app.ENABLE_MESSENGER_TEAM:
  340. class MessengerTeamGroup(MessengerGroupItem):
  341.  
  342. def __init__(self, getParentEvent):
  343. MessengerGroupItem.__init__(self, getParentEvent)
  344. self.SetName(localeInfo.MESSENGER_TEAM)
  345.  
  346. def AppendMember(self, key, name):
  347. item = MessengerTeamItem(self.getParentEvent)
  348. return MessengerGroupItem.AppendMember(self, item, key, name)
  349.  
  350. class MessengerTeamGroup(MessengerGroupItem):
  351.  
  352. def __init__(self, getParentEvent):
  353. MessengerGroupItem.__init__(self, getParentEvent)
  354. self.SetName(localeInfo.MESSENGER_TEAM)
  355.  
  356. def AppendMember(self, key, name):
  357. item = MessengerTeamItem(self.getParentEvent)
  358. return MessengerGroupItem.AppendMember(self, item, key, name)
  359.  
  360. class MessengerGuildGroup(MessengerGroupItem):
  361.  
  362. def __init__(self, getParentEvent):
  363. MessengerGroupItem.__init__(self, getParentEvent)
  364. self.SetName(localeInfo.MESSENGER_GUILD)
  365. self.AddFlag("float")
  366.  
  367. def AppendMember(self, key, name):
  368. item = MessengerGuildItem(self.getParentEvent)
  369. return MessengerGroupItem.AppendMember(self, item, key, name)
  370.  
  371. class MessengerFamilyGroup(MessengerGroupItem):
  372.  
  373. def __init__(self, getParentEvent):
  374. MessengerGroupItem.__init__(self, getParentEvent)
  375. self.SetName(localeInfo.MESSENGER_FAMILY)
  376. self.AddFlag("float")
  377.  
  378. self.lover = None
  379.  
  380. def AppendMember(self, key, name):
  381. item = MessengerGuildItem(self.getParentEvent)
  382. self.lover = item
  383. return MessengerGroupItem.AppendMember(self, item, key, name)
  384.  
  385. def GetLover(self):
  386. return self.lover
  387.  
  388. ###################################################################################################
  389. ###################################################################################################
  390. ###################################################################################################
  391.  
  392. class MessengerWindow(ui.ScriptWindow):
  393.  
  394. START_POSITION = 40
  395.  
  396. class ResizeButton(ui.DragButton):
  397.  
  398. def OnMouseOverIn(self):
  399. app.SetCursor(app.VSIZE)
  400.  
  401. def OnMouseOverOut(self):
  402. app.SetCursor(app.NORMAL)
  403.  
  404. def __init__(self):
  405. ui.ScriptWindow.__init__(self)
  406. messenger.SetMessengerHandler(self)
  407.  
  408. self.board = None
  409. self.groupList = []
  410. self.showingItemList = []
  411. self.selectedItem = None
  412. self.whisperButtonEvent = lambda *arg: None
  413. self.familyGroup = None
  414.  
  415. self.guildButtonEvent = None
  416.  
  417. self.showingPageSize = 0
  418. self.startLine = 0
  419. self.hasMobilePhoneNumber = True
  420.  
  421. self.isLoaded = 0
  422.  
  423. self.__AddGroup()
  424. messenger.RefreshGuildMember()
  425.  
  426. def Show(self):
  427. if self.isLoaded==0:
  428. self.isLoaded=1
  429.  
  430. self.__LoadWindow()
  431. self.OnRefreshList()
  432. self.OnResizeDialog()
  433.  
  434. ui.ScriptWindow.Show(self)
  435.  
  436. def __LoadWindow(self):
  437.  
  438. pyScrLoader = ui.PythonScriptLoader()
  439. pyScrLoader.LoadScriptFile(self, "UIScript/MessengerWindow.py")
  440.  
  441. try:
  442. self.board = self.GetChild("board")
  443. self.scrollBar = self.GetChild("ScrollBar")
  444. self.whisperButton = self.GetChild("WhisperButton")
  445. self.mobileButton = self.GetChild("MobileButton")
  446. self.removeButton = self.GetChild("RemoveButton")
  447. self.addFriendButton = self.GetChild("AddFriendButton")
  448. self.guildButton = self.GetChild("GuildButton")
  449. except:
  450. import exception
  451. exception.Abort("MessengerWindow.__LoadWindow.__Bind")
  452.  
  453. self.board.SetCloseEvent(ui.__mem_func__(self.Close))
  454. self.scrollBar.SetScrollEvent(ui.__mem_func__(self.OnScroll))
  455. self.whisperButton.SetEvent(ui.__mem_func__(self.OnPressWhisperButton))
  456. self.mobileButton.SetEvent(ui.__mem_func__(self.OnPressMobileButton))
  457. self.removeButton.SetEvent(ui.__mem_func__(self.OnPressRemoveButton))
  458. self.addFriendButton.SetEvent(ui.__mem_func__(self.OnPressAddFriendButton))
  459. self.guildButton.SetEvent(ui.__mem_func__(self.OnPressGuildButton))
  460.  
  461. if not uiGameOption.MOBILE: #constInfo.SEND_MOBILE_PHONE_MESSAGE_ENABLE:
  462. self.mobileButton.Hide()
  463. width = self.GetWidth()
  464. height = self.GetHeight()
  465. self.addFriendButton.SetPosition(-60, 30)
  466. self.whisperButton.SetPosition(-20, 30)
  467. self.removeButton.SetPosition(20, 30)
  468. self.guildButton.SetPosition(60, 30)
  469.  
  470. self.whisperButton.Disable()
  471. self.mobileButton.Disable()
  472. self.removeButton.Disable()
  473.  
  474. resizeButton = self.ResizeButton()
  475. resizeButton.AddFlag("restrict_x")
  476. resizeButton.SetParent(self)
  477. resizeButton.SetSize(self.GetWidth(), 10)
  478. resizeButton.SetWindowVerticalAlignBottom()
  479. resizeButton.SetPosition(0, 0)
  480. resizeButton.Show()
  481. self.resizeButton = resizeButton
  482. self.resizeButton.SetMoveEvent(ui.__mem_func__(self.OnResizeDialog))
  483. self.resizeButton.SetPosition(0, 300)
  484.  
  485. for list in self.groupList:
  486. list.SetTop()
  487.  
  488. def __del__(self):
  489. messenger.SetMessengerHandler(None)
  490. ui.ScriptWindow.__del__(self)
  491.  
  492. def Destroy(self):
  493. self.board = None
  494. self.scrollBar = None
  495. self.resizeButton = None
  496. self.friendNameBoard = None
  497. self.questionDialog = None
  498. self.popupDialog = None
  499. self.inputDialog = None
  500. self.familyGroup = None
  501.  
  502. self.whisperButton = None
  503. self.mobileButton = None
  504. self.removeButton = None
  505.  
  506. def OnCloseQuestionDialog(self):
  507. self.questionDialog.Close()
  508. self.questionDialog = None
  509. return True
  510.  
  511. def Close(self):
  512. self.questionDialog = None
  513. self.Hide()
  514.  
  515. def SetSize(self, width, height):
  516. ui.ScriptWindow.SetSize(self, width, height)
  517. if self.board:
  518. self.board.SetSize(width, height)
  519.  
  520. def OnResizeDialog(self):
  521. x, y = self.resizeButton.GetLocalPosition()
  522. if y < 140:
  523. self.resizeButton.SetPosition(x, 140)
  524. return
  525. self.SetSize(self.GetWidth(), y + self.resizeButton.GetHeight())
  526.  
  527. self.showingPageSize = y - (self.START_POSITION + 26)
  528. self.scrollBar.SetScrollBarSize(self.showingPageSize)
  529.  
  530. self.__LocateMember()
  531.  
  532. self.resizeButton.TurnOffCallBack()
  533. self.UpdateRect()
  534. self.resizeButton.TurnOnCallBack()
  535.  
  536. def __LocateMember(self):
  537.  
  538. if self.isLoaded==0:
  539. return
  540.  
  541. if self.showingPageSize/20 >= len(self.showingItemList):
  542. self.scrollBar.Hide()
  543. self.startLine = 0
  544. else:
  545. if self.showingItemList:
  546. self.scrollBar.SetMiddleBarSize(float(self.showingPageSize/20) / float(len(self.showingItemList)))
  547. self.scrollBar.Show()
  548.  
  549. #####
  550.  
  551. yPos = self.START_POSITION
  552. heightLimit = self.GetHeight() - (self.START_POSITION + 13)
  553.  
  554. map(ui.Window.Hide, self.showingItemList)
  555.  
  556. for item in self.showingItemList[self.startLine:]:
  557. item.SetPosition(20 + item.GetStepWidth(), yPos)
  558. item.SetTop()
  559. item.Show()
  560.  
  561. yPos += 20
  562. if yPos > heightLimit:
  563. break
  564.  
  565. def __AddGroup(self):
  566. member = MessengerFriendGroup(ui.__mem_func__(self.GetSelf))
  567. member.Open()
  568. member.Show()
  569. self.groupList.append(member)
  570.  
  571. member = MessengerGuildGroup(ui.__mem_func__(self.GetSelf))
  572. member.Open()
  573. member.Show()
  574. self.groupList.append(member)
  575.  
  576. if app.ENABLE_MESSENGER_TEAM:
  577. member = MessengerTeamGroup(ui.__mem_func__(self.GetSelf))
  578. member.Open()
  579. member.Show()
  580. self.groupList.append(member)
  581.  
  582. def __AddFamilyGroup(self):
  583. member = MessengerFamilyGroup(ui.__mem_func__(self.GetSelf))
  584. member.Open()
  585. member.Show()
  586.  
  587. self.familyGroup = member
  588.  
  589. def ClearGuildMember(self):
  590. self.groupList[GUILD].ClearMember()
  591.  
  592. def SetWhisperButtonEvent(self, event):
  593. self.whisperButtonEvent=event
  594.  
  595. def SetGuildButtonEvent(self, event):
  596. self.guildButtonEvent=event
  597.  
  598. def SendMobileMessage(self, name):
  599. if not uiGameOption.MOBILE:
  600. return
  601.  
  602. if not self.hasMobilePhoneNumber:
  603. questionDialog = uiCommon.QuestionDialog2()
  604. questionDialog.SetText1(localeInfo.MESSENGER_INPUT_MOBILE_PHONE_NUMBER_1)
  605. questionDialog.SetText2(localeInfo.MESSENGER_INPUT_MOBILE_PHONE_NUMBER_2)
  606. questionDialog.SetAcceptEvent(ui.__mem_func__(self.OnAcceptInputMobilePhoneNumber))
  607. questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCancelInputMobilePhoneNumber))
  608. questionDialog.SetWidth(400)
  609. questionDialog.Open()
  610. self.questionDialog = questionDialog
  611. return
  612.  
  613. ## Input Sending Mobile Message
  614. inputDialog = uiCommon.InputDialog()
  615. inputDialog.SetTitle(localeInfo.MESSENGER_SEND_MOBILE_MESSAGE_TITLE)
  616. inputDialog.SetMaxLength(50)
  617. inputDialog.SetAcceptEvent(ui.__mem_func__(self.OnInputMobileMessage))
  618. inputDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseInputDialog))
  619. inputDialog.name = name
  620. inputDialog.Open()
  621. self.inputDialog = inputDialog
  622.  
  623. def OnAcceptInputMobilePhoneNumber(self):
  624. if not uiGameOption.MOBILE:
  625. return
  626.  
  627. ## Input Mobile Phone Number
  628. inputDialog = uiCommon.InputDialog()
  629. inputDialog.SetTitle(localeInfo.MESSENGER_INPUT_MOBILE_PHONE_NUMBER_TITLE)
  630. inputDialog.SetMaxLength(13)
  631. inputDialog.SetAcceptEvent(ui.__mem_func__(self.OnInputMobilePhoneNumber))
  632. inputDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseInputDialog))
  633. inputDialog.Open()
  634. self.inputDialog = inputDialog
  635. self.OnCancelInputMobilePhoneNumber()
  636.  
  637. def OnCancelInputMobilePhoneNumber(self):
  638. if not uiGameOption.MOBILE:
  639. return
  640. self.questionDialog.Close()
  641. self.questionDialog = None
  642. return True
  643.  
  644. def OnInputMobilePhoneNumber(self):
  645. if not uiGameOption.MOBILE:
  646. return
  647.  
  648. text = self.inputDialog.GetText()
  649.  
  650. if not text:
  651. return
  652.  
  653. text.replace('-', '')
  654. net.SendChatPacket("/mobile " + text)
  655. self.OnCloseInputDialog()
  656. return True
  657.  
  658. def OnInputMobileMessage(self):
  659. if not uiGameOption.MOBILE:
  660. return
  661.  
  662. text = self.inputDialog.GetText()
  663.  
  664. if not text:
  665. return
  666.  
  667. net.SendMobileMessagePacket(self.inputDialog.name, text)
  668. self.OnCloseInputDialog()
  669. return True
  670.  
  671. def OnCloseInputDialog(self):
  672. self.inputDialog.Close()
  673. self.inputDialog = None
  674. return True
  675.  
  676. def OnPressGuildButton(self):
  677. self.guildButtonEvent()
  678.  
  679. def OnPressAddFriendButton(self):
  680. friendNameBoard = uiCommon.InputDialog()
  681. friendNameBoard.SetTitle(localeInfo.MESSENGER_ADD_FRIEND)
  682. friendNameBoard.SetAcceptEvent(ui.__mem_func__(self.OnAddFriend))
  683. friendNameBoard.SetCancelEvent(ui.__mem_func__(self.OnCancelAddFriend))
  684. friendNameBoard.Open()
  685. self.friendNameBoard = friendNameBoard
  686.  
  687. def OnAddFriend(self):
  688. text = self.friendNameBoard.GetText()
  689. if text:
  690. net.SendMessengerAddByNamePacket(text)
  691. self.friendNameBoard.Close()
  692. self.friendNameBoard = None
  693. return True
  694.  
  695. def OnCancelAddFriend(self):
  696. self.friendNameBoard.Close()
  697. self.friendNameBoard = None
  698. return True
  699.  
  700. def OnPressWhisperButton(self):
  701. if self.selectedItem:
  702. self.selectedItem.OnWhisper()
  703.  
  704. def OnPressMobileButton(self):
  705. if self.selectedItem:
  706. self.selectedItem.OnMobileMessage()
  707.  
  708. def OnPressRemoveButton(self):
  709. if self.selectedItem:
  710. if self.selectedItem.CanRemove():
  711. self.questionDialog = uiCommon.QuestionDialog()
  712. self.questionDialog.SetText(localeInfo.MESSENGER_DO_YOU_DELETE)
  713. self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.OnRemove))
  714. self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
  715. self.questionDialog.Open()
  716.  
  717. def OnRemove(self):
  718. if self.selectedItem:
  719. if self.selectedItem.CanRemove():
  720. map(lambda arg, argDeletingItem=self.selectedItem: arg.RemoveMember(argDeletingItem), self.groupList)
  721. self.selectedItem.OnRemove()
  722. self.selectedItem.UnSelect()
  723. self.selectedItem = None
  724. self.OnRefreshList()
  725.  
  726. self.OnCloseQuestionDialog()
  727.  
  728. def OnScroll(self):
  729. scrollLineCount = len(self.showingItemList) - (self.showingPageSize/20)
  730. startLine = int(scrollLineCount * self.scrollBar.GetPos())
  731.  
  732. if startLine != self.startLine:
  733. self.startLine = startLine
  734. self.__LocateMember()
  735.  
  736. def OnPressEscapeKey(self):
  737. self.Close()
  738. return True
  739.  
  740. ## CallBack
  741. def OnSelectItem(self, item):
  742.  
  743. if self.selectedItem:
  744. if item != self.selectedItem:
  745. self.selectedItem.UnSelect()
  746.  
  747. self.selectedItem = item
  748.  
  749. if self.selectedItem:
  750. self.selectedItem.Select()
  751.  
  752. if self.selectedItem.CanWhisper():
  753. self.whisperButton.Enable()
  754. else:
  755. self.whisperButton.Disable()
  756.  
  757. if self.selectedItem.IsMobile():
  758. self.mobileButton.Enable()
  759. else:
  760. self.mobileButton.Disable()
  761.  
  762. if self.selectedItem.CanRemove():
  763. self.removeButton.Enable()
  764. else:
  765. self.removeButton.Disable()
  766.  
  767. def OnDoubleClickItem(self, item):
  768.  
  769. if not self.selectedItem:
  770. return
  771.  
  772. if self.selectedItem.IsOnline():
  773. self.OnPressWhisperButton()
  774.  
  775. elif self.selectedItem.IsMobile():
  776. self.OnPressMobileButton()
  777.  
  778. def GetSelf(self):
  779. return self
  780.  
  781. def OnRefreshList(self):
  782. self.showingItemList = []
  783.  
  784. if self.familyGroup:
  785. self.showingItemList.append(self.familyGroup)
  786. if self.familyGroup.GetLover():
  787. self.showingItemList.append(self.familyGroup.GetLover())
  788.  
  789. for group in self.groupList:
  790.  
  791. self.showingItemList.append(group)
  792.  
  793. if group.IsOpen():
  794.  
  795. loginMemberList = group.GetLoginMemberList()
  796. logoutMemberList = group.GetLogoutMemberList()
  797.  
  798. if loginMemberList or logoutMemberList:
  799. for member in loginMemberList:
  800. self.showingItemList.append(member)
  801. for member in logoutMemberList:
  802. self.showingItemList.append(member)
  803.  
  804. else:
  805. item = MessengerItem(ui.__mem_func__(self.GetSelf))
  806. item.SetName(localeInfo.MESSENGER_EMPTY_LIST)
  807. self.showingItemList.append(item)
  808.  
  809. self.__LocateMember()
  810.  
  811. def RefreshMessenger(self):
  812. self.OnRefreshList()
  813.  
  814. ## EventHandler
  815. def __AddList(self, groupIndex, key, name):
  816. group = self.groupList[groupIndex]
  817. member = group.FindMember(key)
  818. if not member:
  819. member = group.AppendMember(key, name)
  820. self.OnSelectItem(None)
  821. return member
  822.  
  823. def OnRemoveList(self, groupIndex, key):
  824. group = self.groupList[groupIndex]
  825. group.RemoveMember(group.FindMember(key))
  826. self.OnRefreshList()
  827.  
  828. def OnRemoveAllList(self, groupIndex):
  829. group = self.groupList[groupIndex]
  830. group.ClearMember()
  831. self.OnRefreshList()
  832.  
  833. def OnLogin(self, groupIndex, key, name=None):
  834. if not name:
  835. name = key
  836. group = self.groupList[groupIndex]
  837. member = self.__AddList(groupIndex, key, name)
  838. member.SetName(name)
  839. member.Online()
  840. self.OnRefreshList()
  841.  
  842. def OnLogout(self, groupIndex, key, name=None):
  843. group = self.groupList[groupIndex]
  844. member = self.__AddList(groupIndex, key, name)
  845. if not name:
  846. name = key
  847. member.SetName(name)
  848. member.Offline()
  849. self.OnRefreshList()
  850.  
  851. def OnMobile(self, groupIndex, key, mobileFlag):
  852. group = self.groupList[groupIndex]
  853. member = group.FindMember(key)
  854. if not member:
  855. return
  856. member.SetMobile(mobileFlag)
  857. self.OnRefreshList()
  858.  
  859. def OnAddLover(self, name, lovePoint):
  860. if not self.familyGroup:
  861. self.__AddFamilyGroup()
  862.  
  863. member = self.familyGroup.AppendMember(0, name)
  864.  
  865. member.SetName(name)
  866. member.SetLovePoint(lovePoint)
  867. member.Offline()
  868. self.OnRefreshList()
  869.  
  870. def OnUpdateLovePoint(self, lovePoint):
  871. if not self.familyGroup:
  872. return
  873.  
  874. lover = self.familyGroup.GetLover()
  875. if not lover:
  876. return
  877.  
  878. lover.SetLovePoint(lovePoint)
  879.  
  880. def OnLoginLover(self):
  881. if not self.familyGroup:
  882. return
  883.  
  884. lover = self.familyGroup.GetLover()
  885. if not lover:
  886. return
  887.  
  888. lover.Online()
  889.  
  890. def OnLogoutLover(self):
  891. if not self.familyGroup:
  892. return
  893.  
  894. lover = self.familyGroup.GetLover()
  895. if not lover:
  896. return
  897.  
  898. lover.Offline()
  899.  
  900. def ClearLoverInfo(self):
  901. if not self.familyGroup:
  902. return
  903.  
  904. self.familyGroup.ClearMember()
  905. self.familyGroup = None
  906. self.OnRefreshList()
  907.  
Advertisement
Add Comment
Please, Sign In to add comment