Esempio n. 1
0
gchar* 
tags_dialog (GtkWidget *win, JamAccountLJ *acc, gchar *journal, gchar *typed)
{
  GtkWidget *dlg, *sw, *tv;
  GSList *list = NULL;
  gchar *taglist = NULL;
  GSList *prev;

  if (acc == NULL) return NULL;

  load_tags (GTK_WINDOW (win), acc, journal, &list);
  
  dlg = gtk_dialog_new_with_buttons (_("Select tags"),
                                     GTK_WINDOW (win),
                                     GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
                                     GTK_STOCK_OK,
                                     GTK_RESPONSE_OK,
                                     GTK_STOCK_CLOSE,
                                     GTK_RESPONSE_CLOSE,
                                     NULL);

  sw = gtk_scrolled_window_new (NULL, NULL);
  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
				       GTK_SHADOW_ETCHED_IN);
  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
				  GTK_POLICY_AUTOMATIC,
				  GTK_POLICY_AUTOMATIC);
  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), sw, TRUE, TRUE, 0);

  prev = tags_split(typed);
  tv = taglist_create (list, &prev);
  gtk_container_add (GTK_CONTAINER (sw), tv);

  gtk_window_resize(dlg, 60, 210);
  gtk_widget_show_all (sw);

  if (gtk_dialog_run (GTK_DIALOG (dlg)) == GTK_RESPONSE_OK)
    {
      taglist = g_strdup ("");
      gtk_tree_model_foreach (gtk_tree_view_get_model (tv),
			      create_tag_string,
			      &taglist);
      if (g_ascii_strcasecmp (taglist, "") == 0) 
	{
	  g_free (taglist);
	  taglist = NULL;
	}
    }  

  gtk_widget_destroy (dlg);
  
  /* free rest of prev list */
  if (prev) {
    GSList *p;
    for (p = prev; p; p = g_slist_next(p)) {
      g_free(p->data);
    }
    g_slist_free(prev);
  }

  return taglist;
}
Esempio n. 2
0
int main()
{
    char uri_string[]      = "mongodb://localhost:27017/";
    char db_name[]         = "test";
    char collection_name[] = "test";
    
    mongoc_client_t     *client;
    mongoc_collection_t *collection;
    mongoc_cursor_t     *cursor;
    
    linked_list_tag_t **tags;
    
    const bson_t *document;
    bson_t *query;
    bson_t *update;
    
    json_object *json;
    enum json_type json_type;
    
    size_t len;
    
    char *str;
    char *tags_str;
    
    char **strings;
    char **pointer;
    
    //
    
    
    mongoc_init();
    
    client = mongoc_client_new(uri_string);
    collection = mongoc_client_get_collection(client, db_name, collection_name);
    
    query = bson_new();
    
    cursor = mongoc_collection_find(collection, MONGOC_QUERY_NONE, 0, 0, 0, query, NULL, NULL);
    
    while (mongoc_cursor_next(cursor, &document))
    {
        str  = bson_as_json(document, NULL);
        json = json_tokener_parse(str);
        
        json_object_object_foreach(json, key, val)
        {
            if (strcmp(key, "tags") == 0)
            {
                json_type = json_object_get_type(val);
                
                if (json_type == json_type_string)
                {
                    tags_str = strdup(json_object_get_string(val));
                    tags = tags_split(tags_str, " ");
                    free(tags_str);
                    
                    //linked_list_tag_print(tags);
                    
                    update = create_bson_update(tags);
                    
                    //printf("%s\n", bson_as_json(update, NULL));
                    
                    linked_list_tag_clear(tags);
                    free(tags);
                }
            }
            else if (strcmp(key, "id") == 0)
            {
                query = create_bson_selector(json_object_get_int(val));
                
                printf("%s\n", bson_as_json(query, NULL));
            }
        }
        
        mongoc_collection_update(collection, MONGOC_QUERY_NONE, query, update, NULL, NULL);
        
        bson_destroy(update);
        bson_destroy(query);
        bson_free(str);
        json_object_put(json);
    }
    
    mongoc_cursor_destroy(cursor);
    mongoc_collection_destroy(collection);
    mongoc_client_destroy(client);
    
    return 0;
}