var menuParent = (app.viewerVersion<10)? "DocumentProcessing":"Edit";
app.addSubMenu({ cName:"RSCivilTools", cUser:"RSCivil Tools", cParent:menuParent, nPos:((app.viewerVersion<10)? 0:7) });
app.addMenuItem({ cName:"RSCcreateNest", cUser:"Create Nest", cParent:"RSCivilTools",
cExec:"createNest();",
cEnable:"event.rc = (event.target != null);", nPos:0 });
app.addMenuItem({ cName:"RSCpromote", cUser:"Undo Nest", cParent:"RSCivilTools",
cExec:"promoteOCG_handler(event.target);",
cEnable:"event.rc = (event.target != null);", nPos:1 });
app.addMenuItem({ cName:"RSCremGAG", cUser:"Unlist 'Guides and Grids'", cParent:"RSCivilTools",
cExec:"removeGAG(event.target);",
cEnable:"event.rc = (event.target != null);", nPos:2 });
app.addMenuItem({ cName:"RSCsetStates", cUser:"Set Layers", cParent:"RSCivilTools",
cExec:"setStates();",
cEnable:"event.rc = (event.target != null);", nPos:3 });
app.addMenuItem({ cName:"RSCtoggleCityLimits", cUser:"Toggle City Limits", cParent:"RSCivilTools",
cExec:"toggleCityLimits();",
cEnable:"event.rc = (event.target != null);", nPos:4 });
app.addMenuItem({ cName:"RSCsite", cUser:"Website", cParent:"RSCivilTools",
cExec:"app.launchURL('http://rscivil.com');", nPos:5 });
app.addToolButton({
cName: "RSCcreateNestButton",
cExec: "createNest();",
cTooltext: "Create Nest",
cEnable: true,
nPos: 0,
cLabel: "Create Nest"
})
app.addToolButton({
cName: "promoteLayers",
cExec: "promoteOCG_handler(event.target);",
cTooltext: "Undo Nest",
cEnable: true,
nPos: 1,
cLabel: "Undo Nest"
})
function createNest(){
var layers = this.getOCGs();
var newOrder = new Array();
var cityLimits = new Array();
var comps = new Array();
comps[0] = "Comps";
for (var i=0,j=0,k=0,l=1; i<layers.length; i++){
if(layers[i].name.substr(0,11)==="CityLimits|"){
cityLimits[j] = layers[i];
j++;
}
else if(layers[i].name.substr(0,4)==="COMP"){
comps[l] = layers[i];
l++;
}
else{
newOrder[k] = layers[i];
k++;
}
}
newOrder.splice(5,0,cityLimits);
newOrder[newOrder.length] = comps;
this.setOCGOrder(newOrder);
}
function promoteOCG_handler(oDoc) {
var ocgOrder = oDoc.getOCGOrder();
var hasNest = false;
if (ocgOrder==null) {
app.alert( "No layers in current file", 0, 0, "Cannot proceed");
} else {
for (var i=0; i<ocgOrder.length; i++) {
if ((typeof(ocgOrder[i]) == "object") && (ocgOrder[i].length > 0)) hasNest = true;
}
if (hasNest) {
promoteOCGs(oDoc,ocgOrder);
} else app.alert( "No nested layers in current file", 0, 0, "Cannot proceed");
}
}
function promoteOCGs(oDoc,ocgOrder) {
var oChk = { cMsg:"Unlist the 'Guides and Grids' layer?", bInitialValue:true, bAfterValue:false};
var newOrder = new Array();
for (var i=0; i<ocgOrder.length; i++) {
var oType = typeof(ocgOrder[i]);
var oLeng = ocgOrder[i].length
if ((oType == "object") && (oLeng > 0)) {
for (var j=0; j<oLeng; j++) {
if ((typeof(ocgOrder[i][j]) == "object") &&
(!oChk.bAfterValue || (ocgOrder[i][j].name != "Guides and Grids"))) newOrder.push(ocgOrder[i][j]);
}
} else if (!oChk.bAfterValue || (ocgOrder[i].name != "Guides and Grids")) newOrder.push(ocgOrder[i]);
}
oDoc.setOCGOrder( newOrder );
}
function removeGAG(oDoc) {
var cMesg = "This action will unlist the 'Guides and Grids' layer from the sidebar but will NOT delete the ";
cMesg += "layer itself. IT CANNOT BE UNDONE.\n\nDo you want to continue?";
var nRtn = app.alert(cMesg, 2, 2, "Unlist 'Guides and Grids'");
if (nRtn == 4) {
var ocgOrder = oDoc.getOCGOrder();
var newOrder = new Array();
for (var i=0; i<ocgOrder.length; i++) {
var oType = typeof(ocgOrder[i]);
var oLeng = ocgOrder[i].length
if ((oType == "object") && (oLeng > 0)) {
var subObj = new Array();
for (var j=0; j<oLeng; j++) {
if ((typeof(ocgOrder[i][j]) == "string") || (ocgOrder[i][j].name != "Guides and Grids")) subObj.push(ocgOrder[i][j]);
}
newOrder.push(subObj);
} else if (ocgOrder[i].name != "Guides and Grids") newOrder.push(ocgOrder[i]);
}
oDoc.setOCGOrder( newOrder );
}
}
function togList(name){
if(name.substr(0,11)==="CityLimits|")
return true;
return false;
}
function offList(name){
var lOff = new Array();
lOff[0] = "ADT";
lOff[1] = "CityLimits|1900";
lOff[2] = "CityLimits|1910";
lOff[3] = "CityLimits|1920";
lOff[4] = "CityLimits|1930";
lOff[5] = "CityLimits|1940";
lOff[6] = "CityLimits|1950";
lOff[7] = "CityLimits|1960";
lOff[8] = "CityLimits|1970";
lOff[9] = "CityLimits|1975";
lOff[10] = "CityLimits|1980";
lOff[11] = "CityLimits|1985";
lOff[12] = "CityLimits|1990";
lOff[13] = "CityLimits|1995";
lOff[14] = "CityLimits|2000";
lOff[15] = "CityLimits|2005";
lOff[16] = "CityLimits|2006";
lOff[17] = "CityLimits|2007";
lOff[18] = "CityLimits|2008";
lOff[19] = "CityLimits|2009";
lOff[20] = "CityLimits|2010";
lOff[21] = "CityLimits|2011";
lOff[29] = "Distance Circles 1";
lOff[30] = "Distance Circles 2";
lOff[31] = "landuse|Agriculture";
lOff[32] = "landuse|Industrial";
lOff[33] = "Landmark Labels Locations";
lOff[34] = "landmarks|Locations";
for (var i=0; i<lOff.length; i++){
if(lOff[i] === name)
return true;
}
return false;
}
function toggleCityLimits(){
var layers = this.getOCGs();
for (var i=0; i<layers.length; i++){
var tog = true;
if(togList(layers[i].name)){
if(layers[i].state)
tog = false;
layers[i].state = tog;
}
}
}
function setStates(){
var layers = this.getOCGs();
for (var i=0; i<layers.length; i++){
var tog = true;
if(offList(layers[i].name))
tog = false;
layers[i].state = tog;
layers[i].initState = tog;
}
}
출처 : http://www.uvsar.com/go/indesignfixups