Monday, November 08, 2010 at 12:02 AM.


on loadFromFile (path) {
	<<loads the DLOG/DITL resources from a file
		<<first we try to use the path as a file path
			<<if that fails, we look in the Dialogs folder
		<<then we load in first DLOG/DITL whose id is 25000 or greater
			<<this ID was chosen at random, by convention all such files use this number
		<<we also load in all other resources whose ID is 25000 or greater
			<<this allows for custom controls, pictures, etc.
		<<then we assign the new DLOG an ID
			<<it's the ID of the DLOG we loaded from the original file
			<<if performance warrant, we'll come up with a way to allocate these
			<<so you don't have to load your resources every time your script runs
	if not file.exists (path) {
		path = Frontier.pathstring + "Dialogs:" + path;
		if not file.exists (path) {
			scriptError ("Can't locate the " + path + " dialog file.")}};
	local (rootpath = Frontier.getFilePath ());
	local (gotDLOG = false, gotDITL = false);
	local (dlogID = 25000);
	local (ixtype, ixrsrc);
	local (restype, id, name, x);
	for ixtype = 1 to rez.countResTypes (path) {
		rez.getNthResType (path, ixtype, @restype);
		for ixrsrc = 1 to rez.countResources (path, restype) {
			rez.getNthResInfo (path, restype, ixrsrc, @id, @name);
			if id >= 25000 {
				case restype {
					'DLOG' {
						if gotDLOG {
						gotDLOG = true;
						dlogID = id};
					'DITL' {
						if gotDITL {
						gotDITL = true}};
				if rez.getResource (path, restype, id, @x) {
					rez.putResource (rootpath, restype, id, @x)}}}};
	if not (gotDLOG and gotDITL) {
		scriptError ("Can't locate the dialog resources in " + path + ".")};
	return (dlogID)}

This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.