Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vmj-qt
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kulya
vmj-qt
Commits
2c6955fa
Commit
2c6955fa
authored
Jun 26, 2014
by
Dan Pascu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactored session info panel
parent
99163a70
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
762 additions
and
234 deletions
+762
-234
chatwindow.py
blink/chatwindow.py
+43
-41
chat_window.ui
resources/chat_window.ui
+145
-193
connection-direct.svg
resources/icons/connection-direct.svg
+95
-0
connection-relay.svg
resources/icons/connection-relay.svg
+109
-0
connection-unknown.svg
resources/icons/connection-unknown.svg
+99
-0
connection.svg
resources/icons/work/connection.svg
+271
-0
No files found.
blink/chatwindow.py
View file @
2c6955fa
...
...
@@ -7,7 +7,7 @@ import os
from
PyQt4
import
uic
from
PyQt4.QtCore
import
Qt
,
QEasingCurve
,
QEvent
,
QPointF
,
QPropertyAnimation
,
QRect
,
QSettings
,
QTimer
,
pyqtSignal
from
PyQt4.QtGui
import
QAction
,
QBrush
,
QColor
,
QIcon
,
QLabel
,
QLinearGradient
,
QListView
,
QMenu
,
QPainter
,
QPalette
,
QPen
,
QPolygonF
,
QTextCursor
,
QTextDocument
,
QTextEdit
from
PyQt4.QtGui
import
QAction
,
QBrush
,
QColor
,
QIcon
,
QLabel
,
QLinearGradient
,
QListView
,
QMenu
,
QPainter
,
QPalette
,
QPen
,
QP
ixmap
,
QP
olygonF
,
QTextCursor
,
QTextDocument
,
QTextEdit
from
PyQt4.QtGui
import
QApplication
,
QDesktopServices
from
PyQt4.QtWebKit
import
QWebPage
,
QWebSettings
,
QWebView
...
...
@@ -714,6 +714,10 @@ class ChatWindow(base_class, ui_class, ColorHelperMixin):
self
.
lock_grey_icon
=
QIcon
(
Resources
.
get
(
'icons/lock-grey-12.svg'
))
self
.
lock_green_icon
=
QIcon
(
Resources
.
get
(
'icons/lock-green-12.svg'
))
self
.
direct_connection_pixmap
=
QPixmap
(
Resources
.
get
(
'icons/connection-direct.svg'
))
self
.
relay_connection_pixmap
=
QPixmap
(
Resources
.
get
(
'icons/connection-relay.svg'
))
self
.
unknown_connection_pixmap
=
QPixmap
(
Resources
.
get
(
'icons/connection-unknown.svg'
))
# fix the SVG icons as the generated code loads them as pixmaps, losing their ability to scale -Dan
def
svg_icon
(
filename_off
,
filename_on
):
icon
=
QIcon
()
...
...
@@ -877,22 +881,16 @@ class ChatWindow(base_class, ui_class, ColorHelperMixin):
def
_update_session_info_panel
(
self
,
elements
=
{},
update_visibility
=
False
):
blink_session
=
self
.
selected_session
.
blink_session
have_session
=
blink_session
.
state
in
(
'connecting/*'
,
'connected/*'
,
'ending'
)
have_audio
=
'audio'
in
blink_session
.
streams
have_chat
=
'chat'
in
blink_session
.
streams
have_screen
=
'screen-sharing'
in
blink_session
.
streams
if
update_visibility
:
self
.
status_value_label
.
setEnabled
(
have_session
)
self
.
duration_value_label
.
setEnabled
(
have_session
)
self
.
account_value_label
.
setEnabled
(
have_session
)
self
.
remote_agent_value_label
.
setEnabled
(
have_session
)
self
.
sip_addresses_value_label
.
setEnabled
(
have_session
)
self
.
audio_value_widget
.
setEnabled
(
have_audio
)
self
.
audio_addresses_value_label
.
setEnabled
(
have_audio
)
self
.
audio_ice_status_value_label
.
setEnabled
(
have_audio
)
self
.
chat_value_widget
.
setEnabled
(
have_chat
)
self
.
chat_addresses_value_label
.
setEnabled
(
have_chat
)
self
.
screen_value_widget
.
setEnabled
(
have_screen
)
self
.
sip_address_value_label
.
setEnabled
(
have_session
)
self
.
audio_value_widget
.
setEnabled
(
'audio'
in
blink_session
.
streams
)
self
.
chat_value_widget
.
setEnabled
(
'chat'
in
blink_session
.
streams
)
self
.
screen_value_widget
.
setEnabled
(
'screen-sharing'
in
blink_session
.
streams
)
session_info
=
blink_session
.
info
audio_info
=
blink_session
.
info
.
streams
.
audio
...
...
@@ -924,52 +922,47 @@ class ChatWindow(base_class, ui_class, ColorHelperMixin):
if
'session'
in
elements
:
self
.
account_value_label
.
setText
(
blink_session
.
account
.
id
)
self
.
remote_agent_value_label
.
setText
(
session_info
.
remote_user_agent
or
u'N/A'
)
if
session_info
.
local_address
and
session_info
.
remote_address
:
self
.
sip_addresses_value_label
.
setText
(
u'
%
s
\u21c4
%
s:
%
s'
%
(
session_info
.
local_address
,
session_info
.
transport
,
session_info
.
remote_address
))
elif
session_info
.
local_address
:
self
.
sip_addresses_value_label
.
setText
(
u'
%
s
\u21c4
N/A'
%
session_info
.
local_address
)
if
session_info
.
remote_address
:
self
.
sip_address_value_label
.
setText
(
u'
%
s:
%
s'
%
(
session_info
.
transport
,
session_info
.
remote_address
))
else
:
self
.
sip_address
es
_value_label
.
setText
(
u'N/A'
)
self
.
sip_address_value_label
.
setText
(
u'N/A'
)
if
'media'
in
elements
:
self
.
audio_value_label
.
setText
(
audio_info
.
codec
or
'N/A'
)
self
.
audio_encryption_label
.
setVisible
(
audio_info
.
encryption
is
not
None
)
if
audio_info
.
local_address
and
audio_info
.
remote_address
:
self
.
audio_addresses_value_label
.
setText
(
u'
%
s
\u21c4
%
s'
%
(
audio_info
.
local_address
,
audio_info
.
remote_address
))
else
:
self
.
audio_addresses_value_label
.
setText
(
u'N/A'
)
if
audio_info
.
ice_status
==
None
:
self
.
audio_ice_status_value_label
.
setText
(
u'N/A'
)
elif
audio_info
.
ice_status
==
'disabled'
:
self
.
audio_ice_status_value_label
.
setText
(
u'Disabled'
)
elif
audio_info
.
ice_status
==
'gathering'
:
self
.
audio_ice_status_value_label
.
setText
(
u'Gathering candidates'
)
elif
audio_info
.
ice_status
==
'gathering_complete'
:
self
.
audio_ice_status_value_label
.
setText
(
u'Gathered candidates'
)
elif
audio_info
.
ice_status
==
'negotiating'
:
self
.
audio_ice_status_value_label
.
setText
(
u'Negotiating'
)
elif
audio_info
.
ice_status
==
'succeeded'
:
if
audio_info
.
ice_status
==
'succeeded'
:
if
'relay'
in
{
candidate
.
type
.
lower
()
for
candidate
in
(
audio_info
.
local_rtp_candidate
,
audio_info
.
remote_rtp_candidate
)}:
self
.
audio_ice_status_value_label
.
setText
(
u'Using relay'
)
self
.
audio_connection_label
.
setPixmap
(
self
.
relay_connection_pixmap
)
self
.
audio_connection_label
.
setToolTip
(
u'Using relay'
)
else
:
self
.
audio_ice_status_value_label
.
setText
(
u'Peer to peer'
)
self
.
audio_connection_label
.
setPixmap
(
self
.
direct_connection_pixmap
)
self
.
audio_connection_label
.
setToolTip
(
u'Peer to peer'
)
elif
audio_info
.
ice_status
==
'failed'
:
self
.
audio_ice_status_value_label
.
setText
(
u"Couldn't negotiate ICE"
)
self
.
audio_connection_label
.
setPixmap
(
self
.
unknown_connection_pixmap
)
self
.
audio_connection_label
.
setToolTip
(
u"Couldn't negotiate ICE"
)
elif
audio_info
.
ice_status
==
'disabled'
:
self
.
audio_connection_label
.
setPixmap
(
self
.
unknown_connection_pixmap
)
self
.
audio_connection_label
.
setToolTip
(
u'ICE is disabled'
)
else
:
self
.
audio_connection_label
.
setPixmap
(
self
.
unknown_connection_pixmap
)
self
.
audio_connection_label
.
setToolTip
(
u'Negotiating ICE'
)
self
.
audio_connection_label
.
setVisible
(
audio_info
.
remote_address
is
not
None
)
self
.
audio_encryption_label
.
setVisible
(
audio_info
.
encryption
is
not
None
)
if
any
(
len
(
path
)
>
1
for
path
in
(
chat_info
.
full_local_path
,
chat_info
.
full_remote_path
)):
self
.
chat_value_label
.
setText
(
u'Using relay'
)
self
.
chat_connection_label
.
setPixmap
(
self
.
relay_connection_pixmap
)
self
.
chat_connection_label
.
setToolTip
(
u'Using relay'
)
elif
chat_info
.
full_local_path
and
chat_info
.
full_remote_path
:
self
.
chat_value_label
.
setText
(
u'Peer to peer'
)
self
.
chat_connection_label
.
setPixmap
(
self
.
direct_connection_pixmap
)
self
.
chat_connection_label
.
setToolTip
(
u'Peer to peer'
)
else
:
self
.
chat_value_label
.
setText
(
u'N/A'
)
self
.
chat_encryption_label
.
setVisible
(
chat_info
.
remote_address
is
not
None
and
chat_info
.
transport
==
'tls'
)
if
chat_info
.
local_address
and
chat_info
.
remote_address
:
self
.
chat_addresses_value_label
.
setText
(
u'
%
s
\u21c4
%
s:
%
s'
%
(
chat_info
.
local_address
,
chat_info
.
transport
,
chat_info
.
remote_address
))
else
:
self
.
chat_addresses_value_label
.
setText
(
u'N/A'
)
self
.
chat_connection_label
.
setVisible
(
chat_info
.
remote_address
is
not
None
)
self
.
chat_encryption_label
.
setVisible
(
chat_info
.
remote_address
is
not
None
and
chat_info
.
transport
==
'tls'
)
if
screen_info
.
remote_address
is
not
None
and
screen_info
.
mode
==
'active'
:
self
.
screen_value_label
.
setText
(
u'Viewing remote'
)
...
...
@@ -977,6 +970,15 @@ class ChatWindow(base_class, ui_class, ColorHelperMixin):
self
.
screen_value_label
.
setText
(
u'Sharing local'
)
else
:
self
.
screen_value_label
.
setText
(
u'N/A'
)
if
any
(
len
(
path
)
>
1
for
path
in
(
screen_info
.
full_local_path
,
screen_info
.
full_remote_path
)):
self
.
screen_connection_label
.
setPixmap
(
self
.
relay_connection_pixmap
)
self
.
screen_connection_label
.
setToolTip
(
u'Using relay'
)
elif
screen_info
.
full_local_path
and
screen_info
.
full_remote_path
:
self
.
screen_connection_label
.
setPixmap
(
self
.
direct_connection_pixmap
)
self
.
screen_connection_label
.
setToolTip
(
u'Peer to peer'
)
self
.
screen_connection_label
.
setVisible
(
screen_info
.
remote_address
is
not
None
)
self
.
screen_encryption_label
.
setVisible
(
screen_info
.
remote_address
is
not
None
and
screen_info
.
transport
==
'tls'
)
if
'statistics'
in
elements
:
...
...
resources/chat_window.ui
View file @
2c6955fa
...
...
@@ -1145,7 +1145,7 @@ QToolButton:pressed {
</property>
</widget>
</item>
<item
row=
"1
5
"
column=
"0"
colspan=
"2"
>
<item
row=
"1
2
"
column=
"0"
colspan=
"2"
>
<spacer
name=
"info_panel_spacer"
>
<property
name=
"orientation"
>
<enum>
Qt::Vertical
</enum>
...
...
@@ -1162,9 +1162,9 @@ QToolButton:pressed {
</spacer>
</item>
<item
row=
"4"
column=
"0"
>
<widget
class=
"QLabel"
name=
"sip_address
es
_title_label"
>
<widget
class=
"QLabel"
name=
"sip_address_title_label"
>
<property
name=
"text"
>
<string>
Addresses
</string>
<string>
Next Hop
</string>
</property>
<property
name=
"role"
stdset=
"0"
>
<string
notr=
"true"
>
title
</string>
...
...
@@ -1172,7 +1172,7 @@ QToolButton:pressed {
</widget>
</item>
<item
row=
"4"
column=
"1"
>
<widget
class=
"ElidedLabel"
name=
"sip_address
es
_value_label"
>
<widget
class=
"ElidedLabel"
name=
"sip_address_value_label"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Ignored"
vsizetype=
"Preferred"
>
<horstretch>
0
</horstretch>
...
...
@@ -1180,7 +1180,7 @@ QToolButton:pressed {
</sizepolicy>
</property>
<property
name=
"text"
>
<string>
10.0.0.1 ⇄
tls:1.2.3.4:5061
</string>
<string>
tls:1.2.3.4:5061
</string>
</property>
<property
name=
"indent"
>
<number>
0
</number>
...
...
@@ -1199,7 +1199,16 @@ QToolButton:pressed {
<property
name=
"spacing"
>
<number>
2
</number>
</property>
<property
name=
"margin"
>
<property
name=
"leftMargin"
>
<number>
0
</number>
</property>
<property
name=
"topMargin"
>
<number>
0
</number>
</property>
<property
name=
"rightMargin"
>
<number>
4
</number>
</property>
<property
name=
"bottomMargin"
>
<number>
0
</number>
</property>
<item>
...
...
@@ -1219,24 +1228,31 @@ QToolButton:pressed {
</widget>
</item>
<item>
<widget
class=
"QLabel"
name=
"chat_
encryp
tion_label"
>
<widget
class=
"QLabel"
name=
"chat_
connec
tion_label"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Fixed"
vsizetype=
"Preferred"
>
<horstretch>
0
</horstretch>
<verstretch>
0
</verstretch>
</sizepolicy>
</property>
<property
name=
"minimumSize"
>
<size>
<width>
16
</width>
<height>
16
</height>
</size>
<property
name=
"text"
>
<string/>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16
</width>
<height>
16
</height>
</size>
<property
name=
"pixmap"
>
<pixmap>
icons/connection-relay.svg
</pixmap>
</property>
<property
name=
"alignment"
>
<set>
Qt::AlignCenter
</set>
</property>
</widget>
</item>
<item>
<widget
class=
"QLabel"
name=
"chat_encryption_label"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Fixed"
vsizetype=
"Preferred"
>
<horstretch>
0
</horstretch>
<verstretch>
0
</verstretch>
</sizepolicy>
</property>
<property
name=
"text"
>
<string/>
...
...
@@ -1253,71 +1269,114 @@ QToolButton:pressed {
</widget>
</item>
<item
row=
"8"
column=
"0"
>
<widget
class=
"QLabel"
name=
"
audio
_title_label"
>
<widget
class=
"QLabel"
name=
"
screen
_title_label"
>
<property
name=
"text"
>
<string>
Audio
</string>
<string>
Screen
</string>
</property>
<property
name=
"role"
stdset=
"0"
>
<string
notr=
"true"
>
title
</string>
</property>
</widget>
</item>
<item
row=
"7"
column=
"0"
>
<widget
class=
"QLabel"
name=
"chat_addresses_title_label"
>
<item
row=
"8"
column=
"1"
>
<widget
class=
"QWidget"
name=
"screen_value_widget"
native=
"true"
>
<property
name=
"role"
stdset=
"0"
>
<string
notr=
"true"
>
value
</string>
</property>
<layout
class=
"QHBoxLayout"
name=
"screen_value_layout"
>
<property
name=
"spacing"
>
<number>
2
</number>
</property>
<property
name=
"leftMargin"
>
<number>
0
</number>
</property>
<property
name=
"topMargin"
>
<number>
0
</number>
</property>
<property
name=
"rightMargin"
>
<number>
4
</number>
</property>
<property
name=
"bottomMargin"
>
<number>
0
</number>
</property>
<item>
<widget
class=
"ElidedLabel"
name=
"screen_value_label"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Ignored"
vsizetype=
"Preferred"
>
<horstretch>
0
</horstretch>
<verstretch>
0
</verstretch>
</sizepolicy>
</property>
<property
name=
"text"
>
<string>
Addresses
</string>
<string>
Viewing remote
</string>
</property>
<property
name=
"indent"
>
<number>
12
</number>
<number>
0
</number>
</property>
<property
name=
"role"
stdset=
"0"
>
<string
notr=
"true"
>
title
</string>
</widget>
</item>
<item>
<widget
class=
"QLabel"
name=
"screen_connection_label"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Fixed"
vsizetype=
"Preferred"
>
<horstretch>
0
</horstretch>
<verstretch>
0
</verstretch>
</sizepolicy>
</property>
<property
name=
"text"
>
<string/>
</property>
<property
name=
"pixmap"
>
<pixmap>
icons/connection-relay.svg
</pixmap>
</property>
<property
name=
"alignment"
>
<set>
Qt::AlignCenter
</set>
</property>
</widget>
</item>
<item
row=
"7"
column=
"1"
>
<widget
class=
"ElidedLabel"
name=
"chat_addresses_value
_label"
>
<item
>
<widget
class=
"QLabel"
name=
"screen_encryption
_label"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Ignor
ed"
vsizetype=
"Preferred"
>
<sizepolicy
hsizetype=
"Fix
ed"
vsizetype=
"Preferred"
>
<horstretch>
0
</horstretch>
<verstretch>
0
</verstretch>
</sizepolicy>
</property>
<property
name=
"text"
>
<string>
10.0.0.1 ⇄ tls:1.2.3.4
</string
>
<string/
>
</property>
<property
name=
"indent
"
>
<number>
0
</number
>
<property
name=
"pixmap
"
>
<pixmap>
icons/lock-grey-12.svg
</pixmap
>
</property>
<property
name=
"role"
stdset=
"0
"
>
<string
notr=
"true"
>
value
</string
>
<property
name=
"alignment
"
>
<set>
Qt::AlignCenter
</set
>
</property>
</widget>
</item>
<item
row=
"3"
column=
"0"
>
<widget
class=
"QLabel"
name=
"remote_agent_title_label"
>
</layout>
</widget>
</item>
<item
row=
"7"
column=
"0"
>
<widget
class=
"QLabel"
name=
"audio_title_label"
>
<property
name=
"text"
>
<string>
Remote Agent
</string>
<string>
Audio
</string>
</property>
<property
name=
"role"
stdset=
"0"
>
<string
notr=
"true"
>
title
</string>
</property>
</widget>
</item>
<item
row=
"
10
"
column=
"0"
>
<widget
class=
"QLabel"
name=
"
audio_ice_status
_title_label"
>
<item
row=
"
3
"
column=
"0"
>
<widget
class=
"QLabel"
name=
"
remote_agent
_title_label"
>
<property
name=
"text"
>
<string>
ICE Status
</string>
</property>
<property
name=
"indent"
>
<number>
12
</number>
<string>
Remote Agent
</string>
</property>
<property
name=
"role"
stdset=
"0"
>
<string
notr=
"true"
>
title
</string>
</property>
</widget>
</item>
<item
row=
"1
3
"
column=
"0"
colspan=
"2"
>
<item
row=
"1
0
"
column=
"0"
colspan=
"2"
>
<widget
class=
"QWidget"
name=
"packet_loss_widget"
native=
"true"
>
<layout
class=
"QVBoxLayout"
name=
"packet_loss_layout"
>
<property
name=
"spacing"
>
...
...
@@ -1390,7 +1449,7 @@ QToolButton:pressed {
</property>
</widget>
</item>
<item
row=
"1
4
"
column=
"0"
colspan=
"2"
>
<item
row=
"1
1
"
column=
"0"
colspan=
"2"
>
<widget
class=
"QWidget"
name=
"traffic_widget"
native=
"true"
>
<layout
class=
"QVBoxLayout"
name=
"speed_layout"
>
<property
name=
"spacing"
>
...
...
@@ -1450,25 +1509,6 @@ QToolButton:pressed {
</layout>
</widget>
</item>
<item
row=
"10"
column=
"1"
>
<widget
class=
"ElidedLabel"
name=
"audio_ice_status_value_label"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Ignored"
vsizetype=
"Preferred"
>
<horstretch>
0
</horstretch>
<verstretch>
0
</verstretch>
</sizepolicy>
</property>
<property
name=
"text"
>
<string>
Peer to peer
</string>
</property>
<property
name=
"indent"
>
<number>
0
</number>
</property>
<property
name=
"role"
stdset=
"0"
>
<string
notr=
"true"
>
value
</string>
</property>
</widget>
</item>
<item
row=
"2"
column=
"1"
>
<widget
class=
"ElidedLabel"
name=
"account_value_label"
>
<property
name=
"sizePolicy"
>
...
...
@@ -1625,20 +1665,7 @@ QToolButton:pressed {
</property>
</widget>
</item>
<item
row=
"9"
column=
"0"
>
<widget
class=
"QLabel"
name=
"audio_addresses_title_label"
>
<property
name=
"text"
>
<string>
Addresses
</string>
</property>
<property
name=
"indent"
>
<number>
12
</number>
</property>
<property
name=
"role"
stdset=
"0"
>
<string
notr=
"true"
>
title
</string>
</property>
</widget>
</item>
<item
row=
"12"
column=
"0"
colspan=
"2"
>
<item
row=
"9"
column=
"0"
colspan=
"2"
>
<widget
class=
"QWidget"
name=
"latency_widget"
native=
"true"
>
<layout
class=
"QVBoxLayout"
name=
"latency_layout"
>
<property
name=
"spacing"
>
...
...
@@ -1701,7 +1728,7 @@ QToolButton:pressed {
</layout>
</widget>
</item>
<item
row=
"
8
"
column=
"1"
>
<item
row=
"
7
"
column=
"1"
>
<widget
class=
"QWidget"
name=
"audio_value_widget"
native=
"true"
>
<property
name=
"role"
stdset=
"0"
>
<string
notr=
"true"
>
value
</string>
...
...
@@ -1710,7 +1737,16 @@ QToolButton:pressed {
<property
name=
"spacing"
>
<number>
2
</number>
</property>
<property
name=
"margin"
>
<property
name=
"leftMargin"
>
<number>
0
</number>
</property>
<property
name=
"topMargin"
>
<number>
0
</number>
</property>
<property
name=
"rightMargin"
>
<number>
4
</number>
</property>
<property
name=
"bottomMargin"
>
<number>
0
</number>
</property>
<item>
...
...
@@ -1730,24 +1766,31 @@ QToolButton:pressed {
</widget>
</item>
<item>
<widget
class=
"QLabel"
name=
"audio_
encryp
tion_label"
>
<widget
class=
"QLabel"
name=
"audio_
connec
tion_label"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Fixed"
vsizetype=
"Preferred"
>
<horstretch>
0
</horstretch>
<verstretch>
0
</verstretch>
</sizepolicy>
</property>
<property
name=
"minimumSize"
>
<size>
<width>
16
</width>
<height>
16
</height>
</size>
<property
name=
"text"
>
<string/>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16
</width>
<height>
16
</height>
</size>
<property
name=
"pixmap"
>
<pixmap>
icons/connection-direct.svg
</pixmap>
</property>
<property
name=
"alignment"
>
<set>
Qt::AlignCenter
</set>
</property>
</widget>
</item>
<item>
<widget
class=
"QLabel"
name=
"audio_encryption_label"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Fixed"
vsizetype=
"Preferred"
>
<horstretch>
0
</horstretch>
<verstretch>
0
</verstretch>
</sizepolicy>
</property>
<property
name=
"text"
>
<string/>
...
...
@@ -1773,25 +1816,6 @@ QToolButton:pressed {
</property>
</widget>
</item>
<item
row=
"9"
column=
"1"
>
<widget
class=
"ElidedLabel"
name=
"audio_addresses_value_label"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Ignored"
vsizetype=
"Preferred"
>
<horstretch>
0
</horstretch>
<verstretch>
0
</verstretch>
</sizepolicy>
</property>
<property
name=
"text"
>
<string>
10.0.0.1 ⇄ 1.2.3.4
</string>
</property>
<property
name=
"indent"
>
<number>
0
</number>
</property>
<property
name=
"role"
stdset=
"0"
>
<string
notr=
"true"
>
value
</string>
</property>
</widget>
</item>
<item
row=
"6"
column=
"0"
>
<widget
class=
"QLabel"
name=
"chat_title_label"
>
<property
name=
"text"
>
...
...
@@ -1821,78 +1845,6 @@ QToolButton:pressed {
</property>
</widget>
</item>
<item
row=
"11"
column=
"0"
>
<widget
class=
"QLabel"
name=
"screen_title_label"
>
<property
name=
"text"
>
<string>
Screen
</string>
</property>
<property
name=
"role"
stdset=
"0"
>
<string
notr=
"true"
>
title
</string>
</property>
</widget>
</item>
<item
row=
"11"
column=
"1"
>
<widget
class=
"QWidget"
name=
"screen_value_widget"
native=
"true"
>
<property
name=
"role"
stdset=
"0"
>
<string
notr=
"true"
>
value
</string>
</property>
<layout
class=
"QHBoxLayout"
name=
"screen_value_layout"
>
<property
name=
"spacing"
>
<number>
2
</number>
</property>
<property
name=
"margin"
>
<number>
0
</number>
</property>
<item>
<widget
class=
"ElidedLabel"
name=
"screen_value_label"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Ignored"
vsizetype=
"Preferred"
>
<horstretch>
0
</horstretch>
<verstretch>
0
</verstretch>
</sizepolicy>
</property>
<property
name=
"text"
>
<string>
Viewing remote
</string>
</property>
<property
name=
"indent"
>
<number>
0
</number>
</property>
</widget>
</item>
<item>
<widget
class=
"QLabel"
name=
"screen_encryption_label"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Fixed"
vsizetype=
"Preferred"
>
<horstretch>
0
</horstretch>
<verstretch>
0
</verstretch>
</sizepolicy>
</property>
<property
name=
"minimumSize"
>
<size>
<width>
16
</width>
<height>
16
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16
</width>
<height>
16
</height>
</size>
</property>
<property
name=
"text"
>
<string/>
</property>
<property
name=
"pixmap"
>
<pixmap>
icons/lock-grey-12.svg
</pixmap>
</property>
<property
name=
"alignment"
>
<set>
Qt::AlignCenter
</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
...
...
resources/icons/connection-direct.svg
0 → 100644
View file @
2c6955fa
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc=
"http://purl.org/dc/elements/1.1/"
xmlns:cc=
"http://creativecommons.org/ns#"
xmlns:rdf=
"http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg=
"http://www.w3.org/2000/svg"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:sodipodi=
"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape=
"http://www.inkscape.org/namespaces/inkscape"
width=
"12"
height=
"12"
id=
"svg2"
version=
"1.1"
inkscape:version=
"0.48.4 r9939"
sodipodi:docname=
"connection-direct.svg"
>
<defs
id=
"defs4"
/>
<sodipodi:namedview
id=
"base"
pagecolor=
"#ffffff"
bordercolor=
"#666666"
borderopacity=
"1.0"
inkscape:pageopacity=
"0.0"
inkscape:pageshadow=
"2"
inkscape:zoom=
"77.083333"
inkscape:cx=
"6"
inkscape:cy=
"6"
inkscape:document-units=
"px"
inkscape:current-layer=
"g3904"
showgrid=
"true"
showguides=
"true"
inkscape:guide-bbox=
"true"
inkscape:window-width=
"1706"
inkscape:window-height=
"1135"
inkscape:window-x=
"60"
inkscape:window-y=
"0"
inkscape:window-maximized=
"0"
>
<inkscape:grid
type=
"xygrid"
id=
"grid2985"
empspacing=
"10"
visible=
"true"
enabled=
"true"
snapvisiblegridlinesonly=
"true"
spacingx=
"0.25px"
spacingy=
"0.25px"
/>
</sodipodi:namedview>
<metadata
id=
"metadata7"
>
<rdf:RDF>
<cc:Work
rdf:about=
""
>
<dc:format>
image/svg+xml
</dc:format>
<dc:type
rdf:resource=
"http://purl.org/dc/dcmitype/StillImage"
/>
<dc:title
/>
</cc:Work>
</rdf:RDF>
</metadata>
<g
style=
"display:inline"
inkscape:label=
"Direct connection"
inkscape:groupmode=
"layer"
id=
"g3904"
transform=
"translate(0,-1040.3622)"
>
<path
style=
"fill:none;stroke:#272727;stroke-width:1.20000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d=
"M 2,10 10,2"
id=
"path3906"
inkscape:connector-curvature=
"0"
transform=
"translate(0,1040.3622)"
/>
<path
sodipodi:type=
"arc"
style=
"fill:#272727;fill-opacity:1;stroke:#272727;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.6;display:inline"
id=
"path3908"
sodipodi:cx=
"4.5"
sodipodi:cy=
"4.5"
sodipodi:rx=
"0.5"
sodipodi:ry=
"0.5"
d=
"M 5,4.5 C 5,4.7761424 4.7761424,5 4.5,5 4.2238576,5 4,4.7761424 4,4.5 4,4.2238576 4.2238576,4 4.5,4 4.7761424,4 5,4.2238576 5,4.5 z"
transform=
"matrix(1.6666666,0,0,1.6666666,2.0000002,1035.3622)"
/>
<path
sodipodi:type=
"arc"
style=
"fill:#272727;fill-opacity:1;stroke:#272727;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.6;display:inline"
id=
"path3910"
sodipodi:cx=
"4.5"
sodipodi:cy=
"4.5"
sodipodi:rx=
"0.5"
sodipodi:ry=
"0.5"
d=
"M 5,4.5 C 5,4.7761424 4.7761424,5 4.5,5 4.2238576,5 4,4.7761424 4,4.5 4,4.2238576 4.2238576,4 4.5,4 4.7761424,4 5,4.2238576 5,4.5 z"
transform=
"matrix(1.6666666,0,0,1.6666666,-4.9999998,1042.3622)"
/>
</g>
</svg>
resources/icons/connection-relay.svg
0 → 100644
View file @
2c6955fa
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc=
"http://purl.org/dc/elements/1.1/"
xmlns:cc=
"http://creativecommons.org/ns#"
xmlns:rdf=
"http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg=
"http://www.w3.org/2000/svg"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:sodipodi=
"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape=
"http://www.inkscape.org/namespaces/inkscape"
width=
"12"
height=
"12"
id=
"svg2"
version=
"1.1"
inkscape:version=
"0.48.4 r9939"
sodipodi:docname=
"connection-relay.svg"
>
<defs
id=
"defs4"
/>
<sodipodi:namedview
id=
"base"
pagecolor=
"#ffffff"
bordercolor=
"#666666"
borderopacity=
"1.0"
inkscape:pageopacity=
"0.0"
inkscape:pageshadow=
"2"
inkscape:zoom=
"77.083333"
inkscape:cx=
"6"
inkscape:cy=
"6"
inkscape:document-units=
"px"
inkscape:current-layer=
"g4897"
showgrid=
"true"
showguides=
"true"
inkscape:guide-bbox=
"true"
inkscape:window-width=
"1706"
inkscape:window-height=
"1135"
inkscape:window-x=
"60"
inkscape:window-y=
"0"
inkscape:window-maximized=
"0"
>
<inkscape:grid
type=
"xygrid"
id=
"grid2985"
empspacing=
"10"
visible=
"true"
enabled=
"true"
snapvisiblegridlinesonly=
"true"
spacingx=
"0.25px"
spacingy=
"0.25px"
/>
</sodipodi:namedview>
<metadata
id=
"metadata7"
>
<rdf:RDF>
<cc:Work
rdf:about=
""
>
<dc:format>
image/svg+xml
</dc:format>
<dc:type
rdf:resource=
"http://purl.org/dc/dcmitype/StillImage"
/>
<dc:title
/>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform=
"translate(0,-1040.3622)"
id=
"g4897"
inkscape:groupmode=
"layer"
inkscape:label=
"Relay connection"
style=
"display:inline"
>
<path
transform=
"matrix(1.6666666,0,0,1.6666666,-4.9999998,1042.3622)"
d=
"M 5,4.5 C 5,4.7761424 4.7761424,5 4.5,5 4.2238576,5 4,4.7761424 4,4.5 4,4.2238576 4.2238576,4 4.5,4 4.7761424,4 5,4.2238576 5,4.5 z"
sodipodi:ry=
"0.5"
sodipodi:rx=
"0.5"
sodipodi:cy=
"4.5"
sodipodi:cx=
"4.5"
id=
"path4903"
style=
"fill:#272727;fill-opacity:1;stroke:#272727;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.6;display:inline"
sodipodi:type=
"arc"
/>
<path
style=
"fill:none;stroke:#272727;stroke-width:1.20000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
d=
"m 3,1049.8622 6,0"
id=
"path5064-9"
inkscape:connector-curvature=
"0"
/>
<path
style=
"fill:none;stroke:#272727;stroke-width:1.20000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d=
"m 9.4999999,1043.3622 0,6"
id=
"path5064"
inkscape:connector-curvature=
"0"
/>
<path
transform=
"matrix(1.6666666,0,0,1.6666666,2.0000002,1035.3622)"
d=
"M 5,4.5 C 5,4.7761424 4.7761424,5 4.5,5 4.2238576,5 4,4.7761424 4,4.5 4,4.2238576 4.2238576,4 4.5,4 4.7761424,4 5,4.2238576 5,4.5 z"
sodipodi:ry=
"0.5"
sodipodi:rx=
"0.5"
sodipodi:cy=
"4.5"
sodipodi:cx=
"4.5"
id=
"path4901"
style=
"fill:#272727;fill-opacity:1;stroke:#272727;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.6;display:inline"
sodipodi:type=
"arc"
/>
<path
transform=
"matrix(1.6666666,0,0,1.6666666,2.0000002,1042.3622)"
d=
"M 5,4.5 C 5,4.7761424 4.7761424,5 4.5,5 4.2238576,5 4,4.7761424 4,4.5 4,4.2238576 4.2238576,4 4.5,4 4.7761424,4 5,4.2238576 5,4.5 z"
sodipodi:ry=
"0.5"
sodipodi:rx=
"0.5"
sodipodi:cy=
"4.5"
sodipodi:cx=
"4.5"
id=
"path4901-1"
style=
"fill:#272727;fill-opacity:1;stroke:#272727;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.6;display:inline"
sodipodi:type=
"arc"
/>
</g>
</svg>
resources/icons/connection-unknown.svg
0 → 100644
View file @
2c6955fa
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc=
"http://purl.org/dc/elements/1.1/"
xmlns:cc=
"http://creativecommons.org/ns#"
xmlns:rdf=
"http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg=
"http://www.w3.org/2000/svg"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:sodipodi=
"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape=
"http://www.inkscape.org/namespaces/inkscape"
width=
"12"
height=
"12"
id=
"svg2"
version=
"1.1"
inkscape:version=
"0.48.4 r9939"
sodipodi:docname=
"connection-unknown.svg"
>
<defs
id=
"defs4"
/>
<sodipodi:namedview
id=
"base"
pagecolor=
"#ffffff"
bordercolor=
"#666666"
borderopacity=
"1.0"
inkscape:pageopacity=
"0.0"
inkscape:pageshadow=
"2"
inkscape:zoom=
"77.083333"
inkscape:cx=
"6"
inkscape:cy=
"6"
inkscape:document-units=
"px"
inkscape:current-layer=
"g2992"
showgrid=
"true"
showguides=
"true"
inkscape:guide-bbox=
"true"
inkscape:window-width=
"1706"
inkscape:window-height=
"1135"
inkscape:window-x=
"60"
inkscape:window-y=
"0"
inkscape:window-maximized=
"0"
>
<inkscape:grid
type=
"xygrid"
id=
"grid2985"
empspacing=
"10"
visible=
"true"
enabled=
"true"
snapvisiblegridlinesonly=
"true"
spacingx=
"0.25px"
spacingy=
"0.25px"
/>
</sodipodi:namedview>
<metadata
id=
"metadata7"
>
<rdf:RDF>
<cc:Work
rdf:about=
""
>
<dc:format>
image/svg+xml
</dc:format>
<dc:type
rdf:resource=
"http://purl.org/dc/dcmitype/StillImage"
/>
<dc:title
/>
</cc:Work>
</rdf:RDF>
</metadata>
<g
style=
"display:inline"
inkscape:label=
"Unknown connection"
inkscape:groupmode=
"layer"
id=
"g2992"
transform=
"translate(0,-1040.3622)"
>
<path
sodipodi:type=
"arc"
style=
"fill:#272727;fill-opacity:1;stroke:#272727;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.6;display:inline"
id=
"path2994"
sodipodi:cx=
"4.5"
sodipodi:cy=
"4.5"
sodipodi:rx=
"0.5"
sodipodi:ry=
"0.5"
d=
"M 5,4.5 C 5,4.7761424 4.7761424,5 4.5,5 4.2238576,5 4,4.7761424 4,4.5 4,4.2238576 4.2238576,4 4.5,4 4.7761424,4 5,4.2238576 5,4.5 z"
transform=
"matrix(1.6666666,0,0,1.6666666,-4.9999998,1042.3622)"
/>
<path
sodipodi:type=
"arc"
style=
"fill:#272727;fill-opacity:1;stroke:#272727;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.6;display:inline"
id=
"path3000"
sodipodi:cx=
"4.5"
sodipodi:cy=
"4.5"
sodipodi:rx=
"0.5"
sodipodi:ry=
"0.5"
d=
"M 5,4.5 C 5,4.7761424 4.7761424,5 4.5,5 4.2238576,5 4,4.7761424 4,4.5 4,4.2238576 4.2238576,4 4.5,4 4.7761424,4 5,4.2238576 5,4.5 z"
transform=
"matrix(1.6666666,0,0,1.6666666,2.0000002,1035.3622)"
/>
<path
sodipodi:type=
"arc"
style=
"fill:#272727;fill-opacity:1;stroke:#272727;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.6;display:inline"
id=
"path3002"
sodipodi:cx=
"4.5"
sodipodi:cy=
"4.5"
sodipodi:rx=
"0.5"
sodipodi:ry=
"0.5"
d=
"M 5,4.5 C 5,4.7761424 4.7761424,5 4.5,5 4.2238576,5 4,4.7761424 4,4.5 4,4.2238576 4.2238576,4 4.5,4 4.7761424,4 5,4.2238576 5,4.5 z"
transform=
"matrix(1.6666666,0,0,1.6666666,2.0000002,1042.3622)"
/>
</g>
</svg>
resources/icons/work/connection.svg
0 → 100644
View file @
2c6955fa
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc=
"http://purl.org/dc/elements/1.1/"
xmlns:cc=
"http://creativecommons.org/ns#"
xmlns:rdf=
"http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg=
"http://www.w3.org/2000/svg"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:sodipodi=
"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape=
"http://www.inkscape.org/namespaces/inkscape"
width=
"12"
height=
"12"
id=
"svg2"
version=
"1.1"
inkscape:version=
"0.48.4 r9939"
sodipodi:docname=
"connection.svg"
>
<defs
id=
"defs4"
/>
<sodipodi:namedview
id=
"base"
pagecolor=
"#ffffff"
bordercolor=
"#666666"
borderopacity=
"1.0"
inkscape:pageopacity=
"0.0"
inkscape:pageshadow=
"2"
inkscape:zoom=
"77.083333"
inkscape:cx=
"6"
inkscape:cy=
"6"
inkscape:document-units=
"px"
inkscape:current-layer=
"g3904"
showgrid=
"true"
showguides=
"true"
inkscape:guide-bbox=
"true"
inkscape:window-width=
"1706"
inkscape:window-height=
"1135"
inkscape:window-x=
"60"
inkscape:window-y=
"0"
inkscape:window-maximized=
"0"
>
<inkscape:grid
type=
"xygrid"
id=
"grid2985"
empspacing=
"10"
visible=
"true"
enabled=
"true"
snapvisiblegridlinesonly=
"true"
spacingx=
"0.25px"
spacingy=
"0.25px"
/>
</sodipodi:namedview>
<metadata
id=
"metadata7"
>
<rdf:RDF>
<cc:Work
rdf:about=
""
>
<dc:format>
image/svg+xml
</dc:format>
<dc:type
rdf:resource=
"http://purl.org/dc/dcmitype/StillImage"
/>
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
style=
"display:none"
inkscape:label=
"Unknown connection"
inkscape:groupmode=
"layer"
id=
"g2992"
transform=
"translate(0,-1040.3622)"
>
<path
sodipodi:type=
"arc"
style=
"fill:#272727;fill-opacity:1;stroke:#272727;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.6;display:inline"
id=
"path2994"
sodipodi:cx=
"4.5"
sodipodi:cy=
"4.5"
sodipodi:rx=
"0.5"
sodipodi:ry=
"0.5"
d=
"m 5,4.5 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
transform=
"matrix(1.6666666,0,0,1.6666666,-4.9999998,1042.3622)"
/>
<path
sodipodi:type=
"arc"
style=
"fill:#272727;fill-opacity:1;stroke:#272727;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.6;display:inline"
id=
"path3000"
sodipodi:cx=
"4.5"
sodipodi:cy=
"4.5"
sodipodi:rx=
"0.5"
sodipodi:ry=
"0.5"
d=
"m 5,4.5 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
transform=
"matrix(1.6666666,0,0,1.6666666,2.0000002,1035.3622)"
/>
<path
sodipodi:type=
"arc"
style=
"fill:#272727;fill-opacity:1;stroke:#272727;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.6;display:inline"
id=
"path3002"
sodipodi:cx=
"4.5"
sodipodi:cy=
"4.5"
sodipodi:rx=
"0.5"
sodipodi:ry=
"0.5"
d=
"m 5,4.5 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
transform=
"matrix(1.6666666,0,0,1.6666666,2.0000002,1042.3622)"
/>
</g>
<g
transform=
"translate(0,-1040.3622)"
id=
"g4897"
inkscape:groupmode=
"layer"
inkscape:label=
"Relay connection"
style=
"display:none"
>
<path
transform=
"matrix(1.6666666,0,0,1.6666666,-4.9999998,1042.3622)"
d=
"m 5,4.5 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
sodipodi:ry=
"0.5"
sodipodi:rx=
"0.5"
sodipodi:cy=
"4.5"
sodipodi:cx=
"4.5"
id=
"path4903"
style=
"fill:#272727;fill-opacity:1;stroke:#272727;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.6;display:inline"
sodipodi:type=
"arc"
/>
<path
style=
"fill:none;stroke:#272727;stroke-width:1.20000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
d=
"m 3,1049.8622 6,0"
id=
"path5064-9"
inkscape:connector-curvature=
"0"
/>
<path
style=
"fill:none;stroke:#272727;stroke-width:1.20000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d=
"m 9.4999999,1043.3622 0,6"
id=
"path5064"
inkscape:connector-curvature=
"0"
/>
<path
transform=
"matrix(1.6666666,0,0,1.6666666,2.0000002,1035.3622)"
d=
"m 5,4.5 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
sodipodi:ry=
"0.5"
sodipodi:rx=
"0.5"
sodipodi:cy=
"4.5"
sodipodi:cx=
"4.5"
id=
"path4901"
style=
"fill:#272727;fill-opacity:1;stroke:#272727;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.6;display:inline"
sodipodi:type=
"arc"
/>
<path
transform=
"matrix(1.6666666,0,0,1.6666666,2.0000002,1042.3622)"
d=
"m 5,4.5 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
sodipodi:ry=
"0.5"
sodipodi:rx=
"0.5"
sodipodi:cy=
"4.5"
sodipodi:cx=
"4.5"
id=
"path4901-1"
style=
"fill:#272727;fill-opacity:1;stroke:#272727;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.6;display:inline"
sodipodi:type=
"arc"
/>
</g>
<g
style=
"display:none"
inkscape:label=
"Relay connection alt"
inkscape:groupmode=
"layer"
id=
"g4096"
transform=
"translate(0,-1040.3622)"
>
<path
style=
"fill:none;stroke:#272727;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d=
"m 6,2.5 -3.5,7"
id=
"path4130"
inkscape:connector-curvature=
"0"
transform=
"translate(0,1040.3622)"
/>
<path
style=
"fill:none;stroke:#272727;stroke-width:1.20000005;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d=
"M 9.5,9.5 6,2.5"
id=
"path4132"
inkscape:connector-curvature=
"0"
transform=
"translate(0,1040.3622)"
/>
<path
sodipodi:type=
"arc"
style=
"fill:#272727;fill-opacity:1;stroke:#272727;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.6;display:inline"
id=
"path4098"
sodipodi:cx=
"4.5"
sodipodi:cy=
"4.5"
sodipodi:rx=
"0.5"
sodipodi:ry=
"0.5"
d=
"m 5,4.5 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
transform=
"matrix(1.6666666,0,0,1.6666666,-4.9999998,1042.3622)"
/>
<path
sodipodi:type=
"arc"
style=
"fill:#272727;fill-opacity:1;stroke:#272727;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.6;display:inline"
id=
"path4104"
sodipodi:cx=
"4.5"
sodipodi:cy=
"4.5"
sodipodi:rx=
"0.5"
sodipodi:ry=
"0.5"
d=
"m 5,4.5 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
transform=
"matrix(1.6666666,0,0,1.6666666,-1.4999997,1035.3622)"
/>
<path
sodipodi:type=
"arc"
style=
"fill:#272727;fill-opacity:1;stroke:#272727;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.6;display:inline"
id=
"path4106"
sodipodi:cx=
"4.5"
sodipodi:cy=
"4.5"
sodipodi:rx=
"0.5"
sodipodi:ry=
"0.5"
d=
"m 5,4.5 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
transform=
"matrix(1.6666666,0,0,1.6666666,2.0000002,1042.3622)"
/>
</g>
<g
style=
"display:inline"
inkscape:label=
"Direct connection"
inkscape:groupmode=
"layer"
id=
"g3904"
transform=
"translate(0,-1040.3622)"
>
<path
style=
"fill:none;stroke:#272727;stroke-width:1.20000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d=
"M 2,10 10,2"
id=
"path3906"
inkscape:connector-curvature=
"0"
transform=
"translate(0,1040.3622)"
/>
<path
sodipodi:type=
"arc"
style=
"fill:#272727;fill-opacity:1;stroke:#272727;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.6;display:inline"
id=
"path3908"
sodipodi:cx=
"4.5"
sodipodi:cy=
"4.5"
sodipodi:rx=
"0.5"
sodipodi:ry=
"0.5"
d=
"m 5,4.5 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
transform=
"matrix(1.6666666,0,0,1.6666666,2.0000002,1035.3622)"
/>
<path
sodipodi:type=
"arc"
style=
"fill:#272727;fill-opacity:1;stroke:#272727;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.6;display:inline"
id=
"path3910"
sodipodi:cx=
"4.5"
sodipodi:cy=
"4.5"
sodipodi:rx=
"0.5"
sodipodi:ry=
"0.5"
d=
"m 5,4.5 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
transform=
"matrix(1.6666666,0,0,1.6666666,-4.9999998,1042.3622)"
/>
</g>
<g
transform=
"translate(0,-1040.3622)"
id=
"g4523"
inkscape:groupmode=
"layer"
inkscape:label=
"Direct connection alt"
style=
"display:none"
>
<path
transform=
"translate(0,1040.3622)"
inkscape:connector-curvature=
"0"
id=
"path4525"
d=
"M 2,10 10,2"
style=
"fill:none;stroke:#272727;stroke-width:1.20000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
/>
<path
transform=
"matrix(1.6666666,0,0,1.6666666,2.0000002,1035.3622)"
d=
"m 5,4.5 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
sodipodi:ry=
"0.5"
sodipodi:rx=
"0.5"
sodipodi:cy=
"4.5"
sodipodi:cx=
"4.5"
id=
"path4527"
style=
"fill:#272727;fill-opacity:1;stroke:#272727;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.6;display:inline"
sodipodi:type=
"arc"
/>
<path
transform=
"matrix(1.6666666,0,0,1.6666666,-4.9999998,1042.3622)"
d=
"m 5,4.5 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
sodipodi:ry=
"0.5"
sodipodi:rx=
"0.5"
sodipodi:cy=
"4.5"
sodipodi:cx=
"4.5"
id=
"path4529"
style=
"fill:#272727;fill-opacity:1;stroke:#272727;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.6;display:inline"
sodipodi:type=
"arc"
/>
<path
transform=
"matrix(1.6666666,0,0,1.6666666,2.0000002,1042.3622)"
d=
"m 5,4.5 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
sodipodi:ry=
"0.5"
sodipodi:rx=
"0.5"
sodipodi:cy=
"4.5"
sodipodi:cx=
"4.5"
id=
"path4531"
style=
"fill:#272727;fill-opacity:1;stroke:#272727;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.6;display:inline"
sodipodi:type=
"arc"
/>
</g>
</svg>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment