From: okrumnow@mcshh.Hanse.DE (Olaf Krumnow)
Subject: Glass Format / extension for menus
Organization: Point of Presence & MCS Hamburg
Date: Wed, 6 Jan 1993 10:14:06 GMT

To extend the Glass chunk file format for menus:

GLS_MENU
========
Header field
      Offset      Size  Meaning
        0           8   Menu_Datestamp
                        date&time of last change of this chunk
        8           4   Menu_NumMenus
                        number of menus defined in this chunk
       12           4   Menu_MenuDefnSize
                        size of Menu_MenuDefn fields. At present 28,
                        may change (but unlikely) in future.
       16           4   Menu_ItemDefnSize
                        size of Menu_ItemDefn fields. At present 24,
                        may change (but unlikely) in future.
       20           4   Menu_IndDataOffset
                        Chunk offset of indirected data table for
                        this menu.
       24           8   Menu_Reserved1
                        reserved for future enhancement, set to 0

Index (following immediately)
      i+0          40   Menu_Id
                        0-terminated string identifying the menu,
                        eg. "MainMenu"
      i+40          4   Menu_Offset
                        Chunk offset for data for this menu entry.
      i+44          4   Menu_Size
                        Size of data for this menu entry.
      i+48         16   Menu_Reserved2
                        reserved for future enhancement, set to 0

Menu data blocks (addressed by chunk offset)
      d+0         (28)  Menu_MenuDefn
                        A menu definition block as passed to
                        SWI Wimp_CreateMenu. Note exceptions stated
                        below.
      d+28        (24)  Menu_ItemDefn 0
                        Data for first menu item, as passed to
                        SWI Wimp_CreateMenu. Note exceptions stated
                        below.
      d+52        (24)  Menu_ItemDefn 1
      ...         ...   ...etc...

Indirected data tables (addressed by chunk offset)
      t+0           4   Menu_IndNumEntries
                        number of entries in this table.
      t+4           4   Menu_IndChunkOffset 0
                        Chunk offset for entry 0
      t+8           4   Menu_IndChunkOffset 1
      ...         ...   ...etc...

Indirected data blocks (addressed by chunk offset)
      id+0        nn    0-terminated strings of any length,
                        representing indirected data.

Notes
~~~~~
      Exceptions as noted for GLS_WIND. Item naming in chunk
      GLS_NAME the same way as icon naming for windows.
      Submenu links are pointing into indirected data tables,
      therefore pointing to another submenu name, or a window name.

Olaf.

------------------------------------------------------------
Olaf Krumnow                 e-mail: okrumnow@mcshh.hanse.de
                             snail : August-Bebel-Str. 102c
Headquarter of the                   W-2050 Hamburg 80
German Archimedes Group              Germany
------------------------------------------------------------
      


Newsgroups: comp.sys.acorn.tech