Changeset 806d761 in mainline
- Timestamp:
- 2024-02-07T23:44:59Z (11 months ago)
- Branches:
- master
- Children:
- 242e3c3
- Parents:
- 74cb6610
- Location:
- uspace
- Files:
-
- 13 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 -
uspace/lib/tbarcfg/include/tbarcfg/tbarcfg.h
r74cb6610 r806d761 1 1 /* 2 * Copyright (c) 202 3Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 39 39 #include <errno.h> 40 40 #include <sif.h> 41 #include <stdbool.h> 41 42 #include <types/tbarcfg/tbarcfg.h> 42 43 … … 48 49 extern const char *smenu_entry_get_caption(smenu_entry_t *); 49 50 extern const char *smenu_entry_get_cmd(smenu_entry_t *); 51 extern bool smenu_entry_get_terminal(smenu_entry_t *); 50 52 extern errno_t smenu_entry_set_caption(smenu_entry_t *, const char *); 51 53 extern errno_t smenu_entry_set_cmd(smenu_entry_t *, const char *); 54 extern void smenu_entry_set_terminal(smenu_entry_t *, bool); 52 55 extern errno_t smenu_entry_save(smenu_entry_t *); 53 56 extern errno_t smenu_entry_create(tbarcfg_t *, const char *, const char *, 54 smenu_entry_t **);57 bool, smenu_entry_t **); 55 58 extern errno_t smenu_entry_destroy(smenu_entry_t *); 56 59 -
uspace/lib/tbarcfg/private/tbarcfg.h
r74cb6610 r806d761 1 1 /* 2 * Copyright (c) 202 3Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 40 40 #include <adt/list.h> 41 41 #include <sif.h> 42 #include <stdbool.h> 42 43 #include <types/tbarcfg/tbarcfg.h> 43 44 … … 64 65 /** Command to run */ 65 66 char *cmd; 67 /** Start in terminal */ 68 bool terminal; 66 69 }; 67 70 68 71 extern errno_t smenu_entry_new(tbarcfg_t *, sif_node_t *, const char *, 69 const char *, smenu_entry_t **);72 const char *, bool, smenu_entry_t **); 70 73 extern void smenu_entry_delete(smenu_entry_t *); 71 74 -
uspace/lib/tbarcfg/src/tbarcfg.c
r74cb6610 r806d761 1 1 /* 2 * Copyright (c) 202 3Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 101 101 * @return EOK on success or an error code 102 102 */ 103 #include <stdio.h> 103 104 errno_t tbarcfg_open(const char *repopath, tbarcfg_t **rtbcfg) 104 105 { … … 110 111 const char *caption; 111 112 const char *cmd; 113 const char *terminal = NULL; 112 114 errno_t rc; 113 115 … … 154 156 } 155 157 156 rc = smenu_entry_new(tbcfg, nentry, caption, cmd, NULL); 158 terminal = sif_node_get_attr(nentry, "terminal"); 159 if (terminal == NULL) 160 terminal = "n"; 161 162 printf("terminal=%s\n", terminal); 163 164 rc = smenu_entry_new(tbcfg, nentry, caption, cmd, 165 str_cmp(terminal, "y") == 0, NULL); 157 166 if (rc != EOK) 158 167 goto error; … … 233 242 /** Get start menu entry command. 234 243 * 235 * @param entr Start menu entry244 * @param entry Start menu entry 236 245 * @return Command to run 237 246 */ … … 239 248 { 240 249 return entry->cmd; 250 } 251 252 /** Get start menu start in terminal flag. 253 * 254 * @param entry Start menu entry 255 * @return Start in terminal flag 256 */ 257 bool smenu_entry_get_terminal(smenu_entry_t *entry) 258 { 259 return entry->terminal; 241 260 } 242 261 … … 285 304 } 286 305 306 /** Set start menu entry start in terminal flag. 307 * 308 * Note: To make the change visible to others and persistent, 309 * you must call @c smenu_entry_save() 310 * 311 * @param entry Start menu entry 312 * @param terminal Start in terminal flag 313 */ 314 void smenu_entry_set_terminal(smenu_entry_t *entry, bool terminal) 315 { 316 entry->terminal = terminal; 317 } 318 287 319 /** Save any changes to start menu entry. 288 320 * … … 303 335 304 336 rc = sif_node_set_attr(trans, entry->nentry, "caption", entry->caption); 337 if (rc != EOK) 338 goto error; 339 340 rc = sif_node_set_attr(trans, entry->nentry, "terminal", 341 entry->terminal ? "y" : "n"); 305 342 if (rc != EOK) 306 343 goto error; … … 325 362 * @param caption Caption 326 363 * @param cmd Command to run 364 * @param terminal Start in terminal 327 365 * @param rentry Place to store pointer to new entry or @c NULL 328 366 */ 329 367 errno_t smenu_entry_new(tbarcfg_t *smenu, sif_node_t *nentry, 330 const char *caption, const char *cmd, smenu_entry_t **rentry)368 const char *caption, const char *cmd, bool terminal, smenu_entry_t **rentry) 331 369 { 332 370 smenu_entry_t *entry; … … 352 390 goto error; 353 391 } 392 393 entry->terminal = terminal; 354 394 355 395 entry->smenu = smenu; … … 391 431 * @param caption Caption 392 432 * @param cmd Command to run 433 * @param terminal Start in terminal 393 434 * @param rentry Place to store pointer to new entry or @c NULL 394 435 */ 395 436 errno_t smenu_entry_create(tbarcfg_t *smenu, const char *caption, 396 const char *cmd, smenu_entry_t **rentry)437 const char *cmd, bool terminal, smenu_entry_t **rentry) 397 438 { 398 439 sif_node_t *nentry; … … 418 459 goto error; 419 460 420 rc = smenu_entry_new(smenu, nentry, caption, cmd, &entry); 461 rc = sif_node_set_attr(trans, nentry, "terminal", terminal ? "y" : "n"); 462 if (rc != EOK) 463 goto error; 464 465 rc = smenu_entry_new(smenu, nentry, caption, cmd, terminal ? "y" : "n", 466 &entry); 421 467 if (rc != EOK) 422 468 goto error; -
uspace/lib/tbarcfg/test/tbarcfg.c
r74cb6610 r806d761 1 1 /* 2 * Copyright (c) 202 3Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 76 76 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 77 77 78 rc = smenu_entry_create(tbcfg, "A", "a", &e1);78 rc = smenu_entry_create(tbcfg, "A", "a", false, &e1); 79 79 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 80 80 PCUT_ASSERT_NOT_NULL(e1); 81 81 82 rc = smenu_entry_create(tbcfg, "B", "b", &e2);82 rc = smenu_entry_create(tbcfg, "B", "b", false, &e2); 83 83 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 84 84 PCUT_ASSERT_NOT_NULL(e2); 85 85 86 86 /* Create entry without getting a pointer to it */ 87 rc = smenu_entry_create(tbcfg, "C", "c", NULL);87 rc = smenu_entry_create(tbcfg, "C", "c", false, NULL); 88 88 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 89 89 … … 102 102 103 103 /** Getting menu entry properties */ 104 PCUT_TEST(get_caption_cmd )104 PCUT_TEST(get_caption_cmd_term) 105 105 { 106 106 errno_t rc; … … 110 110 const char *caption; 111 111 const char *cmd; 112 113 p = tmpnam(fname); 114 PCUT_ASSERT_NOT_NULL(p); 115 116 rc = tbarcfg_create(fname, &tbcfg); 117 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 118 119 rc = smenu_entry_create(tbcfg, "A", "a", &e); 112 bool terminal; 113 114 p = tmpnam(fname); 115 PCUT_ASSERT_NOT_NULL(p); 116 117 rc = tbarcfg_create(fname, &tbcfg); 118 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 119 120 rc = smenu_entry_create(tbcfg, "A", "a", false, &e); 120 121 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 121 122 … … 124 125 cmd = smenu_entry_get_cmd(e); 125 126 PCUT_ASSERT_STR_EQUALS("a", cmd); 127 terminal = smenu_entry_get_terminal(e); 128 PCUT_ASSERT_FALSE(terminal); 126 129 127 130 tbarcfg_close(tbcfg); … … 130 133 131 134 /** Setting menu entry properties */ 132 PCUT_TEST(set_caption_cmd )135 PCUT_TEST(set_caption_cmd_term) 133 136 { 134 137 errno_t rc; … … 138 141 const char *caption; 139 142 const char *cmd; 140 141 p = tmpnam(fname); 142 PCUT_ASSERT_NOT_NULL(p); 143 144 rc = tbarcfg_create(fname, &tbcfg); 145 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 146 147 rc = smenu_entry_create(tbcfg, "A", "a", &e); 143 bool terminal; 144 145 p = tmpnam(fname); 146 PCUT_ASSERT_NOT_NULL(p); 147 148 rc = tbarcfg_create(fname, &tbcfg); 149 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 150 151 rc = smenu_entry_create(tbcfg, "A", "a", false, &e); 148 152 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 149 153 … … 152 156 cmd = smenu_entry_get_cmd(e); 153 157 PCUT_ASSERT_STR_EQUALS("a", cmd); 158 terminal = smenu_entry_get_terminal(e); 159 PCUT_ASSERT_FALSE(terminal); 154 160 155 161 /* Set properties */ … … 158 164 rc = smenu_entry_set_cmd(e, "b"); 159 165 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 166 smenu_entry_set_terminal(e, true); 160 167 161 168 rc = smenu_entry_save(e); … … 167 174 cmd = smenu_entry_get_cmd(e); 168 175 PCUT_ASSERT_STR_EQUALS("b", cmd); 176 terminal = smenu_entry_get_terminal(e); 177 PCUT_ASSERT_TRUE(terminal); 169 178 170 179 tbarcfg_close(tbcfg); … … 197 206 const char *caption; 198 207 const char *cmd; 199 200 p = tmpnam(fname); 201 PCUT_ASSERT_NOT_NULL(p); 202 203 rc = tbarcfg_create(fname, &tbcfg); 204 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 205 206 rc = smenu_entry_create(tbcfg, "A", "a", &e); 208 bool terminal; 209 210 p = tmpnam(fname); 211 PCUT_ASSERT_NOT_NULL(p); 212 213 rc = tbarcfg_create(fname, &tbcfg); 214 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 215 216 rc = smenu_entry_create(tbcfg, "A", "a", false, &e); 207 217 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 208 218 PCUT_ASSERT_NOT_NULL(e); … … 212 222 cmd = smenu_entry_get_cmd(e); 213 223 PCUT_ASSERT_STR_EQUALS("a", cmd); 224 terminal = smenu_entry_get_terminal(e); 225 PCUT_ASSERT_FALSE(terminal); 226 227 smenu_entry_destroy(e); 228 229 rc = smenu_entry_create(tbcfg, "B", "b", true, &e); 230 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 231 PCUT_ASSERT_NOT_NULL(e); 232 233 caption = smenu_entry_get_caption(e); 234 PCUT_ASSERT_STR_EQUALS("B", caption); 235 cmd = smenu_entry_get_cmd(e); 236 PCUT_ASSERT_STR_EQUALS("b", cmd); 237 terminal = smenu_entry_get_terminal(e); 238 PCUT_ASSERT_TRUE(terminal); 239 240 smenu_entry_destroy(e); 214 241 215 242 tbarcfg_close(tbcfg); … … 231 258 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 232 259 233 rc = smenu_entry_create(tbcfg, "A", "a", &e);260 rc = smenu_entry_create(tbcfg, "A", "a", false, &e); 234 261 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 235 262 -
uspace/lib/ui/include/ui/checkbox.h
r74cb6610 r806d761 1 1 /* 2 * Copyright (c) 202 0Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 52 52 extern void ui_checkbox_set_cb(ui_checkbox_t *, ui_checkbox_cb_t *, void *); 53 53 extern void ui_checkbox_set_rect(ui_checkbox_t *, gfx_rect_t *); 54 extern bool ui_checkbox_get_checked(ui_checkbox_t *); 55 extern void ui_checkbox_set_checked(ui_checkbox_t *, bool); 54 56 extern errno_t ui_checkbox_paint(ui_checkbox_t *); 55 57 extern void ui_checkbox_press(ui_checkbox_t *); -
uspace/lib/ui/src/checkbox.c
r74cb6610 r806d761 1 1 /* 2 * Copyright (c) 202 2Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 139 139 } 140 140 141 /** Set buttonrectangle.142 * 143 * @param checkbox Button144 * @param rect New buttonrectangle141 /** Set check box rectangle. 142 * 143 * @param checkbox Check box 144 * @param rect New check box rectangle 145 145 */ 146 146 void ui_checkbox_set_rect(ui_checkbox_t *checkbox, gfx_rect_t *rect) 147 147 { 148 148 checkbox->rect = *rect; 149 } 150 151 /** Return if check box is checked. 152 * 153 * @param checkbox Check box 154 * @return @c true iff check box is checked 155 */ 156 bool ui_checkbox_get_checked(ui_checkbox_t *checkbox) 157 { 158 return checkbox->checked; 159 } 160 161 /** Set check box checked state. 162 * 163 * @param checkbox Check box 164 * @param checked @c true iff checkbox should be checked 165 */ 166 void ui_checkbox_set_checked(ui_checkbox_t *checkbox, bool checked) 167 { 168 checkbox->checked = checked; 149 169 } 150 170 -
uspace/lib/ui/test/checkbox.c
r74cb6610 r806d761 1 1 /* 2 * Copyright (c) 202 1Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 151 151 } 152 152 153 /** Get check box checked returns internal field */ 154 PCUT_TEST(get_checked) 155 { 156 ui_checkbox_t *checkbox; 157 errno_t rc; 158 159 rc = ui_checkbox_create(NULL, "Hello", &checkbox); 160 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 161 162 checkbox->checked = false; 163 PCUT_ASSERT_FALSE(ui_checkbox_get_checked(checkbox)); 164 checkbox->checked = true; 165 PCUT_ASSERT_TRUE(ui_checkbox_get_checked(checkbox)); 166 167 ui_checkbox_destroy(checkbox); 168 } 169 170 /** Set check box checked sets internal field */ 171 PCUT_TEST(set_checked) 172 { 173 ui_checkbox_t *checkbox; 174 errno_t rc; 175 176 rc = ui_checkbox_create(NULL, "Hello", &checkbox); 177 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 178 179 ui_checkbox_set_checked(checkbox, true); 180 PCUT_ASSERT_TRUE(checkbox->checked); 181 ui_checkbox_set_checked(checkbox, false); 182 PCUT_ASSERT_FALSE(checkbox->checked); 183 184 ui_checkbox_destroy(checkbox); 185 } 186 153 187 /** Paint check box in graphics mode */ 154 188 PCUT_TEST(paint_gfx)
Note:
See TracChangeset
for help on using the changeset viewer.