Пример #1
0
 def OnTeleport(self, event):
     selectedCount = self.panel.list.GetSelectedItemCount()
     if selectedCount != 1:
         wx.MessageBox('选择传送坐标的数量错误', style = wx.OK)
         return
     index = self.panel.list.GetFirstSelected()
     posList = []
     for col in xrange(1, 5):
         posList.append(self.panel.getColumnText(index, col).strip())
     command = '$teleport %s %s %s' % (posList[0], posList[1], posList[2])
     if posList[3] != '':
         command += ' ' + posList[3]
     gmString = '\ngm("%s")' % command + '\nself.wfile.write("1")'
     gmString = GM_FUNC + gmString
     self.conn = HTTPTransfer('127.0.0.1', int(self.portEdit.GetValue()), 10)
     self.conn.send(gmString)
     self.conn.recv()
Пример #2
0
 def OnGetPos(self, event):
     self.conn = HTTPTransfer('127.0.0.1', int(self.portEdit.GetValue()), 10)
     self.conn.send(GET_POS)
     recvStr = self.conn.recv()
     pos = cPickle.loads(recvStr)
     newKey = max(self.panel.itemDataMap.keys()) + 1
     for i, data in enumerate(pos[:3]):
         pos[i] = '%.2f' % pos[i]
     if pos[3] >= 100 and pos[3] < 1000:
         pos[3] = str(pos[3])
     else:
         pos[3] = ''
     self.panel.itemDataMap[newKey] = ['0备注名'] + pos
     self.panel.UpdateList()
     self.panel.writeData()
     for i in xrange(self.panel.list.GetItemCount()):
         if self.panel.list.GetItemData(i) == newKey:
             self.panel.list.Select(i)
             break
