[ANN] Public release of JSON Action Manager 1.0

Greetings!
I've been developing an alternative way of programming Photoshop in Javascript, based on JSON, as a more human-readable replacement for the code generated by the "ScriptingListener".
For instance, creating a Brightness/Contrast adjustment layer can be written like this:
//@includepath "~/JSON Action Manager/"
//@include "jamEngine.js"
jamEngine.jsonPlay
    "make",
        "target":
            "<reference>": { "adjustmentLayer": { "<class>": null } }
        "using":
            "<object>":
                "adjustmentLayer":
                    "type":
                        "<object>":
                            "brightnessContrast":
                                "brightness": { "<integer>": -15 },
                                "contrast": { "<integer>": 30 }
Version 1.0 of the JSON Action Manager scripting library in JavaScript for Photoshop is available; it is fully open source and is licensed using GPLv3. Some sample code is also provided.
Version 1.0 of the JSON Action Toolbox automation plug-in for Photoshop (Mac OS X only) is also available; it is being distributed as Freeware.
For more information, please visit my blog Tonton Pixel dedicated to Photoshop Scripting.
-- Mikaeru

JJMack wrote:
IMO this post should be in the Photoshop Macintosh forum....
As I read the announcement, it is about a different way to use Action Manger and there for should be posted here. Only part of it is Mac only but then again so is Applescript which is one of the Adobe supported scripting languages.
From the example posted I don't see that it is that much eaiser to read and only adds another layer to the code.

