Beispiel #1
0
void print_input_buf( char * str, int input_off )
{
	save_position();
	move_xy( 20, 10 );
	printf("                                   \n");
	move_xy( 20, 10 );
	printf("%s len = %d\n", str, strlen(str) );
	printf( "input_off = %d\n", input_off );
	fflush( NULL );
	restore_position();
}
Beispiel #2
0
int debug( char * fmt, char * str )
{
	save_position();
	
	move_xy( 65, 15 );
	printf("            \n");
	move_xy( 65, 15 );
	printf( fmt, str );
	
	restore_position();
}
Beispiel #3
0
int show_left_words( char * prefix, char left_words[][MAX_WORDS_LEN] )
{
	save_position();

	bar( 2, 6, winx / 3 - 3, left_words_num, ' ' );
	int i;
	for( i=0; i<have_search_words_num; i++ ) {
		move_xy( 3, 6+i );
		left_words[i][winx/3-5-strlen(prefix)] = '\0';
		printf("%s%s", prefix, left_words[i] );
	}
	fflush( NULL );
	restore_position();
}
void show_english(char *english)
{
	save_position();

	int i,j,k;
	
	for(i = 0;i < word_count;i++)
	{
		move_xy(6 + i,2);
		for(j = 0;english[j] != 0 && j < win_y / 3 - 3;j++)
			putchar(english[j]);
		for(k = 0;word[i][k] != 0 && j < win_y / 3 - 3;k++,j++)
			putchar(word[i][k]);
	}

	fflush(stdout);

	restore_position();
}	
Beispiel #5
0
bool settings_parser_c::parse(int argc, char *argv[]) {
    arg_c = argc;
    arg_v = argv;
    position = 1;
    for (int i = 0; i < parsers.size(); ++i) {
        parsers[i]->invoke_initialization(*this);
    }

    while (current_position() < argc && !stopped) {
        for (auto parser = parsers.begin(); parser != parsers.end(); parser++) {
            fetch_current_position();
            if ((*parser)->parse(*this)) {
                save_current_position((*parser));
            }
            restore_position();
        }
        if (saved_count() == 1) {
            try {
                pop_saved_parser()->invoke(*this);
            } catch (std::string error) {
                std::cerr << "Invalid parameter value: " << arg_v[position - 1] << " with error: " << error << std::endl;
                return false;
            }
        } else if (saved_count() > 1) {
            //ambiguous arguments
            //throw
            std::cerr << "ambiguous arguments" << std::endl;
        } else {
            if (is_program()) {
                parse_program();
                //parse_program//until separator detected
            } else {
                //unknown_argument
                std::cerr << "unknown argument " << arg_v[position] << std::endl;
                //throw "";
                return false;
            }
        }
    }
    return true;
}
Beispiel #6
0
int show_explain( char * words, char * explain )
{
	save_position();

	bar( winx/3 + 2, 7, winx/3*2 -2, winy - 8, ' ' );
	move_xy( winx / 3 + 2, 7 );
	if( explain == NULL ) {
		printf("sorry, 没有找到这个单词.\n" );
	} else {
		printf("------ <<善哉电子辞典>> -------");
		move_xy( winx / 3 + 2, 8 );
		printf("单词: ");
		move_xy( winx / 3 + 2, 9 );
		printf("   %s", words ); 
		move_xy( winx / 3 + 2, 10 );
		printf("意义: ");
		move_xy( winx / 3 + 2, 11 );
		printf( "  %s\n", explain );
	}
	restore_position();
}
void show_chinese(char *chinese,char *english)
{
	int i,l;
	if(chinese != NULL && english != NULL)
	{
		save_position();

		move_xy(7,win_y / 3 + 1);
		puts("单词:");
		
		move_xy(8,win_y / 3 + 1);
		printf("     %s\n",english);	
		
		move_xy(10,win_y / 3 + 1);
		puts("意义:");

		move_xy(11,win_y / 3 + 1);
		printf("     %s\n",chinese);

		restore_position();
	}
}