Example #1
0
 def __init__(self, application, settings, btsupport):
     self.application = application
     self.settings = settings
     self.btsupport = btsupport
     self.is_refreshing = False
     self.loadUI()
     # Restore the saved size and position
     if self.settings.get_value(Preferences.RESTORE_SIZE):
         if self.settings.get_value(Preferences.WINWIDTH) and \
           self.settings.get_value(Preferences.WINHEIGHT):
             self.winMain.set_default_size(
                 self.settings.get_value(Preferences.WINWIDTH),
                 self.settings.get_value(Preferences.WINHEIGHT))
         if self.settings.get_value(Preferences.WINLEFT) and \
           self.settings.get_value(Preferences.WINTOP):
             self.winMain.move(self.settings.get_value(Preferences.WINLEFT),
                               self.settings.get_value(Preferences.WINTOP))
     # Restore the devices list
     for device in self.settings.load_devices():
         self.add_device(device['address'], device['name'], device['class'],
                         device['lastseen'], False)
     # Load the others dialogs
     self.about = DialogAbout(self.winMain, False)
     # Set other properties
     self.btsupport.set_new_device_cb(self.on_new_device_cb)
     self.thread_scanner = None
     self.fake_devices = FakeDevices()
Example #2
0
    def do_scan(self):
        "Scan for bluetooth devices until cancelled"
        while True:
            # Cancel the running thread
            if self.thread_scanner.cancelled:
                break
            # Wait until an event awakes the thread again
            if self.thread_scanner.paused:
                self.thread_scanner.event.wait()
                self.thread_scanner.event.clear()
            # Only show local adapters when Preferences.SHOW_LOCAL preference is set
            if self.settings.get_value(Preferences.SHOW_LOCAL):
                # Add local adapters
                for devices_count in range(10):
                    name, address = self.btsupport.get_localAdapter(
                        devices_count)
                    if name and address:
                        # Adapter device found
                        name = 'hci%d (%s)' % (devices_count, name)
                        self.add_device(address, name, 1 << 2,
                                        get_current_time(), True)
                    else:
                        # No more devices found
                        if devices_count == 0:
                            self.settings.logText(
                                'No local devices found during detection',
                                VERBOSE_LEVEL_NORMAL)
                            self.set_status_bar_message(
                                _('No local devices found during detection.'))
                        break
            # Discover devices via bluetooth
            self.btsupport.discover(
                self.settings.get_value(Preferences.RETRIEVE_NAMES), 8, True)

            # What is this? useful for testing purposes, you can just ignore it
            if USE_FAKE_DEVICES:
                #self.on_new_device_cb(*self.fake_devices.pick_one())
                self.fake_devices = FakeDevices()
                #self.on_new_device_cb(*self.fake_devices.fetch_one())
                for fake_device in self.fake_devices.fetch_many():
                    #for fake_device in self.fake_devices.fetch_max(5):
                    #for fake_device in self.fake_devices.fetch_all():
                    self.on_new_device_cb(*fake_device)
            sleep(2)
        # After exiting from the scanning process, change the UI
        self.thread_scanner = None
        self.set_status_bar_message(None)
        idle_add(self.spinnerScan.stop)
        idle_add(self.spinnerScan.set_visible, False)
        idle_add(self.toolbDetect.set_sensitive, True)
        return False