Changeset b1397ab in mainline for uspace/app


Ignore:
Timestamp:
2023-11-09T13:02:16Z (2 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master, topic/msim-upgrade, topic/simplify-dev-export
Children:
e0d874b7
Parents:
40eab9f
git-author:
Jiri Svoboda <jiri@…> (2023-11-08 18:01:53)
git-committer:
Jiri Svoboda <jiri@…> (2023-11-09 13:02:16)
Message:

Start menu editor is editing

You can change an entry and it will be saved to the configuration repo.
(Cannot create/delete yet). To see the change in the editor, you need
to restart it. To see the change in the taskbar, you need to restart it.

Location:
uspace/app/taskbar-cfg
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/taskbar-cfg/smeedit.c

    r40eab9f rb1397ab  
    4848};
    4949
     50static void smeedit_ok_clicked(ui_pbutton_t *, void *);
     51static void smeedit_cancel_clicked(ui_pbutton_t *, void *);
     52
     53/** OK button callbacks */
     54ui_pbutton_cb_t smeedit_ok_button_cb = {
     55        .clicked = smeedit_ok_clicked
     56};
     57
     58/** Cancel button callbacks */
     59ui_pbutton_cb_t smeedit_cancel_button_cb = {
     60        .clicked = smeedit_cancel_clicked
     61};
     62
    5063/** Window close button was clicked.
    5164 *
     
    6477 *
    6578 * @param smenu Start menu
     79 * @param smentry Start menu entry to edit or @c NULL if creating
     80 *                a new entry
    6681 * @param rsmee Place to store pointer to new start menu entry edit window
    6782 * @return EOK on success or an error code
    6883 */
    69 errno_t smeedit_create(startmenu_t *smenu, smeedit_t **rsmee)
     84errno_t smeedit_create(startmenu_t *smenu, startmenu_entry_t *smentry,
     85    smeedit_t **rsmee)
    7086{
    7187        ui_wnd_params_t params;
     
    7591        gfx_rect_t rect;
    7692        ui_resource_t *res;
     93        const char *cmd;
     94        const char *caption;
    7795        errno_t rc;
    7896
    7997        ui = smenu->tbarcfg->ui;
     98
     99        if (smentry != NULL) {
     100                cmd = smenu_entry_get_cmd(smentry->entry);
     101                caption = smenu_entry_get_caption(smentry->entry);
     102        } else {
     103                cmd = "";
     104                caption = "";
     105        }
    80106
    81107        smee = calloc(1, sizeof(smeedit_t));
     
    85111        }
    86112
     113        smee->smentry = smentry;
     114
    87115        ui_wnd_params_init(&params);
    88116        params.caption = "Edit Start Menu Entry";
     
    145173        /* Command entry */
    146174
    147         rc = ui_entry_create(window, "foo", &smee->ecmd);
     175        rc = ui_entry_create(window, cmd, &smee->ecmd);
    148176        if (rc != EOK)
    149177                goto error;
     
    199227        /* Caption entry */
    200228
    201         rc = ui_entry_create(window, "bar", &smee->ecaption);
     229        rc = ui_entry_create(window, caption, &smee->ecaption);
    202230        if (rc != EOK)
    203231                goto error;
     
    243271        }
    244272
     273        ui_pbutton_set_cb(smee->bok, &smeedit_ok_button_cb, (void *)smee);
    245274        ui_pbutton_set_rect(smee->bok, &rect);
    246275        ui_pbutton_set_default(smee->bok, true);
     
    271300        }
    272301
     302        ui_pbutton_set_cb(smee->bcancel, &smeedit_cancel_button_cb,
     303            (void *)smee);
    273304        ui_pbutton_set_rect(smee->bcancel, &rect);
    274305
     
    303334}
    304335
     336/** OK button clicked.
     337 *
     338 * @params bok OK button
     339 * @params arg Argument (smeedit_t *)
     340 */
     341static void smeedit_ok_clicked(ui_pbutton_t *bok, void *arg)
     342{
     343        smeedit_t *smee;
     344        const char *cmd;
     345        const char *caption;
     346        errno_t rc;
     347
     348        (void)bok;
     349        smee = (smeedit_t *)arg;
     350
     351        cmd = ui_entry_get_text(smee->ecmd);
     352        caption = ui_entry_get_text(smee->ecaption);
     353
     354        rc = smenu_entry_set_cmd(smee->smentry->entry, cmd);
     355        if (rc != EOK)
     356                return;
     357
     358        smenu_entry_set_caption(smee->smentry->entry, caption);
     359        if (rc != EOK)
     360                return;
     361
     362        (void)smenu_entry_save(smee->smentry->entry);
     363
     364        smeedit_destroy(smee);
     365}
     366
     367/** Cancel button clicked.
     368 *
     369 * @params bok OK button
     370 * @params arg Argument (smeedit_t *)
     371 */
     372static void smeedit_cancel_clicked(ui_pbutton_t *bcancel, void *arg)
     373{
     374        smeedit_t *smee;
     375
     376        (void)bcancel;
     377        smee = (smeedit_t *)arg;
     378        smeedit_destroy(smee);
     379}
     380
    305381/** @}
    306382 */
  • uspace/app/taskbar-cfg/smeedit.h

    r40eab9f rb1397ab  
    4040#include "types/startmenu.h"
    4141
    42 extern errno_t smeedit_create(startmenu_t *, smeedit_t **);
     42extern errno_t smeedit_create(startmenu_t *, startmenu_entry_t *, smeedit_t **);
    4343extern void smeedit_destroy(smeedit_t *);
    4444
  • uspace/app/taskbar-cfg/startmenu.c

    r40eab9f rb1397ab  
    292292        smenu_entry_t *entry;
    293293        startmenu_entry_t *smentry;
    294         const char *caption;
    295         const char *cmd;
    296294        errno_t rc;
    297295
    298296        entry = tbarcfg_smenu_first(tbarcfg);
    299297        while (entry != NULL) {
    300                 caption = smenu_entry_get_caption(entry);
    301                 cmd = smenu_entry_get_cmd(entry);
    302 
    303                 rc = startmenu_insert(smenu, caption, cmd, &smentry);
     298                rc = startmenu_insert(smenu, entry, &smentry);
    304299                if (rc != EOK)
    305300                        return rc;
     
    323318        while (lentry != NULL) {
    324319                entry = (startmenu_entry_t *)ui_list_entry_get_arg(lentry);
    325                 free(entry->caption);
    326                 free(entry->cmd);
    327320                free(entry);
    328321                ui_list_entry_delete(lentry);
     
    338331 *
    339332 * @param smenu Start menu configuration tab
    340  * @param caption Entry caption
    341  * @param cmd Command to run
    342  * @param rentry Place to store pointer to new entry or NULL
     333 * @param entry Backing entry
     334 * @param rsmentry Place to store pointer to new entry or NULL
    343335 * @return EOK on success or an error code
    344336 */
    345 errno_t startmenu_insert(startmenu_t *smenu, const char *caption,
    346     const char *cmd, startmenu_entry_t **rentry)
    347 {
    348         startmenu_entry_t *entry;
     337errno_t startmenu_insert(startmenu_t *smenu, smenu_entry_t *entry,
     338    startmenu_entry_t **rsmentry)
     339{
     340        startmenu_entry_t *smentry;
    349341        ui_list_entry_attr_t attr;
    350342        errno_t rc;
    351343
    352         entry = calloc(1, sizeof(startmenu_entry_t));
    353         if (entry == NULL)
     344        smentry = calloc(1, sizeof(startmenu_entry_t));
     345        if (smentry == NULL)
    354346                return ENOMEM;
    355347
    356         entry->startmenu = smenu;
    357         entry->caption = str_dup(caption);
    358         if (entry->caption == NULL) {
    359                 free(entry);
    360                 return ENOMEM;
    361         }
    362 
    363         entry->cmd = str_dup(cmd);
    364         if (entry->caption == NULL) {
    365                 free(entry->caption);
    366                 free(entry);
    367                 return ENOMEM;
    368         }
    369 
     348        smentry->startmenu = smenu;
     349        smentry->entry = entry;
     350
     351        printf("startmenu_insert: smentry=%p entry=%p\n",
     352            smentry, entry);
    370353        ui_list_entry_attr_init(&attr);
    371         attr.caption = caption;
    372         attr.arg = (void *)entry;
    373         rc = ui_list_entry_append(smenu->entries_list, &attr, &entry->lentry);
    374         if (rc != EOK) {
    375                 free(entry->caption);
    376                 free(entry->cmd);
    377                 free(entry);
     354        attr.caption = smenu_entry_get_caption(entry);
     355        attr.arg = (void *)smentry;
     356        rc = ui_list_entry_append(smenu->entries_list, &attr, &smentry->lentry);
     357        if (rc != EOK) {
     358                free(smentry);
    378359                return rc;
    379360        }
    380361
    381         if (rentry != NULL)
    382                 *rentry = entry;
     362        if (rsmentry != NULL)
     363                *rsmentry = smentry;
    383364        return EOK;
    384365}
    385366
     367/** Get selected start menu entry.
     368 *
     369 * @param smenu Start menu
     370 * @return Selected entry
     371 */
     372startmenu_entry_t *startmenu_get_selected(startmenu_t *smenu)
     373{
     374        ui_list_entry_t *entry;
     375
     376        entry = ui_list_get_cursor(smenu->entries_list);
     377        return (startmenu_entry_t *)ui_list_entry_get_arg(entry);
     378}
     379
    386380/** Edit selected menu entry.
    387381 *
     
    391385{
    392386        smeedit_t *smee;
     387        startmenu_entry_t *smentry;
    393388        errno_t rc;
    394389
    395         rc = smeedit_create(smenu, &smee);
     390        smentry = startmenu_get_selected(smenu);
     391
     392        printf("smeedit_create:entry=%p\n", smentry);
     393        rc = smeedit_create(smenu, smentry, &smee);
    396394        if (rc != EOK)
    397395                return;
  • uspace/app/taskbar-cfg/startmenu.h

    r40eab9f rb1397ab  
    4444extern errno_t startmenu_populate(startmenu_t *, tbarcfg_t *);
    4545extern void startmenu_destroy(startmenu_t *);
    46 extern errno_t startmenu_insert(startmenu_t *, const char *, const char *,
     46extern errno_t startmenu_insert(startmenu_t *, smenu_entry_t *,
    4747    startmenu_entry_t **);
     48extern startmenu_entry_t *startmenu_get_selected(startmenu_t *);
    4849extern void startmenu_edit(startmenu_t *);
    4950
  • uspace/app/taskbar-cfg/types/smeedit.h

    r40eab9f rb1397ab  
    4747        /** Containing start menu configuration tab */
    4848        struct startmenu *startmenu;
     49        /** Start menu entry or @c NULL if creating a new entry */
     50        struct startmenu_entry *smentry;
    4951        /** Window */
    5052        ui_window_t *window;
  • uspace/app/taskbar-cfg/types/startmenu.h

    r40eab9f rb1397ab  
    3737#define TYPES_STARTMENU_H
    3838
     39#include <tbarcfg/tbarcfg.h>
    3940#include <ui/fixed.h>
    4041#include <ui/label.h>
     
    6465
    6566/** Start menu entry */
    66 typedef struct {
     67typedef struct startmenu_entry {
    6768        /** Containing start menu configuration tab */
    6869        struct startmenu *startmenu;
     70        /** Backing entry */
     71        smenu_entry_t *entry;
    6972        /** List entry */
    7073        ui_list_entry_t *lentry;
    71         /** Caption */
    72         char *caption;
    73         /** Command */
    74         char *cmd;
    7574} startmenu_entry_t;
    7675
Note: See TracChangeset for help on using the changeset viewer.