Пример #3
0
class MyFrame(wx.Frame):
    def __init__(
            self, parent, ID, title, pos = wx.DefaultPosition,
            size = wx.DefaultSize, style = wx.DEFAULT_FRAME_STYLE ^ (wx.RESIZE_BORDER | wx.MAXIMIZE_BOX)
            ):

        wx.Frame.__init__(self, parent, ID, title, pos, size, style)
        posBox = wx.StaticBox(self, -1, '坐标列表')
        opreationBox = wx.StaticBox(self, -1, '操作')
        getPosBtn = wx.Button(self, -1, '获取坐标')
        teleportBtn = wx.Button(self, -1, '传送')
        deleteBtn = wx.Button(self, -1, '删除')
        readBtn = wx.Button(self, -1, '读取坐标')
        backupBtn = wx.Button(self, -1, '备份坐标')
        label = wx.StaticText(self, -1, '游戏端口')
        self.portEdit = wx.TextCtrl(self, -1, '21929', size = (60, -1))

        posSizer = wx.StaticBoxSizer(posBox, wx.HORIZONTAL)
        opreationSizer = wx.StaticBoxSizer(opreationBox, wx.VERTICAL)
        self.panel = TestListCtrlPanel(self)
        posSizer.Add(self.panel, 0, wx.ALL)
        opreationSizer.Add(getPosBtn, 0, wx.ALL, 10)
        opreationSizer.Add(teleportBtn, 0, wx.ALL, 10)
        opreationSizer.Add(deleteBtn, 0, wx.ALL, 10)
        opreationSizer.Add(readBtn, 0, wx.ALL, 10)
        opreationSizer.Add(backupBtn, 0, wx.ALL, 10)
        opreationSizer.Add(label, 0, wx.ALL, 10)
        opreationSizer.Add(self.portEdit, 0, wx.ALL, 5)

        globalSizer = wx.BoxSizer(wx.HORIZONTAL)
        globalSizer.Add(posSizer, 0, wx.ALL, 10)
        globalSizer.Add(opreationSizer, 0, wx.ALL, 10)
        self.SetSizer(globalSizer)
        self.Fit()

        self.Bind(wx.EVT_BUTTON, self.OnGetPos, getPosBtn)
        self.Bind(wx.EVT_BUTTON, self.OnTeleport, teleportBtn)
        self.Bind(wx.EVT_BUTTON, self.panel.OnDeletePos, deleteBtn)
        self.Bind(wx.EVT_BUTTON, self.OnReadData, readBtn)
        self.Bind(wx.EVT_BUTTON, self.OnBackupData, backupBtn)
        self.panel.list.Bind(wx.EVT_COMMAND_RIGHT_CLICK, self.OnRightClick)

        if self.panel.path:
            self.SetTitle('Teleport - ' + self.panel.path)

    def OnRightClick(self, event):
        if not hasattr(self, "popupID1"):
            self.popupID1 = wx.NewId()
            self.popupID2 = wx.NewId()

            self.Bind(wx.EVT_MENU, self.OnTeleport, id=self.popupID1)
            self.Bind(wx.EVT_MENU, self.panel.OnDeletePos, id=self.popupID2)

        menu = wx.Menu()
        menu.Append(self.popupID1, "传送")
        menu.Append(self.popupID2, "删除")

        selectedCount = self.panel.list.GetSelectedItemCount()
        if selectedCount == 0:
            menu.Enable(self.popupID2, False)
        if selectedCount != 1:
            menu.Enable(self.popupID1, False)
        self.PopupMenu(menu)
        menu.Destroy()

    def OnGetPos(self, event):
        self.conn = HTTPTransfer('127.0.0.1', int(self.portEdit.GetValue()), 10)
        self.conn.send(GET_POS)
        recvStr = self.conn.recv()
        pos = cPickle.loads(recvStr)
        newKey = max(self.panel.itemDataMap.keys()) + 1
        for i, data in enumerate(pos[:3]):
            pos[i] = '%.2f' % pos[i]
        if pos[3] >= 100 and pos[3] < 1000:
            pos[3] = str(pos[3])
        else:
            pos[3] = ''
        self.panel.itemDataMap[newKey] = ['0备注名'] + pos
        self.panel.UpdateList()
        self.panel.writeData()
        for i in xrange(self.panel.list.GetItemCount()):
            if self.panel.list.GetItemData(i) == newKey:
                self.panel.list.Select(i)
                break

    def OnTeleport(self, event):
        selectedCount = self.panel.list.GetSelectedItemCount()
        if selectedCount != 1:
            wx.MessageBox('选择传送坐标的数量错误', style = wx.OK)
            return
        index = self.panel.list.GetFirstSelected()
        posList = []
        for col in xrange(1, 5):
            posList.append(self.panel.getColumnText(index, col).strip())
        command = '$teleport %s %s %s' % (posList[0], posList[1], posList[2])
        if posList[3] != '':
            command += ' ' + posList[3]
        gmString = '\ngm("%s")' % command + '\nself.wfile.write("1")'
        gmString = GM_FUNC + gmString
        self.conn = HTTPTransfer('127.0.0.1', int(self.portEdit.GetValue()), 10)
        self.conn.send(gmString)
        self.conn.recv()

    def OnReadData(self, event):
        dlg = wx.FileDialog(
            self, message="选择坐标文件",
            defaultDir=os.getcwd(), 
            defaultFile="",
            style=wx.OPEN | wx.CHANGE_DIR
            )
        if dlg.ShowModal() == wx.ID_OK:
            path = dlg.GetPaths()[0]
            self.panel.readData(path)
            self.panel.UpdateList()
            self.SetTitle('Teleport - ' + self.panel.path)
        dlg.Destroy()

    def OnBackupData(self, event):
        currentPath = self.panel.path.encode('gbk')
        backupPath = self.panel.path.encode('gbk') + '.bak'
        os.system('copy /Y "%s" "%s"' % (currentPath, backupPath))
        wx.MessageBox('备份成功,路径:%s' % backupPath, style = wx.OK)