-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsimple_example.py
More file actions
97 lines (73 loc) · 2.51 KB
/
simple_example.py
File metadata and controls
97 lines (73 loc) · 2.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/usr/bin/env python
# -*- coding: utf-8 -*-
""" An example of the basic mutaprops functions:
* mutaproperties
* mutasources
* read-only parameter
* UI manager initialization
"""
from mutaprops import *
import logging
import sys
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
logger = logging.getLogger(__name__)
@mutaprop_class("Hoovercraft UI")
class Hoovercraft:
MAX_EELS = 40
def __init__(self, number_of_eels=20, speed=0, direction='North'):
self._eel_count = number_of_eels
self._speed = speed
self._direction = direction
self._engine_running = False
self._steering_locked = True
@mutaproperty("Number of eels", MutaTypes.INT, min_val=0, max_val=MAX_EELS)
def eels(self):
return self._eel_count
@eels.setter
def eels(self, value):
self._eel_count = value
if self._eel_count >= self.MAX_EELS:
logger.warning("The hoovercraft is full of eels!")
@mutaprop_action("Drop all eels!")
def drop_all_eels(self):
self.eels = 0
logger.info("Eels are goooone!")
@mutaproperty("Engine state", MutaTypes.BOOL,
toggle={'on': 'Running', 'off': 'Stopped'})
def engine(self):
return self._engine_running
@engine.setter
def engine(self, value):
self._engine_running = value
self.steering_locked = not value
logger.info("Engine %s",
'started' if self._engine_running else 'stopped')
@mutasource
def steering_locked(self):
return self._steering_locked
@steering_locked.setter
def steering_locked(self, value):
self._steering_locked = value
@mutaproperty("Speed [km/h]", MutaTypes.INT, min_val=0, max_val=80,
read_only=steering_locked)
def speed(self):
return self._speed
@speed.setter
def speed(self, value):
self._speed = value
logger.info("Speed set to %d km/h", self._speed)
@mutaproperty("Direction of travel", MutaTypes.STRING,
select=['North', 'East', 'South', 'West'],
read_only=steering_locked)
def direction(self):
return self._direction
@direction.setter
def direction(self, value):
self._direction = value
logger.info("Going %s", self._direction)
if __name__ == '__main__':
test = Hoovercraft()
test.muta_init("Hoovercraft instance #1")
man = HttpMutaManager("Hoovercraft manager", proxy_log=logger)
man.add_object(test)
man.run(port=9000)