Esempio n. 1
0
void GetA::init(int x1, int y1, int x2, char *field, unsigned length,
					 Font *fontPtr, char align, char detectEsc, char hide)
{
	x = x1;
	y = y1;
	x_limit = x2;

	input_field = field;
	field_len = length;
	font_ptr = fontPtr;
	align_flag = align;
	enable_flag = 1;
	esc_key_flag = detectEsc;
	mouse_drag_flag = 0;
	back_ground_bitmap = NULL;
	disp_field = input_field;

	if( hide )
	{
		unsigned len = strlen(input_field);
		err_when(len >= field_len);
		hide_flag = 1;
		hide_field = mem_add(field_len+1);
		memset(hide_field, HIDE_CHAR, len);
		hide_field[len] = 0;
		disp_field = hide_field;
	}

	select_whole();
}
Esempio n. 2
0
void GetA::init( int x1, int y1, int x2, char *field, unsigned length, 
					 Font *fontPtr, char align, char detectEsc)
{
	x = x1;
	y = y1;
	x_limit = x2;

	input_field = field;
	field_len = length;
	font_ptr = fontPtr;
	align_flag = align;
	enable_flag = 1;
	esc_key_flag = detectEsc;
	mouse_drag_flag = 0;
	back_ground_bitmap = NULL;

	select_whole();
}
Esempio n. 3
0
// return 1 for selected
int GetA::detect_click()
{
	if( !enable_flag )
		return 0;

	if( !mouse_drag_flag )
	{
		int clickCount = mouse.any_click(x-font_ptr->max_font_width, y, x_limit, y+height()-1);
		if( clickCount == 1)
		{
			// set cursor_pos
			// scan from the last character, until the clicked x is
			// less than the character x
			for( cursor_pos = strlen(input_field); 
				cursor_pos > 0 && mouse.click_x() < cursor_x(cursor_pos);
				--cursor_pos );
			err_when( cursor_pos < 0 || cursor_pos > strlen(input_field));
			clear_select();
			mouse_drag_flag = 1;
			return 1;
		}
		else if( clickCount > 1 )
		{
			select_whole();
			return 1;
		}
	}
	else
	{
		if( !mouse.left_press )
		{
			mouse_drag_flag = 0;
		}
		for( cursor_pos = strlen(input_field); 
			cursor_pos > 0 && mouse.cur_x < cursor_x(cursor_pos);
			--cursor_pos );
		err_when( cursor_pos < 0 || cursor_pos > strlen(input_field));
		return 1;
	}
	return 0;
}