Ejemplo n.º 1
0
int main(int argc, char *argv[])
{
	//initialize global variable
	index1=0; // index of movie list
	index2=0; // index of smi list
	index_inside_movie=TRUE;

	// initialize varables
	int ch;
	WIN win;	
	WIN win2;
	WINDOW *popup_win;
	
	// init ncurses window
	initscr();
	cbreak();
	//raw();
	keypad(stdscr, TRUE);
	noecho();
	curs_set(0);
	if(has_colors() == FALSE) { endwin();
		printf("Your terminal does not support color\n");
		exit(1);
	}
	start_color();
	init_pair(1, COLOR_BLACK, COLOR_WHITE);
	init_pair(2, COLOR_BLACK, COLOR_YELLOW);

	// print headline
	int start_line_number = print_headline();

	// load local files.
	loadFiles(".");

	// sorting
	std::sort(vMovieFiles.begin(), vMovieFiles.end(), sortOp);
	std::sort(vSmiFiles.begin(), vSmiFiles.end(), sortOp);

	// listFiles return 0 when no error
	if(listFiles() == 0)
	{

	init_win_params(&win, start_line_number+2, 0, 0, vMovieFiles.size() + 1);
	init_win_params(&win2, start_line_number+3+vMovieFiles.size()+3, 0, 0, vSmiFiles.size() + 1);
	create_box(&win, TRUE,1);
	create_box2(&win2, TRUE,1);

	while( (ch = getch()) != 'q')
	{
		switch(ch)
		{

			case 'j':
			case KEY_DOWN:
				{
					create_box(&win, FALSE,1);
					create_box(&win2, FALSE,1);

					if(index_inside_movie == TRUE) {
						if(index1 == vMovieFiles.size()-1) {
							index1 = 0;
						} else
						{
							index1++;
						}
					} else {
						if(index2 == vSmiFiles.size()-1) {
							index2 =0;
						} else
						{
							index2++;
						}
					}
					create_box(&win, TRUE,1);
					create_box2(&win2, TRUE,1);
					break;
				}
				
			case 'k':
			case KEY_UP:
				{
					create_box(&win, FALSE,1);
					create_box(&win2, FALSE,1);

					if(index_inside_movie == TRUE) {
						if(index1 == 0) {
							index1 = vMovieFiles.size()-1;
						} else
						{
							index1--;
						}
					} else {
						if(index2 == 0) {
							index2 = vSmiFiles.size()-1;
						} else
						{
							index2--;
						}
					}
					create_box(&win, TRUE,1);
					create_box2(&win2, TRUE,1);
					break;
				}

			case '\t':
			case KEY_BTAB:
				{
					index_inside_movie = !index_inside_movie; 
					create_box(&win, TRUE,1);
					create_box2(&win2, TRUE,1);
					break;
				}
			case 'd':
				{
					std::string popup_msg = "delete?(d/esc)";
					popup_win = create_win(3, popup_msg.length()+3, start_line_number+5,(int)COLS/2-popup_msg.length(),popup_msg);
					wrefresh(popup_win);
					
					int ch2;
					while( (ch2=getch()) != 'e')
					{
						switch(ch2)
						{
							case 'd':
							{
								if(index_inside_movie)
								{
									std::vector<std::string>::iterator iter1=vMovieFiles.begin();
								if(vMovieFiles.size()!=1){
									if(index1 == vMovieFiles.size()-1){
										vMovieFiles.erase(iter1 + index1);
										index1--;
									} else
										vMovieFiles.erase(iter1 + index1);
								}
								start_line_number = print_headline();
								init_win_params(&win, start_line_number+2, 0, 0, vMovieFiles.size() + 1);
								init_win_params(&win2, start_line_number+3+vMovieFiles.size()+3, 0, 0, vSmiFiles.size() + 1);

								} else
								{
									std::vector<std::string>::iterator iter2=vSmiFiles.begin();
								if(vSmiFiles.size()!=1){
									if(index2 == vSmiFiles.size()-1){
										vSmiFiles.erase(iter2 + index2);
										index2--;
									} else
										vSmiFiles.erase(iter2 + index2);
								}
								start_line_number = print_headline();
								init_win_params(&win, start_line_number+2, 0, 0, vMovieFiles.size() + 1);
								init_win_params(&win2, start_line_number+3+vMovieFiles.size()+3, 0, 0, vSmiFiles.size() + 1);

								}
								break;
							}
							case 'e':
							{
								delwin(popup_win);
								break;
							}
						} // switch
						if(ch2 == 'd')
							break;
					} //while

					clear();
					int start_line_number = print_headline();
					create_box(&win, TRUE,1);
					create_box2(&win2, TRUE,1);

					break;
				} // case d

			case ' ': //case space for selection to move
				{
					
					create_box(&win, TRUE,2);
					create_box2(&win2, TRUE,2);
					wrefresh(stdscr);

					std::string popup_msg = "down/up/esc?(j/k/e)";
					popup_win = create_win(3, popup_msg.length()+3, start_line_number+5,(int)COLS/2-popup_msg.length()/2,popup_msg);
					wrefresh(popup_win);
					
					int ch3;
					while( (ch3=getch()) != 'e')
					{
						switch(ch3)
						{
							case 'j':
							case KEY_DOWN:
							{
								swapVector(true);
								break;
							}
							case 'k':
							case KEY_UP:
							{
								swapVector(false);
								break;
							}
							case 'e':
							{
								delwin(popup_win);
								break;
							}
						} // end of switch	
						
					if(ch3 == 'j' || ch3 == 'k' || ch3 == KEY_DOWN || ch3 == KEY_UP)
						break;
					} // while

					clear();
					int start_line_number = print_headline();
					create_box(&win, TRUE,1);
					create_box2(&win2, TRUE,1);

					break; //end of case space
				} // case space

			case 'y':
				{

					// if counts are mismatched
					if(vMovieFiles.size() != vSmiFiles.size())
					{
						std::string popup_msg = "Mismatch Error! (e)";
						popup_win = create_win(3, popup_msg.length()+3, start_line_number+5,(int)COLS/2-popup_msg.length()/2,popup_msg);
						wrefresh(popup_win);

						int ch5;
						while ( (ch5=getch()) != 'e')
						{
							switch(ch5)
							{
								case 'e':
								{
									delwin(popup_win);
									break;
								}
							}
							if(ch5 == 'e')
								break;
						}

						clear();
						int start_line_number = print_headline();
						create_box(&win, TRUE,1);
						create_box2(&win2, TRUE,1);
						break;
					} // end of if statement = counts are mismatched

					std::string popup_msg = "confirm?(m)ovies (s)ubtitle(m/s/e)";
					popup_win = create_win(3, popup_msg.length()+3, start_line_number+5,(int)COLS/2-popup_msg.length()/2,popup_msg);
					wrefresh(popup_win);
					
					int ch4;
					while( (ch4=getch()) != 'e')
					{
						switch(ch4)
						{
							case 'm':
							{
								int err = renameSmiFiles();
								std::cout << "err: " << err << std::endl;
								break;
							}
							case 's':
							{
								int err = renameAviFiles();
								std::cout << "err: " << err << std::endl;
								break;
							}
							case 'e':
							{
								delwin(popup_win);
								break;
							}
						} // end of switch	
					if(ch4 == 'm' || ch4 == 's')
						break;
					} // while

					// rename it then files reloading
					// load local files.
					loadFiles(".");

					// sorting
					std::sort(vMovieFiles.begin(), vMovieFiles.end(), sortOp);
					std::sort(vSmiFiles.begin(), vSmiFiles.end(), sortOp);

					clear();
					init_win_params(&win, start_line_number+2, 0, 0, vMovieFiles.size() + 1);
					init_win_params(&win2, start_line_number+3+vMovieFiles.size()+3, 0, 0, vSmiFiles.size() + 1);
					int start_line_number = print_headline();
					create_box(&win, TRUE,1);
					create_box2(&win2, TRUE,1);

					break; // end of case y
				} // case y
		} // switch
	} // while
		
	}
	else
	{
		endwin();
		std::cout << "You don't have No relative files... Bye..." << std::endl;	
		return 1;
	}
	
	// delete ncurses window
	endwin();

	return 0;
} //end of main
Ejemplo n.º 2
0
/** 
 * Get list of supported cameras, walk through it and create some output.
 */
