Advertisement
deadx2

Untitled

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