[Pkg-mozext-commits] [automatic-save-folder] 84/133: Change : - Remove the need of the slashes around regular expressions

David Prévot taffit at moszumanska.debian.org
Mon Apr 27 20:33:55 UTC 2015


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch wip
in repository automatic-save-folder.

commit 073f891eb11c5424e3bc47220d98d671ced7edf3
Author: Cyan <Cyan at d0063192-6b2e-11de-89a9-0b20f3e2dceb>
Date:   Mon Nov 15 18:22:02 2010 +0000

    Change :
    - Remove the need of the slashes around regular expressions
    
    Fix :
    - Dynamic folder creation for the first filter wasn't working (Thanks to Googer)
    - Prevent conflict when reseting ASF preferences
      while DownSort add-on is installed.
    - ASF box size on the saving dialog, when coming back from the filter's list.
      (It might create a resize bug, but it should not be seen often by the user)
    
    git-svn-id: http://automatic-save-folder.googlecode.com/svn/trunk@90 d0063192-6b2e-11de-89a9-0b20f3e2dceb
---
 content/add.xul            |   8 +-
 content/asf.js             |  80 +++++++++++++++++---
 content/asf_addedit.js     | 103 ++++++++++---------------
 content/asf_download.js    | 153 ++++++++++++++-----------------------
 content/asf_right_click.js | 182 ++++++++++++++++++++++++++-------------------
 content/common.dtd         |   2 +-
 content/edit.xul           |   8 +-
 content/help/regexp.xhtml  |   7 --
 locale/en-US/about.dtd     |   7 +-
 locale/en-US/asf.dtd       |   6 +-
 locale/en-US/help.dtd      |   2 +-
 locale/en-US/regexp.dtd    |   7 --
 locale/fr/about.dtd        |  13 ++--
 locale/fr/asf.dtd          |   2 +-
 locale/fr/regexp.dtd       |   7 --
 locale/it/about.dtd        |   7 +-
 locale/it/asf.dtd          |   6 +-
 locale/it/help.dtd         |   2 +-
 locale/it/regexp.dtd       |   7 --
 locale/ru/about.dtd        |   5 +-
 locale/ru/asf.dtd          |   8 +-
 locale/ru/help.dtd         |   2 +-
 locale/ru/regexp.dtd       |   7 --
 23 files changed, 314 insertions(+), 317 deletions(-)

diff --git a/content/add.xul b/content/add.xul
index b115bd0..2e12b5f 100644
--- a/content/add.xul
+++ b/content/add.xul
@@ -29,8 +29,8 @@
 			<radio id="asf-addedit-radio-domain-all" value="0" label="&asf.addedit.all;" oncommand="automatic_save_folder.asf_toggleradio_domain()"/>
 			<hbox>
 				<radio id="asf-addedit-radio-domain" value="1" label="=" oncommand="automatic_save_folder.asf_toggleradio_domain()"/>
-				<textbox id="asf-addedit-domain" width="200" onchange="automatic_save_folder.testRegexp('asf-addedit-domain-regexp', 'asf-addedit-domain');"/>
-				<checkbox id="asf-addedit-domain-regexp" label="&asf.addedit.regexp;" oncommand="automatic_save_folder.makeRegexp('asf-addedit-domain-regexp', 'asf-addedit-domain');"/>
+				<textbox id="asf-addedit-domain" width="200"/>
+				<checkbox id="asf-addedit-domain-regexp" label="&asf.addedit.regexp;"/>
 			</hbox>
 		</radiogroup>
 		<separator class="thin"/>
@@ -40,8 +40,8 @@
 			<radio id="asf-addedit-radio-filename-all" value="0" label="&asf.addedit.all;" oncommand="automatic_save_folder.asf_toggleradio_filename()"/>
 			<hbox>
 				<radio id="asf-addedit-radio-filename" value="1" label="=" oncommand="automatic_save_folder.asf_toggleradio_filename()"/>
-				<textbox id="asf-addedit-filename" width="200" onchange="automatic_save_folder.testRegexp('asf-addedit-filename-regexp', 'asf-addedit-filename')"/>
-				<checkbox id="asf-addedit-filename-regexp" label="&asf.addedit.regexp;" oncommand="automatic_save_folder.makeRegexp('asf-addedit-filename-regexp', 'asf-addedit-filename');"/>
+				<textbox id="asf-addedit-filename" width="200"/>
+				<checkbox id="asf-addedit-filename-regexp" label="&asf.addedit.regexp;"/>
 			</hbox>
 		</radiogroup>
 		<separator class="thin"/>
diff --git a/content/asf.js b/content/asf.js
index 75b7303..66b232b 100644
--- a/content/asf.js
+++ b/content/asf.js
@@ -112,6 +112,8 @@ var automatic_save_folder = {
 			var filename = this.loadUnicodeString("extensions.asf.filters"+ i +".filename");
 			var folder = this.loadUnicodeString("extensions.asf.filters"+ i +".folder");
 			var active = this.prefManager.getBoolPref("extensions.asf.filters"+ i +".active");
+			var domain_regexp = this.prefManager.getBoolPref("extensions.asf.filters"+ i +".domain_regexp");
+			var filename_regexp = this.prefManager.getBoolPref("extensions.asf.filters"+ i +".filename_regexp");
 			
 			// adding into the tree
 			var filter = document.getElementById('asf-filterList');
@@ -119,20 +121,28 @@ var automatic_save_folder = {
 			var item = document.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'treeitem');
 			var row = document.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'treerow');
 			var c1 = document.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'treecell');
-			var c2 = document.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'treecell');  
+			var c2 = document.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'treecell');
 			var c3 = document.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'treecell');
 			var c4 = document.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'treecell');
+			var c5 = document.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'treecell');
+			var c6 = document.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'treecell');
 			c1.setAttribute('label', domain);
 			c2.setAttribute('label', filename);
 			c3.setAttribute('label', folder);
 			c4.setAttribute('value', active);
+			c5.setAttribute('value', domain_regexp);
+			c6.setAttribute('value', filename_regexp);
 			c1.setAttribute('editable', false);
 			c2.setAttribute('editable', false);
 			c3.setAttribute('editable', false);
+			c5.setAttribute('editable', false);
+			c6.setAttribute('editable', false);
 			row.appendChild(c1);
 			row.appendChild(c2);
 			row.appendChild(c3);
 			row.appendChild(c4);
+			row.appendChild(c5);
+			row.appendChild(c6);
 			item.appendChild(row);
 			
 			rules.appendChild(item);