int
main (int argc, char *argv[])
{
	CameraAbilitiesList *al;
	int i;
	int count;
	const char *fmt_str = NULL;

	parse_command_line (argc, argv);

	if (do_debug) {
		gettimeofday (&glob_tv_zero, NULL);
		CHECK (gp_log_add_func (GP_LOG_ALL, debug_func, NULL));
		
		gp_log (GP_LOG_DEBUG, "main", "test-camera-list start");
	}


	CHECK (gp_abilities_list_new (&al));
	CHECK (gp_abilities_list_load (al, NULL));

	count = gp_abilities_list_count (al);
	if (count < 0) {
		printf("gp_abilities_list_count error: %d\n", count);
		return(1);
	} else if (count == 0) {
		/* Copied from gphoto2-abilities-list.c gp_abilities_list_load() */
		const char *camlib_env = getenv(CAMLIBDIR_ENV);
		const char *camlibs = (camlib_env != NULL)?camlib_env:CAMLIBS;

		printf("no camera drivers (camlibs) found in camlib dir:\n"
		       "    CAMLIBS='%s', default='%s', used=%s\n",
		       camlib_env?camlib_env:"(null)", CAMLIBS,
		       (camlib_env!=NULL)?"CAMLIBS":"default");
		return(1);
	}


	/* Set output format for file body, 
	 * and print opening part of output file. */
	switch (format) {
	case FMT_CSV:
		fmt_str = "%d,%s,%s,%s\n";
		break;
	case FMT_FLAT_TEXT:
		fmt_str = "%3d|%-20s|%-20s|%s\n";
		break;
	case FMT_HEADED_TEXT:
		fmt_str = "%3d|%-20s|%-20s|%s\n";
		break;
	case FMT_XML:
		fmt_str = "  <camera name=\"%4$s\" entry_number=\"%1$d\">\n"
			"    <camlib-name value=\"%2$s\"/>\n"
			"    <driver-name value=\"%3$s\"/>\n"
			"  </camera>\n";
		printf("<?xml version=\"%s\" encoding=\"%s\"?>\n"
		       "<camera-list camera-count=\"%d\">\n", 
		       "1.0", "us-ascii", count);
		break;
	case FMT_FLAT_CAMLIBS:
		fmt_str = "%2$-28s  %3$s\n";
		break;
	case FMT_COUNT:
		printf("%d\n", count);
		return(0);
		break;
	}

	/* For each camera in the list, add a text snippet to the 
	 * output file. */
	for (i = 0; i < count; i++) {
		CameraAbilities abilities;
		const char *camlib_basename;
		CHECK (gp_abilities_list_get_abilities (al, i, &abilities));
		camlib_basename = path_basename(abilities.library);

		switch (format) {
		case FMT_HEADED_TEXT:
			if ( ((i%25)== 0) && 
			     ( (i==0) || ((count-i) > 5) ) ) {
				print_hline();
				print_headline();
				print_hline();
			}
			break;
		case FMT_FLAT_CAMLIBS:
			break;
		case FMT_XML:
			break;
		case FMT_CSV:
			break;
		case FMT_FLAT_TEXT:
			break;
		case FMT_COUNT:
			break;
		}

		printf(fmt_str,
		       i+1, 
		       camlib_basename,
		       abilities.id,
		       abilities.model);
	}

	/* Print closing part of output file. */
	switch (format) {
	case FMT_HEADED_TEXT:
		print_hline();
		print_headline();
		print_hline();
		break;
	case FMT_FLAT_CAMLIBS:
		break;
	case FMT_XML:
		printf("</camera-list>\n");
		break;
	case FMT_CSV:
		break;
	case FMT_FLAT_TEXT:
		break;
	case FMT_COUNT:
		break;
	}
	
	CHECK (gp_abilities_list_free (al));
	return (0);
}