コード例 #1
0
static void
foreach_miner_func (PeasExtensionSet *set,
                    PeasPluginInfo   *plugin_info,
                    PeasExtension    *exten,
                    gpointer          user_data)
{
  IdeRecentProjects *self = user_data;

  g_assert (PEAS_IS_EXTENSION_SET (set));
  g_assert (plugin_info != NULL);
  g_assert (IDE_IS_PROJECT_MINER (exten));
  g_assert (IDE_IS_RECENT_PROJECTS (self));

  ide_recent_projects_add_miner (self, IDE_PROJECT_MINER (exten));
}
コード例 #2
0
static void
ide_recent_projects_init (IdeRecentProjects *self)
{
  GIOExtensionPoint *extension_point;
  GList *extensions;

  self->projects = g_sequence_new (g_object_unref);
  self->miners = g_ptr_array_new_with_free_func (g_object_unref);
  self->cancellable = g_cancellable_new ();
  self->recent_uris = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
  self->file_uri = g_build_filename (g_get_user_data_dir (),
                                     ide_get_program_name (),
                                     IDE_RECENT_PROJECTS_BOOKMARK_FILENAME,
                                     NULL);


  extension_point = g_io_extension_point_lookup (IDE_PROJECT_MINER_EXTENSION_POINT);
  extensions = g_io_extension_point_get_extensions (extension_point);

  for (; extensions; extensions = extensions->next)
    {
      IdeProjectMiner *miner;
      GIOExtension *extension = extensions->data;
      GType type_id;

      type_id = g_io_extension_get_type (extension);

      if (!g_type_is_a (type_id, IDE_TYPE_PROJECT_MINER))
        {
          g_warning ("%s is not an IdeProjectMiner", g_type_name (type_id));
          continue;
        }

      miner = g_object_new (type_id, NULL);
      ide_recent_projects_add_miner (self, miner);
      g_object_unref (miner);
    }
}