コード例 #1
0
ファイル: main-win.c プロジェクト: gilir/libfm-debian
void on_prop(GtkAction* action, FmMainWin* win)
{
    FmFolderView* fv = FM_FOLDER_VIEW(win->folder_view);
    /* FIXME: should prevent directly accessing data members */
    FmFileInfo* fi = FM_FOLDER_MODEL(fv->model)->dir->dir_fi;
    FmFileInfoList* files = fm_file_info_list_new();
    fm_list_push_tail(files, fi);
    fm_show_file_properties(files);
    fm_list_unref(files);
}
コード例 #2
0
ファイル: fm-path.c プロジェクト: juergenhoetzel/libfm
FmPathList* fm_path_list_new_from_file_info_gslist(GSList* fis)
{
	FmPathList* list = fm_path_list_new();
	GSList* l;
	for(l=fis;l;l=l->next)
	{
		FmFileInfo* fi = (FmFileInfo*)l->data;
		fm_list_push_tail(list, fi->path);
	}
	return list;
}
コード例 #3
0
ファイル: fm-path.c プロジェクト: juergenhoetzel/libfm
FmPathList* fm_path_list_new_from_file_info_list(FmFileInfoList* fis)
{
	FmPathList* list = fm_path_list_new();
	GList* l;
	for(l=fm_list_peek_head_link(fis);l;l=l->next)
	{
		FmFileInfo* fi = (FmFileInfo*)l->data;
		fm_list_push_tail(list, fi->path);
	}
	return list;
}
コード例 #4
0
ファイル: fm-folder.c プロジェクト: engla/libfm
void on_file_info_finished(FmFileInfoJob* job, FmFolder* folder)
{
    GList* l;
    GSList* files_to_add = NULL;
    GSList* files_to_update = NULL;

    for(l=fm_list_peek_head_link(job->file_infos);l;l=l->next)
    {
        FmFileInfo* fi = (FmFileInfo*)l->data;
        GList* l2 = _fm_folder_get_file_by_name(folder, fi->path->name);
        if(l2) /* the file is already in the folder, update */
        {
            FmFileInfo* fi2 = (FmFileInfo*)l2->data;
            /* FIXME: will fm_file_info_copy here cause problems?
             *        the file info might be referenced by others, too.
             *        we're mofifying an object referenced by others.
             *        we should redesign the API, or document this clearly
             *        in future API doc.
             */
            fm_file_info_copy(fi2, fi);
            files_to_update = g_slist_prepend(files_to_update, fi2);
        }
        else
        {
            files_to_add = g_slist_prepend(files_to_add, fi);
            fm_file_info_ref(fi);
            fm_list_push_tail(folder->files, fi);
        }
    }
    if(files_to_add)
    {
        g_signal_emit(folder, signals[FILES_ADDED], 0, files_to_add);
        g_slist_free(files_to_add);
    }
    if(files_to_update)
    {
        g_signal_emit(folder, signals[FILES_CHANGED], 0, files_to_update);
        g_slist_free(files_to_update);
    }

    folder->pending_jobs = g_slist_remove(folder->pending_jobs, job);
}
コード例 #5
0
ファイル: fm-folder.c プロジェクト: engla/libfm
static void on_job_finished(FmDirListJob* job, FmFolder* folder)
{
    GList* l;
    GSList* files = NULL;
    /* actually manually disconnecting from 'finished' signal is not
     * needed since the signal is only emit once, and later the job
     * object will be distroyed very soon. */
    /* g_signal_handlers_disconnect_by_func(job, on_job_finished, folder); */
    for(l = fm_list_peek_head_link(job->files); l; l=l->next)
    {
        FmFileInfo* inf = (FmFileInfo*)l->data;
        files = g_slist_prepend(files, inf);
        fm_list_push_tail(folder->files, inf);
    }
    if(G_LIKELY(files))
        g_signal_emit(folder, signals[FILES_ADDED], 0, files);

    if(job->dir_fi)
        folder->dir_fi = fm_file_info_ref(job->dir_fi);

    folder->job = NULL; /* the job object will be freed in idle handler. */
    g_signal_emit(folder, signals[LOADED], 0);
}
コード例 #6
0
ファイル: fm-dnd-src.c プロジェクト: gilir/libfm-debian
void fm_dnd_src_set_file(FmDndSrc* ds, FmFileInfo* file)
{
	FmFileInfoList* files = fm_file_info_list_new();
	fm_list_push_tail(files, file);
	ds->files = files;
}