ShinobiSoft Professional Member
Joined: 06 Nov 2002 Posts: 790 Location: Knoxville, Tn
|
Posted: Sun Mar 02, 2003 9:42 pm Post subject: History Menus and SSMenu.dll |
|
|
Here is a sample script that shows how to use SSmenu.dll to manage a
histroy menu.
I don't know for sure, but I think this script will work for VDS 3 as well.
Code: |
rem This sample script shows how to use SSMenu.dll for the handling of
rem a history menu. The history items are stored in an INIFILE. As far as I
rem can tell there is only one downfall to this method. If there isn't at least
rem one existing history item to add to the first menu that will contain the
rem history items, the menu will not be created, SSMenu.dll will not be able
rem to get a handle for the history menu and when you refresh the history
rem menu the newly added menu will not hide like it is supposed to and it
rem will not be inserted in it's appropriate place in the File menu.
external @path(%0)ssmenu.dll
rem For this example, and because when you try this script out for the first time,
rem you wont have the "HistTest.ini" file on your system, I've added this routine
rem to generate the inifile for you. It should only generate it the first time you run
rem the script.
if @not(@file(@path(%0)HistTest.ini,z))
list create,1
list add,1,[History]
list add,1,File0=History Item 1
list add,1,File1=History Item 2
list add,1,File2=History Item 3
list add,1,File3=History Item 4
list add,1,File4=History Item 5
list add,1,File5=History Item 6
list add,1,File6=History Item 7
list add,1,File7=History Item 8
list savefile,1,@path(%0)HistTest.ini
list close,1
end
rem Now we'll open the newly generated or existing HistTest.ini file.
inifile open,@path(%0)HistTest.ini
rem And fill the %F variable with the first history item. For this example, this
rem variable is only used in the :Refresh and :RefreshBUTTON sections.
%F = @iniread(History,File0)
rem Now let's load the history menu
gosub Load
rem And create the dialog window
dialog create,HistTest,-1,0,360,200,CLASS HistTest
dialog add,MENU,&File,&New|Ctrl+N,&Open|Ctrl+O,&Save|Ctrl+S,-,&Print|Ctrl+P,-,-,E&xit|Alt+X
dialog add,MENU,Histry,@item(1,0),@item(1,1),@item(1,2),@item(1,3),@item(1,4),@item(1,5),@item(1,6),@item(1,7)
menu class,HistTest
%%menu = @menu(menubarId)
%%fileMenu = @menu(getSubMenu,%%menu,0)
%%historyMenu = @menu(hideMenu,%%menu,1)
menu insertMenu,%%fileMenu,%%historyMenu,6,&History
dialog add,BUTTON,Refresh,10,10,65,25
dialog show
list close,1
:Evloop
wait event
goto @event()
:NewMENU
:OpenMENU
:SaveMENU
:PrintMENU
goto Evloop
:RefreshBUTTON
rem We'll use the @input() function to add a new item to the history menu.
%F = @input(New history item,%F)
gosub Refresh
goto Evloop
:ExitMENU
:CLOSE
exit
:Load
list create,1
%x = 0
repeat
list add,1,@iniread(History,File%x)
%x = @succ(%x)
until @equal(%x,8)
exit
:Refresh
%x = 7
if @not(@equal(@iniread(History,File0),%F))
repeat
inifile write,History,File%x,@iniread(History,File@pred(%x))
%x = @pred(%x)
until @equal(%x,0)
inifile write,History,File%x,%F
gosub Load
menu destroy,%%historyMenu
dialog add,MENU,Histry,@item(1,0),@item(1,1),@item(1,2),@item(1,3),@item(1,4),@item(1,5),@item(1,6),@item(1,7)
%%historyMenu = @menu(hideMenu,%%menu,1)
list close,1
end
exit
|
_________________ Bill Weckel
ShinobiSoft Software
"The way is known to all, but not all know it." |
|