Skip to content

Commit

Permalink
Released version 20080224.118; prepared for next release
Browse files Browse the repository at this point in the history
  • Loading branch information
1ec5 committed Jul 15, 2008
0 parents commit 82e4379
Show file tree
Hide file tree
Showing 35 changed files with 2,694 additions and 0 deletions.
104 changes: 104 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
Until version 20061001, the version number indicated the extension's release
date. Starting with the 20080224.x series, the first part indicates the version
of avim.js that the extension was based on, while the remaining version part
indicates the version of the extension itself, expressed as a Subversion
revision number.

Version 20060714 (Friday, July 14, 2006)
- Initial release.

Version 20061001 (Sunday, October 1, 2006)
- Integrated with the latest version of the AVIM script.

Version 20080224.59 (Monday, June 16, 2008)
- First release by Minh Nguyen, based on a refactored codebase by Hieu Dang.
- Added support for Firefox 3 and removed support for Firefox 2.
- Replaced the status bar radio buttons with an unobtrusive popup menu.
- Added an identical menu under the Edit menu, for those who hide their status
bars.
- Added support for windows other than the main browser window, including the
Bookmark Properties dialog, the Library window, JavaScript prompt() dialogs,
and any other XUL document affected by an overlay listed in chrome.manifest.
The about:config filter bar and the Error Console code bar are not supported.
- Removed keyboard shortcuts that conflicted with built-in shortcuts and other
extensions.
- Replaced the "Off" "input method" with a separate "Enabled" option.
- Added the Ctrl+Shift+V keyboard shortcut (Cmd+Shift+V on the Mac) to toggle
AVIM on and off; this shortcut does not conflict with any built-in shortcuts,
but does conflict with Adblock Plus.
- Replaced the avim_prefs plain text preferences file with entries in Firefox's
built-in preferences service. Users of previous versions will have to set
their input method and other options again.
- Advanced options can be set using about:config. These options are: the IDs of
text boxes that AVIM should ignore and the actual methods that comprise Auto.
- Ensured that any preference change is reflected in every open window, as
well as windows opened from that point on.
- Localized into Spanish, because Minh knows Spanish.
- Localized into Vietnamese, in case Firefox ever gets an official translation
into Vietnamese. One can hope...

Version 20080224.66 (Thursday, June 19, 2008)
- Fixed the checkbox menu items, which were completely broken.
- Added option to show and hide the status bar panel.

Version 20080224.87 (Wednesday, July 2, 2008)
- Added a preference window that currently covers all the options available
through about:config.
- Added toolbar buttons for enabling and disabling AVIM and for choosing the
input method. The buttons can be added to the toolbar using the Customize
Toolbar dialog box.
- Added support for AJAX applications like Gmail and rich text editors like
FCKeditor. More testing is needed, however.
- Fixed issue where AVIM would ignore words following certain punctuation
characters, such as curly quotes and ellipses.
- Changed keyboard shortcut for toggling AVIM to Ctrl+Alt+V (Cmd+Opt+V on the
Mac) to avoid a collision with Adblock Plus.
- Added the Ctrl+: (Cmd+:) and Ctrl+; (Cmd+;) keyboard shortcuts to cycle back
and forward through the input method list.
- Added the Ctrl+Alt+S (Cmd+Opt+S) keyboard shortcut to toggle the "Enforce
Spelling" option.
- Added the Ctrl+Alt+; (Cmd+Opt+;) keyboard shortcut to toggle the "Old
Accents" option.
- Removed the menu item to toggle the status bar panel, since it is redundant
with the preference window now.

Version 20080224.91 (Thursday, July 3, 2008)
- Added a warning that indicates when Mudim is enabled and turned on, along
with a button to turn Mudim off (as opposed to disabling the extension).
Mudim often interferes with AVIM, since the two extensions serve the same
purpose.
- Optimized the toolbar button images.

Version 20080224.93 (Friday, July 4, 2008)
- Updated home page to point to 1ec5.org.
- Made ignored textbox IDs case-insensitive.

Version 20080224.96 (Saturday, July 5, 2008)
- Fixed an issue where Mudim would not be turned off after the Disable Mudum
button is pressed.
- Added support for the Pencil extension.
- Fixed an issue where the status bar panel would not work in ChatZilla.

Version 20080224.110 (Sunday, July 13, 2008)
- Added a "script monitor", which fixes compatibility issues with the AVIM/HIM,
VietTyping, and VietUni scripts by turning off any instances of them when
typing in a webpage.
- Added a preference to disable the script monitor, in case it causes
performance issues.
- Forced ignored textbox IDs to lowercase.
- Cleared ID textbox after the ID is ignored.
- Fixed encoding issues that prevented the Vietnamese locale from loading.

Version ${Version} (${Date})
- Added an option to allow words that begin with "dz" or "f", even when
spelling rules are enforced.
- Added support for more rich text editors, including Dojo's Dijit.Editor.
- Added support for disabling some versions of mViet.
- Added support for disabling the CHIM and Mudim scripts when typing in a
webpage. The two scripts are not disabled by default.
- Added explicit menu items for switching to the previous and next input
methods. Previously, keys for cycling methods would move around as the input
method changed, but this approach caused problems in Mac OS X.
- Options such as input method can no longer be changed when AVIM is disabled.
Before, the menu items for these options were disabled, but the keyboard
shortcuts were still active.
33 changes: 33 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
The file avim.js is subject to the following license:

AVIM JavaScript Vietnamese Input Method Source File

Copyright (C) 2004-2007 Hieu Tran Dang <lt2hieu2004 (at) users (dot) sf (dot) net>
Website: http://avim.veneroida.com/

You are allowed to use this software in any way you want providing:
1. You must retain this copyright notice at all time
2. You must not claim that you or any other third party is the author
of this software in any way.

--------------------------------------------------------------------------------
All other files are copyright (c) 2007-${Year} Minh Nguyen, subject to the
following license:

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
18 changes: 18 additions & 0 deletions TODO
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
- Scroll single-line textboxes to the side when AVIM modifies the input.
- Figure out why the first word entered into a designMode document is flipped
around (i.e., "DDa'nh" turns into "a'nhDD").
- Add a preference to specify allowed initial consonant clusters, like mViet
does. [1]
- Support editable trees. [2]
- Add key mapping for the dong sign.
- Optionally remember on/off state per-site, using FUEL or the Content
Preferences service. [3] Maybe limit this feature to bookmarks (FUEL), since
the UI to set the preferences would be easier to figure out.
- The extension has some commented code towards supporting Thunderbird 3a1. The
main issues are identifying the myriad of textboxes that AVIM should ignore,
and finding a keyboard shortcut for toggling AVIM that won't conflict with
any of the shortcuts used on any of Thunderbird's windows.

[1] http://www.dactai.com/mviet/mviet12AC/index.htm
[2] http://wiki.mozilla.org/XUL:Tree
[3] http://developer.mozilla.org/en/docs/Using_content_preferences
154 changes: 154 additions & 0 deletions build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
#!/bin/bash
# build.sh -- builds JAR and XPI files for mozilla extensions
# by Nickolay Ponomarev <[email protected]>
# (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)
VAR_FILES= # files that need variable substitution (space separated list)
VERSION= # version number (string)
PRUNE_DIRS= # exclude files with these directories in their paths (space separated list)
BEFORE_BUILD= # run this before building (bash command)
AFTER_BUILD= # ...and this after the build (bash command)

REV_NUM=118

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 -pv $TMP_DIR/chrome

# generate the JAR file, excluding CVS and temporary files
JAR_FILE=$TMP_DIR/chrome/$APP_NAME.jar
echo "Generating $JAR_FILE..."
for CHROME_SUBDIR in $CHROME_PROVIDERS; do
find $CHROME_SUBDIR -path $PRUNE_DIRS -prune -o -type f -print | grep -v \~ >> files
done

zip -0 -r $JAR_FILE `cat files`
# 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
cp -rpv $DIR $TMP_DIR
rm -rf `find $TMP_DIR/ \( -name ".svn" -type d \) -o \( -name ".DS_Store" -type f \)`
# mkdir $TMP_DIR/$DIR
# FILES="`find $DIR -path $PRUNE_DIRS -prune -o -type f -print | grep -v \~`"
# echo $FILES >> files
# cp -pv $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 -v $ROOT_FILE $TMP_DIR
if [ -f $ROOT_FILE ]; then
echo $ROOT_FILE >> files
fi
done

cd $TMP_DIR

if [ -n "$VAR_FILES" ]; then
REV_DATE="Tuesday, July 15, 2008"
REV_YEAR="2008"
echo "Substituting variables for version $VERSION, build r$REV_NUM on \
$REV_DATE..."
for VAR_FILE in $VAR_FILES; do
if [ -f $VAR_FILE ]; then
perl -pi -e "s/\x24\x7BRev\x7D/$REV_NUM/" $VAR_FILE
perl -pi -e "s/\x24\x7BVersion\x7D/$VERSION/" $VAR_FILE
perl -pi -e "s/\x24\x7BDate\x7D/$REV_DATE/" $VAR_FILE
perl -pi -e "s/\x24\x7BYear\x7D/$REV_YEAR/" $VAR_FILE
fi
done
fi

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 -E s/^\(content\\s+\\S*\\s+\)\(\\S*\\/\)$/\\1jar:chrome\\/$APP_NAME\\.jar\!\\/\\2/ chrome.manifest
#sed -i -r -E s/^\(skin\|locale\)\(\\s+\\S*\\s+\\S*\\s+\)\(.*\\/\)$/\\1\\2jar:chrome\\/$APP_NAME\\.jar\!\\/\\3/ chrome.manifest
perl -pi -e "s/^(content\s+\S*\s+)(\S*\/)$/\1jar:chrome\/$APP_NAME\.jar\!\/\2/" chrome.manifest
perl -pi -e "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 *
echo "Generating $APP_NAME-$VERSION.xpi..."
zip -r ../$APP_NAME-$VERSION.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
Loading

0 comments on commit 82e4379

Please sign in to comment.