def _contacts_as_dbus_structure(self, contacts): """ Get info from list of Contact objects and create dbus dict """ if not contacts: return None prim_contact = None # primary contact for contact in contacts: if prim_contact is None or contact.priority > prim_contact.priority: prim_contact = contact contact_dict = {} name = prim_contact.name if prim_contact.name is not None else '' contact_dict['name'] = GLib.Variant('s', name) contact_dict['show'] = GLib.Variant('s', prim_contact.show) contact_dict['jid'] = GLib.Variant('s', prim_contact.jid) resources = GLib.VariantBuilder(GLib.VariantType('a(sis)')) for contact in contacts: resource_props = (contact.resource, int(contact.priority), contact.status) resources.add_value(GLib.Variant('(sis)', resource_props)) contact_dict['resources'] = resources.end() groups = GLib.VariantBuilder(GLib.VariantType('as')) for group in prim_contact.groups: groups.add_value(GLib.Variant('s', group)) contact_dict['groups'] = groups.end() return contact_dict
def create_configuration_variant(self): try: b = GLib.VariantBuilder(GLib.VariantType.new('a{sv}')) b.add_value(self.create_dict_entry_boolean('initialized', self.initialized)) b.add_value(self.create_dict_entry_boolean('defaultNamespaces', self.default_namespaces)) b.add_value(self.create_dict_entry_boolean('defaultVapiDirs', self.default_vapi_dirs)) b.add_value(self.create_dict_entry_boolean('scanWorkspace', self.scan_work_space)) b.add_value(self.create_dict_entry_boolean('addUsingNamespaces', self.add_using_namespaces)) b.add_value(self.create_dict_entry_boolean('mesonBuildSystem', self.meson_build_system)) b.add_value(self.create_dict_entry_string('libraryVapi', self.library_vapidir)) b.add_value(self.create_dict_entry_string('systemVapi', self.system_vapidir)) b.add_value(self.create_dict_entry_string('valaApiVersion', self.vala_api_version)) b.add_value(self.create_dict_entry_string('mesonCompileCommands', self.meson_compile_commands)) ad = GLib.Variant.new_string ('valaArgs') vadi = self.dict_to_array_variant(self.vala_args) adi = GLib.Variant.new_dict_entry(ad, GLib.Variant.new_variant (vadi)) b.add_value(adi) od = GLib.Variant.new_string ('options') vodi = self.list_to_variant(self.options) odi = GLib.Variant.new_dict_entry(od, GLib.Variant.new_variant (vodi)) b.add_value(odi) pd = GLib.Variant.new_string ('packages') vpdi = self.list_to_variant(self.packages) pdi = GLib.Variant.new_dict_entry(pd, GLib.Variant.new_variant (vpdi)) b.add_value(pdi) fd = GLib.Variant.new_string ('files') vfdi = self.list_to_variant(self.files) fdi = GLib.Variant.new_dict_entry(fd, GLib.Variant.new_variant (vfdi)) b.add_value(fdi) return GLib.Variant.new_variant (b.end()) except Error as e: Ide.debug ('On Load Configuration Error: {}'.format(e.message)) return GLib.Variant ('a{sv}', {})
def recurrence_generated(self, ical_comp, instance_start, instance_end, calendar, cancellable): if calendar.view_cancellable.is_cancelled(): return False comp = ECal.Component.new_from_icalcomponent(ical_comp) all_objects = GLib.VariantBuilder(GLib.VariantType.new("a(sssbxx)")) comptext = comp.get_summary() if comptext != None: summary = comptext.get_value() else: summary = "" default_zone = calendar.client.get_default_timezone() dts_timezone = instance_start.get_timezone() if dts_timezone == None: dts_timezone = default_zone dte_timezone = instance_end.get_timezone() if dte_timezone == None: dte_timezone = default_zone all_day = instance_start.is_date() start_timet = instance_start.as_timet_with_zone(dts_timezone) end_timet = instance_end.as_timet_with_zone(dte_timezone) mod_timet = self.get_mod_timet(ical_comp) event = Event(self.create_uid(calendar, comp), calendar.color, summary, all_day, start_timet, end_timet, mod_timet) self.emit_events_added_or_updated(calendar, [event]) return True
def dict_to_array_variant(self, d): b = GLib.VariantBuilder(GLib.VariantType.new('av')) for k in d.keys(): a = d[k] b2 = GLib.VariantBuilder(GLib.VariantType.new('a{sv}')) ndi = GLib.Variant.new_string('name') vndi = GLib.Variant.new_variant(GLib.Variant.new_string(k)) di = GLib.Variant.new_dict_entry(ndi, vndi) vdi = GLib.Variant.new_variant(di) b2.add_value(di) vdi = GLib.Variant.new_string('value') vvdi = GLib.Variant.new_variant(GLib.Variant.new_string(a)) div = GLib.Variant.new_dict_entry(vdi, vvdi) vdi = GLib.Variant.new_variant(div) b2.add_value(div) b.add_value(GLib.Variant.new_variant(b2.end())) return b.end()
def properties_changed(self, props, dest=None): ''' Send a PropertiesChanged signal to the given destination (if any). The props argument is a { name: value } dictionary of the property values, the values are GVariant.bool, etc. ''' builder = GLib.VariantBuilder(GLib.VariantType('a{sv}')) for name, value in props.items(): de = GLib.Variant.new_dict_entry(GLib.Variant.new_string(name), GLib.Variant.new_variant(value)) builder.add_value(de) properties = builder.end() inval_props = GLib.VariantBuilder(GLib.VariantType('as')) inval_props = inval_props.end() self.connection.emit_signal( dest, self.objpath, 'org.freedesktop.DBus.Properties', 'PropertiesChanged', GLib.Variant.new_tuple(GLib.Variant.new_string(self.interface), properties, inval_props))
def serialize(cls, dict_item): builder = GLib.VariantBuilder(GLib.VariantType('r')) builder.add_value(GLib.Variant.new_string(dict_item.id)) builder.add_value(GLib.Variant.new_string(dict_item.short_label)) builder.add_value(GLib.Variant.new_string(dict_item.long_label)) builder.add_value(GLib.Variant.new_string(dict_item.icon)) builder.add_value(GLib.Variant.new_boolean(dict_item.is_system)) builder.add_value(GLib.Variant.new_int32(dict_item.preview_lines)) builder.add_value(GLib.Variant.new_boolean(dict_item.embed)) builder.add_value(GLib.Variant.new_boolean(dict_item.single)) builder.add_value(GLib.Variant.new_boolean(dict_item.reverse)) builder.add_value(GLib.Variant.new_string(dict_item.encoding)) return builder.end()
def _notify_change_configuration(self): try: vconf = self.create_configuration_variant(None) cancellable = self._client.ref_cancellable() b = GLib.VariantBuilder(GLib.VariantType.new('a{sv}')) vk = GLib.Variant.new_string ('settings') vv = GLib.Variant.new_variant(GLib.Variant.new_variant(vconf)) de = GLib.Variant.new_dict_entry(vk, vv) b.add_value(de) vnotify = GLib.Variant.new_variant(b.end()) self._client.send_notification_async("workspace/didChangeConfiguration", vnotify, cancellable, self._did_change_configuration, None) except BaseException as exc: Ide.debug('Notify change configuration error: {}'.format(exc.args))
def _emit_signal(self, signal, *args): retval = GLib.VariantBuilder(variant_type_from_string('r')) for arg in args: retval.add_value(GLib.Variant.new_string(arg)) self._debug('[DBUS] emitting signal %s.%s(%s)', self.get_application_id(), signal, str(args)) self.get_dbus_connection().emit_signal( None, self.get_dbus_object_path(), self.get_application_id(), signal, retval.end() )
def variant_list(l): """ Converts a list to a GLib.Variant """ # If this is a zero-length array, handle it specially if len(l) == 0: return GLib.Variant.new_array(GLib.VariantType("v")) # Build the array from each entry builder = GLib.VariantBuilder(GLib.VariantType("a*")) for item in l: if item is None: item = "" builder.add_value(ModulemdUtil.python_to_variant(item)) return builder.end()
def create_configuration_variant(self): try: b = GLib.VariantBuilder(GLib.VariantType.new('a{sv}')) b.add_value( self.create_dict_entry_boolean('initialized', self.initialized)) b.add_value( self.create_dict_entry_boolean('defaultNamespaces', self.default_namespaces)) b.add_value( self.create_dict_entry_boolean('defaultVapiDirs', self.default_vapi_dirs)) b.add_value( self.create_dict_entry_boolean('scanWorkspace', self.scan_work_space)) b.add_value( self.create_dict_entry_boolean('addUsingNamespaces', self.add_using_namespaces)) b.add_value( self.create_dict_entry_boolean('mesonBuildSystem', self.meson_build_system)) ad = GLib.Variant.new_string('valaArgs') vadi = self.dict_to_array_variant(self.vala_args) adi = GLib.Variant.new_dict_entry(ad, GLib.Variant.new_variant(vadi)) b.add_value(adi) od = GLib.Variant.new_string('options') vodi = self.list_to_variant(self.options) odi = GLib.Variant.new_dict_entry(od, GLib.Variant.new_variant(vodi)) b.add_value(odi) pd = GLib.Variant.new_string('packages') vpdi = self.list_to_variant(self.packages) pdi = GLib.Variant.new_dict_entry(pd, GLib.Variant.new_variant(vpdi)) b.add_value(pdi) fd = GLib.Variant.new_string('files') vfdi = self.list_to_variant(self.files) fdi = GLib.Variant.new_dict_entry(fd, GLib.Variant.new_variant(vfdi)) b.add_value(fdi) return GLib.Variant.new_variant(b.end()) except: print('>>>>>>>>>>>>>>>> On Load Configuration Error:\n\n\n') return GLib.Variant('a{sv}', {}) print('\n\n\n')
def emit_events_added_or_updated(self, calendar, events): # print("package: ",len(events)) all_events = GLib.VariantBuilder(GLib.VariantType.new("a(sssbxxx)")) for event in events: if event.end_timet <= (calendar.start - 1) and event.start_timet >= calendar.end: continue event_var = GLib.Variant("(sssbxxx)", [ event.uid, event.color, event.summary, event.all_day, event.start_timet, event.end_timet, event.mod_timet ]) all_events.add_value(event_var) self.interface.emit_events_added_or_updated(all_events.end())
def list_to_variant(self, l): b = GLib.VariantBuilder(GLib.VariantType.new('av')) for s in l: v = GLib.Variant.new_string(s) b.add_value(GLib.Variant.new_variant(v)) return b.end()