Example #1
0
    def __init__(self, title=_("Select Device"), parent=None, discover=True, adapter_name=None):
        super(DeviceSelectorDialog, self).__init__(
            title, parent, 0, ("_Cancel", Gtk.ResponseType.REJECT, "_OK", Gtk.ResponseType.ACCEPT),
            icon_name="blueman", resizable=False, name="DeviceSelectorDialog"

        )

        self.vbox.props.halign = Gtk.Align.CENTER
        self.vbox.props.valign = Gtk.Align.CENTER
        self.vbox.props.hexpand = True
        self.vbox.props.vexpand = True
        self.vbox.props.margin = 6

        self.selector = DeviceSelectorWidget(adapter_name=adapter_name)
        self.selector.show()
        self.vbox.pack_start(self.selector, True, True, 0)

        self.selection = None

        self.selector.List.connect("device-selected", self.on_device_selected)
        self.selector.List.connect("adapter-changed", self.on_adapter_changed)
        if discover:
            self.selector.List.discover_devices()

        self.selector.List.connect("row-activated", self.on_row_activated)
    def __init__(self,
                 title: str = _("Select Device"),
                 parent: Optional[Gtk.Container] = None,
                 discover: bool = True,
                 adapter_name: Optional[str] = None) -> None:
        super().__init__(title=title,
                         name="DeviceSelectorDialog",
                         parent=parent,
                         icon_name="blueman",
                         resizable=False)
        self.add_buttons('_Cancel', Gtk.ResponseType.REJECT, '_OK',
                         Gtk.ResponseType.ACCEPT)

        self.vbox.props.halign = Gtk.Align.CENTER
        self.vbox.props.valign = Gtk.Align.CENTER
        self.vbox.props.hexpand = True
        self.vbox.props.vexpand = True
        self.vbox.props.margin = 6

        self.selector = DeviceSelectorWidget(adapter_name=adapter_name,
                                             visible=True)
        self.vbox.pack_start(self.selector, True, True, 0)

        self.selection: Optional[Tuple[str, Device]] = None

        self.selector.List.connect("device-selected", self.on_device_selected)
        self.selector.List.connect("adapter-changed", self.on_adapter_changed)
        if discover:
            self.selector.List.discover_devices()

        self.selector.List.connect("row-activated", self.on_row_activated)
    def __init__(self, title=_("Select Device"), parent=None, discover=True):

        Gtk.Dialog.__init__(self, title, parent, 0,
                            ("_Cancel", Gtk.ResponseType.REJECT, "_OK",
                             Gtk.ResponseType.ACCEPT))

        self.props.resizable = False
        self.props.icon_name = "blueman"
        self.selector = DeviceSelectorWidget()
        self.selector.show()

        #self.selector.destroy()
        #self.selector = None

        align = Gtk.Alignment.new(0.5, 0.5, 1.0, 1.0)
        align.add(self.selector)

        align.set_padding(6, 6, 6, 6)
        align.show()
        self.vbox.pack_start(align, True, True, 0)

        #(adapter, device)
        self.selection = None

        self.selector.List.connect("device-selected", self.on_device_selected)
        self.selector.List.connect("adapter-changed", self.on_adapter_changed)
        if discover:
            self.selector.List.DiscoverDevices()

        self.selector.List.connect("row-activated", self.on_row_activated)
class DeviceSelectorDialog(Gtk.Dialog):
    def __init__(self, title=_("Select Device"), parent=None, discover=True, adapter_name=None):
        super().__init__(title=title, name="DeviceSelectorDialog", parent=parent, icon_name="blueman", resizable=False)
        self.add_buttons('_Cancel', Gtk.ResponseType.REJECT, '_OK', Gtk.ResponseType.ACCEPT)

        self.vbox.props.halign = Gtk.Align.CENTER
        self.vbox.props.valign = Gtk.Align.CENTER
        self.vbox.props.hexpand = True
        self.vbox.props.vexpand = True
        self.vbox.props.margin = 6

        self.selector = DeviceSelectorWidget(adapter_name=adapter_name, visible=True)
        self.vbox.pack_start(self.selector, True, True, 0)

        self.selection = None

        self.selector.List.connect("device-selected", self.on_device_selected)
        self.selector.List.connect("adapter-changed", self.on_adapter_changed)
        if discover:
            self.selector.List.discover_devices()

        self.selector.List.connect("row-activated", self.on_row_activated)

    def close(self):
        self.selector.destroy()
        super().close()

    def on_row_activated(self, treeview, path, view_column, *args):
        self.response(Gtk.ResponseType.ACCEPT)

    def on_adapter_changed(self, devlist, adapter):
        self.selection = None

    def on_device_selected(self, devlist, device, tree_iter):
        self.selection = (devlist.Adapter.get_object_path(), device)
