@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
+toolbar[type="menubar"]:not([autohide="true"]):not([xpfe="false"]):not(:-moz-lwtheme):-moz-system-metric(menubar-drag) {
+ -moz-binding: url("chrome://communicator/content/bindings/toolbar.xml#grippytoolbar-drag");
+}
+
/* ::::: toolbar & menubar ::::: */
.toolbar-holder {
<Description>
<em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id>
<em:minVersion>2.1</em:minVersion>
- <em:maxVersion>2.4a1</em:maxVersion>
+ <em:maxVersion>2.6a1</em:maxVersion>
</Description>
</em:targetApplication>
list-style-image: url("chrome://messenger/skin/icons/message-news.gif");
}
+treechildren::-moz-tree-image(subjectCol, rss, ignoreSubthread),
+treechildren::-moz-tree-image(subjectCol, news, ignoreSubthread) {
+ list-style-image: url("chrome://messenger/skin/icons/message-news-kill.gif");
+}
+
.tabmail-tab[type="message"][MessageType="rss"][Attachment="true"],
.tabmail-tab[type="message"][MessageType="nntp"][Attachment="true"],
tree[noattachcol="true"] > treechildren::-moz-tree-image(subjectCol, rss, attach),
list-style-image: url("chrome://messenger/skin/icons/message-news-attach.gif");
}
+tree[noattachcol="true"] > treechildren::-moz-tree-image(subjectCol, rss, attach, ignoreSubthread),
+tree[noattachcol="true"] > treechildren::-moz-tree-image(subjectCol, news, attach, ignoreSubthread) {
+ list-style-image: url("chrome://messenger/skin/icons/message-news-attach-kill.gif");
+}
+
.tabmail-tab[type="message"][MessageType="rss"][Attachment="true"][Offline="true"],
.tabmail-tab[type="message"][MessageType="nntp"][Attachment="true"][Offline="true"],
tree[noattachcol="true"] > treechildren::-moz-tree-image(subjectCol, rss, attach, offline),
list-style-image: url("chrome://messenger/skin/icons/message-news-attach-offline.gif");
}
+tree[noattachcol="true"] > treechildren::-moz-tree-image(subjectCol, rss, attach, offline, ignoreSubthread),
+tree[noattachcol="true"] > treechildren::-moz-tree-image(subjectCol, news, attach, offline, ignoreSubthread) {
+ list-style-image: url("chrome://messenger/skin/icons/message-news-attach-kill-offline.gif");
+}
+
treechildren::-moz-tree-image(subjectCol, rss, new),
treechildren::-moz-tree-image(subjectCol, news, new) {
list-style-image: url("chrome://messenger/skin/icons/message-news-new.gif");
list-style-image: url("chrome://messenger/skin/icons/message-news-offline.gif");
}
+treechildren::-moz-tree-image(subjectCol, rss, offline, ignoreSubthread),
+treechildren::-moz-tree-image(subjectCol, news, offline, ignoreSubthread) {
+ list-style-image: url("chrome://messenger/skin/icons/message-news-kill-offline.gif");
+}
+
/* ..... new thread icons for watch and ignore ..... */
treechildren::-moz-tree-image(news, threadCol, watch) {
*
* ***** END LICENSE BLOCK ***** */
+@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
+
#addons-page {
background-color: #CCD0DD;
color: #000000;
.nav-button {
list-style-image: url("chrome://communicator/skin/icons/communicatoricons.png");
- min-width: 0;
}
#forward-btn {
color: #808080;
}
-#header-search[focused="true"] {
+#header-search[focused] {
background-color: #FFFFFF;
}
#header-utils-btn {
- min-width: 4.5em;
list-style-image: url("chrome://mozapps/skin/extensions/utilities.png");
- -moz-margin-end: 18px;
+ -moz-margin-end: 16px;
}
.view-header {
color: #404040;
margin-bottom: 0;
-moz-box-align: end;
+ -moz-box-flex: 1;
}
.creator {
}
.description-container {
- margin-top: 8px;
-moz-margin-start: 6px;
-moz-box-align: center;
}
-moz-box-align: stretch;
}
+.advancedinfo-container,
.update-info-container {
-moz-box-align: center;
}
-.advancedinfo-container,
.update-available {
-moz-box-align: end;
}
.popup-notification-icon[popupid="addon-install-started"],
.popup-notification-icon[popupid="addon-install-cancelled"],
.popup-notification-icon[popupid="addon-install-failed"],
-.popup-notification-icon[popupid="addon-install-complete"] {
+.popup-notification-icon[popupid="addon-install-complete"],
+.popup-notification-icon[popupid="lwtheme-install-request"],
+.popup-notification-icon[popupid="lwtheme-install-notification"] {
list-style-image: url("chrome://mozapps/skin/extensions/extensionGeneric.png");
width: 32px;
height: 32px;
font-weight: bold;
}
+#search-button > .button-box > .button-icon {
+ display: -moz-box;
+}
+
/*
toolbar[mode="text"] #search-button > .button-box > .button-icon,
toolbar[mode="icons"] #search-button > .button-box > .button-text {
#urlbar {
width: 7em;
min-width: 7em;
+ color: #FFBFFF;
}
#urlbar,
}
#urlbar-display {
- margin-top: -2px;
- margin-bottom: -2px;
-moz-border-end: 1px solid #9C9CFF;
-moz-margin-end: 3px;
-}
-
-#urlbar-display {
margin-top: 0;
margin-bottom: 0;
color: #8050B0;
.autocomplete-treebody::-moz-tree-image(bookmark, treecolAutoCompleteImage) {
list-style-image: url("chrome://browser/skin/places/bookmark.png");
-moz-image-region: rect(0px 16px 16px 0px);
- width: 16px;
+ width: 16px;
height: 16px;
}
.ac-result-type-tag,
.autocomplete-treebody::-moz-tree-image(tag, treecolAutoCompleteImage) {
list-style-image: url("chrome://mozapps/skin/places/tagContainerIcon.png");
- width: 16px;
+ width: 16px;
height: 16px;
}
color: inherit !important;
}
-.autocomplete-treebody::-moz-tree-cell-text(suggesthint, treecolAutoCompleteComment),
-.autocomplete-treebody::-moz-tree-cell-text(suggestfirst, treecolAutoCompleteComment)
+.autocomplete-treebody::-moz-tree-cell-text(suggesthint, treecolAutoCompleteComment),
+.autocomplete-treebody::-moz-tree-cell-text(suggestfirst, treecolAutoCompleteComment)
{
color: #8050B0;
font-size: smaller;
}
#TabsToolbar .toolbar-holder {
- background-color: #000000; /* correct effect of being an actal toolbar */
+ background-color: #000000; /* correct effect of being an actual toolbar */
}
#main-window[disablechrome] #TabsToolbar,
}
.tabs-newtab-button {
- width: 31px;
+ width: 28px;
+}
+
+#TabsToolbar > #new-tab-button {
+ width: 26px;
}
.tabs-newtab-button:hover,
.undo {
background-color: #8050B0;
- width: 150px;
- height: 30px;
- line-height: 30px;
+ padding-top: 3px;
+ padding-bottom: 3px;
+ -moz-padding-start: 5px;
+ -moz-padding-end: 20px;
+ width: 135px;
+ line-height: 25px;
box-shadow: 0px 1px 0px #9F9FCC, 0px -1px 0px #008484;
color: #FFCF00;
border-radius: 0.4em;
}
.undo .close {
- top: 4px;
- left: 4px;
+ top: 7px;
+ right: 7px;
opacity: 0.5;
}
html[dir=rtl] .undo .close {
- left: auto;
- right: 4px;
+ right: auto;
+ left: 7px;
}
.undo .close:hover{
== Styles used by XUL grippytoolbar in addition to general toolbar styles.
======================================================================= */
+toolbar[type="menubar"]:not([autohide="true"]):not([xpfe="false"]):not(:-moz-lwtheme):-moz-system-metric(menubar-drag) {
+ -moz-binding: url("chrome://global/skin/globalBindings.xml#grippytoolbar-drag");
+}
+
/* ::::: primary toolbar ::::: */
.toolbar-primary > .toolbar-box > .toolbar-holder {
@import url("chrome://global/content/aboutMemory.css");
+
+/* correct horrible colors for black background */
+
+.mrValue {
+ color: #E7ADE7;
+}
+
+.mrPerc {
+ color: #008484;
+}
+
+.mrName {
+ color: #9C9CFF;
+}
</content>
</binding>
+ <binding id="grippytoolbar-drag" extends="chrome://communicator/content/bindings/toolbar.xml#grippytoolbar-drag">
+ <content>
+ <xul:hbox flex="1" class="toolbar-box">
+ <xul:toolbargrippy xbl:inherits="last-toolbar,hidden=grippyhidden"
+ tbattr="toolbar-grippy"
+ class="toolbar-grippy"/>
+ <xul:hbox flex="1" class="toolbar-holder"
+ xbl:inherits="collapsed,last-toolbar,orient,align,pack">
+ <children/>
+ </xul:hbox>
+ <xul:vbox class="toolbar-endcap"/>
+ </xul:hbox>
+ </content>
+ </binding>
+
<binding id="grippytoolbar-primary" extends="chrome://communicator/content/bindings/toolbar.xml#grippytoolbar-primary">
<content>
<xul:hbox flex="1" class="toolbar-box">
</content>
</binding>
+ <binding id="grippytoolbar-primary-drag" extends="chrome://communicator/content/bindings/toolbar.xml#grippytoolbar-primary-drag">
+ <content>
+ <xul:hbox flex="1" class="toolbar-box">
+ <xul:toolbargrippy xbl:inherits="last-toolbar,hidden=grippyhidden"
+ tbattr="toolbar-grippy"
+ class="toolbar-grippy"/>
+ <xul:hbox flex="1" class="toolbar-holder"
+ xbl:inherits="collapsed,last-toolbar,orient,align,pack">
+ <children/>
+ </xul:hbox>
+ <xul:vbox class="toolbar-endcap"/>
+ </xul:hbox>
+ </content>
+ </binding>
+
<binding id="grippymenubar" extends="chrome://communicator/content/bindings/toolbar.xml#grippymenubar">
<resources>
<stylesheet src="chrome://global/skin/toolbar.css"/>
<Description>
<em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id>
<em:minVersion>2.1</em:minVersion>
- <em:maxVersion>2.4a1</em:maxVersion>
+ <em:maxVersion>2.6a1</em:maxVersion>
</Description>
</em:targetApplication>
<!-- Firefox -->
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>4.0</em:minVersion>
- <em:maxVersion>7.0a1</em:maxVersion>
+ <em:maxVersion>9.0a1</em:maxVersion>
</Description>
</em:targetApplication>
list-style-image: url("chrome://messenger/skin/icons/message-news.gif");
}
+treechildren::-moz-tree-image(subjectCol, rss, ignoreSubthread),
+treechildren::-moz-tree-image(subjectCol, news, ignoreSubthread) {
+ list-style-image: url("chrome://messenger/skin/icons/message-news-kill.gif");
+}
+
.tabmail-tab[type="message"][MessageType="rss"][Attachment="true"],
.tabmail-tab[type="message"][MessageType="nntp"][Attachment="true"],
tree[noattachcol="true"] > treechildren::-moz-tree-image(subjectCol, rss, attach),
list-style-image: url("chrome://messenger/skin/icons/message-news-attach.gif");
}
+tree[noattachcol="true"] > treechildren::-moz-tree-image(subjectCol, rss, attach, ignoreSubthread),
+tree[noattachcol="true"] > treechildren::-moz-tree-image(subjectCol, news, attach, ignoreSubthread) {
+ list-style-image: url("chrome://messenger/skin/icons/message-news-attach-kill.gif");
+}
+
.tabmail-tab[type="message"][MessageType="rss"][Attachment="true"][Offline="true"],
.tabmail-tab[type="message"][MessageType="nntp"][Attachment="true"][Offline="true"],
tree[noattachcol="true"] > treechildren::-moz-tree-image(subjectCol, rss, attach, offline),
list-style-image: url("chrome://messenger/skin/icons/message-news-attach-offline.gif");
}
+tree[noattachcol="true"] > treechildren::-moz-tree-image(subjectCol, rss, attach, offline, ignoreSubthread),
+tree[noattachcol="true"] > treechildren::-moz-tree-image(subjectCol, news, attach, offline, ignoreSubthread) {
+ list-style-image: url("chrome://messenger/skin/icons/message-news-attach-kill-offline.gif");
+}
+
treechildren::-moz-tree-image(subjectCol, rss, new),
treechildren::-moz-tree-image(subjectCol, news, new) {
list-style-image: url("chrome://messenger/skin/icons/message-news-new.gif");
list-style-image: url("chrome://messenger/skin/icons/message-news-offline.gif");
}
+treechildren::-moz-tree-image(subjectCol, rss, offline, ignoreSubthread),
+treechildren::-moz-tree-image(subjectCol, news, offline, ignoreSubthread) {
+ list-style-image: url("chrome://messenger/skin/icons/message-news-kill-offline.gif");
+}
+
/* ..... new thread icons for watch and ignore ..... */
treechildren::-moz-tree-image(news, threadCol, watch) {
*
* ***** END LICENSE BLOCK ***** */
+@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
+
#addons-page {
background-color: #000000;
color: #FF9F00;
.nav-button {
list-style-image: url("chrome://communicator/skin/icons/communicatoricons.png");
- min-width: 0;
}
#forward-btn {
color: #8050B0;
}
-#header-search[focused="true"] {
+#header-search[focused] {
border-color: #008484;
}
#header-utils-btn {
- min-width: 4.5em;
list-style-image: url("chrome://mozapps/skin/extensions/utilities.png");
- -moz-margin-end: 18px;
+ -moz-margin-end: 16px;
}
#header-utils-btn:hover,
color: #9C9CFF;
margin-bottom: 0;
-moz-box-align: end;
+ -moz-box-flex: 1;
}
.creator {
}
.description-container {
- margin-top: 8px;
-moz-margin-start: 6px;
-moz-box-align: center;
}
-moz-box-align: stretch;
}
+.advancedinfo-container,
.update-info-container {
-moz-box-align: center;
}
-.advancedinfo-container,
.update-available {
-moz-box-align: end;
}
.popup-notification-icon[popupid="addon-install-started"],
.popup-notification-icon[popupid="addon-install-cancelled"],
.popup-notification-icon[popupid="addon-install-failed"],
-.popup-notification-icon[popupid="addon-install-complete"] {
+.popup-notification-icon[popupid="addon-install-complete"],
+.popup-notification-icon[popupid="lwtheme-install-request"],
+.popup-notification-icon[popupid="lwtheme-install-notification"] {
list-style-image: url("chrome://mozapps/skin/extensions/extensionGeneric.png");
width: 32px;
height: 32px;
/* list-style-image: url("chrome://communicator/skin/icons/search.gif"); */
}
+#search-button > .button-box > .button-icon {
+ display: -moz-box;
+}
+
/*
toolbar[mode="text"] #search-button > .button-box > .button-icon,
toolbar[mode="icons"] #search-button > .button-box > .button-text {
cd $(dirname "$0")
SCRIPT_DIR=$(pwd)
-REPO_LIST="COMM MOZ MOZB DOMI CZ"
+# ============ vars specific to the versions ==============
+
+NAME_PRE=2
+NAME_POST=5
+
+TAG_PRE_COMM=COMM_2_0_BASE
+TAG_POST_COMM=BETA_5_END
+TAG_PRE_MOZ=GECKO_2_0_BASE
+TAG_POST_MOZ=FIREFOX_BETA_5_END
+TAG_PRE_EXT=SEAMONKEY_2_1_RELEASE
+TAG_POST_EXT=SEAMONKEY_2_2_RELEASE
-if [ -n "$1" ]; then
- SRC_DATE="$1"
- DST_DATE=`TZ=America/Los_Angeles date +%Y-%m-%d`
+# ===================== process repos =====================
+
+REPO_LIST="COMM MOZ MOZB DOMI CZ"
- HG_COMM_DIR=/mnt/mozilla/hg/comm-2.0
- #HG_COMM_DIR=/mnt/mozilla/hg/comm-central
- COMM_HG_OPTIONS=
- COMM_DIR=suite/themes/classic/
- COMM_NAME_EXTRA=" (suite)"
- COMM_LOG=$RUN_DIR/themelog-suitedefault.$SRC_DATE.$DST_DATE.log
+HG_COMM_DIR=/mnt/mozilla/hg/comm-beta
+COMM_HG_OPTIONS=
+COMM_DIR=suite/themes/classic/
+COMM_TAG_PRE=$TAG_PRE_COMM
+COMM_TAG_POST=$TAG_POST_COMM
+COMM_NAME_EXTRA=" (suite)"
+COMM_LOG=$RUN_DIR/theme-suitedefault.$NAME_PRE-$NAME_POST.log
- HG_MOZ_DIR=/mnt/mozilla/hg/comm-2.0/mozilla
- #HG_MOZ_DIR=/mnt/mozilla/hg/comm-central/mozilla
- MOZ_HG_OPTIONS=
- MOZ_DIR=toolkit/themes/winstripe/
- MOZ_NAME_EXTRA=" (toolkit)"
- MOZ_LOG=$RUN_DIR/themelog-tkwinstripe.$SRC_DATE.$DST_DATE.log
+HG_MOZ_DIR=/mnt/mozilla/hg/comm-beta/mozilla
+MOZ_HG_OPTIONS=
+MOZ_DIR=toolkit/themes/winstripe/
+MOZ_TAG_PRE=$TAG_PRE_MOZ
+MOZ_TAG_POST=$TAG_POST_MOZ
+MOZ_NAME_EXTRA=" (toolkit)"
+MOZ_LOG=$RUN_DIR/theme-toolkitwin.$NAME_PRE-$NAME_POST.log
- HG_MOZB_DIR=/mnt/mozilla/hg/comm-2.0/mozilla
- #HG_MOZB_DIR=/mnt/mozilla/hg/comm-central/mozilla
- MOZB_HG_OPTIONS=
- MOZB_DIR=browser/themes/winstripe/
- MOZB_NAME_EXTRA=" (browser)"
- MOZB_LOG=$RUN_DIR/themelog-browserwin.$SRC_DATE.$DST_DATE.log
+HG_MOZB_DIR=/mnt/mozilla/hg/comm-beta/mozilla
+MOZB_HG_OPTIONS=
+MOZB_DIR=browser/themes/winstripe/
+MOZB_TAG_PRE=$TAG_PRE_MOZ
+MOZB_TAG_POST=$TAG_POST_MOZ
+MOZB_NAME_EXTRA=" (browser)"
+MOZB_LOG=$RUN_DIR/theme-browserwin.$NAME_PRE-$NAME_POST.log
- HG_DOMI_DIR=/mnt/mozilla/hg/comm-2.0/mozilla/extensions/inspector
- #HG_DOMI_DIR=/mnt/mozilla/hg/comm-central/mozilla/extensions/inspector
- DOMI_HG_OPTIONS=
- DOMI_DIR=resources/skin/classic/
- DOMI_NAME_EXTRA=
- DOMI_LOG=$RUN_DIR/themelog-domiclassic.$SRC_DATE.$DST_DATE.log
+HG_DOMI_DIR=/mnt/mozilla/hg/comm-beta/mozilla/extensions/inspector
+DOMI_HG_OPTIONS=
+DOMI_DIR=resources/skin/classic/
+DOMI_TAG_PRE=$TAG_PRE_EXT
+DOMI_TAG_POST=$TAG_POST_EXT
+DOMI_NAME_EXTRA=
+DOMI_LOG=$RUN_DIR/theme-domiclassic.$NAME_PRE-$NAME_POST.log
- HG_CZ_DIR=/mnt/mozilla/hg/comm-2.0/mozilla/extensions/irc
- #HG_CZ_DIR=/mnt/mozilla/hg/comm-central/mozilla/extensions/irc
- CZ_HG_OPTIONS=
- CZ_DIR=xul/skin/
- CZ_NAME_EXTRA=
- CZ_LOG=$RUN_DIR/themelog-chatzilla.$SRC_DATE.$DST_DATE.log
+HG_CZ_DIR=/mnt/mozilla/hg/comm-beta/mozilla/extensions/irc
+CZ_HG_OPTIONS=
+CZ_DIR=xul/skin/
+CZ_TAG_PRE=$TAG_PRE_EXT
+CZ_TAG_POST=$TAG_POST_EXT
+CZ_NAME_EXTRA=
+CZ_LOG=$RUN_DIR/theme-chatzilla.$NAME_PRE-$NAME_POST.log
- for repo in $REPO_LIST; do
- HG_DIR_VAR="HG_${repo}_DIR"
- HG_DIR=${!HG_DIR_VAR}
- HG_OPTIONS_VAR="${repo}_HG_OPTIONS"
- HG_OPTIONS=${!HG_OPTIONS_VAR}
- SKIN_DIR_VAR="${repo}_DIR"
- SKIN_DIR=${!SKIN_DIR_VAR}
- LOG_VAR="${repo}_LOG"
- LOG_NAME=${!LOG_VAR}
- if [ ! -e $LOG_NAME ]; then
- echo "Getting $LOG_NAME..."
- cd $HG_DIR
- LC_ALL=C hg log -d ">$SRC_DATE" $HG_OPTIONS $SKIN_DIR > $LOG_NAME
- fi
- done
- cd $RUN_DIR
-else
- echo "You must specify a start date."
- exit 1
-fi
+for repo in $REPO_LIST; do
+ HG_DIR_VAR="HG_${repo}_DIR"
+ HG_DIR=${!HG_DIR_VAR}
+ HG_OPTIONS_VAR="${repo}_HG_OPTIONS"
+ HG_OPTIONS=${!HG_OPTIONS_VAR}
+ SKIN_DIR_VAR="${repo}_DIR"
+ SKIN_DIR=${!SKIN_DIR_VAR}
+ TAG_PRE_VAR="${repo}_TAG_PRE"
+ TAG_PRE=${!TAG_PRE_VAR}
+ TAG_POST_VAR="${repo}_TAG_POST"
+ TAG_POST=${!TAG_POST_VAR}
+ LOG_VAR="${repo}_LOG"
+ LOG_NAME=${!LOG_VAR}
+ if [ ! -e $LOG_NAME ]; then
+ echo "Getting $LOG_NAME..."
+ cd $HG_DIR
+ LC_ALL=C hg log -r $TAG_PRE:$TAG_POST $HG_OPTIONS $SKIN_DIR > $LOG_NAME
+ fi
+done
+cd $RUN_DIR
for repo in $REPO_LIST; do
HG_DIR_VAR="HG_${repo}_DIR"
+ TAG_PRE_VAR="${repo}_TAG_PRE"
+ TAG_PRE=${!TAG_PRE_VAR}
+ TAG_POST_VAR="${repo}_TAG_POST"
+ TAG_POST=${!TAG_POST_VAR}
LOG_VAR="${repo}_LOG"
NAME_EXTRA_VAR="${repo}_NAME_EXTRA"
NAME_EXTRA=${!NAME_EXTRA_VAR}
echo " </head>" >> $HTML_NAME
echo " <body>" >> $HTML_NAME
echo " <h1>$REPO_NAME Theme Changes</h1>" >> $HTML_NAME
- echo " <h2>$SRC_DATE to $DST_DATE</h2>" >> $HTML_NAME
+ echo " <h2>$TAG_PRE to $TAG_POST</h2>" >> $HTML_NAME
echo " <pre>" >> $HTML_NAME
sed -e "s/&/\&/g" -e "s/</\</g" -e "s/>/\>/g" \
-e "s|\(changeset: *[0-9]*\):\([0-9a-f]*\)|\1:<a href=\"$HG_URL/rev/\2\">\2</a>|" \
--- /dev/null
+#!/bin/sh
+
+RUN_DIR=$(pwd)
+cd $(dirname "$0")
+SCRIPT_DIR=$(pwd)
+
+# ============ vars specific to the versions ==============
+
+NAME_PRE=2
+NAME_POST=5
+
+TAG_PRE_COMM=COMM_2_0_BASE
+TAG_POST_COMM=BETA_5_END
+TAG_PRE_MOZ=GECKO_2_0_BASE
+TAG_POST_MOZ=FIREFOX_BETA_5_END
+TAG_PRE_EXT=SEAMONKEY_2_1_RELEASE
+TAG_POST_EXT=SEAMONKEY_2_2_RELEASE
+
+# ===================== process repos =====================
+
+REPO_LIST="COMM MOZ MOZB DOMI CZ"
+
+HG_COMM_DIR=/mnt/mozilla/hg/comm-beta
+COMM_DIR=suite/themes/classic/
+COMM_TAG_PRE=$TAG_PRE_COMM
+COMM_TAG_POST=$TAG_POST_COMM
+COMM_OUT=$RUN_DIR/theme-suitedefault.$NAME_PRE-$NAME_POST.diff
+
+HG_MOZ_DIR=/mnt/mozilla/hg/comm-beta/mozilla
+MOZ_DIR=toolkit/themes/winstripe/
+MOZ_TAG_PRE=$TAG_PRE_MOZ
+MOZ_TAG_POST=$TAG_POST_MOZ
+MOZ_OUT=$RUN_DIR/theme-toolkitwin.$NAME_PRE-$NAME_POST.diff
+
+HG_MOZB_DIR=/mnt/mozilla/hg/comm-beta/mozilla
+MOZB_DIR=browser/themes/winstripe/
+MOZB_TAG_PRE=$TAG_PRE_MOZ
+MOZB_TAG_POST=$TAG_POST_MOZ
+MOZB_OUT=$RUN_DIR/theme-browserwin.$NAME_PRE-$NAME_POST.diff
+
+HG_DOMI_DIR=/mnt/mozilla/hg/comm-beta/mozilla/extensions/inspector
+DOMI_DIR=resources/skin/classic/
+DOMI_TAG_PRE=$TAG_PRE_EXT
+DOMI_TAG_POST=$TAG_POST_EXT
+DOMI_OUT=$RUN_DIR/theme-domiclassic.$NAME_PRE-$NAME_POST.diff
+
+HG_CZ_DIR=/mnt/mozilla/hg/comm-beta/mozilla/extensions/irc
+CZ_DIR=xul/skin/
+CZ_TAG_PRE=$TAG_PRE_EXT
+CZ_TAG_POST=$TAG_POST_EXT
+CZ_OUT=$RUN_DIR/theme-chatzilla.$NAME_PRE-$NAME_POST.diff
+
+for repo in $REPO_LIST; do
+ HG_DIR_VAR="HG_${repo}_DIR"
+ HG_DIR=${!HG_DIR_VAR}
+ SKIN_DIR_VAR="${repo}_DIR"
+ SKIN_DIR=${!SKIN_DIR_VAR}
+ TAG_PRE_VAR="${repo}_TAG_PRE"
+ TAG_PRE=${!TAG_PRE_VAR}
+ TAG_POST_VAR="${repo}_TAG_POST"
+ TAG_POST=${!TAG_POST_VAR}
+ OUT_VAR="${repo}_OUT"
+ OUT_NAME=${!OUT_VAR}
+ if [ ! -e $OUT_NAME ]; then
+ echo "Getting $OUT_NAME..."
+ cd $HG_DIR
+ LC_ALL=C hg diff -r $TAG_PRE -r $TAG_POST $SKIN_DIR > $OUT_NAME
+ fi
+done
+cd $RUN_DIR
+
+echo "done."