Commit 1f2d57d71951aae08dd10adb70e49ddff5ecd846

Authored by perry.werneck@gmail.com
1 parent 498637d6

Implementando seleção pelo teclado

Showing 1 changed file with 46 additions and 2 deletions   Show diff stats
@@ -202,14 +202,14 @@ LIB3270_EXPORT void lib3270_select_to(H3270 *session, int baddr) @@ -202,14 +202,14 @@ LIB3270_EXPORT void lib3270_select_to(H3270 *session, int baddr)
202 if(!lib3270_connected(session)) 202 if(!lib3270_connected(session))
203 return; 203 return;
204 204
205 - lib3270_set_cursor_address(session,session->select.end = baddr);  
206 -  
207 if(!session->selected) 205 if(!session->selected)
208 { 206 {
209 session->select.begin = session->cursor_addr; 207 session->select.begin = session->cursor_addr;
210 set_selected(session); 208 set_selected(session);
211 } 209 }
212 210
  211 + lib3270_set_cursor_address(session,session->select.end = baddr);
  212 +
213 update_selection(session); 213 update_selection(session);
214 214
215 } 215 }
@@ -391,3 +391,47 @@ LIB3270_EXPORT int lib3270_move_selection(H3270 *hSession, LIB3270_DIRECTION dir @@ -391,3 +391,47 @@ LIB3270_EXPORT int lib3270_move_selection(H3270 *hSession, LIB3270_DIRECTION dir
391 391
392 return 0; 392 return 0;
393 } 393 }
  394 +
  395 +LIB3270_EXPORT int lib3270_move_cursor(H3270 *hSession, LIB3270_DIRECTION dir, unsigned char sel)
  396 +{
  397 + int cursor_addr = hSession->cursor_addr;
  398 +
  399 + if(!lib3270_connected(hSession))
  400 + return -1;
  401 +
  402 + switch(dir)
  403 + {
  404 + case LIB3270_DIR_UP:
  405 + if(cursor_addr <= hSession->cols)
  406 + return EINVAL;
  407 + cursor_addr -= hSession->cols;
  408 + break;
  409 +
  410 + case LIB3270_DIR_DOWN:
  411 + if(cursor_addr >= (hSession->cols * (hSession->rows-1)))
  412 + return EINVAL;
  413 + cursor_addr += hSession->cols;
  414 + break;
  415 +
  416 + case LIB3270_DIR_LEFT:
  417 + if( (cursor_addr % hSession->cols) < 1)
  418 + return EINVAL;
  419 + cursor_addr--;
  420 + break;
  421 +
  422 + case LIB3270_DIR_RIGHT:
  423 + if( (cursor_addr % hSession->cols) >= (hSession->cols-1))
  424 + return EINVAL;
  425 + cursor_addr++;
  426 + break;
  427 +
  428 + default:
  429 + return -1;
  430 + }
  431 +
  432 + if(sel)
  433 + lib3270_select_to(hSession,cursor_addr);
  434 + else
  435 + lib3270_set_cursor_address(hSession,cursor_addr);
  436 +
  437 +}