Example #5
0
    def __init__(self, title=_("Select Device"), parent=None, discover=True):

        gtk.Dialog.__init__(self, title, parent, 0, (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,
                                                     gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))

        self.set_has_separator(False)
        self.props.resizable = False
        self.props.icon_name = "blueman"
        self.selector = DeviceSelectorWidget()
        self.selector.show()

        #self.selector.destroy()
        #self.selector = None

        align = gtk.Alignment(0.5, 0.5, 1.0, 1.0)
        align.add(self.selector)

        align.set_padding(6, 6, 6, 6)
        align.show()
        self.vbox.pack_start(align)


        #(adapter, device)
        self.selection = None

        self.selector.List.connect("device-selected", self.on_device_selected)
        self.selector.List.connect("adapter-changed", self.on_adapter_changed)
        if discover:
            self.selector.List.DiscoverDevices()

        self.selector.List.connect("row-activated", self.on_row_activated)
Example #6
0
	def __init__(self):
		setup_icon_path()
		
		self.list = DeviceSelectorWidget()
		self.list.show()
		self.list.List.connect("row-activated", self.on_row_activated)
		self.list.List.connect("device-selected", self.on_device_selected)

		

		self.config = Config("transfer")

		self.device = None

		self.list.set_size_request(240, 280)

		self.button = gtk.ToggleButton()

		box = gtk.HBox()
		self.button.add(box)

		self.button_image = gtk.Image()
		self.button_label = gtk.Label()
		self.button_label.props.use_markup = True
		self.button_label.props.ellipsize = pango.ELLIPSIZE_END

		if self.config.props.last_device == None:
			self.list.List.set_cursor((0,))
		else:
			iter = self.list.List.find_device(self.config.props.last_device)
			if iter:
				self.list.List.set_cursor(self.list.List.get_model().get_path(iter))
			
		
		box.pack_start(self.button_image, False, True)
		box.pack_start(gtk.VSeparator(), False, True, 4)
		box.pack_start(self.button_label)

		self.button.show_all()

		
		self.button.connect("toggled", self.on_button_toggled)
		
		self.wd = gtk.Window(gtk.WINDOW_POPUP)

		self.wd.props.decorated = False
		self.wd.props.skip_pager_hint = True
		self.wd.props.skip_taskbar_hint = True
		#self.wd.props.modal = True
		self.wd.connect("button_press_event", self.on_button_press)

		self.wd.add(self.list)
		self.wd.realize()
class DeviceSelectorDialog(gtk.Dialog):
	
	

	def __init__(self, title=_("Select Device"), parent=None, discover=True):

		gtk.Dialog.__init__(self, title, parent, 0, (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,
						 	     gtk.STOCK_OK,     gtk.RESPONSE_ACCEPT))
		
		
		self.set_has_separator(False)
		self.props.resizable = False
		self.props.icon_name = "blueman"
		self.selector = DeviceSelectorWidget()
		self.selector.show()
		
		#self.selector.destroy()
		#self.selector = None
		
		align = gtk.Alignment(0.5,0.5,1.0,1.0)
		align.add(self.selector)
		
		align.set_padding(6,6,6,6)
		align.show()
		self.vbox.pack_start(align)
		
		
		#(adapter, device)
		self.selection = None
		
		self.selector.List.connect("device-selected", self.on_device_selected)
		self.selector.List.connect("adapter-changed", self.on_adapter_changed)
		if discover:
			self.selector.List.DiscoverDevices()
		
		self.selector.List.connect("row-activated", self.on_row_activated)
		
	def on_row_activated(self, treeview, path, view_column, *args):
		self.response(gtk.RESPONSE_ACCEPT)
		
	def on_adapter_changed(self, devlist, adapter):
		self.selection = None
		
	def on_device_selected(self, devlist, device, iter):
		self.selection = (devlist.Adapter.GetObjectPath(), device)
		
	def GetSelection(self):
		if self.selection:
			return (self.selection[0], self.selection[1].Copy())
		else:
			return None
