A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Portuguese
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
svgitem.py
Go to the documentation of this file.
1
import
gobject
2
import
rsvg
3
#import cairo
4
import
goocanvas
5
import
os.path
6
7
8
class
SvgItem
(goocanvas.ItemSimple):
9
# setup our custom properties
10
__gproperties__ = {
11
'x'
: (float,
# property type
12
'X'
,
# property nick name
13
'The x coordinate of a SVG image'
,
# property description
14
-10e6,
# property minimum value
15
10e6,
# property maximum value
16
0,
# property default value
17
gobject.PARAM_READWRITE),
# property flags
18
19
'y'
: (float,
20
'Y'
,
21
'The y coordinate of a SVG image'
,
22
-10e6,
23
10e6,
24
0,
25
gobject.PARAM_READWRITE),
26
27
'width'
: (float,
28
'Width'
,
29
'The width of the SVG Image'
,
30
0,
31
10e6,
32
0,
33
gobject.PARAM_READWRITE),
34
35
'height'
: (float,
36
'Height'
,
37
'The width of the SVG Image'
,
38
0,
39
10e6,
40
0,
41
gobject.PARAM_READWRITE),
42
}
43
44
def
__init__
(self, x, y, rsvg_handle, **kwargs):
45
super(SvgItem, self).
__init__
(**kwargs)
46
assert
isinstance(rsvg_handle, rsvg.Handle)
47
self.
x
= x
48
self.
y
= y
49
self.
sx
= 1.0
50
self.
sy
= 1.0
51
self.
handle
= rsvg_handle
52
self.
width
= self.handle.props.width
53
self.
height
= self.handle.props.height
54
self.
custom_width
=
None
55
self.
custom_height
=
None
56
57
def
do_set_property
(self, pspec, value):
58
if
pspec.name ==
'x'
:
59
self.
x
= value
60
61
# make sure we update the display
62
self.changed(
True
)
63
64
elif
pspec.name ==
'y'
:
65
self.
y
= value
66
67
# make sure we update the display
68
self.changed(
True
)
69
70
elif
pspec.name ==
'width'
:
71
self.
custom_width
= value
72
self.
_size_changed
()
73
74
# make sure we update the display
75
self.changed(
True
)
76
77
elif
pspec.name ==
'height'
:
78
self.
custom_height
= value
79
self.
_size_changed
()
80
81
# make sure we update the display
82
self.changed(
True
)
83
84
else
:
85
raise
AttributeError,
'unknown property %s'
% pspec.name
86
87
def
_size_changed
(self):
88
if
self.
custom_width
is
None
and
self.
custom_height
is
None
:
89
self.
width
= self.handle.props.width
90
self.
height
= self.handle.props.height
91
self.
sx
= 1.0
92
self.
sy
= 1.0
93
elif
self.
custom_width
is
not
None
and
self.
custom_height
is
None
:
94
self.
width
= self.
custom_width
95
self.
sx
= self.
custom_width
/ self.handle.props.width
96
self.
sy
= self.
sx
97
self.
height
= self.handle.props.height*self.
sy
98
elif
self.
custom_width
is
None
and
self.
custom_height
is
not
None
:
99
self.
height
= self.
custom_height
100
self.
sy
= self.
custom_height
/ self.handle.props.height
101
self.
sx
= self.
sy
102
self.
width
= self.handle.props.width*self.
sx
103
else
:
104
self.
width
= self.
custom_width
105
self.
height
= self.
custom_height
106
self.
sx
= self.
custom_width
/ self.handle.props.width
107
self.
sy
= self.
custom_height
/ self.handle.props.height
108
109
def
do_get_property
(self, pspec):
110
if
pspec.name ==
'x'
:
111
return
self.
x
112
113
elif
pspec.name ==
'y'
:
114
return
self.
y
115
116
elif
pspec.name ==
'width'
:
117
self.
width
= self.handle.props.width
118
self.
height
= self.handle.props.height
119
120
return
self.
width
121
122
elif
pspec.name ==
'height'
:
123
return
self.
height
124
125
else
:
126
raise
AttributeError,
'unknown property %s'
% pspec.name
127
128
def
do_simple_paint
(self, cr, bounds):
129
cr.translate(self.
x
, self.
y
)
130
cr.scale(self.
sx
, self.
sy
)
131
self.handle.render_cairo(cr)
132
133
def
do_simple_update
(self, cr):
134
self.
bounds_x1
= float(self.
x
)
135
self.
bounds_y1
= float(self.
y
)
136
self.
bounds_x2
= float(self.
x
+ self.
width
)
137
self.
bounds_y2
= float(self.
y
+ self.
height
)
138
139
def
do_simple_is_item_at
(self, x, y, cr, is_pointer_event):
140
if
((x < self.
x
)
or
(x > self.
x
+ self.
width
))
or
((y < self.
y
)
or
(y > self.
y
+ self.
height
)):
141
return
False
142
else
:
143
return
True
144
145
146
_rsvg_cache = dict()
147
148
def
rsvg_handle_factory
(base_file_name):
149
try
:
150
return
_rsvg_cache[base_file_name]
151
except
KeyError:
152
full_path = os.path.join(os.path.dirname(__file__),
'resource'
, base_file_name)
153
rsvg_handle = rsvg.Handle(full_path)
154
_rsvg_cache[base_file_name] = rsvg_handle
155
return
rsvg_handle
156
visualizer.svgitem.SvgItem.bounds_y2
bounds_y2
Definition:
svgitem.py:137
visualizer.svgitem.SvgItem.bounds_x2
bounds_x2
Definition:
svgitem.py:136
visualizer.svgitem.SvgItem.width
width
Definition:
svgitem.py:52
visualizer.svgitem.SvgItem.do_simple_paint
def do_simple_paint
Definition:
svgitem.py:128
visualizer.svgitem.SvgItem.do_simple_is_item_at
def do_simple_is_item_at
Definition:
svgitem.py:139
visualizer.svgitem.SvgItem.custom_width
custom_width
Definition:
svgitem.py:54
visualizer.svgitem.SvgItem.do_get_property
def do_get_property
Definition:
svgitem.py:109
visualizer.svgitem.SvgItem._size_changed
def _size_changed
Definition:
svgitem.py:87
visualizer.svgitem.SvgItem.sy
sy
Definition:
svgitem.py:50
visualizer.svgitem.SvgItem.do_simple_update
def do_simple_update
Definition:
svgitem.py:133
visualizer.svgitem.SvgItem.bounds_y1
bounds_y1
Definition:
svgitem.py:135
visualizer.svgitem.SvgItem.y
y
Definition:
svgitem.py:48
visualizer.svgitem.SvgItem.bounds_x1
bounds_x1
Definition:
svgitem.py:134
visualizer.svgitem.SvgItem.height
height
Definition:
svgitem.py:53
visualizer.svgitem.SvgItem.x
x
Definition:
svgitem.py:47
visualizer.svgitem.SvgItem.handle
handle
Definition:
svgitem.py:51
visualizer.svgitem.SvgItem.custom_height
custom_height
Definition:
svgitem.py:55
visualizer.svgitem.SvgItem.__init__
def __init__
Definition:
svgitem.py:44
visualizer.svgitem.SvgItem.sx
sx
Definition:
svgitem.py:49
visualizer.svgitem.rsvg_handle_factory
def rsvg_handle_factory
Definition:
svgitem.py:148
visualizer.svgitem.SvgItem
Definition:
svgitem.py:8
visualizer.svgitem.SvgItem.do_set_property
def do_set_property
Definition:
svgitem.py:57
src
visualizer
visualizer
svgitem.py
Generated on Sun Apr 20 2014 11:15:03 for ns-3 by
1.8.6