Interface

by Forum_account
Provides a better way to interact with interface controls than the built-in winset/winget procs.
ID:505933
 
I posted an update to the Interface library.

The library now uses the Text library. There were some text procs that I needed in multiple libraries. If each library implemented the procs, including two libraries that require the same text proc would cause a duplicate definition. Having the text procs in a single library that all projects can reference avoids this problem.

Previously, when you created a /Control object, you had to follow this form for its constructor:

var/Label/label = new("window1", "label1", src)

The parameters are the window ID, control ID, and the mob who owns it. Now you can arrange these parameters in any order (the first string is assumed to be the window ID). You can also specify the IDs in a single string (ex: "window1.label1").

I also removed some of the demos. Not all of them were as significant as I'd have liked them to be. I'll probably add more demos in later updates as I come up with better ones.

I fixed some problems with calling DM procs from JavaScript. The only thing I have left to add is the ability to pass hashtables back and forth between JavaScript and DM. I'm not sure how I'll handle the DM -> JS part, since hashtables in DM act the same as regular lists. I'm not sure if it's possible or sufficient to do something like this to figure out if a list is associative:

var/is_associative = 0
for(var/k in some_list)
if(!isnull(some_list[k]))
is_associative = 1
break

I'll have to look into this more.