70 lines
2.3 KiB
Python
70 lines
2.3 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
from __future__ import unicode_literals
|
||
|
import six
|
||
|
import wx
|
||
|
import widgetUtils
|
||
|
from pubsub import pub
|
||
|
from views.dialogs import urlList
|
||
|
from . import base
|
||
|
|
||
|
class userProfileInteractor(base.baseInteractor):
|
||
|
|
||
|
def enable_control(self, tab, control):
|
||
|
if not hasattr(self.view, tab):
|
||
|
raise AttributeError("The viw does not contain the specified tab.")
|
||
|
tab = getattr(self.view, tab)
|
||
|
if not hasattr(tab, control):
|
||
|
raise AttributeError("The control is not present in the tab.")
|
||
|
getattr(tab, control).Enable(True)
|
||
|
|
||
|
def set(self, tab, control, value):
|
||
|
if not hasattr(self.view, tab):
|
||
|
raise AttributeError("The viw does not contain the specified tab.")
|
||
|
tab = getattr(self.view, tab)
|
||
|
if not hasattr(tab, control):
|
||
|
raise AttributeError("The control is not present in the tab.")
|
||
|
control = getattr(tab, control)
|
||
|
control.SetValue(value)
|
||
|
|
||
|
def set_label(self, tab, control, value):
|
||
|
if not hasattr(self.view, tab):
|
||
|
raise AttributeError("The viw does not contain the specified tab.")
|
||
|
tab = getattr(self.view, tab)
|
||
|
if not hasattr(tab, control):
|
||
|
raise AttributeError("The control is not present in the tab.")
|
||
|
control = getattr(tab, control)
|
||
|
control.SetLabel(value)
|
||
|
|
||
|
def load_image(self, image):
|
||
|
image = wx.Image(stream=six.BytesIO(image.content))
|
||
|
try:
|
||
|
self.view.image.SetBitmap(wx.Bitmap(image))
|
||
|
except ValueError:
|
||
|
return
|
||
|
self.view.panel.Layout()
|
||
|
|
||
|
def install(self, *args, **kwargs):
|
||
|
super(userProfileInteractor, self).install(*args, **kwargs)
|
||
|
pub.subscribe(self.set, self.modulename+"_set")
|
||
|
pub.subscribe(self.load_image, self.modulename+"_load_image")
|
||
|
self.view.create_controls("main_info")
|
||
|
self.view.realice()
|
||
|
widgetUtils.connect_event(self.view.main_info.go_site, widgetUtils.BUTTON_PRESSED, self.on_visit_website)
|
||
|
|
||
|
def uninstall(self):
|
||
|
super(userProfileInteractor, self).uninstall()
|
||
|
pub.unsubscribe(self.set, self.modulename+"_set")
|
||
|
pub.unsubscribe(self.load_image, self.modulename+"_load_image")
|
||
|
|
||
|
|
||
|
def on_visit_website(self, *args, **kwargs):
|
||
|
urls = self.presenter.get_urls()
|
||
|
if len(urls) == 1:
|
||
|
self.presenter.visit_url(urls[0])
|
||
|
else:
|
||
|
dialog = urlList.urlList()
|
||
|
dialog.populate_list(urls)
|
||
|
if dialog.get_response() != widgetUtils.OK:
|
||
|
return
|
||
|
selected_url = urls[dialog.get_item()]
|
||
|
self.presenter.visit_url(selected_url)
|