bool Configuration::unset_windowlevels(const Glib::ustring& modality) { Glib::ustring base = "/apps/aeskulap/presets/windowlevel/"+modality; std::vector< Glib::ustring > dirs = m_conf_client->all_dirs(base); if(dirs.size() == 0) { return false; } for(unsigned int i=0; i<dirs.size(); i++) { Glib::ustring keybase = base+"/"+get_name_from_path(dirs[i]); m_conf_client->unset(keybase+"/center"); m_conf_client->unset(keybase+"/width"); } return true; }
static gboolean load_files(gpointer data) { gmpv_handle *ctx = data; if(ctx->files) { gint i = 0; ctx->paused = FALSE; playlist_widget_clear(PLAYLIST_WIDGET(ctx->gui->playlist)); for(i = 0; ctx->files[i]; i++) { gchar *name = get_name_from_path(ctx->files[i]); if(ctx->init_load) { playlist_widget_append ( PLAYLIST_WIDGET (ctx->gui->playlist), name, ctx->files[i] ); } else { mpv_load( ctx, ctx->files[i], (i != 0), TRUE ); } g_free(name); } g_strfreev(ctx->files); } return FALSE; }
bool Configuration::get_windowlevel_list(const Glib::ustring& modality, WindowLevelList& list) { if(modality.empty()) { return false; } Glib::ustring base = "/apps/aeskulap/presets/windowlevel/"+modality; std::vector< Glib::ustring > dirs = m_conf_client->all_dirs(base); if(dirs.size() == 0) { return false; } list.clear(); for(unsigned int i=0; i<dirs.size(); i++) { WindowLevel w; if(get_windowlevel(modality, get_name_from_path(dirs[i]), w)) { list[w.description] = w; } } return true; }
static void mpv_obj_update_playlist(GmpvMpvObj *mpv) { /* The length of "playlist//filename" including null-terminator (19) * plus the number of digits in the maximum value of 64 bit int (19). */ const gsize filename_prop_str_size = 38; GtkListStore *store = gmpv_playlist_get_store(mpv->playlist); gchar *filename_prop_str = g_malloc(filename_prop_str_size); gboolean iter_end = FALSE; GtkTreeIter iter; mpv_node mpv_playlist; gint playlist_count; gint i; mpv_check_error(mpv_get_property( mpv->mpv_ctx, "playlist", MPV_FORMAT_NODE, &mpv_playlist )); playlist_count = mpv_playlist.u.list->num; gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter); for(i = 0; i < playlist_count; i++) { mpv_node_list *prop_list = mpv_playlist.u.list->values[i].u.list; gchar *uri = NULL; gchar *title = NULL; gchar *name = NULL; for(gint j = 0; j < prop_list->num; j++) { const gchar *key = prop_list->keys[j]; const mpv_node value = prop_list->values[j]; if(g_strcmp0(key, "filename") == 0) { g_assert(value.format == MPV_FORMAT_STRING); uri = value.u.string; } else if(g_strcmp0(key, "title") == 0) { g_assert(value.format == MPV_FORMAT_STRING); title = value.u.string; } } name = title?g_strdup(title):get_name_from_path(uri); /* Overwrite current entry if it doesn't match the new value */ if(!iter_end) { gchar *old_name = NULL; gchar *old_uri = NULL; gboolean name_update; gboolean uri_update; gtk_tree_model_get ( GTK_TREE_MODEL(store), &iter, PLAYLIST_NAME_COLUMN, &old_name, PLAYLIST_URI_COLUMN, &old_uri, -1 ); name_update = (g_strcmp0(name, old_name) != 0); uri_update = (g_strcmp0(uri, old_uri) != 0); /* Only set the name if either the title can be * retrieved or the name is unset. This preserves the * correct title if it becomes unavailable later such as * when restarting mpv. */ if(name_update && (!old_name || title || uri_update)) { gtk_list_store_set ( store, &iter, PLAYLIST_NAME_COLUMN, name, -1 ); } if(uri_update) { gtk_list_store_set ( store, &iter, PLAYLIST_URI_COLUMN, uri, -1 ); } iter_end = !gtk_tree_model_iter_next (GTK_TREE_MODEL(store), &iter); g_free(old_name); g_free(old_uri); } /* Append entries to the playlist if there are fewer entries in * the playlist widget than mpv's playlist. */ else { gmpv_playlist_append(mpv->playlist, name, uri); } g_free(name); } /* If there are more entries in the playlist widget than mpv's playlist, * remove the excess entries from the playlist widget. */ if(!iter_end) { while(gtk_list_store_remove(store, &iter)); } g_free(filename_prop_str); mpv_free_node_contents(&mpv_playlist); }
void gmpv_mpv_obj_load( GmpvMpvObj *mpv, const gchar *uri, gboolean append, gboolean update ) { const gchar *load_cmd[] = {"loadfile", NULL, NULL, NULL}; GtkListStore *playlist_store = gmpv_playlist_get_store(mpv->playlist); GtkTreeIter iter; gboolean empty; g_info( "Loading file (append=%s, update=%s): %s", append?"TRUE":"FALSE", update?"TRUE":"FALSE", uri?:"<PLAYLIST_ITEMS>" ); empty = !gtk_tree_model_get_iter_first (GTK_TREE_MODEL(playlist_store), &iter); load_cmd[2] = (append && !empty)?"append":"replace"; if(!append && uri && update) { gmpv_playlist_clear(mpv->playlist); mpv->state.new_file = TRUE; mpv->state.loaded = FALSE; } if(!uri) { gboolean append = FALSE; gboolean rc; if(!mpv->state.init_load) { gmpv_mpv_obj_set_property_flag(mpv, "pause", FALSE); } rc = gtk_tree_model_get_iter_first (GTK_TREE_MODEL(playlist_store), &iter); while(rc) { gchar *uri; gtk_tree_model_get( GTK_TREE_MODEL(playlist_store), &iter, PLAYLIST_URI_COLUMN, &uri, -1 ); /* append = FALSE only on first iteration */ gmpv_mpv_obj_load(mpv, uri, append, FALSE); append = TRUE; rc = gtk_tree_model_iter_next (GTK_TREE_MODEL(playlist_store), &iter); g_free(uri); } } if(uri && playlist_store) { gchar *path = get_path_from_uri(uri); load_cmd[1] = path; if(!append) { mpv->state.loaded = FALSE; if(!mpv->state.init_load) { gmpv_mpv_obj_set_property_flag (mpv, "pause", FALSE); } } if(update) { gchar *name = get_name_from_path(path); gmpv_playlist_append(mpv->playlist, name, uri); g_free(name); } g_assert(mpv->mpv_ctx); mpv_check_error(mpv_request_event( mpv->mpv_ctx, MPV_EVENT_END_FILE, 0 )); mpv_check_error(mpv_command(mpv->mpv_ctx, load_cmd)); mpv_check_error(mpv_request_event( mpv->mpv_ctx, MPV_EVENT_END_FILE, 1 )); g_free(path); } }