improve look and feel of services view.
* add 'state' view * repack self.box to avoid blank spaces when widgets are hidden SVN revision: 73442
This commit is contained in:
parent
d982b5a9da
commit
8193f2368b
|
@ -6,10 +6,6 @@
|
||||||
# - Proxy
|
# - Proxy
|
||||||
# - Fix connman's PropertyChanged when changing off/manual -> dhcp,
|
# - Fix connman's PropertyChanged when changing off/manual -> dhcp,
|
||||||
# gateway is not updated.
|
# gateway is not updated.
|
||||||
# - Technology icon
|
|
||||||
# - Service icon
|
|
||||||
# - ServiceView should clear self.box contents and re-add items
|
|
||||||
# whenever visibility changes, otherwise there are some blank places
|
|
||||||
|
|
||||||
import elementary as elm
|
import elementary as elm
|
||||||
import evas
|
import evas
|
||||||
|
@ -715,6 +711,28 @@ class ServiceView(ObjectView):
|
||||||
("Gateway", "ipv4_gateway"),
|
("Gateway", "ipv4_gateway"),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
top_widgets = (
|
||||||
|
"connect",
|
||||||
|
"disconnect",
|
||||||
|
"forget",
|
||||||
|
"error",
|
||||||
|
"auto_connect",
|
||||||
|
"roaming",
|
||||||
|
"strength",
|
||||||
|
"security",
|
||||||
|
"state",
|
||||||
|
"nameservers_label",
|
||||||
|
"nameservers_entry",
|
||||||
|
"timeservers_label",
|
||||||
|
"timeservers_entry",
|
||||||
|
"domains_label",
|
||||||
|
"domains_entry",
|
||||||
|
"ipv4_frame",
|
||||||
|
"proxy_frame",
|
||||||
|
"ethernet_frame",
|
||||||
|
"vpn_frame",
|
||||||
|
)
|
||||||
|
|
||||||
def create_view(self, properties):
|
def create_view(self, properties):
|
||||||
self.type = str(properties.get("Type"))
|
self.type = str(properties.get("Type"))
|
||||||
self.immutable = bool(properties.get("Immutable"))
|
self.immutable = bool(properties.get("Immutable"))
|
||||||
|
@ -744,12 +762,26 @@ class ServiceView(ObjectView):
|
||||||
if self.type == "wifi":
|
if self.type == "wifi":
|
||||||
self.security = self.add_label(self.box, "Security:")
|
self.security = self.add_label(self.box, "Security:")
|
||||||
|
|
||||||
self.add_readwrite_list("Name Servers:", "Nameservers", properties)
|
self.state = self.add_label(self.box, properties.get("State"))
|
||||||
self.add_readwrite_list("Time Servers:", "Timeservers", properties)
|
|
||||||
self.add_readwrite_list("Domain Names:", "Domains", properties)
|
lb, en = self.add_readwrite_list("Name Servers:", "Nameservers",
|
||||||
|
properties)
|
||||||
|
self.nameservers_label = lb
|
||||||
|
self.nameservers_entry = en
|
||||||
|
|
||||||
|
lb, en = self.add_readwrite_list("Time Servers:", "Timeservers",
|
||||||
|
properties)
|
||||||
|
self.timeservers_label = lb
|
||||||
|
self.timeservers_entry = en
|
||||||
|
|
||||||
|
lb, en = self.add_readwrite_list("Domain Names:", "Domains",
|
||||||
|
properties)
|
||||||
|
self.domains_label = lb
|
||||||
|
self.domains_entry = en
|
||||||
|
|
||||||
self.ipv4_properties = {"IPv4": {}, "IPv4.Configuration": {}}
|
self.ipv4_properties = {"IPv4": {}, "IPv4.Configuration": {}}
|
||||||
fr, bx = self.add_frame_and_box(self.box, "IPv4")
|
fr, bx = self.add_frame_and_box(self.box, "IPv4")
|
||||||
|
self.ipv4_frame = fr
|
||||||
self.ipv4_box = bx
|
self.ipv4_box = bx
|
||||||
options = ("Automatic", "Manual", "Off")
|
options = ("Automatic", "Manual", "Off")
|
||||||
self.ipv4_method, self.ipv4_method_items = self.add_segment_control(
|
self.ipv4_method, self.ipv4_method_items = self.add_segment_control(
|
||||||
|
@ -766,6 +798,7 @@ class ServiceView(ObjectView):
|
||||||
|
|
||||||
self.proxy_properties = {"Proxy": {}, "Proxy.Configuration": {}}
|
self.proxy_properties = {"Proxy": {}, "Proxy.Configuration": {}}
|
||||||
fr, bx = self.add_frame_and_box(self.box, "Proxy")
|
fr, bx = self.add_frame_and_box(self.box, "Proxy")
|
||||||
|
self.proxy_frame = fr
|
||||||
self.proxy_box = bx
|
self.proxy_box = bx
|
||||||
options = ("Direct", "Automatic", "Manual")
|
options = ("Direct", "Automatic", "Manual")
|
||||||
self.proxy_method, self.proxy_method_items = self.add_segment_control(
|
self.proxy_method, self.proxy_method_items = self.add_segment_control(
|
||||||
|
@ -779,9 +812,11 @@ class ServiceView(ObjectView):
|
||||||
# - manual: servers, excludes
|
# - manual: servers, excludes
|
||||||
|
|
||||||
if self.type in ("wifi", "ethernet", "wimax", "bluetooth", "cellular"):
|
if self.type in ("wifi", "ethernet", "wimax", "bluetooth", "cellular"):
|
||||||
self.add_readonly_section("Ethernet", self.eth_fields)
|
fr, bx = self.add_readonly_section("Ethernet", self.eth_fields)
|
||||||
|
self.ethernet_frame = fr
|
||||||
elif self.type == "vpn":
|
elif self.type == "vpn":
|
||||||
self.add_readonly_section("VPN", self.vpn_fields)
|
fr, bx = self.add_readonly_section("VPN", self.vpn_fields)
|
||||||
|
self.vpn_frame = fr
|
||||||
|
|
||||||
def add_readonly_section(self, title, fields):
|
def add_readonly_section(self, title, fields):
|
||||||
fr, bx = self.add_frame_and_box(self.box, title)
|
fr, bx = self.add_frame_and_box(self.box, title)
|
||||||
|
@ -789,6 +824,7 @@ class ServiceView(ObjectView):
|
||||||
lb, en = self.add_label_and_entry(bx, "%s:" % (name,))
|
lb, en = self.add_label_and_entry(bx, "%s:" % (name,))
|
||||||
en.editable = False
|
en.editable = False
|
||||||
setattr(self, attr, en)
|
setattr(self, attr, en)
|
||||||
|
return fr, bx
|
||||||
|
|
||||||
def populate_fields(self, fields, value):
|
def populate_fields(self, fields, value):
|
||||||
for n, a in fields:
|
for n, a in fields:
|
||||||
|
@ -831,6 +867,7 @@ class ServiceView(ObjectView):
|
||||||
en.callback_unfocused_add(on_unfocused)
|
en.callback_unfocused_add(on_unfocused)
|
||||||
self.readwrite_list_widget[name] = en
|
self.readwrite_list_widget[name] = en
|
||||||
self.reload_readwrite_list(name)
|
self.reload_readwrite_list(name)
|
||||||
|
return lb, en
|
||||||
|
|
||||||
def reload_readwrite_list(self, name):
|
def reload_readwrite_list(self, name):
|
||||||
used_value = self.readwrite_list_properties[name]
|
used_value = self.readwrite_list_properties[name]
|
||||||
|
@ -852,6 +889,9 @@ class ServiceView(ObjectView):
|
||||||
|
|
||||||
def on_property_changed(self, name, value):
|
def on_property_changed(self, name, value):
|
||||||
log.debug("Changed %s: %s=%s", self.path, name, value)
|
log.debug("Changed %s: %s=%s", self.path, name, value)
|
||||||
|
|
||||||
|
visibility_changed = False
|
||||||
|
|
||||||
if name == "Type":
|
if name == "Type":
|
||||||
self.type = str(value)
|
self.type = str(value)
|
||||||
elif name == "Immutable":
|
elif name == "Immutable":
|
||||||
|
@ -868,13 +908,23 @@ class ServiceView(ObjectView):
|
||||||
elif name == "Favorite":
|
elif name == "Favorite":
|
||||||
value = bool(value)
|
value = bool(value)
|
||||||
if hasattr(self, "forget"):
|
if hasattr(self, "forget"):
|
||||||
self.forget.visible = value
|
if self.forget.visible != value:
|
||||||
|
self.forget.visible = value
|
||||||
|
visibility_changed = True
|
||||||
elif name == "State":
|
elif name == "State":
|
||||||
value = str(value)
|
value = str(value)
|
||||||
self.error.visible = (value == "failure")
|
visible = (value == "failure")
|
||||||
|
self.state.text = "State: %s" % (value,)
|
||||||
|
if self.error.visible != visible:
|
||||||
|
self.error.visible = visible
|
||||||
|
visibility_changed = True
|
||||||
connected = (value not in ("idle", "failure"))
|
connected = (value not in ("idle", "failure"))
|
||||||
self.disconnect.visible = connected
|
if self.disconnect.visible != connected:
|
||||||
self.connect.visible = not connected
|
self.disconnect.visible = connected
|
||||||
|
visibility_changed = True
|
||||||
|
if self.connect.visible == connected:
|
||||||
|
self.connect.visible = not connected
|
||||||
|
visibility_changed = True
|
||||||
elif name == "Error":
|
elif name == "Error":
|
||||||
self.error.text = "Error: %s" % value
|
self.error.text = "Error: %s" % value
|
||||||
elif name == "AutoConnect":
|
elif name == "AutoConnect":
|
||||||
|
@ -944,6 +994,15 @@ class ServiceView(ObjectView):
|
||||||
elif name in self.readwrite_list_properties:
|
elif name in self.readwrite_list_properties:
|
||||||
self.update_readwrite_list(name, value)
|
self.update_readwrite_list(name, value)
|
||||||
|
|
||||||
|
if visibility_changed:
|
||||||
|
self.box.unpack_all()
|
||||||
|
for attr in self.top_widgets:
|
||||||
|
if hasattr(self, attr):
|
||||||
|
wid = getattr(self, attr)
|
||||||
|
if wid.visible:
|
||||||
|
self.box.pack_end(wid)
|
||||||
|
|
||||||
|
|
||||||
def _disconnect(self, obj):
|
def _disconnect(self, obj):
|
||||||
def on_reply():
|
def on_reply():
|
||||||
log.debug("Disconnected %s", self.path)
|
log.debug("Disconnected %s", self.path)
|
||||||
|
|
Loading…
Reference in New Issue