Switching panels in Adobe After Effects using Extendscript - extendscript

In After Effects I have written a panel that (among other things) switches between different compositions using Extendscript.
I use the myComp.openInViewer() function to switch between compositions.
A side effect of this function is that the viewer becomes active. This means that you first have to click on my custom panel before the user can click on the next action. This is a bit of a hassle, because the point of my script is to quickly compare compositions and a few extra click defeat the whole purpose.
Is there a way to put the focus back on my panel via a Extendscript command (or something else)?
I use After Effects CC 2014 on a pc. The panel is written in html5 and thus uses a lot of embedded JavaScripts. Through these scripts I call the .jsx-files.
Hope there is a solution.
Thanks,
Geert

Related

Godot: Is there any way I can invoke a method in my Script from the editor? (for testing purposes)

I come from Unity, and there you can use ContextMenu method attribute. It will add a button in the editor you can click and the method in your script will be invoked.
This is very helpful for testing/debugging purposes. When you are testing a functionality and you want an easy way to trigger it.
Is there something similar in Godot, or any workaround I can use?
(Godot 3.5 here)
There are multiple ways to run code in the editor.
In fact, Godot games and the Godot editor are built on the same core. One way to say is that Godot is build on Godot… But a more accurate way to say it is that your games are Godot without the editor, plus whatever you built on top.
As a consequence, you have a lot of freedom when extending the Godot editor.
For starters you will be making a tool script. To do that you the tool keyword on the top of the script file. This allows the script to run in the editor.
Warning: Remember that in Godot the Game is not running inside the Editor. Anything that your script moves while running in the Editor would be a modification to the project, for good or ill. And it does not come with build-in undo functionality. It is possible to add undo functionality (with the UndoRedo class), but that is also something you would have to program.
By the way, you might want to know if your code is running on the editor or not. For that, you can check Engine.editor_hint which will be true in the editor.
Read more on the article Running code in the editor.
Since the tool script modify the project. What I present below is more often used to setup parts of the scene or to automate parts of the development workflow. Not for testing features. However since the linked documentation about ContextMenu mentions that it is useful for…
automatically setting up Scene data from the script
I believe what present below is not out of place.
With that said, some modifications of the editor are harder than others. I believe you don't really want to go into the trouble of adding a button to the editor (which is perfectly possible) or an option to the menus (which is also possible, but not everywhere, at least not easily). Instead, I'll stay with the easy options for this answer:
You can make an EditorScript. That is a script that extends the EditorScript class and overrides the _run method. For example:
tool
extends EditorScript
func _run():
print("Hello from the Godot Editor!")
To execute it, have it open in the Script Editor, and to the File menu, and select Run. You can also use secondary click on the script on the "Scripts Panel (on the left of the Script Editor) and select Run in the contextual menu.
The drawback is that is script does not work in the game. It is only for the editor.
Although Godot 3.x does not have official (there is a plugin) support for inspector actions (it might land in Godot 4), we can workaround that. What we will do is export a bool property, and handle (with a setter, which we specify with setget) what happens when you set it. Like this:
tool
extends Node # or whatever
export var do_something:bool setget on_do_something
func on_do_something(_mod_value:bool) -> void:
# do whatever you want
pass
The property should show up as a checkbox in the Inspector panel when the node is selected. And clicking the checkbox will trigger the setter method on_do_something… Which will do whatever you want it to do. Notice also that I'm discarding the value that Godot is trying to set to the property (_mod_value) so it will remain false.
This pattern has got popularity among Godot developers.
If you want to add elements to the Godot UI you would have to make an EditorPlugin (see the Editor Plugins section in the documentation).
Alright but, since the tool script could cause modifications to the project, which might be a problem for testing… What do we do for testing?
Well, I will remind you that you can tell Godot to execute specific scenes (it does not have to run the main scene), and that can another way to test your code.
Furthermore, when your game is running you can go to the Scene panel and select the Remote tab to see the Nodes that exist in the game. Which will allow you to select them, which shows their properties in the Inspector, which would be able to modify (having an effect in real time on the executing game).
… And thus something similar to what I described above about using a setter would work. Except it does not need the tool keyword since it won't be running in the editor:
# No tool
extends Node # or whatever
export var do_something:bool setget on_do_something
func on_do_something(_mod_value:bool) -> void:
# do whatever you want
pass
By the way, in the inspector, when the game is executing and you have the relevant Node selected, you will see your property twice. The first one will trigger the setter, while the second one bypasses it. So pay attention which one you are using.
You might also be interested in the "Project Camera Override" feature, which allows you to freely move the game camera from the editor. You access the feature via the top bar in the editor.
You will also find that it is possible to modify Resources in the editor and see the effect in real time while the game is running. And a Script is a Resource… However pause the game from the Debugger panel (or use a breakpoint) and make sure the script you want to modify is not being executed before you modify it.

