=======
Project
=======

.. py:module:: mhi.xml.pscad.project
	:synopsis: PSCAD Case (project or library)

.. py:currentmodule:: mhi.xml.pscad


------------
Project File
------------

.. autoclass:: ProjectFile

	.. autoproperty:: version
	.. autoproperty:: path
	.. autoproperty:: namespace
	.. automethod:: save
	.. automethod:: save_as

	.. autoproperty:: definition
	.. autoproperty:: substitution_set
	.. autoproperty:: layer

	.. automethod:: canvas
	.. automethod:: user_canvases
	.. automethod:: canvases_in_use

	.. automethod:: components(name, key=value, ...) -> Iterable[Component]
	.. automethod:: component(name, key=value, ...) -> Optional[Component]
	.. automethod:: named_components
	.. automethod:: remap

	.. autoproperty:: parameters

	.. autoclass:: mhi.xml.pscad.project::ProjectFile.Parameters()
		:members:
		:undoc-members:


--------------------
Global Substitutions
--------------------

.. autoclass:: mhi.xml.pscad.substitution.SubstitutionSetMapping()

	.. autoproperty:: current
	.. automethod:: create_set
	.. automethod:: create_sets


-----------
Definitions
-----------

Definition Map
==============

.. autoclass:: mhi.xml.pscad.definitions.DefinitionMapping()
	:members:


Definition
==========

.. autoclass:: Definition

	.. autoproperty:: group
	.. autoproperty:: groups
	.. autoproperty:: description
	.. automethod:: delete

.. autoclass:: UserCmpDefn

	.. autoproperty:: form
	.. autoproperty:: schematic
	.. autoproperty:: script
	.. autoproperty:: graphics


Form
====

.. autoclass:: Form

	.. autoproperty:: w
	.. autoproperty:: h
	.. autoproperty:: splitter
	.. autoproperty:: commentlines
	.. autoproperty:: category
	.. autoproperty:: parameter

Form Category
-------------

.. autoclass:: Category

	.. autoproperty:: cond
	.. autoproperty:: parameter
	.. automethod:: add_text
	.. automethod:: add_integer
	.. automethod:: add_real

Form Parameter
--------------

.. autoclass:: Parameter

	.. autoproperty:: description
	.. autoproperty:: group
	.. autoproperty:: type
	.. autoproperty:: min
	.. autoproperty:: max
	.. autoproperty:: unit
	.. autoproperty:: empty_allowed
	.. autoproperty:: animate
	.. autoproperty:: help_mode
	.. autoproperty:: default
	.. autoproperty:: help
	.. autoproperty:: regex
	.. autoproperty:: cond
	.. autoproperty:: error_msg
	.. autoproperty:: choices


Graphics
========

.. autoclass:: Graphics

	.. automethod:: add_text
	.. automethod:: add_line
	.. automethod:: add_rect
	.. automethod:: add_ellipse
	.. automethod:: add_circle
	.. automethod:: ports
	.. automethod:: add_input
	.. automethod:: add_output
	.. automethod:: add_electrical

Graphic Elements
----------------

.. autoclass:: GfxText

	.. autoproperty:: color
	.. autoproperty:: value
	.. autoproperty:: full_font
	.. autoproperty:: font_size
	.. autoproperty:: anchor
	.. autoproperty:: angle

.. autoclass:: GfxLine

	.. autoproperty:: color
	.. autoproperty:: dasharray
	.. autoproperty:: thickness
	.. automethod:: vertices

.. autoclass:: GfxRectangle

	.. autoproperty:: color
	.. autoproperty:: dasharray
	.. autoproperty:: thickness
	.. autoproperty:: fill_style
	.. autoproperty:: fill_fg
	.. autoproperty:: fill_bg

.. autoclass:: GfxEllipse

	.. autoproperty:: color
	.. autoproperty:: dasharray
	.. autoproperty:: thickness
	.. autoproperty:: fill_style
	.. autoproperty:: fill_fg
	.. autoproperty:: fill_bg

.. autoclass:: Port

	.. autoproperty:: name
	.. autoproperty:: dim
	.. autoproperty:: mode
	.. autoproperty:: datatype
	.. autoproperty:: electype
	.. autoproperty:: internal

----------
Schematics
----------

Schematic
=========

.. autoclass:: Schematic

	.. autoproperty:: name
	.. autoproperty:: definition
	.. automethod:: components(name, key=value, ...) -> Iterator[Component]
	.. automethod:: component(name, key=value, ...) -> Optional[Component]
	.. automethod:: page_modules
	.. automethod:: add
	.. automethod:: remove
	.. automethod:: remove_components

	.. autoproperty:: parameters

Schematic Parameters
====================

	.. autoclass:: mhi.xml.pscad.schematic::Schematic.Parameters()
		:members:
		:undoc-members:


------
Layers
------

Layer Map
=========

.. autoclass:: mhi.xml.pscad.layer.LayerMapping()
	:members:

Layer
=====

.. autoclass:: mhi.xml.pscad.layer.Layer

	.. autoproperty:: name
	.. autoproperty:: state
	.. autoproperty:: enabled
	.. autoproperty:: disabled
	.. autoproperty:: ids

	.. automethod:: components
	.. automethod:: delete_components

	.. autoproperty:: parameters

Layer Parameters
================

	.. autoclass:: mhi.xml.pscad.layer::Layer.Parameters()
		:members:
		:undoc-members:

----------
Components
----------

Component
=========

.. autoclass:: Component

	.. autoproperty:: classid
	.. autoproperty:: location
	.. autoproperty:: canvas
	.. autoproperty:: size
	.. autoproperty:: defn
	.. autoproperty:: scope_and_defn
	.. autoproperty:: name
	.. autoproperty:: layer
	.. autoproperty:: params
	.. autoproperty:: enabled
	.. automethod:: enable
	.. automethod:: disable
	.. automethod:: delete

UserCmp
=======

.. autoclass:: UserCmp

	.. autoproperty:: defn
	.. autoproperty:: subcanvas
	.. automethod:: is_module

Wires
=====

.. autoclass:: Wire

	.. automethod:: vertices

---------------
Utility Classes
---------------

Vertex
======

.. autoclass:: Vertex

	.. property:: x
		:type: int

	.. property:: y
		:type: int


XY
==

.. autoclass:: XY

	.. property:: x
		:type: int

	.. property:: y
		:type: int


.. data:: UP

	An :class:`XY` vector representing one grid unit "up" on a
	:class:`Schematic` canvas.


.. data:: DOWN

	An :class:`XY` vector representing one grid unit "down" on a
	:class:`Schematic` canvas.


.. data:: LEFT

	An :class:`XY` vector representing one grid unit to the "left" on a
	:class:`Schematic` canvas.


.. data:: RIGHT

	An :class:`XY` vector representing one grid unit to the "right" on a
	:class:`Schematic` canvas.


Enum Types
==========

Resources
---------

.. autoclass:: ResourceType
	:members:
	:undoc-members:

Ports
-----

.. autoclass:: NodeType
	:members:
	:undoc-members:

.. autoclass:: SignalType
	:members:
	:undoc-members:

.. autoclass:: ElectricalType
	:members:
	:undoc-members:


Graphics
--------

.. autoclass:: Align
	:members:
	:undoc-members:

.. autoclass:: LineStyle
	:members:
	:undoc-members:

.. autoclass:: FillStyle
	:members:
	:undoc-members:

