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

📄 svnservice.py

📁 wxPython的基本示例程序
💻 PY
📖 第 1 页 / 共 4 页
字号:
#----------------------------------------------------------------------------# Name:         SVNService.py# Purpose:      Subversion Service for pydocview## Author:       Morgan Hua## Created:      5/13/05# CVS-ID:       $Id: SVNService.py,v 1.4 2006/04/20 06:25:58 RD Exp $# Copyright:    (c) 2005 ActiveGrid, Inc.# License:      wxWindows License#----------------------------------------------------------------------------import wximport osimport os.pathimport ProjectEditorimport MessageServiceimport sys        # for errorsimport traceback  # for errorstry:    import pysvn  # python-subversion integration    SVN_INSTALLED = Trueexcept ImportError:    SVN_INSTALLED = False_ = wx.GetTranslation#----------------------------------------------------------------------------# Constants#----------------------------------------------------------------------------SVN_CONFIG_DIR = "SVNConfigDir"SVN_REPOSITORY_URL = "SVNRepositoryURLs"SPACE = 10HALF_SPACE = 5#----------------------------------------------------------------------------# Classes#----------------------------------------------------------------------------class SVNService(wx.lib.pydocview.DocService):    SVN_UPDATE_ALL_ID = wx.NewId()    SVN_UPDATE_ID = wx.NewId()    SVN_CHECKIN_ID = wx.NewId()    SVN_CHECKIN_ALL_ID = wx.NewId()    SVN_CHECKOUT_ID = wx.NewId()    SVN_REVERT_ID = wx.NewId()    SVN_ADD_ID = wx.NewId()    SVN_DELETE_ID = wx.NewId()    SVN_COMMAND_LIST = [SVN_UPDATE_ALL_ID, SVN_CHECKIN_ALL_ID, SVN_UPDATE_ID, SVN_CHECKIN_ID, SVN_CHECKOUT_ID, SVN_REVERT_ID, SVN_ADD_ID, SVN_DELETE_ID]    def __init__(self):        self._defaultURL = "svn://"        global SVN_INSTALLED        if SVN_INSTALLED:            config = wx.ConfigBase_Get()                        configDir = config.Read(SVN_CONFIG_DIR, "")            self._client = pysvn.Client(configDir)            try:                self._defaultURL = self._client.info('.').url            except:                pass                            self._client.callback_cancel = self.IfCancel            self._client.callback_notify = self.UpdateStatus            self._client.callback_get_log_message = self.GetLogMessage            self._client.callback_get_login = self.GetLogin            self._client.callback_ssl_server_trust_prompt = self.GetSSLServerTrust            self._client.callback_ssl_client_cert_password_prompt = self.SSLClientPassword            self._client.callback_ssl_client_cert_prompt = self.SSLClientCert            self._client.callback_ssl_server_prompt = self.SSLServerPrompt    #----------------------------------------------------------------------------    # pysvn.Client() Callback Methods    #----------------------------------------------------------------------------    def IfCancel(self):        """ return True if user wants to cancel current command """        return False    def UpdateStatus(self, eventDict):        messageService = wx.GetApp().GetService(MessageService.MessageService)        messageService.ShowWindow()        view = messageService.GetView()        view.AddLines(_("%s %s\n") % (eventDict['action'], eventDict['path']))    def GetLogMessage(self):        dlg = wx.TextEntryDialog(wx.GetApp().GetTopWindow(),                _("Comment"),                _("SVN Log Message"))        dlg.CenterOnParent()        if dlg.ShowModal() == wx.ID_OK:            retcode = True            message = dlg.GetValue()        else:            retcode = False            message = _("Cancel Action")        dlg.Destroy()        return retcode, message    def GetLogin(self, realm, username, maySave):        dlg = wx.Dialog(wx.GetApp().GetTopWindow(), -1, _("SVN Login"))        sizer = wx.FlexGridSizer(cols = 2, hgap = 5, vgap = 5)        sizer.Add(wx.StaticText(dlg, -1, _("Username:")), 0, wx.ALIGN_CENTER_VERTICAL)        usernameTxt = wx.TextCtrl(dlg, -1, username, size = (200, -1))        sizer.Add(usernameTxt, 0, wx.ALIGN_CENTER_VERTICAL)        sizer.Add(wx.StaticText(dlg, -1, _("Password:")), 0, wx.ALIGN_CENTER_VERTICAL)        passwordTxt = wx.TextCtrl(dlg, -1, size=(200, -1), style=wx.TE_PASSWORD)        sizer.Add(passwordTxt, 0, wx.ALIGN_CENTER_VERTICAL)        savePasswordCheckbox = wx.CheckBox(dlg, -1, _("Remember Username and Password"))        if not maySave:            savePasswordCheckbox.Enable(False)        buttonSizer = wx.BoxSizer(wx.HORIZONTAL)        okBtn = wx.Button(dlg, wx.ID_OK)        okBtn.SetDefault()        buttonSizer.Add(okBtn, 0, wx.RIGHT, HALF_SPACE)        buttonSizer.Add(wx.Button(dlg, wx.ID_CANCEL), 0)        contentSizer = wx.BoxSizer(wx.VERTICAL)        contentSizer.Add(sizer, 0, wx.LEFT|wx.TOP|wx.RIGHT, SPACE)        contentSizer.Add(savePasswordCheckbox, 0, wx.TOP|wx.LEFT|wx.BOTTOM, 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:            retcode = True            username = usernameTxt.GetValue().strip()            password = passwordTxt.GetValue()            save = savePasswordCheckbox.IsChecked()        else:            retcode = False            username = None            password = None            save = False        dlg.Destroy()        return retcode, username, password, save    def SSLServerPrompt(self):        """ Not implemented, as per pysvn documentation """        return    def GetSSLServerTrust(self, trustDict):        dlg = wx.Dialog(wx.GetApp().GetTopWindow(), -1, _("SSL Server Certificate"))        sizer = wx.FlexGridSizer(cols = 2, hgap = 5, vgap = 5)        for k in ['hostname', 'valid_from', 'valid_to', 'issuer_dname', 'realm']:            if trustDict.has_key(k):                sizer.Add(wx.StaticText(dlg, -1, "%s:" % k), 0, wx.ALIGN_CENTER_VERTICAL)                sizer.Add(wx.StaticText(dlg, -1, "%s"  % trustDict[k]), 0, wx.ALIGN_CENTER_VERTICAL)        box = wx.StaticBoxSizer(wx.StaticBox(dlg, -1, _("Certificate Info")), wx.VERTICAL)        box.Add(sizer, 0, wx.EXPAND)        certRadio = wx.RadioBox(dlg, -1, _("Certificate"), choices=[_("Accept Always"), _("Accept Once"), _("Reject")], majorDimension=1, style=wx.RA_SPECIFY_COLS)        buttonSizer = wx.BoxSizer(wx.HORIZONTAL)        okBtn = wx.Button(dlg, wx.ID_OK)        okBtn.SetDefault()        buttonSizer.Add(okBtn, 0, wx.RIGHT, HALF_SPACE)        buttonSizer.Add(wx.Button(dlg, wx.ID_CANCEL), 0)        contentSizer = wx.BoxSizer(wx.VERTICAL)        contentSizer.Add(box, 0, wx.TOP|wx.LEFT|wx.RIGHT|wx.EXPAND, SPACE)        contentSizer.Add(certRadio, 0, wx.TOP|wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.EXPAND, SPACE)        contentSizer.Add(buttonSizer, 0, wx.ALL|wx.ALIGN_RIGHT, SPACE)        dlg.SetSizer(contentSizer)        dlg.Fit()        dlg.Layout()        # default values for reject        retcode = False        acceptedFailures = 0        save = False        dlg.CenterOnParent()        if dlg.ShowModal() == wx.ID_OK:            cert = certRadio.GetStringSelection()            if cert == _("Accept Always"):                retcode = True                acceptedFailures = trustDict.get('failures')                save = True            elif cert == _("Accept Once"):                retcode = True                acceptedFailures = trustDict.get('failures')                save = False        dlg.Destroy()        return retcode, acceptedFailures, save    def SSLClientPassword(self, realm, maySave):        dlg = wx.Dialog(wx.GetApp().GetTopWindow(), -1, _("SSL Client Certificate Login"))        sizer = wx.FlexGridSizer(cols = 2, hgap = 5, vgap = 5)        sizer.Add(wx.StaticText(dlg, -1, _("Realm:")), 0, wx.ALIGN_CENTER_VERTICAL)        sizer.Add(wx.StaticText(dlg, -1, realm), 0, wx.ALIGN_CENTER_VERTICAL)        sizer.Add(wx.StaticText(dlg, -1, _("Password:")), 0, wx.ALIGN_CENTER_VERTICAL)        passwordTxt = wx.TextCtrl(dlg, -1, size=(200, -1), style=wx.TE_PASSWORD)        sizer.Add(passwordTxt, 0, wx.ALIGN_CENTER_VERTICAL)        savePasswordCheckbox = wx.CheckBox(dlg, -1, _("Remember Password"))        if not maySave:            savePasswordCheckbox.Enable(False)        buttonSizer = wx.BoxSizer(wx.HORIZONTAL)        okBtn = wx.Button(dlg, wx.ID_OK)        okBtn.SetDefault()        buttonSizer.Add(okBtn, 0, wx.RIGHT, HALF_SPACE)        buttonSizer.Add(wx.Button(dlg, wx.ID_CANCEL), 0)        contentSizer = wx.BoxSizer(wx.VERTICAL)        contentSizer.Add(sizer, 0, wx.LEFT|wx.TOP|wx.RIGHT, SPACE)        contentSizer.Add(savePasswordCheckbox, 0, wx.TOP|wx.LEFT|wx.BOTTOM, 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:            retcode = True            password = passwordTxt.GetValue()            save = savePasswordCheckbox.IsChecked()        else:            retcode = False            password = None            save = False        dlg.Destroy()        return retcode, password, save    def SSLClientCert(self):        dlg = wx.FileDialog(wx.GetApp().GetTopWindow(),            message="Choose certificate",            style=wx.OPEN|wx.FILE_MUST_EXIST|wx.CHANGE_DIR            )                    # dlg.CenterOnParent()  # wxBug: caused crash with wx.FileDialog        if dlg.ShowModal() == wx.ID_OK:            retcode = True            certfile = dlg.GetPath()

⌨️ 快捷键说明

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