teamturker

uiwhisper.py

Feb 24th, 2016
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 12.29 KB | None | 0 0
  1. import ui
  2. import net
  3. import chat
  4. import player
  5. import app
  6. import localeInfo
  7. import ime
  8. import chr
  9. import time
  10. import os
  11. import constInfo
  12.  
  13. class WhisperButton(ui.Button):
  14.     def __init__(self):
  15.         ui.Button.__init__(self, "TOP_MOST")
  16.  
  17.     def __del__(self):
  18.         ui.Button.__del__(self)
  19.  
  20.     def SetToolTipText(self, text, x=0, y = 32):
  21.         ui.Button.SetToolTipText(self, text, x, y)
  22.         self.ToolTipText.Show()
  23.  
  24.     def SetToolTipTextWithColor(self, text, color, x=0, y = 32):
  25.         ui.Button.SetToolTipText(self, text, x, y)
  26.         self.ToolTipText.SetPackedFontColor(color)
  27.         self.ToolTipText.Show()
  28.  
  29.     def ShowToolTip(self):
  30.         if 0 != self.ToolTipText:
  31.             self.ToolTipText.Show()
  32.  
  33.     def HideToolTip(self):
  34.         if 0 != self.ToolTipText:
  35.             self.ToolTipText.Show()
  36.  
  37. class WhisperDialog(ui.ScriptWindow):
  38.  
  39.     class TextRenderer(ui.Window):
  40.         def SetTargetName(self, targetName):
  41.             self.targetName = targetName
  42.  
  43.         def OnRender(self):
  44.             (x, y) = self.GetGlobalPosition()
  45.             chat.RenderWhisper(self.targetName, x, y)
  46.  
  47.     class ResizeButton(ui.DragButton):
  48.  
  49.         def __init__(self):
  50.             ui.DragButton.__init__(self)
  51.  
  52.         def __del__(self):
  53.             ui.DragButton.__del__(self)
  54.  
  55.         def OnMouseOverIn(self):
  56.             app.SetCursor(app.HVSIZE)
  57.  
  58.         def OnMouseOverOut(self):
  59.             app.SetCursor(app.NORMAL)
  60.  
  61.     def __init__(self, eventMinimize, eventClose):
  62.         print "NEW WHISPER DIALOG  ----------------------------------------------------------------------------"
  63.         ui.ScriptWindow.__init__(self)
  64.         self.targetName = ""
  65.         self.eventMinimize = eventMinimize
  66.         self.eventClose = eventClose
  67.         self.eventAcceptTarget = None
  68.     def __del__(self):
  69.         print "---------------------------------------------------------------------------- DELETE WHISPER DIALOG"
  70.         ui.ScriptWindow.__del__(self)      
  71.  
  72.     def LoadDialog(self):
  73.         try:
  74.             pyScrLoader = ui.PythonScriptLoader()
  75.             pyScrLoader.LoadScriptFile(self, "UIScript/WhisperDialog.py")
  76.         except:
  77.             import exception
  78.             exception.Abort("WhisperDialog.LoadDialog.LoadScript")
  79.  
  80.         try:
  81.             GetObject=self.GetChild
  82.             self.titleName = GetObject("titlename")
  83.             self.titleNameEdit = GetObject("titlename_edit")
  84.             self.closeButton = GetObject("closebutton")
  85.             self.scrollBar = GetObject("scrollbar")
  86.             self.chatLine = GetObject("chatline")
  87.             self.minimizeButton = GetObject("minimizebutton")
  88.             self.ignoreButton = GetObject("ignorebutton")
  89.             self.reportViolentWhisperButton = GetObject("reportviolentwhisperbutton")
  90.             self.acceptButton = GetObject("acceptbutton")
  91.             self.sendButton = GetObject("sendbutton")
  92.             self.board = GetObject("board")
  93.             self.editBar = GetObject("editbar")
  94.             self.gamemasterMark = GetObject("gamemastermark")
  95.         except:
  96.             import exception
  97.             exception.Abort("DialogWindow.LoadDialog.BindObject")
  98.  
  99.         self.gamemasterMark.Hide()
  100.         self.titleName.SetText("")
  101.         self.titleNameEdit.SetText("")
  102.         self.minimizeButton.SetEvent(ui.__mem_func__(self.Minimize))
  103.         self.closeButton.SetEvent(ui.__mem_func__(self.Close))
  104.         self.scrollBar.SetPos(1.0)
  105.         self.scrollBar.SetScrollEvent(ui.__mem_func__(self.OnScroll))
  106.         self.chatLine.SetReturnEvent(ui.__mem_func__(self.SendWhisper))
  107.         self.chatLine.SetEscapeEvent(ui.__mem_func__(self.Minimize))
  108.         self.chatLine.SetMultiLine()
  109.         self.sendButton.SetEvent(ui.__mem_func__(self.SendWhisper))
  110.         self.titleNameEdit.SetReturnEvent(ui.__mem_func__(self.AcceptTarget))
  111.         self.titleNameEdit.SetEscapeEvent(ui.__mem_func__(self.Close))
  112.         self.ignoreButton.SetToggleDownEvent(ui.__mem_func__(self.IgnoreTarget))
  113.         self.ignoreButton.SetToggleUpEvent(ui.__mem_func__(self.IgnoreTarget))
  114.         self.reportViolentWhisperButton.SetEvent(ui.__mem_func__(self.ReportViolentWhisper))
  115.         self.acceptButton.SetEvent(ui.__mem_func__(self.AcceptTarget))
  116.  
  117.         self.textRenderer = self.TextRenderer()
  118.         self.textRenderer.SetParent(self)
  119.         self.textRenderer.SetPosition(20, 28)
  120.         self.textRenderer.SetTargetName("")
  121.         self.textRenderer.Show()
  122.  
  123.         self.resizeButton = self.ResizeButton()
  124.         self.resizeButton.SetParent(self)
  125.         self.resizeButton.SetSize(20, 20)
  126.         self.resizeButton.SetPosition(280, 180)
  127.         self.resizeButton.SetMoveEvent(ui.__mem_func__(self.ResizeWhisperDialog))
  128.         self.resizeButton.Show()
  129.  
  130.         self.ResizeWhisperDialog()
  131.  
  132.     def Destroy(self):
  133.  
  134.         self.eventMinimize = None
  135.         self.eventClose = None
  136.         self.eventAcceptTarget = None
  137.  
  138.         self.ClearDictionary()
  139.         self.scrollBar.Destroy()
  140.         self.titleName = None
  141.         self.titleNameEdit = None
  142.         self.closeButton = None
  143.         self.scrollBar = None
  144.         self.chatLine = None
  145.         self.sendButton = None
  146.         self.ignoreButton = None
  147.         self.reportViolentWhisperButton = None
  148.         self.acceptButton = None
  149.         self.minimizeButton = None
  150.         self.textRenderer = None
  151.         self.board = None
  152.         self.editBar = None
  153.         self.resizeButton = None
  154.  
  155.     def ResizeWhisperDialog(self):
  156.         (xPos, yPos) = self.resizeButton.GetLocalPosition()
  157.         if xPos < 280:
  158.             self.resizeButton.SetPosition(280, yPos)
  159.             return
  160.         if yPos < 150:
  161.             self.resizeButton.SetPosition(xPos, 150)
  162.             return
  163.         self.SetWhisperDialogSize(xPos + 20, yPos + 20)
  164.  
  165.     def SetWhisperDialogSize(self, width, height):
  166.         try:
  167.  
  168.             max = int((width-90)/6) * 3 - 6
  169.  
  170.             self.board.SetSize(width, height)
  171.             self.scrollBar.SetPosition(width-25, 35)
  172.             self.scrollBar.SetScrollBarSize(height-100)
  173.             self.scrollBar.SetPos(1.0)
  174.             self.editBar.SetSize(width-18, 50)
  175.             self.chatLine.SetSize(width-90, 40)
  176.             self.chatLine.SetLimitWidth(width-90)
  177.             self.SetSize(width, height)
  178.  
  179.             if 0 != self.targetName:
  180.                 chat.SetWhisperBoxSize(self.targetName, width - 50, height - 90)           
  181.            
  182.             if localeInfo.IsARABIC():
  183.                 self.textRenderer.SetPosition(width-20, 28)
  184.                 self.scrollBar.SetPosition(width-25+self.scrollBar.GetWidth(), 35)
  185.                 self.editBar.SetPosition(10 + self.editBar.GetWidth(), height-60)
  186.                 self.sendButton.SetPosition(width - 80 + self.sendButton.GetWidth(), 10)
  187.                 self.minimizeButton.SetPosition(width-42 + self.minimizeButton.GetWidth(), 12)
  188.                 self.closeButton.SetPosition(width-24+self.closeButton.GetWidth(), 12)             
  189.                 self.chatLine.SetPosition(5 + self.chatLine.GetWidth(), 5)
  190.                 self.board.SetPosition(self.board.GetWidth(), 0)
  191.             else:
  192.                 self.textRenderer.SetPosition(20, 28)
  193.                 self.scrollBar.SetPosition(width-25, 35)
  194.                 self.editBar.SetPosition(10, height-60)
  195.                 self.sendButton.SetPosition(width-80, 10)
  196.                 self.minimizeButton.SetPosition(width-42, 12)
  197.                 self.closeButton.SetPosition(width-24, 12)
  198.  
  199.             self.SetChatLineMax(max)
  200.  
  201.         except:
  202.             import exception
  203.             exception.Abort("WhisperDialog.SetWhisperDialogSize.BindObject")
  204.  
  205.     def SetChatLineMax(self, max):
  206.         self.chatLine.SetMax(max)
  207.  
  208.         from grpText import GetSplitingTextLine
  209.  
  210.         text = self.chatLine.GetText()
  211.         if text:
  212.             self.chatLine.SetText(GetSplitingTextLine(text, max, 0))
  213.  
  214.     def OpenWithTarget(self, targetName):
  215.         chat.CreateWhisper(targetName)
  216.         chat.SetWhisperBoxSize(targetName, self.GetWidth() - 60, self.GetHeight() - 90)
  217.         self.chatLine.SetFocus()
  218.         self.titleName.SetText(targetName)
  219.         self.targetName = targetName
  220.         self.textRenderer.SetTargetName(targetName)
  221.         self.titleNameEdit.Hide()
  222.         self.ignoreButton.Hide()
  223.         if app.IsDevStage():
  224.             self.reportViolentWhisperButton.Show()
  225.         else:
  226.             self.reportViolentWhisperButton.Hide()
  227.         self.acceptButton.Hide()
  228.         self.gamemasterMark.Hide()
  229.         self.minimizeButton.Show()
  230.         import messenger
  231.         if not messenger.IsFriendByName(self.targetName):
  232.             self.friendButton = ui.Button()
  233.             self.friendButton.SetParent(self.board)
  234.             self.friendButton.SetPosition(119, 10)
  235.             self.friendButton.SetUpVisual("d:/ymir work/ui/game/windows/messenger_add_friend_01.sub")
  236.             self.friendButton.SetOverVisual("d:/ymir work/ui/game/windows/messenger_add_friend_02.sub")
  237.             self.friendButton.SetDownVisual("d:/ymir work/ui/game/windows/messenger_add_friend_03.sub")
  238.             self.friendButton.SetText("")
  239.             self.friendButton.SetEvent(ui.__mem_func__(self.AddFrind))
  240.             self.friendButton.Show()
  241.         if os.path.exists(str(constInfo.CLIENT_YOL)+"block_"+str(player.GetName())+".kf") and open(str(constInfo.CLIENT_YOL)+"block_"+str(player.GetName())+".kf", "r").read().find("#"+str(targetName)+"#") != -1:
  242.             self.ignoreButton.Show()
  243.             self.ignoreButton.SetText("Engeli ac")
  244.         else:
  245.             self.ignoreButton.Show()
  246.             self.ignoreButton.SetText("Engelle")
  247.            
  248.     def AddFrind(self):
  249.         net.SendMessengerAddByNamePacket(self.targetName)
  250.         self.friendButton.Hide()
  251.  
  252.     def OpenWithoutTarget(self, event):
  253.         self.eventAcceptTarget = event
  254.         self.titleName.SetText("")
  255.         self.titleNameEdit.SetText("")
  256.         self.titleNameEdit.SetFocus()
  257.         self.targetName = 0
  258.         self.titleNameEdit.Show()
  259.         self.ignoreButton.Hide()
  260.         self.reportViolentWhisperButton.Hide()
  261.         self.acceptButton.Show()
  262.         self.minimizeButton.Hide()
  263.         self.gamemasterMark.Hide()
  264.  
  265.     def SetGameMasterLook(self):
  266.         self.gamemasterMark.Show()
  267.         self.reportViolentWhisperButton.Hide()
  268.  
  269.     def Minimize(self):
  270.         self.titleNameEdit.KillFocus()
  271.         self.chatLine.KillFocus()
  272.         self.Hide()
  273.  
  274.         if None != self.eventMinimize:
  275.             self.eventMinimize(self.targetName)
  276.  
  277.     def Close(self):
  278.         chat.ClearWhisper(self.targetName)
  279.         self.titleNameEdit.KillFocus()
  280.         self.chatLine.KillFocus()
  281.         self.Hide()
  282.  
  283.         if None != self.eventClose:
  284.             self.eventClose(self.targetName)
  285.  
  286.     def ReportViolentWhisper(self):
  287.         net.SendChatPacket("/reportviolentwhisper " + self.targetName)
  288.  
  289.     def IgnoreTarget(self):
  290.         if str(self.targetName).find("[") != -1:
  291.             chat.AppendChat(chat.CHAT_TYPE_INFO, "<Fısıltı>: Game Master'leri sohbetten engelleyemessin.")
  292.             return
  293.         if os.path.exists(str(constInfo.CLIENT_YOL)+"block_"+str(player.GetName())+".kf") and open(str(constInfo.CLIENT_YOL)+"block_"+str(player.GetName())+".kf", "r").read().find("#"+str(self.targetName)+"#") != -1:
  294.             ac = open(str(constInfo.CLIENT_YOL)+"block_"+str(player.GetName())+".kf", "r")
  295.             oku = ac.read()
  296.             ac.close()
  297.             open(str(constInfo.CLIENT_YOL)+"block_"+str(player.GetName())+".kf", "w").write(str(oku).replace(str("#"+self.targetName+"#"), ""))
  298.             self.ignoreButton.SetText("Engelle")
  299.         else:
  300.             if os.path.exists(str(constInfo.CLIENT_YOL)+"block_"+str(player.GetName())+".kf"):
  301.                 open(str(constInfo.CLIENT_YOL)+"block_"+str(player.GetName())+".kf", "a+").write("\n"+str("#"+self.targetName+"#"))
  302.             else:
  303.                 open(str(constInfo.CLIENT_YOL)+"block_"+str(player.GetName())+".kf", "a+").write(str("#"+self.targetName+"#"))
  304.             self.ignoreButton.SetText("Engeli ac")
  305.  
  306.     def AcceptTarget(self):
  307.         name = self.titleNameEdit.GetText()
  308.         if len(name) <= 0:
  309.             self.Close()
  310.             return
  311.  
  312.         if None != self.eventAcceptTarget:
  313.             self.titleNameEdit.KillFocus()
  314.             self.eventAcceptTarget(name)
  315.  
  316.     def OnScroll(self):
  317.         chat.SetWhisperPosition(self.targetName, self.scrollBar.GetPos())
  318.  
  319.     def SendWhisper(self):
  320.         import time
  321.         import player
  322.         text = self.chatLine.GetText()
  323.         textLength = len(text)
  324.         if textLength > 0:
  325.             if net.IsInsultIn(text):
  326.                 chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.CHAT_INSULT_STRING)
  327.                 return
  328.             VectorsSaat = time.strftime("%H:%M:%S")
  329.             net.SendWhisperPacket(self.targetName, "[Saat" + VectorsSaat + "[Lv" + str(player.GetStatus(player.LEVEL)) + "]: " + text)
  330.             self.chatLine.SetText("")
  331.             chat.AppendWhisper(chat.WHISPER_TYPE_CHAT, self.targetName, player.GetName() + "[Saat" + VectorsSaat + "[Lv" + str(player.GetStatus(player.LEVEL)) + "]: " + text)
  332.         if os.path.exists(str(constInfo.CLIENT_YOL)+"block_"+str(player.GetName())+".kf") and open(str(constInfo.CLIENT_YOL)+"block_"+str(player.GetName())+".kf", "r").read().find("#"+str(self.targetName)+"#") != -1:
  333.                 chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, self.targetName, 'Engelledigin kisiye mesaj gonderemezsin.')
  334.                 return
  335.  
  336.     def OnTop(self):
  337.         self.chatLine.SetFocus()
  338.        
  339.     def BindInterface(self, interface):
  340.         self.interface = interface
  341.        
  342.     def OnMouseLeftButtonDown(self):
  343.         hyperlink = ui.GetHyperlink()
  344.         if hyperlink:
  345.             if app.IsPressed(app.DIK_LALT):
  346.                 link = chat.GetLinkFromHyperlink(hyperlink)
  347.                 ime.PasteString(link)
  348.             else:
  349.                 self.interface.MakeHyperlinkTooltip(hyperlink)
  350.  
  351. if "__main__" == __name__:
  352.     import uiTest
  353.  
  354.     class TestApp(uiTest.App):
  355.         def OnInit(self):
  356.             wnd = WhisperDialog(self.OnMax, self.OnMin)
  357.             wnd.LoadDialog()
  358.             wnd.OpenWithoutTarget(self.OnNew)
  359.             wnd.SetPosition(0, 0)
  360.             wnd.Show()
  361.  
  362.             self.wnd = wnd
  363.  
  364.         def OnMax(self):
  365.             pass
  366.  
  367.         def OnMin(self):
  368.             pass
  369.  
  370.         def OnNew(self):
  371.             pass
  372.  
  373.     TestApp().MainLoop()
Advertisement
Add Comment
Please, Sign In to add comment