Skip to content

Commit f266fa5

Browse files
committed
owpythonscript: can undo changes
1 parent 323db0b commit f266fa5

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

Orange/widgets/data/owpythonscript.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -463,14 +463,17 @@ def __init__(self):
463463

464464
new_from_file = QAction("Import Script from File", self)
465465
save_to_file = QAction("Save Selected Script to File", self)
466+
restore_saved = QAction("Undo Changes to Selected Script", self)
466467
save_to_file.setShortcut(QKeySequence(QKeySequence.SaveAs))
467468

468469
new_from_file.triggered.connect(self.onAddScriptFromFile)
469470
save_to_file.triggered.connect(self.saveScript)
471+
restore_saved.triggered.connect(self.restoreSaved)
470472

471473
menu = QMenu(w)
472474
menu.addAction(new_from_file)
473475
menu.addAction(save_to_file)
476+
menu.addAction(restore_saved)
474477
action.setMenu(menu)
475478
button = w.addAction(action)
476479
button.setPopupMode(QToolButton.InstantPopup)
@@ -602,7 +605,6 @@ def onSelectedScriptChanged(self, selected, deselected):
602605
def documentForScript(self, script=0):
603606
if type(script) != Script:
604607
script = self.libraryList[script]
605-
606608
if script not in self._cachedDocuments:
607609
doc = QTextDocument(self)
608610
doc.setDocumentLayout(QPlainTextDocumentLayout(doc))
@@ -630,6 +632,12 @@ def onModificationChanged(self, modified):
630632
def onSpliterMoved(self, pos, ind):
631633
self.splitterState = bytes(self.splitCanvas.saveState())
632634

635+
def restoreSaved(self):
636+
index = self.selectedScriptIndex()
637+
if index is not None:
638+
self.text.document().setPlainText(self.libraryList[index].script)
639+
self.text.document().setModified(False)
640+
633641
def saveScript(self):
634642
index = self.selectedScriptIndex()
635643
if index is not None:

Orange/widgets/data/tests/test_owpythonscript.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,3 +117,10 @@ def test_store_new_script(self):
117117
self.widget.onAddScript()
118118
script = self.widget.text.toPlainText()
119119
self.assertEqual("42", script)
120+
121+
def test_restore_from_library(self):
122+
before = self.widget.text.toPlainText()
123+
self.widget.text.setPlainText("42")
124+
self.widget.restoreSaved()
125+
script = self.widget.text.toPlainText()
126+
self.assertEqual(before, script)

0 commit comments

Comments
 (0)