|
Calling Sequence
|
|
EntryGenerators[Add](Name, Generator)
|
|
Parameters
|
|
Name
|
-
|
string; index of generator in 'EntryGenerators' table
|
Generator
|
-
|
list of lists or procedure that returns a list of lists; specifies the names that appear as subentries and the values returned when subentries are selected
|
|
|
|
|
Description
|
|
•
|
The EntryGenerators[Add] command adds an entry generator to the context menu module. Entry generators can be used by entries to dynamically generate subentries to obtain extra information from the user.
|
•
|
The Generator parameter is a list of lists or a procedure that returns a list of lists. If it is a procedure, then the selected object is passed to the procedure.
|
|
The list of lists is structured as follows. Each operand in the outer list is a list, containing a string (the name of the subentry) followed by a list containing information to return to the entry as %ARG1, %ARG2, ...
|
|
For example, if Generator were [ ["Subentry 1", [1]], ["Subentry 2", [2]], ["Subentry 3", [3]] ] then "Subentry 1", "Subentry 2", and "Subentry 3" are displayed in the context menu. If "Subentry 2" is selected, then 2 is returned as %ARG1 to the entry.
|
•
|
The Name parameter is the index of the generator in the 'EntryGenerators' table.
|
|
|
Examples of EntryGenerators[Add]
|
|
>
|
with(ContextMenu[CurrentContext]):
|
|
Add an entry generator that allows the user to select a desired number of digits for approximation.
|
>
|
EntryGenerators[Add](
"NumDigits",
[ ["5",[5]], ["10",[10]], ["20",[20]], ["50",[50]], ["100",[100]] ]
);
|
|
Add an entry generator that allows the user to specify the direction and amount of rotation, for example, when rotating the elements of a list.
|
>
|
EntryGenerators[Add](
"Rotation",
[ ["2 to the left",[-2]], ["1 to the left",[-1]], ["1 to the right",[1]], ["2 to the right",[2]] ]
);
|
|
Add an entry generator that allows the user to select one of the variables that appears in the selected expression. For example, this entry generator allows the user to select a variable with respect to which differentiation occurs or to specify the independent variable for a plot.
|
>
|
EntryGenerators[Add](
"Variables",
proc()
local i, vars;
try
vars := Queries[Run]("Variables");
[ seq( [ sprintf( "%a", op(i,vars) ), [ op(i,vars) ] ], i = 1 .. nops(vars) ) ];
catch:
end try;
end proc
);
|
|
Add an entry generator that allows the user to select an ordered pair of the variables that appear in the selected expression.
|
>
|
EntryGenerators[Add](
"Variables 2",
proc()
local i, vars, subentries;
vars := Queries[Run]("Variables");
subentries := combinat[choose](vars,2);
[ seq( [ sprintf( "%a, %a", op(op(i,subentries)) ), op(i,subentries) ], i = 1 .. nops(subentries) ) ];
end proc
);
|
|
|
|