Skip to content

Commit

Permalink
Add embedded python console
Browse files Browse the repository at this point in the history
  • Loading branch information
don4get committed Aug 16, 2020
1 parent f763059 commit 1779353
Show file tree
Hide file tree
Showing 33 changed files with 131 additions and 36 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ htmlcov/
.eggs/
.mypy_cache
venv/
venv36/
venv38/
docs/build/
dist/
build/
Expand Down
2 changes: 1 addition & 1 deletion .isort.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ include_trailing_comma = True
force_grid_wrap=0
use_parentheses=True

known_third_party = PIL,PySide2,pytest,pytestqt,recommonmark,setuptools
known_third_party = PIL,PySide2,pyqtconsole,pytest,pytestqt,recommonmark,setuptools

2 changes: 0 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -60,5 +60,3 @@ repos:
types: [python]
stages: [push]
pass_filenames: false


1 change: 1 addition & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ include requirements_dev.txt
include requirements_docs.txt
include requirements_tests.txt
include tox.ini
include pytest.ini
include .coveragerc

recursive-include nodedge/qss *
Expand Down
7 changes: 7 additions & 0 deletions docs/source/apidoc/nodedge.code_generator.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
nodedge.code\_generator
=======================

.. automodule:: nodedge.code_generator
:members:
:undoc-members:
:show-inheritance:
7 changes: 7 additions & 0 deletions docs/source/apidoc/nodedge.connector.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
nodedge.connector
=================

.. automodule:: nodedge.connector
:members:
:undoc-members:
:show-inheritance:
7 changes: 7 additions & 0 deletions docs/source/apidoc/nodedge.edge_dragging.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
nodedge.edge\_dragging
======================

.. automodule:: nodedge.edge_dragging
:members:
:undoc-members:
:show-inheritance:
7 changes: 7 additions & 0 deletions docs/source/apidoc/nodedge.edge_validators.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
nodedge.edge\_validators
========================

.. automodule:: nodedge.edge_validators
:members:
:undoc-members:
:show-inheritance:
7 changes: 7 additions & 0 deletions docs/source/apidoc/nodedge.history_list_widget.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
nodedge.history\_list\_widget
=============================

.. automodule:: nodedge.history_list_widget
:members:
:undoc-members:
:show-inheritance:
7 changes: 7 additions & 0 deletions docs/source/apidoc/nodedge.mdi_area.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
nodedge.mdi\_area
=================

.. automodule:: nodedge.mdi_area
:members:
:undoc-members:
:show-inheritance:
8 changes: 7 additions & 1 deletion docs/source/apidoc/nodedge.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,11 @@ Submodules

.. toctree::

nodedge.code_generator
nodedge.connector
nodedge.edge
nodedge.edge_dragging
nodedge.edge_validators
nodedge.editor_widget
nodedge.editor_window
nodedge.graphics_cut_line
Expand All @@ -24,15 +28,17 @@ Submodules
nodedge.graphics_scene
nodedge.graphics_socket
nodedge.graphics_view
nodedge.history_list_widget
nodedge.mdi_area
nodedge.mdi_widget
nodedge.mdi_window
nodedge.node
nodedge.node_list_widget
nodedge.scene
nodedge.scene_clipboard
nodedge.scene_history
nodedge.scene_items_table_widget
nodedge.serializable
nodedge.socket
nodedge.utils

Module contents
Expand Down
7 changes: 7 additions & 0 deletions docs/source/apidoc/nodedge.scene_items_table_widget.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
nodedge.scene\_items\_table\_widget
===================================

.. automodule:: nodedge.scene_items_table_widget
:members:
:undoc-members:
:show-inheritance:
7 changes: 0 additions & 7 deletions docs/source/apidoc/nodedge.socket.rst

This file was deleted.

3 changes: 3 additions & 0 deletions mypy.ini
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ ignore_missing_imports = True

[mypy-pytestqt.*]
ignore_missing_imports = True

[mypy-pyqtconsole.*]
ignore_missing_imports = True
;
;[mypy-PySide2.*]
;ignore_missing_imports = True
Expand Down
2 changes: 1 addition & 1 deletion nodedge/blocks/block.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@

from nodedge.blocks.graphics_block import GraphicsBlock
from nodedge.blocks.graphics_block_content import GraphicsBlockContent
from nodedge.connector import Socket, SocketLocation
from nodedge.node import Node
from nodedge.socket import Socket, SocketLocation
from nodedge.utils import dumpException


Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion nodedge/edge.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@
from enum import IntEnum
from typing import Callable, List, Optional

from nodedge.connector import Socket
from nodedge.graphics_edge import (
GraphicsEdge,
GraphicsEdgeBezier,
GraphicsEdgeCircuit,
GraphicsEdgeDirect,
)
from nodedge.serializable import Serializable
from nodedge.socket import Socket
from nodedge.utils import dumpException


Expand Down
2 changes: 1 addition & 1 deletion nodedge/edge_dragging.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@

from PySide2.QtWidgets import QGraphicsItem

from nodedge.connector import Socket
from nodedge.edge import Edge, EdgeType
from nodedge.graphics_socket import GraphicsSocket
from nodedge.socket import Socket
from nodedge.utils import dumpException


Expand Down
2 changes: 1 addition & 1 deletion nodedge/edge_validators.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
"""

from nodedge.socket import Socket
from nodedge.connector import Socket

DEBUG = False

Expand Down
2 changes: 1 addition & 1 deletion nodedge/editor_window.py
Original file line number Diff line number Diff line change
Expand Up @@ -490,7 +490,7 @@ def maybeSave(self):
:rtype: ``bool``
"""

if not self.currentEditorWidget.isModified:
if self.currentEditorWidget is None or not self.currentEditorWidget.isModified:
return True

res = QMessageBox.warning(
Expand Down
2 changes: 1 addition & 1 deletion nodedge/mdi_widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@
NODELISTWIDGET_MIMETYPE,
getClassFromOperationCode,
)
from nodedge.connector import Socket
from nodedge.edge import EdgeType
from nodedge.editor_widget import EditorWidget
from nodedge.graphics_view import EdgeDraggingMode
from nodedge.node import Node
from nodedge.socket import Socket
from nodedge.utils import dumpException


Expand Down
18 changes: 18 additions & 0 deletions nodedge/mdi_window.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import os
from typing import Any, Callable, List, Optional, cast

from pyqtconsole.console import PythonConsole
from PySide2.QtCore import QSignalMapper, Qt, QTimer, Slot
from PySide2.QtGui import QCloseEvent, QIcon, QKeySequence
from PySide2.QtWidgets import (
Expand Down Expand Up @@ -115,6 +116,7 @@ def initUI(self) -> None:
self.createNodesDock()
self.createHistoryDock()
self.createSceneItemsDock()
self.createPythonConsole()

self.createActions()
self.createMenus()
Expand Down Expand Up @@ -463,6 +465,21 @@ def createSceneItemsDock(self) -> None:

self.addDockWidget(Qt.LeftDockWidgetArea, self.sceneItemsDock)

# noinspection PyAttributeOutsideInit
def createPythonConsole(self) -> None:
"""
Create a python console embedded in a dock.
:return: ``None``
"""
self.pythonConsoleWidget = PythonConsole()
self.pythonConsoleWidget.eval_in_thread()

self.pythonConsoleDock = QDockWidget("Python console")
self.pythonConsoleDock.setWidget(self.pythonConsoleWidget)
self.pythonConsoleDock.setFloating(False)

self.addDockWidget(Qt.LeftDockWidgetArea, self.pythonConsoleDock)

def closeEvent(self, event: QCloseEvent) -> None:
"""
Qt's close event handle.
Expand All @@ -471,6 +488,7 @@ def closeEvent(self, event: QCloseEvent) -> None:
:type event: ``QCloseEvent.py``
:return: ``None``
"""
self.pythonConsoleWidget.close()
self.mdiArea.closeAllSubWindows()
if self.mdiArea.currentSubWindow():
event.ignore()
Expand Down
2 changes: 1 addition & 1 deletion nodedge/node.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@
from PySide2.QtCore import QPoint, QPointF
from PySide2.QtWidgets import QGraphicsSceneMouseEvent

from nodedge.connector import Socket, SocketLocation
from nodedge.edge import Edge
from nodedge.graphics_node import GraphicsNode
from nodedge.graphics_node_content import GraphicsNodeContent
from nodedge.serializable import Serializable
from nodedge.socket import Socket, SocketLocation
from nodedge.utils import dumpException

Pos = TypeVar("Pos", List, Tuple, QPoint, QPointF)
Expand Down
8 changes: 4 additions & 4 deletions nodedge/qss/nodedge_style.qss
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ background:palette(highlight);
}

