Changeset 806d761 in mainline for uspace/app
- Timestamp:
- 2024-02-07T23:44:59Z (20 months ago)
- Branches:
- master
- Children:
- 242e3c3
- Parents:
- 74cb6610
- Location:
- uspace/app
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/taskbar-cfg/smeedit.c
r74cb6610 r806d761 1 1 /* 2 * Copyright (c) 202 3Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 36 36 #include <stdio.h> 37 37 #include <stdlib.h> 38 #include <ui/checkbox.h> 38 39 #include <ui/fixed.h> 39 40 #include <ui/resource.h> … … 94 95 const char *cmd; 95 96 const char *caption; 97 bool terminal; 96 98 errno_t rc; 97 99 … … 101 103 cmd = smenu_entry_get_cmd(smentry->entry); 102 104 caption = smenu_entry_get_caption(smentry->entry); 105 terminal = smenu_entry_get_terminal(smentry->entry); 103 106 } else { 104 107 cmd = ""; 105 108 caption = ""; 109 terminal = false; 106 110 } 107 111 … … 122 126 params.rect.p0.y = 0; 123 127 params.rect.p1.x = 50; 124 params.rect.p1.y = 1 2;128 params.rect.p1.y = 13; 125 129 } else { 126 130 params.rect.p0.x = 0; 127 131 params.rect.p0.y = 0; 128 132 params.rect.p1.x = 370; 129 params.rect.p1.y = 2 00;133 params.rect.p1.y = 230; 130 134 } 131 135 … … 255 259 } 256 260 261 /* Start in terminal checkbox */ 262 263 rc = ui_checkbox_create(res, "Start in terminal", &smee->cbterminal); 264 if (rc != EOK) 265 goto error; 266 267 /* FIXME: Auto layout */ 268 if (ui_is_textmode(ui)) { 269 rect.p0.x = 3; 270 rect.p0.y = 8; 271 rect.p1.x = 6; 272 rect.p1.y = 9; 273 } else { 274 rect.p0.x = 10; 275 rect.p0.y = 155; 276 rect.p1.x = 360; 277 rect.p1.y = 170; 278 } 279 280 ui_checkbox_set_rect(smee->cbterminal, &rect); 281 ui_checkbox_set_checked(smee->cbterminal, terminal); 282 283 rc = ui_fixed_add(smee->fixed, ui_checkbox_ctl(smee->cbterminal)); 284 if (rc != EOK) { 285 printf("Error adding control to layout.\n"); 286 goto error; 287 } 288 257 289 /* OK button */ 258 290 … … 264 296 if (ui_is_textmode(ui)) { 265 297 rect.p0.x = 23; 266 rect.p0.y = 9;298 rect.p0.y = 10; 267 299 rect.p1.x = 35; 268 rect.p1.y = 1 0;300 rect.p1.y = 11; 269 301 } else { 270 302 rect.p0.x = 190; 271 rect.p0.y = 1 55;303 rect.p0.y = 190; 272 304 rect.p1.x = 270; 273 rect.p1.y = 180;305 rect.p1.y = 215; 274 306 } 275 307 … … 293 325 if (ui_is_textmode(ui)) { 294 326 rect.p0.x = 36; 295 rect.p0.y = 9;327 rect.p0.y = 10; 296 328 rect.p1.x = 48; 297 rect.p1.y = 1 0;329 rect.p1.y = 11; 298 330 } else { 299 331 rect.p0.x = 280; 300 rect.p0.y = 1 55;332 rect.p0.y = 190; 301 333 rect.p1.x = 360; 302 rect.p1.y = 180;334 rect.p1.y = 215; 303 335 } 304 336 … … 349 381 const char *cmd; 350 382 const char *caption; 383 bool terminal; 351 384 errno_t rc; 352 385 … … 356 389 cmd = ui_entry_get_text(smee->ecmd); 357 390 caption = ui_entry_get_text(smee->ecaption); 391 terminal = ui_checkbox_get_checked(smee->cbterminal); 358 392 359 393 if (smee->smentry == NULL) { 360 394 /* Create new entry */ 361 395 rc = smenu_entry_create(smee->startmenu->tbarcfg->tbarcfg, 362 caption, cmd, &entry);396 caption, cmd, terminal, &entry); 363 397 if (rc != EOK) 364 398 return; … … 379 413 return; 380 414 415 smenu_entry_set_terminal(smee->smentry->entry, terminal); 416 if (rc != EOK) 417 return; 418 381 419 (void)smenu_entry_save(smee->smentry->entry); 382 420 startmenu_entry_update(smee->smentry); -
uspace/app/taskbar-cfg/types/smeedit.h
r74cb6610 r806d761 1 1 /* 2 * Copyright (c) 202 3Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 37 37 #define TYPES_SMEEDIT_H 38 38 39 #include <ui/checkbox.h> 39 40 #include <ui/fixed.h> 40 41 #include <ui/label.h> … … 61 62 /** Command entry */ 62 63 ui_entry_t *ecmd; 63 /** OK buttion */ 64 /** Start in terminal checkbox */ 65 ui_checkbox_t *cbterminal; 66 /** OK button */ 64 67 ui_pbutton_t *bok; 65 68 /** Cancel button */ -
uspace/app/taskbar/taskbar.sif
r74cb6610 r806d761 1 [sif](){[entries](){[entry]([caption]=[~N~avigator][cmd]=[/app/ terminal -c /app/nav]){}[entry]([caption]=[Text ~E~ditor][cmd]=[/app/terminal -c /app/edit]){}[entry]([caption]=[~T~erminal][cmd]=[/app/terminal]){}[entry]([caption]=[~C~alculator][cmd]=[/app/calculator]){}[entry]([caption]=[~U~I Demo][cmd]=[/app/uidemo]){}[entry]([caption]=[~G~FX Demo][cmd]=[/app/gfxdemo ui]){}}}1 [sif](){[entries](){[entry]([caption]=[~N~avigator][cmd]=[/app/nav][terminal]=[y]){}[entry]([caption]=[Text ~E~ditor][cmd]=[/app/edit][terminal]=[y]){}[entry]([caption]=[~T~erminal][cmd]=[/app/terminal][terminal]=[n]){}[entry]([caption]=[~C~alculator][cmd]=[/app/calculator][terminal]=[n]){}[entry]([caption]=[~U~I Demo][cmd]=[/app/uidemo][terminal]=[n]){}[entry]([caption]=[~G~FX Demo][cmd]=[/app/gfxdemo ui][terminal]=[n]){}}} -
uspace/app/taskbar/tbsmenu.c
r74cb6610 r806d761 1 1 /* 2 * Copyright (c) 202 3Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 131 131 const char *caption; 132 132 const char *cmd; 133 bool terminal; 133 134 errno_t rc; 134 135 … … 141 142 caption = smenu_entry_get_caption(sme); 142 143 cmd = smenu_entry_get_cmd(sme); 143 144 rc = tbsmenu_add(tbsmenu, caption, cmd, &tentry); 144 terminal = smenu_entry_get_terminal(sme); 145 146 rc = tbsmenu_add(tbsmenu, caption, cmd, terminal, &tentry); 145 147 if (rc != EOK) 146 148 goto error; … … 226 228 * @param caption Caption 227 229 * @param cmd Command to run 230 * @param terminal Start in terminal 228 231 * @param entry Start menu entry 229 232 * @return @c EOK on success or an error code 230 233 */ 231 234 errno_t tbsmenu_add(tbsmenu_t *tbsmenu, const char *caption, 232 const char *cmd, tbsmenu_entry_t **rentry)235 const char *cmd, bool terminal, tbsmenu_entry_t **rentry) 233 236 { 234 237 errno_t rc; … … 250 253 goto error; 251 254 } 255 256 entry->terminal = terminal; 252 257 253 258 rc = ui_menu_entry_create(tbsmenu->smenu, caption, "", &entry->mentry); … … 438 443 } 439 444 445 cmd->argv[cnt] = NULL; 446 440 447 return EOK; 441 448 } … … 465 472 int retval; 466 473 bool suspended; 474 int i; 475 int cnt; 476 char **cp; 477 const char **targv = NULL; 467 478 errno_t rc; 468 479 ui_t *ui; … … 482 493 suspended = true; 483 494 484 rc = task_spawnv(&id, &wait, cmd.argv[0], (const char *const *) 485 cmd.argv); 486 if (rc != EOK) 487 goto error; 495 /* Don't start in terminal if not running in a window */ 496 if (entry->terminal && !ui_is_fullscreen(ui)) { 497 cnt = 0; 498 cp = cmd.argv; 499 while (*cp != NULL) { 500 ++cnt; 501 ++cp; 502 } 503 504 targv = calloc(cnt + 3, sizeof(char **)); 505 if (targv == NULL) 506 goto error; 507 508 targv[0] = "/app/terminal"; 509 targv[1] = "-c"; 510 511 for (i = 0; i <= cnt; i++) { 512 if (cmd.argv[i] != NULL) 513 printf(" - '%s'\n", cmd.argv[i]); 514 else 515 printf(" - NULL\n"); 516 517 targv[2 + i] = cmd.argv[i]; 518 } 519 520 rc = task_spawnv(&id, &wait, targv[0], targv); 521 if (rc != EOK) 522 goto error; 523 524 free(targv); 525 targv = NULL; 526 } else { 527 rc = task_spawnv(&id, &wait, cmd.argv[0], (const char *const *) 528 cmd.argv); 529 if (rc != EOK) 530 goto error; 531 } 488 532 489 533 rc = task_wait(&wait, &texit, &retval); … … 499 543 return EOK; 500 544 error: 545 if (targv != NULL) 546 free(targv); 501 547 tbsmenu_cmd_fini(&cmd); 502 548 if (suspended) -
uspace/app/taskbar/tbsmenu.h
r74cb6610 r806d761 1 1 /* 2 * Copyright (c) 202 3Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 53 53 extern bool tbsmenu_is_open(tbsmenu_t *); 54 54 extern void tbsmenu_destroy(tbsmenu_t *); 55 extern errno_t tbsmenu_add(tbsmenu_t *, const char *, const char *, 55 extern errno_t tbsmenu_add(tbsmenu_t *, const char *, const char *, bool, 56 56 tbsmenu_entry_t **); 57 57 extern void tbsmenu_remove(tbsmenu_t *, tbsmenu_entry_t *, bool); -
uspace/app/taskbar/types/tbsmenu.h
r74cb6610 r806d761 1 1 /* 2 * Copyright (c) 202 3Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 46 46 #include <ui/window.h> 47 47 48 /** Taskbar window listentry */48 /** Taskbar start menu entry */ 49 49 typedef struct { 50 50 /** Containing start menu */ … … 58 58 /** Command to run */ 59 59 char *cmd; 60 /** Start in terminal */ 61 bool terminal; 60 62 } tbsmenu_entry_t; 61 63
Note:
See TracChangeset
for help on using the changeset viewer.