@@ -1006,7 +1016,7 @@ var automatic_save_folder = {
 
 	preferences_import: function(importType) {
 	/** 
-	// string @importType : "all", "filters", "preferences"
+	// importType (String) : "all", "filters", "preferences"
 	*/
 		
 		// read the default import/export folder
@@ -1062,6 +1072,45 @@ var automatic_save_folder = {
 			}
 			
 			
+			// 1.0.2bRev90 - removes the slashes to regexp and create new settings to store regexp state.
+			if (this.versionChecker.compare(import_version, "1.0.2bRev90") == -1)
+			{
+				var prefDataReg = false;
+				var dataLength = data.length;
+				for (var i=2; i<dataLength; i++)
+				{
+					if (data[i].indexOf("extensions.asf.filters") >= 0)
+					{
+						type_pos = data[i].indexOf(";");
+						data_pos = data[i].indexOf("=");
+						if (type_pos > 0)
+						{
+							prefName = data[i].substring(0,type_pos);
+							prefType = data[i].substring(type_pos+1,data_pos);
+							prefData = data[i].substring(data_pos+1,data[i].length);
+							
+							if ( prefName.indexOf("domain") >0 || prefName.indexOf("filename") >0 )
+							{
+								prefDataReg = this.is_regexp(prefData);
+								if (prefDataReg) // convert the current data
+								{
+									prefData = prefData.substring(1, prefData.length -1);
+									if (prefData == ".*") 
+									{
+										prefData = "*";
+										prefDataReg = false;
+									}
+								}
+								data[i] = prefName+";char="+prefData; // replace the new data
+								prefDataReg = prefDataReg == true ? "true" : "false" ;
+								data.push(prefName+"_regexp"+";bool="+prefDataReg); // create the regexp value
+							}
+						}
+					}
+				}
+			}
+			
+			
 		}
 		
 		
@@ -1349,6 +1398,9 @@ var automatic_save_folder = {
 
 
 	delete_filters: function(all) {
+	/** 
+	// all (Bool) : true = delete all filters ; false = delete only unused filters from database.
+	*/
 		var prefs = Components.classes["@mozilla.org/preferences-service;1"].
 								getService(Components.interfaces.nsIPrefService);
 		
@@ -1405,7 +1457,10 @@ var automatic_save_folder = {
 		this.prefManager.setCharPref("extensions.asf.dialogForceRadioTo", "save");
 		this.prefManager.setBoolPref("extensions.asf.userightclick", true);
 		this.prefManager.setBoolPref("extensions.asf.rightclicktimeout", true);
-		this.prefManager.setIntPref("browser.download.saveLinkAsFilenameTimeout", 0);
+		if ( !this.DownloadSort_isEnabled() && this.firefoxversion >= 3) // only for firefox 3+, Firefox2 doesn't use timeout option
+		{
+			this.prefManager.setIntPref("browser.download.saveLinkAsFilenameTimeout", 0);
+		}
 		this.prefManager.setCharPref("extensions.asf.domainTestOrder", "1");
 		this.prefManager.setBoolPref("extensions.asf.regexp_caseinsensitive", true);
 		this.prefManager.setBoolPref("extensions.asf.pathlist_defaultforceontop", false);
@@ -1427,9 +1482,9 @@ var automatic_save_folder = {
 	read_file: function(folder) {
 	// thanks to TabMixPlus
 	/**
-	// string @folder = default opened folder (optional)
-	// File Input : File in UTF8 without BOM.
-	// Stream Output : Array, in unicode (each cell = 1 line from file)
+	// folder (String) : Default opened folder (optional)
+	// Input (Stream) : File in UTF8 without BOM.
+	// Return (Array) : Array, in unicode (each cell = 1 line from file)
 	*/
 		var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(Components.interfaces.nsIFilePicker);
 		var stream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
@@ -1469,9 +1524,9 @@ var automatic_save_folder = {
 	write_file: function(data, folder) {
 	// thanks to TabMixPlus
 	/**
-	// array @data = array in Unicode to convert to file line by line
-	// string @folder = opening folder (optional)
-	// Stream Output : file in UTF8 without BOM.
+	// data (Array) : array in Unicode to convert to file line by line
+	// folder (String) : opening folder (optional)
+	// Output (Stream) : file in UTF8 without BOM.
 	*/
 		var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(Components.interfaces.nsIFilePicker);
 		var stream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
@@ -1620,12 +1675,18 @@ var automatic_save_folder = {
 			var filename = tree.view.getCellText(i,tree.columns.getColumnAt("1"));
 			var folder = tree.view.getCellText(i,tree.columns.getColumnAt("2"));
 			var active = tree.view.getCellValue(i,tree.columns.getColumnAt("3"));
+			var domain_regexp = tree.view.getCellValue(i,tree.columns.getColumnAt("4"));
+			var filename_regexp = tree.view.getCellValue(i,tree.columns.getColumnAt("5"));
 			active = (active == "true" ? true : false) ;
+			domain_regexp = (domain_regexp == "true" ? true : false) ;
+			filename_regexp = (filename_regexp == "true" ? true : false) ;
 			
 			this.saveUnicodeString("extensions.asf.filters"+ i +".domain", domain);
 			this.saveUnicodeString("extensions.asf.filters"+ i +".filename", filename);
 			this.saveUnicodeString("extensions.asf.filters"+ i +".folder", folder);
 			this.prefManager.setBoolPref("extensions.asf.filters"+ i +".active", active);
+			this.prefManager.setBoolPref("extensions.asf.filters"+ i +".domain_regexp", domain_regexp);
+			this.prefManager.setBoolPref("extensions.asf.filters"+ i +".filename_regexp", filename_regexp);
 		}
 	},
 
@@ -1682,6 +1743,7 @@ var automatic_save_folder = {
 		{
 			window.opener.automatic_save_folder.main();		// rescan the filters to set the good folder
 			window.opener.automatic_save_folder.check_uCTOption();
+			window.opener.sizeToContent(); // can create a bug, but it should not be noticed by the user. see https://bugzilla.mozilla.org/show_bug.cgi?id=439323
 		}
 		window.opener.focus;
 	}
diff --git a/content/asf_addedit.js b/content/asf_addedit.js
index e759eca..f584636 100644
--- a/content/asf_addedit.js
+++ b/content/asf_addedit.js
@@ -167,10 +167,17 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 		var domain = tree.view.getCellText(idx,tree.columns.getColumnAt(0));
 		var filename = tree.view.getCellText(idx,tree.columns.getColumnAt(1));
 		var folder = tree.view.getCellText(idx,tree.columns.getColumnAt(2));
+		var active = tree.view.getCellValue(idx,tree.columns.getColumnAt(3));
+		var domain_regexp = tree.view.getCellValue(idx,tree.columns.getColumnAt(4));
+		var filename_regexp = tree.view.getCellValue(idx,tree.columns.getColumnAt(5));
+		active = (active == "true" ? true : false) ;
+		domain_regexp = (domain_regexp == "true" ? true : false) ;
+		filename_regexp = (filename_regexp == "true" ? true : false) ;
+		
 		var radio_domain = document.getElementById("radio-addedit-domain") ;		
 		var radio_filename = document.getElementById("radio-addedit-filename") ;
 		
-		if (domain == "/.*/") 
+		if (domain == "*") 
 		{
 			radio_domain.value = 0;
 		}
@@ -179,10 +186,10 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 			radio_domain.value = 1;
 			document.getElementById("asf-addedit-domain").value = domain;
 			
-			document.getElementById("asf-addedit-domain-regexp").checked = this.is_regexp(document.getElementById("asf-addedit-domain").value);
+			document.getElementById("asf-addedit-domain-regexp").checked = domain_regexp;
 		}
 		
-		if (filename == "/.*/")
+		if (filename == "*")
 		{
 			radio_filename.value = 0;
 		}
@@ -191,7 +198,7 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 			radio_filename.value = 1;
 			document.getElementById("asf-addedit-filename").value = filename;
 			
-			document.getElementById("asf-addedit-filename-regexp").checked = this.is_regexp(document.getElementById("asf-addedit-filename").value);
+			document.getElementById("asf-addedit-filename-regexp").checked = filename_regexp;
 		}
 		
 		document.getElementById("asf-addedit-folder").value = folder ;	
@@ -238,55 +245,6 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 	},
 
 
-	// add the / at the beginning and the end of the input_regexp if id_regexp id checked
-	makeRegexp: function (id_regexp, input_regexp) {
-		
-		var filter = document.getElementById(input_regexp);
-		
-		if (document.getElementById(id_regexp).checked) 
-		{
-			if ((filter.value.substring(0,1) != "/") || (filter.value.substr(filter.value.length - 1, 1) != "/"))  // let's add the /
-			{
-				filter.value = "/" + filter.value;
-				filter.value = filter.value + "/";
-			}
-		}
-		else 
-		{
-			if ((filter.value.substring(0,1) == "/") && (filter.value.substr(filter.value.length - 1, 1) == "/"))  // then delete the /
-			{
-				filter.value = filter.value.substring(1, filter.value.length);
-				filter.value = filter.value.substring(0, filter.value.length -1);
-			}
-		}
-		document.getElementById(input_regexp).value = filter.value;
-	},
-
-
-	is_regexp: function (string) {
-		
-		if ((string.substring(0,1) == "/") && (string.substr(string.length - 1, 1) == "/"))
-		{
-			return true;
-		}
-		else
-		{
-			return false;
-		}
-	},
-
-
-	// on text change, check if the text is still regexp, else unchecked the checkbox
-	testRegexp: function (id_regexp, input_regexp) {
-		var filter = document.getElementById(input_regexp);
-		
-		if ((filter.value.substring(0,1) != "/") || (filter.value.substr(filter.value.length - 1, 1) != "/")) 
-		{
-			document.getElementById(id_regexp).checked = false;
-		}
-	},
-
-
 	trim: function (string) {
 		return string.replace(/(^\s*)|(\s*$)/g,'');
 	},
@@ -301,18 +259,19 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 	//
 		var domain_radio = document.getElementById('radio-addedit-domain');
 		var domain = document.getElementById('asf-addedit-domain');
-		var domain_regexp = document.getElementById('asf-addedit-domain-regexp');
+		var domain_regexp = document.getElementById('asf-addedit-domain-regexp').checked;
 		if (domain_radio.value == 0)
 		{
-			var rule = "/.*/";
+			var rule = "*";
 		}
 		else
 		{
 			var rule = this.trim(domain.value);
 		}
 		
-		if (rule != "") 
+		if (rule != "")
 		{
+			if (rule == "*") domain_regexp = false;
 			var domain = rule;
 		}
 		else
@@ -326,13 +285,14 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 	//
 		var filename_radio = document.getElementById('radio-addedit-filename');
 		var filename = document.getElementById('asf-addedit-filename');
-		var filename_regexp = document.getElementById('asf-addedit-filename-regexp');
+		var filename_regexp = document.getElementById('asf-addedit-filename-regexp').checked;
 		if (filename_radio.value == 0)
 		{
-			var rule = "/.*/";
+			var rule = "*";
 		}
 		else
 		{
+			if (rule == "*") filename_regexp = false;
 			var rule = this.trim(filename.value);
 		}
 		
@@ -377,17 +337,25 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 			var c2 = window.opener.document.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'treecell');  
 			var c3 = window.opener.document.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'treecell');
 			var c4 = window.opener.document.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'treecell');
+			var c5 = window.opener.document.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'treecell');
+			var c6 = window.opener.document.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'treecell');
 			c1.setAttribute('label', domain);
 			c2.setAttribute('label', filename);
 			c3.setAttribute('label', folder);
-			c4.setAttribute('value', true);
+			c4.setAttribute('value', true); // active state
+			c5.setAttribute('value', domain_regexp);
+			c6.setAttribute('value', filename_regexp);
 			c1.setAttribute('editable', false);
 			c2.setAttribute('editable', false);
 			c3.setAttribute('editable', false);
+			c5.setAttribute('editable', false);
+			c6.setAttribute('editable', false);
 			row.appendChild(c1);
 			row.appendChild(c2);
 			row.appendChild(c3);
 			row.appendChild(c4);
+			row.appendChild(c5);
+			row.appendChild(c6);
 			item.appendChild(row);
 			rules.appendChild(item);
 			
@@ -418,10 +386,10 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 	// 
 		var domain_radio = document.getElementById('radio-addedit-domain');
 		var domain = document.getElementById('asf-addedit-domain');
