# -*- coding: utf-8 -*- from tools import trace, timer class Section(object): def __init__(self, name:str = "", status = None): super(Section, self).__init__() self._status = status self._name = name self._edge = None self._begin_kp = 0.0 self._end_kp = 0.0 self._begin_strickler = None self._end_strickler = None @property def name(self): return self._name @name.setter def name(self, name): self._name = name self._status.modified() @property def edge(self): return self._edge @edge.setter def edge(self, edge): self._edge = edge if (edge is not None and self._begin_kp == 0.0 and self._end_kp == 0.0): self._begin_kp = self._edge.reach.get_kp_min() self._end_kp = self._edge.reach.get_kp_max() self._status.modified() def has_edge(self): return self._edge is not None @property def begin_kp(self): return self._begin_kp @begin_kp.setter def begin_kp(self, begin_kp): if self._edge is None: self._begin_kp = begin_kp else: _min = self._edge.reach.get_kp_min() _max = self._edge.reach.get_kp_max() if _min <= begin_kp <= _max: self._begin_kp = begin_kp self._status.modified() @property def end_kp(self): return self._end_kp @end_kp.setter def end_kp(self, end_kp): if self._edge is None: self._end_kp = end_kp else: _min = self._edge.reach.get_kp_min() _max = self._edge.reach.get_kp_max() if _min <= end_kp <= _max: self._end_kp = end_kp self._status.modified() @property def begin_strickler(self): return self._begin_strickler @begin_strickler.setter def begin_strickler(self, strickler): self._begin_strickler = strickler self._status.modified() @property def end_strickler(self): return self._end_strickler @end_strickler.setter def end_strickler(self, strickler): self._end_strickler = strickler self._status.modified()