How do I use Structure to output a select menu

I am working on a responsive site and need to output my Structure powered nav into a select menu for smaller screens. In looking at Structure's documentation this doesn't seem possible natively. Am I missing something?
After some digging it seems like the add-on Structure Entries is the ticket I need with one caveat. SE has quite a bit of overheard (in terms of queries) while using it to spit out custom nav. What's the best approach to minimize the impact performance for complicated menus?
I am doing this currently using Twitter Bootstrap's Button Dropdown javascript plugin. http://twitter.github.com/bootstrap/javascript.html#dropdowns
I also use MX Mobile Device Detect to serve devices the dropdown while the desktop users get the full menu.
I think the Dropdown Button script only allows for a single level list, however since its mobile do you need more than one?
I know it's obviously preferable to do it in the template itself, but a JS alternative is TinyNav.js.
It will convert your nav to a select dropdown.
http://tinynav.viljamis.com/

Recommendation for a multi-instance jquery dialog/overlay

Ok. had enough of trying out lightboxes, overlays and dialog boxes plugins. The problem is that very few of them support nested (multiple) dialog open at the same time - a typical requirement in my opinion.
I'm looking for a recommendation for a simple plugin that:
supports callsbacks for the usual onShow/onLoad... events
supports nested instances i.e. the user open a dialog, clicks a button on it, another dialog opens up while keeping the first one open in the background. In other words, it should support the closure of each instance programatically
is NOT the jquery ui dialog plugin
This came about after the big disappointment with SimpleModal's inability to support multiple modal boxes open simultaneously!!!! #EricM, why would you do that to me? why???? ;)
I have narrowed it down to jqModal and the jquery tools overlay. The usage of the latter is weird. Maybe i'm tired but i just don't get it.
So before i dive into jqModal, does anyone have any recommendation based on personal experience that will achieve what I'm trying to do?
thanks

Alternatives to Struts-Menu for Menus in Struts 2.X Application

Per user feedback, I am opening a new question for this topic.
So I am currently using Struts-Menu to handle my menu needs for my Struts 2 J2EE application. It is not necessarily a package I wish to work with I have found by playing around with it. So what are some alternatives to this package? I immediately flocked to Struts-Menu because I saw a fair amount of web search traffic pointing to it, including those who use Struts2. What I am worried about is difficulty in the future of making it work with other packages, given its 2007 last update and the extra tap dance I had do to make it work with my configuration. It seems too fragile at this point for my taste.
I have several different menus in my app, but the one I am specifically addressing at the present is like this ... The top level menu drops down upon mouse hover over it. The submenus expand horizontally upon mouse hover. Exactly one menu item can be selected as no radio buttons or check boxes are contained in the menu. This particular menu does not require db access to populate its children. It works sort of like Velocity CoolMenus4 from the Struts-Menu demos.
I've never used struts-menu, but it looks like overkill to me.
I would recommend that you locate a menu that you like and then write a tag file to handle outputting it in your view layer. To me, that's a lot easier than using a framework or library just to output a menu. Plus, its specific to the actual menu you want to use. Your tag can handle doing security checks to ensure that the user only sees what they have permission to access, etc.

How to modify menus items in WMD editor forks?

I am just getting into the WMD editor varieties out there :) Of all of them I like MarkEdit because of the ability to modify the menu items quite easily, but it doesn't do a couple of things that I really like in a couple of forks, for example, http://github.com/openlibrary/wmd.
Ideally my perfect WMD editor would:
create list items automatically on pressing return when in a list block (not implemented in MarkEdit)
allow the removal of menu items (implemented in MarkEdit)
the cheat of making a newline without the need for two spaces (implemented in MarkEdit)
As point 1. and 2. are both quite important to me, but I imagine 1. is harder to implement, I may have to use the forks such as the openlibrary-wmd rather than my preferred choice of MarkEdit.
How can I modify the menu buttons in a fork like openlibrary-wmd? The configuration function no longer seems to work as described for the original.
I recently used the markitup editor and found the skin implementation pretty useful. Each skin has its own images and styles which you can easily override if you need to. The editor is also jQuery-driven, which is nice if you're used to that syntax. Check it out

Resources