svnservice.py
来自「Wxpython Implemented on Windows CE, Sou」· Python 代码 · 共 1,071 行 · 第 1/4 页
PY
1,071 行
view.AddLines("%s\n" % str(e))
wx.MessageBox(str(e), _("SVN Add"), wx.OK | wx.ICON_EXCLAMATION)
except:
extype, ex, tb = sys.exc_info()
view.AddLines("Add failed: (%s) %s\n" % (extype, str(ex)))
for line in traceback.format_tb(tb):
view.AddLines(line)
wx.MessageBox(_("Add failed."), _("SVN Add"), wx.OK | wx.ICON_EXCLAMATION)
wx.GetApp().GetTopWindow().SetCursor(wx.StockCursor(wx.CURSOR_DEFAULT))
return True
elif id == SVNService.SVN_DELETE_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 Delete:\n"))
for filename in filenames:
view.AddLines("%s\n" % filename)
try:
self._client.remove(filenames)
view.AddLines(_("Delete completed.\n"))
except pysvn.ClientError, e:
view.AddLines("%s\n" % str(e))
wx.MessageBox(str(e), _("SVN Delete"), wx.OK | wx.ICON_EXCLAMATION)
except:
extype, ex, tb = sys.exc_info()
view.AddLines("Delete failed: (%s) %s\n" % (extype, str(ex)))
for line in traceback.format_tb(tb):
view.AddLines(line)
wx.MessageBox(_("Delete failed."), _("SVN Delete"), wx.OK | wx.ICON_EXCLAMATION)
wx.GetApp().GetTopWindow().SetCursor(wx.StockCursor(wx.CURSOR_DEFAULT))
return True
return False
finally:
wx.GetApp().GetTopWindow().SetCursor(wx.StockCursor(wx.CURSOR_DEFAULT))
def ProcessUpdateUIEvent(self, event):
id = event.GetId()
if id in [SVNService.SVN_CHECKIN_ID,
SVNService.SVN_REVERT_ID,
SVNService.SVN_ADD_ID,
SVNService.SVN_DELETE_ID]:
if self.GetCurrentDocuments():
event.Enable(True)
else:
event.Enable(False)
return True
elif id == SVNService.SVN_UPDATE_ID:
if self.GetCurrentDocuments() or self.GetCurrentFolder():
event.Enable(True)
else:
event.Enable(False)
return True
elif id == SVNService.SVN_CHECKOUT_ID:
event.Enable(True)
return True
elif (id == SVNService.SVN_UPDATE_ALL_ID
or id == SVNService.SVN_CHECKIN_ALL_ID):
if self.GetCurrentProject():
event.Enable(True)
else:
event.Enable(False)
return True
return False
def GetCurrentProject(self):
projectService = wx.GetApp().GetService(ProjectEditor.ProjectService)
if projectService:
projView = projectService.GetView()
return projView.GetSelectedProject()
return None
def GetCurrentDocuments(self):
projectService = wx.GetApp().GetService(ProjectEditor.ProjectService)
if projectService:
projView = projectService.GetView()
if projView.FilesHasFocus():
filenames = projView.GetSelectedFiles()
if len(filenames):
return filenames
else:
return None
doc = wx.GetApp().GetTopWindow().GetDocumentManager().GetCurrentDocument()
if doc:
filenames = [doc.GetFilename()]
else:
filenames = None
return filenames
def GetCurrentFolder(self):
projectService = wx.GetApp().GetService(ProjectEditor.ProjectService)
if projectService:
projView = projectService.GetView()
if projView.FilesHasFocus():
folderPath = projView.GetSelectedPhysicalFolder()
if folderPath:
return folderPath
return None
def BasenameCaseInsensitiveCompare(self, s1, s2):
s1L = os.path.basename(s1).lower()
s2L = os.path.basename(s2).lower()
if s1L == s2L:
return 0
elif s1L < s2L:
return -1
else:
return 1
class SVNOptionsPanel(wx.Panel):
def __init__(self, parent, id):
wx.Panel.__init__(self, parent, id)
config = wx.ConfigBase_Get()
configDir = config.Read(SVN_CONFIG_DIR, "")
borderSizer = wx.BoxSizer(wx.VERTICAL)
sizer = wx.FlexGridSizer(cols = 2, hgap = 5, vgap = 5)
sizer.AddGrowableCol(1, 1)
sizer.Add(wx.StaticText(self, -1, _("SVN Config Dir:")), 0, wx.ALIGN_CENTER_VERTICAL)
self._svnConfigDir = wx.TextCtrl(self, -1, configDir, size = (200, -1))
if configDir == "":
self._svnConfigDir.SetToolTipString(_("Path Subversion configuration directory."))
else:
self._svnConfigDir.SetToolTipString(configDir)
findDirButton = wx.Button(self, -1, _("Browse..."))
def OnBrowseButton(event):
dirDlg = wx.DirDialog(self, _("Choose a directory:"), style=wx.DD_DEFAULT_STYLE)
dir = self._svnConfigDir.GetValue()
if len(dir):
dirDlg.SetPath(dir)
dirDlg.CenterOnParent()
if dirDlg.ShowModal() == wx.ID_OK:
self._svnConfigDir.SetValue(dirDlg.GetPath())
self._svnConfigDir.SetToolTipString(self._svnConfigDir.GetValue())
self._svnConfigDir.SetInsertionPointEnd()
dirDlg.Destroy()
wx.EVT_BUTTON(findDirButton, -1, OnBrowseButton)
hsizer = wx.BoxSizer(wx.HORIZONTAL)
hsizer.Add(self._svnConfigDir, 1, wx.EXPAND)
hsizer.Add(findDirButton, 0, wx.LEFT, HALF_SPACE)
sizer.Add(hsizer, 0, wx.EXPAND)
svnUrlList = ReadSvnUrlList()
sizer.Add(wx.StaticText(self, -1, _("SVN URL:")), 0, wx.ALIGN_CENTER_VERTICAL)
self._svnURLCombobox = wx.ComboBox(self, -1, size=(200, -1), choices=svnUrlList, style=wx.CB_DROPDOWN)
if len(svnUrlList):
self._svnURLCombobox.SetToolTipString(svnUrlList[0])
self._svnURLCombobox.SetStringSelection(svnUrlList[0])
else:
self._svnURLCombobox.SetToolTipString(_("Set Repository URL"))
sizer.Add(self._svnURLCombobox, 0, wx.EXPAND)
sizer.Add(wx.StaticText(self, -1, _("SVN_SSH:")), 0, wx.ALIGN_CENTER_VERTICAL)
svnSSH = os.getenv("SVN_SSH")
if not svnSSH or svnSSH == "":
self._svnSSH = wx.TextCtrl(self, -1, size = (200, -1))
else:
self._svnSSH = wx.TextCtrl(self, -1, svnSSH, size = (200, -1))
self._svnSSH.SetToolTipString(_("Override SVN_SSH environment variable temporarily."))
findSSHButton = wx.Button(self, -1, _("Browse..."))
def OnBrowseFileButton(event):
dirDlg = wx.FileDialog(self, _("Choose a file:"), style=wx.OPEN|wx.CHANGE_DIR)
# dirDlg.CenterOnParent() # wxBug: caused crash with wx.FileDialog
if dirDlg.ShowModal() == wx.ID_OK:
self._svnSSH.SetValue(dirDlg.GetPath())
self._svnSSH.SetToolTipString(self._svnSSH.GetValue())
self._svnSSH.SetInsertionPointEnd()
dirDlg.Destroy()
wx.EVT_BUTTON(findSSHButton, -1, OnBrowseFileButton)
hsizer = wx.BoxSizer(wx.HORIZONTAL)
hsizer.Add(self._svnSSH, 1, wx.EXPAND)
hsizer.Add(findSSHButton, 0, wx.LEFT, HALF_SPACE)
sizer.Add(hsizer, 0, wx.EXPAND)
borderSizer.Add(sizer, 0, wx.ALL|wx.EXPAND, SPACE)
self.SetSizer(borderSizer)
self.Layout()
parent.AddPage(self, _("SVN"))
def GetIcon(self):
return wx.NullIcon
def OnOK(self, optionsDialog):
config = wx.ConfigBase_Get()
config.Write(SVN_CONFIG_DIR, self._svnConfigDir.GetValue())
WriteSvnUrlList(self._svnURLCombobox)
os.environ["SVN_SSH"] = self._svnSSH.GetValue()
def ReadSvnUrlList():
""" Read in list of SNV repository URLs. First in list is the last one path used. """
config = wx.ConfigBase_Get()
urlStringList = config.Read(SVN_REPOSITORY_URL)
if len(urlStringList):
urlList = eval(urlStringList)
else:
urlList = []
if len(urlList) == 0:
svnService = wx.GetApp().GetService(SVNService)
if svnService and hasattr(svnService, "_defaultURL"):
urlList.append(svnService._defaultURL)
return urlList
def WriteSvnUrlList(comboBox):
""" Save out list of SVN repository URLs from combobox. Put on top the current selection. Only save out first 10 from the list """
urlList = []
url = comboBox.GetValue()
if len(url):
urlList.append(url)
for i in range(min(comboBox.GetCount(), 10)):
url = comboBox.GetString(i)
if url not in urlList:
urlList.append(url)
config = wx.ConfigBase_Get()
config.Write(SVN_REPOSITORY_URL, urlList.__repr__())
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?