What I need to do is store data to a file (and make it easy to edit) for data for my program.
There needs to be a list with each data item in it, each of which contains four paramaters (one of which is a category, another is a name). On the application launch, it needs to be read into a menu and placed into the apropriate submenu, and the menu item needs to contain the name. I don’t need help with some of the details, but a general example to get started would be very helpful.
Here’s the code I have now, in case that helps any:
on clicked theObject
[b][color=blue]if[/color][/b] [color=blue]name[/color] [b][color=blue]of[/color][/b] [color=green]theObject[/color] [b][color=blue]is[/color][/b] "make" [b][color=blue]then[/color][/b]
[b][color=blue]tell[/color][/b] [color=blue]window[/color] "main"
[b][color=blue]set[/color][/b] [color=green]input_name[/color] [b][color=blue]to[/color][/b] [color=blue]contents[/color] [b][color=blue]of[/color][/b] [color=blue]text field[/color] "name"
[b][color=blue]set[/color][/b] [color=green]input_data1[/color] [b][color=blue]to[/color][/b] [color=blue]contents[/color] [b][color=blue]of[/color][/b] [color=blue]text field[/color] "1"
[b][color=blue]set[/color][/b] [color=green]input_data2[/color] [b][color=blue]to[/color][/b] [color=blue]contents[/color] [b][color=blue]of[/color][/b] [color=blue]text field[/color] "2"
[b][color=blue]end[/color][/b] [b][color=blue]tell[/color][/b]
[color=blue]log[/color] "got data"
[b][color=blue]set[/color][/b] [color=green]pathtolibrary[/color] [b][color=blue]to[/color][/b] (([color=blue]path to[/color] [color=blue]current user folder[/color] [color=blue]as[/color] [color=blue]text[/color]) & ":")
[color=blue]log[/color] "got path to library"
[b][color=blue]set[/color][/b] [color=green]wholepath[/color] [b][color=blue]to[/color][/b] ([color=green]pathtolibrary[/color] & "Records Test:")
[b][color=blue]set[/color][/b] [color=green]extension[/color] [b][color=blue]to[/color][/b] ".record"
[b][color=blue]set[/color][/b] [color=green]filename[/color] [b][color=blue]to[/color][/b] "DOOM"
[b][color=blue]set[/color][/b] [color=green]the_file[/color] [b][color=blue]to[/color][/b] ([color=green]wholepath[/color] & [color=green]filename[/color] & [color=green]extension[/color]) [b][color=blue]as[/color][/b] [color=blue]file specification[/color]
[color=blue]log[/color] "set the file"
[b][color=blue]set[/color][/b] [color=green]the_record[/color] [b][color=blue]to[/color][/b] {[color=green]name_[/color]:[color=green]input_name[/color], [color=green]data1[/color]:[color=green]input_data1[/color], [color=green]data2[/color]:[color=green]input_data2[/color]} [b][color=blue]as[/color][/b] [color=blue]record[/color]
[color=blue]log[/color] "made record"
[b][color=blue]try[/color][/b]
[color=blue]log[/color] "attempting read file"
[b][color=blue]set[/color][/b] [color=green]old_data[/color] [b][color=blue]to[/color][/b] [color=green]readfile[/color]()
[color=blue]log[/color] "read file and got contents"
[b][color=blue]set[/color][/b] [color=green]the_data[/color] [b][color=blue]to[/color][/b] {[color=green]old_data[/color] & [color=green]the_record[/color]}
[b][color=blue]on[/color][/b] [b][color=blue]error[/color][/b] [color=green]theerror[/color]
[color=blue]log[/color] [color=green]theerror[/color]
[b][color=blue]set[/color][/b] [color=green]old_data[/color] [b][color=blue]to[/color][/b] ""
[color=blue]log[/color] "no file exists"
[b][color=blue]set[/color][/b] [color=green]the_data[/color] [b][color=blue]to[/color][/b] [color=green]the_record[/color]
[b][color=blue]end[/color][/b] [b][color=blue]try[/color][/b]
[color=blue]log[/color] [color=green]old_data[/color]
[color=blue]log[/color] [color=green]the_record[/color]
[color=blue]log[/color] ([color=blue]number of items[/color] [b][color=blue]of[/color][/b] [color=green]the_data[/color])
[color=blue]log[/color] "made list"
[b][color=blue]try[/color][/b]
[color=blue]open for access[/color] [color=green]the_file[/color] [b][color=blue]with[/color][/b] [color=blue]write permission[/color]
[color=blue]log[/color] "open for access"
[color=blue]set eof[/color] [b][color=blue]of[/color][/b] [color=green]the_file[/color] [color=blue]to[/color] 0
[color=blue]write[/color] ([color=green]the_data[/color]) [color=blue]to[/color] [color=green]the_file[/color] [color=blue]starting at[/color] [color=blue]eof[/color]
[color=blue]log[/color] "write"
[color=blue]close access[/color] [color=green]the_file[/color]
[b][color=blue]on[/color][/b] [b][color=blue]error[/color][/b]
[b][color=blue]try[/color][/b]
[color=blue]close access[/color] [color=green]the_file[/color]
[b][color=blue]end[/color][/b] [b][color=blue]try[/color][/b]
[b][color=blue]end[/color][/b] [b][color=blue]try[/color][/b]
[b][color=blue]else[/color][/b] [b][color=blue]if[/color][/b] [color=blue]name[/color] [b][color=blue]of[/color][/b] [color=green]theObject[/color] [b][color=blue]is[/color][/b] "read" [b][color=blue]then[/color][/b]
[b][color=blue]set[/color][/b] [color=green]the_data[/color] [b][color=blue]to[/color][/b] [color=green]readfile[/color]()
[color=blue]display dialog[/color] ([color=green]name_[/color] [b][color=blue]of[/color][/b] [color=green]the_data[/color]) [color=blue]attached to[/color] [color=blue]window[/color] "main"
[b][color=blue]end[/color][/b] [b][color=blue]if[/color][/b]
end clicked
on awake from nib theObject
if name of theObject is “read menu” then
[b][color=blue]set[/color][/b] [color=green]original_list[/color] [b][color=blue]to[/color][/b] [color=green]readfile[/color]() [b][color=blue]as[/color][/b] [color=blue]list[/color]
[color=blue]log[/color] "got original list"
[b][color=blue]set[/color][/b] [color=green]newList[/color] [b][color=blue]to[/color][/b] ""
[color=blue]log[/color] ([color=blue]number of items[/color] [b][color=blue]of[/color][/b] [color=green]original_list[/color])
[b][color=blue]repeat[/color][/b] [b][color=blue]with[/color][/b] [color=green]i[/color] [b][color=blue]from[/color][/b] 1 [b][color=blue]to[/color][/b] [color=blue]number of items[/color] [b][color=blue]of[/color][/b] [color=green]original_list[/color]
[color=blue]log[/color] "processing " & [color=green]i[/color] & " of " & ([color=blue]number of items[/color] [b][color=blue]of[/color][/b] [color=green]original_list[/color])
[b][color=blue]set[/color][/b] [color=green]this_item[/color] [b][color=blue]to[/color][/b] [color=blue]item[/color] [color=green]i[/color] [b][color=blue]of[/color][/b] [color=green]original_list[/color]
[b][color=blue]set[/color][/b] [color=green]newList[/color] [b][color=blue]to[/color][/b] [color=green]newList[/color] & ([color=green]name_[/color] [b][color=blue]of[/color][/b] [color=green]this_item[/color])
[color=blue]log[/color] "setting list"
[b][color=blue]end[/color][/b] [b][color=blue]repeat[/color][/b]
[b][color=blue]set[/color][/b] [color=green]the_list[/color] [b][color=blue]to[/color][/b] [color=green]newList[/color]
[b][color=blue]tell[/color][/b] [color=blue]window[/color] "main"
[b][color=blue]tell[/color][/b] [color=blue]menu[/color] [b][color=blue]of[/color][/b] [color=blue]popup button[/color] "read menu"
[color=blue]delete[/color] [color=blue]menu items[/color]
[b][color=blue]set[/color][/b] [color=green]current_item[/color] [b][color=blue]to[/color][/b] 1
[b][color=blue]set[/color][/b] [color=green]num_of_items[/color] [b][color=blue]to[/color][/b] [color=blue]count[/color] [b][color=blue]of[/color][/b] [color=blue]items[/color] [b][color=blue]of[/color][/b] [color=green]the_list[/color]
[b][color=blue]repeat[/color][/b] --[i][color=olive]with the_item in the_list[/color][/i]
[b][color=blue]if[/color][/b] [color=green]current_item[/color] [b][color=blue]is[/color][/b] [b][color=blue]equal to[/color][/b] ([color=green]num_of_items[/color] + 1) [b][color=blue]then[/color][/b]
[b][color=blue]exit[/color][/b] [b][color=blue]repeat[/color][/b]
[b][color=blue]else[/color][/b]
[b][color=blue]set[/color][/b] [color=green]the_item[/color] [b][color=blue]to[/color][/b] ([color=blue]text item[/color] [color=green]current_item[/color] [b][color=blue]of[/color][/b] ([color=blue]contents[/color] [b][color=blue]of[/color][/b] [color=green]the_list[/color]))
[color=blue]make[/color] [color=blue]new[/color] [color=blue]menu item[/color] [color=blue]at[/color] [b][color=blue]end[/color][/b] [b][color=blue]of[/color][/b] [color=blue]menu items[/color] [color=blue]with properties[/color] {[color=blue]title[/color]:[color=green]the_item[/color]}
[b][color=blue]set[/color][/b] [color=green]current_item[/color] [b][color=blue]to[/color][/b] ([color=green]current_item[/color] + 1)
[b][color=blue]end[/color][/b] [b][color=blue]if[/color][/b]
[b][color=blue]end[/color][/b] [b][color=blue]repeat[/color][/b]
[b][color=blue]end[/color][/b] [b][color=blue]tell[/color][/b]
[b][color=blue]end[/color][/b] [b][color=blue]tell[/color][/b]
[color=blue]log[/color] "set popup"
[b][color=blue]end[/color][/b] [b][color=blue]if[/color][/b]
end awake from nib
on choose menu item theObject
(Add your script here. )
end choose menu item
on [color=green]readfile/color
set userfolder to ((path to current user folder as text ) & “:”)
log “got path to library”
set wholepath to (userfolder & “Records Test:”)
[b][color=blue]set[/color][/b] [color=green]extension[/color] [b][color=blue]to[/color][/b] ".record"
[b][color=blue]set[/color][/b] [color=green]filename[/color] [b][color=blue]to[/color][/b] "DOOM"
[b][color=blue]set[/color][/b] [color=green]the_file[/color] [b][color=blue]to[/color][/b] ([color=green]wholepath[/color] & [color=green]filename[/color] & [color=green]extension[/color]) [b][color=blue]as[/color][/b] [color=blue]file specification[/color]
[color=blue]log[/color] "set the file"
[b][color=blue]set[/color][/b] [color=green]the_data[/color] [b][color=blue]to[/color][/b] [color=blue]read[/color] [color=green]the_file[/color]
[color=blue]log[/color] "got the data"
[b][color=blue]return[/color][/b] [color=green]the_data[/color]
end readfile
Thanks so much in advance, unless no one responds.
jobu
May 14, 2004, 10:13pm
#2
I posted a response in a thread a while back that had some code in it. I can’t find that thread now, but I did post the same code that reads text files on my web site: [url=http://www.geocities.com/jobu10000/Applescript/ReadTextFileCode.html]http://www.geocities.com/jobu10000/Applescript/ReadTextFileCode.html[/url] Actually, that’s the only thing I have on my site right now. It parses a pipe (“|”) delimited database and places a menu item for each record into a menu. Looks like what your trying to do…if not it’ll help you get an idea of what’s required.
j
in my plugin howto http://bbs.applescript.net/viewtopic.php?t=8073 I generate a menu based on entries in plists which are very easy to edit and load with late night software’s property list tools osax (which you can distribute inside your application, as per http://bbs.applescript.net/viewtopic.php?3795 … look down the page…). To create sub menus see http://bbs.applescript.net/viewtopic.php?t=8105