// ####################################################### // // Skrypt do tworzenia CSS i HTML na podstawie lini pomocniczych (guides) // Użycie: // ustaw linie pomocnicze na grafice w miejscach odpowiedających cięciu grafiki na kawałki, // a następnie odpal ten skrypt poprzez menu File -> scripts -> browse... // Grafika musi być odpowiednio przygotowana: // Poszczególne pozycje menu powinny być odzielone liniami pomocniczymi. // Jeżeli menu ma orientację poziomą, wtedy na górze obok siebie powinny się znajdować pozycje "normal", // a pod nimi odzielone od powyższych pojedyńczą linią pomocniczą - pozycje "hover". // Przykładowe ułożenie grafiki (znak "+" rysuje linie pomocnicza): // ////////////////////////////////////////////////////////////////////////////////// // + + + // // [ menu1 normal ] + [ menu2 normal ] + [ menu3 normal ] + [ menu4 normal ] // // + + + // // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // // + + + // // [ menu1 hover ] + [ menu2 hover ] + [ menu3 hover ] + [ menu4 hover ] // // + + + // ////////////////////////////////////////////////////////////////////////////////// // // Takie samo postępowanie jest w przypadku menu pionowego, zmienia się tylko orientacja :) // Więcej informacji na: http://doman.art.pl/2011-02-27 // // ####################################################### if( BridgeTalk.appName == "photoshop" ) { var doc = app.activeDocument; var nazwaMenu = ''; var guidesH = []; //tu bede przechowywal poziome linie pomocnicze var guidesV = []; //tutaj pionowe var plasterki = []; //tutaj będę przechowywał plasterki var g = activeDocument.guides; //pobieram guides var documentWidth = parseInt(doc.width); //width dokumentu var documentHeight = parseInt(doc.height); //height //dziele na tablice guides for (i=0; i= 0) { guidesV.push({g : g[i], x : parseInt(g[i].coordinate)}); } else { guidesH.push({g : g[i], y : parseInt(g[i].coordinate)}); } } //menu może mieć stan normal i hover, które oddziela 1 linia. //Sytuacja ta może występować dla pionu lub poziomu, ale nie dla 2 jednocześnie if (guidesV.length>1 && guidesH.length>1) { alert("Za dużo linii. \nMoże być tylko 1 dzieląca obraz na 2 części (pionowo lub poziomo)"); } //############################################################################## //OKNO Z WYGENEROWANYM KODEM POZIOMYM function windowPoziom() { //pobrane guides trzeba posortować od lewej do prawej, bo są //ułożone po dacie utworzenia function sortowaniePoziome(a,b) { return ((a.x < b.x) ? -1 : ((a.x > b.x) ? 1 : 0)); } guidesV.sort(sortowaniePoziome) //jezeli jest pozioma to bedziemy liczyc tez hover if (guidesH.length) { var jestHover = true; var hPlasterka = guidesH[0].y; } else { var jestHover = false; var hPlasterka = documentHeight; } if (guidesV.length) { for (i=0; i\n"; for (i=0; i....\n"; } text += ""; var panel = win.add("panel"); panel.orientation = "column"; panel.add("statictext", {x:0, y:5, width:600, height:10}, "HTML dla menu:"); panel.add("edittext", {x:0, y:5, width:600, height:70}, text, {multiline:true}); //editInput.panelgraphics.font = ScriptUI.newFont("Arial","REGULAR",9); //============================= //podstawowe CSS menu var text = ''; text += "."+nazwaMenu+" {width:"+documentWidth+"px; height:"+hPlasterka+"px;}\n"; text += "."+nazwaMenu+" li {background:url(...) no-repeat; height:"+hPlasterka+"px; float:left;}\n"; text += "."+nazwaMenu+" a {width:100%; height:"+hPlasterka+"px; overflow:hidden; text-indent:-999px; display:block;}\n"; var panel = win.add("panel"); panel.orientation = "column"; panel.add("statictext", {x:0, y:5, width:600, height:10}, "CSS dla menu:"); panel.add("edittext", {x:0, y:5, width:600, height:70}, text, {multiline:true}); var ie6info = panel.add("statictext", {x:0, y:5, width:600, height:10}, "Dla IE6 trzeba dodać jeszcze dla \".menu a\" padding-top:-"+hPlasterka+"px;"); ie6info.graphics.font = ScriptUI.newFont("Arial","REGULAR",10); //============================= //wypisuje style - dla normal var panel = win.add("panel"); var text = ''; for (i=0; i b.y) ? 1 : 0)); } guidesH.sort(sortowaniePion) //jezeli jest pozioma to bedziemy liczyc tez hover if (guidesV.length) { var jestHover = true; var wPlasterka = guidesV[0].x; } else { var jestHover = false; var wPlasterka = documentWidth; } if (guidesH.length) { for (i=0; i\n"; for (i=0; i....\n"; } text += ""; var panel = win.add("panel"); panel.orientation = "column"; panel.add("statictext", {x:0, y:5, width:600, height:10}, "HTML dla menu:"); panel.add("edittext", {x:0, y:5, width:600, height:70}, text, {multiline:true}); //============================= //podstawowe CSS dla menu var text = ''; text += "."+nazwaMenu+" {width:"+wPlasterka+"px; height:"+documentHeight+"px;}\n"; text += "."+nazwaMenu+" li {background:url(...) no-repeat; width:"+wPlasterka+"px;}\n"; text += "."+nazwaMenu+" a {width:100%; height:100%; overflow:hidden; text-indent:-999px; display:block;}\n"; var panel = win.add("panel"); panel.orientation = "column"; panel.add("statictext", {x:0, y:5, width:600, height:10}, "CSS dla menu:"); panel.add("edittext", {x:0, y:5, width:600, height:70}, text, {multiline:true}); var ie6info = panel.add("statictext", {x:0, y:5, width:600, height:10}, "Dla IE6 dodać jeszcze dla \".menu a\" padding-top:-"+wPlasterka+"px;"); ie6info.graphics.font = ScriptUI.newFont("Arial","REGULAR",10); //============================= //wypisuje style - dla normal var panel = win.add("panel"); var text = ''; for (i=0; i guidesH.length) { windowPoziom(); } else { windowPion(); } } else if (/^[^a-z]/i.test(nazwaM)) { alert("Nazwa nie może zaczynać się od liczby"); } else if (/[^a-z0-9\-]/i.test(nazwaM)) { alert("Nazwa zawiera niedozwolone znaki"); } else { alert("Nazwa musi mieć co najmniej 2 znaki"); } } win.center(); win.show(); } windowName(); }