📄 svnservice.py
字号:
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 + -