Is there a way to change the message received in Outlook from Mavericks calender?

Hi there
I found a post discussing this whereby a user was advised to edit the ITIP.stings file in the contents of the iCal.app to change the standard message that states "To accept or decline this invitation, click the link below" etc message that an Outlook user received when getting a calender invite from Mavericks Calender.
The post is here:
Is there a way to change the standard email message?
Problem is, on Mavericks it does not have that string in that file - I've actually checked ALL the .strings files in that folder but to no avail. Did it move somewhere else on Mavericks?
On another note...this whole process is part in part moving from Entourage to Mac Mail and Calender due to Apple's (illogical) removal of the ability to sync with anything other than iCal / Mail / iCloud. So we manually moved everything across (thousands of mails and hundreds of folders) and hundreds and hundreds of calender events.
Now it syncing but herewith the problem...if I create an event and send it to someone, they receive it as the iCloud account email and not our work email (pop account with our own domain). Even then when I open it in Outlook, it has some horribly malformed address and when you accept, you get a delivery failure.
So we create a different Calender (On the Mac) and this sends 100% (except for the message in the body we'd like to change) but this does not sync with the Iphone or the iPad. Then we have to manually change the calender event to the iCloud calender and it brings up a message that its going to send the update to all the attendees...and you must choose between send via mail or send via server.
What do I do!?

Anyone? Just need to know where I can change that message and also how I can set up the icloud calender to send invites using my work email address (as configured in Mail)?

Similar Messages

  • Way to change the  Message based on Imported IDoc

    Hi,
    I just want to know if there is way to change the message based on Imported IDoc?
    Basically I imported an IDoc from R/3, this Imported Object would display just one of the Segment for where there are  max allowable limit is n segment (the same segment), now during message mapping I need to have more than one Segment of same type...Wasn't sure how to add more segments?
    Thanking in advance

    Hi Rajan,
    If I have understood you correctly you,you mean that you have imported an Idoc with a segment with cardinality 0..unbounded(n) and you want to reproduce the segment n times in the target structure.
    you need not change the cardinality.This needs to be done in the mapping itself.just map the source structure to the target segment, handling the context properly such that for every occurence of the source structure the corresponding segment is produced in the target.
    Regards,
    Sulakshana

  • Is there any way to change the type of Transport like workbench to Customiz

    Hi All,
    Here we are having very silly question.
    Is there any way to change the type of Transport like from
    Workbench to Customize and from Customize to Workbench within the same client.
    Assume that there the no object associated with the transport.
    Your quick respose is highly appreciated...
    Thanks in Advance!

    No this cannot be done.
    Both work bench and custimizing are separate entites when it comes to tranport layers config.
    You cannot save a report change into customizing request this will be saved into work bench request only .
    In the same way table entries or some customizing tasks can be captured only into custimizing tr.
    Br,
    Vijay.

  • Is there any way to change the default font for outgoing text-messages, in "Messages"? (OSX 10.10)

    Is there any way to change the default font for outgoing text-messages, in "Messages"?
    I can change it for one conversation, but then it resets to the default, tiny font.
    The preferences menu only lets me change the conversation font.
    (OSX 10.10)

    Hi,
    As you may remember there used to be a Messages pane to the Preferences where the Font and colour of the Balloons or background and the Font text colour could be changed.
    And there was a Format Menu for character, word and Sentence changes in the current IM or iMessage.
    Those have gone in Yosemite's version of Messages (Despite it retaining the designation of Messages 8 the same as Mavericks' version).
    All that can be done now is set the size of the font and this has been moved to the General Section of the Preferences.
    The Yosemite version has also been fixed to using the Balloons style of send and receiving any type of messages as well.
    Changing the Font would involved editing the Balloon.transcript file.
    10:34 pm      Saturday; December 13, 2014
    ​  iMac 2.5Ghz i5 2011 (Mavericks 10.9)
     G4/1GhzDual MDD (Leopard 10.5.8)
     MacBookPro 2Gb (Snow Leopard 10.6.8)
     Mac OS X (10.6.8),
     Couple of iPhones and an iPad

  • Is there a way to change the xml message generated by JDeveloper Proxy

    Hi,
    I have created jax-ws proxy client using JDeveloper 10g. I need to change the generated xml message tags. I need to remove the namespace prefix tags from the xml message. For ex: the current request message looks like this:
    <ns0:EMPLOYEE_NAME>John</ns0:EMPLOYEE_NAME>
    should be
    <EMPLOYEE_NAME>John</EMPLOYEE_NAME>
    without the nso prefix.
    How can I do that? Please help me.
    Thanks.

    To original poster, please just select "Problem Solved" to help any future questions about this.
    Is there a way to change  the text message ringer? No.
    End of thread 

  • Is there a way to change the iMessage tone when I receive a message on my macbook?

    When I receive a iMessage or text message on my macbook, the sound makes a ding. My question is can I change the tone to something other than a ding?

    Hi,
    In Mavericks (where you posted) > Messages App > Preferences > General Section you can set the Messages Received sound.
    In Mavericks this is a sounds from the App or the System Alerts or Sounds from ~/Library/Sounds.
    In Yosomite (what you say you have) you now have iOS sounds listed and these are Alerts or Ringtones on an iPhone.
    Not since Mountain Lion have you been able to set specific sounds to specific actions or even specific Buddies.
    7:14 pm      Thursday; December 25, 2014
    ​  iMac 2.5Ghz i5 2011 (Mavericks 10.9)
     G4/1GhzDual MDD (Leopard 10.5.8)
     MacBookPro 2Gb (Snow Leopard 10.6.8)
     Mac OS X (10.6.8),
     Couple of iPhones and an iPad

  • Is there a way of changing the jdevappunknown_ folder that Ant deploys to?

    Using Ant DeployESBSuitcase doesn't work when deploying Projects with dependencies.
    Steps to re-create error:
    Create a JDeveloper ESB Project called ‘ProjectB’ and add file adapter called ‘WriteFile’ to write a file. Deploy this project using JDeveloper.
    Create another JDeveloper ESB Project called ‘ProjectA’ and add a file adapter called ‘ReadFile’ to read a file.
    From ProjectA’s routing service add a routing rule and use ‘Browse Target Service Operation’ (Gear wheel icon) and select the deployed ProjectB_WriteFile service.
    Deploy ProjectA using JDeveloper.
    Use Ant to create a deploymentplan file for both projects by running the ExtractESBDeploymentPlan target.
    Note: As these projects are saved under their own directory structure
    C:\Workspace\Local\ProjectA and C:\Workspace\Local\ProjectB you will need to copy the ..\ProjectB\ProjectB_WriteFile.wsdl to the ProjectA folder.
    Confirm that ProjectA and ProjectB Ant build files DeployESBSuitcase properties (esbMetadataServerHost and esbMetaServerPort) point to another server other than the one you have just deployed ProjectA and ProjectB to using JDeveloper. i.e. a clean server that doesn’t know about these Projects
    Deploy ProjectB using Ant’s DeployESBSuitcase target.
    Deploy ProjectA using Ant’s DeployESBSuitcase target.
    An error is now thrown
    C:\Workspace\Local\ProjectA>ant DeployESBSuitcase
    Buildfile: build.xml
    DeployESBSuitcase:
    [echo] Deploying ESB Project ProjectA to serverx
    [deployESBSuitcase] Deployment Attempt Response :
    [deployESBSuitcase] <deploymentSummary>
    [deployESBSuitcase] <message>Entity Deployment Failed</message>
    [deployESBSuitcase] <errors>
    [deployESBSuitcase] <error code="1049" severity="5">
    [deployESBSuitcase] <description>WSDL "esb:///ESB_Projects/Local_ProjectB/ProjectB_WriteFile.wsdl" of service "DefaultSystem.ProjectB_WriteFile" is invalid or unaccessible. Following error is thrown by WSDL Parser : WSDL Parsing Failed: org.apache.slide.structure.ObjectNotFoundException: No object found at /files/ESB_Projects/Local_ProjectB</description>
    [deployESBSuitcase] <fix>Ensure that the WSDL is accessible and valid. If the problem persists, Contact Oracle Support.</fix>
    [deployESBSuitcase] </error>
    [deployESBSuitcase] </errors>
    [deployESBSuitcase] </deploymentSummary>
    [deployESBSuitcase]
    [deployESBSuitcase] Deployment Failed ...Unhandled Exception
    [deployESBSuitcase] java.lang.Exception: Deployment attempt failed, please review deployment attempt response above
    [deployESBSuitcase] at oracle.tip.esb.client.anttasks.DeploymentHelper.deploy(DeploymentHelper.java:128)
    [deployESBSuitcase] at oracle.tip.esb.client.anttasks.DeploymentHelper.deploy(DeploymentHelper.java:175)
    [deployESBSuitcase] at oracle.tip.esb.client.anttasks.DeployESBSuitcaseTask.execute(DeployESBSuitcaseTask.java:510)
    [deployESBSuitcase] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
    [deployESBSuitcase] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    [deployESBSuitcase] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    [deployESBSuitcase] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    [deployESBSuitcase] at java.lang.reflect.Method.invoke(Method.java:585)
    [deployESBSuitcase] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    [deployESBSuitcase] at org.apache.tools.ant.Task.perform(Task.java:348)
    [deployESBSuitcase] at org.apache.tools.ant.Target.execute(Target.java:357)
    [deployESBSuitcase] at org.apache.tools.ant.Target.performTasks(Target.java:385)
    [deployESBSuitcase] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
    [deployESBSuitcase] at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
    [deployESBSuitcase] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    [deployESBSuitcase] at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
    [deployESBSuitcase] at org.apache.tools.ant.Main.runBuild(Main.java:758)
    [deployESBSuitcase] at org.apache.tools.ant.Main.startAnt(Main.java:217)
    [deployESBSuitcase] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
    [deployESBSuitcase] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
    BUILD FAILED
    java.lang.Exception: Deployment attempt failed, please review deployment attempt response above
    at oracle.tip.esb.client.anttasks.DeploymentHelper.deploy(DeploymentHelper.java:128)
    at oracle.tip.esb.client.anttasks.DeploymentHelper.deploy(DeploymentHelper.java:175)
    at oracle.tip.esb.client.anttasks.DeployESBSuitcaseTask.execute(DeployESBSuitcaseTask.java:510)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:357)
    at org.apache.tools.ant.Target.performTasks(Target.java:385)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
    at org.apache.tools.ant.Main.runBuild(Main.java:758)
    at org.apache.tools.ant.Main.startAnt(Main.java:217)
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
    Total time: 2 seconds
    C:\Workspace\Local\ProjectA>
    This error is thrown as ProjectB’s wsdl file cannot be found under esb:///ESB_Projects/Local_ProjectB/ProjectB_WriteFile.wsdl.
    This is due to Ant deploying ProjectB under …\ESB_Projects\jdevappunknown_ rather than …\ESB_Projects\Local_ProjectB
    When deploying ESB projects from JDeveloper they are created under the following structure: <Oracle_Home>\integration\esb\oraesb\artifacts\store\metadata\files\ESB_Projects\<JDev_Workspace>\<Project_Name>
    However when using the Ant target DeployESBSuitcase ALL projects are deployed to the same folder:
    <Oracle_Home>\integration\esb\oraesb\artifacts\store\metadata\files\ESB_Projects\jdevappunknown_
    Is there a way of changing the jdevappunknown folder used by Ant deployments?
    Edited by: user2000 on Apr 27, 2009 3:37 PM

    James,
    Following my steps above I don't get anything in the deploymentPlan for either ProjectA or ProjectB which includes a WSDL URL I can modify.
    ProjectA includes the ProjectB_WrieFile.esbsv file which contains the following line:
    <wsdlURL>esb:///ESB_Projects/Local_ProjectB/ProjectB_Write.wsdl</wsdlURL>
    Is there something I can change which will mean when I regenerate the deploymentPlan it will include the WSDL location?
    Thanks
    Alistair
    Edited by: user2000 on Apr 28, 2009 11:55 AM
    I've included Both Deployment Plans:
    ProjectA Deployment Plan
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <deploymentPlan>
    <serviceDeploymentPlan qname="DefaultSystem.ProjectA_ReadFile" status="ENABLED">
    <parent type="system" qname="DefaultSystem"/>
    <properties>
    <jcaOperation>
    <property value="Read" name="LogicalDirectory"/>
    <property value="oracle.tip.adapter.file.inbound.FileActivationSpec" name="ActivationSpec"/>
    <property value="Archive" name="LogicalArchiveDirectory"/>
    <property value="true" name="DeleteFile"/>
    <property value=".*\.txt" name="IncludeFiles"/>
    <property value="60" name="PollingFrequency"/>
    <property value="0" name="MinimumAge"/>
    <property value="true" name="OpaqueSchema"/>
    </jcaOperation>
    <jcaAddress>
    <property value="eis/FileAdapter" name="location"/>
    <property value="*.txt" name="UIincludeWildcard"/>
    </jcaAddress>
    </properties>
    </serviceDeploymentPlan>
    <serviceDeploymentPlan qname="DefaultSystem.ProjectA_ReadFile_RS" status="ENABLED">
    <parent type="system" qname="DefaultSystem"/>
    <properties>
    <serviceDefinition>
    <property value="ProjectA_ReadFile.wsdl" name="wsdlURL"/>
    </serviceDefinition>
    </properties>
    </serviceDeploymentPlan>
    <serviceDeploymentPlan qname="DefaultSystem.ProjectB_WriteFile" status="ENABLED">
    <parent type="system" qname="DefaultSystem"/>
    <properties>
    <jcaOperation>
    <property value="Write" name="LogicalDirectory"/>
    <property value="oracle.tip.adapter.file.outbound.FileInteractionSpec" name="InteractionSpec"/>
    <property value="ProjectB_%SEQ%.txt" name="FileNamingConvention"/>
    <property value="1" name="NumberMessages"/>
    <property value="true" name="OpaqueSchema"/>
    </jcaOperation>
    <jcaAddress>
    <property value="eis/FileAdapter" name="location"/>
    </jcaAddress>
    </properties>
    </serviceDeploymentPlan>
    </deploymentPlan>
    Project B Deployment Plan
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <deploymentPlan>
    <serviceDeploymentPlan qname="DefaultSystem.ProjectB_WriteFile" status="ENABLED">
    <parent type="system" qname="DefaultSystem"/>
    <properties>
    <jcaOperation>
    <property value="Write" name="LogicalDirectory"/>
    <property value="oracle.tip.adapter.file.outbound.FileInteractionSpec" name="InteractionSpec"/>
    <property value="ProjectB_%SEQ%.txt" name="FileNamingConvention"/>
    <property value="1" name="NumberMessages"/>
    <property value="true" name="OpaqueSchema"/>
    </jcaOperation>
    <jcaAddress>
    <property value="eis/FileAdapter" name="location"/>
    </jcaAddress>
    </properties>
    </serviceDeploymentPlan>
    </deploymentPlan>

  • Is there a way to change the addresses used in an existing iMessage thread?

    This is kind of a multi-part question. Let me describe my scenario.
    I have many iMessage threads with other iPhone users where the "reply" addresses for one or both ends are the phone *numbers* instead of AppleID email addresses. (This could be due to a number of factors... either they had their "Start new conversations from" address set to their phone number, and/or they started a new conversation with me sending it to my phone number. How it *got* that way doesn't really matter). I want to be able to change the addresses of the conversation to AppleID's (so that I'll still get messages when I change SIM cards, among other reasons).
    With iOS 8's new ability to add/remove people from conversations, I thought I would be able to add the AppleID address and remove the phone number address, but there are two problems with that: 1) iOS 8 seems to only allow this for conversations which began as multi-person conversations, and 2) it doesn't seem to want to let you add addresses for people who are already recipients via another address (in other words, if Alice is already on the conversation via her phone number, I can't add her AppleID to the conversation). I guess I could remove the person first, and then re-add them with the other address... but I'd feel safer if I could add the next one before removing the first one.
    I know I could just tell the other person to delete our thread and start a new one, but I don't want to lose all of our dialogue and pictures (and I don't want to have to manually save it).
    So, the questions:
    Is there a way to change the address my counterparty is sending to when they make further replies to our conversation?
    Is there a way to change the address I send to when I make further replies to the conversation?
    Is there a way to change the default address to use when trying to send someone an iMessage? (What I'm after here is a way to craft my "contact" entry in people's phones so that, when they try to send a message to me and start typing my name, my preferred address comes up on top).
    As it looks like the only way to do this might be to use iOS 8's method of adding/removing recipients, is there a way of converting a two-person conversation into a multi-person one?

    I think I may have solved it, actually.  I find that if I switch the timecode to NDF in the source viewer, it seems to work.  I have tried it on three clips and they have sync'd without problems.  Hopefully this will continue to be the case.

  • Apple Mail, is there a way to change the default time-out?

    This has been puzzling me for some time and I have not found a solution. The problem which I also posted in the Mail forum (though I think that if there is a positive answer it will come through here) is as follows:
    I have an email account with on my company's mail server which is actually a Novell Netware server with a POP3 service. When using mail to send mail, I have no problems. When using mail to recieve mail, well, sometimes it gets the mail, and sometimes it does not. Usually, I can recieve mail for two or three weeks then it just stops working. No changes to my system, no updates or anything, I recieve email at one point in the day and then 15 minutes later - nothing. In the Activity Monitor, I see "Connecting to ..." then "Sending Password" then "Checking for Messages", then (after a while) it beeps as if it did not find any messages to download (no error!).
    Some weeks later, after suffering with webmail, suddenly, it works again. This usually coincides with maintenance on the server, but not always. It also seems to correspond with a general improvement of the server performance. But eventually, the cycle starts over again with mail suddenly not able to find any new messages for that account.
    I use dial-up at home, ethernet LAN at work, and DSL at our satellite offices. When it works on one it works on all. Also note that my other email accounts (not in any way connected to my company) work as they should at all times and in each setting.
    Is it possible that mail simply times out before the messages are discovered. The Novell server used for mail is by no means known for its performance. If so, is there anyway to change the default timeout in mail for "Checking for Messages"?
    Things I have tried:
    I have dumped the "MessageUidsAlreadyDownloaded" and "MessageUidsAlreadyDownloaded2" files to no avail.
    I have changed computers (I recently upgraded from a ti400), reinstalled the OS, upgraded from 10.2.8 to 10.3.x to 10.4.3, and removed and recreated the mail account (multiple times), all to no avail.
    Based on the above observations, I feel that it may be that "Mail's" "Get-mail" function is timing out before new messages are discovered on a very slow server. Is there any way to change the default time-out to evaluate this hypothesis?
    Any help would be appreciated.
    Kraig

    I already thought of that one.  I deleted my account from there.  But it didn't default to the other one.  It just told me I needed to add an account.  Thanks tho

  • Bcc: Is there any way to change the "undisclosed recipients" text ?

    Bcc: Is there any way to change the "undisclosed recipients" text appearing on the message at destination when I used Bcc?...
    Eudora offers the possibility to choose the text that appears when using Bcc.
    Does Mail do the same?...
    If yes, how?...
    Thanks
    sergio

    Every message that I send with addresses ONLY in Bcc:, when is received by others, or when I receive it back from some yahoo group, has the reading: "undisclosed recipients"...which I can see either when I receive an answer from some individual or when I receive the messages from the group.
    Of course, if I write any address in the "To:" space, what comes out is the address I type.
    My question was something else: HOW to CHANGE what comes out.
    In Eudora it is possible to have ANYTHING one wishes appearing INSTEAD of the "undisclosed recipients", it's enough to type a code inside the message once, and choose the text one wishes to appear.

  • Is there a way to change the ring tone to none for one particular contact?

    I see there is an option to turn the text message settings for a particular contact to 'none'.  Is there a way to change the ring tone to 'none' or 'silent' for only one contact.  This is a person who calls way too often and I used to turn their ringer to 'none' when I had a blackberry.  This way I can talk to this person when it is convenient for me and not have to listen to the ringer everytime they call.

    You need to sync a silent ringtone to your phone & then assign it to that contact. Here's one already made:
    http://richardkmiller.com/702/iphone-tip-use-a-silent-ringtone-to-screen-calls-i n-your-sleep

  • Is there a way to change the LUt extension form .CUBE to .cube. on export. TX

    Is there a way to change the LUt extension form .CUBE to .cube. on export with this script in photoshop For MAC:
    Chris Cox wrote:
    The file extensions are written by the export plugin.  (which incidentally has a comment that two studios wanted all caps extensions, but I failed to write down which ones in the comments)
    To change the filenames, you'd want to add something at the end of doExportLUTs() that uses the supplied path and substitutes the desired extensions, then renames the file.
    Thank you
    // Export Color Lookup Tables automation in JavaScript
    // IN_PROGRESS - why can't ColorSync Utility open any profile with a grid of 160 or larger?
    // 150 works, 160 fails -- sent samples in email to Apple on Nov 8, 2013; they are investigating
    // DEFERRED - right to left filenames (Arabic) come out wrong because of appending "RGB" and file extensions
    // This seems to be a bug in JavaScript's handing of strings, not sure we can solve it easily.
    // It might possibly be handled by checking bidi markers in UTF8 stream and adding custom handling for appending text/extensions.
    @@@BUILDINFO@@@ ExportColorLookupTables.jsx 1.0.0.0
    // BEGIN__HARVEST_EXCEPTION_ZSTRING
    <javascriptresource>
    <name>$$$/JavaScripts/ExportColorLookupTables/Menu=Color Lookup Tables...</name>
    <menu>export</menu>
    <enableinfo>true</enableinfo>
    <eventid>9AA9D7D6-C209-494A-CC01-4E7D926DA642</eventid>
    </javascriptresource>
    // END__HARVEST_EXCEPTION_ZSTRING
    #target photoshop
    const appUIState = app.displayDialogs;
    app.displayDialogs = DialogModes.NO; // suppress all app dialogs
    app.bringToFront(); // make Photoshop the frontmost app, just in case
    // on localized builds we pull the $$$/Strings from a .dat file
    $.localize = true;
    // from Terminology.jsx
    const classApplication = app.charIDToTypeID('capp');
    const classProperty = app.charIDToTypeID('Prpr');
    const enumTarget = app.charIDToTypeID('Trgt');
    const eventGet = app.charIDToTypeID('getd');
    const eventSet = app.charIDToTypeID('setd');
    const kcolorSettingsStr = app.stringIDToTypeID("colorSettings");
    const kDither = app.charIDToTypeID('Dthr');
    const keyTo = app.charIDToTypeID('T   ');
    const typeNULL = app.charIDToTypeID('null');
    const typeOrdinal = app.charIDToTypeID('Ordn');
    const kFloatWindowStr = app.stringIDToTypeID("floatWindow");
    const typePurgeItem = app.charIDToTypeID('PrgI');
    const enumClipboard = app.charIDToTypeID('Clpb');
    const eventPurge = app.charIDToTypeID('Prge');
    const keyExportLUT = app.charIDToTypeID( "lut " );
    const keyFilePath = app.charIDToTypeID( 'fpth' );
    const keyDescription = app.charIDToTypeID( 'dscr' );
    const keyCopyright = app.charIDToTypeID( 'Cpyr' );
    const keyDataPoints = app.charIDToTypeID( 'gPts' );
    const keyWriteICC = app.charIDToTypeID( 'wICC' );
    const keyWrite3DL = app.charIDToTypeID( 'w3DL' );
    const keyWriteCUBE = app.charIDToTypeID( 'wCUB' );
    const keyWriteCSP = app.charIDToTypeID( 'wCSP' );
    const kScriptOptionsKey = "9AA9D7D6-C209-494A-CC01-4E7D926DA642"; // same as eventID above
    const sGridMin = 7; // these must match the slider range defined in the dialog layout
    const sGridMax = 256;
    const sGridDefault = 32;
    // our baseline UI configuration info
    var gSaveFilePath = ""; // overwritten by document path
    var gDescription = ""; // overwritten by document name
    var gCopyright = ""; // "Adobe Systems Inc., All Rights Reserved";
    var gGridPoints = sGridDefault;
    var gDoSaveICCProfile = true;
    var gDoSave3DL = true;
    var gDoSaveCUBE = true;
    var gDoSaveCSP = true;
    gScriptResult = undefined;
    // start doing the work...
    main();
    app.displayDialogs = appUIState; // restore original dialog state
    gScriptResult; // must be the last thing - this is returned as the result of the script
    function readOptionsFromDescriptor( d )
      if (!d)
      return;
      if (d.hasKey(keyFilePath))
      gSaveFilePath = d.getString( keyFilePath ); // will be overridden by UI
      if (d.hasKey(keyDescription))
      gDescription = d.getString( keyDescription ); // will be overridden always
      if (d.hasKey(keyCopyright))
      gCopyright = d.getString( keyCopyright );
      if (d.hasKey(keyDataPoints))
      var temp = d.getInteger( keyDataPoints );
      if (temp >= sGridMin && temp <= sGridMax)
      gGridPoints = temp;
      if (d.hasKey(keyWriteICC))
      gDoSaveICCProfile = d.getBoolean( keyWriteICC );
      if (d.hasKey(keyWrite3DL))
      gDoSave3DL = d.getBoolean( keyWrite3DL );
      if (d.hasKey(keyWriteCUBE))
      gDoSaveCUBE = d.getBoolean( keyWriteCUBE );
      if (d.hasKey(keyWriteCSP))
      gDoSaveCSP = d.getBoolean( keyWriteCSP );
    function createDescriptorFromOptions()
      var desc = new ActionDescriptor();
      desc.putString( keyFilePath, gSaveFilePath ); // will be overridden by UI
      desc.putString( keyDescription, gDescription ); // will always be overridden by document name
      desc.putString( keyCopyright, gCopyright );
      desc.putInteger( keyDataPoints, gGridPoints );
      desc.putBoolean( keyWriteICC, gDoSaveICCProfile );
      desc.putBoolean( keyWrite3DL, gDoSave3DL );
      desc.putBoolean( keyWriteCUBE, gDoSaveCUBE );
      desc.putBoolean( keyWriteCSP, gDoSaveCSP );
      return desc;
    function doExportUI()
      // DEFERRED - it might be nice to be able to run without UI
      //  Right now we can't, but someone could modify the script if they so desire
      const sDescription = localize("$$$/AdobeScript/Export3DLUT/Description=Description:");
      const sCopyright = localize("$$$/AdobeScript/Export3DLUT/Copyright=Copyright:");
      const sQuality = localize("$$$/AdobeScript/Export3DLUT/Quality=Quality");
      const sGridPoints = localize("$$$/AdobeScript/Export3DLUT/GridPoints=Grid Points:");
      const sFormatsToSave = localize("$$$/AdobeScript/Export3DLUT/Formats=Formats");
      const sOpenButton = localize("$$$/JavaScripts/psx/OK=OK");
      const sCancelButton = localize("$$$/JavaScripts/psx/Cancel=Cancel");
      const strTextInvalidType = localize("$$$/JavaScripts/Export3DLUT/InvalidType=Invalid numeric value. Default value inserted.");
      const strTextInvalidNum = localize("$$$/JavaScripts/Export3DLUT/InvalidNum=A number between 7 and 256 is required. Closest value inserted.");
      const strNoExportsSelected = localize("$$$/JavaScripts/Export3DLUT/NoExportTypesSelected=No export types were selected.");
      const strExportPrompt = localize("$$$/JavaScripts/Export3DLUT/ExportColorLookup=Export Color Lookup");
      const strUntitledLUT = localize("$$$/JavaScripts/Export3DLUT/UntitledLUTFilename=untitled.lut");
      const sSaveICC = localize("$$$/AdobeScript/Export3DLUT/ICCProfile=ICC Profile");
      // these are not localized, since they refer to file format extensions
      const sSave3DL = "3DL";
      const sSaveCUBE = "CUBE";
      const sSaveCSP = "CSP";
      // strings similar to JPEG quality
      const sPoor = localize("$$$/AdobeScript/Export3DLUT/Poor=Poor");
      const sLow = localize("$$$/AdobeScript/Export3DLUT/Low=Low");
      const sMedium = localize("$$$/AdobeScript/Export3DLUT/Medium=Medium");
      const sHigh = localize("$$$/AdobeScript/Export3DLUT/High=High");
      const sMaximum = localize("$$$/AdobeScript/Export3DLUT/Maximum=Maximum");
      const ui = // dialog resource object
      "dialog { \
      orientation: 'row', \
      gp: Group { \
      orientation: 'column', alignment: 'fill', alignChildren: 'fill', \
      description: Group { \
      orientation: 'row', alignment: 'fill', alignChildren: 'fill', \
      st: StaticText { text:'Description:' }, \
      et: EditText { characters: 30, properties:{multiline:false}, text:'<your description here>' } \
      copyright: Group { \
      orientation: 'row', alignment: 'fill', alignChildren: 'fill', \
      st: StaticText { text:'Copyright:' }, \
      et: EditText { characters: 30, properties:{multiline:false}, text:'<your copyright here>' } \
      qual: Panel { \
      text: 'Quality', \
      orientation: 'column', alignment: 'fill', alignChildren: 'fill', \
      g2: Group { \
      st: StaticText { text:'Grid Points:' }, \
      et: EditText { characters:4, justify:'right' } \
      drp: DropDownList {alignment:'right'} \
      sl: Slider { minvalue:7, maxvalue:256, value: 32 }, \
      options: Panel { \
      text: 'Formats', \
      orientation: 'column', alignment: 'fill', alignChildren: 'left', \
      ck3DL: Checkbox { text:'3DL', value:true }, \
      ckCUBE: Checkbox { text:'CUBE', value:true } \
      ckCSP: Checkbox { text:'CSP', value:true } \
      ckICC: Checkbox { text:'ICC Profile', value:true } \
      gButtons: Group { \
      orientation: 'column', alignment: 'top', alignChildren: 'fill', \
      okBtn: Button { text:'Ok', properties:{name:'ok'} }, \
      cancelBtn: Button { text:'Cancel', properties:{name:'cancel'} } \
      const titleStr = localize("$$$/AdobeScript/Export3DLUT/DialogTitle/ExportColorLookupTables=Export Color Lookup Tables");
      var win = new Window (ui, titleStr ); // new window object with UI resource
        // THEORETICALLY match our dialog background color to the host application
        win.graphics.backgroundColor = win.graphics.newBrush (win.graphics.BrushType.THEME_COLOR, "appDialogBackground");
      // poor, low, medium, high, max
      var MenuQualityToGridPoints = [ 8, 16, 32, 64, 256 ];
      function GridPointsToQualityMenuIndex( num )
      var menu = MenuQualityToGridPoints;
      var menuItems = menu.length;
      if (num <= menu[0])
      return 0;
      if (num >= menu[ menuItems-1 ])
      return (menuItems-1);
      for (var i = 0; i < (menuItems-1); ++i)
      if ((num >= menu[i]) && (num < menu[i+1]))
      return i;
      return 0; // just in case of a logic failure
      // insert our localized strings
      var drop = win.gp.qual.g2.drp; // for easier typing
      drop.add('item', sPoor ); // 0
      drop.add('item', sLow ); // 1
      drop.add('item', sMedium ); // 2
      drop.add('item', sHigh ); // 3
      drop.add('item', sMaximum ); // 4
      drop.selection = drop.items[2]; // Medium
      win.gp.description.st.text = sDescription;
      win.gp.copyright.st.text = sCopyright;
      win.gp.qual.text = sQuality;
      win.gp.qual.g2.st.text = sGridPoints;
      win.gp.options.text = sFormatsToSave;
      win.gp.options.ck3DL.text = sSave3DL;
      win.gp.options.ckCUBE.text = sSaveCUBE;
      win.gp.options.ckCSP.text = sSaveCSP;
      win.gp.options.ckICC.text = sSaveICC;
      win.gButtons.okBtn.text = sOpenButton;
      win.gButtons.cancelBtn.text = sCancelButton;
      // set starting parameters
      win.gp.description.et.text = gDescription;
      win.gp.copyright.et.text = gCopyright;
      win.gp.options.ckICC.value = gDoSaveICCProfile;
      win.gp.options.ck3DL.value = gDoSave3DL;
      win.gp.options.ckCUBE.value = gDoSaveCUBE;
      win.gp.options.ckCSP.value = gDoSaveCSP;
      // global flag/hack to keep the UI pretty
      var gGlobalPreventChanges = false;
      with (win.gp.qual)
      sl.value = gGridPoints;
      g2.et.text = gGridPoints;
      drop.selection = drop.items[ GridPointsToQualityMenuIndex(gGridPoints) ];
      // global flag is ugly, but recursive change calls are uglier
      g2.et.onChange = function () {  if (gGlobalPreventChanges) { return; }
      gGlobalPreventChanges = true;
      var val = Number(this.text);
      this.parent.parent.sl.value = val;
      drop.selection = drop.items[ GridPointsToQualityMenuIndex(val) ];
      gGlobalPreventChanges = false; };
      sl.onChanging = function () {   if (gGlobalPreventChanges) { return; }
      gGlobalPreventChanges = true;
      var val = Math.floor(this.value);
      this.parent.g2.et.text = val;
      drop.selection = drop.items[ GridPointsToQualityMenuIndex(val) ];
      gGlobalPreventChanges = false; };
      // DEFERRED - we should also set the value if the same menu item is selected again (reset)
      // but the JSX toolkit doesn't support that
      drop.onChange = function()
      if (gGlobalPreventChanges) { return; }
      gGlobalPreventChanges = true;
      var theSelection = this.selection.text;
      if (theSelection != null) { // only change if selection made
      var theSelectionIndex = this.selection.index;
      var newGridPoints = MenuQualityToGridPoints[ theSelectionIndex ];
      win.gp.qual.g2.et.text = newGridPoints;
      win.gp.qual.sl.value = newGridPoints;
      gGlobalPreventChanges = false;
      win.onShow = function ()
      this.qual.sl.size.width = 128;
      this.layout.layout(true);
      win.gButtons.cancelBtn.onClick = function () { this.window.close(2); };
      // validate inputs when the user hits OK
        var gInAlert = false;
      win.gButtons.okBtn.onClick = function ()
      if (gInAlert == true)
      gInAlert = false;
      return;
      var gridText = win.gp.qual.g2.et.text;
      var w = Number(gridText);
      var inputErr = false;
      if ( isNaN( w ) )
      if ( DialogModes.NO != app.playbackDisplayDialogs )
      gInAlert = true;
      alert( strTextInvalidType );
      gInAlert = false;
      win.gp.qual.g2.et.text = sGridDefault;
      win.gp.qual.sl.value = sGridDefault;
      drop.selection = drop.items[ GridPointsToQualityMenuIndex(sGridDefault) ];
      return false;
      if ( (w < sGridMin) || (w > sGridMax) )
      if ( DialogModes.NO != app.playbackDisplayDialogs )
      gInAlert = true;
      alert( strTextInvalidNum );
      gInAlert = false;
      if ( w < sGridMin)
      inputErr = true;
      drop.selection = drop.items[ GridPointsToQualityMenuIndex(sGridMin) ];
      win.gp.qual.g2.et.text = sGridMin;
      win.gp.qual.sl.value = sGridMin;
      return false;
      if ( w > sGridMax)
      inputErr = true;
      drop.selection = drop.items[ GridPointsToQualityMenuIndex(sGridMax) ];
      win.gp.qual.g2.et.text = sGridMax;
      win.gp.qual.sl.value = sGridMax;
      return false;
      if (inputErr == false)
      win.close(true);
      return;
      win.center(); // move to center the dialog
      var ret = win.show();  // dialog display
      if (2 == ret)
      return false; // user cancelled
      // user hit OK, copy values from dialog
      gDescription = win.gp.description.et.text;
      gCopyright = win.gp.copyright.et.text;
      gGridPoints = win.gp.qual.sl.value;
      gDoSave3DL = win.gp.options.ck3DL.value;
      gDoSaveCUBE = win.gp.options.ckCUBE.value;
      gDoSaveCSP = win.gp.options.ckCSP.value;
      gDoSaveICCProfile = win.gp.options.ckICC.value;
      // if no files are going to be saved, then we have zero work to do
      if ((false == gDoSaveICCProfile) && (false == gDoSave3DL) &&
      (false == gDoSaveCUBE) && (false == gDoSaveCSP) )
      // tell the user that no formats were selected
      alert( strNoExportsSelected );
      gScriptResult = 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
      return false;
      // prompt user for directory and output base filename
      // default to directory and filename of current document
      var currentDocumentPath
      try
      // if the file has no path (not saved), then this throws
      var documentPath = app.activeDocument.fullName.fsName; // Get the OS friendly file path and name
      documentPath = documentPath.replace(/\....$/,''); // remove extension, if there is one
      documentPath = documentPath + ".lut"; // add dummy extension
      currentDocumentPath = File ( documentPath );
      catch (e)
      // if there was no document path, default to user's home directory
      var defaultName = "~/" + strUntitledLUT;
      currentDocumentPath = File(defaultName);
      var fname = currentDocumentPath.saveDlg(strExportPrompt);
      if (fname == null)
      return false;
      gSaveFilePath = fname.fsName;
      return true;
    function doExportLUTs( path )
      const keyUsing     = charIDToTypeID( 'Usng' );
      const eventExport = charIDToTypeID( 'Expr' );
      var desc = new ActionDescriptor();
      var desc2 = new ActionDescriptor();
      desc2.putString( keyFilePath, path );
      desc2.putString( keyDescription, gDescription );
      desc2.putInteger( keyDataPoints, gGridPoints );
      // assemble the full copyright string, if needed
      var copyrightAssembled = gCopyright;
      if (gCopyright != "")
      var theDate = new Date();
      // the year is from 1900 ????
      var theYear = (theDate.getYear() + 1900).toString();
      // Localization team says to just use the year
      var dateString = theYear;
      copyrightAssembled = localize("$$$/JavaScripts/Export3DLUT/Copyright=(C) Copyright ") + dateString + " " + gCopyright;
      desc2.putString( keyCopyright, copyrightAssembled );
      // select output format
      desc2.putBoolean( keyWriteICC, gDoSaveICCProfile );
      desc2.putBoolean( keyWrite3DL, gDoSave3DL );
      desc2.putBoolean( keyWriteCUBE, gDoSaveCUBE );
      desc2.putBoolean( keyWriteCSP, gDoSaveCSP );
        desc.putObject( keyUsing, keyExportLUT, desc2 );
      try
      var resultDesc = executeAction( eventExport, desc, DialogModes.NO );
      catch (e)
      if ( e.number != 8007 ) { // don't report error on user cancel
      var str = localize("$$$/JavaScripts/Export3DLUT/ExportLUTFailed=Unable to run the Export Color Lookup plugin because ");
      alert( str + e + " : " + e.line );
      gScriptResult = 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
      return false;
      return true;
    function doRenderGrid( points )
      // call the grid rendering plugin to do the work
        const keyRenderGrid = charIDToTypeID( "3grd" );
      const keyDataPoints2 = charIDToTypeID( 'grdP' );
      var args = new ActionDescriptor();
        args.putInteger( keyDataPoints2, points);
      try
      var result = executeAction( keyRenderGrid, args, DialogModes.NO );
      catch (e)
      if ( e.number != 8007 ) { // don't report error on user cancel
      var str = localize("$$$/JavaScripts/Export3DLUT/RenderGridFailed=Unable to render color grid because ");
      alert( str + e + " : " + e.line );
      gScriptResult = 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
      return false;
      return true;
    function resizeDocumentInPixels( width, height )
      var myDocument = app.activeDocument;
      var originalRulerUnits = app.preferences.rulerUnits;
      app.preferences.rulerUnits = Units.PIXELS;
      myDocument.resizeCanvas( width, height, AnchorPosition.MIDDLECENTER)
      app.preferences.rulerUnits = originalRulerUnits;
    function GetColorSettings()
      var desc1 = new ActionDescriptor();
      var ref1 = new ActionReference();
      ref1.putProperty( classProperty, kcolorSettingsStr );
      ref1.putEnumerated( classApplication, typeOrdinal, enumTarget );
      desc1.putReference( typeNULL, ref1 );
      var result = executeAction( eventGet, desc1, DialogModes.NO );
      var desc2 = result.getObjectValue( kcolorSettingsStr );
      return desc2;
    function GetColorConversionDitherState()
      var settings = GetColorSettings();
      if (settings.hasKey(kDither))
      return settings.getBoolean( kDither );
      else
      return null;
    function ConvertTo16Bit()
      const eventConvertMode = charIDToTypeID( 'CnvM' );
      const keyDepth = charIDToTypeID( 'Dpth' );
      var modeDesc16Bit = new ActionDescriptor();
      modeDesc16Bit.putInteger( keyDepth, 16 );
      var result = executeAction( eventConvertMode, modeDesc16Bit, DialogModes.NO );
    // state = true or false
    function SetColorConversionDither( state )
      var desc1 = new ActionDescriptor();
      var ref1 = new ActionReference();
      ref1.putProperty( classProperty, kcolorSettingsStr );
      ref1.putEnumerated( classApplication, typeOrdinal, enumTarget );
      desc1.putReference( typeNULL, ref1 );
      var desc2 = new ActionDescriptor();
      desc2.putBoolean( kDither, state );
      desc1.putObject( keyTo, kcolorSettingsStr, desc2 );
      executeAction( eventSet, desc1, DialogModes.NO );
    function PurgeClipboard()
      var desc1 = new ActionDescriptor();
      desc1.putEnumerated( typeNULL, typePurgeItem, enumClipboard );
      var result = executeAction( eventPurge, desc1, DialogModes.NO );
    // This helps us avoid resizing existing document views in tabbed document mode.
    // This is new functionality, and will not work in older Photoshop versions.
    function MoveDocumentToNewWindow()
      var desc1 = new ActionDescriptor();
      var result = executeAction( kFloatWindowStr, desc1, DialogModes.NO );
    function main()
      try
      var tempDoc = null;
      var tempDoc2 = null;
      // do basic troubleshooting first
      // make sure there is a document
      if (!app.activeDocument)
        gScriptResult = 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
      return;
      // check the document mode
      var mode = app.activeDocument.mode;
      if (mode != DocumentMode.RGB
      && mode != DocumentMode.LAB
      && mode != DocumentMode.CMYK)
      var str = localize("$$$/JavaScripts/Export3DLUT/UnsupportedColorMode=Could not export Color Lookup Tables because only RGB, LAB, and CMYK color modes are supported.");
      alert(str);
        gScriptResult = 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
      return;
      // check the document depth, for safety
      var depth = app.activeDocument.bitsPerChannel; // an object, not a number - why? I have no idea...
      var bitsPerChannel = 1;
      if (depth == BitsPerChannelType.EIGHT)
      bitsPerChannel = 8;
      else if (depth == BitsPerChannelType.SIXTEEN)
      bitsPerChannel = 16;
      else if (depth == BitsPerChannelType.THIRTYTWO)
      bitsPerChannel = 32;
      else
      var str = localize("$$$/JavaScripts/Export3DLUT/UnsupportedImageDepth=Could not export Color Lookup Tables because only 8, 16, and 32 bits/channel are supported.");
      alert(str);
        gScriptResult = 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
      return;
      // Check layer types: background plus adjustments only
      // For now, don't check each layer - a multiply solid layer still works as a color adjustment, as does selective blending
      // Users will get odd results from other layer types (layer masks, pixel layers, etc.)
      try
      app.activeDocument.backgroundLayer.visible = true;
      catch (e)
      if (activeDocument.layers.length == 1)
      alert( localize("$$$/JavaScripts/Export3DLUT/NoAdjustmentLayers=Could not export Color Lookup Tables because this document has no adjustment layers.") );
      else
      alert( localize("$$$/JavaScripts/Export3DLUT/NoBackground=Could not export Color Lookup Tables because this document has no background.") );
        gScriptResult = 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
      return;
      // look for last used params via Photoshop registry, getCustomOptions will throw if none exist
      try
      var desc = app.getCustomOptions(kScriptOptionsKey);
      readOptionsFromDescriptor( desc );
      catch(e)
      // it's ok if we don't have any existing options, continue with defaults
      // set some values from the document
      gDescription = app.activeDocument.name;
      // ask the user for options, bail if they cancel at any point
      if ( doExportUI() == false)
        gScriptResult = 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
      return;
      // we're good to go, so save our parameters for next time
      app.putCustomOptions(kScriptOptionsKey, createDescriptorFromOptions() );
      // remove file extension from filePath, if there is one
      gSaveFilePath = gSaveFilePath.replace(/\....$/,'');
      // calculate the size of image we need
      var width = gGridPoints * gGridPoints;
      var height = gGridPoints;
      if (mode == DocumentMode.CMYK)
      height = gGridPoints*gGridPoints;
      // duplicate the user document so we don't mess it up in any way
      tempDoc = app.activeDocument.duplicate("temporary");
      // make the temporary document active
      app.activeDocument.name = tempDoc;
      // to avoid resizing existing document views in tabbed mode
      MoveDocumentToNewWindow();
      // convert 8 bit documents to 16 bit/channel for improved quality of merged adjustments
      if (bitsPerChannel == 8)
      ConvertTo16Bit();
      depth = BitsPerChannelType.SIXTEEN;
      // resize the temporary canvas to our target size
      resizeDocumentInPixels( width, height )
      // select background layer
      tempDoc.activeLayer = tempDoc.backgroundLayer;
      // render lookup base grid
      var worked = doRenderGrid( gGridPoints );
      if (worked != true)
      tempDoc.close( SaveOptions.DONOTSAVECHANGES );
      return; // error should have already been shown, and there is not much we can do
      // do not flatten here -- the export automatically gets flattened data
      // and we may need layers for LAB->RGB conversion below
      // export the chosen formats
      worked = doExportLUTs( gSaveFilePath );
      if (worked != true)
      tempDoc.close( SaveOptions.DONOTSAVECHANGES );
      return; // error should have already been shown, and there is not much we can do
      // for LAB documents to export 3DLUT (which are inherently RGB), we have to do additional work
      // As a bonus, this works for CMYK as well!
      if ( mode != DocumentMode.RGB )
      var filePath = gSaveFilePath + "RGB";
      var oldDitherState = GetColorConversionDitherState();
      try
      SetColorConversionDither(false);
      const targetProfileName = "sRGB IEC61966-2.1";
      // new document temp2 in sRGB, matching depth of original
      var originalRulerUnits = app.preferences.rulerUnits;
      app.preferences.rulerUnits = Units.PIXELS;
      tempDoc2 = app.documents.add( width, gGridPoints, 72, "temp2",
      NewDocumentMode.RGB, DocumentFill.WHITE,
      1.0, depth, targetProfileName );
      app.preferences.rulerUnits = originalRulerUnits;
      // make the new doc active
      app.activeDocument.name = tempDoc2;
      // to avoid resizing existing document views in tabbed mode
      MoveDocumentToNewWindow();
      // insert grid
      worked = doRenderGrid( gGridPoints );
      if (worked == true)
      tempDoc2.selection.selectAll();
      tempDoc2.activeLayer = tempDoc2.backgroundLayer;
      tempDoc2.selection.copy();
      tempDoc2.close( SaveOptions.DONOTSAVECHANGES );
      tempDoc2 = null;
      // make sure temp1 is active
      app.activeDocument.name = tempDoc;
      // resize for RGB grid
      resizeDocumentInPixels( width, gGridPoints );
      tempDoc.selection.selectAll();
      tempDoc.paste(true);
      PurgeClipboard(); // so we don't leave an odd, large item on the clipboard
      tempDoc.selection.deselect();
      tempDoc.flatten();
      // convert temp1 to sRGB
      tempDoc.convertProfile( targetProfileName, Intent.RELATIVECOLORIMETRIC, true, false );
      // export the chosen formats
      worked = doExportLUTs( filePath );
      // at this point we still have to clean up, even if the call failed, so fall through
      else
      tempDoc2.close( SaveOptions.DONOTSAVECHANGES );
      catch (e)
      if ( e.number != 8007 ) { // don't report error on user cancel
      var str = localize("$$$/JavaScripts/Export3DLUT/UnableToConvertRGB=Unable to convert image to RGB because ");
      alert( str + e + " : " + e.line );
      if (tempDoc2 != null) tempDoc2.close( SaveOptions.DONOTSAVECHANGES );
      gScriptResult = 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
      // always reset the dither state
      SetColorConversionDither( oldDitherState );
      PurgeClipboard(); // so we don't leave an odd, large item on the clipboard
      } // if not RGB
      // always close temp document without saving
      tempDoc.close( SaveOptions.DONOTSAVECHANGES );
      catch (e)
      if ( e.number != 8007 ) { // don't report error on user cancel
      var str = localize("$$$/JavaScripts/Export3DLUT/UnableToExport=Unable to export LUT because ");
      alert( str + e + " : " + e.line );
      // always close temp document without saving
      if (tempDoc != null) tempDoc.close( SaveOptions.DONOTSAVECHANGES );
      gScriptResult = 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script

    Hi blabla12345,
    (untested and without warranty)
    replace this line:
    const sSaveCUBE = "CUBE";
    with this:
    const sSaveCUBE = "cube";
    Have fun

  • HT5275 When I download an attachment, it doesn't open in a new window.  It goes to my finder, but I must click on an email attachment at least 3 times in order to find it there.  Is there a way to change the preferences to simply open attachment in a new

    When I download an attachment, it doesn't open in a new window.  It goes to my finder, but I must click on an email attachment at least 3 times in order to find it there.  Is there a way to change the preferences to simply open attachment in a new window?

    http://www.apple.com/feedback/kaywerty wrote:
    A rather long winded way of asking if anybody knows if it's possible to have multi-windows open
    It's not possible.
    Suggestions here -> Apple Product feedback

  • Is there a way to change the icon associated with icloud account?

    Is there a way to change the icon associated with my iCloud account? It's currently a rose and i do not like it.

    Welcome to the Apple Support Communities
    Are you referring to your iCloud account picture or your user picture?
    It looks like you are referring to your user picture. To change it, open System Preferences > Users & Groups, press the picture box and choose the user picture you want from the ones that came by default. If you want to select a different picture stored on your Mac, drag that photo onto the picture box.
    If you want to change your iCloud account picture, open http://www.icloud.com and log in with your Apple ID. Then, press your name at the top right of the site and press the user picture. If you put the cursor on the picture box, you will see a button at the top of the box to change your picture

  • Is there a way to Change the Writing Speed When Burning CD-R's?

    Is there a way to change the writing speed when burning CD-R's?
    I don't see any options in Disk Utility.
    Rob
    P.S. Since I am burning coasters lately with the Pioneer DVR-111D, I though that I might solve the problem by using a lower write speed.

    I dn't believe so with Disk Utility although you can with Roxio Toast Titanium. I would try another media brand, like Verbatim, as a first step and see if the coaster problem goes away.

Maybe you are looking for