pygui: replaced hook with wrapped hook class, fixed hook dialog edit
This commit is contained in:
parent
ba3a247495
commit
154fa8b77d
3 changed files with 159 additions and 17 deletions
126
daemon/core/gui/wrappers.py
Normal file
126
daemon/core/gui/wrappers.py
Normal file
|
@ -0,0 +1,126 @@
|
|||
from dataclasses import dataclass
|
||||
from enum import Enum
|
||||
from typing import List
|
||||
|
||||
from core.api.grpc import core_pb2
|
||||
|
||||
|
||||
class SessionState(Enum):
|
||||
DEFINITION = 1
|
||||
CONFIGURATION = 2
|
||||
INSTANTIATION = 3
|
||||
RUNTIME = 4
|
||||
DATACOLLECT = 5
|
||||
SHUTDOWN = 6
|
||||
|
||||
|
||||
class NodeType(Enum):
|
||||
DEFAULT = 0
|
||||
PHYSICAL = 1
|
||||
SWITCH = 4
|
||||
HUB = 5
|
||||
WIRELESS_LAN = 6
|
||||
RJ45 = 7
|
||||
TUNNEL = 8
|
||||
EMANE = 10
|
||||
TAP_BRIDGE = 11
|
||||
PEER_TO_PEER = 12
|
||||
CONTROL_NET = 13
|
||||
DOCKER = 15
|
||||
LXC = 16
|
||||
|
||||
|
||||
@dataclass
|
||||
class Hook:
|
||||
state: SessionState
|
||||
file: str
|
||||
data: str
|
||||
|
||||
@classmethod
|
||||
def from_proto(cls, hook: core_pb2.Hook) -> "Hook":
|
||||
return Hook(state=SessionState(hook.state), file=hook.file, data=hook.data)
|
||||
|
||||
def to_proto(self) -> core_pb2.Hook:
|
||||
return core_pb2.Hook(state=self.state.value, file=self.file, data=self.data)
|
||||
|
||||
|
||||
@dataclass
|
||||
class Position:
|
||||
x: float
|
||||
y: float
|
||||
|
||||
@classmethod
|
||||
def from_proto(cls, position: core_pb2.Position) -> "Position":
|
||||
return Position(x=position.x, y=position.y)
|
||||
|
||||
def to_proto(self) -> core_pb2.Position:
|
||||
return core_pb2.Position(x=self.x, y=self.y)
|
||||
|
||||
|
||||
@dataclass
|
||||
class Geo:
|
||||
lat: float = None
|
||||
lon: float = None
|
||||
alt: float = None
|
||||
|
||||
@classmethod
|
||||
def from_proto(cls, geo: core_pb2.Geo) -> "Geo":
|
||||
return Geo(lat=geo.lat, lon=geo.lon, alt=geo.alt)
|
||||
|
||||
def to_proto(self) -> core_pb2.Geo:
|
||||
return core_pb2.Geo(lat=self.lat, lon=self.lon, alt=self.alt)
|
||||
|
||||
|
||||
@dataclass
|
||||
class Node:
|
||||
id: int
|
||||
name: str
|
||||
type: NodeType
|
||||
model: str = None
|
||||
position: Position = None
|
||||
services: List[str] = None
|
||||
config_services: List[str] = None
|
||||
emane: str = None
|
||||
icon: str = None
|
||||
image: str = None
|
||||
server: str = None
|
||||
geo: Geo = None
|
||||
dir: str = None
|
||||
channel: str = None
|
||||
|
||||
@classmethod
|
||||
def from_proto(cls, node: core_pb2.Node) -> "Node":
|
||||
return Node(
|
||||
id=node.id,
|
||||
name=node.name,
|
||||
type=NodeType(node.type),
|
||||
model=node.model,
|
||||
position=Position.from_proto(node.position),
|
||||
services=list(node.services),
|
||||
config_services=list(node.config_services),
|
||||
emane=node.emane,
|
||||
icon=node.icon,
|
||||
image=node.image,
|
||||
server=node.server,
|
||||
geo=Geo.from_proto(node.geo),
|
||||
dir=node.dir,
|
||||
channel=node.channel,
|
||||
)
|
||||
|
||||
def to_proto(self) -> core_pb2.Node:
|
||||
return core_pb2.Node(
|
||||
id=self.id,
|
||||
name=self.name,
|
||||
type=self.type.value,
|
||||
model=self.model,
|
||||
position=self.position.to_proto(),
|
||||
services=self.services,
|
||||
config_services=self.config_services,
|
||||
emane=self.emane,
|
||||
icon=self.icon,
|
||||
image=self.image,
|
||||
server=self.server,
|
||||
geo=self.geo.to_proto(),
|
||||
dir=self.dir,
|
||||
channel=self.channel,
|
||||
)
|
Loading…
Add table
Add a link
Reference in a new issue