/*
@@@BUILDINFO@@@ VersionCue.jsx 1.0.0.1 3.1.0.0client51 6-July-2007
*/
/*
@@@START_XML@@@
Adobe Version Cue
Enable Version Cue in Bridge and CS3 applications
Adobe Version Cue
Aktiver Version Cue i Bridge og programmer til CS3
Adobe Version Cue
Version Cue in Bridge und CS3-Anwendungen aktivieren
Adobe Version Cue
Activar Version Cue en las aplicaciones Bridge y CS3
Adobe Version Cue
Ota Version Cue käyttöön Bridgessä ja CS3-sovelluksissa
Adobe Version Cue
Activer Version Cue dans Bridge et les applications CS3
Adobe Version Cue
Abilita Version Cue nelle applicazioni Bridge e CS3
Adobe Version Cue
Version Cue を Bridge および CS3 アプリケーションで有効にする
Adobe Version Cue
Bridge 및 CS3 응용 프로그램에서 Version Cue 활성화
Adobe Version Cue
Version Cue in Bridge en CS3-toepassingen inschakelen
Adobe Version Cue
Aktiver Version Cue i Bridge og CS3-programmer
Adobe Version Cue
Ativar o Version Cue em aplicativos Bridge e CS3
Adobe Version Cue
Aktivera Version Cue i Bridge och CS3-program
Adobe Version Cue
在 Bridge 和 CS3 应用程序中启用 Version Cue
Adobe Version Cue
在 Bridge 和 CS3 應用程式裡啟動 Version Cue
@@@END_XML@@@
*/
//------------------------------------------------------------------------------
// ADOBE SYSTEMS INCORPORATED
// Copyright 2007 Adobe Systems Incorporated
// All Rights Reserved
// NOTICE: Adobe permits you to use, modify, and distribute
// this file in accordance with the terms of the Adobe license
// agreement accompanying it. If you have received this file
// from a source other than Adobe, then your use, modification,
// or distribution of it requires the prior written permission of Adobe.
//------------------------------------------------------------------------------
#target bridge
if ( BridgeTalk.appName == "bridge" )
{
if (app.debugMode)
$.level = 1;
else
$.level = 0;
if (typeof versioncue != "undefined")
throw "VersionCue.jsx already run";
//----------------------------------------------------------------------------
// VersionCue Object: The main object where everything that needs to persist is stored at
//----------------------------------------------------------------------------
versioncue = new Object; //we noticed that due to var, on mac this object is getting Gc'ed
versioncue.uri = "bridge:vc:intrinsic://localhost/session/"; // root URI for VC
versioncue.resourcesFolder = new Folder(File ($.fileName).parent + "/resources");
//----------------------------------------------------------------------------
// VC enablement
//----------------------------------------------------------------------------
versioncue.isVCEnabled = function()
{
var vcEnabled = true;
if (File.fs == "Windows")
settingsPath = Folder.userData;
else if (File.fs == "Macintosh")
{
settingsPath = Folder.userData.parent;
settingsPath += "/Preferences";
}
settingsPath += "/Adobe/Workflow/settings.xml";
settingsFile = new File(settingsPath);
settingsFile.open("r:");
settingsString = settingsFile.read();
settingsFile.close();
vcStateIndex = settingsString.indexOf("q:section name=\"state\" on=\"false\"");
if (vcStateIndex >= 0)
vcEnabled = false;
return vcEnabled;
}
//----------------------------------------------------------------------------
// localization stuff
//----------------------------------------------------------------------------
versioncue.getLocaleFilePath = function()
{
var pathSpec = versioncue.resourcesFolder.fsName + "/Dictionaries/";
//let us set locale path
pathSpec += "versioncue_bridge_";
var localeName = app.locale;
if (localeName.toLowerCase() == "nb_no")
{
localeName = "no_no";
}
pathSpec += localeName;
pathSpec += ".zstring";
return pathSpec;
}
// we cache this path once since it never changes
versioncue.localeFilePath = versioncue.getLocaleFilePath();
versioncue.getLocalizedString = function( zstring )
{
var savePathSpec = undefined;
var localizedStr = "";
try
{
savePathSpec = app.zStringPathSpecifier;
app.zStringPathSpecifier = versioncue.localeFilePath;
localizedStr = localize(zstring);
app.zStringPathSpecifier = savePathSpec;
return localizedStr;
} catch(error)
{
if( savePathSpec != undefined )
app.zStringPathSpecifier = savePathSpec;
}
return localizedStr;
}
versioncue.getLocalizedString_n = function( zstring, arg1, arg2, arg3 )
{
var localizedStr = versioncue.getLocalizedString( zstring );
if( localizedStr != "" )
{
try
{
//we have got a valid localized string
if (arg3 != undefined)
localizedStr = localizedStr.replace( "(3)" , arg3 );
if (arg2 != undefined)
localizedStr = localizedStr.replace( "(2)" , arg2 );
if (arg1 != undefined)
localizedStr = localizedStr.replace( "(1)" , arg1 );
}catch(error) { Window.alert(error); }
}
return localizedStr;
}
//----------------------------------------------------------------------------
// Bridge version check
//----------------------------------------------------------------------------
versioncue.isBridgeVersionOK = function()
{
var bridgeVersion = app.version;
var versionComponents = bridgeVersion.split(".");
if ((versionComponents[0] == 2 && versionComponents[1] >= 1) || versionComponents[0] > 2 )
return true;
else
return false;
}
//----------------------------------------------------------------------------
// Bridge Update event handler
// Should not do UI as a startup script since this causes an timer alert
// also app.document is not defined at this time
// so create an event handler to pop the alert after the document create event
//----------------------------------------------------------------------------
versioncue.bridgeUpdateHandler = function( event )
{
try
{
if ((event == undefined) || (event.object == undefined) || (event.type == undefined))
return {handled:false};
if (event.object instanceof Document && event.type == "create")
{
app.eventHandlers.pop( { handler:versioncue.bridgeUpdateHandler } );
if (versioncue.didUpdateUI == false)
{
versioncue.didUpdateUI = true;
versioncue.popHandleBridgeVersionUpdateUI();
}
}
}
catch(error) { Window.alert(error); }
return {handled:false};
}
//----------------------------------------------------------------------------
// Bridge Update
//----------------------------------------------------------------------------
versioncue.doBridgeUpdate = function()
{
try {
if (app.document != undefined)
app.document.chooseMenuItem("Updates");
} catch(error) { Window.alert(error); }
}
//----------------------------------------------------------------------------
// Bridge Update dialog
//----------------------------------------------------------------------------
versioncue.popHandleBridgeVersionUpdateUI = function( )
{
try
{
// Dialog resource definition using the ExtendScript auto layout.
var dialogDef =
"dialog { orientation: 'column', alignChildren: 'fill', text: 'Adobe Version Cue', \
info: Panel { orientation: 'column', alignChildren: 'center', \
text: 'Update Action', \
alertText: Group { orientation: 'row', margins: 0, \
s: StaticText { text:'', properties:{multiline:true} } \
}, \
}, \
buttons: Group { orientation: 'row', \
firstOp: Button { text: 'Update', properties:{name:'firstOp'} }, \
secondOp: Button { text: 'Continue', properties:{name:'secondOp'} }, \
thirdOp: Button { text: 'Quit', properties:{name:'thirdOp'} }, \
} \
}";
/* Create a window with resource definition */
var handleBridgeVersionUpdateUI = new Window(dialogDef);
var displayStr = '$$$/Bridge/VCAdapter/Update_Alert=The Version Cue startup script requires ' +
'Bridge 2.1 or greater. Clicking the Update button launch the Adobe Updater ' +
'where you can download and install the latest updates. ' +
'Clicking Continue will disable the Version Cue startup script. ' +
'Clicking Quit will exit Bridge.';
//support for localization
handleBridgeVersionUpdateUI.info.alertText.s.text = versioncue.getLocalizedString(displayStr);
handleBridgeVersionUpdateUI.info.text = versioncue.getLocalizedString( "$$$/Bridge/VCAdapter/Update_Action=Update Action" );
handleBridgeVersionUpdateUI.buttons.firstOp.text = versioncue.getLocalizedString( "$$$/Bridge/VCAdapter/Update_Update=Update" );
handleBridgeVersionUpdateUI.buttons.secondOp.text = versioncue.getLocalizedString( "$$$/Bridge/VCAdapter/Update_Continue=Continue" );
handleBridgeVersionUpdateUI.buttons.thirdOp.text = versioncue.getLocalizedString( "$$$/Bridge/VCAdapter/Update_Quit=Quit" );
handleBridgeVersionUpdateUI.layout.layout(true);
// Function handling a click on the "Update" Button.
handleBridgeVersionUpdateUI.buttons.firstOp.onClick = function()
{
// wait some time before trying to do update
app.scheduleTask("versioncue.doBridgeUpdate()", 60000, false);
handleBridgeVersionUpdateUI.close(0);
}
// Function handling a click on the "Continue" Button.
handleBridgeVersionUpdateUI.buttons.secondOp.onClick = function()
{
handleBridgeVersionUpdateUI.close(0);
}
// Function handling a click on the "Quit" Button.
handleBridgeVersionUpdateUI.buttons.thirdOp.onClick = function()
{
if (app.document != undefined)
app.document.chooseMenuItem("mondo/command/quit");
handleBridgeVersionUpdateUI.close(0);
}
handleBridgeVersionUpdateUI.center();
handleBridgeVersionUpdateUI.show();
return;
} catch(error) { Window.alert(error); }
}
//----------------------------------------------------------------------------
//Imp: SDK need to be loaded & unloaded only once
//This is the global handle to ExternalObject for versioncueSDK.dll
versioncue.vcSDKHandle = null;
versioncue.isMac = (File.fs == "Macintosh");
versioncue.isWin = (File.fs == "Windows");
//----------------------------------------------------------------------------
// Debugging functionality
//----------------------------------------------------------------------------
versioncue.timeStamp = function ( dateobj )
{
var year = dateobj.getFullYear();
var month = dateobj.getMonth() + 1;
var day = dateobj.getDate();
var hr = dateobj.getHours();
var min = dateobj.getMinutes();
var sec = dateobj.getSeconds();
var milliSeconds = dateobj.getMilliseconds();
var tz = dateobj.getTimezoneOffset();
//$.writeln(tz);
var sign = "-";
if (tz < 0 )
sign = "+";
else if( tz == 0 )
sign = "Z";
tz = Math.abs(tz);
var tzhr = tz / 60;
var tzmin = tz % 60;
var iso = String(year) + "-";
if( month < 10 )
iso += "0";
iso += month;
iso += "-";
if ( day < 10 )
iso += "0";
iso += day;
iso += "T";
if( hr < 10 )
iso += "0";
iso += hr;
iso += "_";
if( min < 10 )
iso += "0";
iso += min;
iso += "_";
if( sec < 10 )
iso += "0";
iso += sec;
iso += "_m" + milliSeconds;
return iso;
}
versioncue.debugFile = function( name )
{
if (false == app.debugMode) return;
var now = new Date();
var nowISO = versioncue.timeStamp( now );
var logsHome = new Folder( "~/VC.jsx Logs" );
if( ! logsHome.exists )
{
var c = logsHome.create();
}
this.uname = name + "_" + nowISO;
this.logFolder = new Folder( logsHome.fsName + "/" + this.uname);
this.logFolder.create();
this.log = new File(this.logFolder.fsName + "/" + "Log.txt");
}
versioncue.debugLog = function( message )
{
// if (false == app.debugMode) return;
this.log.open("e:");
this.log.seek(0,2);
var dateobj = new Date();
var dateobj = new Date();
var now = versioncue.timeStamp( dateobj );
this.log.writeln( now + "\t" + message );
this.log.close();
}
// versioncue.debugFile( "versioncue.jsx.log" );
// versioncue.debugLog( "*** VC.jsx Execution Start ***" );
///////////////////////////////////////////////////////////////////////////////
// Main logic of script
///////////////////////////////////////////////////////////////////////////////
if (!versioncue.isVCEnabled())
{
// disable VC favorite
app.favorites.disable(versioncue.uri);
// and don't do anything else
}
else if (!versioncue.isBridgeVersionOK())
{
versioncue.didUpdateUI = false;
// set up an event handler to wait for document create before doing UI
app.eventHandlers.push( {handler:versioncue.bridgeUpdateHandler} );
}
else
{
versioncue.extensionPath = File ($.fileName).parent;
versioncue.mainFile = versioncue.extensionPath + "/resources/Scripts/VersionCueMain.jsx";
// versioncue.debugLog("mainFile: " + versioncue.mainFile );
versioncue.defaultMountRoot = "bridge:fs:file://";
if (File.fs == "Windows")
versioncue.defaultMountRoot += "/";
versioncue.defaultMountRoot += Folder.myDocuments.fsName + "/Version Cue";
versioncue.defaultMountRoot = versioncue.defaultMountRoot.replace(/\\/g, "/");
versioncue.defaultMountRoot = File.encode(versioncue.defaultMountRoot);
// versioncue.debugLog("defaultMountRoot: " + versioncue.defaultMountRoot );
versioncue.defaultMountRootFSPath = File(Folder.myDocuments + "/Version Cue").fsName;
// versioncue.debugLog("defaultMountRootFSPath: " + versioncue.defaultMountRootFSPath );
vcLightHandler = new ExtensionHandler("vcLightExtensionHandler");
vcLightHandler.initPrefixes = [
"bridge:vc:",
"instrinsic:",
"vcstable:",
versioncue.defaultMountRoot,
versioncue.defaultMountRootFSPath ];
vcLightHandler.getBridgeUriForPath = function (path)
{
// versioncue.debugLog("vcLightHandler.getBridgeUriForPath called, path= " + path );
// getting called means that we need the full VC loaded
// unregister prefixes from vcLightHandler
for(var i = 0; i < vcLightHandler.initPrefixes.length; i++)
{
app.unregisterPrefix(vcLightHandler.initPrefixes[i], vcLightHandler );
}
// unregister vcLightHandler
app.unregisterExtension(vcLightHandler);
// load full version cue
$.evalFile( versioncue.mainFile );
return "";
}
vcLightHandler.getBridgeUriForSearch = function ()
{
// don't need to do anything here
}
// If Version Cue favorite is not defined then load full Version Cue handler so that
// favorite can be created.
// If Version Cue Favorite is defined then use the light weight handler to delay loading
// of full Version Cue support until the light handler gets a request for a BridgeUri
if (!app.favorites.contains(versioncue.uri))
{
// load full version cue
// versioncue.debugLog("Version Cue favorite not defined, load full version cue" );
$.evalFile( versioncue.mainFile );
}
else
{
// versioncue.debugLog("Version Cue favorite defined, register light handler" );
app.favorites.enable(versioncue.uri);
app.registerExtension(vcLightHandler);
for(var i = 0; i < vcLightHandler.initPrefixes.length; i++)
{
app.registerPrefix(vcLightHandler.initPrefixes[i], vcLightHandler );
}
}
}
// versioncue.debugLog( "*** VersionCue.jsx Execution End ***" );
}