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; }
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; }
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; }
// 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); }
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); }
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; }
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; }
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; }