class DeviceSelectorDialog(Gtk.Dialog):
    def __init__(self,
                 title: str = _("Select Device"),
                 parent: Optional[Gtk.Container] = None,
                 discover: bool = True,
                 adapter_name: Optional[str] = None) -> None:
        super().__init__(title=title,
                         name="DeviceSelectorDialog",
                         parent=parent,
                         icon_name="blueman",
                         resizable=False)
        self.add_buttons('_Cancel', Gtk.ResponseType.REJECT, '_OK',
                         Gtk.ResponseType.ACCEPT)

        self.vbox.props.halign = Gtk.Align.CENTER
        self.vbox.props.valign = Gtk.Align.CENTER
        self.vbox.props.hexpand = True
        self.vbox.props.vexpand = True
        self.vbox.props.margin = 6

        self.selector = DeviceSelectorWidget(adapter_name=adapter_name,
                                             visible=True)
        self.vbox.pack_start(self.selector, True, True, 0)

        self.selection: Optional[Tuple[str, Device]] = None

        self.selector.List.connect("device-selected", self.on_device_selected)
        self.selector.List.connect("adapter-changed", self.on_adapter_changed)
        if discover:
            self.selector.List.discover_devices()

        self.selector.List.connect("row-activated", self.on_row_activated)

    def close(self) -> None:
        self.selector.destroy()
        super().close()

    def on_row_activated(self, _treeview: Gtk.TreeView, _path: Gtk.TreePath,
                         _view_column: Gtk.TreeViewColumn,
                         *_args: object) -> None:
        self.response(Gtk.ResponseType.ACCEPT)

    def on_adapter_changed(self, _devlist: ManagerDeviceList,
                           _adapter: str) -> None:
        self.selection = None

    def on_device_selected(self, devlist: ManagerDeviceList, device: Device,
                           _tree_iter: Gtk.TreeIter) -> None:
        assert devlist.Adapter is not None
        self.selection = (devlist.Adapter.get_object_path(), device)
Example #9
0
class DeviceSelectorDialog(Gtk.Dialog):
    def __init__(self, title=_("Select Device"), parent=None, discover=True):

        super(DeviceSelectorDialog,
              self).__init__(title, parent, 0,
                             ("_Cancel", Gtk.ResponseType.REJECT, "_OK",
                              Gtk.ResponseType.ACCEPT))

        self.set_name("DeviceSelectorDialog")
        self.props.resizable = False
        self.props.icon_name = "blueman"
        self.selector = DeviceSelectorWidget()
        self.selector.show()

        #self.selector.destroy()
        #self.selector = None

        align = Gtk.Alignment.new(0.5, 0.5, 1.0, 1.0)
        align.add(self.selector)

        align.set_padding(6, 6, 6, 6)
        align.show()
        self.vbox.pack_start(align, True, True, 0)

        #(adapter, device)
        self.selection = None

        self.selector.List.connect("device-selected", self.on_device_selected)
        self.selector.List.connect("adapter-changed", self.on_adapter_changed)
        if discover:
            self.selector.List.DiscoverDevices()

        self.selector.List.connect("row-activated", self.on_row_activated)

    def on_row_activated(self, treeview, path, view_column, *args):
        self.response(Gtk.ResponseType.ACCEPT)

    def on_adapter_changed(self, devlist, adapter):
        self.selection = None

    def on_device_selected(self, devlist, device, tree_iter):
        self.selection = (devlist.Adapter.get_object_path(), device)

    def GetSelection(self):
        if self.selection:
            return (self.selection[0], self.selection[1])
        else:
            return None
