diff --git a/.gitignore b/.gitignore
index 02dad907..63f985b0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
inforss.xpi
+inforssOption.xul
diff --git a/Changes.md b/Changes.md
index eb289985..dcf24f71 100644
--- a/Changes.md
+++ b/Changes.md
@@ -1,4 +1,4 @@
-# Changes for v 2.1.0.2 (pre-release)
+# Changes for v 2.2.0.0 (pre-release)
Change the scaling of the main icon to match windows padding (Issue #149)
@@ -19,6 +19,12 @@ Removes all of twitter support as they stopped doing an RSS feed (Issue #101). T
Removes all the support for creating feeds from blog searches, as none of them work any more - the sites are dead or no longer support searching (Issue #100). There are some sites which provide RSS feeds for blogs which can be then plugged into infoRSS.
+The options window has been given some overdue care and attention. Among other things:
+* it now resizes sensibly (Issues #13, #45)
+* the filter list is displayed nicely and doesn't lose numeric values. (Issue #260)
+* the up / down errors on the feed selector popup will disappear when not applicable.
+* The lists of translators and contributors in the credits tab is now driven from install.rdf
+
# Changes for v 2.1.0.1
Reverted the add on ID as the new phoebus system isn't happy
diff --git a/option_window_source/Options.xul b/option_window_source/Options.xul
new file mode 100644
index 00000000..3db496de
--- /dev/null
+++ b/option_window_source/Options.xul
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/option_window_source/Options/Advanced.xul b/option_window_source/Options/Advanced.xul
new file mode 100644
index 00000000..2aab99e5
--- /dev/null
+++ b/option_window_source/Options/Advanced.xul
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/option_window_source/Options/Advanced/Debug.xul b/option_window_source/Options/Advanced/Debug.xul
new file mode 100644
index 00000000..7c0d172b
--- /dev/null
+++ b/option_window_source/Options/Advanced/Debug.xul
@@ -0,0 +1,43 @@
+
+
+
+
+
+ &about.thanks;Ahmet Ekam, Allan Hoiberg, Andre Tribolet, Andreas Strobl, Andrei James, Andrew Isbell, Andrew Stanford, Benjamin Charrier, Bernhard Morsch, Bette Kaplan, Bruce MacLean, Bruce Riter, Ceferino Diaz, Charles V Brown Jr, Charles O'Kelley, Christopher Lindquist, Christopher Soares, Clifton Brown, Clinton Pittman, Daniela Wirz, Danilo Arduini, David Harwood, David Murley, DeeAnn Baker, Demetrio Demiris, Diane Martin, Don Turnbull, Dotan Kamber, Douglas Arenberg, Edward Ellis, Erik Schmidt, Erik Wideroe, Erminio Santiago, Ezio Frazzoni, Frank-Juergen Oehrlein, Frederic Mialet, German Ramajo, Gijs van Dinther, Greg Robinson, Gregory Bower, Grover Zucker, Gunther Guzielski, Harald Prellberg, Harold Sinclair, Hector D. Rodriguez, Howard Waldman, Isabel Zorn, Jaike Katsuhiro, James Hudson, James Pruett, James Sinnott, James Thompson, Jereme Bergeret, John Blundell, John Borgford, John Marriette, John Porteiro, Jose Luis Alejandre, Joseph Curro, Joseph Skues, Karl Latiss, Keith Thomson, Kevin Gilmartin, Kristin Miltner, L Monne, Lee Watkins Jr, Luca Berrafato, Luis Guerrero, Mark Johnson, Martijn Jansen, Margaret Wong, Maria Reina, Mark Moreno, Marko Kaiser, Martin Hormann, Matthew J Bossard, Michael Bauer, Matt Stevenson, Michael Oliver, Michael Regal, Michael Rosamilia, Nicholas Marco, Nicolas Vambairgue, Norbert Sicho, Oliver Francke, Olivier Jullien, Pankaj Patel, Palle Nielsen, Patrick Phillips, Paul Ankers, Paul Pinfield, Paul Wille, Pavel Kostenko, Peter Rödler, Phil Reeder, Pierre-Yves Le Mée, Piotr Nowinski, PLMresearch, Ragan Masterson, Randall Bennett, Ray Brase, Rediger Campe, Reinhard Plietsch, Richard Peach, Richard Robinson, Rob Vandefliert, Robert Stinnett, Robert Boysen, Ron belliveau, Ross Boughton, Rue Smith, Sandy(w) Vannasse, Sarah Semon, Scott Sievert, Sidney Saxon, Sphere Press, Stephen Neal, Stefan Schack, Tadam, Takeo Kitahara, Terry Rhodes, The Feldenkrais CoH, Torsten Lachnitt, Ty Ishibashi, Uwe Wolfschmidt, William Chiaramonte, Whitehats.ca, Youichi tsurumi, Yun-seng Chao, Yvan Gaillard, Yveson Ambroise
+
+
+
+
+
+
+ &about.paypal.label;
+
+
+
+
diff --git a/option_window_source/Options/Help.xul b/option_window_source/Options/Help.xul
new file mode 100644
index 00000000..ae4d0533
--- /dev/null
+++ b/option_window_source/Options/Help.xul
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/option_window_source/generate_xul.pl b/option_window_source/generate_xul.pl
new file mode 100644
index 00000000..dcbca13f
--- /dev/null
+++ b/option_window_source/generate_xul.pl
@@ -0,0 +1,34 @@
+#!perl
+use strict;
+use warnings;
+
+# Reads in an xul file and replaces with contents of
+# file
+
+use File::Basename;
+use File::Spec;
+
+sub read_file($$);
+
+sub read_file($$)
+{
+ my ($file, $indent) = @_;
+ my $subdir = $file;
+ $subdir =~ s/\..*//;
+ open my $handle, '<', $file or die "Failed to open $file: $!\n";
+ while (my $line = <$handle>)
+ {
+ print "$indent$line";
+ if ($line =~ m/^(\s+)\
-
-
-
-
-
-
\ No newline at end of file
diff --git a/source/content/inforss/inforssOptionBasic.js b/source/content/inforss/inforssOptionBasic.js
index 33ad7ebe..2de6d4a0 100644
--- a/source/content/inforss/inforssOptionBasic.js
+++ b/source/content/inforss/inforssOptionBasic.js
@@ -60,8 +60,8 @@ Components.utils.import("chrome://inforss/content/modules/inforss_Utils.jsm",
/* exported populate_basic_tab */
function populate_basic_tab()
{
- Basic__Feed_Group__General_populate();
Basic__General__populate();
+ Basic__Feed_Group__populate();
Basic__Headlines_area__populate();
Basic__Headlines_style__populate();
}
@@ -75,8 +75,22 @@ function update_basic_tab()
Basic__Headlines_style__update();
}
+//Basic Feed_Group
+function Basic__Feed_Group__populate()
+{
+ const selected_feed = Basic__Feed_Group__General__populate();
+ Basic__Feed_Group__Filter__populate();
+ //Basic__Feed_Group__Settings__populate();
+ //FIXME This should be called elsewhere I think and then go through
+ //'display' functions throughout
+ if (selected_feed != null)
+ {
+ selectRSS1(selected_feed.getAttribute("url"), selected_feed.getAttribute("user"));
+ }
+}
+
//Build the popup menu
-function Basic__Feed_Group__General_populate()
+function Basic__Feed_Group__General__populate()
{
//It appears that because xul has already got its fingers on this, we can't
//dynamically replace
@@ -144,12 +158,39 @@ function Basic__Feed_Group__General_populate()
}
++i;
}
- if (menu.selectedIndex != -1)
+ return selected_feed;
+}
+
+function Basic__Feed_Group__Filter__populate()
+{
+ //This shouldn't be necessary - if this was split up into classes, we would
+ //do this bit in the constructor of the class
+ //The __populate function is called whenever config gets reloaded
+ document.getElementById("rss.filter.number").removeAllItems();
+ //document.getElementById("rss.filter.hlNumber").removeAllItems();
+ //FIXME this (rss.filter.number.1) is used in reset filter and i'm not sure
+ //what it does
+ const numbers = document.createElement("menupopup");
+ numbers.setAttribute("id", "rss.filter.number.1");
+ const menu99 = document.getElementById("rss.filter.number");
+ const headline_numbers = document.getElementById("rss.filter.hlnumber");
+ menu99.appendChild(numbers);
+ for (let number = 0; number < 100; number++)
{
- selectRSS1(selected_feed.getAttribute("url"), selected_feed.getAttribute("user"));
+ menu99.appendItem(number, number);
+ if (number < 51)
+ {
+ headline_numbers.appendItem(number, number);
+ }
}
}
+/*
+function Basic__Feed_Group__Settings__populate()
+{
+}
+*/
+
//Basic__Feed_Group_update()
//------------------------------------------------------------------------------
diff --git a/source/content/inforss/inforssOverlay.xul b/source/content/inforss/inforssOverlay.xul
index e55a7438..e247d476 100644
--- a/source/content/inforss/inforssOverlay.xul
+++ b/source/content/inforss/inforssOverlay.xul
@@ -198,6 +198,7 @@
diff --git a/source/content/inforss/modules/inforss_Feed_Page.jsm b/source/content/inforss/modules/inforss_Feed_Page.jsm
index e7fc53b1..32fb9ac1 100644
--- a/source/content/inforss/modules/inforss_Feed_Page.jsm
+++ b/source/content/inforss/modules/inforss_Feed_Page.jsm
@@ -53,68 +53,45 @@ const EXPORTED_SYMBOLS = [
const { INFORSS_DEFAULT_FETCH_TIMEOUT } = Components.utils.import(
"chrome://inforss/content/modules/inforss_Constants.jsm",
- {});
+ {}
+);
const { Feed_Parser } = Components.utils.import(
"chrome://inforss/content/modules/inforss_Feed_Parser.jsm",
- {});
+ {}
+);
const { debug } = Components.utils.import(
"chrome://inforss/content/modules/inforss_Debug.jsm",
- {});
+ {}
+);
const { get_username_and_password } = Components.utils.import(
"chrome://inforss/content/modules/inforss_Prompt.jsm",
- {});
+ {}
+);
const { read_password } = Components.utils.import(
"chrome://inforss/content/modules/inforss_Utils.jsm",
- {});
+ {}
+);
const { get_string } = Components.utils.import(
"chrome://inforss/content/modules/inforss_Version.jsm",
- {});
+ {}
+);
-//I'd import these but it doesn't seem to work.
-//const { Fetch_Error } = Components.utils.import(
-// "chrome://inforss/content/errors/inforss_Fetch_Error.jsm",
-// {});
-/** Failed to fetch url */
-class Fetch_Error extends Error
-{
- /** constructor
- *
- * @param {Event} event - event or null
- * @param {string} url - url being fetched
- */
- constructor(event, url)
- {
- super(get_string("feed.issue") + "\n" + url);
- this.event = event;
- this.url = url;
- this.type = this.constructor.name;
- }
-}
+//I'd import these properly but I have to hack round palemoon maintainers really
+//disliking the class construct
+const { new_Fetch_Error } = Components.utils.import(
+ "chrome://inforss/content/errors/inforss_Fetch_Error.jsm",
+ {}
+);
-//const { Invalid_Status_Error } = Components.utils.import(
-// "chrome://inforss/content/errors/inforss_Invalid_Status_Error.jsm",
-// {});
-/** Got an invalid status (not 200-299) back */
-class Invalid_Status_Error extends Error
-{
- /** constructor
- *
- * @param {Event} event - event
- * @param {string} url - url being fetched
- */
- constructor(event, url)
- {
- super(event.target.statusText + "\n" + url);
- this.event = event;
- this.url = url;
- this.type = this.constructor.name;
- }
-}
+const { new_Invalid_Status_Error } = Components.utils.import(
+ "chrome://inforss/content/errors/inforss_Invalid_Status_Error.jsm",
+ {}
+);
const { console } =
Components.utils.import("resource://gre/modules/Console.jsm", {});
@@ -220,7 +197,7 @@ Feed_Page.prototype =
_error(event)
{
this._request = null;
- this._reject(new Fetch_Error(event, this._url));
+ this._reject(new_Fetch_Error(event, this._url));
},
/** Called when 'succesfully' loaded. This will reject if the status isn't
@@ -264,7 +241,7 @@ Feed_Page.prototype =
}
else
{
- this._reject(new Invalid_Status_Error(event, this._url));
+ this._reject(new_Invalid_Status_Error(event, this._url));
}
},
diff --git a/source/content/inforss/modules/inforss_Version.jsm b/source/content/inforss/modules/inforss_Version.jsm
index a127517e..e6726a08 100644
--- a/source/content/inforss/modules/inforss_Version.jsm
+++ b/source/content/inforss/modules/inforss_Version.jsm
@@ -47,12 +47,14 @@
/* exported EXPORTED_SYMBOLS */
const EXPORTED_SYMBOLS = [
"initialise_extension", /* exported initialise_extension */
- "get_version", /* exported get_version */
- "get_resource_file", /* exported get_resource_file */
+ "get_contributors", /* exported get_contributors */
"get_name", /* exported get_name */
"get_profile_dir", /* exported get_profile_dir */
"get_profile_file", /* exported get_profile_file */
+ "get_resource_file", /* exported get_resource_file */
"get_string", /* exported get_string */
+ "get_translators", /* exported get_translators */
+ "get_version", /* exported get_version */
];
const DirectoryService = Components.classes[
@@ -80,18 +82,22 @@ let addon = null;
/* globals AddonManager */
Components.utils.import("resource://gre/modules/AddonManager.jsm");
+//const { console } = Components.utils.import(
+// "resource://gre/modules/Console.jsm",
+// {}
+//);
+
/** On startup, get information about myself
* Sadly it's not possible to get your own version from the addons manager - you
* have to specify your own ID
*
- * @param {function} callback - to let the client carry on on module startup
+ * @param {Function} callback - to let the client carry on on module startup
*/
function initialise_extension(callback)
{
AddonManager.getAddonByID("inforss-reloaded@addons.palemoon.org", my_addon =>
{
addon = my_addon;
-
let new_version = false;
if (Prefs.prefHasUserValue("installed.version"))
{
@@ -113,25 +119,13 @@ function initialise_extension(callback)
});
}
-/** Get current version of addon
+/** Get the list of people who made contributions to the code base
*
- * @returns {string} current version
+ * @returns {Array} names
*/
-function get_version()
+function get_contributors()
{
- return addon.version;
-}
-
-/** Get a resource file installed with the addon (usually defaults)
- *
- * @param {string} path - resource file name relative to my source directory
- *
- * @returns {string} filename that can be opened
- */
-function get_resource_file(path)
-{
- return addon.getResourceURI(path).QueryInterface(
- Components.interfaces.nsIFileURL).file;
+ return addon.contributors;
}
/** Get localised name of myself
@@ -166,16 +160,48 @@ function get_profile_file(file)
return locn;
}
+/** Get a resource file installed with the addon (usually defaults)
+ *
+ * @param {string} path - resource file name relative to my source directory
+ *
+ * @returns {string} filename that can be opened
+ */
+function get_resource_file(path)
+{
+ return addon.getResourceURI(path).QueryInterface(
+ Components.interfaces.nsIFileURL
+ ).file;
+}
+
/** Get a (localised) string
*
* Adds inforss. to the front and looks up the name in the extensions resource
* bundle
*
- * @param {string} name of string to look up
+ * @param {string} name - string to look up
*
* @returns {string} localised string
*/
function get_string(name)
{
+ /*eslint-disable-next-line new-cap */
return Bundle.GetStringFromName("inforss." + name);
}
+
+/** Get the list of people who made translations
+ *
+ * @returns {Array} names
+ */
+function get_translators()
+{
+ return addon.translators;
+}
+
+/** Get current version of addon
+ *
+ * @returns {string} current version
+ */
+function get_version()
+{
+ return addon.version;
+}
diff --git a/source/install.rdf b/source/install.rdf
index 5e2b7a2e..5a19a196 100644
--- a/source/install.rdf
+++ b/source/install.rdf
@@ -5,13 +5,28 @@
inforss-reloaded@addons.palemoon.org2true
- 2.1.0.2 (pre-release)
+ 2.2.0.0 (pre-release)infoRSS ReloadedDisplay NNTP, HTML, RSS and Atom headlines in the status barDidier Ernotte
- Off JustOff <Off.Just.Off@gmail.com>
- ThosRTannerhttps://github.com/ThosRTanner/inforss/wiki
+
+ Didier Ernotte
+ ThosRTanner
+
+ Off JustOff <Off.Just.Off@gmail.com>
+ RobM
+ ArmEagle
+ SavageS
+ Tester
+ Spurious
+ Joerg
+ Peter
+ Nikolai
+ Gillbert
+ Igor
+ Ken
+
chrome://inforss/content/inforssOption.xul
@@ -43,34 +58,41 @@
- Didier Ernotte
- Martin Bagge (sweden)
- Thomas von Deyen (germany)
- Tobias Breyer (germany)
- Fabio Giovagnoli(italy)
- Luca Manganelli(italy)
- Mijndert Storm (netherland)
- Andres Rusconi
- Momchil Valkov (bulgarian)
- Norah Marinkovic (japanese)
- Henrik Dons Christensen (danish)
- Joe Chiang (traditional chinese)
- james wang (simplified chinese)
- Gillbert (czech)
- Rafal Szafran (polish)
- Igor N. Avtaev (russian)
- Danijel Zivec (slovenian)
- Osku Kannusmki (finnish)
- Laszlo SOLOVA (hungurian)
+ Martin Bagge (Swedish)
+ Thomas von Deyen (German)
+ Tobias Breyer (German)
+ Fabio Giovagnoli (Italian)
+ Luca Manganelli (Italian)
+ Luca Pedrazzi (Italian)
+ Mijndert Storm (Dutch)
+ Andres Rusconi (Spanish)
+ Momchil Valkov (Bulgarian)
+ Norah Marinkovic (Japanese)
+ Henrik Dons Christensen (Danish)
+ Joe Chiang (Traditional Chinese)
+ James Wang (Simplified Chinese)
+ Gillbert (Czech)
+ Rafal Szafran (Polish)
+ Igor N. Avtaev (Russian)
+ Danijel Zivec (Slovenian)
+ Osku Kannusmäki (Finnish)
+ Laszlo Solova (Hungarian)Nenad V. Nikolic (Serbian)Wladow (Slovak)
- Lee, Joon (Korean)
- Santor (Turkish)
- Sonickydon (greek)
- Golyj (ukrain)
- PCFan (Romania)
- Andoni Sagarna (Basque)
- Uri Hartmann (Hebrew)
+ Lee, Joon (Korean)
+ Santor (Turkish)
+ Ilker Atamer (Turkish)
+ Sonickydon (Greek)
+ Golyj (Ukrainian)
+ PCFan (Romanian)
+ Andoni Sagarna (Basque)
+ Uri Hartmann (Hebrew)
+ Mark Heijl (Dutch)
+ Florian Mishaxhi (Albanian)
+ Didier Ernotte (English)
+ Didier Ernotte (French)
+ Dagobert_78 (French)
+ Rafael Lisboa (Portuguese)
diff --git a/source/locale/en-GB/inforss/inforss.dtd b/source/locale/en-GB/inforss/inforss.dtd
index bbaca299..4c225ccd 100644
--- a/source/locale/en-GB/inforss/inforss.dtd
+++ b/source/locale/en-GB/inforss/inforss.dtd
@@ -290,7 +290,7 @@
-
+
diff --git a/source/locale/en-US/inforss/inforss.dtd b/source/locale/en-US/inforss/inforss.dtd
index 357a206a..83f0423d 100644
--- a/source/locale/en-US/inforss/inforss.dtd
+++ b/source/locale/en-US/inforss/inforss.dtd
@@ -290,7 +290,7 @@
-
+