Return size of the scene of the project

Ref #683
This commit is contained in:
Julien Duponchelle 2016-09-20 12:46:39 +02:00
parent 77eae35778
commit 64139387c4
No known key found for this signature in database
GPG Key ID: CE8B29639E07F5E8
7 changed files with 77 additions and 4 deletions

View File

@ -37,7 +37,10 @@ Compute
The process running on each server with GNS3. The GNS3 compute node The process running on each server with GNS3. The GNS3 compute node
is controlled by the GNS3 controller. is controlled by the GNS3 controller.
Symbol Symbol
------ ------
Symbol are the icon used for nodes. Symbol are the icon used for nodes.
Scene
-----
The drawing area

View File

@ -23,6 +23,7 @@ API
glossary glossary
curl curl
notifications notifications
position
endpoints endpoints
GNS3 developements GNS3 developements

7
docs/position.rst Normal file
View File

@ -0,0 +1,7 @@
Positions
=========
In a the project object you have properties scene_height and scene_width this define the
size of the drawing area as px.
The position of the node are relative to this with 0,0 as center of the area.

View File

@ -62,7 +62,9 @@ class Project:
:param status: Status of the project (opened / closed) :param status: Status of the project (opened / closed)
""" """
def __init__(self, name=None, project_id=None, path=None, controller=None, status="opened", filename=None, auto_start=False, auto_open=False, auto_close=True): def __init__(self, name=None, project_id=None, path=None, controller=None, status="opened",
filename=None, auto_start=False, auto_open=False, auto_close=True,
scene_height=1000, scene_width=2000):
self._controller = controller self._controller = controller
assert name is not None assert name is not None
@ -71,6 +73,8 @@ class Project:
self._auto_close = auto_close self._auto_close = auto_close
self._auto_open = auto_open self._auto_open = auto_open
self._status = status self._status = status
self._scene_height = scene_height
self._scene_width = scene_width
# Disallow overwrite of existing project # Disallow overwrite of existing project
if project_id is None and path is not None: if project_id is None and path is not None:
@ -139,6 +143,28 @@ class Project:
# Create the project on demand on the compute node # Create the project on demand on the compute node
self._project_created_on_compute = set() self._project_created_on_compute = set()
@property
def scene_height(self):
return self._scene_height
@scene_height.setter
def scene_height(self, val):
"""
Height of the drawing area
"""
self._scene_height = val
@property
def scene_width(self):
return self._scene_width
@scene_width.setter
def scene_width(self, val):
"""
Width of the drawing area
"""
self._scene_width = val
@property @property
def auto_start(self): def auto_start(self):
""" """
@ -694,7 +720,9 @@ class Project:
"status": self._status, "status": self._status,
"auto_start": self._auto_start, "auto_start": self._auto_start,
"auto_close": self._auto_close, "auto_close": self._auto_close,
"auto_open": self._auto_open "auto_open": self._auto_open,
"scene_height": self._scene_height,
"scene_width": self._scene_width
} }
def __repr__(self): def __repr__(self):

View File

@ -41,6 +41,14 @@ PROJECT_CREATE_SCHEMA = {
"minLength": 36, "minLength": 36,
"maxLength": 36, "maxLength": 36,
"pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$" "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
},
"scene_height": {
"type": "integer",
"description": "Height of the drawing area"
},
"scene_width": {
"type": "integer",
"description": "Width of the drawing area"
} }
}, },
"additionalProperties": False, "additionalProperties": False,
@ -71,6 +79,14 @@ PROJECT_UPDATE_SCHEMA = {
"auto_start": { "auto_start": {
"description": "Project start when opened", "description": "Project start when opened",
"type": "boolean" "type": "boolean"
},
"scene_height": {
"type": "integer",
"description": "Height of the drawing area"
},
"scene_width": {
"type": "integer",
"description": "Width of the drawing area"
} }
}, },
"additionalProperties": False, "additionalProperties": False,
@ -118,6 +134,14 @@ PROJECT_OBJECT_SCHEMA = {
"auto_start": { "auto_start": {
"description": "Project start when opened", "description": "Project start when opened",
"type": "boolean" "type": "boolean"
},
"scene_height": {
"type": "integer",
"description": "Height of the drawing area"
},
"scene_width": {
"type": "integer",
"description": "Width of the drawing area"
} }
}, },
"additionalProperties": False, "additionalProperties": False,

View File

@ -65,6 +65,14 @@ TOPOLOGY_SCHEMA = {
"type": "string", "type": "string",
"description": "Name of the project" "description": "Name of the project"
}, },
"scene_height": {
"type": "integer",
"description": "Height of the drawing area"
},
"scene_width": {
"type": "integer",
"description": "Width of the drawing area"
},
"topology": { "topology": {
"description": "The topology content", "description": "The topology content",
"type": "object", "type": "object",

View File

@ -68,7 +68,9 @@ def test_json(tmpdir):
"filename": "Test.gns3", "filename": "Test.gns3",
"auto_start": False, "auto_start": False,
"auto_close": True, "auto_close": True,
"auto_open": False "auto_open": False,
"scene_width": 2000,
"scene_height": 1000
} }