Damon D Bell
Engaged
Damon D Bell
Engaged
Activity
‎Oct 20, 2020
09:26 PM
I understand that. I have developed a few very complex automation panels. So I'm really concerned that my panels will become unusable in the near future. I have a lot of homework to do for sure.
... View more
‎Oct 20, 2020
08:48 PM
2 questions - 1. Will UXP still be able to run JSX code similar to CEP? I know it will run without JSX but wondering if running JSX will still be an option 2. Will JSX scripting itself be phased out entirely? Not just from the perspective of plugins, but for JSX scripting in general with stand alone scripts.
... View more
‎Oct 20, 2020
08:23 PM
Do you know if UPX will be able to run JSX files/functions. I was just looking through some of the documentation but so far haven't seen anything referring to JSX.
... View more
‎Oct 20, 2020
04:33 PM
The extension menu now says legacy in CC 2021. What does this mean? Are HTML panel extensions being phased out?
... View more
‎Oct 10, 2020
11:37 PM
*DaveAitch Is your computer giving the exact same Assertion Failed! error message that I posted? If not then it may be a different issue. In all the testing I have done on many different systems, the Assertion Failed! message happens from 450-500 images on every Windows system. I tested 7 or 8 systems and all did exactly the same thing. If your system is doing something different than the Assertion Failed! error then it may be best to create a new post with better details regarding the error you are getting. Your reply was pretty vague and didn't provide much detail about the actual error you are having.
... View more
‎Sep 29, 2020
04:14 PM
1 Upvote
@JeffreyTranberry Running the liquify tool itself 475-500 times within a given Photoshop session causes it. That is only counting the Liquify steps and not counting anything in between the liquify steps. I have some scripts that use it as part of the scripts. For troubleshooting, the easiest way to reproduce it is with a 1 step action and batching the action on a folder of more than 500 images. Here is a link to a video I made showing the issue happen. https://www.youtube.com/watch?v=Nyl6YfpHOBw
... View more
‎Sep 29, 2020
04:06 PM
@JeffreyTranberry
Thanks for the reply. It gives the message from the screenshot. When clicking abort or retry it just gets stuck. I have to use Task Manager to close Photoshop. So I don't think it generates a crash report.
Between myself and a few other users I know, we have tested 7 or 8 PCs and all of them do the same thing. Also for my 2017 iMac, the same test would freeze then entire computer at 250-300 images and require the system to be shut down. Force quit wouldn't even shut it down. I have to push the power off button to shut it down on my Mac. For the Mac, there was no error at all. Just the computer freezing. An interesting thing is that with the Mac, turning off the Auto Show Home screen setting in the preferences prevents it from happening. I tried that on Windows but it didn't help. I only have 1 Mac to test. I had a couple of people I know run the same test and their Macs did not freeze. On Windows it appears to be a universal issues to all systems. On Mac, the issue seems different and only affecting some systems. I'm pretty sure that you can recreate the issue on a Windows system by setting up a 1 step action to run Liquify. Then just batch process the action with more than 500 images. For the action, just doing something simple like add +25 on the smile in Liquify should be all that is needed to recreate it. Hope this info helps. If you need any more information or need me to do any further testing then let me know. This issue is really important for me so I can do whatever testing you need me to do.
... View more
‎Sep 29, 2020
03:04 PM
28 Upvotes
If the Liquify Tool is used between 475-500 times within the same Photoshop CC 2020 session it gives an Assertion Failed! error and crashes Photoshop. This is very repeatable and happens on every Windows system in my testing. I originally reported this back in version 21.2.2. It is still happening in version 21.2.4. I never received any reply to the prior post so not sure if anyone from Adobe saw it. It is easy to recreate this. Just running a 1 step action with Liquify in a batch process will always crash Photoshop with this error from 475-500 images. This only happens in CC 2020 but not CC 2019.
Image is not available
... View more
‎Sep 10, 2020
04:12 PM
Thanks!!!!
... View more
‎Sep 10, 2020
12:29 PM
Does anyone know if there is a way through Adobe Extend Script to detect if the Auto Show Home Screen is turned on in the preferences for CC 2020?
... View more
‎Dec 13, 2019
12:00 PM
Anyone know if it is possible to get the Date Taken metadata from a file and write that timestamp into the Date Created meta data? Preferrebaly, this would be done without opening the file in Photoshop and also done directly through a PS script. I have a batch automation script that processes files and saves new modified copies of each image. Some users need the Date Created data to be the date/time the photo was taken in order to match times to barcode scanner data in another software. When a new image copy is saved, the OS creates a new Date Created timestamp. Preferrably, I'd like to have the script just update the Date Created meta data to match the Date Taken meta data after the image is saved without reopening the file. Not sure if this is possible or not.
... View more
‎Mar 02, 2019
02:06 PM
Anyone know how long Photoshop keeps images for HTML panels in cache (for online URLs, not local)? Also, any easy way to control this? For a website this would typically be done inside the .htaccess file on the server. I have no idea how Photoshop handles this.
... View more
‎Jan 13, 2019
05:52 PM
1 Upvote
Thanks. LOL, I had actually tried 5-9 for that but stopped there and was then trying to figure out how to read into the action descriptor. Did you just use trial and error to test until you found 10 worked? Or are you able to get that information from the action descriptor?
... View more
‎Jan 12, 2019
04:02 PM
I got this function form users r-bin and SuperMerlin in this group about a year ago. It gets the name of the current workspace and works fine in CC 2018 on Windows. However, Something changed in CC 2019 and it doesn't in CC 2019. It gives "Error 8500: The requested property does not exist" for this line var list =desc.getObjectValue(7).getList(stringIDToTypeID("submenu")).getObjectValue(1).getList(stringIDToTypeID("submenu")); The action descriptor gets created fine in the line above. I'm wondering if the action descriptor is just structured differently in CC 2019 than in 2018. So maybe the information is still in there but not in the same location in the descriptor. I have a general understanding of what this function does. It basically is reading the menu items and looking for the workspace name after the word Reset in the menu. However, I don't know how to see what is inside the action descriptor itself to be able to modify this to work in CC 2019 (if the info is in there somewhere). How do you go about fetching information from an action descriptor with unknown contents? function currentWorkspace(){ var ref = new ActionReference(); ref.putProperty( charIDToTypeID( "Prpr" ), stringIDToTypeID( "menuBarInfo" )); ref.putEnumerated( charIDToTypeID("capp"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt")); var desc = executeActionGet(ref).getObjectValue(stringIDToTypeID("menuBarInfo")).getList(stringIDToTypeID("submenu")); var list =desc.getObjectValue(7).getList(stringIDToTypeID("submenu")).getObjectValue(1).getList(stringIDToTypeID("submenu")); for (var i = 0; i < list.count; i++){ var find = list.getObjectValue(i).getString(stringIDToTypeID("title")); var find2=find.substring(0,6); if(find2 == "&Reset"){ var workspace = find.substring(7); break;} } return workspace; }
... View more
‎Jul 27, 2018
10:25 AM
I already fixed it using the tilde on the keyboard instead of copying and pasting from the spreadsheet. Just thought it was interesting that there are 2 tilde characters. From jsx, .charCodeAt() reports code 8764 from what was in my spreadsheet. That is apparently the "tilde operator" character, not the normal tilde. I have no idea how I got the 8764 character into the spreadsheet in the first place instead of 126. So, just typing in the file name and all is good
... View more
‎Jul 27, 2018
09:29 AM
Thanks. It seems there are 2 different tilde characters. I had done a copy and paste from a spreadsheet I had with file names to use and it didn't work. Anyway, I noticed the tilde character in my post online looked different that the tilde character in your post. I tested by copying and pasting each one in the file name and the one in you post worked and the one in my post didn't. In the file name, they both look identical to the keyboard tilde. ....strange. Sp apparently, my spreadsheet was save with the wrong tilde character. So the bottom line is to just type it in and it will work.
... View more
‎Jul 27, 2018
08:16 AM
Is there a way to hide a jsx file from the Photoshop scripts menu other than putting it into a sub folder ending in "Scripts Only". I tried adding ∼ to the beginning of the file name, which I thought was another way. However, that is not working.
... View more
‎Jul 12, 2018
05:53 AM
I had a similar issue which was fixed by resetting the Photoshop preferences. For my case, if I clicked the mouse anywhere outside of the panel then the panel would close. I don't think I had any preferences set that were actually causing it. I think there was just something wrong with the prefs file itself.
... View more
‎Jul 03, 2018
07:45 AM
You can record an action to run your jsx script. Then batch process the action. I do it all the time
... View more
‎Jul 02, 2018
07:34 AM
Thanks for the code. It works just like you describe. However, I need to be able to set initial parameters and report user modified values in order to implement it as I would like to. I guess it can't be done in CC 2018. For my scripts, I have to make them work in CC 2018, even if that means leaving things out that I'd like to include. They are used by many people and most of them are running CC 2018. I just have to work around any bugs and make it the best I can.
... View more
‎Jun 30, 2018
09:52 AM
Agreed, thanks for catching the global variables. No need to make workspace and list global, especially with how common the words are. Here is the final script which works perfectly. I added in a check at the beginning just in case the prior script run was aborted and it couldn't switch the workspace back. There is maybe a way to replace the workspace functions with DOM code. However, I didn't see it in the Adobe docs so I just used script listener code. //attempts to delete the temp workspace if it exists form last script run but is not active (if script was aborted) try{deleteWorkspace ("my temp");} catch(e){} var originalWorkspace=currentWorkspace(); //alerts user if the workspace is set to the temp workspace, for the case the script got aborted on a previous run if (originalWorkspace=="my temp"){alert("The workspace is using a temp workspace form the last time the script was ran. Switch the workspace before running this script again")} else{ makeWorkspace("my temp"); try{ //run main code here } catch(e){ //error catching code here } finally{ switchWorkspace(originalWorkspace); deleteWorkspace ("my temp"); } } function currentWorkspace(){ var ref = new ActionReference(); ref.putProperty( charIDToTypeID( "Prpr" ), stringIDToTypeID( "menuBarInfo" )); ref.putEnumerated( charIDToTypeID("capp"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt")); var desc = executeActionGet(ref).getObjectValue(stringIDToTypeID("menuBarInfo")).getList(stringIDToTypeID("submenu")); var list =desc.getObjectValue(7).getList(stringIDToTypeID("submenu")).getObjectValue(1).getList(stringIDToTypeID("submenu")); for (var i = 0; i < list.count; i++){ var find = list.getObjectValue(i).getString(stringIDToTypeID("title")); var find2=find.substring(0,6); if(find2 == "&Reset"){ var workspace = find.substring(7); break;} } return workspace; } function makeWorkspace(name){ var idMk = charIDToTypeID( "Mk " ); var desc4 = new ActionDescriptor(); var idnull = charIDToTypeID( "null" ); var ref1 = new ActionReference(); var idworkspace = stringIDToTypeID( "workspace" ); ref1.putClass( idworkspace ); desc4.putReference( idnull, ref1 ); var idUsng = charIDToTypeID( "Usng" ); var desc5 = new ActionDescriptor(); var idNm = charIDToTypeID( "Nm " ); desc5.putString( idNm, name ); var idPlt = charIDToTypeID( "Plt " ); desc5.putBoolean( idPlt, true ); var idkeyboardCustomization = stringIDToTypeID( "keyboardCustomization" ); desc5.putBoolean( idkeyboardCustomization, false ); var idmenuCustomization = stringIDToTypeID( "menuCustomization" ); desc5.putBoolean( idmenuCustomization, false ); var idtoolbarCustomization = stringIDToTypeID( "toolbarCustomization" ); desc5.putBoolean( idtoolbarCustomization, false ); var idreplace = stringIDToTypeID( "replace" ); desc5.putBoolean( idreplace, false ); var idworkspace = stringIDToTypeID( "workspace" ); desc4.putObject( idUsng, idworkspace, desc5 ); executeAction( idMk, desc4, DialogModes.NO ); } function switchWorkspace(name){ var idslct = charIDToTypeID( "slct" ); var desc7 = new ActionDescriptor(); var idnull = charIDToTypeID( "null" ); var ref2 = new ActionReference(); var idworkspace = stringIDToTypeID( "workspace" ); ref2.putName( idworkspace, name ); desc7.putReference( idnull, ref2 ); var idIdnt = charIDToTypeID( "Idnt" ); desc7.putInteger( idIdnt, 5634 ); var iddontRecord = stringIDToTypeID( "dontRecord" ); desc7.putBoolean( iddontRecord, false ); var idforceNotify = stringIDToTypeID( "forceNotify" ); desc7.putBoolean( idforceNotify, true ); executeAction( idslct, desc7, DialogModes.NO ); } function deleteWorkspace(name){ var idDlt = charIDToTypeID( "Dlt " ); var desc13 = new ActionDescriptor(); var idnull = charIDToTypeID( "null" ); var ref3 = new ActionReference(); var idworkspace = stringIDToTypeID( "workspace" ); ref3.putName( idworkspace, name ); desc13.putReference( idnull, ref3 ); executeAction( idDlt, desc13, DialogModes.NO ); }
... View more
‎Jun 30, 2018
08:59 AM
The script worked great, except if the workspace had spaces in it, for example "Graphic and Web". In that case it would only return "Graphic". I modified it so instead of indexing, this version just uses substrings which seems to work for names with spaces in it. alert(currentWorkspace()); function currentWorkspace(){ var ref = new ActionReference(); ref.putProperty( charIDToTypeID( "Prpr" ), stringIDToTypeID( "menuBarInfo" )); ref.putEnumerated( charIDToTypeID("capp"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt")); var desc = executeActionGet(ref).getObjectValue(stringIDToTypeID("menuBarInfo")).getList(stringIDToTypeID("submenu")); list =desc.getObjectValue(7).getList(stringIDToTypeID("submenu")).getObjectValue(1).getList(stringIDToTypeID("submenu")); for (var i = 0; i < list.count; i++){ var find = list.getObjectValue(i).getString(stringIDToTypeID("title")); var find2=find.substring(0,6); if(find2 == "&Reset"){ workspace = find.substring(7); break;} } return workspace; };
... View more
‎Jun 30, 2018
07:50 AM
Thanks! I spent the better part of a day trying to figure that out.
... View more
‎Jun 30, 2018
07:02 AM
I tried to use the scripts you provided but I could not make it work correctly... I'm probably doing something wrong. Is there a way to get the name of the current workspace? I searched for that but I could not find a way to do it. It would be really simple if I could just get the name of the workspace the user starts in. Then I could create a copy of that into a temp workspace for the script to run in. Then when the script is done it would switch back to the original workspace and delete the temp workspace. The issue is that without knowing the workspace the user started in, there is no way to know which one to switch back to. Also, another complication is that my script is running from a custom HTML panel so I want to ensure that stays open too. If I could just get the name of the current workspace then it would be easy to just leave the workspace untouched and run in a temp workspace.
... View more
‎Jun 27, 2018
07:09 PM
Thanks, I'll dig into it tomorrow.
... View more
‎Jun 27, 2018
07:42 AM
Thanks for the reply. I tried 'obscured' after after I saw your response to my other post yesterday. Just based on the name, it seems that 'obscured' would mean it was open but not active/top in a panel. However, it returns false in all situations for me, at least on Windows CC 2018. I'm not sure what 'obscured' is actually looking at. Maybe it is depreciated and is from an older Photoshop release????? Anyway, this code always returns false for me. If you are able to get get it to return true then please let me know what toggles the output. alert(isInfoObscured()); function isInfoObscured(){ var ref = new ActionReference(); ref.putEnumerated( charIDToTypeID("capp"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") ); var desc = executeActionGet(ref).getList (stringIDToTypeID('panelList')); for(var a = 1;a<desc.count;a++){ var Name = desc.getObjectValue(a).getString (stringIDToTypeID('name')); if(Name == 'Info'){ return desc.getObjectValue(a).getBoolean(stringIDToTypeID('obscured')); break; } } }
... View more
‎Jun 26, 2018
09:27 AM
I am trying to get my script to determine if the info panel is open, but not necessarily visible. I got this piece of AM code from user Supermerlin a few years ago which works great to detect if a panel is visible. However, if the Info panel open in the workspace and docked in a panel group but not visible (another tab selected in the group), then it returns false. I kind of understand what this AM code is doing but I'm not an AM code expert by any stretch. I am wondering if there is another object value from the descriptor the determines if is is "open" but not visible that could be replaced in the code where 'visible' is. I'm not even sure how to get a list of the available object values for a descriptor. Basically, I want the script to determine if the user has the info panel anywhere in there workspace before the script runs. Then if after the script runs it will close it if it wasn't in their original workspace. Taking a color sample from the script automatically opens the info panel which is why I'm trying to close it, but only if it wasn't opened to start with. Anyone able to solve this puzzle? function isInfoVis(){ var ref = new ActionReference(); ref.putEnumerated( charIDToTypeID("capp"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") ); var desc = executeActionGet(ref).getList (stringIDToTypeID('panelList')); for(var a = 1;a<desc.count;a++){ var Name = desc.getObjectValue(a).getString (stringIDToTypeID('name')); if(Name == 'Info'){ return desc.getObjectValue(a).getBoolean(stringIDToTypeID('visible')); break; } } }
... View more
‎Jun 26, 2018
07:11 AM
OK, so I found it in on a post in another website. Works great. app.runMenuItem (stringIDToTypeID ("toggleInfoPalette"));
... View more
‎Jun 26, 2018
07:05 AM
Is there a way to minimize a panel group (not close it). I have a script that takes color samples. This always opens up the info panel group and leaves it open. The follow script closes it but that is not what I want to do. app.runMenuItem (stringIDToTypeID ("closeInfoPanelGroup")); Basically, I want to do what the highlighted button in the screen shot does.
... View more
‎Jun 26, 2018
06:23 AM
Awesome, I would really like to see how to do it if you ever write the code for it. I gave up on it because I couldn't figure it out myself. I would really like to be able to do it if there was a way.
... View more