Similar Messages

  • PLM7.02: Status & Release Management/ Status and Action Management

    Hello,
                    I´d like to know if anybody worked with Status & Release Management. And has some example to how we can customize: SAM (Status and Action Management) in “Define Status Scheme” transaction.
                    How it´s works the relationship with: Status: Attributes, Status: Field values, Scheme Definition, Attributes: Definition.
                    I´ll appreciated if you could give me a simple example of this functionality.
                    Thanks in advance.
                    Best Regards from Brazil.
                    Rodrigo Arai

    Hi Rodrigo,
    in a nutshell:
    - you can define status network based on objects (w.g. material)
    - Define Attributes: you can define attributes like DELETION_ALLOWED or LOCKED_FOR_CHANGE and you can implement preconditions in custom classes when should it happen
    - Define Status Field: you can define some fields which are related to the status. e.g. in recipe management RCP_USAGE
    - Status: you can define the different statuses (e.g. in process, completed..) with attributes
    - Scheme Definition: you can define the logic between statuses. E.g. you would like to swith from status In Process to Completed and from New to In Process. Then switching from New to Completed is not possible for the user.
    - Subobject Type Scheme only applied if you have subobjects
    here you can find the customizing documentation, there are some examples as well:
    Define Status Scheme
    Use
    In this Customizing activity, you define statuses and status schemes for object types and corresponding attributes.
    For each status, you can define which attributes are allowed to be set for an object with this status assigned.
    The status scheme defines the initial status and the possible transitions from one status to another.
    Activities
    You define status schemes as follows:
    1. Select the required object type and enter the following:
    a) An identifier
    b) An object type class (Note: this class should implement the interface class)
    c) A subobject type search help
    The search help provides a list of all possible subobject types. This feature enhances the usability while  maintaining status schemes at subobject-type level.
    d) If the
    Status
    tab page shall be visible on the PLM Web UI, select the
    Status Tab
    checkbox
    Status and action management is a reusable object. It has been modeled as a dependent object. The prerequisites to enable status and action management for any new objects are:
    Add the Status and Action Management tab page on the UI.
    Enable the Status Tab checkbox in this Customizing activity.
    2. Select the required object type and define the following attributes for it:
    a) An object type
    b) An attribute identifier
    c) An attribute description
    d) An attribute type
    e) Select a precondition class (Note: This class should implement the '/PLMB/IF_SAM_PRECONDITION' interface)
    3. Define the technical status field name.
    When you change the object status, the system updates the technical status field names to the new values made in these settings.
    4. Select object type and define corresponding statuses.
    a) Select the status and define the corresponding object type, an identifier, description, and status icon.
    Note:
    You cannot define new statuses for materials and material BOMs. For these objects, all values should be transferred from the back-end system.
    You can import the status values from the back-end system as follows:
    b) Select the object type that represents a material or a MatBOM.
    c) Select
    Status
    in the dialog structure.
    d) Choose the
    New Entries
    pushbutton.
    e) Choose the
    Import Status
    pushbutton.
    Note
    The system imports the following status values into SAM:
    For material: the
    X-plant matl status
    (cross-plant material status)
    For MatBOM: the header status
    Although you cannot change the imported value for a material or a MatBOM, you can change its name and description to conform to SAM terminology.
    You can differentiate between the following cases for objects whose status values are imported from the back-end system:
    The object was not created on the PLM Web UI, but in the back-end system; no SAM status scheme or status was assigned, but a status value was set in the back-end system.
    If you assign a SAM status scheme to this object later on that contains the equivalent imported status values, the SAM status value is set accordingly, even if any precondition check results of the SAM status scheme may exist.
    The object was created in the back-end system or on the Web UI and a SAM status scheme is assigned to the object on the PLM Web UI.
    If the corresponding status value is changed in the back-end system, then existing SAM preconditions for this status transition and allowed status transitions are checked. If the preconditions are not fulfilled, a message is raised and the new status cannot be saved.
    5. Specify which attributes are allowed for each object type when the chosen status is set.
    a) Select a status and open the
    Attributes
    screen.
    b) Choose an object type.
    c) Choose an attribute.
    6. Define whether values from other technical fields are affected by setting this status.
    a) Select a status and open the
    Field Values
    screen.
    b) Select an object type.
    c) Select a technical field name.
    7. Specify the status scheme. The status scheme defines the initial status and status transition for the object type. For example, below is a list of standard status schemes defined for iPPE object types.
    Assembly Header - PLM_PPEAH
    Assembly Item - PLM_PPEAI
    Product Item Variant - PLM_PPEPIV
    Product Variant - PLM_PPEPV
    You can also create schemes for the object type as follows:
    a) Specify an identifier and description for the status scheme and set one of the statuses defined above as the initial status.
    b) Select the status scheme and open the
    Transitions
    screen. Enter all possible status transitions by specifying the source (
    Status From
    ) and target status (
    Status To
    c) Select the
    Long Text
    checkbox if you want the system to open the long text editor on the
    Status
    tab in the PLM Web UI. You can use the long text editor to create notes for this transition.
    8. Define the scheme at subobject-type level by entering following parameters:
    a) Object type
    b) Subobject type (You can choose from the list of subobject types you have specified when defining the search help in step 1)
    Alternatively, you can define a default status scheme that is automatically displayed on the
    Status
    tab.
    The following statuses are included in the standard delivery:
    10 -  In Work
    20 - For Approval
    LINKED_DIR
    LINKED_MAT
    LOCKED_FOR_CHANGE
    REPLACE_PH_ASSEMBLY (only in the PLM_PPEAI assembly item and the PLM_PPEPIV product item variant)
    30 - Released For Planning
    LOCKED_FOR_CHANGE
    40 - Released
    RELEASED
    SUB_ITEM_STATUS
    The following status transitions are possible:
    FROM
    TO
    Long Text checkbox (dialog box for notes)
    10
    20
    20
    30
    30
    40
    20
    40
    20
    10
    X
    30
    10
    X
    40
    10
    X
    More on SAP help:
    Status and Action Management on the Web UI - SAP Library
    Best regards
    Tamas

  • Photoshop CS5 Action Manager Not Responding

    I've been trying to port CS4 panels to CS5. The code below compiles without an error. It runs without throwing a runtime error. However, every call to the action manager causes the code to stop. Comment out the action manager code and everything runs.
    I also notice that the mx.Alert does not open an alert dialog. It causes the same issue. The code stops.
    This code works flawlessly with CS4.
    Any suggestions would be very welcome!
    Mitch
    private function makeLuminosityEdgeMask(maskWidth:int):void { 
    try { 
    var docRef : Document = Photoshop.app.activeDocument;  
    var docRef2 : Document = docRef.duplicate( "Duplicate" ); 
    var docName : String = docRef.name; 
    docRef2.bitsPerChannel = BitsPerChannelType.EIGHT;
    docRef2.flatten();
    docRef2.changeMode(ChangeMode.GRAYSCALE);
    var myArtLayer: ArtLayer = ArtLayer(docRef2.activeLayer); 
    // Blur photo prior to mask generation for wide and medium width masks
    switch (maskWidth) { 
    case maskWidthMediumEdges: myArtLayer.applyGaussianBlur(1.0); break; 
    case maskWidthWideEdges: myArtLayer.applyGaussianBlur(3.0); break; 
    default: break;}
    // Run the Find Edges filter
    var idFndE:Number = Photoshop.app.charIDToTypeID( "FndE" );Photoshop.app.executeAction( idFndE,
    null, DialogModes.NO ); 
    // Invert result of Find Edges filter
    myArtLayer.invert();
    // Apply curves adjustment
    var curvesShape:Array = new Array(new Array(20,0), 
    new Array(60,120), 
    new Array(90,180), 
    new Array(145,225), 
    new Array(255,255));myArtLayer.adjustCurves(curvesShape);
    // Apply maximum filter
    switch (maskWidth) { 
    case maskWidthMediumEdges: myArtLayer.applyMaximum(1.0); break; 
    case maskWidthWideEdges: myArtLayer.applyMaximum(2.0); break; 
    default: break;}
    // Apply median filter
    switch (maskWidth) { 
    case maskWidthMediumEdges: myArtLayer.applyMedianNoise(1.0); break; 
    case maskWidthWideEdges: myArtLayer.applyMedianNoise(2.0); break; 
    default: break;}
    // Apply Gaussian Blur
    switch (maskWidth) { 
    case maskWidthExtraNarrowEdges: myArtLayer.applyGaussianBlur(0.1); break; 
    case maskWidthNarrowEdges: myArtLayer.applyGaussianBlur(0.5); break; 
    case maskWidthMediumEdges: myArtLayer.applyGaussianBlur(1.0); break; 
    case maskWidthWideEdges: myArtLayer.applyGaussianBlur(2.0); break; 
    default: break;}
    // Apply AutoLevels to Mask
    myArtLayer.autoLevels();
    // Duplicate channel and rename
    var channelName:String; 
    switch (maskWidth) { 
    case maskWidthExtraNarrowEdges: channelName = maskLuminosityEdgesExtraNarrow; break;  
    case maskWidthNarrowEdges: channelName = maskLuminosityEdgesNarrow; break; 
    case maskWidthMediumEdges: channelName = maskLuminosityEdgesMedium; break; 
    case maskWidthWideEdges: channelName = maskLuminosityEdgesWide; break;}
    // Duplicate channel to original document
    var idDplc:int = Photoshop.app.charIDToTypeID( "Dplc" ); 
    var desc2:ActionDescriptor = new ActionDescriptor(); 
    var idnull:int = Photoshop.app.charIDToTypeID( "null" ); 
    var ref1:ActionReference = new ActionReference(); 
    var idChnl:int = Photoshop.app.charIDToTypeID( "Chnl" ); 
    var idOrdn:int = Photoshop.app.charIDToTypeID( "Ordn" ); 
    var idTrgt:int = Photoshop.app.charIDToTypeID( "Trgt" );ref1.putEnumerated( idChnl, idOrdn, idTrgt );
    desc2.putReference( idnull, ref1 );
    var idT:int = Photoshop.app.charIDToTypeID( "T " ); 
    var ref2:ActionReference = new ActionReference(); 
    var idDcmn:int = Photoshop.app.charIDToTypeID( "Dcmn" );ref2.putName( idDcmn, docName );
    desc2.putReference( idT, ref2 );
    var idNm:int = Photoshop.app.charIDToTypeID( "Nm " );desc2.putString( idNm, channelName );
    Photoshop.app.executeAction( idDplc, desc2, DialogModes.NO );
    // Close duplicate
    docRef2.close(SaveOptions.DONOTSAVECHANGES);
    // Release RAM;Photoshop.app.purge(PurgeTarget.ALLCACHES);
    // Refresh appPhotoshop.app.refresh();
    // Restore Channels palettedocRef.activeChannels = docRef.componentChannels;
    catch(error:Error) {Alert.show(
    "Error in makeLuminosityEdgeMask(): " + error.message);}

    Here is the code causing a run-time problem: 
    // Run the Find Edges filter
    var idFndE:int = Photoshop.app.charIDToTypeID( "FndE" );Photoshop.app.executeAction( idFndE, undefined, DialogModes.NO );
    The error is "NULL pointer was encountered"
    This code was fine with PatchPanel and Photoshop CS4.
    The second and third parameters are declared in the interface as optional. The second paramter is an optional ActionDescriptor.
    Mitch

  • Using Coursebuilder Action Manager to judge multiple interactions

    I'm trying to use the Action Manager to display feedback when three separate text entry interactions on a page are completed.  At the moment each interaction displays feedback and is disabled when completed.  When all three have been completed I want another instruction to appear.
    I have two layers with feedback, one for the feedback from each interaction and another where the instruction is to appear when all 3 are complete.
    I can get the instruction to appear when judging the Action Manager using a submit button, but not when I try and have it judge the completion of each interaction.
    I have read the tutorial on the coursebuilder support page and tried the example in this situation, but it seems to be doing something different to what I'm hoping to achieve.
    Anyone know how I can do this?

    MDouglasNZ
    As far as I am aware it is best practice to only use one judgeable interaction per page, otherwise it starts misbehaving. I have only ever used one interaction on a page.

  • I get a message that says "This version of pre-release ios will expire in 7 days" What should I do? I am currently running ios 8 GM and I can't update to the public release version.

    I get a message that says "This version of pre-release ios will expire in 7 days" What should I do? I am currently running ios 8 GM and I can't update to the public release version. I am stuck in the beta. Itunes will not let me restore my iphone or update it. PLZ HELP ME

    Wondering if you have a current Backup on iTunes ...if yes you could put the iPhone in DFU Mode by holding the Home button while you plug in the lightning cable.  Then you could Restore the iPhone to Factory Settings on 8.0.2 and after a full Restore go back and then Restore from your Backup.  This happens every time a public release occurs.  Many folks on the Golden Master or otherwise in the AppleSeed program with a Beta version for some reason don't move to the official release ...then the software time-bomb hits and they can't upgrade.

  • Handoff broken in Public Release, but works in Beta. Help?

    I have a partitioned drive; one that was strictly a Yosemite beta install, and my day-to-day work machine that had been in working order.
    This second drive was updated to the public release of Yosemite.
    Here is one of my many dilemmas with Yosemite:
    Handoff is broken.
    Doesn't work, ever.
    In the Beta build: Works like a champ! Every time.
    Yes, all my software is up to date, and my hardware is supported.
    Any insight on resolving this?

    I have a partitioned drive; one that was strictly a Yosemite beta install, and my day-to-day work machine that had been in working order.
    This second drive was updated to the public release of Yosemite.
    Here is one of my many dilemmas with Yosemite:
    Handoff is broken.
    Doesn't work, ever.
    In the Beta build: Works like a champ! Every time.
    Yes, all my software is up to date, and my hardware is supported.
    Any insight on resolving this?

  • I can't upgrade to Yosemite public release from Public Beta 2

    I'm currently running Yosemite public beta 2. When I try to upgrade to Yosemite public release, The app store is saying the following
    We could not complete your purchase.
    A newer version of OS X is already installed on this computer. Are you sure you want to download OS X 10.10?
    The options are "Learn more" or "Ok"
    OK does nothing.
    Checked the purchase tab, Public Beta 4 is available for download.
    Kindly help

    Try logging out of the App Store, restart the Mac, log in again. That might clear it.

  • Upgrade from Yosemite Beta to full public release

    I'm struggling with updating my Macbook Air, I installed the public beta of OS X 10.10 (Yosemite) I now want to wipe clean my drive and install the full public release.
    Every-time I install direct from the App Store, Beta version 4, I've tried booting into recovery mode, Disk Utility and wipe the SSD, re-download guess what Beta 4.
    I've get and understand this is driven by the fact my recovery partition is Yosemite Beta, what I'm looking for is how can I overwrite this with the full general public release version.
    Passing note, I know there is not much difference only really finial build number etc. but its frustrating when I perform a clean install, open the app store to be treated with the same beta upgrades...
    any help would be appriciated, I have 2 other iMacs which can be used to create a bootable OS X USB or a networked install route should this be required.

    Download the Yosemite release from the App Store and save it. You will need to erase your hard drive and install anything from Snow Leopard to Mavericks before you will be able to download Yosemite. There is no way to upgrade the beta.

  • Release Notes SAP Solution Manager 7.0 EhP1 - SP21 - SP23  available

    Now available:
    [Release Notes SAP Solution Manager 7.0 EHP 1 - SP 21-23|http://service.sap.com/~form/sapnet?_SHORTKEY=00200797470000090041&_SCENARIO=01100035870000000202&_OBJECT=011000358700000528082010E]
    The document is published in the following folder with "Technical Information":
    [http://service.sap.com/~form/sapnet?_SHORTKEY=00200797470000090041&_SCENARIO=01100035870000000202&]
    SP23 includes several new functions in the area "Application Incident Management", which have been requested by VARs.
    Regards, Ruediger

    Please see also this detailed presentation:
    [SAP Solution Manager SP23 - New Functions for VAR Partners|http://service.sap.com/~sapidb/011000358700000580432010E]

  • Update from Yosemite Beta to Public Release Issues

    I have been using the Yosemite Public Beta for a few months now, and I am wanting to install the public release of Yosemite from the Mac App Store. Every time I download the full install from the App Store and start installation, about 80% of the way to completion, my MacBook just resets and goes back to my desktop? The install app is deleted and the App Store does not show that I have installed it? Am I doing something wrong?

    You cannot...there iOS no incremental download.  You have to go to the App Store, Purchases and download all 5.16 GB of the installer.  There were minor changes in going to the final, but the requirement now is to download the complete installer.  It comes into Finder, Applications as OS X Yosemite Installer.

  • Upgrade to Public Release

    Hi all, first timer here. I need to update from a the last beta of ios 5 to the gm, how do do this!?
    Thanks in advance

    Put your iPhone in dfu mode by holding down the power and home buttons, till your phone restarts and you see the apple logo. Release your power button, but continue holding down the home button. You should then see a screen that asks you to connect to iTunes. Once you connect to iTunes on your computer you will be prompted to restore the phone. This will download the latest public release firmware and install it on your phone.

  • Date management,Status Management,Action Management

    Hi experts ,
    This is Madhusudan,I have godd conseptual knowledge on Datemanagement,Status Management,Actiona Management,but I would like to know how to configure these things in CRM.
    Thanks nad regards
    Madhusudan

    Hi Madhusudan,
    <a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/c87bb93d-0b01-0010-a0b4-b04d7fda745f">Action Management</a>
    <a href="http://help.sap.com/saphelp_crm31/helpdata/en/d4/fce93a29768802e10000000a11402f/frameset.htm">Date Management</a>
    <b>Reward points if it helps.</b>

  • Action Manager Suite Functions.

    Hello,
    I have an other question about Illustrator API and how to use it. After having
    rasterized some parts of illustrator artwork (http://www.adobeforums.com/webx/.59b52ce4/1, thanks to A. Patterson), I would like to "export" or to "save as" this parts as jpeg for exemple. So I tried to used Action Manager Suite, but it was not a success.
    - first of all, I did not find the "AIActionManagerEvents.txt" file, they are talking about in the sdk. Is anyone knows where I could find it?
    (in order to check the event name for "Save as" or "Export").
    - PlayActionEvent is the method I have to use, but the example given in the Adobe Illustrator SDK Function reference is quite simple. I tried to do some stuff with that, but it did not work. Is there any other code snippet with "PlayActionEvent" ?
    Any help will be appreciated.
    Best Regards,
    Thomas.

    I'm afraid I've never seen the mythological AIActionManagerEvents.txt either.
    The best way we've found is to to parse the action manually. Typically this means recording the action you'd like to perform programatically and then saving it. Make an action set and record the action you want to invoke from code. Save the action set out somewhere where you can find it. It should create a .aia file, which is basically a text file. If you open that up you can see all the events (actions) in sequence. The file contains their 'internal name' (I think this is what you use to invoke them from PlayAction) as well a listing of the parameters the action expects.
    Unfortunately, you'll have to reverse engineer out the parameters. So long as they're simply types like real or integer, you can usually figure them out with trial & error. Some will require you to be more creative though, particularly the binary ones. In this case you just get a blob of binary data as a hex string. There is *probably* a struct somewhere in the SDK that matches that, it's simply a matter of figuring out which struct it's expecting. One tip I can give you there is to use sizeof() on a struct if you think it's the one that's expected; I believe the size of the parameter is included in the .aia file's parameter entry. So if they match, there's a good chance you've found the right struct. Most times though, I think you could probably guess what it's expecting.
    Anyways, that's not a lot of help, but I hope it's enough to get you started. If you have any more question post away.

  • IOS Beta and updating to public release?

    I am new to using iOS Beta. I used the iOS 5 beta and now that the public release is out what do I need to do to update to the public release instead of the Beta? Thanks

    Since you are either a beta tester or a developer you need to post your question in the Developer's Forum or contact the developer who got you the beta version.

  • Action manager definition

    Hello there,
    I am getting an error message after copying ABAP program RELEABL3 to Z*.
    The error message is:
    "Action Manager definition report' ZRELEABL3 id 0001 status 0000LIST not available."
    Do anyone know how to create Action Manager for specific program.?
    Thank you in advance.

    Hi,
    Copy all the GUI Status 0001LIST also.
    Open the program RELEABL3 in SE80 and find out which are all the objects you have missed.
    Copy them and activate.
    Regards
    Subramanian

Maybe you are looking for

  • "Delete messages from server" Mail iPhone 5

    Hi, I am trying to locate "delete messages from server" option in Mail Settings on iPhone 5 and can't find it. In iPhone 4 it was just in the Advanced settings but it is not there in iPhone 5. Help please? Thanks

  • Itunes keeps crashing when trying to sync my iPhone 4s

    Every time, I put my iphone in its dock, itunes opens (which is fine) and then tries to sync the device - including the back up. By this, I mean it is going through the 6 step process. At step 6 though, it crashes. Which is INCREDIBLY frustrating. Wh

  • Invisible shield left a sticky residue...how do i remove it

    Hi everyone, I had a problem with my invisible shield so i called them up and they sent me a replacement. I just riped off the front of my invisible shield off of my 30gb ipod video i did it very slowly, but damm this thing was stuck down. Now it lef

  • A sample coding for fun. module ' MRM_DBTAB_RSEG_READ' using subroutine

    i need to have this function module within the subroutine. something like this perform item_detail using p_belnr p_gjahr changing  i_irseg loop at i_irseg. write:/ i_irseg-belnr. endloop. form item_detail using p_belnr p_gjahr changing  i_irseg CALL

  • I am having difficulty using the scroll effects

    Hello I am starting a basic website for my art portfolio for university and want to add scrolling images that dissapear when the user scrolls down. I have done this but the images behind on small screens get cut off at the bottom so the title is miss