diff -u -r snaplinks-0.0.4-release/chrome/content/options.js snaplinks_v4_map/chrome/content/options.js
--- snaplinks-0.0.4-release/chrome/content/options.js 2007-09-08 19:52:57.000000000 +0200
+++ snaplinks_v4_map/chrome/content/options.js 2007-09-09 23:30:20.000000000 +0200
@@ -1,6 +1,7 @@
// Snap Links 0.0.4
// 09-Sep-2007
// Pedro Fonseca (savred at gmail)
+// David Hoeung, contributor (uid at free)
// Licence: GPL
// ----------------------------------------------------------------
@@ -10,7 +11,7 @@
function snaplInitializeOptions() {
- var checkboxes = ["snaplinks.openmouseleave","snaplinks.shownumber","snaplinks.multiline","snaplinks.multifonts"];
+ var checkboxes = ["snaplinks.openmouseleave","snaplinks.shownumber","snaplinks.multiline","snaplinks.multifonts","snaplinks.maparea"];
var groups = ["snaplinks.mouse","snaplinks.defaultaction","snaplinks.drawthick","snaplinks.linksthick"];
var colors = ["snaplinks.drawpicker","snaplinks.linkspicker"];
@@ -35,7 +36,7 @@
function snaplSaveOptions(){
- var checkboxes = ["snaplinks.openmouseleave","snaplinks.shownumber","snaplinks.multiline","snaplinks.multifonts"];
+ var checkboxes = ["snaplinks.openmouseleave","snaplinks.shownumber","snaplinks.multiline","snaplinks.multifonts","snaplinks.maparea"];
var groups = ["snaplinks.mouse","snaplinks.defaultaction","snaplinks.drawthick","snaplinks.linksthick"];
var colors = ["snaplinks.drawpicker","snaplinks.linkspicker"];
@@ -66,6 +67,7 @@
snaplFineLinks = 1;
snaplValueBold = pref.getBoolPref("extensions.snaplinks.multifonts")?1:0;
snaplMultiWord = pref.getBoolPref("extensions.snaplinks.multiline")?1:0;
+ snaplMapArea = pref.getBoolPref("extensions.snaplinks.maparea")?1:0;
snaplEndWhenOut = pref.getBoolPref("extensions.snaplinks.openmouseleave")?1:0;
snaplShowNumber = pref.getBoolPref("extensions.snaplinks.shownumber")?1:0;
diff -u -r snaplinks-0.0.4-release/chrome/content/options.xul snaplinks_v4_map/chrome/content/options.xul
--- snaplinks-0.0.4-release/chrome/content/options.xul 2007-08-21 21:51:35.000000000 +0200
+++ snaplinks_v4_map/chrome/content/options.xul 2007-09-09 23:31:41.000000000 +0200
@@ -130,6 +130,8 @@
pref="true" preftype="bool" prefstring="extensions.snaplinks.multiline"/>
+
diff -u -r snaplinks-0.0.4-release/chrome/content/process.js snaplinks_v4_map/chrome/content/process.js
--- snaplinks-0.0.4-release/chrome/content/process.js 2007-09-08 19:53:23.000000000 +0200
+++ snaplinks_v4_map/chrome/content/process.js 2007-09-14 00:34:38.000000000 +0200
@@ -1,6 +1,7 @@
// Snap Links 0.0.4
// 09-Sep-2007
// Pedro Fonseca (savred at gmail)
+// David Hoeung, contributor (uid at free)
// Licence: GPL
// ----------------------------------------------------------------
@@ -228,7 +229,7 @@
// Links appear to be bigger if they are bold
if(snaplValueBold){
if(lisz>(isz-0.2)){
- var stl = content.document.defaultView.getComputedStyle(explored[m], "fonte-weight");
+ var stl = content.document.defaultView.getComputedStyle(explored[m], "font-weight");
var lbold = 400;
lbold = parseFloat(stl.fontWeight);
if(lbold > 400)
@@ -270,6 +271,174 @@
}
+function startAreas() {
+ if (! snaplMapArea)
+ return;
+
+ snaplAreaLinks = new Array();
+ snaplAreaHref = new Array();
+
+ var tg = snaplTargetDoc.defaultView;
+ var minY = tg.pageYOffset;
+ var maxY = tg.pageYOffset + tg.innerHeight;
+
+ var mapname;
+ var mapObj, areaObj, coords, icoord;
+ var areaBoxLeft, areaBoxTop, areaBoxRight, areaBoxBottom;
+ var areaBoxWidth, areaBoxHeight, areaBoxObj;
+ var i, j, k;
+ for (i=0; i maxY)
+ continue;
+
+ if (! im.hasAttribute("usemap"))
+ continue;
+
+ mapname = im.getAttribute("usemap").substring(1);
+ if (snaplTargetDoc.getElementsByName(mapname).length < 1)
+ continue;
+
+ mapObj = snaplTargetDoc.getElementsByName(mapname)[0];
+ for (j=0; j areaBoxRight)
+ areaBoxRight = icoord;
+ icoord = parseInt(coords[k + 1]);
+ if (icoord < areaBoxTop)
+ areaBoxTop = icoord;
+ if (icoord > areaBoxBottom)
+ areaBoxBottom = icoord;
+ }
+ }
+ else {
+ continue;
+ }
+
+ areaBoxWidth = areaBoxRight - areaBoxLeft;
+ areaBoxHeight = areaBoxBottom - areaBoxTop;
+ areaBoxLeft += im.offsetLeft;
+ areaBoxTop += im.offsetTop;
+ areaBoxObj = createArea(areaBoxLeft, areaBoxTop, areaBoxWidth, areaBoxHeight);
+ snaplAreaHref.push(areaObj.getAttribute("href"));
+ snaplAreaLinks.push(areaBoxObj);
+ }
+ }
+}
+
+
+function createArea(left, top, width, height) {
+ var divObj = null;
+ var outlineFormat = snaplLinksBorderWidth + "px solid " + snaplLinksBorderColor; //"1px solid #ff0000";
+
+ if (snaplRect) {
+ divObj = document.createElement("div");
+ divObj.style.visibility = "hidden";
+ divObj.style.position = "absolute";
+ divObj.style.left = left + "px";
+ divObj.style.top = top + "px";
+ divObj.style.width = width + "px";
+ divObj.style.height = height + "px";
+ divObj.style.border = outlineFormat;
+ snaplRect.parentNode.appendChild(divObj);
+ }
+ return divObj;
+}
+
+
+function controlAreas() {
+ var i;
+ var c_X1 = Math.min(snaplX1,snaplX2);
+ var c_X2 = Math.max(snaplX1,snaplX2);
+ var c_Y1 = Math.min(snaplY1,snaplY2);
+ var c_Y2 = Math.max(snaplY1,snaplY2);
+
+ snaplAreaHrefSel = new Array();
+
+ for (i=0; i c_Y2 || l_Y2 < c_Y1 || l_X2 < c_X1 ||l_X1 > c_X2) {
+ link_ok=false;
+ } else {
+ link_ok=true;
+ }
+
+ if (link_ok==false) {
+ l.style.visibility = "hidden";
+ }
+ else {
+ l.style.visibility = "visible";
+ snaplAreaHrefSel.push(snaplAreaHref[i]);
+ }
+ }
+}
+
+
+function clearAreas() {
+ var i;
+ var divObj;
+ if (snaplAreaLinks) {
+ for (i=snaplAreaLinks.length-1; i>=0; i--) {
+ snaplRect.parentNode.removeChild(snaplAreaLinks[i]);
+ }
+ }
+ snaplAreaLinks = null;
+ snaplAreaHref = null;
+ snaplAreaHrefSel = null;
+}
+
+
function startRect(){
var insertionNode = (snaplTargetDoc.documentElement) ? snaplTargetDoc.documentElement : snaplTargetDoc;
@@ -284,6 +453,7 @@
snaplMultiBoxes = new Array();
addRectZone(true);
+ startAreas();
return;
}
@@ -432,8 +602,14 @@
snaplLinks.push(l);
}
}
+ if (snaplMapArea)
+ controlAreas();
+
if(snaplShowNumber){
- updateStatus(msgPanelLinks + " " + snaplLinks.length);
+ if (snaplMapArea)
+ updateStatus(msgPanelLinks + " " + (snaplLinks.length + snaplAreaHrefSel.length));
+ else
+ updateStatus(msgPanelLinks + " " + snaplLinks.length);
}
}
@@ -455,6 +631,10 @@
function clearRect() {
snaplDrawing=false;
+
+ if (snaplMapArea)
+ clearAreas();
+
if (snaplRect)
snaplRect.parentNode.removeChild(snaplRect);
snaplRect = null;
@@ -475,7 +655,8 @@
function executeAction(){
- if(snaplLinks && snaplLinks.length && snaplVisible){
+ if ((snaplLinks && snaplLinks.length && snaplVisible) ||
+ (snaplMapArea && snaplAreaHrefSel.length && snaplVisible)) {
switch(snaplAction){
case SNAPLACTION_TABS:
openTabs();
@@ -487,7 +668,7 @@
openTabsWindow();
break;
case SNAPLACTION_CLIPBOARD:
- saveCliboard();
+ saveClipboard();
break;
case SNAPLACTION_BOOKMARK:
bookmarkLinks();
@@ -501,9 +682,10 @@
}
}
-function saveCliboard(){
+function saveClipboard(){
- if(snaplLinks && snaplLinks.length && snaplVisible){
+ if ((snaplLinks && snaplLinks.length && snaplVisible) ||
+ (snaplMapArea && snaplAreaHrefSel.length && snaplVisible)) {
htmlRepresentation = "";
plainTextRepresentation = "";
@@ -519,6 +701,22 @@
}
}
+ if (snaplMapArea) {
+ if ((snaplLinks.length > 0) && (snaplAreaHrefSel.length > 0)) {
+ htmlRepresentation += "\n";
+ plainTextRepresentation += " ";
+ }
+ for(i=0; i" + text + "";
+ plainTextRepresentation += text;
+ if ((i + 1) != snaplAreaHrefSel.length ) {
+ htmlRepresentation += "\n";
+ plainTextRepresentation += " ";
+ }
+ }
+ }
+
// Create the transferable
var trans =
Components.classes["@mozilla.org/widget/transferable;1"]
@@ -571,6 +769,17 @@
window.open(l,"snapl");
}
}
+
+ if (snaplMapArea) {
+ total = snaplAreaHrefSel.length;
+ links = new Array();
+ if (snaplAreaHrefSel && total && snaplVisible) {
+ for (i=0; i 0) && ((! snaplMapArea) || (snaplAreaHrefSel.length == 0)))
+ urls = snaplLinks.join("|");
+ if ((snaplLinks.length == 0) && (snaplMapArea && (snaplAreaHrefSel.length > 0)))
+ urls = snaplAreaHrefSel.join("|");
+ if ((snaplLinks.length > 0) && (snaplMapArea && (snaplAreaHrefSel.length > 0)))
+ urls = snaplLinks.join("|") + "|" + snaplAreaHrefSel.join("|");
+ urls = urls || hand.defaultArgs;
return window.openDialog("chrome://browser/content/", "_blank", "all,chrome,dialog=no", urls);
}
function bookmarkLinks(){
+ var i,j;
var linksInfo = [];
try{
for(i=0;i
+
diff -u -r snaplinks-0.0.4-release/chrome/locale/fr-FR/options.dtd snaplinks_v4_map/chrome/locale/fr-FR/options.dtd
--- snaplinks-0.0.4-release/chrome/locale/fr-FR/options.dtd 2007-09-08 19:32:11.000000000 +0200
+++ snaplinks_v4_map/chrome/locale/fr-FR/options.dtd 2007-09-09 23:35:45.000000000 +0200
@@ -23,6 +23,7 @@
+
Seulement dans snaplinks-0.0.4-release/chrome: snaplinks.jar
diff -u -r snaplinks-0.0.4-release/chrome.manifest snaplinks_v4_map/chrome.manifest
--- snaplinks-0.0.4-release/chrome.manifest 2007-09-08 20:05:56.000000000 +0200
+++ snaplinks_v4_map/chrome.manifest 2007-09-09 23:24:38.000000000 +0200
@@ -1,8 +1,8 @@
-content snaplinks jar:chrome/snaplinks.jar!/content/
-locale snaplinks en-US jar:chrome/snaplinks.jar!/locale/en-US/
-locale snaplinks pt-PT jar:chrome/snaplinks.jar!/locale/pt-PT/
-locale snaplinks fr-FR jar:chrome/snaplinks.jar!/locale/fr-FR/
-locale snaplinks it-IT jar:chrome/snaplinks.jar!/locale/it-IT/
-locale snaplinks nl-NL jar:chrome/snaplinks.jar!/locale/nl-NL/
-locale snaplinks pl-PL jar:chrome/snaplinks.jar!/locale/pl-PL/
+content snaplinks chrome/content/
+locale snaplinks en-US chrome/locale/en-US/
+locale snaplinks pt-PT chrome/locale/pt-PT/
+locale snaplinks fr-FR chrome/locale/fr-FR/
+locale snaplinks it-IT chrome/locale/it-IT/
+locale snaplinks nl-NL chrome/locale/nl-NL/
+locale snaplinks pl-PL chrome/locale/pl-PL/
overlay chrome://browser/content/browser.xul chrome://snaplinks/content/snaplinks.xul
diff -u -r snaplinks-0.0.4-release/defaults/preferences/snaplinks.js snaplinks_v4_map/defaults/preferences/snaplinks.js
--- snaplinks-0.0.4-release/defaults/preferences/snaplinks.js 2007-08-21 21:51:35.000000000 +0200
+++ snaplinks_v4_map/defaults/preferences/snaplinks.js 2007-09-09 23:37:28.000000000 +0200
@@ -5,6 +5,7 @@
pref("extensions.snaplinks.shownumber", true);
pref("extensions.snaplinks.multiline", false);
pref("extensions.snaplinks.multifonts", false);
+pref("extensions.snaplinks.maparea", false);
pref("extensions.snaplinks.linkspicker","#FF0000");
pref("extensions.snaplinks.linksthick",1);