QMdiArea QTabBar::close-button{
image:url("nodedge/resources/iconsModified/close_window_100.png");
image:url("resources/iconsModified/close_window_100.png");
subcontrol-position:right bottom;
icon-size: 16px;
padding: 0px;
Expand All @@ -62,7 +62,7 @@ QDockWidget{
font-size: 14px;
color:palette(window-text);
/*font-weight:bold;*/
titlebar-close-icon:url("nodedge/resources/iconsModified/close_window_100.png");
titlebar-close-icon:url("resources/iconsModified/close_window_100.png");
titlebar-normal-icon:url(":icons/docktitle-normal-btn-light.png");
icon-size:25px;
width:25px;
Expand Down Expand Up @@ -93,7 +93,7 @@ background:qlineargradient(x1 : 0,y1 : 0,x2 : 0,y2 : 1,
}

QDockWidget::close-button{
image:url("nodedge/resources/iconsModified/close_window_100.png");
image:url("resources/iconsModified/close_window_100.png");
icon-size: 25px;
padding: 0px;
}
Expand Down Expand Up @@ -294,7 +294,7 @@ background:palette(highlight);
}

QMenu{
image:url("../../nodedge/resources/iconsModified/close_window_100.png");
image:url("resources/iconsModified/close_window_100.png");
}

GraphicsNodeContent QFrame {
Expand Down
5 changes: 5 additions & 0 deletions pytest.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[pytest]
qt_log_level_fail = DEBUG
qt_api=pyside2
filterwarnings =
ignore:.*QFontMetrics.width.* is deprecated:DeprecationWarning:pyqtconsole
3 changes: 2 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
PySide2==5.14.2.3
pyqtconsole
PySide2==5.14.2.3
2 changes: 1 addition & 1 deletion requirements_tests.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ pytest-cov
pytest-mock
pytest-qt
pytest-xvfb
tox
tox
8 changes: 6 additions & 2 deletions tests/mdi_window_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,26 @@

@pytest.fixture
def emptyMdiWindow(qtbot: QtBot):
return MdiWindow()
mdiWindow = MdiWindow()
yield mdiWindow
mdiWindow.close()


@pytest.fixture
def filledMdiWindow(qtbot):
window = MdiWindow()
window.show()
subWindow = window.newFile()
return window
yield window
window.close()


def test_newFile(emptyMdiWindow):
subWindow = emptyMdiWindow.newFile()
emptyMdiWindow.mdiArea.setActiveSubWindow(subWindow)

assert emptyMdiWindow.mdiArea.subWindowList() == [subWindow]
emptyMdiWindow.mdiArea.closeAllSubWindows()


def test_setActiveSubWindow(qtbot: QtBot, filledMdiWindow: MdiWindow):
Expand Down
5 changes: 3 additions & 2 deletions tests/node_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
from PySide2.QtWidgets import QMainWindow
from pytestqt.qtbot import QtBot

from nodedge.connector import SocketLocation
from nodedge.edge import Edge
from nodedge.editor_widget import EditorWidget
from nodedge.node import Node
from nodedge.scene import Scene
from nodedge.socket import SocketLocation
from nodedge.utils import dumpException


Expand All @@ -17,7 +17,8 @@ def emptyScene(qtbot):
editor = EditorWidget(window)
qtbot.addWidget(editor)

return editor.scene
yield editor.scene
window.close()


@pytest.fixture
Expand Down
3 changes: 2 additions & 1 deletion tests/scene_history_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ def emptyScene(qtbot):
window.show()
qtbot.addWidget(editor)

return editor.scene
yield editor.scene
window.close()


@pytest.fixture
Expand Down

0 comments on commit 1779353

Please sign in to comment.