[Pkg-mozext-commits] [nostalgy] 01/252: Initial revision
David Prévot
taffit at moszumanska.debian.org
Tue Jun 14 15:24:36 UTC 2016
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository nostalgy.
commit 0265b0ecd852fe580096e88a5f75ea4e8d0c58b2
Author: frisch <frisch at 56b81dcf-5a2f-0410-9db0-014be2e416ff>
Date: Mon May 1 19:40:47 2006 +0000
Initial revision
---
Makefile | 5 +
build.sh | 132 ++++++++++++++++++++++++++
chrome.manifest | 4 +
chrome.manifest.pack | 3 +
config_build.sh | 9 ++
content/overlay.js | 199 +++++++++++++++++++++++++++++++++++++++
content/thunderbirdOverlay.xul | 27 ++++++
defaults/preferences/nostalgy.js | 2 +
files | 7 ++
install.rdf | 19 ++++
locale/en-US/nostalgy.dtd | 4 +
locale/en-US/nostalgy.properties | 4 +
readme.txt | 21 +++++
13 files changed, 436 insertions(+)
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..20cf675
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,5 @@
+pack:
+ ./build.sh
+
+clean:
+ rm -f nostalgy.jar nostalgy.xpi
diff --git a/build.sh b/build.sh
new file mode 100755
index 0000000..3b1e96e
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,132 @@
+#!/bin/bash
+# build.sh -- builds JAR and XPI files for mozilla extensions
+# by Nickolay Ponomarev <asqueella at gmail.com>
+# (original version based on Nathan Yergler's build script)
+# Most recent version is at <http://kb.mozillazine.org/Bash_build_script>
+
+# This script assumes the following directory structure:
+# ./
+# chrome.manifest (optional - for newer extensions)
+# install.rdf
+# (other files listed in $ROOT_FILES)
+#
+# content/ |
+# locale/ |} these can be named arbitrary and listed in $CHROME_PROVIDERS
+# skin/ |
+#
+# defaults/ |
+# components/ |} these must be listed in $ROOT_DIRS in order to be packaged
+# ... |
+#
+# It uses a temporary directory ./build when building; don't use that!
+# Script's output is:
+# ./$APP_NAME.xpi
+# ./$APP_NAME.jar (only if $KEEP_JAR=1)
+# ./files -- the list of packaged files
+#
+# Note: It modifies chrome.manifest when packaging so that it points to
+# chrome/$APP_NAME.jar!/*
+
+#
+# default configuration file is ./config_build.sh, unless another file is
+# specified in command-line. Available config variables:
+APP_NAME= # short-name, jar and xpi files name. Must be lowercase with no spaces
+CHROME_PROVIDERS= # which chrome providers we have (space-separated list)
+CLEAN_UP= # delete the jar / "files" when done? (1/0)
+ROOT_FILES= # put these files in root of xpi (space separated list of leaf filenames)
+ROOT_DIRS= # ...and these directories (space separated list)
+BEFORE_BUILD= # run this before building (bash command)
+AFTER_BUILD= # ...and this after the build (bash command)
+
+if [ -z $1 ]; then
+ . ./config_build.sh
+else
+ . $1
+fi
+
+if [ -z $APP_NAME ]; then
+ echo "You need to create build config file first!"
+ echo "Read comments at the beginning of this script for more info."
+ exit;
+fi
+
+ROOT_DIR=`pwd`
+TMP_DIR=build
+
+#uncomment to debug
+#set -x
+
+# remove any left-over files from previous build
+rm -f $APP_NAME.jar $APP_NAME.xpi files
+rm -rf $TMP_DIR
+
+$BEFORE_BUILD
+
+mkdir --parents --verbose $TMP_DIR/chrome
+
+# generate the JAR file, excluding CVS and temporary files
+JAR_FILE=$TMP_DIR/chrome/$APP_NAME.jar
+echo "Generating $JAR_FILE..."
+touch files
+find content -path '*CVS*' -prune -o -type f -print | grep -v \~ >> files
+find locale -path '*CVS*' -prune -o -type f -print | grep -v \~ >> files
+
+
+cat files | zip -0 $JAR_FILE -@
+# The following statement should be used instead if you don't wish to use the JAR file
+#cp --verbose --parents `cat files` $TMP_DIR/chrome
+
+# prepare components and defaults
+echo "Copying various files to $TMP_DIR folder..."
+for DIR in $ROOT_DIRS; do
+ mkdir $TMP_DIR/$DIR
+ FILES="`find $DIR -path '*CVS*' -prune -o -type f -print | grep -v \~`"
+ echo $FILES >> files
+ cp --verbose --parents $FILES $TMP_DIR
+done
+
+# Copy other files to the root of future XPI.
+for ROOT_FILE in $ROOT_FILES install.rdf chrome.manifest; do
+ cp --verbose $ROOT_FILE $TMP_DIR
+ if [ -f $ROOT_FILE ]; then
+ echo $ROOT_FILE >> files
+ fi
+done
+
+rm -f $TMP_DIR/chrome.manifest
+cp chrome.manifest.pack $TMP_DIR/chrome.manifest
+
+cd $TMP_DIR
+
+if [ -f "chrome.manifest" ]; then
+ echo "Preprocessing chrome.manifest..."
+ # You think this is scary?
+ #s/^(content\s+\S*\s+)(\S*\/)$/\1jar:chrome\/$APP_NAME\.jar!\/\2/
+ #s/^(skin|locale)(\s+\S*\s+\S*\s+)(.*\/)$/\1\2jar:chrome\/$APP_NAME\.jar!\/\3/
+ #
+ # Then try this! (Same, but with characters escaped for bash :)
+ sed -i -r "s/^\(content\\s+\\S*\\s+\)\(\\S*\\/\)$/\\1jar:chrome\\/$APP_NAME\\.jar!\\/\\2/" chrome.manifest
+ sed -i -r s/^\(skin\|locale\)\(\\s+\\S*\\s+\\S*\\s+\)\(.*\\/\)$/\\1\\2jar:chrome\\/$APP_NAME\\.jar!\\/\\3/ chrome.manifest
+
+ # (it simply adds jar:chrome/whatever.jar!/ at appropriate positions of chrome.manifest)
+fi
+
+# generate the XPI file
+echo "Generating $APP_NAME.xpi..."
+zip -r ../$APP_NAME.xpi *
+
+cd "$ROOT_DIR"
+
+echo "Cleanup..."
+if [ $CLEAN_UP = 0 ]; then
+ # save the jar file
+ mv $TMP_DIR/chrome/$APP_NAME.jar .
+else
+ rm ./files
+fi
+
+# remove the working files
+rm -rf $TMP_DIR
+echo "Done!"
+
+$AFTER_BUILD
diff --git a/chrome.manifest b/chrome.manifest
new file mode 100644
index 0000000..0c6743e
--- /dev/null
+++ b/chrome.manifest
@@ -0,0 +1,4 @@
+content nostalgy content/
+locale nostalgy en-US locale/en-US/
+skin nostalgy classic/1.0 skin/
+overlay chrome://messenger/content/messenger.xul chrome://nostalgy/content/thunderbirdOverlay.xul
diff --git a/chrome.manifest.pack b/chrome.manifest.pack
new file mode 100644
index 0000000..838e2b5
--- /dev/null
+++ b/chrome.manifest.pack
@@ -0,0 +1,3 @@
+content nostalgy jar:chrome/nostalgy.jar!/content/
+locale nostalgy en-US jar:chrome/nostalgy.jar!/locale/en-US/
+overlay chrome://messenger/content/messenger.xul chrome://nostalgy/content/thunderbirdOverlay.xul
diff --git a/config_build.sh b/config_build.sh
new file mode 100644
index 0000000..8d40480
--- /dev/null
+++ b/config_build.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+# Build config for build.sh
+APP_NAME=nostalgy
+CHROME_PROVIDERS="content locale"
+CLEAN_UP=0
+ROOT_FILES=
+ROOT_DIRS="defaults"
+BEFORE_BUILD=
+AFTER_BUILD=
diff --git a/content/overlay.js b/content/overlay.js
new file mode 100644
index 0000000..c0653f4
--- /dev/null
+++ b/content/overlay.js
@@ -0,0 +1,199 @@
+function folder_name(folder) {
+ var uri = folder.URI;
+ var server_uri = folder.rootFolder.URI;
+ var server_name = folder.rootFolder.prettyName;
+ return (server_name + uri.substring(server_uri.length, uri.length));
+}
+
+/** Autocompletion of folders **/
+
+function myautocomplete() {
+ this.xresults =
+ Components.classes[
+ "@mozilla.org/autocomplete/results;1"
+ ].getService(Components.interfaces.nsIAutoCompleteResults);
+}
+
+myautocomplete.prototype.onStartLookup = function(text, results, listener) {
+ var items = this.xresults.items;
+ items.Clear();
+ var ltext = text.toLowerCase();
+
+ var addItem = function (folder) {
+ var fname = folder_name(folder);
+ if (fname.toLowerCase().indexOf(ltext) < 0) { return; }
+ var newitem =
+ Components.classes[
+ "@mozilla.org/autocomplete/item;1"
+ ].createInstance(Components.interfaces.nsIAutoCompleteItem);
+ newitem.value = fname;
+ items.AppendElement(newitem);
+ };
+ IterateFolders(addItem);
+ this.xresults.searchString = text;
+ this.xresults.defaultItemIndex = 0;
+ listener.onAutoComplete(this.xresults, 1);
+}
+
+myautocomplete.prototype.onStopLookup = function() {}
+myautocomplete.prototype.onAutoComplete =
+ function(text, results, listener){ NostalgyRunCommand(); }
+
+
+myautocomplete.prototype.QueryInterface = function(iid) {
+ if (iid.equals(Components.interfaces.nsIAutoCompleteSession)) return this;
+ throw Components.results.NS_NOINTERFACE;
+}
+
+/** Driver **/
+
+var default_label = "";
+var focus_saved = null;
+var command = null;
+
+function onNostalgyLoad() {
+ var nostalgyBox = document.getElementById("statusbar-nostalgy");
+ nostalgyBox.addSession(new myautocomplete());
+ var label = document.getElementById("statusbar-nostalgy-label");
+ default_label = label.value;
+ NostalgyHide();
+}
+
+function NostalgyCmd(lab,cmd) {
+ var nostalgyBox = document.getElementById("statusbar-nostalgy");
+ focus_saved = document.commandDispatcher.focusedElement;
+ if (!focus_saved) {
+ focus_saved = document.getElementById("messagepane").contentWindow;
+ }
+ nostalgyBox.value = "";
+ nostalgyBox.hidden = false;
+ setTimeout(function() { nostalgyBox.focus(); }, 50);
+ // For some unknown reason, doing nostalgyBox.focus immediatly
+ // sometimes does not work...
+
+ var label = document.getElementById("statusbar-nostalgy-label");
+ label.value = lab;
+ command = cmd;
+}
+
+function NostalgyHide() {
+ var nostalgyBox = document.getElementById("statusbar-nostalgy");
+ nostalgyBox.hidden = true;
+ if (focus_saved) {
+ focus_saved.focus ();
+ focus_saved = null;
+ }
+ var label = document.getElementById("statusbar-nostalgy-label");
+ label.value = default_label;
+}
+
+function NostalgyRunCommand() {
+ var nostalgyBox = document.getElementById("statusbar-nostalgy");
+ var folder = FindFolder(nostalgyBox.value);
+ if (folder) {
+ command(folder);
+ } else {
+ alert("No folder found");
+ }
+ NostalgyHide();
+}
+
+function NostalgyKeyPress(event) {
+ if (event.keyCode == 13) {
+ NostalgyRunCommand();
+ event.preventDefault();
+ return;
+ }
+ if (event.keyCode == 9)
+ {
+ NostalgyHide();
+ event.preventDefault();
+ }
+ if (event.keyCode == 27)
+ {
+ NostalgyHide();
+ event.preventDefault();
+ }
+}
+
+/** Folder traversal **/
+
+function FindFolder(uri)
+{
+ var ret = null;
+ uri = uri.toLowerCase();
+ try {
+ IterateFolders(function (folder) {
+ if (folder_name(folder).toLowerCase() == uri) { ret = folder; throw(0); }
+ });
+ IterateFolders(function (folder) {
+ if (folder_name(folder).toLowerCase().indexOf(uri) >= 0) { ret = folder; throw(0); }
+ });
+ } catch (ex) { }
+ return ret;
+}
+
+function IterateFolders(f) {
+ var amService =
+ Components.classes["@mozilla.org/messenger/account-manager;1"]
+ .getService(Components.interfaces.nsIMsgAccountManager);
+ var servers= amService.allServers;
+ for (i = 0; i < servers.Count(); i++) {
+ var server = servers.GetElementAt(i).
+ QueryInterface(Components.interfaces.nsIMsgIncomingServer);
+ var root = server.rootMsgFolder;
+ IterateSubfolders(root,f);
+ }
+}
+
+function IterateSubfolders(folder,f) {
+ if (!folder.isServer) { f(folder); }
+ if (folder.hasSubFolders) {
+ var subfolders = folder.GetSubFolders();
+ var done = false;
+ while (!done) {
+ var subfolder = subfolders.currentItem().
+ QueryInterface(Components.interfaces.nsIMsgFolder);
+ IterateSubfolders(subfolder,f);
+ try {subfolders.next();}
+ catch(e) {done = true;}
+ }
+ }
+}
+
+/** Commands **/
+
+function ShowFolder(folder) {
+ SelectFolder(folder.URI);
+}
+
+function MoveToFolder(folder) {
+ gDBView.doCommandWithFolder(nsMsgViewCommandType.moveMessages,folder);
+ SetNextMessageAfterDelete();
+}
+
+function CopyToFolder(folder) {
+ gDBView.doCommandWithFolder(nsMsgViewCommandType.copyMessages,folder);
+}
+
+
+/** Marking **/
+
+function NostalgyMark() {
+ var tree = window.parent.GetThreadTree();
+// var dbview = tree.builderView;
+// alert("Focus = " + tree.currentIndex);
+ var sel = tree.view.selection;
+ //alert("Sel = " + sel);
+ // sel.toggleSelect(1);
+// var i = sel.currentIndex;
+// sel.rangedSelect(i,i,true);
+ sel.currentIndex++;
+// var i = sel.currentIndex;
+// sel.rangedSelect(i,i,true);
+ tree.treeBoxObject.ensureRowIsVisible(sel.currentIndex);
+ treeView.selectionChanged();
+}
+
+
+window.addEventListener("load", onNostalgyLoad, false);
diff --git a/content/thunderbirdOverlay.xul b/content/thunderbirdOverlay.xul
new file mode 100644
index 0000000..a794560
--- /dev/null
+++ b/content/thunderbirdOverlay.xul
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE overlay SYSTEM "chrome://nostalgy/locale/nostalgy.dtd">
+<overlay id="nostalgy-overlay"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <script src="overlay.js"/>
+
+ <keyset id="mailKeys">
+ <key key="G" oncommand="NostalgyCmd('&nostalgy.go-memo;', ShowFolder);"/>
+ <key key="S" oncommand="NostalgyCmd('&nostalgy.move-memo;', MoveToFolder);"/>
+ <key key="C" oncommand="NostalgyCmd('&nostalgy.copy-memo;', CopyToFolder);"/>
+ <key key="X" oncommand="NostalgyMark();"/>
+ </keyset>
+
+
+ <textbox id="nostalgy-suggest" style="width: 300px;"/>
+
+ <statusbar id="status-bar">
+ <label id="statusbar-nostalgy-label"
+ position="1"
+ value="&nostalgy.memo;"/>
+ <textbox id="statusbar-nostalgy" type="autocomplete" tabScrolling="true"
+ position="2"
+ maxlength="160" flex="3"
+ maxrows="15" crop="end"
+ onkeypress="NostalgyKeyPress(event);" style="width: 300px;"/>
+ </statusbar>
+</overlay>
diff --git a/defaults/preferences/nostalgy.js b/defaults/preferences/nostalgy.js
new file mode 100644
index 0000000..378d88d
--- /dev/null
+++ b/defaults/preferences/nostalgy.js
@@ -0,0 +1,2 @@
+// See http://kb.mozillazine.org/Localize_extension_descriptions
+pref("extensions.nostalgy at alain.frisch.description", "chrome://nostalgy/locale/nostalgy.properties");
diff --git a/files b/files
new file mode 100644
index 0000000..37c80e1
--- /dev/null
+++ b/files
@@ -0,0 +1,7 @@
+content/thunderbirdOverlay.xul
+content/overlay.js
+locale/en-US/nostalgy.dtd
+locale/en-US/nostalgy.properties
+defaults/preferences/nostalgy.js
+install.rdf
+chrome.manifest
diff --git a/install.rdf b/install.rdf
new file mode 100644
index 0000000..3063cdf
--- /dev/null
+++ b/install.rdf
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#">
+ <Description about="urn:mozilla:install-manifest">
+ <em:id>nostalgy at alain.frisch</em:id>
+ <em:name>Nostalgy</em:name>
+ <em:version>0.1.2</em:version>
+ <em:creator>Alain Frisch</em:creator>
+ <em:description>Adds shortcuts to change folder, move message, with folder completion</em:description>
+ <em:homepageURL>http://www.eleves.ens.fr/home/frisch/soft_mozilla.html</em:homepageURL>
+ <em:targetApplication>
+ <Description>
+ <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id> <!-- thunderbird -->
+ <em:minVersion>1.5</em:minVersion>
+ <em:maxVersion>1.5.0.*</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+ </Description>
+</RDF>
diff --git a/locale/en-US/nostalgy.dtd b/locale/en-US/nostalgy.dtd
new file mode 100644
index 0000000..39919e8
--- /dev/null
+++ b/locale/en-US/nostalgy.dtd
@@ -0,0 +1,4 @@
+<!ENTITY nostalgy.move-memo "Move messages to:">
+<!ENTITY nostalgy.copy-memo "Copy messages to:">
+<!ENTITY nostalgy.go-memo "Go to folder:">
+<!ENTITY nostalgy.memo "(G)o (S)ave (C)opy">
diff --git a/locale/en-US/nostalgy.properties b/locale/en-US/nostalgy.properties
new file mode 100644
index 0000000..2d594ba
--- /dev/null
+++ b/locale/en-US/nostalgy.properties
@@ -0,0 +1,4 @@
+helloMessage=Hello World!
+helloMessageTitle=Hello
+prefMessage=Int Pref Value: %d
+extensions.nostalgy.description=Adds shortcuts to change folder, move message, with folder completion
diff --git a/readme.txt b/readme.txt
new file mode 100644
index 0000000..9419d71
--- /dev/null
+++ b/readme.txt
@@ -0,0 +1,21 @@
+This extension was generated by the Extension Wizard at
+http://ted.mielczarek.org/code/mozilla/extensionwiz/ .
+This extension is compatible only with Firefox 1.5 and
+above. Most of the files in this package are based on
+the 'helloworld' extension from the Mozillazine Knowledge Base.
+
+You can build an XPI for installation by running the
+build.sh script located in this folder. For development
+you should do the following:
+ 1. Unzip the entire contents of this package to somewhere,
+ e.g, c:\dev or /home/user/dev
+ 2. Put the full path to the folder (e.g. c:\dev\nostalgy on
+ Windows, /home/user/dev/nostalgy on Linux) in a file named
+ nostalgy at alain.frisch and copy that file to
+ [your profile folder]\extensions\
+ 3. Restart Firefox.
+
+For more information, see the Mozillazine Knowledge Base:
+http://kb.mozillazine.org/Getting_started_with_extension_development
+
+-Ted Mielczarek <ted.mielczarek at gmail.com>
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/nostalgy.git
More information about the Pkg-mozext-commits
mailing list