Example #10
0
class DeviceSelectorDialog(Gtk.Dialog):
    def __init__(self,
                 title=_("Select Device"),
                 parent=None,
                 discover=True,
                 adapter_name=None):
        super(DeviceSelectorDialog,
              self).__init__(title,
                             parent,
                             0, ("_Cancel", Gtk.ResponseType.REJECT, "_OK",
                                 Gtk.ResponseType.ACCEPT),
                             icon_name="blueman",
                             resizable=False,
                             name="DeviceSelectorDialog")

        self.vbox.props.halign = Gtk.Align.CENTER
        self.vbox.props.valign = Gtk.Align.CENTER
        self.vbox.props.hexpand = True
        self.vbox.props.vexpand = True
        self.vbox.props.margin = 6

        self.selector = DeviceSelectorWidget(adapter_name=adapter_name)
        self.selector.show()
        self.vbox.pack_start(self.selector, True, True, 0)

        self.selection = None

        self.selector.List.connect("device-selected", self.on_device_selected)
        self.selector.List.connect("adapter-changed", self.on_adapter_changed)
        if discover:
            self.selector.List.DiscoverDevices()

        self.selector.List.connect("row-activated", self.on_row_activated)

    def on_row_activated(self, treeview, path, view_column, *args):
        self.response(Gtk.ResponseType.ACCEPT)

    def on_adapter_changed(self, devlist, adapter):
        self.selection = None

    def on_device_selected(self, devlist, device, tree_iter):
        self.selection = (devlist.Adapter.get_object_path(), device)

    def GetSelection(self):
        if self.selection:
            return (self.selection[0], self.selection[1])
        else:
            return None
Example #11
0
    def __init__(self, title=_("Select Device"), parent=None, discover=True, adapter_name=None):
        super(DeviceSelectorDialog, self).__init__(
            title, parent, 0, ("_Cancel", Gtk.ResponseType.REJECT, "_OK", Gtk.ResponseType.ACCEPT),
            icon_name="blueman", resizable=False, name="DeviceSelectorDialog"

        )

        self.vbox.props.halign = Gtk.Align.CENTER
        self.vbox.props.valign = Gtk.Align.CENTER
        self.vbox.props.hexpand = True
        self.vbox.props.vexpand = True
        self.vbox.props.margin = 6

        self.selector = DeviceSelectorWidget(adapter_name=adapter_name)
        self.selector.show()
        self.vbox.pack_start(self.selector, True, True, 0)

        self.selection = None

        self.selector.List.connect("device-selected", self.on_device_selected)
        self.selector.List.connect("adapter-changed", self.on_adapter_changed)
        if discover:
            self.selector.List.DiscoverDevices()

        self.selector.List.connect("row-activated", self.on_row_activated)
Example #12
0
    def __init__(self, title=_("Select Device"), parent=None, discover=True):

        Gtk.Dialog.__init__(self, title, parent, 0, ("_Cancel", Gtk.ResponseType.REJECT,
                                                     "_OK", Gtk.ResponseType.ACCEPT))

        self.props.resizable = False
        self.props.icon_name = "blueman"
        self.selector = DeviceSelectorWidget()
        self.selector.show()

        #self.selector.destroy()
        #self.selector = None

        align = Gtk.Alignment.new(0.5, 0.5, 1.0, 1.0)
        align.add(self.selector)

        align.set_padding(6, 6, 6, 6)
        align.show()
        self.vbox.pack_start(align, True, True, 0)


        #(adapter, device)
        self.selection = None

        self.selector.List.connect("device-selected", self.on_device_selected)
        self.selector.List.connect("adapter-changed", self.on_adapter_changed)
        if discover:
            self.selector.List.DiscoverDevices()

        self.selector.List.connect("row-activated", self.on_row_activated)