-		var domain_regexp = document.getElementById('asf-addedit-domain-regexp');
+		var domain_regexp = document.getElementById('asf-addedit-domain-regexp').checked;
 		if (domain_radio.value == 0)
 		{
-			var rule = "/.*/";
+			var rule = "*";
 		}
 		else
 		{
@@ -430,6 +398,7 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 		
 		if (rule != "") 
 		{
+			if (rule == "*") domain_regexp = false;
 			var domain = rule;
 		}
 		else
@@ -443,18 +412,19 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 	// 
 		var filename_radio = document.getElementById('radio-addedit-filename');
 		var filename = document.getElementById('asf-addedit-filename');
-		var filename_regexp = document.getElementById('asf-addedit-filename-regexp');
+		var filename_regexp = document.getElementById('asf-addedit-filename-regexp').checked;
 		if (filename_radio.value == 0)
 		{
-			var rule = "/.*/";
+			var rule = "*";
 		}
 		else
 		{
 			var rule = this.trim(filename.value);
 		}
 		
-		if (rule != "") 
+		if (rule != "")
 		{
+			if (rule == "*") filename_regexp = false;
 			var filename = rule;
 		}
 		else
@@ -482,7 +452,7 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 		}
 		
 		if (error != true)
-		{		
+		{
 			var tree = window.opener.document.getElementById("asf-filterList") ;
 			var idx = tree.currentIndex;
 			if (idx < 0) 
@@ -497,6 +467,9 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 			theValue.firstChild.childNodes[0].setAttribute("label", domain );
 			theValue.firstChild.childNodes[1].setAttribute("label", filename );
 			theValue.firstChild.childNodes[2].setAttribute("label", folder );
+		//	theValue.firstChild.childNodes[3].setAttribute("value", active ); // active state
+			theValue.firstChild.childNodes[4].setAttribute("value", domain_regexp );
+			theValue.firstChild.childNodes[5].setAttribute("value", filename_regexp );
 			
 			//select the edited filter	
 			tree.view.selection.select(idx);
diff --git a/content/asf_download.js b/content/asf_download.js
index 4f2403d..d1df6a0 100644
--- a/content/asf_download.js
+++ b/content/asf_download.js
@@ -84,8 +84,10 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 			currentDomain = domain;
 			currentURL = fileURL;
 		}
+		var domain_testOrder = prefManager.getCharPref("extensions.asf.domainTestOrder");
+		if (this.trim(domain_testOrder) == "") domain_testOrder = "1,5";
 		
-		var message = "These data will be used to verify the filters :\nFilename:\t\t"+filename +"\n1 - File's domain:\t"+domain+"\n2 - File's URL:\t\t"+fileURL+"\n3 - Full file's URL:\t"+fileURLAndFilename+"\n4 - Tab's domain:\t"+currentDomain+"\n5 - Tab's URL:\t\t"+currentURL;
+		var message = "These data will be used to verify the filters :\nFilename:\t\t"+filename+"\nDomain test order:\t"+domain_testOrder+"\n1 - File's domain:\t"+domain+"\n2 - File's URL:\t\t"+fileURL+"\n3 - Full file's URL:\t"+fileURLAndFilename+"\n4 - Tab's domain:\t"+currentDomain+"\n5 - Tab's URL:\t\t"+currentURL;
 		if (!this.inPrivateBrowsing) this.console_print(message);
 		// debug : show the full downloaded link  http://abc.xyz/def/file.ext
 		// Can use this new function to get free from the need of the download window.
@@ -132,7 +134,9 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 			var fil = this.loadUnicodeString("extensions.asf.filters"+ i +".filename");
 			var fol = this.loadUnicodeString("extensions.asf.filters"+ i +".folder");
 			var act = prefManager.getBoolPref("extensions.asf.filters"+ i +".active");
-			filters[i] = [dom, fil, fol, act];
+			var dom_reg = prefManager.getBoolPref("extensions.asf.filters"+ i +".domain_regexp");
+			var fil_reg = prefManager.getBoolPref("extensions.asf.filters"+ i +".filename_regexp");
+			filters[i] = [dom, fil, fol, act, dom_reg, fil_reg];
 		}
 		
 		
@@ -158,33 +162,32 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 					switch (this.trim(domain_testOrder[j])) 
 					{
 						case "1":
-							dom_regexp = this.test_regexp(filters[i][0], domain);
+							dom_regexp = this.test_regexp(filters[i][0], domain, i, "domain");
 							if (dom_regexp && this.logtoconsole && !this.inPrivateBrowsing) this.console_print("Filter "+i+" matched domain type : 1");
 							break;
 						case "2":
-							dom_regexp = this.test_regexp(filters[i][0], fileURL);
+							dom_regexp = this.test_regexp(filters[i][0], fileURL, i, "domain");
 							if (dom_regexp && this.logtoconsole && !this.inPrivateBrowsing) this.console_print("Filter "+i+" matched domain type : 2");
 							break;
 						case "3":
-							dom_regexp = this.test_regexp(filters[i][0], fileURLAndFilename);
+							dom_regexp = this.test_regexp(filters[i][0], fileURLAndFilename, i, "domain");
 							if (dom_regexp && this.logtoconsole && !this.inPrivateBrowsing) this.console_print("Filter "+i+" matched domain type : 3");
 							break;
 						case "4":
-							dom_regexp = this.test_regexp(filters[i][0], currentDomain);
+							dom_regexp = this.test_regexp(filters[i][0], currentDomain, i, "domain");
 							if (dom_regexp && this.logtoconsole && !this.inPrivateBrowsing) this.console_print("Filter "+i+" matched domain type : 4");
 							break;
 						case "5":
-							dom_regexp = this.test_regexp(filters[i][0], currentURL);
+							dom_regexp = this.test_regexp(filters[i][0], currentURL, i, "domain");
 							if (dom_regexp && this.logtoconsole && !this.inPrivateBrowsing) this.console_print("Filter "+i+" matched domain type : 5");
 						default:
-						//alert ("case = "+this.trim(domain_testOrder[j]) );
 					}
 					
 					if (dom_regexp) break;
 				}
 				
 			// Check the filename
-				file_regexp = this.test_regexp(filters[i][1], filename); // Filename
+				file_regexp = this.test_regexp(filters[i][1], filename, i, "filename"); // Filename
 				
 				// debug
 				// alert ("i = "+i+"\n domain match = "+dom_regexp+"\n file match = "+file_regexp);
@@ -472,7 +475,7 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 		// check the filter's data
 		var asf_domain = "";
 		var asf_filename = "";
-		if (idx)  // If a filter match, idx is true
+		if (idx >= 0)  // If a filter match
 		{
 			asf_domain = this.loadUnicodeString("extensions.asf.filters"+ idx +".domain");
 			asf_filename = this.loadUnicodeString("extensions.asf.filters"+ idx +".filename");
@@ -485,6 +488,7 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 		
 		
 		// Check the domain
+		var used_domain_string = "";
 		var dom_regexp = false;
 		var domain_testOrder = this.prefManager.getCharPref("extensions.asf.domainTestOrder");
 		if (this.trim(domain_testOrder) == "") domain_testOrder = "1,5";
@@ -495,29 +499,32 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 			switch (this.trim(domain_testOrder[j])) 
 			{
 				case "1":
-					dom_regexp = this.test_regexp(asf_domain, domain);
+					dom_regexp = this.test_regexp(asf_domain, domain, idx, "domain");
+					used_domain_string = domain;
 					break;
 				case "2":
-					dom_regexp = this.test_regexp(asf_domain, fileURL);
+					dom_regexp = this.test_regexp(asf_domain, fileURL, idx, "domain");
+					used_domain_string = fileURL;
 					break;
 				case "3":
-					dom_regexp = this.test_regexp(asf_domain, fileURLAndFilename);
+					dom_regexp = this.test_regexp(asf_domain, fileURLAndFilename, idx, "domain");
+					used_domain_string = fileURLAndFilename;
 					break;
 				case "4":
-					dom_regexp = this.test_regexp(asf_domain, currentDomain);
+					dom_regexp = this.test_regexp(asf_domain, currentDomain, idx, "domain");
+					used_domain_string = currentDomain;
 					break;
 				case "5":
-					dom_regexp = this.test_regexp(asf_domain, currentURL);
+					dom_regexp = this.test_regexp(asf_domain, currentURL, idx, "domain");
+					used_domain_string = currentURL;
 				default:
-				//alert ("case = "+this.trim(domain_testOrder[j]) );
 			}
 			
-			// check the filename
 			if (dom_regexp) break;
 		}
 		
 		// check the filename
-		var file_regexp = this.test_regexp(asf_filename, filename);
+		var file_regexp = this.test_regexp(asf_filename, filename, idx, "filename");
 		
 // Ted Gifford, start block
 		// String capture in filename with $<1-9>f
@@ -544,30 +551,15 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 		} catch (e) {alert(e);}
 // Ted Gifford, end block
 		
-		// Trim the / / if domain is regexp
-		if (this.is_regexp(asf_domain))
-		{
-			asf_domain = asf_domain.substring(1, asf_domain.length);
-			asf_domain = asf_domain.substring(0, asf_domain.length -1);
-		}
-		// Trim the / / if filename is regexp
-		if (this.is_regexp(asf_filename))
-		{
-			asf_filename = asf_filename.substring(1, asf_filename.length);
-			asf_filename = asf_filename.substring(0, asf_filename.length -1);
-		}
 		
 		// read the userpref to define if regexp is case insensitive (default true)
 		var param = "";
