Example #1
0
    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()
Example #2
0
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))