mirror of
https://github.com/rbreu/beeref.git
synced 2026-03-11 08:54:28 +00:00
Add 'New Scene' action
This commit is contained in:
parent
27813f5bd8
commit
8ee5e1db68
4 changed files with 34 additions and 4 deletions
|
|
@ -114,4 +114,10 @@ actions = [
|
|||
'group': 'active_when_selection',
|
||||
'enabled': False,
|
||||
},
|
||||
{
|
||||
'id': 'new_scene',
|
||||
'text': '&New Scene',
|
||||
'shortcuts': ['Ctrl+N'],
|
||||
'callback': 'clear_scene',
|
||||
},
|
||||
]
|
||||
|
|
|
|||
|
|
@ -19,7 +19,9 @@ menu_structure = [
|
|||
{
|
||||
'menu': '&File',
|
||||
'items': [
|
||||
'new_scene',
|
||||
'open',
|
||||
MENU_SEPARATOR,
|
||||
'save',
|
||||
'save_as',
|
||||
MENU_SEPARATOR,
|
||||
|
|
|
|||
|
|
@ -102,6 +102,13 @@ class BeeGraphicsView(QtWidgets.QGraphicsView, ActionsMixin):
|
|||
return QtCore.QPoint(self.size().width() / 2,
|
||||
self.size().height() / 2)
|
||||
|
||||
def clear_scene(self):
|
||||
logging.debug('Clearing scene...')
|
||||
self.scene.clear()
|
||||
self.undo_stack.clear()
|
||||
self.filename = None
|
||||
self.setTransform(QtGui.QTransform())
|
||||
|
||||
def on_action_undo(self):
|
||||
logger.debug('Undo: %s' % self.undo_stack.undoText())
|
||||
self.undo_stack.undo()
|
||||
|
|
@ -132,8 +139,7 @@ class BeeGraphicsView(QtWidgets.QGraphicsView, ActionsMixin):
|
|||
|
||||
def open_from_file(self, filename):
|
||||
logger.info(f'Opening file {filename}')
|
||||
self.scene.clear()
|
||||
self.undo_stack.clear()
|
||||
self.clear_scene()
|
||||
try:
|
||||
progress = BeeProgressDialog(
|
||||
'Loading %s' % filename,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import os.path
|
||||
import tempfile
|
||||
from unittest.mock import patch
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
from PyQt6 import QtGui, QtWidgets
|
||||
|
||||
|
|
@ -64,11 +64,27 @@ class BeeGraphicsViewTestCase(BeeTestCase):
|
|||
assert '*.png' in formats
|
||||
assert '*.jpg' in formats
|
||||
|
||||
def test_open_from_file(self):
|
||||
def test_clear_scene(self):
|
||||
item = BeePixmapItem(QtGui.QImage())
|
||||
self.view.scene.addItem(item)
|
||||
self.view.scale(2, 2)
|
||||
self.view.translate(123, 456)
|
||||
self.view.filename = 'test.bee'
|
||||
self.view.undo_stack = MagicMock()
|
||||
|
||||
self.view.clear_scene()
|
||||
assert not self.view.scene.items()
|
||||
assert self.view.transform().isIdentity()
|
||||
assert self.view.filename is None
|
||||
self.view.undo_stack.clear.assert_called_once_with()
|
||||
|
||||
@patch('beeref.view.BeeGraphicsView.clear_scene')
|
||||
def test_open_from_file(self, clear_mock):
|
||||
root = os.path.dirname(__file__)
|
||||
filename = os.path.join(root, 'assets', 'test1item.bee')
|
||||
self.view.open_from_file(filename)
|
||||
assert len(self.view.scene.items()) == 1
|
||||
clear_mock.assert_called_once_with()
|
||||
|
||||
@patch('PyQt6.QtWidgets.QMessageBox.warning')
|
||||
def test_open_from_file_when_error(self, warn_mock):
|
||||
|
|
|
|||
Loading…
Reference in a new issue