class DeviceSelectorDialog(Gtk.Dialog):
    def __init__(self, title=_("Select Device"), parent=None, discover=True):

        Gtk.Dialog.__init__(self, title, parent, 0, ("_Cancel", Gtk.ResponseType.REJECT,
                                                     "_OK", Gtk.ResponseType.ACCEPT))

        self.set_name("DeviceSelectorDialog")
        self.props.resizable = False
        self.props.icon_name = "blueman"
        self.selector = DeviceSelectorWidget()
        self.selector.show()

        #self.selector.destroy()
        #self.selector = None

        align = Gtk.Alignment.new(0.5, 0.5, 1.0, 1.0)
        align.add(self.selector)

        align.set_padding(6, 6, 6, 6)
        align.show()
        self.vbox.pack_start(align, True, True, 0)


        #(adapter, device)
        self.selection = None

        self.selector.List.connect("device-selected", self.on_device_selected)
        self.selector.List.connect("adapter-changed", self.on_adapter_changed)
        if discover:
            self.selector.List.DiscoverDevices()

        self.selector.List.connect("row-activated", self.on_row_activated)

    def on_row_activated(self, treeview, path, view_column, *args):
        self.response(Gtk.ResponseType.ACCEPT)

    def on_adapter_changed(self, devlist, adapter):
        self.selection = None

    def on_device_selected(self, devlist, device, iter):
        self.selection = (devlist.Adapter.get_object_path(), device)

    def GetSelection(self):
        if self.selection:
            return (self.selection[0], self.selection[1].Copy())
        else:
            return None
Example #14
0
class DeviceSelectorDialog(gtk.Dialog):
    def __init__(self, title=_("Select Device"), parent=None, discover=True):

        gtk.Dialog.__init__(self, title, parent, 0, (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,
                                                     gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))

        self.set_has_separator(False)
        self.props.resizable = False
        self.props.icon_name = "blueman"
        self.selector = DeviceSelectorWidget()
        self.selector.show()

        #self.selector.destroy()
        #self.selector = None

        align = gtk.Alignment(0.5, 0.5, 1.0, 1.0)
        align.add(self.selector)

        align.set_padding(6, 6, 6, 6)
        align.show()
        self.vbox.pack_start(align)


        #(adapter, device)
        self.selection = None

        self.selector.List.connect("device-selected", self.on_device_selected)
        self.selector.List.connect("adapter-changed", self.on_adapter_changed)
        if discover:
            self.selector.List.DiscoverDevices()

        self.selector.List.connect("row-activated", self.on_row_activated)

    def on_row_activated(self, treeview, path, view_column, *args):
        self.response(gtk.RESPONSE_ACCEPT)

    def on_adapter_changed(self, devlist, adapter):
        self.selection = None

    def on_device_selected(self, devlist, device, iter):
        self.selection = (devlist.Adapter.GetObjectPath(), device)

    def GetSelection(self):
        if self.selection:
            return (self.selection[0], self.selection[1].Copy())
        else:
            return None
Example #15
0
class DeviceSelectorDialog(Gtk.Dialog):
    def __init__(self, title=_("Select Device"), parent=None, discover=True, adapter_name=None):
        super(DeviceSelectorDialog, self).__init__(
            title, parent, 0, ("_Cancel", Gtk.ResponseType.REJECT, "_OK", Gtk.ResponseType.ACCEPT),
            icon_name="blueman", resizable=False, name="DeviceSelectorDialog"

        )

        self.vbox.props.halign = Gtk.Align.CENTER
        self.vbox.props.valign = Gtk.Align.CENTER
        self.vbox.props.hexpand = True
        self.vbox.props.vexpand = True
        self.vbox.props.margin = 6

        self.selector = DeviceSelectorWidget(adapter_name=adapter_name)
        self.selector.show()
        self.vbox.pack_start(self.selector, True, True, 0)

        self.selection = None

        self.selector.List.connect("device-selected", self.on_device_selected)
        self.selector.List.connect("adapter-changed", self.on_adapter_changed)
        if discover:
            self.selector.List.DiscoverDevices()

        self.selector.List.connect("row-activated", self.on_row_activated)

    def on_row_activated(self, treeview, path, view_column, *args):
        self.response(Gtk.ResponseType.ACCEPT)

    def on_adapter_changed(self, devlist, adapter):
        self.selection = None

    def on_device_selected(self, devlist, device, tree_iter):
        self.selection = (devlist.Adapter.get_object_path(), device)

    def GetSelection(self):
        if self.selection:
            return (self.selection[0], self.selection[1])
        else:
            return None
Example #16
0
	def __init__(self):
		setup_icon_path()
		
		self.list = DeviceSelectorWidget()
		self.list.show()
		self.list.List.connect("row-activated", self.on_row_activated)
		self.list.List.connect("device-selected", self.on_device_selected)

		

		self.config = Config("transfer")

		self.device = None

		self.list.set_size_request(240, 280)

		self.button = Gtk.ToggleButton()

		box = Gtk.HBox()
		self.button.add(box)

		self.button_image = Gtk.Image()
		self.button_label = Gtk.Label()
		self.button_label.props.use_markup = True
		self.button_label.props.ellipsize = Pango.EllipsizeMode.END

		if self.config.props.last_device == None:
			self.list.List.set_cursor((0,))
		else:
			iter = self.list.List.find_device(self.config.props.last_device)
			if iter:
				self.list.List.set_cursor(self.list.List.get_model().get_path(iter))
			
		
		box.pack_start(self.button_image, False, True)
		box.pack_start(Gtk.VSeparator, False, True, 4)
		box.pack_start(self.button_label, True, True, 0)

		self.button.show_all()

		
		self.button.connect("toggled", self.on_button_toggled)
		
		self.wd = Gtk.Window(Gtk.WindowType.POPUP)

		self.wd.props.decorated = False
		self.wd.props.skip_pager_hint = True
		self.wd.props.skip_taskbar_hint = True
		#self.wd.props.modal = True
		self.wd.connect("button_press_event", self.on_button_press)

		self.wd.add(self.list)
		self.wd.realize()
Example #17
0
class NstBluetooth:
	def __init__(self):
		setup_icon_path()
		
		self.list = DeviceSelectorWidget()
		self.list.show()
		self.list.List.connect("row-activated", self.on_row_activated)
		self.list.List.connect("device-selected", self.on_device_selected)

		

		self.config = Config("transfer")

		self.device = None

		self.list.set_size_request(240, 280)

		self.button = gtk.ToggleButton()

		box = gtk.HBox()
		self.button.add(box)

		self.button_image = gtk.Image()
		self.button_label = gtk.Label()
		self.button_label.props.use_markup = True
		self.button_label.props.ellipsize = pango.ELLIPSIZE_END

		if self.config.props.last_device == None:
			self.list.List.set_cursor((0,))
		else:
			iter = self.list.List.find_device(self.config.props.last_device)
			if iter:
				self.list.List.set_cursor(self.list.List.get_model().get_path(iter))
			
		
		box.pack_start(self.button_image, False, True)
		box.pack_start(gtk.VSeparator(), False, True, 4)
		box.pack_start(self.button_label)

		self.button.show_all()

		
		self.button.connect("toggled", self.on_button_toggled)
		
		self.wd = gtk.Window(gtk.WINDOW_POPUP)

		self.wd.props.decorated = False
		self.wd.props.skip_pager_hint = True
		self.wd.props.skip_taskbar_hint = True
		#self.wd.props.modal = True
		self.wd.connect("button_press_event", self.on_button_press)

		self.wd.add(self.list)
		self.wd.realize()

	def on_row_activated(self, treeview, path, column):
		self.button.props.active = False

	def on_device_selected(self, treeview, device, iter):
		self.config.props.last_device = str(device.Address)
		
		self.button_label.props.label = "<b>%s</b> (%s)" % (device.Alias, device.Address)
		self.button_label.props.tooltip_markup = self.button_label.props.label
		self.button_image.props.icon_name = device.Icon

		self.device = device
	

	def on_button_press(self, widget, data=None):
		
		if data == None or data.window == None:
			return False
		
		child = data.window.get_user_data()
		if child != widget:
			while child:
				if child == widget:
				    return False
				child = child.parent
				
		self.button.props.active = False
		return True

	def popup_grab_on_window(self, window, activate_time):
		if gtk.gdk.pointer_grab(window, True, gtk.gdk.BUTTON_PRESS_MASK 
								| gtk.gdk.BUTTON_RELEASE_MASK
								| gtk.gdk.POINTER_MOTION_MASK, 
								None, None, activate_time) == 0:
			if gtk.gdk.keyboard_grab (window, True, activate_time) == 0:
				return True
			else:
				gtk.gdk.pointer_ungrab(activate_time)
				return False
		return False


	def on_button_toggled(self, button):
		
		if button.props.active:
			if not self.popup_grab_on_window(button.window, gtk.get_current_event_time()):
				print 'error during grab'
				return


			x, y = button.window.get_origin()
			x += button.allocation[0]
			y += button.allocation[1] + button.allocation[3]

			self.wd.move(x, y)
			self.list.set_size_request(button.allocation[2], 280)

			self.wd.grab_add()
			self.wd.show()
			self.wd.grab_focus()
			
			self.popup_grab_on_window(self.wd.window, gtk.get_current_event_time())
			
		else:
			self.wd.hide()
			self.wd.grab_remove()


	def get_contacts_widget(self):
		return self.button

	def send_files(self, files):
		spawn(["blueman-sendto", "-d", self.device.Address] + files)

		return True

	def destroy(self):
		pass
Example #18
0
class NstBluetooth:
    def __init__(self):
        setup_icon_path()

        self.list = DeviceSelectorWidget()
        self.list.show()
        self.list.List.connect("row-activated", self.on_row_activated)
        self.list.List.connect("device-selected", self.on_device_selected)

        self.config = Config("transfer")

        self.device = None

        self.list.set_size_request(240, 280)

        self.button = Gtk.ToggleButton()

        box = Gtk.HBox()
        self.button.add(box)

        self.button_image = Gtk.Image()
        self.button_label = Gtk.Label()
        self.button_label.props.use_markup = True
        self.button_label.props.ellipsize = Pango.EllipsizeMode.END

        if self.config.props.last_device == None:
            self.list.List.set_cursor((0,))
        else:
            iter = self.list.List.find_device(self.config.props.last_device)
            if iter:
                self.list.List.set_cursor(self.list.List.get_model().get_path(iter))

        box.pack_start(self.button_image, False, True)
        box.pack_start(Gtk.VSeparator, False, True, 4)
        box.pack_start(self.button_label, True, True, 0)

        self.button.show_all()

        self.button.connect("toggled", self.on_button_toggled)

        self.wd = Gtk.Window(Gtk.WindowType.POPUP)

        self.wd.props.decorated = False
        self.wd.props.skip_pager_hint = True
        self.wd.props.skip_taskbar_hint = True
        # self.wd.props.modal = True
        self.wd.connect("button_press_event", self.on_button_press)

        self.wd.add(self.list)
        self.wd.realize()

    def on_row_activated(self, treeview, path, column):
        self.button.props.active = False

    def on_device_selected(self, treeview, device, iter):
        self.config.props.last_device = str(device.Address)

        self.button_label.props.label = "<b>%s</b> (%s)" % (device.Alias, device.Address)
        self.button_label.props.tooltip_markup = self.button_label.props.label
        self.button_image.props.icon_name = device.Icon

        self.device = device


    def on_button_press(self, widget, data=None):

        if data == None or data.window == None:
            return False

        child = data.window.get_user_data()
        if child != widget:
            while child:
                if child == widget:
                    return False
                child = child.parent

        self.button.props.active = False
        return True

    def popup_grab_on_window(self, window, activate_time):
        if Gdk.pointer_grab(window, True, Gdk.EventMask.BUTTON_PRESS_MASK
                | Gdk.EventMask.BUTTON_RELEASE_MASK
                | Gdk.EventMask.POINTER_MOTION_MASK,
                            None, None, activate_time) == 0:
            if Gdk.keyboard_grab(window, True, activate_time) == 0:
                return True
            else:
                Gdk.pointer_ungrab(activate_time)
                return False
        return False


    def on_button_toggled(self, button):

        if button.props.active:
            if not self.popup_grab_on_window(button.window, Gtk.get_current_event_time()):
                print('error during grab')
                return

            x, y = button.window.get_origin()
            x += button.allocation[0]
            y += button.allocation[1] + button.allocation[3]

            self.wd.move(x, y)
            self.list.set_size_request(button.allocation[2], 280)

            self.wd.grab_add()
            self.wd.show()
            self.wd.grab_focus()

            self.popup_grab_on_window(self.wd.window, Gtk.get_current_event_time())

        else:
            self.wd.hide()
            self.wd.grab_remove()


    def get_contacts_widget(self):
        return self.button

    def send_files(self, files):
        spawn(["blueman-sendto", "-d", self.device.Address] + files)

        return True

    def destroy(self):
        pass