def __init__(self, ui_dir="ui"): gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL) self.set_title("Truemix Radio") self.set_default_size(1000, 700) # self.set_default_size(800,600) self.connect("delete-event", self.on_window_close) self.ui_dir = ui_dir self.servicelocator = None self.services = [] layout = gtk.VBox() self.webkit_main = TruemixWebkit("file://%s/default.html" % ui_dir) self.webkit_main.connect("load-finished", self.load_main_content) self.webkit_main.connect("navigation-requested", self.on_link) layout.pack_start(self.webkit_main, True) self.add(layout) self.show_all()
class TruemixClient(gtk.Window): def __init__(self, ui_dir="ui"): gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL) self.set_title("Truemix Radio") self.set_default_size(1000, 700) # self.set_default_size(800,600) self.connect("delete-event", self.on_window_close) self.ui_dir = ui_dir self.servicelocator = None self.services = [] layout = gtk.VBox() self.webkit_main = TruemixWebkit("file://%s/default.html" % ui_dir) self.webkit_main.connect("load-finished", self.load_main_content) self.webkit_main.connect("navigation-requested", self.on_link) layout.pack_start(self.webkit_main, True) self.add(layout) self.show_all() def on_window_close(self, w=None, e=None): # On the event on the window being closed gtk.main_quit() def load_main_content(self, w=None, e=None): # Load the main content into the webkit interface self.services = [] if self.servicelocator != None: self.servicelocator.stop() try: self.servicelocator = service_locator(self.on_new_server_discovery) except dbus.exceptions.DBusException: # Unable to autodetect self.webkit_main.execute_script("login_select_server('#login_service_other',0,0)") print "Failed to autodiscover" def on_link(self, view, frame, req): if re.match("^truemix:login?", req.get_uri()) != None: form_values = urlparse.parse_qs(re.sub("^truemix:login\?", "", req.get_uri())) try: self.iapi = truemix.api( "http://%s:%s" % (form_values["host"][0], form_values["port"][0]), form_values["username"][0], form_values["password"][0], ) except xmlrpclib.Fault as a: print "Inalid username and password" self.webkit_main.execute_script("login_error_message()") return True except httplib.InvalidURL: print "INVALID PORT" self.webkit_main.execute_script("login_error_message()") return True except socket.gaierror: print "Cannot contact server" self.webkit_main.execute_script("login_error_message()") return True except socket.error: print "Cannot contact server" self.webkit_main.execute_script("login_error_message()") return True self.webkit_main.execute_script("login_sucessful()") return True # When any other link is followed within the interface pass def on_new_server_discovery(self, name, host, port): new_service = host + ":" + str(port) if new_service in self.services: return False self.services.append(new_service) self.webkit_main.execute_script("add_server('%s','%s','%s')" % (name, host, port))