Exemple #1
0
void
panda_dbopen (panda_pdf * document)
{
  int ec;
  char filename[] = "/tmp/panda-XXXXXX";

  if (NULL == document)
    panda_error(panda_true, "Attempt to open a database for a NULL document");

  /* The name of the database must be unique, or we wont be able to create
     more than one document at a time */
  if((ec = mkstemp(filename)) < 0){
    panda_error(panda_true, 
  		"Could not generate a temporary filename for database");
  }
  close(ec);
  unlink(filename);

#ifdef DEBUG
  printf ("Opening the database: %s\n", filename);
#endif // DEBUG

#ifdef _WINDOWS
  panda_windbopen (document);
#else
#ifdef USE_EDB
  if ( !(document->db = e_db_open(filename)) )
    panda_error(panda_true, "Could not open database.");
#else
 {
   DB *dbptr = (DB *) document->db;
   
   if((ec = db_create(&dbptr, NULL, 0)) != 0)
     panda_error(panda_true, panda_xsnprintf("Could not open database: %s", 
					     db_strerror(ec)));
   
   if(NULL == dbptr)
     panda_error(panda_true, "Couldn't create the database\n");

   if((ec = dbptr->open(dbptr, filename, "panda", DB_BTREE, 
			 DB_CREATE, 0600)) != 0)
     panda_error(panda_true, panda_xsnprintf("Could not open database: %s", 
					     db_strerror(ec)));

   document->db = (void *) dbptr;
 }
#endif // USE_EDB
#endif // _WINDOWS
}
Exemple #2
0
void
sprite_load_from_metadata_f(gevas_metadata_find_edb_data* d)
{
    sprite_load_from_metadata_data* data = (sprite_load_from_metadata_data*)d;
    E_DB_File* edb        = 0;
    const char* edb_prefix = 0;
    gboolean   loaded     = 1;
    GtkgEvasSprite* ev    = 0;

/*     printf("sprite_load_from_metadata() TOP\n"); */

    g_return_if_fail(d        != NULL);
    g_return_if_fail(data->ev != NULL);
    if(data->loaded)
        return;
    ev = data->ev;
    
    edb_prefix = url_args_lookup_str(d->hash_args, "prefix", "" );

/*     printf("sprite_load_from_metadata() edb_full_path:%s\n",d->edb_full_path); */
/*     printf("sprite_load_from_metadata() edb_prefix   :%s\n",edb_prefix); */

    
    /* load the data */
    if( edb = e_db_open( d->edb_full_path ))
    {
        gint  idx   = 0;
        gint  count = 0;
        char* t     = 0;
        gint  n     = 0;

        count = edb_lookup_int( edb, 0, "%s/%s", edb_prefix, "Count",0 );

        for( idx = 0; loaded && idx < count ; idx++ )
        {
            GtkgEvasImage* o = gevasimage_new();
            char* image_name = 0;

            image_name = edb_lookup_str( edb, "", "%s/%d/Location", edb_prefix, idx,0 );
/*             printf("load_from_metadata() image_name:%s\n",image_name); */

            if(!(o = gevasimage_new_from_metadata( GEVAS(ev), image_name )))
            {
                gevas_obj_collection_clear( ev->col );
                loaded=0;
            }
            else
            {
                gevas_obj_collection_add( ev->col, GTK_GEVASOBJ(o) );
            }
            g_free(image_name);
        }

        if(loaded && !(idx < count))
        {
            const char* p = edb_prefix;
            GHashTable* def_hash_args = g_hash_table_new( g_str_hash, g_str_equal );
                
            data->loaded = 1;

            edb_to_hash_int( edb, def_hash_args, "default_frame_delay", p, 0 );
            edb_to_hash_int( edb, def_hash_args, "x", p, 0 );
            edb_to_hash_int( edb, def_hash_args, "y", p, 0 );
            edb_to_hash_int( edb, def_hash_args, "visible", p, 0 );
            edb_to_hash_int( edb, def_hash_args, "play_forever", p, 0 );
            
            setup_attribs( ev, def_hash_args );
            setup_attribs( ev, d->hash_args );

            hash_str_str_clean( def_hash_args );
        }
        e_db_close(edb);
    }
    
    
}
Exemple #3
0
static void
load_from_metadata(
    gpointer data,
    gpointer user_data
    )
{
    const char* fully_qualified_prefix = data;
    GtkgEvasSprite* ev = user_data;
    char* full_buffer;
    char* filen;
    char* edb_prefix = 0;
    char* p = 0;
    E_DB_File* edb = 0;
    gboolean loaded=1;
    GHashTable* hash_args = 0;
    char* strbuf1 = 0;
    
    
    g_return_if_fail(ev != NULL);
	g_return_if_fail(fully_qualified_prefix!= NULL);
    g_return_if_fail(GTK_IS_GEVAS_SPRITE(ev));

    if( ev->metadata_load_loaded )
    {
        return;
    }
    
/*     printf("SPRITE load_from_metadata() fully_qualified_prefix: %s\n", */
/*            fully_qualified_prefix); */

/*     printf("SPRITE load_from_metadata() ev->metadata_load_postfix:%s\n", */
/*            ev->metadata_load_postfix); */
    
    
    if( strlen( fully_qualified_prefix ))
    {
        full_buffer = g_strconcat( fully_qualified_prefix,
                                   "/", ev->metadata_load_postfix,0 );
    }
    else
    {
        full_buffer = g_strdup(ev->metadata_load_postfix);
    }


/*     printf("full_buffer:%s\n",full_buffer ); */
    filen = strbuf1 = url_file_name_part_new( full_buffer );
    hash_args       = url_args_to_hash( full_buffer );

    g_free(full_buffer);

    filen = gevas_trim_prefix("file:",filen);
    edb_prefix = url_args_lookup_str(hash_args, "prefix", "" );
    
/*     printf("load_from_metadata() filen      :%s\n",filen); */
/*     printf("load_from_metadata() edb_prefix :%s\n",edb_prefix); */
    
    
    edb = e_db_open(filen);

    if( edb )
    {
        gint  idx   = 0;
        gint  count = 0;
        char* t     = 0;
        int   rc    = 0;
        gint  n     = 0;

/*         printf("load_from_metadata() loaded edb\n"); */


        t  = g_strconcat( edb_prefix, "/Count",0 );
        rc = e_db_int_get(edb, t, &count);
        g_free(t);

        if( rc == 1 )
        {

/*             printf("load_from_metadata() count:%d\n",count); */
        
   
            for( idx = 0; loaded && idx < count ; idx++ )
            {
                GtkgEvasImage* o = gevasimage_new();
                char* image_name = 0;

                t = g_strdup_printf("%s/%d/Location",edb_prefix,idx);
/*                 printf("load_from_metadata() image_name comes from loc:%s\n",t); */
                image_name=e_db_str_get(edb, t);
                g_free(t);

/*                 printf("load_from_metadata() image_name:%s\n",image_name); */

                if(!(o = gevasimage_new_from_metadata( GEVAS(ev), image_name )))
                {
                    loaded=0;
                }
                else
                {
                    gevas_obj_collection_add( ev->col, GTK_GEVASOBJ(o) );
                }
                
                g_free(image_name);
            }
            
            if(loaded && !(idx < count))
            {
                char* p = edb_prefix;
                GHashTable* def_hash_args = g_hash_table_new( g_str_hash, g_str_equal );
                
                ev->metadata_load_loaded = 1;

                edb_to_hash_int( edb, def_hash_args, "default_frame_delay", p, 0 );
                edb_to_hash_int( edb, def_hash_args, "x", p, 0 );
                edb_to_hash_int( edb, def_hash_args, "y", p, 0 );
                edb_to_hash_int( edb, def_hash_args, "visible", p, 0 );
                edb_to_hash_int( edb, def_hash_args, "play_forever", p, 0 );

                setup_attribs( ev, def_hash_args );
                setup_attribs( ev, hash_args );

                hash_str_str_clean( def_hash_args );
            }
            e_db_close(edb);
        }
        
    }
    

    hash_str_str_clean( hash_args );
    g_free(strbuf1);

}