Changeset 7d78e466 in mainline


Ignore:
Timestamp:
2023-10-07T15:50:59Z (7 months ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
9bec33a
Parents:
4d58bac
Message:

Load start menu from file using libstartmenu

Location:
uspace
Files:
9 added
5 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/taskbar/meson.build

    r4d58bac r7d78e466  
    2727#
    2828
    29 deps = [ 'ui', 'wndmgt' ]
     29deps = [ 'startmenu', 'ui', 'wndmgt' ]
    3030src = files(
    3131        'clock.c',
     
    4747        'test/wndlist.c',
    4848)
     49
     50if install_nonessential_data
     51        installed_data += { 'name': 'startmenu.sif', 'dir': '/cfg' }
     52endif
  • uspace/app/taskbar/taskbar.c

    r4d58bac r7d78e466  
    173173        }
    174174
     175        rc = tbsmenu_load(taskbar->tbsmenu, "/cfg/startmenu.sif");
     176        if (rc != EOK) {
     177                printf("Error loading start menu from '%s'.\n",
     178                    "/cfg/startmenu.sif");
     179                goto error;
     180        }
     181
    175182        if (ui_is_textmode(taskbar->ui)) {
    176183                rect.p0.x = params.rect.p0.x + 1;
  • uspace/app/taskbar/tbsmenu.c

    r4d58bac r7d78e466  
    3434
    3535#include <gfx/coord.h>
     36#include <startmenu/startmenu.h>
    3637#include <stdbool.h>
    3738#include <stddef.h>
     
    7172        ui_resource_t *res = ui_window_get_res(window);
    7273        tbsmenu_t *tbsmenu = NULL;
    73         ui_menu_entry_t *tentry;
    7474        errno_t rc;
    7575
     
    9696
    9797        ui_menu_set_cb(tbsmenu->smenu, &tbsmenu_smenu_cb, (void *)tbsmenu);
    98 
    99         rc = ui_menu_entry_create(tbsmenu->smenu, "~N~avigator", "", &tentry);
    100         if (rc != EOK)
    101                 goto error;
    102 
    103         rc = ui_menu_entry_create(tbsmenu->smenu, "Text ~E~ditor", "", &tentry);
    104         if (rc != EOK)
    105                 goto error;
    106 
    107         rc = ui_menu_entry_create(tbsmenu->smenu, "~T~erminal", "", &tentry);
    108         if (rc != EOK)
    109                 goto error;
    110 
    111         rc = ui_menu_entry_create(tbsmenu->smenu, "~C~alculator", "", &tentry);
    112         if (rc != EOK)
    113                 goto error;
    114 
    115         rc = ui_menu_entry_create(tbsmenu->smenu, "~U~I Demo", "", &tentry);
    116         if (rc != EOK)
    117                 goto error;
    118 
    119         rc = ui_menu_entry_create(tbsmenu->smenu, "~G~FX Demo", "", &tentry);
    120         if (rc != EOK)
    121                 goto error;
    12298
    12399        tbsmenu->window = window;
     
    135111}
    136112
    137 /** Set window list rectangle.
    138  *
    139  * @param tbsmenu Window list
     113/** Load start menu from repository.
     114 *
     115 * @param tbsmenu Start menu
     116 * @param Repository path
     117 * @return EOK on success or an error code
     118 */
     119errno_t tbsmenu_load(tbsmenu_t *tbsmenu, const char *repopath)
     120{
     121        ui_menu_entry_t *tentry;
     122        startmenu_t *smenu = NULL;
     123        startmenu_entry_t *sme;
     124        const char *caption;
     125        const char *cmd;
     126        errno_t rc;
     127
     128        rc = startmenu_open(repopath, &smenu);
     129        if (rc != EOK)
     130                goto error;
     131
     132        sme = startmenu_first(smenu);
     133        while (sme != NULL) {
     134                caption = startmenu_entry_get_caption(sme);
     135                cmd = startmenu_entry_get_cmd(sme);
     136
     137                rc = ui_menu_entry_create(tbsmenu->smenu, caption, "", &tentry);
     138                if (rc != EOK)
     139                        goto error;
     140
     141                (void)cmd;
     142
     143                sme = startmenu_next(sme);
     144        }
     145
     146        startmenu_close(smenu);
     147        return EOK;
     148error:
     149        if (smenu != NULL)
     150                startmenu_close(smenu);
     151        return rc;
     152}
     153
     154/** Set start menu rectangle.
     155 *
     156 * @param tbsmenu Start menu
    140157 * @param rect Rectangle
    141158 */
     
    170187}
    171188
    172 /** Remove entry from window list.
    173  *
    174  * @param tbsmenu Window list
    175  * @param entry Window list entry
    176  * @param paint @c true to repaint window list
     189/** Remove entry from strat menu.
     190 *
     191 * @param tbsmenu Start menu
     192 * @param entry Start menu entry
     193 * @param paint @c true to repaint start menu
    177194 * @return @c EOK on success or an error code
    178195 */
  • uspace/app/taskbar/tbsmenu.h

    r4d58bac r7d78e466  
    4747
    4848extern errno_t tbsmenu_create(ui_window_t *, ui_fixed_t *, tbsmenu_t **);
     49extern errno_t tbsmenu_load(tbsmenu_t *, const char *);
    4950extern void tbsmenu_set_rect(tbsmenu_t *, gfx_rect_t *);
    5051extern void tbsmenu_destroy(tbsmenu_t *);
  • uspace/lib/meson.build

    r4d58bac r7d78e466  
    8080        'scsi',
    8181        'sif',
     82        'startmenu',
    8283        'trackmod',
    8384        'untar',
Note: See TracChangeset for help on using the changeset viewer.