Changeset 67a46bffecfc…
Parent d3f5a5a198bd…
by
Changes to 3 files · Browse files at 67a46bffecfc Showing diff from parent d3f5a5a198bd Diff from another changeset...
@@ -108,6 +108,8 @@ elif action == 'qrefresh':
dlg.setWindowTitle(_('QRefresh'))
if dlg.exec_():
+ self.message.setSaved()
+ self.message.clear()
self.reload('tip')
def timerEvent(self, event):
@@ -351,13 +353,21 @@ return self.repomodel.branch()
def okToContinue(self):
- '''
- returns False if there is unsaved data
-
- If there is unsaved data, present a dialog asking the user if it is ok to
- discard the changes made.
- '''
- return True # TODO: check if there is an unsaved commit message
+ if self.message.isSaved():
+ res = True
+ else:
+ MB = QtGui.QMessageBox
+ prompt = _("The message text for '%s' has not been saved.")
+ mb = MB(MB.Warning, _("Unsaved Change Message"),
+ prompt % self.reponame(), MB.Discard | MB.Cancel, self)
+ mb.setInformativeText(_("Discard changes and close anyway?"))
+ mb.setDefaultButton(MB.Cancel)
+ ret = mb.exec_()
+ if ret == MB.Cancel:
+ res = False
+ else:
+ res = True
+ return res
def storeSettings(self):
s = QtCore.QSettings()
|
@@ -271,6 +271,8 @@
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
+ self.unsavedMessage = None
+ self.startEditMessage = ''
vb = QtGui.QVBoxLayout()
vb.setMargin(0)
@@ -283,6 +285,20 @@
connect(self._message, SIGNAL('anchorClicked(QUrl)'), self.anchorClicked)
+ def isSaved(self):
+ if self._message.isReadOnly():
+ res = self.unsavedMessage is None or self.unsavedMessage == ''
+ else:
+ res = str(self._message.toPlainText()) == str(self.startEditMessage)
+ return res
+
+ def setSaved(self):
+ self.unsavedMessage = None
+ self._message.setReadOnly(True)
+
+ def clear(self):
+ self._message.setText('')
+
def anchorClicked(self, qurl):
link = str(qurl.toString())
if link.startswith(revhashprefix):
@@ -297,13 +313,28 @@ def displayRevision(self, ctx, mqpatch):
self.ctx = ctx
- self._message.setReadOnly(ctx.rev() is not None)
+ editing = not self._message.isReadOnly()
- if ctx.rev() is None and mqpatch:
- ctx = ctx.p1()
- self._message.setText(ctx.description())
+ isWorkingDir = ctx.rev() is None
+ if isWorkingDir:
+ if not editing:
+ self._message.setReadOnly(False)
+ if self.unsavedMessage != None:
+ msg = self.unsavedMessage
+ elif mqpatch:
+ msg = ctx.p1().description()
+ self.startEditMessage = msg
+ else:
+ msg = ''
+ self.startEditMessage = msg
+ self._message.setText(msg)
return
+ if editing:
+ self.unsavedMessage = str(self._message.toPlainText())
+
+ self._message.setReadOnly(True)
+
desc = xml_escape(tounicode(ctx.description()))
desc = desc.replace('\n', '<br/>\n')
|
@@ -109,7 +109,9 @@
def repoTabCloseRequested(self, index):
tw = self.repoTabsWidget
- tw.removeTab(index)
+ w = tw.widget(index)
+ if w.okToContinue():
+ tw.removeTab(index)
def repoTabChanged(self, index=0):
self.setupBranchCombo()
@@ -467,7 +469,7 @@ If there is unsaved data, present a dialog asking the user if it is ok to
discard the changes made.
'''
- return True # we currently have no data to loose
+ return True
def storeSettings(self):
s = QtCore.QSettings()
|
Loading...