#targetengine 'session'
var ProgrammName = "Image Checker"; myVersion = "0.3.190314"
var maxlinks, currentlinks,mySel,FilterFlag;
app.scriptPreferences.enableRedraw = true;
FilterFlag = 1; ZoomFactor = 4; FireOnce = true;
script_ApfelV = 'tell application "System Events"\nkeystroke "v" using {command down}\nend tell';
script_Enter = 'tell application "System Events"\nkeystroke return\nend tell';
#targetengine 'session'
var ProgrammName = "Image Checker"; myVersion = "0.3.190314"
var maxlinks, currentlinks,mySel,FilterFlag;
app.scriptPreferences.enableRedraw = true;
FilterFlag = 1; ZoomFactor = 4; FireOnce = true;
script_ApfelV = 'tell application "System Events"\nkeystroke "v" using {command down}\nend tell';
script_Enter = 'tell application "System Events"\nkeystroke return\nend tell';
function sortByKey(array, key) {
return array.sort(function(b, a) {
var x = a[key]; var y = b[key];
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
});
}
//Main routine
var main = function() {
var doc = app.properties.activeDocument,dlg, linksData, n,
callback;
if ( !doc ) return;
this.dlg = this.dlg || ui();
this.dlg.show();
}
//Retrieve doc links
function getLinks(sorter){
const uris = [
"srvmar16\.zentrale\.ad\.local",
"192\.168\.96\.116","172\.18\.116\.1"];
var ls, n = 0, l, o = {}, lid,
doc = app.properties.activeDocument, reg;
if ( !doc ) return o;
reg = new RegExp( "("+uris.join("|")+")", "i" );
ls = doc.links.everyItem().getElements();
maxlinks = ls.length;
currentlinks = ls.length;
n = ls.length; maxlinks = n;
sortByKey(ls, "name");
while ( n-- ) {
l = ls[n];
if (FilterFlag == 1)
{if (reg.test(l.filePath) ) continue; }
else
{if (l.parent.flip == Flip.NONE) continue;}
try {Ort = l.parent.parentPage.name;} catch(err) {Ort = "MF"};
lid = l.id;
o[lid] = {name:l.name, id:lid, container:l.parent.parent,onPage:Ort};
//o[lid] = {name:l.name, id:lid, container:l.parent.parent,onPage:l.label};
}
currentlinks = o.__count__;
return o;
}
//UI build function
var ui = function (){
var u,
w = new Window('palette', ProgrammName+"["+$.engineName+"]"),
grp0 = w.add('group'),
panel0 = grp0.add('panel', [0,0,200,70], "Überprüfen", {borderStyle:'black'}),
grp9 = panel0.add('group'),
grp1 = grp9.add('group'),
radio1 = grp1.add('radiobutton', undefined, "Cumulus-Check"), radio2 = grp1.add ('radiobutton', undefined, "Gespiegelte Bilder"),
panel1 = grp0.add('panel', [0,0,320,70], "Optionen", {borderStyle:'black'}),
rower = panel1.add('group'),
checkboxgrp1 = rower.add('group'),
check1 = checkboxgrp1.add ("checkbox", undefined, "Zoomen"),
check2 = checkboxgrp1.add ("checkbox", undefined, "Suffix ignorieren"),
checkboxgrp2 = rower.add('group'),
check3 = checkboxgrp2.add ("checkbox", undefined, "CantoCumulus"),
check4 = checkboxgrp2.add ("checkbox", undefined, "<Platzhalter>"),
ls = w.add('listbox',undefined,undefined,{selection: mySel, numberOfColumns: 2, showHeaders: true, columnTitles: ["Seite", "Name"]}),
grp = w.add('group'),
pbar = grp.add ('progressbar', undefined, 0, maxlinks),
t1 = grp.add ('statictext', undefined, "999/999 ➜ 100 %"),
bgrp = w.add('group'),
btn1 = bgrp.add('button',u,"Liste Aktualisieren"),
btn2 = bgrp.add('button',u,"Schließen"),
linkItem, listItem,
updateLinksList = function(param) {
var data, linkData, listItem;
ls.removeAll();
if (param == 0) {data = getLinks(0)} else {data = getLinks(1)};
if (FilterFlag == 1) {radio1.value = true;} else {radio2.value = true;}
t1.text = ""+currentlinks+ "/"+maxlinks+" ➜ "+Math.round((100 - (((100 / maxlinks) * currentlinks))))+" %";
pbar.maxvalue = maxlinks;
pbar.value = maxlinks - currentlinks;
w.update();
if ( !data.__count__ ) return;
currentlinks = ( data.__count__ );
for ( prop in data ) {
linkData = data[prop];
listItem = ls.add('item', linkData.onPage);
listItem.checked = false;
listItem.subItems[0].text = linkData.name;
listItem.data = linkData;
};
}, ev = app.eventListeners.itemByName ( "onSelectionChanged" );
w.alignChildren = ["fill","fill"];
grp1.orientation = "column";
checkboxgrp1.orientation = "column";
checkboxgrp1.alignChildren = "left";
checkboxgrp2.orientation = "column";
checkboxgrp2.alignChildren = "left";
grp1.alignChildren = ["fill","fill"];
grp0.alignChildren = "top";
grp9.alignChildren = "top";
panel0.alignChildren = "left";
rower.alignChildren = ["row","top"];
grp1.borderStyle = "white";
grp.alignChildren = ["fill","fill"];
bgrp.alignChildren = ["fill","fill"];
ls.preferredSize = [300,200];
ls.maximumSize.height = 300;
pbar.preferredSize = [400,2];
pbar.maxvalue = maxlinks;
pbar.value = maxlinks - currentlinks;
t1.characters = 16;
t1.justify = "right";
radio1.value = true;
check1.value = true;
check2.value = true;
check3.value = true;
check4.value = false;
check4.visible = false;
if (FireOnce == true)
{
updateLinksList(0);
w.update();
FireOnce = false;
}
btn2.onClick = function(){w.close(0)};
btn1.onClick = function()
{
if (check1.value == true) {updateLinksList(0)} else {updateLinksList(1)}
w.update()
};
radio1.onClick = function(){
FilterFlag = 1;
pbar.maxvalue = maxlinks;
pbar.value = maxlinks - currentlinks;
updateLinksList(0);
w.update()
};
radio2.onClick = function() {
FilterFlag = 2;
pbar.maxvalue = maxlinks;
pbar.value = maxlinks - currentlinks;
updateLinksList(1);
w.update()
};
ls.onDoubleClick = function() {
if (ls.items[ls.selection.index].checked == true) {ls.items[ls.selection.index].checked = undefined;} else {ls.items[ls.selection.index].checked = true;}
//app.menuActions.itemByID(1936410).invoke();
};
ls.onChange = function() {
if ( !ls.selection ) return;
//mySel = ls.selection;
t1.text = ""+currentlinks+ "/"+maxlinks+" ➜ "+Math.round((100 - (((100 / maxlinks) * currentlinks))))+" %";
if (check1.value == true)
{zoomObject ( ls.selection.data.container , ZoomFactor,)} else
{zoomObject ( ls.selection.data.container , 0,)};
if (check3.value == true)
{
if (check2.value == true) {SetClipboard ( ls.selection.data.name.replace ( /\.[a-z]+$/i, '') );} else {SetClipboard ( ls.selection.data.name)};
app.menuActions.itemByID(1936410).invoke();
app.doScript(script_ApfelV,ScriptLanguage.APPLESCRIPT_LANGUAGE);
app.doScript(script_Enter,ScriptLanguage.APPLESCRIPT_LANGUAGE);
}
}
w.onShow = function(){
}
if ( !ev.isValid ) {
app.eventListeners.add("afterSelectionChanged",function(evt){
t1.text = ""+currentlinks+ "/"+maxlinks+" ➜ "+Math.round((100 - (((100 / maxlinks) * currentlinks))))+" %";
pbar.maxvalue = maxlinks;
pbar.value = maxlinks - currentlinks;
});
}
return w;
};
//Created by Dave Saunders > http://jsid.blogspot.fr/2006/01/zoom-in-on-object.html
function zoomObject(theObj, theRatio) {
try {
var objBounds = theObj.geometricBounds;
} catch (e) {
throw "Objekt hat keine Abmessungen."
}
var ObjHeight = objBounds[2] - objBounds[0];
var ObjWidth = objBounds[3] - objBounds[1];
var myWindow = app.activeWindow;
var pageBounds = myWindow.activePage.bounds;
var PgeHeight = pageBounds[2] - pageBounds[0];
var PgeWidth = pageBounds[3] - pageBounds[1];
var hRatio = PgeHeight/ObjHeight;
var wRatio = PgeWidth/ObjWidth;
var zoomRatio = Math.min(hRatio, wRatio);
var OldZoomVal;
app.select(theObj); // to make active the page that holds theObj
if (theRatio != 0) {
myWindow.zoom(ZoomOptions.fitPage);
myWindow.zoomPercentage = myWindow.zoomPercentage * theRatio; // * zoomRatio;
} else {
OldZoomVal = myWindow.zoomPercentage;
myWindow.zoom(ZoomOptions.fitPage);
myWindow.zoomPercentage = OldZoomVal;
} }
//See here for reference :
//https://forums.adobe.com/thread/2203330
function SetClipboard(clip){
var clipboard;
if(File.fs == "Macintosh"){
app.doScript ('tell application "Finder" to set the clipboard to "'+clip+'"',ScriptLanguage.APPLESCRIPT_LANGUAGE);
} else {
app.doScript ( 'Dim theObject\r Set theObject = CreateObject (\"htmlfile\")\r Call theObject.ParentWindow.ClipboardData.SetData(\"text\",\"'+clip+'\")', ScriptLanguage.visualBasic );
}
return;
}
main();