Source code for pdpy_lib.connections.edge

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# **************************************************************************** #
# This file is part of the pdpy project: https://github.com/pdpy-org
# Copyright (C) 2021 Fede Camara Halac
# **************************************************************************** #
"""
Edge
====
"""

from .iolet import Iolet
from ..core.base import Base
from ..utilities.utils import log

__all__ = [ 'Edge' ]

[docs]class Edge(Base): """ A Pd Connection A Pd Connection object is a connection between two objects. Parameters ---------- 1. `source`: The source id of the connection 2. `port`: The port outlet of the source 3. `target`: The target id of the connection 4. `port`: The port inlet of the target """ def __init__(self, pd_lines=None, json=None, xml=None): self.__pdpy__ = self.__class__.__name__ super().__init__(cls="connect", json=json, xml=xml) if pd_lines is not None and json is None and xml is None: self.source = Iolet(id=pd_lines[0], port=pd_lines[1]) self.sink = Iolet(id=pd_lines[2], port=pd_lines[3])
[docs] def connect(self): if not hasattr(self, '__p__'): log(1, "connect(): No parent Instance Attached") else: canvas = getattr(self,'__p__') # log(1, f"connect(): setting source") self.source.setobj(canvas) # log(1, f"connect(): setting sink") self.sink.setobj(canvas) return self
def __pd__(self, o=None): # log(1,'EDGE to PD',self.__dict__) return super().__pd__(self.source.__pd__(o) + " " + self.sink.__pd__(o)) def __xml__(self, o=None): """ Returns an xml element for this edge """ x = super().__element__(scope=self) super().__subelement__(x, self.source.__xml__(o, tag='source')) super().__subelement__(x, self.sink.__xml__(o, tag='sink')) return x