This is an application to help you develop expressions for use in MMF. It works as a markup language, letting you write your expressions in E++, using comments and local variables, and then convert them into MMF's expression code.
You then copy and paste it into MMF, and voila! So long as all the objects you refer to in your expression exist, you should have a fully functional expression!
You can organise your sheets within Collections, renaming them, popping them in folders, and so on.
The app contains everything you should need to start using it at once! Any queries and bugs can be posted on the devlog, which lives here:
Known Bugs
Obviously it's a beta, so it's not a perfect puppy!
It may require a restart after the first use before Windows fully registers the *.EPC file format with E++.
I think that's it, any bugs, mention here or on the devlog forums, and other than that: enjoy!!
This is a VERY useful application!!
CHANGES AND FIXES IN b.028:
- Delete error on close: Should be resolved now.
- Bizarre log names: Should be resolved now.
- Right-click menu: Added to RTF text area.
- Stray list object on the right: Removed.
It seems to be a very interesting and useful tool. great job.
It could be better if:
- The list on the right was not displayed (if you resize the window, you see it)
- The code was colored
- The right click should works
- There is an error while deleting a folder after closing the application
It's a great work and will be very useful! Comment edited by Sphax on 4/3/2008
I wondered about that, but I've got it at last! It was a problem with Instance Communicator object, for some reason after running a subapp, it thought the instance ID was something enormous like 1887762.
So basically, your object was trying to delete a folder which didn't exist (deleting 'tmp188762' instead of 'tmp1'). Now it should all be dandy
That could be great to have an object manager like MMF2 where you can select expressions from a popup menu. In this one you could create all the expressions of an active object.
...do you know if there's a handy coder who could develop an extension to retrieve expression names and types from MMF extensions? (Sphax, have I ever told you you're great? )
EG:
Action: Load an extension ...
Expression: Number of expressions
Expression$: Get Expression Name
Expression$: Get Expression Type
The last one could maybe return "integer", "string" or if possible, "float".
If this were possible, I could get E++ to scan the MMF extensions directory and then refer internally to the objects currently installed.
So it could possibly try matching datatypes (so it warns if you get a type missmatch error, and isolates where it occurred), or doing auto-complete.
And it could be useful for you in creating the next version of Fusion Updater - imagine if you could show beforehand all the expressions, actions and conditions! It'd enable people to see exactly what an extension does before they try it (some of the names and descriptions aren't always self-explanatory). Comment edited by DeadmanDines on 4/4/2008
I think we could interface our applications (FusionManager/E++).
I'll try to see if I can get the list of all the expressions and the popup menu associated.
For example, E++ can open FusionManager in a special mode, the user will be able to select an extension and an expression and return the result to E++.
And FusionManager can open E++ to let the user create an expression.
I'm not sure exactly what FusionManager does though? Is it to organise your extensions or something?
What I had planned for E++ was to be able to scan all extensions currently installed and maintain a database of their expressions. Then, while parsing the current expression, it would look up any expressions you have written, to determine their type.
I had also planned a dialog kind of like you described, where a button is pressed and it brings up an object selector. But given the huge number of objects available to MMF, it wouldn't be viable to add expressions from there (imagine using Zip object - you'd have to scroll down hundreds of extensions every time you wanted to add an expression).
My plan had been to allow the user to 'add an object', so objects would appear as icons below your current expression (where E++ is currently grey).
Then, you could clone or rename these objects and left-click them to bring up a popup of their expressions.
This is pretty awesome, but when I make big expressions I don't usually know they're gonna be huge... So I don't remember to open E++ :\.
I made this though:
(Left$(Text$("Text Blitter"),ReverseFind(Text$("Text Blitter")," ",Line Length("Text Blitter")))+NewLine$+Right$(Text$("Text Blitter"),Len(Text$("Text Blitter"))-1-ReverseFind(Text$("Text Blitter")," ",Line Length("Text Blitter"))))+" At "+str$((CompareIntegers$("Immediate If Object",GetValue("Save","Time")/60/60,"<",10,"0"+Str$(GetValue("Save","Time")/60/60),Str$(GetValue("Save","Time")/60/60))+":"+CompareIntegers$("Immediate If Object",GetValue("Save","Time")/60,"<",10,"0"+Str$(GetValue("Save","Time")/60),Str$(GetValue("Save","Time")/60))+":"+CompareIntegers$("Immediate If Object",GetValue("Save","Time")mod 60,"<",10,"0"+Str$(GetValue("Save","Time")mod 60),Str$(GetValue("Save","Time")mod 60))))
{it won't do anything unless you need to spilt a string after a certain number of characters and add a line break then write the time in seconds but in the form 00:00:00)
Eternal Entertainment: You may find it works for TGF or MMF1.5, if that's what you use right now
It just means that you have to avoid using things like ^ or POW, since raise-to-the-power isn't supported in TGF. Comment edited by DeadmanDines on 4/5/2008
two balls bouncing...
new_A1=((((((Alterable Value A("Ball2"))*(((Alterable Value X("Ball2"))-(Alterable Value X("Ball1")))/(sqr((((Alterable Value X("Ball2"))-(Alterable Value X("Ball1")))*((Alterable Value X("Ball2"))-(Alterable Value X("Ball1"))))+(((Alterable Value Y("Ball2"))-(Alterable Value Y("Ball1")))*((Alterable Value Y("Ball2"))-(Alterable Value Y("Ball1"))))))))+((Alterable Value B("Ball2"))*(((Alterable Value Y("Ball2"))-(Alterable Value Y("Ball1")))/(sqr((((Alterable Value X("Ball2"))-(Alterable Value X("Ball1")))*((Alterable Value X("Ball2"))-(Alterable Value X("Ball1"))))+(((Alterable Value Y("Ball2"))-(Alterable Value Y("Ball1")))*((Alterable Value Y("Ball2"))-(Alterable Value Y("Ball1")))))))))-(((Alterable Value A("Ball1"))*(((Alterable Value X("Ball2"))-(Alterable Value X("Ball1")))/(sqr((((Alterable Value X("Ball2"))-(Alterable Value X("Ball1")))*((Alterable Value X("Ball2"))-(Alterable Value X("Ball1"))))+(((Alterable Value Y("Ball2"))-(Alterable Value Y("Ball1")))*((Alterable Value Y("Ball2"))-(Alterable Value Y("Ball1"))))))))+((Alterable Value B("Ball1"))*(((Alterable Value Y("Ball2"))-(Alterable Value Y("Ball1")))/(sqr((((Alterable Value X("Ball2"))-(Alterable Value X("Ball1")))*((Alterable Value X("Ball2"))-(Alterable Value X("Ball1"))))+(((Alterable Value Y("Ball2"))-(Alterable Value Y("Ball1")))*((Alterable Value Y("Ball2"))-(Alterable Value Y("Ball1"))))))))))*(0.5))*(((Alterable Value X("Ball2"))-(Alterable Value X("Ball1")))/(sqr((((Alterable Value X("Ball2"))-(Alterable Value X("Ball1")))*((Alterable Value X("Ball2"))-(Alterable Value X("Ball1"))))+(((Alterable Value Y("Ball2"))-(Alterable Value Y("Ball1")))*((Alterable Value Y("Ball2"))-(Alterable Value Y("Ball1"))))))))-(((-1*(Alterable Value A("Ball1"))*(((Alterable Value Y("Ball2"))-(Alterable Value Y("Ball1")))/(sqr((((Alterable Value X("Ball2"))-(Alterable Value X("Ball1")))*((Alterable Value X("Ball2"))-(Alterable Value X("Ball1"))))+(((Alterable Value Y("Ball2"))-(Alterable Value Y("Ball1")))*((Alterable Value Y("Ball2"))-(Alterable Value Y("Ball1"))))))))+((Alterable Value B("Ball1"))*(((Alterable Value X("Ball2"))-(Alterable Value X("Ball1")))/(sqr((((Alterable Value X("Ball2"))-(Alterable Value X("Ball1")))*((Alterable Value X("Ball2"))-(Alterable Value X("Ball1"))))+(((Alterable Value Y("Ball2"))-(Alterable Value Y("Ball1")))*((Alterable Value Y("Ball2"))-(Alterable Value Y("Ball1")))))))))*(((Alterable Value Y("Ball2"))-(Alterable Value Y("Ball1")))/(sqr((((Alterable Value X("Ball2"))-(Alterable Value X("Ball1")))*((Alterable Value X("Ball2"))-(Alterable Value X("Ball1"))))+(((Alterable Value Y("Ball2"))-(Alterable Value Y("Ball1")))*((Alterable Value Y("Ball2"))-(Alterable Value Y("Ball1"))))))))
"expression too complex"
It would be nice if it could automatically split it up somehow, so MMF can actually handle the resulting formula. Otherwise it's very impressive. Comment edited by Sketchy on 5/23/2008