Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
Julie Stamp
RISC_OSLib
Commits
3ef629da
Commit
3ef629da
authored
9 years ago
by
ROOL
Browse files
Options
Download
Email Patches
Plain Diff
Extra menu comments
Admin: Part of submission from Martin Avison. Not tagged.
parent
865c7c4a
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
14 additions
and
11 deletions
+14
-11
rlib/c/menu
rlib/c/menu
+14
-11
No files found.
rlib/c/menu
View file @
3ef629da
...
...
@@ -51,10 +51,10 @@
typedef
struct
menu__str
{
wimp_menuhdr
*
m
;
/* the wimp-level menu that we've built. */
int
nitems
;
int
nitems
;
/* items in menu */
void
*
entryspace
;
/* for sub-menus, and entries with >12 chars */
int
nbytes
;
int
maxentrywidth
;
int
nbytes
;
/* bytes used in entryspace */
int
maxentrywidth
;
/* used to set menu width */
}
menu__str
;
/* concrete representation of abstract menu object */
...
...
@@ -80,7 +80,7 @@ into the allocation of store and then the copying of data, so that the copy
into the larger buffer can share the latter half of the operation. */
static
void
menu__disposespace
(
menu
m
)
{
{
/* Free two areas (header+icons & indirect data) for a complete menu */
if
(
m
->
m
!=
0
)
{
free
(
m
->
m
);
m
->
m
=
0
;
...
...
@@ -173,7 +173,7 @@ static void menu__copyworkarea(menu__workarea *w /*in*/, menu m /*out*/)
/* -------- Creating menu descriptions. -------- */
static
void
menu__initmenu
(
char
*
name
,
menu
m
/*out*/
)
{
{
/* Create and initialise menu structure, block and entryspace */
int
i
;
for
(
i
=
0
;
i
<
12
;
i
++
)
{
m
->
m
->
title
[
i
]
=
name
[
i
];
...
...
@@ -193,6 +193,7 @@ static int menu__max(int a, int b)
static
wimp_menuitem
*
menu__additem
(
menu__workarea
*
w
/*out*/
,
char
*
name
,
int
length
)
/* Add an item to the end of a menu */
/* The returned pointer can be used to set flags, etc. */
{
wimp_menuitem
*
ptr
;
...
...
@@ -207,6 +208,7 @@ static wimp_menuitem *menu__additem(
/* in OS units, 16 per char. */
}
if
(
length
<=
12
)
{
/* item can be directly in the icon, so copy to icon block. */
int
i
;
for
(
i
=
0
;
i
<
length
;
i
++
)
{
ptr
->
data
.
text
[
i
]
=
name
[
i
];}
if
(
length
<
12
)
{
ptr
->
data
.
text
[
length
]
=
0
;}
...
...
@@ -214,10 +216,12 @@ static wimp_menuitem *menu__additem(
/* no room for the text: unlikely */
ptr
=
menu__itemptr
(
&
w
->
m
,
w
->
m
.
nitems
-
1
);
/* fudge */
}
else
{
/* space for length, so set up icon block to be indirect */
ptr
->
iconflags
+=
wimp_INDIRECT
;
ptr
->
data
.
indirecttext
.
buffer
=
((
char
*
)
w
->
m
.
entryspace
)
+
w
->
m
.
nbytes
;
ptr
->
data
.
indirecttext
.
validstring
=
(
char
*
)
-
1
;
ptr
->
data
.
indirecttext
.
bufflen
=
100
;
/* copy name into entryspace */
(
void
)
memmove
(((
char
*
)
w
->
m
.
entryspace
)
+
w
->
m
.
nbytes
,
name
,
length
);
w
->
m
.
nbytes
+=
length
+
1
;
((
char
*
)
w
->
m
.
entryspace
)[
w
->
m
.
nbytes
-
1
]
=
0
;
/* terminate the string. */
...
...
@@ -275,7 +279,6 @@ static void menu__getopt(parser *p)
}
static
void
menu__getname
(
parser
*
p
)
{
/*Skip leading spaces*/
while
(
p
->
ch
==
' '
)
p
->
ch
=
*
p
->
s
++
;
...
...
@@ -407,7 +410,7 @@ static void menu__doextend(menu__workarea *w, char *descr)
/* -------- Entrypoints. -------- */
menu
menu_new
(
char
*
name
,
char
*
descr
)
{
{
/* Create a new menu from the list of entries in descr */
menu
m
;
menu__workarea
menu__w
;
wimp_menuitem
*
ptr
;
...
...
@@ -431,7 +434,7 @@ menu menu_new(char *name, char *descr)
}
void
menu_dispose
(
menu
*
m
,
int
recursive
)
{
{
/* Free the storage associated with a menu - and optionally submenus. */
if
(
recursive
!=
0
)
{
menu
*
a
=
(
menu
*
)
((
*
m
)
->
entryspace
);
while
(
1
)
{
...
...
@@ -445,7 +448,7 @@ void menu_dispose(menu *m, int recursive)
}
void
menu_extend
(
menu
m
,
char
*
descr
)
{
{
/* Add one (or more) items from descr to existing menu. */
menu__workarea
menu__w
;
menu__copytoworkarea
(
m
,
&
menu__w
);
menu__doextend
(
&
menu__w
,
descr
);
...
...
@@ -453,7 +456,7 @@ void menu_extend(menu m, char *descr)
}
void
menu_setflags
(
menu
m
,
int
entry
,
int
tick
,
int
fade
)
{
{
/* Set/Unset tick and fade flags on specific menu entry */
wimp_menuitem
*
p
;
if
(
entry
==
0
)
{
return
;}
if
(
entry
>
m
->
nitems
)
{
return
;}
...
...
@@ -515,7 +518,7 @@ void menu_make_sprite(menu m, int entry, char *spritename)
void
menu_submenu
(
menu
m
,
int
place
,
menu
submenu
)
{
{
/* Link a submenu to an entry in a parent menu */
int
i
;
wimp_menuitem
*
p
=
menu__itemptr
(
m
,
place
-
1
);
menu__workarea
menu__w
;
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment