コード例 #1
0
ファイル: albumart.c プロジェクト: mjtorn/rage
static char *
_inpath(const char *file)
{
   char *realpath = NULL;

   if (!strncasecmp(file, "file:/", 6))
     {
        Efreet_Uri *uri = efreet_uri_decode(file);
        if (uri)
          {
             realpath = ecore_file_realpath(uri->path);
             efreet_uri_free(uri);
          }
     }
   else if ((!strncasecmp(file, "http:/", 6)) ||
            (!strncasecmp(file, "https:/", 7)))
     realpath = strdup(file);
   else
     realpath = ecore_file_realpath(file);
   if (realpath && (!realpath[0]))
     {
        free(realpath);
        return NULL;
     }
   return realpath;
}
コード例 #2
0
static char *
uri_sanitize(const char *uri)
{
   char *fixed_uri;
   char *schema;
   char *tmp;

   if (!uri || !*uri) return NULL;

   tmp = strstr(uri, "://");
   if (!tmp || (tmp == uri) || (tmp > (uri + 15)))
     {
        char *new_uri = NULL;
        if (ecore_file_exists(uri))
          {
             schema = "file";
             new_uri = ecore_file_realpath(uri);
          }
        else
          schema = "http";

        if (asprintf(&fixed_uri, "%s://%s", schema, new_uri ? new_uri : uri) >
            0)
          {
             free(new_uri);
             return fixed_uri;
          }
        free(new_uri);
     }
   else
     return strdup(uri);

   return NULL;
}
コード例 #3
0
static Volume_Item *
volume_dir_scan(char *dir)
{
   Volume_Item *vi;
   const char *f;
   
   vi = calloc(1, sizeof(Volume_Item));
   vi->path = strdup(dir);
   vi->rpath = ecore_file_realpath(vi->path);
   if (!vi->rpath)
     {
	free(vi->path);
	free(vi);
	return NULL;
     }
   vi->type = "directory";
   f = ecore_file_file_get(dir);
   if (f)
     {
	char *c;
	
	vi->name = strdup(f);
	for (c = vi->name; *c; c++)
	  {
	     if (*c == '_') *c = ' ';
	  }
     }
   return vi;
}
コード例 #4
0
ファイル: synthpod_jack.c プロジェクト: foren197316/synthpod
// ui
static void
_session_async(void *data)
{
	prog_t *handle = data;
	bin_t *bin = &handle->bin;

	jack_session_event_t *ev = handle->session_event;
	
	/*
	printf("_session_async: %s %s %s\n",
		ev->session_dir, ev->client_uuid, ev->command_line);
	*/

	ecore_file_mkpath(ev->session_dir); // path may not exist yet
	char *synthpod_dir = ecore_file_realpath(ev->session_dir);
	const char *realpath = synthpod_dir && synthpod_dir[0] ? synthpod_dir : ev->session_dir;

	asprintf(&ev->command_line, "synthpod_jack -u %s ${SESSION_DIR}",
		ev->client_uuid);

	switch(ev->type)
	{
		case JackSessionSaveAndQuit:
			atomic_store_explicit(&handle->kill, 1, memory_order_relaxed); // quit after saving
			// fall-through
		case JackSessionSave:
			handle->save_state = SAVE_STATE_JACK;
			sp_ui_bundle_save(bin->ui, realpath, 1);
			break;
		case JackSessionSaveTemplate:
			handle->save_state = SAVE_STATE_JACK;
			sp_ui_bundle_new(bin->ui);
			sp_ui_bundle_save(bin->ui, realpath, 1);
			break;
	}

	if(synthpod_dir)
		free(synthpod_dir);
}
コード例 #5
0
ファイル: test_panel.cpp プロジェクト: Limsik/e17
static void _fill_list (Evasxx::Object *obj)
{
  DIR *d;
  struct dirent *de;
  Eina_List *dirs = NULL, *l;
  char *real;

  if (!(d = opendir(getenv("HOME")))) return;
  while ((de = readdir(d)) != NULL)
  {
    char buff[PATH_MAX];

    if (de->d_name[0] == '.') continue;
    snprintf(buff, sizeof(buff), "%s/%s", getenv("HOME"), de->d_name);
    if (!ecore_file_is_dir(buff)) continue;
    real = ecore_file_realpath(buff);
    dirs = eina_list_append(dirs, real);
  }
  closedir(d);

  dirs = eina_list_sort(dirs, eina_list_count(dirs), EINA_COMPARE_CB(strcoll));
#if 0
   EINA_LIST_FOREACH(dirs, l, real)
     {
        Eina_Bool result = EINA_FALSE;

        result = _dir_has_subs(real);
        if (!result)
          elm_genlist_item_append(obj, &itc, eina_stringshare_add(real),
                                  NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
        else
          elm_genlist_item_append(obj, &itc, eina_stringshare_add(real),
                                  NULL, ELM_GENLIST_ITEM_TREE,
                                  NULL, NULL);
        free(real);
     }
コード例 #6
0
ファイル: ephoto.c プロジェクト: Limsik/e17
EAPI int
elm_main(int argc, char **argv)
{
   Ethumb_Client *client;
   int r = 0;

#if ENABLE_NLS
   setlocale(LC_ALL, "");
   bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
   bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
   textdomain(GETTEXT_PACKAGE);
#endif

   eio_init();
   elm_need_efreet();
   elm_need_ethumb();
   elm_init(argc, argv);

   __log_domain = eina_log_domain_register("ephoto", EINA_COLOR_ORANGE);
   if (!__log_domain)
     {
        EINA_LOG_ERR("Could not register log domain: Ephoto");
        r = 1;
        goto end_log_domain;
     }

   elm_theme_extension_add(NULL, PACKAGE_DATA_DIR"/themes/default/ephoto.edj");

   if (!efreet_mime_init())
     ERR("Could not init efreet_mime!");

   client = elm_thumb_ethumb_client_get();
   if (!client)
     {
        ERR("could not get ethumb_client");
        r = 1;
        goto end;
     }
   ethumb_client_crop_align_set(client, 0.5, 0.5);
   ethumb_client_aspect_set(client, ETHUMB_THUMB_CROP);
   ethumb_client_orientation_set(client, ETHUMB_THUMB_ORIENT_ORIGINAL);

   elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);

   DBG("Logging initialized");
   if (argc > 2)
     {
        printf("Too Many Arguments!\n");
        _ephoto_display_usage();
        r = 1;
        goto end;
     }
   else if (argc < 2)
     {
        Evas_Object *win = ephoto_window_add(NULL);
        if (!win)
          {
             r = 1;
             goto end;
          }
     }
   else if (!strncmp(argv[1], "--help", 6))
     {
        _ephoto_display_usage();
        r = 0;
        goto end;
     }
   else
     {
        char *real = ecore_file_realpath(argv[1]);
        if (!real)
          {
             printf("invalid file or directory: '%s'\n", argv[1]);
             r = 1;
             goto end;
          }
        Evas_Object *win = ephoto_window_add(real);
        free(real);
        if (!win)
          {
             r = 1;
             goto end;
          }
     }

   elm_run();

 end:
   eina_log_domain_unregister(__log_domain);
   efreet_mime_shutdown();
 end_log_domain:
   elm_shutdown();
   eio_shutdown();

   return r;
}
コード例 #7
0
Ex_Tab *
_ex_tab_new(Exhibit *e, char *dir)
{
   Ex_Tab *tab;
   Etk_Tree_Model *imodel;
   char *file;

   file = NULL;
   tab = calloc(1, sizeof(Ex_Tab));
   //tab->num = eina_list_count(e->tabs);
   tab->dirs = NULL;

   if (!dir) {
	D(("NO DIR\n"));
	exit(-1);
   }

   D(("Creating new tab with %s\n", dir));

   if (e->options->default_view == EX_IMAGE_FIT_TO_WINDOW)
     {
	tab->fit_window = ETK_TRUE;
	D(("Setting EX_IMAGE_FIT_TO_WINDOW\n"));
     }
   else
      tab->fit_window = ETK_FALSE;

   tab->comment.visible = ETK_FALSE;
   tab->image_loaded = ETK_FALSE;

   tab->dtree = etk_tree_new();
   etk_widget_size_request_set(tab->dtree, 180, 120);
   etk_signal_connect("row-clicked", ETK_OBJECT(tab->dtree), ETK_CALLBACK(_ex_tab_dtree_item_clicked_cb), e);
   tab->dcol = etk_tree_col_new(ETK_TREE(tab->dtree), "Directories", 10, 0.0);
   etk_tree_col_model_add(tab->dcol, etk_tree_model_image_new());
   etk_tree_col_model_add(tab->dcol, etk_tree_model_text_new());
   etk_tree_headers_visible_set(ETK_TREE(tab->dtree), 0);
   etk_scrolled_view_policy_set(etk_tree_scrolled_view_get(ETK_TREE(tab->dtree)), ETK_POLICY_AUTO, ETK_POLICY_SHOW);
   etk_tree_build(ETK_TREE(tab->dtree));

   tab->itree = etk_tree_new();
   etk_scrolled_view_dragable_set(ETK_SCROLLED_VIEW(etk_tree_scrolled_view_get(ETK_TREE(tab->itree))), ETK_TRUE);
   etk_scrolled_view_drag_bouncy_set(ETK_SCROLLED_VIEW(etk_tree_scrolled_view_get(ETK_TREE(tab->itree))), ETK_FALSE);
   etk_scrolled_view_drag_damping_set(ETK_SCROLLED_VIEW(etk_tree_scrolled_view_get(ETK_TREE(tab->itree))), 300);



   etk_widget_dnd_source_set(ETK_WIDGET(tab->itree), ETK_TRUE);
//   etk_signal_connect("drag_begin", ETK_OBJECT(tab->itree), ETK_CALLBACK(_ex_tab_tree_drag_begin_cb), tab);
   etk_widget_size_request_set(tab->itree, 180, 220);
   etk_tree_multiple_select_set(ETK_TREE(tab->itree), ETK_TRUE);
   etk_signal_connect("row-selected", ETK_OBJECT(tab->itree), ETK_CALLBACK(_ex_tab_itree_item_clicked_cb), e);
   etk_signal_connect("key-down", ETK_OBJECT(tab->itree), ETK_CALLBACK(_ex_tab_itree_key_down_cb), e);
   imodel = etk_tree_model_wobbly_new();
   tab->imodel = imodel;
   //etk_tree_model_image_width_set(imodel, 80, 0.0);
   tab->icol = etk_tree_col_new(ETK_TREE(tab->itree), "Files", 10, 0.0);
   etk_tree_col_model_add(tab->icol, imodel);
   etk_tree_col_model_add(tab->icol, etk_tree_model_text_new());
   etk_tree_headers_visible_set(ETK_TREE(tab->itree), 0);
   etk_tree_rows_height_set(ETK_TREE(tab->itree), 60);
   etk_scrolled_view_policy_set(etk_tree_scrolled_view_get(ETK_TREE(tab->itree)), ETK_POLICY_AUTO, ETK_POLICY_SHOW);
   etk_tree_build(ETK_TREE(tab->itree));

   tab->dir = _ex_path_normalize(ecore_file_realpath(dir));
   tab->alignment = etk_alignment_new(0.5, 0.5, 1.0, 1.0);

   tab->image = etk_image_new();
   etk_widget_theme_file_set(tab->image, PACKAGE_DATA_DIR"/gui.edj");
   etk_widget_theme_group_set(tab->image, "image_bg");
   etk_signal_connect("mouse-down", ETK_OBJECT(tab->image), ETK_CALLBACK(_ex_image_mouse_down), e);
   etk_signal_connect("mouse-up", ETK_OBJECT(tab->image), ETK_CALLBACK(_ex_image_mouse_up), e);
   etk_signal_connect("mouse-move", ETK_OBJECT(tab->image), ETK_CALLBACK(_ex_image_mouse_move), e);
   etk_signal_connect("mouse-wheel", ETK_OBJECT(tab->image), ETK_CALLBACK(_ex_image_mouse_wheel), e);

   etk_image_keep_aspect_set(ETK_IMAGE(tab->image), ETK_TRUE);

   etk_container_add(ETK_CONTAINER(tab->alignment), tab->image);

   tab->scrolled_view = etk_scrolled_view_new();
   etk_scrolled_view_policy_set(ETK_SCROLLED_VIEW(tab->scrolled_view), ETK_POLICY_HIDE, ETK_POLICY_HIDE);
   etk_scrolled_view_dragable_set(ETK_SCROLLED_VIEW(tab->scrolled_view), ETK_TRUE);
   etk_scrolled_view_drag_bouncy_set((ETK_SCROLLED_VIEW(tab->scrolled_view)), ETK_FALSE);
   etk_scrolled_view_add_with_viewport(ETK_SCROLLED_VIEW(tab->scrolled_view), tab->alignment);
   etk_widget_has_event_object_set(tab->scrolled_view, ETK_TRUE);
   etk_signal_connect("mouse-wheel", ETK_OBJECT(tab->scrolled_view), ETK_CALLBACK(_ex_image_mouse_wheel), e);

   return tab;
}
コード例 #8
0
static Volume_Item *
volume_file_scan(char *file)
{
   Volume_Item *vi;
   char *ext;

   vi = calloc(1, sizeof(Volume_Item));
   vi->path = strdup(file);
   vi->rpath = ecore_file_realpath(vi->path);
   printf("%s -> %s\n", vi->path, vi->rpath);
   if (!vi->rpath)
     {
	free(vi->path);
	free(vi);
	return NULL;
     }
   ext = strrchr(vi->path, '.');
   if (!ext)
     {
	free(vi->path);
	free(vi->rpath);
	free(vi);
	return NULL;
     }
   ext++;
   if 
     ((!strcasecmp(ext, "avi")) || (!strcasecmp(ext, "mov"))  || 
      (!strcasecmp(ext, "mpg")) || (!strcasecmp(ext, "mpeg")) || 
      (!strcasecmp(ext, "vob")) || (!strcasecmp(ext, "wmv"))  ||
      (!strcasecmp(ext, "asf")) || (!strcasecmp(ext, "mng"))  ||
      (!strcasecmp(ext, "3gp")) || (!strcasecmp(ext, "wmx"))  ||
      (!strcasecmp(ext, "wvx")) || (!strcasecmp(ext, "mp4"))  ||
      (!strcasecmp(ext, "mpe")) || (!strcasecmp(ext, "qt"))   ||
      (!strcasecmp(ext, "fli")) || (!strcasecmp(ext, "dv"))   ||
      (!strcasecmp(ext, "asx")) || (!strcasecmp(ext, "wm"))   ||
      (!strcasecmp(ext, "lsf")) || (!strcasecmp(ext, "movie") ||
      (!strcasecmp(ext, "mkv")))
      ) 
     {
	vi->type = "video";
	video_count++;
     }
   else if 
     ((!strcasecmp(ext, "mp3")) || (!strcasecmp(ext, "ogg"))  ||
      (!strcasecmp(ext, "aac")) || (!strcasecmp(ext, "wav"))
      )
     {
	vi->type = "audio";
	audio_count++;
     }
   else if 
     ((!strcasecmp(ext, "jpg")) || (!strcasecmp(ext, "jpeg"))  ||
      (!strcasecmp(ext, "jpe")) || (!strcasecmp(ext, "jfif"))
      )
     {
	vi->type = "photo";
	photo_count++;
     }
   else
     {
	free(vi->path);
	free(vi);
	return NULL;
     }
   /* FIXME: get name and genre from local "database" first - if this doesn't
    * hold the info we want - then invent it from the filesystem */

   /* 1. look for full path in db */
   /* 2. look for just filename in db */
   
   /* invent the data */
   if (!vi->name)
     {
	const char *f;
	/* guess name from filename minus extension with _ converted to space */
	f = ecore_file_file_get(file);
	if (f)
	  {
	     char *c;
	     
	     vi->name = strdup(f);
	     c = strrchr(vi->name, '.');
	     if (c) *c = 0;
	     for (c = vi->name; *c; c++)
	       {
		  if (*c == '_') *c = ' ';
	       }
	  }
     }
   if (!vi->genre)
     {
	char *f;
	/* guess genre from parent directory name with _ converted to space */
	f = ecore_file_dir_get(file);
	if (f)
	  {
	     char *c, *ff;
	     
	     ff = ecore_file_dir_get(f);
	     if (ff)
	       {
		  char buf[4096];
		  
		  snprintf(buf, sizeof(buf), "%s/%s", 
			   ecore_file_file_get(ff),
			   ecore_file_file_get(f));
		  for (c = buf; *c; c++)
		    {
		       if (*c == '_') *c = ' ';
		    }
		  vi->genre = eina_stringshare_add(buf);
		  free(ff);
	       }
	     else
	       {
		  vi->genre = eina_stringshare_add(f);
	       }
	     free(f);
	  }
	else
	  vi->genre = eina_stringshare_add("Unknown");
     }
   ecore_event_add(VOLUME_TYPE_ADD, strdup(vi->path), NULL, NULL);
   /* FIXME: check last played and play count db entry */
   return vi;
}