Changeset b336bfd8 in mainline for uspace/app/nav/nav.c
- Timestamp:
- 2025-02-06T20:42:14Z (6 days ago)
- Branches:
- master
- Children:
- a7a16a2f
- Parents:
- accdf882
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/nav/nav.c
raccdf882 rb336bfd8 70 70 71 71 static void navigator_panel_activate_req(void *, panel_t *); 72 static void navigator_panel_file_open(void *, panel_t *, const char *); 72 73 73 74 static panel_cb_t navigator_panel_cb = { 74 .activate_req = navigator_panel_activate_req 75 .activate_req = navigator_panel_activate_req, 76 .file_open = navigator_panel_file_open 75 77 }; 76 78 … … 328 330 /** Open file in text editor. 329 331 * 330 * @param panel Panel332 * @param navigator Navigator 331 333 * @param fname File name 332 334 * … … 367 369 } 368 370 371 /** Execute file entry. 372 * 373 * @param navigator Navigator 374 * @param fname File name 375 * 376 * @return EOK on success or an error code 377 */ 378 static errno_t navigator_exec_file(navigator_t *navigator, const char *fname) 379 { 380 task_id_t id; 381 task_wait_t wait; 382 task_exit_t texit; 383 int retval; 384 errno_t rc; 385 386 /* Free up and clean console for the child task. */ 387 rc = ui_suspend(navigator->ui); 388 if (rc != EOK) 389 return rc; 390 391 rc = task_spawnl(&id, &wait, fname, fname, NULL); 392 if (rc != EOK) 393 goto error; 394 395 rc = task_wait(&wait, &texit, &retval); 396 if ((rc != EOK) || (texit != TASK_EXIT_NORMAL)) 397 goto error; 398 399 /* Resume UI operation */ 400 rc = ui_resume(navigator->ui); 401 if (rc != EOK) 402 return rc; 403 404 (void) ui_paint(navigator->ui); 405 return EOK; 406 error: 407 (void) ui_resume(navigator->ui); 408 (void) ui_paint(navigator->ui); 409 return rc; 410 } 411 412 /** Open panel file entry. 413 * 414 * Perform Open action on a file entry (based on extension). 415 * 416 * @param navigator Navigator 417 * @param fname File name 418 * 419 * @return EOK on success or an error code 420 */ 421 static errno_t navigator_open_file(navigator_t *navigator, const char *fname) 422 { 423 const char *ext; 424 425 ext = str_rchr(fname, '.'); 426 if (ext != NULL) { 427 if (str_casecmp(ext, ".txt") == 0) 428 return navigator_edit_file(navigator, fname); 429 } 430 431 return navigator_exec_file(navigator, fname); 432 } 433 369 434 /** File / Edit menu entry selected */ 370 435 static void navigator_file_edit(void *arg) … … 403 468 } 404 469 470 /** Panel callback requesting file open. 471 * 472 * @param arg Argument (navigator_t *) 473 * @param panel Panel 474 * @param fname File name 475 */ 476 void navigator_panel_file_open(void *arg, panel_t *panel, const char *fname) 477 { 478 navigator_t *navigator = (navigator_t *)arg; 479 480 (void)panel; 481 navigator_open_file(navigator, fname); 482 } 483 405 484 /** @} 406 485 */
Note:
See TracChangeset
for help on using the changeset viewer.