⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 svnservice.py

📁 wxPython的基本示例程序
💻 PY
📖 第 1 页 / 共 4 页
字号:
                                view.AddLines(_("Committed as revision %s.\n") % status.number)                            else:                                view.AddLines(_("Commit failed.\n"))                        except pysvn.ClientError, e:                        view.AddLines("%s\n" % str(e))                        wx.MessageBox(str(e), _("SVN Commit"), wx.OK | wx.ICON_EXCLAMATION)                    except:                        extype, ex, tb = sys.exc_info()                        view.AddLines("Commit failed: (%s) %s\n" % (extype, str(ex)))                        for line in traceback.format_tb(tb):                            view.AddLines(line)                        wx.MessageBox(_("Commit failed."), _("SVN Commit"), wx.OK | wx.ICON_EXCLAMATION)                        wx.GetApp().GetTopWindow().SetCursor(wx.StockCursor(wx.CURSOR_DEFAULT))                dlg.Destroy()                return True                    elif id == SVNService.SVN_CHECKIN_ID:                filenames = self.GetCurrentDocuments()[:]                filenames.sort(self.BasenameCaseInsensitiveCompare)                                # ask user if dirty files should be saved first                openDocs = wx.GetApp().GetDocumentManager().GetDocuments()                for filename in filenames:                    for doc in openDocs:                        if doc.GetFilename() == filename and doc.IsModified():                            yesNoMsg = wx.MessageDialog(wx.GetApp().GetTopWindow(),                                                     _("'%s' has unsaved modifications.  Save it before commit?") % os.path.basename(filename),                                                     _("SVN Commit"),                                                     wx.YES_NO|wx.CANCEL|wx.ICON_QUESTION)                            yesNoMsg.CenterOnParent()                            status = yesNoMsg.ShowModal()                            yesNoMsg.Destroy()                            if status == wx.ID_YES:                                doc.Save()                            elif status == wx.ID_NO:                                pass                            else: # elif status == wx.CANCEL:                                return True                            break                    shortFilenames = []                for i, filename in enumerate(filenames):                    shortFilename = os.path.basename(filename)                    shortFilenames.append(shortFilename)                    dlg = wx.Dialog(wx.GetApp().GetTopWindow(), -1, _("SVN Commit"))                    sizer = wx.BoxSizer(wx.VERTICAL)                sizer.Add(wx.StaticText(dlg, -1, _("Comment:")), 0, wx.ALIGN_CENTER_VERTICAL)                commentText = wx.TextCtrl(dlg, -1, size=(250,-1), style=wx.TE_MULTILINE)                sizer.Add(commentText, 1, wx.EXPAND|wx.TOP, HALF_SPACE)                    sizer.Add(wx.StaticText(dlg, -1, _("Files:")), 0, wx.ALIGN_CENTER_VERTICAL|wx.TOP, SPACE)                fileList = wx.CheckListBox(dlg, -1, choices = shortFilenames)                for i in range(fileList.GetCount()):                    fileList.Check(i, True)                sizer.Add(fileList, 0, wx.EXPAND|wx.TOP, HALF_SPACE)                    buttonSizer = wx.StdDialogButtonSizer()                okBtn = wx.Button(dlg, wx.ID_OK)                okBtn.SetDefault()                buttonSizer.AddButton(okBtn)                buttonSizer.AddButton(wx.Button(dlg, wx.ID_CANCEL))                buttonSizer.Realize()                                contentSizer = wx.BoxSizer(wx.VERTICAL)                contentSizer.Add(sizer, 0, wx.ALL, SPACE)                contentSizer.Add(buttonSizer, 0, wx.ALL|wx.ALIGN_RIGHT, SPACE)                    dlg.SetSizer(contentSizer)                dlg.Fit()                dlg.Layout()                    dlg.CenterOnParent()                if dlg.ShowModal() == wx.ID_OK:                    wx.GetApp().GetTopWindow().SetCursor(wx.StockCursor(wx.CURSOR_WAIT))                        messageService = wx.GetApp().GetService(MessageService.MessageService)                    messageService.ShowWindow()                        view = messageService.GetView()                    view.ClearLines()                    view.AddLines(_("SVN Commit:\n"))                        try:                        selFilenames = []                        for i in range(fileList.GetCount()):                            if fileList.IsChecked(i):                                selFilenames.append(filenames[i])                                view.AddLines("%s\n" % filenames[i])                                                    if len(selFilenames):                            comment = commentText.GetValue()                            status = self._client.checkin(selFilenames, comment)                                if status is None:                                view.AddLines(_("Nothing to commit.\n"))                            elif status.number > 0:                                view.AddLines(_("Committed as revision %s.\n") % status.number)                            else:                                view.AddLines(_("Commit failed.\n"))                        except pysvn.ClientError, e:                        view.AddLines("%s\n" % str(e))                        wx.MessageBox(str(e), _("SVN Commit"), wx.OK | wx.ICON_EXCLAMATION)                    except:                        extype, ex, tb = sys.exc_info()                        view.AddLines("Commit failed: (%s) %s\n" % (extype, str(ex)))                        for line in traceback.format_tb(tb):                            view.AddLines(line)                        wx.MessageBox(_("Commit failed."), _("SVN Commit"), wx.OK | wx.ICON_EXCLAMATION)                        wx.GetApp().GetTopWindow().SetCursor(wx.StockCursor(wx.CURSOR_DEFAULT))                dlg.Destroy()                return True                elif id == SVNService.SVN_CHECKOUT_ID:                config = wx.ConfigBase_Get()                svnUrl = config.Read(SVN_REPOSITORY_URL, self._defaultURL)                    dlg = wx.Dialog(wx.GetApp().GetTopWindow(), -1, _("SVN Checkout"))                    gridSizer = wx.FlexGridSizer(cols = 2, hgap = 5, vgap = 5)                gridSizer.Add(wx.StaticText(dlg, -1, _("Repository URL:")), 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT|wx.TOP, HALF_SPACE)                svnUrlList = ReadSvnUrlList()                svnURLCombobox = wx.ComboBox(dlg, -1, size=(200, -1), choices=svnUrlList, style=wx.CB_DROPDOWN)                if len(svnUrlList):                    svnURLCombobox.SetToolTipString(svnUrlList[0])                    svnURLCombobox.SetStringSelection(svnUrlList[0])                else:                    svnURLCombobox.SetToolTipString(_("Set Repository URL"))                gridSizer.Add(svnURLCombobox, 0)                    gridSizer.Add(wx.StaticText(dlg, -1, _("Checkout to dir:")), 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT|wx.TOP, HALF_SPACE)                localPath = wx.TextCtrl(dlg, -1, size = (200, -1))                localPath.SetToolTipString(_("Path in local file system where files will be located."))                findDirButton = wx.Button(dlg, -1, _("Browse..."))                    def OnBrowseButton(event):                    dirDlg = wx.DirDialog(wx.GetApp().GetTopWindow(), _("Choose a directory:"), style=wx.DD_DEFAULT_STYLE)                    dir = localPath.GetValue()                    if len(dir):                        dirDlg.SetPath(dir)                    dirDlg.CenterOnParent()                    if dirDlg.ShowModal() == wx.ID_OK:                        localPath.SetValue(dirDlg.GetPath())                        localPath.SetToolTipString(localPath.GetValue())                        localPath.SetInsertionPointEnd()                    dirDlg.Destroy()                wx.EVT_BUTTON(findDirButton, -1, OnBrowseButton)                    sizer = wx.BoxSizer(wx.HORIZONTAL)                sizer.Add(localPath, 1, wx.EXPAND)                sizer.Add(findDirButton, 0, wx.LEFT, HALF_SPACE)                gridSizer.Add(sizer, 0)                    buttonSizer = wx.StdDialogButtonSizer()                okBtn = wx.Button(dlg, wx.ID_OK)                okBtn.SetDefault()                buttonSizer.AddButton(okBtn)                buttonSizer.AddButton(wx.Button(dlg, wx.ID_CANCEL))                buttonSizer.Realize()                    contentSizer = wx.BoxSizer(wx.VERTICAL)                contentSizer.Add(gridSizer, 0, wx.ALL, SPACE)                contentSizer.Add(buttonSizer, 0, wx.ALL|wx.ALIGN_RIGHT, SPACE)                    dlg.SetSizer(contentSizer)                dlg.Fit()                dlg.Layout()                    dlg.CenterOnParent()                if dlg.ShowModal() == wx.ID_OK:                    wx.GetApp().GetTopWindow().SetCursor(wx.StockCursor(wx.CURSOR_WAIT))                                        WriteSvnUrlList(svnURLCombobox)                        messageService = wx.GetApp().GetService(MessageService.MessageService)                    messageService.ShowWindow()                        view = messageService.GetView()                    view.ClearLines()                    view.AddLines(_("SVN Checkout:\n"))                        svnUrl = svnURLCombobox.GetValue()                    toLocation = localPath.GetValue()                    try:                        self._client.checkout(svnUrl, toLocation)                        view.AddLines(_("Checkout completed.\n"))                    except pysvn.ClientError, e:                        view.AddLines(_("Checkout failed.  %s\n") % str(e))                        wx.MessageBox(_("Checkout failed.  %s") % str(e), _("SVN Checkout"), wx.OK | wx.ICON_EXCLAMATION)                    except:                        extype, ex, tb = sys.exc_info()                        view.AddLines("Checkout failed: (%s) %s\n" % (extype, str(ex)))                        for line in traceback.format_tb(tb):                            view.AddLines(line)                        wx.MessageBox(_("Checkout failed."), _("SVN Checkout"), wx.OK | wx.ICON_EXCLAMATION)                        wx.GetApp().GetTopWindow().SetCursor(wx.StockCursor(wx.CURSOR_DEFAULT))                dlg.Destroy()                return True                elif id == SVNService.SVN_REVERT_ID:                wx.GetApp().GetTopWindow().SetCursor(wx.StockCursor(wx.CURSOR_WAIT))                    filenames = self.GetCurrentDocuments()                    messageService = wx.GetApp().GetService(MessageService.MessageService)                messageService.ShowWindow()                    view = messageService.GetView()                view.ClearLines()                view.AddLines(_("SVN Revert:\n"))                for filename in filenames:                    view.AddLines("%s\n" % filename)                    try:                    self._client.revert(filenames)                    view.AddLines(_("Revert completed.\n"))                                        openDocs = wx.GetApp().GetDocumentManager().GetDocuments()                    for doc in openDocs[:]:   # need to make a copy of the list otherwise ordinality changes as we close the files                        if doc.GetFilename() in filenames:                            yesNoMsg = wx.MessageDialog(wx.GetApp().GetTopWindow(),                                                     _("Reverted file '%s' is currently open.  Close it?") % os.path.basename(doc.GetFilename()),                                                     _("Close File"),                                                     wx.YES_NO|wx.ICON_QUESTION)                            yesNoMsg.CenterOnParent()                            status = yesNoMsg.ShowModal()                            yesNoMsg.Destroy()                            if status == wx.ID_YES:                                doc.DeleteAllViews()                    except pysvn.ClientError, e:                    view.AddLines("%s\n" % str(e))                    wx.MessageBox(str(e), _("SVN Revert"), wx.OK | wx.ICON_EXCLAMATION)                except:                    extype, ex, tb = sys.exc_info()                    view.AddLines("Revert failed: (%s) %s\n" % (extype, str(ex)))                    for line in traceback.format_tb(tb):                        view.AddLines(line)                    wx.MessageBox(_("Revert failed."), _("SVN Revert"), wx.OK | wx.ICON_EXCLAMATION)                    wx.GetApp().GetTopWindow().SetCursor(wx.StockCursor(wx.CURSOR_DEFAULT))                return True                elif id == SVNService.SVN_ADD_ID:                wx.GetApp().GetTopWindow().SetCursor(wx.StockCursor(wx.CURSOR_WAIT))                    filenames = self.GetCurrentDocuments()                    messageService = wx.GetApp().GetService(MessageService.MessageService)                messageService.ShowWindow()                    view = messageService.GetView()                view.ClearLines()                view.AddLines(_("SVN Add:\n"))                for filename in filenames:                    view.AddLines("%s\n" % filename)                    try:                    self._client.add(filenames)                    view.AddLines(_("Add completed.\n"))                except pysvn.ClientError, e:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -