1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-01-10 05:34:13 +01:00

changed make system to allow easy development of muttator, also added first muttator specific file to the repository

This commit is contained in:
Martin Stubenschrott
2008-02-04 16:10:27 +00:00
parent caba7c1a2f
commit 50848e9d98
5 changed files with 338 additions and 191 deletions

192
Makefile
View File

@@ -1,194 +1,6 @@
#### configuration
TOP = $(shell pwd)
VERSION = 0.6pre
OS = $(shell uname -s)
BUILD_DATE = $(shell date "+%Y/%m/%d %H:%M:%S")
DOC_SRC_FILES = $(wildcard locale/*/*.txt)
DOC_FILES = ${DOC_SRC_FILES:%.txt=%.html}
JAR_TXT_FILES = ${shell find content skin locale \
-type f \
-a ! -path '*CVS*' \
-a \( \
-path '*.js' \
-o -path '*.css' \
-o -path '*.xul' \
-o -path '*.html' \
\) \
}
JAR_DIRS = $(foreach f,${JAR_FILES},$(dir $f))
JAR_BIN_FILES = ${shell find content skin \
-type f \
-a ! -path '*CVS*' \
-a -path '*.png' \
}
JAR_FILES = ${JAR_BIN_FILES} ${JAR_TXT_FILES} ${DOC_FILES}
JAR = chrome/vimperator.jar
XPI_TXT_FILES = install.rdf chrome.manifest TODO AUTHORS Donators NEWS
XPI_DIRS = $(foreach f,${XPI_FILES},$(dir $f))
XPI_BIN_FILES = ${JAR} Makefile
XPI_FILES = ${XPI_BIN_FILES} ${XPI_TXT_FILES}
XPI_NAME = vimperator_${VERSION}.xpi
XPI = ../downloads/${XPI_NAME}
RDF = ../downloads/update.rdf
RDF_IN = ${RDF}.in
BUILD_DIR = build.${VERSION}.${OS}
BUILD_JAR_DIR = ${BUILD_DIR}/jar
BUILD_XPI_DIR = ${BUILD_DIR}/xpi
BUILD_JAR_SUBDIRS = $(sort ${JAR_DIRS:%=${BUILD_JAR_DIR}/%})
BUILD_XPI_SUBDIRS = $(sort ${XPI_DIRS:%=${BUILD_XPI_DIR}/%})
ASCIIDOC = asciidoc
ZIP = zip
SED = sed
# find the vimperator chrome dir
ifeq (${OS},Darwin)
FIREFOX_DEFAULT = $(wildcard ${HOME}/Library/Application\ Support/Firefox/Profiles/*default)
else
ifeq ($(findstring CYGWIN,${OS}),CYGWIN)
HOME = $(shell cygpath -sm "${USERPROFILE}")
FIREFOX_DEFAULT = $(wildcard ${HOME}/Application\ Data/Mozilla/Firefox/Profiles/*default)
else
FIREFOX_DEFAULT = $(wildcard ${HOME}/.mozilla/firefox/*.default)
endif
endif
VIMPERATOR_CHROME_EMAIL = ${FIREFOX_DEFAULT}/extensions/vimperator@mozdev.org/chrome/
FOUND_CHROME_UUID = $(dir $(wildcard ${FIREFOX_DEFAULT}/extensions/{*-*-*-*-*}/chrome/vimperator.jar))
FOUND_CHROME_EMAIL = $(dir $(wildcard ${VIMPERATOR_CHROME_EMAIL}))
FOUND_CHROME = $(if ${FOUND_CHROME_UUID},${FOUND_CHROME_UUID},${FOUND_CHROME_EMAIL})
INSTALL_CHROME = $(if ${FOUND_CHROME},${FOUND_CHROME},${VIMPERATOR_CHROME_EMAIL})
# specify V=1 on make line to see more verbose output
Q=$(if ${V},,@)
CP_V=$(if ${V},-v)
#### rules
.PHONY: all help info needs_chrome_dir doc jar xpi install clean distclean
all: help
help:
@echo "vimperator ${VERSION} build"
@echo
@echo " make help - display this help"
@echo " make info - show some info about the system"
@echo " make doc - build doc files"
@echo " make jar - build a JAR (${JAR})"
@echo " make install - install into your firefox dir (run info)"
@echo " make xpi - build an XPI (${XPI_NAME})"
@echo " make release - updates update.rdf (this is not for you)"
@echo " make clean - clean up"
@echo " make distclean - clean up more"
@echo
@echo "running some commands with V=1 will show more build details"
info:
@echo "version ${VERSION}"
@echo "release file ${XPI}"
@echo "doc files ${DOC_SRC_FILES}"
@echo -e "jar files $(shell echo ${JAR_FILES} | sed 's/ /\\n /g' )"
@test -d "${FIREFOX_DEFAULT}" || ( echo "E: didn't find your .mozilla/firefox/*.default/ dir" ; false )
@echo "firefox default ${FIREFOX_DEFAULT}"
@test -d "${FOUND_CHROME}" || ( echo "E: didn't find an existing vimperator chrome dir" ; false )
@[ -n "${FOUND_CHROME_UUID}" ] && \
echo "vimperator chrome ${FOUND_CHROME_UUID}" || true
@[ -n "${FOUND_CHROME_EMAIL}" ] && \
echo "vimperator chrome ${FOUND_CHROME_EMAIL}" || true
@[ -z "${FOUND_CHROME_UUID}" -o -z "${FOUND_CHROME_EMAIL}" ] || \
(echo "E: you have multiple vimperator's installed, you need to fix that" ; false)
needs_chrome_dir:
@echo "Checking chrome dir..."
-${Q}mkdir -p "${INSTALL_CHROME}"
${Q}test -d "${INSTALL_CHROME}"
doc: ${DOC_FILES}
xpi: ${XPI}
jar: ${JAR}
install: needs_chrome_dir ${JAR}
@echo "Installing JAR..."
${Q}cp ${CP_V} ${JAR} "${INSTALL_CHROME}"
release: ${XPI} ${RDF}
${RDF}: ${RDF_IN} Makefile
@echo "Preparing release..."
${Q}${SED} -e "s,###VERSION###,${VERSION},g" \
-e "s,###DATE###,${BUILD_DATE},g" \
< $< > $@
@echo "SUCCESS: $@"
clean:
@echo "Cleanup..."
${Q}rm -f ${JAR} ${XPI}
${Q}find . -name '*~' -exec rm -f {} \;
distclean: clean
@echo "More cleanup..."
${Q}rm -f ${DOC_FILES}
${Q}rm -rf ${BUILD_DIR}
#### xpi
${BUILD_XPI_SUBDIRS}:
${Q}mkdir -p $@
${XPI}: ${BUILD_XPI_SUBDIRS} ${XPI_FILES}
@echo "Building XPI..."
${Q}mkdir -p $(dir ${XPI})
${Q}for f in ${XPI_BIN_FILES} ; do \
cp $$f ${BUILD_XPI_DIR}/$$f ; \
done
${Q}for f in ${XPI_TXT_FILES} ; do \
${SED} -e "s,###VERSION###,${VERSION},g" \
-e "s,###DATE###,${BUILD_DATE},g" \
< $$f > ${BUILD_XPI_DIR}/$$f ; \
( diff -q $$f ${BUILD_XPI_DIR}/$$f 1>/dev/null ) || \
( echo "modified: $$f" ; \
diff -u $$f ${BUILD_XPI_DIR}/$$f | grep '^[-+][^-+]' ) ; \
done
# FIXME: VERSION and DATE tokens not replaced
${Q}${SED} -e 's,\(skin\|content\|locale/.*\)/$$,jar:chrome/vimperator.jar!/\1/,' \
< chrome.manifest > ${BUILD_XPI_DIR}/chrome.manifest
${Q}( cd ${BUILD_XPI_DIR} && ${ZIP} -r ${TOP}/${XPI} ${XPI_FILES} )
@echo "SUCCESS: $@"
#### jar
${BUILD_JAR_SUBDIRS}:
${Q}mkdir -p $@
${JAR}: ${BUILD_JAR_SUBDIRS} ${JAR_FILES}
@echo "Building JAR..."
${Q}mkdir -p $(dir ${JAR})
${Q}for f in ${JAR_BIN_FILES} ; do \
cp $$f ${BUILD_JAR_DIR}/$$f ; \
done
${Q}for f in ${JAR_TXT_FILES} ; do \
${SED} -e "s,###VERSION###,${VERSION},g" \
-e "s,###DATE###,${BUILD_DATE},g" \
< $$f > ${BUILD_JAR_DIR}/$$f ; \
( diff -q $$f ${BUILD_JAR_DIR}/$$f 1>/dev/null ) || \
( echo "modified: $$f" ; \
diff -u $$f ${BUILD_JAR_DIR}/$$f | grep '^[-+][^-+]' ) ; \
done
${Q}( cd ${BUILD_JAR_DIR} && ${ZIP} -r ${TOP}/${JAR} ${JAR_FILES} )
@echo "SUCCESS: $@"
#### doc
${DOC_FILES}: %.html: %.txt Makefile locale/en-US/asciidoc.conf
@echo "DOC $@"
${Q}${ASCIIDOC} --unsafe -a linkcss -o $@ $<
NAME = vimperator
include Makefile.common

155
Makefile.common Normal file
View File

@@ -0,0 +1,155 @@
#### configuration
TOP = $(shell pwd)
OS = $(shell uname -s)
BUILD_DATE = $(shell date "+%Y/%m/%d %H:%M:%S")
DOC_SRC_FILES = $(wildcard locale/*/*.txt)
DOC_FILES = ${DOC_SRC_FILES:%.txt=%.html}
# TODO: specify source files manually?
JAR_TXT_FILES = ${shell find content skin locale \
-type f \
-a ! -path '*CVS*' \
-a \( \
-path '*.js' \
-o -path '*.css' \
-o -path '*.xul' \
-o -path '*.html' \
\) \
}
JAR_DIRS = $(foreach f,${JAR_FILES},$(dir $f))
JAR_BIN_FILES = ${shell find content skin \
-type f \
-a ! -path '*CVS*' \
-a -path '*.png' \
}
JAR_FILES = ${JAR_BIN_FILES} ${JAR_TXT_FILES} ${DOC_FILES}
JAR = chrome/${NAME}.jar
XPI_TXT_FILES = install.rdf chrome.manifest TODO AUTHORS Donators NEWS
XPI_DIRS = $(foreach f,${XPI_FILES},$(dir $f))
XPI_BIN_FILES = ${JAR} Makefile.common Makefile
XPI_FILES = ${XPI_BIN_FILES} ${XPI_TXT_FILES}
XPI_NAME = ${NAME}_${VERSION}.xpi
XPI = ../downloads/${XPI_NAME}
RDF = ../downloads/update.rdf
RDF_IN = ${RDF}.in
BUILD_DIR = build.${VERSION}.${OS}
BUILD_JAR_DIR = ${BUILD_DIR}/jar
BUILD_XPI_DIR = ${BUILD_DIR}/xpi
BUILD_JAR_SUBDIRS = $(sort ${JAR_DIRS:%=${BUILD_JAR_DIR}/%})
BUILD_XPI_SUBDIRS = $(sort ${XPI_DIRS:%=${BUILD_XPI_DIR}/%})
ASCIIDOC = asciidoc
ZIP = zip
SED = sed
# specify V=1 on make line to see more verbose output
Q=$(if ${V},,@)
CP_V=$(if ${V},-v)
#### rules
.PHONY: all help info doc jar xpi install clean distclean
all: help
help:
@echo "${NAME} ${VERSION} build"
@echo
@echo " make help - display this help"
@echo " make info - show some info about the system"
@echo " make doc - build doc files"
@echo " make jar - build a JAR (${JAR})"
@echo " make xpi - build an XPI (${XPI_NAME})"
@echo " make release - updates update.rdf (this is not for you)"
@echo " make clean - clean up"
@echo " make distclean - clean up more"
@echo
@echo "running some commands with V=1 will show more build details"
info:
@echo "version ${VERSION}"
@echo "release file ${XPI}"
@echo "doc files ${DOC_SRC_FILES}"
@echo -e "jar files $(shell echo ${JAR_FILES} | sed 's/ /\\n /g' )"
doc: ${DOC_FILES}
xpi: ${XPI}
jar: ${JAR}
release: ${XPI} ${RDF}
${RDF}: ${RDF_IN} Makefile
@echo "Preparing release..."
${Q}${SED} -e "s,###VERSION###,${VERSION},g" \
-e "s,###DATE###,${BUILD_DATE},g" \
< $< > $@
@echo "SUCCESS: $@"
clean:
@echo "Cleanup..."
${Q}rm -f ${JAR} ${XPI}
${Q}find . -name '*~' -exec rm -f {} \;
distclean: clean
@echo "More cleanup..."
${Q}rm -f ${DOC_FILES}
${Q}rm -rf ${BUILD_DIR}
#### xpi
${BUILD_XPI_SUBDIRS}:
${Q}mkdir -p $@
${XPI}: ${BUILD_XPI_SUBDIRS} ${XPI_FILES}
@echo "Building XPI..."
${Q}mkdir -p $(dir ${XPI})
${Q}for f in ${XPI_BIN_FILES} ; do \
cp $$f ${BUILD_XPI_DIR}/$$f ; \
done
${Q}for f in ${XPI_TXT_FILES} ; do \
${SED} -e "s,###VERSION###,${VERSION},g" \
-e "s,###DATE###,${BUILD_DATE},g" \
< $$f > ${BUILD_XPI_DIR}/$$f ; \
( diff -q $$f ${BUILD_XPI_DIR}/$$f 1>/dev/null ) || \
( echo "modified: $$f" ; \
diff -u $$f ${BUILD_XPI_DIR}/$$f | grep '^[-+][^-+]' ) ; \
done
# FIXME: VERSION and DATE tokens not replaced
${Q}${SED} -e 's,\(skin\|content\|locale/.*\)/$$,jar:chrome/${NAME}.jar!/\1/,' \
< chrome.manifest > ${BUILD_XPI_DIR}/chrome.manifest
${Q}( cd ${BUILD_XPI_DIR} && ${ZIP} -r ${TOP}/${XPI} ${XPI_FILES} )
@echo "SUCCESS: $@"
#### jar
${BUILD_JAR_SUBDIRS}:
${Q}mkdir -p $@
${JAR}: ${BUILD_JAR_SUBDIRS} ${JAR_FILES}
@echo "Building JAR..."
${Q}mkdir -p $(dir ${JAR})
${Q}for f in ${JAR_BIN_FILES} ; do \
cp $$f ${BUILD_JAR_DIR}/$$f ; \
done
${Q}for f in ${JAR_TXT_FILES} ; do \
${SED} -e "s,###VERSION###,${VERSION},g" \
-e "s,###DATE###,${BUILD_DATE},g" \
< $$f > ${BUILD_JAR_DIR}/$$f ; \
( diff -q $$f ${BUILD_JAR_DIR}/$$f 1>/dev/null ) || \
( echo "modified: $$f" ; \
diff -u $$f ${BUILD_JAR_DIR}/$$f | grep '^[-+][^-+]' ) ; \
done
${Q}( cd ${BUILD_JAR_DIR} && ${ZIP} -r ${TOP}/${JAR} ${JAR_FILES} )
@echo "SUCCESS: $@"
#### doc
${DOC_FILES}: %.html: %.txt Makefile.common locale/en-US/asciidoc.conf
@echo "DOC $@"
${Q}${ASCIIDOC} --unsafe -a linkcss -o $@ $<

View File

@@ -1,3 +1,4 @@
# Firefox
content vimperator content/
locale vimperator en-US locale/en-US/
skin vimperator classic/1.0 skin/

179
content/muttator.xul Normal file
View File

@@ -0,0 +1,179 @@
<?xml version="1.0"?>
<!-- ***** BEGIN LICENSE BLOCK ***** {{{
Version: MPL 1.1/GPL 2.0/LGPL 2.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
(c) 2006-2008: Martin Stubenschrott <stubenschrott@gmx.net>
Alternatively, the contents of this file may be used under the terms of
either the GNU General Public License Version 2 or later (the "GPL"), or
the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
in which case the provisions of the GPL or the LGPL are applicable instead
of those above. If you wish to allow use of your version of this file only
under the terms of either the GPL or the LGPL, and not to allow others to
use your version of this file under the terms of the MPL, indicate your
decision by deleting the provisions above and replace them with the notice
and other provisions required by the GPL or the LGPL. If you do not delete
the provisions above, a recipient may use your version of this file under
the terms of any one of the MPL, the GPL or the LGPL.
}}} ***** END LICENSE BLOCK ***** -->
<!--?xml-stylesheet href="chrome://browser/skin/" type="text/css"?-->
<?xml-stylesheet href="chrome://muttator/skin/vimperator.css" type="text/css"?>
<overlay id="muttator"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:nc="http://home.netscape.com/NC-rdf#"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript;version=1.8" src="vimperator.js"/>
<script type="application/x-javascript;version=1.8" src="bookmarks.js"/>
<script type="application/x-javascript;version=1.8" src="buffers.js"/>
<script type="application/x-javascript;version=1.8" src="commands.js"/>
<script type="application/x-javascript;version=1.8" src="completion.js"/>
<script type="application/x-javascript;version=1.8" src="editor.js"/>
<script type="application/x-javascript;version=1.8" src="events.js"/>
<script type="application/x-javascript;version=1.8" src="find.js"/>
<script type="application/x-javascript;version=1.8" src="help.js"/>
<script type="application/x-javascript;version=1.8" src="hints.js"/>
<script type="application/x-javascript;version=1.8" src="io.js"/>
<script type="application/x-javascript;version=1.8" src="mappings.js"/>
<script type="application/x-javascript;version=1.8" src="modes.js"/>
<script type="application/x-javascript;version=1.8" src="options.js"/>
<script type="application/x-javascript;version=1.8" src="tabs.js"/>
<script type="application/x-javascript;version=1.8" src="ui.js"/>
<script type="application/x-javascript;version=1.8" src="util.js"/>
<window id="messengerWindow">
<!--this notifies us also of focus events in the XUL
from: http://developer.mozilla.org/en/docs/XUL_Tutorial:Updating_Commands !-->
<commandset id="onVimperatorFocus"
commandupdater="true"
events="focus"
oncommandupdate="vimperator.events.onFocusChange(event);"/>
<commandset id="onVimperatorSelect"
commandupdater="true"
events="select"
oncommandupdate="vimperator.events.onSelectionChange(event);"/>
<keyset id="mainKeyset">
<key id="key_open_vimbar" key=":" oncommand="vimperator.commandline.open(':', '', vimperator.modes.EX);" modifiers=""/>
<key id="key_stop" keycode="VK_ESCAPE" oncommand="vimperator.events.onEscape();"/>
<!-- other keys are handled inside vimperator.js event loop -->
<key id="key_open_vimbar" key=";" oncommand="alert(';')" modifiers=""/>
</keyset>
<statusbar id="status-bar" class="hl-StatusLine">
<hbox insertbefore="statusText" id="vimperator-statusline" flex="1" height="10" hidden="false" align="center">
<textbox class="plain" id="vimperator-statusline-field-url" readonly="false" flex="1" crop="end"/>
<label class="plain" id="vimperator-statusline-field-inputbuffer" flex="0"/>
<label class="plain" id="vimperator-statusline-field-progress" flex="0"/>
<label class="plain" id="vimperator-statusline-field-tabcount" flex="0"/>
<label class="plain" id="vimperator-statusline-field-bufferposition" flex="0"/>
</hbox>
<!-- just hide them since other elements expect them -->
<statusbarpanel id="statusbar-display" hidden="true"/>
<statusbarpanel id="statusbar-progresspanel" hidden="true"/>
</statusbar>
<vbox id="vimperator-container" hidden="false">
<listbox id="vimperator-bufferwindow" class="plain" rows="10" flex="1" hidden="true"
onclick= "vimperator.bufferwindow.onEvent(event);"
ondblclick="vimperator.bufferwindow.onEvent(event);"
onkeydown= "vimperator.bufferwindow.onEvent(event);">
<listcols>
<listcol flex="1" width="50%"/>
<listcol flex="1" width="50%"/>
</listcols>
</listbox>
<listbox id="vimperator-previewwindow" class="plain" rows="10" flex="1" hidden="true"
onclick= "vimperator.previewwindow.onEvent(event);"
ondblclick="vimperator.previewwindow.onEvent(event);"
onkeydown= "vimperator.previewwindow.onEvent(event);">
<listcols>
<listcol flex="1" width="50%"/>
<listcol flex="1" width="50%"/>
</listcols>
</listbox>
<iframe id="vimperator-multiline-output" src="about:blank" flex="1" height="10px" hidden="false" collapsed="true"
onclick="vimperator.commandline.onMultilineOutputEvent(event)"/>
<listbox id="vimperator-completion" class="plain" rows="1" flex="1" hidden="true">
<listcols>
<listcol flex="1" width="50%"/>
<listcol flex="1" width="50%"/>
</listcols>
</listbox>
<hbox insertafter="status-bar" id="vimperator-commandline" hidden="false" class="hl-Normal">
<label class="plain" id="vimperator-commandline-prompt" flex="0" crop="end" value="" collapsed="true"/>
<textbox class="plain" id="vimperator-commandline-command" flex="1" type="timed" timeout="100"
oninput="vimperator.commandline.onEvent(event);"
onfocus="vimperator.commandline.onEvent(event);"
onblur="vimperator.commandline.onEvent(event);"/>
</hbox>
<textbox id="vimperator-multiline-input" class="plain" flex="1" rows="1" hidden="false" collapsed="true" multiline="true"
onkeypress="vimperator.commandline.onMultilineInputEvent(event);"
oninput="vimperator.commandline.onMultilineInputEvent(event);"
onblur="vimperator.commandline.onMultilineInputEvent(event);"/>
</vbox>
<menupopup id="viewSidebarMenu">
<menuitem observes="vimperator-viewAddonsSidebar" label="Add-ons" accesskey="A"/>
<menuitem observes="vimperator-viewConsoleSidebar" label="Console" accesskey="C"/>
<menuitem observes="vimperator-viewDownloadsSidebar" label="Downloads" accesskey="D"/>
<menuitem observes="vimperator-viewPreferencesSidebar" label="Preferences" accesskey="P"/>
</menupopup>
<broadcasterset id="mainBroadcasterSet">
<broadcaster id="vimperator-viewAddonsSidebar"
autoCheck="false"
type="checkbox"
group="sidebar"
sidebarurl="chrome://mozapps/content/extensions/extensions.xul"
sidebartitle="Add-ons"
oncommand="toggleSidebar('vimperator-viewAddonsSidebar');"/>
<broadcaster id="vimperator-viewConsoleSidebar"
autoCheck="false"
type="checkbox"
group="sidebar"
sidebarurl="chrome://global/content/console.xul"
sidebartitle="Console"
oncommand="toggleSidebar('vimperator-viewConsoleSidebar');"/>
<broadcaster id="vimperator-viewDownloadsSidebar"
autoCheck="false"
type="checkbox"
group="sidebar"
sidebarurl="chrome://mozapps/content/downloads/downloads.xul"
sidebartitle="Downloads"
oncommand="toggleSidebar('vimperator-viewDownloadsSidebar');"/>
<broadcaster id="vimperator-viewPreferencesSidebar"
autoCheck="false"
type="checkbox"
group="sidebar"
sidebarurl="about:config"
sidebartitle="Preferences"
oncommand="toggleSidebar('vimperator-viewPreferencesSidebar');"/>
</broadcasterset>
</window>
</overlay>
<!-- vim: set fdm=marker sw=4 ts=4 et: -->

View File

@@ -4,7 +4,7 @@
<Description about="urn:mozilla:install-manifest">
<em:id>vimperator@mozdev.org</em:id>
<em:name>Vimperator</em:name>
<em:name>Vimperator2</em:name>
<em:version>###VERSION###</em:version>
<em:description>Make Firefox behave like Vim</em:description>
<em:creator>Martin Stubenschrott</em:creator>