-		var regexp_caseinsensitive = this.readHiddenPref("extensions.asf.regexp_caseinsensitive", "bool", true); // let the user choose in next release.
+		var regexp_caseinsensitive = this.prefManager.getBoolPref("extensions.asf.regexp_caseinsensitive");
 		if (regexp_caseinsensitive) param = "i";
 		
 		// Check if asf_rd is present and process     asf_rd = Regexp the domain
 		if (path.search("%asf_rd%") != -1)
 		{
-			// get the domain with the protocol
-			var domainp = 	document.getElementById("source").value ;
-			
 			// extract the filter part
 			var matches = path.match(/%asf_rd%.*?%asf_rd%/g);        // matches is an array
 			if (matches != null)
@@ -580,7 +572,7 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 					datareg = matches[i].replace(/%asf_rd%/g, '');  // remove the %asf_rf% to keep only the regexp
 					datareg = new RegExp(datareg, param);			//  create the regexp
 					//alert("reg="+datareg);
-					result = domainp.match(datareg);    // Check it on the domain with protocol
+					result = used_domain_string.match(datareg);    // Check it on the domain type set by the user
 					
 					if (result == null)
 					{
@@ -702,12 +694,12 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 	},
 	
 	
-	trim: function (string)	{
+	trim: function (string) {
 		return string.replace(/(^\s*)|(\s*$)/g,'');
 	},
 	
 	
-	show_dloptions: function ()	{
+	show_dloptions: function () {
 		// read asf/content/info_save_ff2-3.txt for differences between Firefox 2 and Firefox 3 saving preferences.
 		var asf_dloptions = document.getElementById('asf_dloptions');
 		var asf_radiogroup_pathselect = document.getElementById('asf_radiogroup_pathselect');
@@ -784,7 +776,7 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 			
 			
 			//and last, if the user checked the option to view the path list on saving window, set it to visible
-			if((asf_viewpathselect == true) && (this.prefManager.getIntPref("extensions.asf.filtersNumber") > 0) )
+			if(asf_viewpathselect == true)
 			{
 				this.read_all_filterpath();
 				asf_radiogroup_pathselect.style.visibility = "visible";
@@ -921,7 +913,7 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 		
 		// Write each path to the menupopup
 		var pathlist = new Array();
-		var pathlist_defaultforceontop = this.readHiddenPref("extensions.asf.pathlist_defaultforceontop", "bool", false); // let the user choose in next release.
+		var pathlist_defaultforceontop = this.prefManager.getBoolPref("extensions.asf.pathlist_defaultforceontop");
 		var defaultfolder = this.loadUnicodeString("extensions.asf.defaultfolder");
 		var j = 0;
 		if (pathlist_defaultforceontop)
@@ -951,10 +943,9 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 			}
 		}
 		
-		var pathlist_sort_alpha = this.readHiddenPref("extensions.asf.pathlist_alphasort", "bool", true); // let the user choose in next release.
+		var pathlist_sort_alpha = this.prefManager.getBoolPref("extensions.asf.pathlist_alphasort");
 		if (pathlist_sort_alpha) pathlist.sort();
 		
-		
 		for (var i = 0; i < pathlist.length; i++)
 		{
 			path = pathlist[i];
@@ -1014,25 +1005,24 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 	},
 	
 	
-	test_regexp: function (filters, string) {
-		
-		// Steps :
-		// 1 - Check if the filter is a regular expression
-		// 2 - if not regexp : add the backslah to special characters and .* to the start and end of the string to convert it into a regexp form
-		//		if it's already regexp : delete the / / for new regexp() to handle it
-		// 3 - when all is ready in regexp, test the data with the filters
-		// 4 - if the data match the filter --> return true
-		
-		// 3 & 4 replaced with Ted script, now it returns the matching result's array, or false if nothing matched.
-		
-		
-		// step  1
-		var test_regexp = this.is_regexp(filters);   // True or False
-		
-		// step 2
-		if (test_regexp == false) // replace simple wildcard and special characters with corresponding regexp
-		{
-			filters = filters.replace(/\./gi, "\\.")
+	test_regexp: function (filter_data, downloaded_data, idx, filter_type) {
+	/**
+	// filter_data (String) : The filter's content
+	// downloaded_data (String) : The downloaded filename or domain informations
+	// idx (Int) : Current filter number
+	// filter_type (String) : Current filter type, can be "domain" of "filename".
+	// Return (Array) : return the result as an Array [downloaded_data [, captured group1 [, ... [, captured group9]]]]
+	*/
+		// Convert normal filter to regular expression filter.
+		var isregexp = false;
+		if(idx >= 0)
+		{
+			if (filter_type == "domain") isregexp = this.prefManager.getBoolPref("extensions.asf.filters"+ idx +".domain_regexp");
+			if (filter_type == "filename") isregexp = this.prefManager.getBoolPref("extensions.asf.filters"+ idx +".filename_regexp");
+		}
+		if (isregexp == false) // replace simple wildcard and special characters with corresponding regexp
+		{
+			filter_data = filter_data.replace(/\./gi, "\\.")
 													.replace(/\*/gi, ".*")
 													.replace(/\$/gi, "\\$")
 													.replace(/\^/gi, "\\^")
@@ -1041,47 +1031,17 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 													.replace(/\|/gi, "\\|")
 													.replace(/\[/gi, "\\[")
 													.replace(/\//gi, "\\/");
-			filters = ".*"+filters+".*";
-		}
-		else // remove the first and last slash
-		{
-			filters = filters.substring(1, filters.length);
-			filters = filters.substring(0, filters.length -1);
+			filter_data = ".*"+filter_data+".*";
 		}
 		
 		// initialize the regular expression search
-		var param = "";
-		var regexp_caseinsensitive = this.readHiddenPref("extensions.asf.regexp_caseinsensitive", "bool", true); // let the user choose in next release.
-		if (regexp_caseinsensitive) param = "i";
-		var test_regexp = new RegExp(filters, param);  // put the slash back and the gi option (g = global seach, i = case insensitive)
-		// Edited to only "i" option by Ted.
-		
-		// Step 3 & 4
-		// if (string.match(test_regexp)) // if something match
-		// {
-		//	 return(true);
-		// }
+		var param = (this.prefManager.getBoolPref("extensions.asf.regexp_caseinsensitive") == true ? "i" : "");
+		var test = new RegExp(filter_data, param);
 		
-		// return(false);
-		
-// Ted Gifford, start block
-		var res = string.match(test_regexp);
+		// Thanks to Ted Gifford for the regular expression capture.
+		var res = downloaded_data.match(test);
 		if (res) return res;
-		return false
-// Ted Gifford, end block
-		
-	},
-	
-	
-	is_regexp: function (string) {
-		if ((string.substring(0,1) == "/") && (string.substr(string.length - 1, 1) == "/"))
-		{
-			return true;
-		}
-		else
-		{
-			return false;
-		}
+		return false;
 	},
 	
 	
@@ -1279,7 +1239,6 @@ Copyright (C) 2007-2010 Éric Cassar (Cyan).
 		url = new DTA.URL(ml ? ml : url);
 	
 		DTA.saveSingleLink(window, turbo, url, referrer, "");
-		let de = document.documentElement;
 	},
 
 
diff --git a/content/asf_right_click.js b/content/asf_right_click.js
index 4bcb1da..f064181 100644
--- a/content/asf_right_click.js
+++ b/content/asf_right_click.js
@@ -32,7 +32,7 @@ var automatic_save_folder = {
 	firefoxversion : "",
 	logtoconsole: true,
 	inPrivateBrowsing: false,
-	importantVersionAlert: "1.0.0", // currently not used
+	importantVersionAlert: "1.0.2bRev90",
 	result: "", // print_r result
 	previousASFVersion: "",
 	currentASFVersion : "",
@@ -156,7 +156,6 @@ var automatic_save_folder = {
 			var keeptemp = 			prefManager.getBoolPref("extensions.asf.keeptemp");
 			var tempdomain = 		this.loadUnicodeString("extensions.asf.tempdomain");
 			var variable_mode = 	prefManager.getBoolPref("extensions.asf.variablemode");
-			var dialogaccept = 		prefManager.getBoolPref("extensions.asf.dialogaccept");
 			
 			// If variable/Dynamic folders mode is ON, let's check the variables and replace to create the new defaultfolder
 			if (variable_mode == true) 
@@ -185,7 +184,9 @@ var automatic_save_folder = {
 				var fil = this.loadUnicodeString("extensions.asf.filters"+ i +".filename");		
 				var fol = this.loadUnicodeString("extensions.asf.filters"+ i +".folder");		
 				var act = prefManager.getBoolPref("extensions.asf.filters"+ i +".active");	
-				filters[i] = [dom, fil, fol, act];
+				var dom_reg = prefManager.getBoolPref("extensions.asf.filters"+ i +".domain_regexp");
+				var fil_reg = prefManager.getBoolPref("extensions.asf.filters"+ i +".filename_regexp");
+				filters[i] = [dom, fil, fol, act, dom_reg, fil_reg];
 			}
 			
 			
@@ -211,23 +212,23 @@ var automatic_save_folder = {
 					switch (this.trim(domain_testOrder[j])) 
 					{
 						case "1":
-							dom_regexp = this.test_regexp(filters[i][0], domain);
+							dom_regexp = this.test_regexp(filters[i][0], domain, i, "domain");
 							if (dom_regexp && this.logtoconsole && !this.inPrivateBrowsing) this.console_print("Filter "+i+" matched domain type : 1");
 							break;
 						case "2":
-							dom_regexp = this.test_regexp(filters[i][0], fileURL);
+							dom_regexp = this.test_regexp(filters[i][0], fileURL, i, "domain");
 							if (dom_regexp && this.logtoconsole && !this.inPrivateBrowsing) this.console_print("Filter "+i+" matched domain type : 2");
 							break;
 						case "3":
-							dom_regexp = this.test_regexp(filters[i][0], fileURLAndFilename);
+							dom_regexp = this.test_regexp(filters[i][0], fileURLAndFilename, i, "domain");
 							if (dom_regexp && this.logtoconsole && !this.inPrivateBrowsing) this.console_print("Filter "+i+" matched domain type : 3");
 							break;
 						case "4":
-							dom_regexp = this.test_regexp(filters[i][0], currentDomain);
+							dom_regexp = this.test_regexp(filters[i][0], currentDomain, i, "domain");
 							if (dom_regexp && this.logtoconsole && !this.inPrivateBrowsing) this.console_print("Filter "+i+" matched domain type : 4");
 							break;
 						case "5":
-							dom_regexp = this.test_regexp(filters[i][0], currentURL);
+							dom_regexp = this.test_regexp(filters[i][0], currentURL, i, "domain");
 							if (dom_regexp && this.logtoconsole && !this.inPrivateBrowsing) this.console_print("Filter "+i+" matched domain type : 5");
 						default:
 					}
@@ -235,9 +236,8 @@ var automatic_save_folder = {
 					if (dom_regexp) break;
 				}
 				
-				
 				// Check the filename
-					file_regexp = this.test_regexp(filters[i][1], filename); // Filename
+					file_regexp = this.test_regexp(filters[i][1], filename, i, "filename"); // Filename
 					
 					// debug
 					// alert ("i = "+i+"\n domain match = "+dom_regexp+"\n file match = "+file_regexp);
@@ -322,8 +322,8 @@ var automatic_save_folder = {
 	set_savepath: function(path) {
 		var folderList = this.prefManager.getIntPref("browser.download.folderList");	
 		var lastdir = this.prefManager.getBoolPref("extensions.asf.lastdir");	     // for Firefox2 : set save as Ctrl+S too
-		
 		var directory = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
+		
 		if (!path) 
 		{
 			directory = Components.classes["@mozilla.org/file/directory_service;1"]
@@ -454,7 +454,7 @@ var automatic_save_folder = {
 		// check the filter's data
 		var asf_domain = "";
 		var asf_filename = "";
-		if (idx) // If a filter match, idx is true
+		if (idx >= 0) // If a filter match
 		{  
 			asf_domain = this.loadUnicodeString("extensions.asf.filters"+ idx +".domain");
 			asf_filename = this.loadUnicodeString("extensions.asf.filters"+ idx +".filename");
@@ -466,6 +466,7 @@ var automatic_save_folder = {
 		}
 		
 		// check the domain
+		var used_domain_string = "";
 		var dom_regexp = false;
 		var domain_testOrder = this.prefManager.getCharPref("extensions.asf.domainTestOrder");
 		if (this.trim(domain_testOrder) == "") domain_testOrder = "1,5";
@@ -476,19 +477,24 @@ var automatic_save_folder = {
 			switch (this.trim(domain_testOrder[j])) 
 			{
 				case "1":
-					dom_regexp = this.test_regexp(asf_domain, domain);
+					dom_regexp = this.test_regexp(asf_domain, domain, idx, "domain");
+					used_domain_string = domain;
 					break;
 				case "2":
-					dom_regexp = this.test_regexp(asf_domain, fileURL);
+					dom_regexp = this.test_regexp(asf_domain, fileURL, idx, "domain");
+					used_domain_string = fileURL;
 					break;
 				case "3":
-					dom_regexp = this.test_regexp(asf_domain, fileURLAndFilename);
+					dom_regexp = this.test_regexp(asf_domain, fileURLAndFilename, idx, "domain");
+					used_domain_string = fileURLAndFilename;
 					break;
 				case "4":
-					dom_regexp = this.test_regexp(asf_domain, currentDomain);
+					dom_regexp = this.test_regexp(asf_domain, currentDomain, idx, "domain");
+					used_domain_string = currentDomain;
 					break;
 				case "5":
-					dom_regexp = this.test_regexp(asf_domain, currentURL);
+					dom_regexp = this.test_regexp(asf_domain, currentURL, idx, "domain");
+					used_domain_string = currentURL;
 				default:
 			}
 			
@@ -496,7 +502,7 @@ var automatic_save_folder = {
 		}
 		
 		// Check the filename
-		var file_regexp = this.test_regexp(asf_filename, filename); 
+		var file_regexp = this.test_regexp(asf_filename, filename, idx, "filename"); 
 		
 // Ted Gifford, start block
 		// String capture in filename with $<1-9>f
@@ -523,22 +529,10 @@ var automatic_save_folder = {
 		} catch (e) {alert(e);}
 // Ted Gifford, end block
 		
-		// Trim the / / if domain is regexp
-		if (this.is_regexp(asf_domain))
-		{
-			asf_domain = asf_domain.substring(1, asf_domain.length);
-			asf_domain = asf_domain.substring(0, asf_domain.length -1);
-		}
-		// Trim the / / if filename is regexp
-		if (this.is_regexp(asf_filename))
-		{
-			asf_filename = asf_filename.substring(1, asf_filename.length);
-			asf_filename = asf_filename.substring(0, asf_filename.length -1);
-		}
 		
 		// read the userpref to define if regexp is case insensitive (default true)
 		var param = "";
-		var regexp_caseinsensitive = this.readHiddenPref("extensions.asf.regexp_caseinsensitive", "bool", true); // let the user choose in next release.
+		var regexp_caseinsensitive = this.prefManager.getBoolPref("extensions.asf.regexp_caseinsensitive");
 		if (regexp_caseinsensitive) param = "i";
 		
 		// Check if asf_rd is present and process     asf_rd = Regexp the domain
@@ -556,7 +550,7 @@ var automatic_save_folder = {
 					datareg = matches[i].replace(/%asf_rd%/g, '');  // remove the %asf_rf% to keep only the regexp
 					datareg = new RegExp(datareg, param);			//  create the regexp
 					//alert("reg="+datareg);
-					result = domain.match(datareg);    // Check it on the domain with protocol
+					result = used_domain_string.match(datareg);    // Check it on the domain type set by the user
 					
 					if (result == null) 
 					{
@@ -678,7 +672,7 @@ var automatic_save_folder = {
 	},
 	
 	
-	trim: function (string)	{
+	trim: function (string) {
 		return string.replace(/(^\s*)|(\s*$)/g,'');
 	},
 	
@@ -692,28 +686,27 @@ var automatic_save_folder = {
 			if(test_regexp.test(arr[i])) return i;
 		}
 		return -1;
-	} ,
+	},
 	
 	
-	test_regexp: function (filters, string) {
-		
-		// Steps :
-		// 1 - Check if the filter is a regular expression
-		// 2 - if not regexp : add the backslah to special characters and .* to the start and end of the string to convert it into a regexp form
-		//		if it's already regexp : delete the / / for new regexp() to handle it
-		// 3 - when all is ready in regexp, test the data with the filters
-		// 4 - if the data match the filter --> return true
-		
-		// 3 & 4 replaced with Ted script, now it returns the matching result's array, or false if nothing matched.
-		
-		
-		// step  1
-		var test_regexp = this.is_regexp(filters);   // True or False
-		
-		// step 2
-		if (test_regexp == false) // replace simple wildcard and special characters with corresponding regexp
+	test_regexp: function (filter_data, downloaded_data, idx, filter_type) {
+	/**
+	// filter_data (String) : The filter's content
+	// downloaded_data (String) : The downloaded filename or domain informations
+	// idx (Int) : Current filter number
+	// filter_type (String) : Current filter type, can be "domain" of "filename".
+	// Return (Array) : return false, or the result as an Array [downloaded_data [, captured group1 [, ... [, captured group9]]]]
+	*/
+		// replace normal filter to regular expression filter.
+		var isregexp = false;
+		if(idx >= 0)
+		{
+			if (filter_type == "domain") isregexp = this.prefManager.getBoolPref("extensions.asf.filters"+ idx +".domain_regexp");
+			if (filter_type == "filename") isregexp = this.prefManager.getBoolPref("extensions.asf.filters"+ idx +".filename_regexp");
+		}
+		if (isregexp == false) // replace simple wildcard and special characters with corresponding regexp
 		{
-			filters = filters.replace(/\./gi, "\\.")
+			filter_data = filter_data.replace(/\./gi, "\\.")
 													.replace(/\*/gi, ".*")
 													.replace(/\$/gi, "\\$")
 													.replace(/\^/gi, "\\^")
@@ -722,39 +715,21 @@ var automatic_save_folder = {
 													.replace(/\|/gi, "\\|")
 													.replace(/\[/gi, "\\[")
 													.replace(/\//gi, "\\/");
-			filters = ".*"+filters+".*";
-		}
-		else // remove the first and last slash
-		{
-			filters = filters.substring(1, filters.length);
-			filters = filters.substring(0, filters.length -1);
+			filter_data = ".*"+filter_data+".*";
 		}
 		
 		// initialize the regular expression search
-		var param = "";
-		var regexp_caseinsensitive = this.readHiddenPref("extensions.asf.regexp_caseinsensitive", "bool", true); // let the user choose in next release.
-		if (regexp_caseinsensitive) param = "i";
-		var test_regexp = new RegExp(filters, param);  // put the slash back and the gi option (g = global seach, i = case insensitive)
-		// Edited to only "i" option by Ted.
-		
-		// Step 3 & 4
-		// if (string.match(test_regexp)) // if something match
-		// {
-		//	 return(true);
-		// }
+		var param = (this.prefManager.getBoolPref("extensions.asf.regexp_caseinsensitive") == true ? "i" : "");
+		var test = new RegExp(filter_data, param);
 		
-		// return(false);
-
-// Ted Gifford, start block	
-       var res = string.match(test_regexp);
-       if (res) return res;
-	   return false
-// Ted Gifford, end block	
-
+		// Thanks to Ted Gifford for the regular expression capture.
+		var res = downloaded_data.match(test);
+		if (res) return res;
+		return false;
 	},
 	
 	
-	is_regexp: function (string) {
+	is_regexp: function (string) { // Not used anymore ASF>r90, but needed to convert older filters to new format.
 		if ((string.substring(0,1) == "/") && (string.substr(string.length - 1, 1) == "/"))
 		{
 			return true;
@@ -911,6 +886,7 @@ var automatic_save_folder = {
 	preference_structure_changes: function(version) {
 		
 		if (this.versionChecker.compare(this.previousASFVersion, "1.0.2bRev86") == -1) this.upgrade("1.0.2bRev86"); // convert currenturl to 1,5
+		if (this.versionChecker.compare(this.previousASFVersion, "1.0.2bRev90") == -1) this.upgrade("1.0.2bRev90"); // remove the slashes to regexp
 		// write the current version as old to prevent showing the updateMessage again
 		this.previousASFVersion = this.currentASFVersion;
 		this.prefManager.setCharPref("extensions.asf.version", this.currentASFVersion);
@@ -933,6 +909,56 @@ var automatic_save_folder = {
 				}
 			break;
 			
+			case "1.0.2bRev90": // remove / / from regular expression filters, and create separate settings to read the regular expression state.
+				
+				var prefs = Components.classes["@mozilla.org/preferences-service;1"].
+									getService(Components.interfaces.nsIPrefService);
+				
+				var filter_number = 0;
+				var filter_childs = 0;
+				var value = "";
+				var branch = "";
+				while (1)
+				{
+					branch = "extensions.asf.filters"+filter_number+".";
+					filter_childs = prefs.getBranch(branch).getChildList("", {});
+					if(filter_childs.length)
+					{
+						value = this.prefManager.getCharPref(branch+"domain");
+						this.prefManager.setBoolPref(branch+"domain_regexp", this.is_regexp(value)); // create the regexp value
+						if (this.is_regexp(value)) // convert the current data
+						{
+							value = value.substring(1, value.length);
+							value = value.substring(0, value.length -1);
+							if (value == ".*") 
+							{
+								value = "*";
+								this.prefManager.setBoolPref(branch+"domain_regexp", false);
+							}
+							this.prefManager.setCharPref(branch+"domain", value);
+						}
+						
+						value = this.prefManager.getCharPref(branch+"filename");
+						this.prefManager.setBoolPref(branch+"filename_regexp", this.is_regexp(value)); // create the regexp value
+						if (this.is_regexp(value)) // convert the current data
+						{
+							value = value.substring(1, value.length);
+							value = value.substring(0, value.length -1);
+							if (value == ".*") 
+							{
+								value = "*";
+								this.prefManager.setBoolPref(branch+"filename_regexp", false);
+							}
+							this.prefManager.setCharPref(branch+"filename", value);
+						}
+						filter_number++;
+					}
+					else
+					{
+						break;
+					}
+				}
+			break;
 		}
 	},
 	
diff --git a/content/common.dtd b/content/common.dtd
index d92fc1c..631cce0 100644
--- a/content/common.dtd
+++ b/content/common.dtd
@@ -1,5 +1,5 @@
 <!-- Current version -->
-<!ENTITY asf.version "1.0.2bRev89">
+<!ENTITY asf.version "1.0.2bRev90">
 
 <!ENTITY about.translators "
 - en-US : Cyan, Narayan<br />
diff --git a/content/edit.xul b/content/edit.xul
index 70c681b..e4ee970 100644
--- a/content/edit.xul
+++ b/content/edit.xul
@@ -29,8 +29,8 @@
 			<radio id="asf-addedit-radio-domain-all" value="0" selected="true" label="&asf.addedit.all;" oncommand="automatic_save_folder.asf_toggleradio_domain()"/>
 			<hbox>
 				<radio id="asf-addedit-radio-domain" value="1" label="=" oncommand="automatic_save_folder.asf_toggleradio_domain()"/>
-				<textbox id="asf-addedit-domain" width="200" onchange="automatic_save_folder.testRegexp('asf-addedit-domain-regexp', 'asf-addedit-domain');"/>
-				<checkbox id="asf-addedit-domain-regexp" label="&asf.addedit.regexp;" oncommand="automatic_save_folder.makeRegexp('asf-addedit-domain-regexp', 'asf-addedit-domain');"/>
+				<textbox id="asf-addedit-domain" width="200"/>
+				<checkbox id="asf-addedit-domain-regexp" label="&asf.addedit.regexp;"/>
 			</hbox>
 		</radiogroup>
 		<separator class="thin"/>
@@ -40,8 +40,8 @@
 			<radio id="asf-addedit-radio-filename-all" value="0" selected="true" label="&asf.addedit.all;" oncommand="automatic_save_folder.asf_toggleradio_filename()"/>
 			<hbox>
 				<radio id="asf-addedit-radio-filename" value="1" label="=" oncommand="automatic_save_folder.asf_toggleradio_filename()"/>
-				<textbox id="asf-addedit-filename" width="200" onchange="automatic_save_folder.testRegexp('asf-addedit-filename-regexp', 'asf-addedit-filename')"/>
-				<checkbox id="asf-addedit-filename-regexp" label="&asf.addedit.regexp;" oncommand="automatic_save_folder.makeRegexp('asf-addedit-filename-regexp', 'asf-addedit-filename');"/>
+				<textbox id="asf-addedit-filename" width="200"/>
+				<checkbox id="asf-addedit-filename-regexp" label="&asf.addedit.regexp;"/>
 			</hbox>
 		</radiogroup>
 		<separator class="thin"/>
diff --git a/content/help/regexp.xhtml b/content/help/regexp.xhtml
index 37727a0..bc01e77 100644
--- a/content/help/regexp.xhtml
+++ b/content/help/regexp.xhtml
@@ -16,13 +16,6 @@
 <p>&Intro_1;</p>
 <p>&Intro_2;</p>
 
-<p>
-	<strong>&Note1.title;</strong> : &Note1.text;<br />
-	<strong>&Note2.title;</strong> : &Note2.text;
-</p>
-
-<br />
-<br />
 
 <h2>&Title_1;</h2>
 <p>&Intro_3;</p>
diff --git a/locale/en-US/about.dtd b/locale/en-US/about.dtd
index 33b1d4f..ee603a2 100644
--- a/locale/en-US/about.dtd
+++ b/locale/en-US/about.dtd
@@ -32,11 +32,14 @@
 + checking and update for beta versions. The internal update feature is working only on Firefox 4.
 + New menu to import and export preferences and filters.
 + A help page will now open after the first install and when there's important messages after an update.
+- Removed the need of the slashes around a regular expression's filters.
 * It's now possible to choose which domain type are used for the filtering process, and personalize the verification order (domain only, full URL, from the file or the current tab).
 * %asf_f% now uses full filename with extension if no filter match.
 * %asf_d% now uses domain without the protocol if no filter match.
-! Fixed a bug where checking the Regexp option when a filter ended by a slash didn't add a second slash.
-! Fixed a bug where no data were returned if a download was initiated from the URL bar or from an external software which resulted in no filters in the filter's list if the preferences window was opened from the saving dialog "+ Add or edit a filter". (Thanks to MrCOLOMBO)
+! Fixed a bug where no data was returned if a download was initiated from the URL bar or from an external software which resulted in no filters in the filter's list if the preferences window was opened from the saving dialog "+ Add or edit a filter". (Thanks to MrCOLOMBO)
+! Fixed the dynamic folder creation for the first filter in the list. (Thanks to Googer)
+
+Note : In order to develop Automatic Save Folder further, this version is the last compatible with Firefox 1.5, 2.0 and 3.0.">
 
 <!ENTITY about.version.101 "! Fixed a spelling error preventing ASF to work when no filter matched.
 ! Added a missing Russian string on the filter's tab.">
diff --git a/locale/en-US/asf.dtd b/locale/en-US/asf.dtd
index 0f87c30..5e9d6a8 100644
--- a/locale/en-US/asf.dtd
+++ b/locale/en-US/asf.dtd
@@ -118,9 +118,9 @@
 <!ENTITY asf.dta_methodAdd.label "Add to list">
 
 <!ENTITY asf.options.groupbox.datamanagement.label "Data management">
-<!ENTITY asf.export.notemp.bool "Ne pas importer les données temporaires, comme le dernier domaine de provenance ou le dernier chemin d'enregistrement.">
-<!ENTITY asf.export.forceimport.bool "Forcer l'importation même si la version n'est pas compatible. Attention : Exportez et conservez d'abord vos données actuelles par sécurité.">
-<!ENTITY asf.export.infonotsaved.label "Note : Ces deux options ne sont pas mémorisées pour éviter des erreurs d'importation.">
+<!ENTITY asf.export.notemp.bool "Do not import temporary data, like the last domain you downloaded from or the last saved path.">
+<!ENTITY asf.export.forceimport.bool "Force the import process even if the version is not compatible. Attention: To prevent data loss, export and keep your actual data before forcing the import.">
+<!ENTITY asf.export.infonotsaved.label "Note: These two options are not memorized to prevent import error.">
 <!ENTITY asf.export.button.label "Settings">
 <!ENTITY asf.export.button.export.label "Export">
 <!ENTITY asf.export.button.import.label "Import">
diff --git a/locale/en-US/help.dtd b/locale/en-US/help.dtd
index a1b37bb..11962ae 100644
--- a/locale/en-US/help.dtd
+++ b/locale/en-US/help.dtd
@@ -127,4 +127,4 @@ If it happens, do Step 1 again.">
 <!ENTITY importantupdates.102.1 "You can now choose which data from the downloaded file you want to use to filter the domain field : File's domain, File's full URL, Active tab's domain, Active tab's full URL.<br />To change this setting, go to page 2 of Automatic Save Folder's option's tab.">
 <!ENTITY importantupdates.102.2 "Send the filtered folder to DownThemAll!">
 <!ENTITY importantupdates.102.3 "Import/export the filters.">
-<!ENTITY importantupdates.102.4 "Deletion of the slashes needed at each side of a regular expression's filters.">
+<!ENTITY importantupdates.102.4 "Removed the need of the slashes around a regular expression's filters.">
diff --git a/locale/en-US/regexp.dtd b/locale/en-US/regexp.dtd
index 90edcb2..8ff0b2a 100644
--- a/locale/en-US/regexp.dtd
+++ b/locale/en-US/regexp.dtd
@@ -2,13 +2,6 @@
 <!ENTITY Intro_1 "The Regular Expression (Reg. exp., or Regexp) is a matching method to define many filters in one line.">
 <!ENTITY Intro_2 "With the Regexp you can filter filename or domain that would be difficult to filter with the usual asterisk '*'.">
 
-<!ENTITY Note1.title "Note 1">
-<!ENTITY Note1.text "All the filters are case insensitive.">
-<!ENTITY Note2.title "Note 2">
-<!ENTITY Note2.text "The regexp in this plugin needs to be capture inside a / / statement.
-All the examples below are written without the / / at the beginning and the end of the filters in order to be easily readable.
-When you check the checkbox 'regexp' in the filter window, the / / will be added automatically.">
-
 <!ENTITY Title_1 "The special tags">
 <!ENTITY Intro_3 "The same way the * character (asterisk) is used in common filter to replace an undetermined number of letters, 
 the regular expression use many special characters to match different group of letters :">
diff --git a/locale/fr/about.dtd b/locale/fr/about.dtd
index d5fa0cc..e099d9b 100644
--- a/locale/fr/about.dtd
+++ b/locale/fr/about.dtd
@@ -27,16 +27,19 @@
 + Si l'extension DownThemAll est installée, un nouvel onglet d'option est disponible permettant d'envoyer le dossier de destination d'ASF à DTA.
 + Ajout d'une option permettant de choisir si les filtres sont sensibles ou insensibles à la casse.
 + Nouvelles options concernant l'interface graphique.
-+ Ajout de la fonction Copie lors d'un Drag&Drop (ex. drag+Ctrl sur Windows).
++ Ajout de la fonction Copie lors d'un Drag&Drop (ex. Ctrl+drag sous Windows).
 + Affichage d'informations dans la Console d'erreur concernant les filtres et les fichiers lors d'un téléchargement. (Désactivé lorsque Firefox est en mode Navigation privée)
 + Vérification et mise à jour vers les versions béta. La mise à jour interne ne fonctionne que sur Firefox 4.
 + Nouveau menu permettant d'importer et exporter les paramètres et les filtres.
-+ Ouverture d'une page d'aide après la 1ere installation et lors de message important après une mise à jour.
-* Il est maintenant possible de choisir quel type de domaine sera utilisé pendant le filtrage, et de personaliser leur ordre de vérification (Domaine seul, URL complète, du fichier ou de l'onglet actif).
++ Ouverture d'une page d'aide après la 1ère installation et lors de message important après une mise à jour.
+- Suppression des slashs aux extrémités des filtres utilisant les expressions régulières.
+* Il est maintenant possible de choisir quel type de domaine sera utilisé pendant le filtrage, et de personnaliser leur ordre de vérification (Domaine seul, URL complète, du fichier ou de l'onglet actif).
 * %asf_f% utilise maintenant le nom de fichier complet, avec l'extension, si aucun filtre ne correspond.
-* %asf_d% utilise maintenant le nom de domaine sans le protocol, si aucun filtre ne correspond.
-! Correction du script permettant de rajouter les slashs aux expressions régulières si le filtre contient déjà un slash à l'une des extrémités.
+* %asf_d% utilise maintenant le nom de domaine sans le protocole, si aucun filtre ne correspond.
 ! Correction d'un bug où les données d'un lien direct entré dans la barre d'adresse ou initialisé par un autre programme n'étaient pas lu correctement, empêchant d'afficher la liste des filtres lorsque la fenêtre de préférences était ouverte à partir du lien "+ Ajouter ou éditer un filtre" de la fenêtre d'enregistrement. (Merci à MrCOLOMBO)
+! Correction de la création de dossiers dynamiques pour le 1er filtre de la liste. (Merci à Googer)
+
+Note : Afin de pouvoir faire évoluer Automatic Save Folder, cette version est la dernière compatible avec firefox 1.5, 2.0 et 3.0.">
 
 <!ENTITY about.version.101 "! Correction d'une erreur de frape empêchant ASF de fonctionner si aucun filtre n'était trouvé.
 ! Ajout d'une traduction russe manquante dans l'onglet des filtres.">
diff --git a/locale/fr/asf.dtd b/locale/fr/asf.dtd
index c0d5d14..d7ca1c0 100644
--- a/locale/fr/asf.dtd
+++ b/locale/fr/asf.dtd
@@ -130,7 +130,7 @@
 <!ENTITY asf.export.button.recoverfilters.label "Récupérer les filtres inutilisés dans la base de données">
 <!ENTITY asf.export.button.delete.label "Effacer">
 <!ENTITY asf.export.button.deleteallfilters.label "Effacer tous les filtres">
-<!ENTITY asf.export.button.deleteunusedfilters.label "Effacer les filtres inutilisés dans la base de données">
+<!ENTITY asf.export.button.deleteunusedfilters.label "Effacer les filtres inutilisés de la base de données">
 <!ENTITY asf.export.button.deleteuserprefs.label "Restaurer les préférences par défauts">
 <!ENTITY asf.export.defaultfolder.label "Dossier par défaut pour les données exportées (facultatif) :">
 <!ENTITY asf.export.showbutton.bool "Ajouter un boutton de gestion des données sur l'onglet des filtres.">
diff --git a/locale/fr/regexp.dtd b/locale/fr/regexp.dtd
index 4a5a576..51f69f0 100644
--- a/locale/fr/regexp.dtd
+++ b/locale/fr/regexp.dtd
@@ -2,13 +2,6 @@
 <!ENTITY Intro_1 "L'expression régulière (aussi appelé Expression Rationnelle) est une méthode de filtrage permettant de définir plusieurs masques complexes en un seul filtre.">
 <!ENTITY Intro_2 "Avec les expressions régulières vous pouvez filtrer des noms de fichiers ou de domaines qui pourraient être difficile à effectuer avec le simple astérisque '*'.">
 
-<!ENTITY Note1.title "Note 1">
-<!ENTITY Note1.text "Tous les filtres ignorent la casse (les majuscules et minuscules sont interprétés de la même façon).">
-<!ENTITY Note2.title "Note 2">
-<!ENTITY Note2.text "Les expressions régulières nécessitent dans cette extension d'être entourés par des slashs / /. 
-Tous les exemples décrits ci-dessous omettent les slashs de début et de fin de filtre afin de faciliter la lisibilité. 
-Lorsque vous cochez la case Regexp dans la fenêtre du filtre, les slashs / / s'ajoutent automatiquement.">
-
 <!ENTITY Title_1 "Les caractères spéciaux">
 <!ENTITY Intro_3 "Comme le caractère * (astérisque) utilisé dans les filtres normaux pour remplacer un nombre de lettres indéterminées, 
 l'Expression Régulière utilise plusieurs caractères spéciaux correspondant à des groupes de lettres différents :">
diff --git a/locale/it/about.dtd b/locale/it/about.dtd
index 84d874c..7090571 100644
--- a/locale/it/about.dtd
+++ b/locale/it/about.dtd
@@ -32,11 +32,14 @@
 + checking and update for beta versions. The internal update feature is working only on Firefox 4.
 + New menu to import and export preferences and filters.
 + A help page will now open after the first install and when there's important messages after an update.
+- Removed the need of the slashes around a regular expression's filters.
 * It's now possible to choose which domain type are used for the filtering process, and personalize the verification order (domain only, full URL, from the file or the current tab).
 * %asf_f% now uses full filename with extension if no filter match.
 * %asf_d% now uses domain without the protocol if no filter match.
-! Fixed a bug where checking the Regexp option when a filter ended by a slash didn't add a second slash.
-! Fixed a bug where no data were returned if a download was initiated from the URL bar or from an external software which resulted in no filters in the filter's list if the preferences window was opened from the saving dialog "+ Add or edit a filter". (Thanks to MrCOLOMBO)
+! Fixed a bug where no data was returned if a download was initiated from the URL bar or from an external software which resulted in no filters in the filter's list if the preferences window was opened from the saving dialog "+ Add or edit a filter". (Thanks to MrCOLOMBO)
+! Fixed the dynamic folder creation for the first filter in the list. (Thanks to Googer)
+
+Note : In order to develop Automatic Save Folder further, this version is the last compatible with Firefox 1.5, 2.0 and 3.0.">
 
 <!ENTITY about.version.101 "! Fixed a spelling error preventing ASF to work when no filter matched.
 ! Added a missing Russian string on the filter's tab.">
diff --git a/locale/it/asf.dtd b/locale/it/asf.dtd
index c07632f..9501efe 100644
--- a/locale/it/asf.dtd
+++ b/locale/it/asf.dtd
@@ -118,9 +118,9 @@
 <!ENTITY asf.dta_methodAdd.label "Add to list">
 
 <!ENTITY asf.options.groupbox.datamanagement.label "Data management">
-<!ENTITY asf.export.notemp.bool "Ne pas importer les données temporaires, comme le dernier domaine de provenance ou le dernier chemin d'enregistrement.">
-<!ENTITY asf.export.forceimport.bool "Forcer l'importation même si la version n'est pas compatible. Attention : Exportez et conservez d'abord vos données actuelles par sécurité.">
-<!ENTITY asf.export.infonotsaved.label "Note : Ces deux options ne sont pas mémorisées pour éviter des erreurs d'importation.">
+<!ENTITY asf.export.notemp.bool "Do not import temporary data, like the last domain you downloaded from or the last saved path.">
+<!ENTITY asf.export.forceimport.bool "Force the import process even if the version is not compatible. Attention: To prevent data loss, export and keep your actual data before forcing the import.">
+<!ENTITY asf.export.infonotsaved.label "Note: These two options are not memorized to prevent import error.">
 <!ENTITY asf.export.button.label "Settings">
 <!ENTITY asf.export.button.export.label "Export">
 <!ENTITY asf.export.button.import.label "Import">
diff --git a/locale/it/help.dtd b/locale/it/help.dtd
index 06685ae..7adc519 100644
--- a/locale/it/help.dtd
+++ b/locale/it/help.dtd
@@ -127,4 +127,4 @@ If it happens, do Step 1 again.">
 <!ENTITY importantupdates.102.1 "You can now choose which data from the downloaded file you want to use to filter the domain field : File's domain, File's full URL, Active tab's domain, Active tab's full URL.<br />To change this setting, go to page 2 of Automatic Save Folder's option's tab.">
 <!ENTITY importantupdates.102.2 "Send the filtered folder to DownThemAll!">
 <!ENTITY importantupdates.102.3 "Import/export the filters.">
-<!ENTITY importantupdates.102.4 "Deletion of the slashes needed at each side of a regular expression's filters.">
+<!ENTITY importantupdates.102.4 "Removed the need of the slashes around a regular expression's filters.">
diff --git a/locale/it/regexp.dtd b/locale/it/regexp.dtd
index 6d69d27..669474d 100644
--- a/locale/it/regexp.dtd
+++ b/locale/it/regexp.dtd
@@ -2,13 +2,6 @@
 <!ENTITY Intro_1 "Un Espressione Regolare (Reg. exp., or Regexp) è un metodo di matching per definire molti filtri su una linea.">
 <!ENTITY Intro_2 "Con le Regexp puoi filtrare il nome del file o dominio che sarebbe difficile da filtrare con il solto asterisco '*'.">
 
-<!ENTITY Note1.title "Nota 1">
-<!ENTITY Note1.text "Tutti i filtri sono 'case insensitive' (non c'è distinzione fra maiuscole e minuscole).">
-<!ENTITY Note2.title "Nota 2">
-<!ENTITY Note2.text "Le regexp in questo plugin hanno bisogno di essere racchiuse all'interno di una coppia di caratteri / / . 
-Tutti gli esempi che seguono non comprendono / / all'inizio e alla fine del filtro per essere leggibili facilmente. 
-Quando selezioni dalla checkbox 'regexp' nella finestra dei filtri, gli / / verranno inseriti automaticamente.">
-
 <!ENTITY Title_1 "The special tags">
 <!ENTITY Intro_3 "The same way the * character (asterisk) is used in common filter to replace an undetermined number of letters, 
 the regular expression use many special characters to match different group of letters :">
diff --git a/locale/ru/about.dtd b/locale/ru/about.dtd
index 133760e..9a5d4cc 100644
--- a/locale/ru/about.dtd
+++ b/locale/ru/about.dtd
@@ -32,11 +32,14 @@
 + checking and update for beta versions. The internal update feature is working only on Firefox 4.
 + New menu to import and export preferences and filters.
 + A help page will now open after the first install and when there's important messages after an update.
+- Removed the need of the slashes around a regular expression's filters.
 * It's now possible to choose which domain type are used for the filtering process, and personalize the verification order (domain only, full URL, from the file or the current tab).
 * %asf_f% now uses full filename with extension if no filter match.
 * %asf_d% now uses domain without the protocol if no filter match.
-! Исправлена обработка регулярных выражений когда фильтр оканчивался на косую черту (слеш).
 ! Исправлена ошибка при открытии окна настроек фильтров из окна сохранения ("+ Добавить или изменить фильтр"), при обработке пути который не был представлен в списке фильтров. (Благодарность MrCOLOMBO)
+! Fixed the dynamic folder creation for the first filter in the list. (Thanks to Googer)
+
+Note : In order to develop Automatic Save Folder further, this version is the last compatible with Firefox 1.5, 2.0 and 3.0.">
 
 <!ENTITY about.version.101 "! Исправлена проблема с переводом, которая не позволяла работать ASF когда не найден подходящий фильтр.
 ! Добавлен пропущенный русский перевод для закладки Фильтры.">
diff --git a/locale/ru/asf.dtd b/locale/ru/asf.dtd
index f112523..ca52891 100644
--- a/locale/ru/asf.dtd
+++ b/locale/ru/asf.dtd
@@ -2,7 +2,7 @@
 <!-- Change the preferences window size to fit your localization. Default values : resize=false width=617 height=423, in pixels-->
 <!ENTITY asf.preferences_window.resize "true">
 <!ENTITY asf.preferences_window.width "630">
-<!ENTITY asf.preferences_window.height "423">
+<!ENTITY asf.preferences_window.height "440">
 
 <!-- new line, U+00A0 ISOnum -->
 <!ENTITY NL "
" >
@@ -118,9 +118,9 @@
 <!ENTITY asf.dta_methodAdd.label "Добавить в список">
 
 <!ENTITY asf.options.groupbox.datamanagement.label "Data management">
-<!ENTITY asf.export.notemp.bool "Ne pas importer les données temporaires, comme le dernier domaine de provenance ou le dernier chemin d'enregistrement.">
-<!ENTITY asf.export.forceimport.bool "Forcer l'importation même si la version n'est pas compatible. Attention : Exportez et conservez d'abord vos données actuelles par sécurité.">
-<!ENTITY asf.export.infonotsaved.label "Note : Ces deux options ne sont pas mémorisées pour éviter des erreurs d'importation.">
+<!ENTITY asf.export.notemp.bool "Do not import temporary data, like the last domain you downloaded from or the last saved path.">
+<!ENTITY asf.export.forceimport.bool "Force the import process even if the version is not compatible. Attention: To prevent data loss, export and keep your actual data before forcing the import.">
+<!ENTITY asf.export.infonotsaved.label "Note: These two options are not memorized to prevent import error.">
 <!ENTITY asf.export.button.label "Settings">
 <!ENTITY asf.export.button.export.label "Export">
 <!ENTITY asf.export.button.import.label "Import">
diff --git a/locale/ru/help.dtd b/locale/ru/help.dtd
index 3ecd428..830aed7 100644
--- a/locale/ru/help.dtd
+++ b/locale/ru/help.dtd
@@ -133,4 +133,4 @@ If it happens, do Step 1 again.">
 <!ENTITY importantupdates.102.1 "You can now choose which data from the downloaded file you want to use to filter the domain field : File's domain, File's full URL, Active tab's domain, Active tab's full URL.<br />To change this setting, go to page 2 of Automatic Save Folder's option's tab.">
 <!ENTITY importantupdates.102.2 "Send the filtered folder to DownThemAll!">
 <!ENTITY importantupdates.102.3 "Import/export the filters.">
-<!ENTITY importantupdates.102.4 "Deletion of the slashes needed at each side of a regular expression's filters.">
+<!ENTITY importantupdates.102.4 "Removed the need of the slashes around a regular expression's filters.">
diff --git a/locale/ru/regexp.dtd b/locale/ru/regexp.dtd
index ea9c944..4bd0ff3 100644
--- a/locale/ru/regexp.dtd
+++ b/locale/ru/regexp.dtd
@@ -2,13 +2,6 @@
 <!ENTITY Intro_1 "Регулярные выражения представляют собой образцы для поиска заданных комбинаций символов в текстовых строках (такой поиск называется сопоставлением с образцом).">
 <!ENTITY Intro_2 "При помощи регулярных выражений вы можете фильтровать имена файлов или доменов в случаях когда использование '*' невозможно.">
 
-<!ENTITY Note1.title "Замечание 1">
-<!ENTITY Note1.text "Все фильтры не учитывают регистр.">
-<!ENTITY Note2.title "Замечание 2">
-<!ENTITY Note2.text "Регулярные выражения в дополнении должны быть заключены в между символами / /.
-Все примеры, описанные ниже не содержат / / в начале и конце, для удобства чтения.
-Если вы включите галочку Рег. выражения символы  / / будут добавлены автоматически.">
-
 <!ENTITY Title_1 "Специальные теги">
 <!ENTITY Intro_3 "Так же как и символ '*' (звездочка) используется для замены неограниченного числа знаков в строке, так и регулярные выражения
 используют некоторое количество специальных букв для замены определенных групп символов в строке :">

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/automatic-save-folder.git



More information about the Pkg-mozext-commits mailing list