Beispiel #1
0
static int
do_glob(mvp_widget_t *fbw, char *wc[])
{
	int w, i = 0;
	struct stat64 sb;
	glob_t gb;
	char pattern[1024], *ptr;

	w = 0;
	while (wc[w] != NULL) {
		memset(&gb, 0, sizeof(gb));
		snprintf(pattern, sizeof(pattern), "%s/%s", cwd, wc[w]);
		if (glob(pattern, 0, NULL, &gb) == 0) {
			i = 0;
			while (gb.gl_pathv[i]) {
				stat64(gb.gl_pathv[i], &sb);
				if ((ptr=strrchr(gb.gl_pathv[i], '/')) == NULL)
					ptr = gb.gl_pathv[i];
				else
					ptr++;
				mvpw_add_menu_item(fbw, ptr,
						   (void*)(dir_count+
							   file_count++),
						   &item_attr);
				i++;
			}
		}
		globfree(&gb);
		w++;
	}

	return i;
}
Beispiel #2
0
void
add_video_streams(mvp_widget_t *widget, mvpw_menu_item_attr_t *item_attr)
{
	demux_attr_t *attr;
	int i;
	char buf[32];
	unsigned long id;
	stream_type_t type;
	char *str = "";

	mvpw_clear_menu(widget);

	attr = demux_get_attr(handle);

	for (i=0; i<attr->video.existing; i++) {
		id = attr->video.ids[i].id;
		type = attr->video.ids[i].type;
		if (type == STREAM_MPEG)
			str = "MPEG";
		snprintf(buf, sizeof(buf), "Stream ID 0x%lx - %s", id, str);
		mvpw_add_menu_item(widget, buf, (void*)id, item_attr);
	}

	mvpw_check_menu_item(widget, (void*)(long)attr->video.current, 1);
}
Beispiel #3
0
void
add_subtitle_streams(mvp_widget_t *widget, mvpw_menu_item_attr_t *item_attr)
{
	demux_attr_t *attr;
	long i;
	int current;
	char buf[32];

	mvpw_clear_menu(widget);

	attr = demux_get_attr(handle);

	current = demux_spu_get_id(handle);

	for (i=0; i<32; i++) {
		if (attr->spu[i].bytes > 0) {
			snprintf(buf, sizeof(buf), "Stream ID 0x%lx", i);
			mvpw_add_menu_item(widget, buf, (void*)i, item_attr);
			if (current == i)
				mvpw_check_menu_item(widget, (void*)i, 1);
			else
				mvpw_check_menu_item(widget, (void*)i, 0);
		}
	}
}
Beispiel #4
0
void
add_audio_streams(mvp_widget_t *widget, mvpw_menu_item_attr_t *item_attr)
{
	demux_attr_t *attr;
	int i;
	char buf[32];
	unsigned long id;
	stream_type_t type;
	char *str = "";

	mvpw_clear_menu(widget);

	attr = demux_get_attr(handle);

	for (i=0; i<attr->audio.existing; i++) {
		id = attr->audio.ids[i].id;
		type = attr->audio.ids[i].type;
		switch (type) {
		case STREAM_MPEG:
			str = "MPEG";
			break;
		case STREAM_AC3:
			str = "AC3";
			break;
		case STREAM_PCM:
			str = "PCM";
			break;
		}
		snprintf(buf, sizeof(buf), "Stream ID 0x%lx - %s", id, str);
		mvpw_add_menu_item(widget, buf, (void*)id, item_attr);
	}

	mvpw_check_menu_item(widget, (void*)(long)attr->audio.current, 1);
}
Beispiel #5
0
static void
add_dirs(mvp_widget_t *fbw)
{
	glob_t gb;
	char pattern[1024], buf[1024], *ptr;
	int i;
	struct stat64 sb;

	item_attr.select = select_callback;
	item_attr.hilite = hilite_callback;
	item_attr.fg = fb_attr.fg;
	item_attr.bg = fb_attr.bg;
	mvpw_add_menu_item(fbw, "../", 0, &item_attr);

	memset(&gb, 0, sizeof(gb));
	snprintf(pattern, sizeof(pattern), "%s/*", cwd);

	dir_count = 1;
	if (glob(pattern, GLOB_ONLYDIR, NULL, &gb) == 0) {
		i = 0;
		while (gb.gl_pathv[i]) {
			stat64(gb.gl_pathv[i], &sb);
			if (S_ISDIR(sb.st_mode)) {
				if ((ptr=strrchr(gb.gl_pathv[i], '/')) == NULL)
					ptr = gb.gl_pathv[i];
				else
					ptr++;
				snprintf(buf, sizeof(buf)/sizeof(*buf) - 1,
					 "%s", ptr);
				strcat(buf, "/");
				mvpw_add_menu_item(fbw, buf,
						   (void*)dir_count++,
						   &item_attr);
			}
			i++;
		}
	}
	globfree(&gb);
}