466 lines
18 KiB
XML

<?xml version="1.0"?>
<!--
- 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.
-
- The Original Code is JSIRC Test Client #3
-
- The Initial Developer of the Original Code is New Dimensions Consulting,
- Inc. Portions created by New Dimensions Consulting, Inc. are
- Copyright (C) 1999 New Dimenstions Consulting, Inc. All
- Rights Reserved.
-
- Contributor(s):
- Robert Ginda, rginda@ndcico.com, original author
- Josh Soref, timeless@mac.com, international support
- Chiaki Koufugata chiaki@mozilla.gr.jp UI i18n
-->
<!DOCTYPE window SYSTEM "chrome://chatzilla/locale/chatzilla.dtd">
<?xml-stylesheet href="chrome://chatzilla/skin/chatzilla.css" type="text/css"?>
<?xul-overlay href="chrome://global/content/globalOverlay.xul"?>
<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
<?xul-overlay href="chrome://communicator/content/tasksOverlay.xul"?>
<window id="main-window"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="onLoad();" onunload="onUnload();"
onclose="return onClose();"
persist="width height" windowtype="irc:chatzilla">
<script src="chrome://global/content/strres.js"/>
<script src="chrome://navigator/content/tooltip.js"/>
<script src="chrome://global/content/nsJSSupportsUtils.js"/>
<script src="chrome://global/content/nsJSComponentManager.js"/>
<script src="chrome://global/content/nsUserSettings.js"/>
<script src="chrome://global/content/nsTransferable.js"/>
<script src="chrome://global/content/nsClipboard.js"/>
<script src="chrome://global/content/nsDragAndDrop.js"/>
<script src="chrome://communicator/content/contentAreaUtils.js"/>
<script src="chrome://communicator/content/contentAreaDD.js"/>
<script src="chrome://chatzilla/content/lib/js/utils.js"/>
<script src="chrome://chatzilla/content/lib/js/connection-xpcom.js"/>
<script src="chrome://chatzilla/content/lib/js/events.js"/>
<script src="chrome://chatzilla/content/lib/js/command-manager.js"/>
<script src="chrome://chatzilla/content/lib/js/irc.js"/>
<script src="chrome://chatzilla/content/lib/js/irc-debug.js"/>
<script src="chrome://chatzilla/content/lib/xul/munger.js"/>
<script src="chrome://chatzilla/content/commands.js"/>
<script src="chrome://chatzilla/content/readprefs.js"/>
<script src="chrome://chatzilla/content/static.js"/>
<script src="chrome://chatzilla/content/handlers.js"/>
<script src="chrome://chatzilla/content/rdf.js"/>
<commandset id="tasksCommands">
<command id="cmd_close" oncommand="window.close();"/>
<command id="cmd_quit"/>
</commandset>
<commandset id="chatzillaCommands">
<command id="cmd_focus_input" oncommand="focusInput();"/>
<command id="cmd_debug" oncommand="onToggleTraceHook()"/>
<command id="cmd_toggletabstrip" oncommand="onToggleVisibility('tabstrip');"/>
<command id="cmd_togglelist" oncommand="onToggleVisibility('info');"/>
<command id="cmd_togglestatus" oncommand="onToggleVisibility('status');"/>
<command id="cmd_clearview" oncommand="onClearCurrentView();"/>
<command id="cmd_deleteview" oncommand="onDeleteCurrentView();"/>
<command id="cmd_status" oncommand="client.onInputStatus();"/>
<command id="cmd_popup_query"
oncommand="onPopupSimulateCommand('/query $nick');"/>
<command id="cmd_popup_whois"
oncommand="onPopupSimulateCommand('/whois $nick');"/>
<command id="cmd_popup_ping"
oncommand="onPopupSimulateCommand('/ctcp $nick PING');"/>
<command id="cmd_popup_version"
oncommand="onPopupSimulateCommand('/ctcp $nick VERSION');"/>
<command id="cmd_popup_highlight"
oncommand="onPopupHighlight(true);"/>
<command id="cmd_popup_nohighlight"
oncommand="onPopupHighlight(false);"/>
<command id="cmd_popup_giveop"
oncommand="onPopupSimulateCommand('/op $nick');"/>
<command id="cmd_popup_takeop"
oncommand="onPopupSimulateCommand('/deop $nick');"/>
<command id="cmd_popup_givevoice"
oncommand="onPopupSimulateCommand('/voice $nick');"/>
<command id="cmd_popup_takevoice"
oncommand="onPopupSimulateCommand('/devoice $nick');"/>
<command id="cmd_popup_kick"
oncommand="onPopupSimulateCommand('/kick $nick');"/>
</commandset>
<keyset id="chatzillaKeys">
<key id="key_focus_input" observes="cmd_focus_input" keycode="VK_ESCAPE"/>
<key id="key_debug" observes="cmd_debug"
modifiers="control shift" key="D"/>
<key id="key_clearview" observes="cmd_clearview"
modifiers="control" key="R"/>
<key id="key_deleteview" observes="cmd_deleteview"
modifiers="control" key="D"/>
<key id="key_toggletabstrip" observes="cmd_toggletabstrip"
modifiers="control" key="T"/>
<key id="key_togglelist" observes="cmd_togglelist"
modifiers="control" key="L"/>
<key id="key_togglestatus" observes="cmd_togglestatus"
modifiers="control" key="S"/>
<key id="key_status" observes="cmd_status"
modifiers="control shift" key="S"/>
</keyset>
<keyset id="tasksKeys">
<key id="key_close"/>
<!-- nobody needs to quit that quickly. key id="key_quit"/ -->
</keyset>
<popupset id="aHTMLTooltipSet">
<popup id="aHTMLTooltip" class="tooltip"
onpopupshowing="return fillInHTMLTooltip(document.tooltipNode);">
<vbox id="HTML_TOOLTIP_tooltipBox"/>
</popup>
</popupset>
<popupset id="aTooltipSet"/>
<popupset id="contextMenus">
<popup id="userlistPopup" oncommand="onUserListPopupClick(event)">
<menuitem label="&op.value;" accesskey="&op.accesskey;" code="/op"/>
<menuitem label="&deop.value;" accesskey="&deop.accesskey;"
code="/deop"/>
<menuitem label="&voice.value;" accesskey="&voice.accesskey;"
code="/voice"/>
<menuitem label="&devoice.value;" accesskey="&devoice.accesskey;"
code="/devoice"/>
<menuitem label="&kick.value;" accesskey="&kick.accesskey;"
code="/kick"/>
<menuitem label="&whois.value;" accesskey="&whois.accesskey;" code="/whois"/>
</popup>
<popup id="outputContext"
onpopupshowing="if (event.originalTarget == this) onOutputContextMenuCreate(event);"
onpopuphiding="if (event.originalTarget == this) delete client._popupContext;">
<menuitem format="&PopupQueryCmd.label;" accesskey="&PopupQueryCmd.aKey;"
observes="cmd_popup_query"
showfor="targetUser != 'undefined'"/>
<menuitem format="&PopupWhoisCmd.label;" accesskey="&PopupWhoisCmd.aKey;"
observes="cmd_popup_whois"
showfor="targetUser != 'undefined'"/>
<menuitem format="&PopupPingCmd.label;" accesskey="&PopupPingCmd.aKey;"
observes="cmd_popup_ping"
showfor="targetUser != 'undefined'"/>
<menuitem format="&PopupVersionCmd.label;"
accesskey="&PopupVersionCmd.aKey;"
observes="cmd_popup_version"
showfor="targetUser != 'undefined'"/>
<!-- css bugs keep this from working for now, see bug 91447
<menu format="&PopupHighlightStyle.label;"
accesskey="&PopupHighlightStyle.aKey;"
showfor="targetUser != 'undefined'">
<menupopup id="highlightMenu"><menuitem/></menupopup>
</menu>
-->
<menuseparator
showfor="targetUser != 'undefined'"/>
<menuitem label="&PopupGiveOp.label;" accesskey="&PopupGiveOp.aKey;"
observes="cmd_popup_giveop"
showfor="iAmOp is 'yes' and targetIsOp is 'no'"/>
<menuitem label="&PopupTakeOp.label;" accesskey="&PopupTakeOp.aKey;"
observes="cmd_popup_takeop"
showfor="iAmOp is 'yes' and targetIsOp is 'yes'"/>
<menuitem label="&PopupGiveVoice.label;"
accesskey="&PopupGiveVoice.aKey;"
observes="cmd_popup_givevoice"
showfor="iAmOp is 'yes' and targetIsVoice is 'no'"/>
<menuitem label="&PopupTakeVoice.label;"
accesskey="&PopupTakeVoice.aKey;"
observes="cmd_popup_takevoice"
showfor="iAmOp is 'yes' and targetIsVoice is 'yes'"/>
<menuitem label="&PopupKick.label;" accesskey="&PopupKick.aKey;"
observes="cmd_popup_kick"
showfor="iAmOp is 'yes' and targetUser != 'undefined'"/>
<menuseparator
showfor="targetUser != 'undefined' and iAmOp is 'yes'"/>
<menuitem label="&ClearViewCmd.label;" accesskey="&ClearViewCmd.aKey;"
observes="cmd_clearview" key="key_clearview"/>
<menuitem label="&DeleteViewCmd.label;" accesskey="&DeleteViewCmd.aKey;"
observes="cmd_deleteview" key="key_deleteview"/>
<menuseparator/>
<menuitem label="&StatusCmd.label;" accesskey="&StatusCmd.aKey;"
observes="cmd_status" key="key_status"/>
</popup>
</popupset>
<toolbox>
<menubar id="main-menubar" persist="collapsed" grippytooltip="aTooltip" grippytooltiptext="&menuBar.tooltip;">
<menu id="menu_File">
<menupopup id="menu_FilePopup">
<menu label="&OptionsCmd.label;">
<menupopup>
<menu label="&MungerCmd.label;">
<menupopup id="menu-munger">
<menuitem id="menu-munger-global" label="&DisableMunger.label;"
oncommand="onToggleMunger()" type="checkbox"/>
<menuseparator/>
</menupopup>
</menu>
<menuseparator/>
<menuitem id="menu-dmessages" label="&DebugMsgCmd.label;"
accesskey="&DebugMsgCmd.aKey;" type="checkbox"
observes="cmd_debug" key="key_debug"/>
<menuseparator/>
<menuitem id="menu-settings-save-now" label="&SaveSetNowCmd.label;"
oncommand="writeIRCPrefs()"/>
<menuitem id="menu-settings-autosave" label="&SaveSetExitCmd.label;"
oncommand="onToggleSaveOnExit()" type="checkbox"/>
</menupopup>
</menu>
<menuseparator/>
<menuitem id="menu_close"/>
</menupopup>
</menu>
<menu label="&ViewCmd.label;" accesskey="&ViewCmd.aKey;">
<menupopup>
<menuitem id="menu-view-tabstrip" label="&ShowTabStripCmd.label;"
accesskey="&ShowTabStripCmd.aKey;" type="checkbox"
key="key_toggletabstrip" observes="cmd_toggletabstrip"/>
<menuitem id="menu-view-info" label="&ShowUserlistCmd.label;"
accesskey="&ShowUserlistCmd.aKey;" type="checkbox"
key="key_togglelist" observes="cmd_togglelist"/>
<menuitem id="menu-view-status" label="&ShowStatusbarCmd.label;"
accesskey="&ShowStatusbarCmd.aKey;" type="checkbox"
key="key_togglestatus" observes="cmd_togglestatus"/>
<menuseparator/>
<menuitem id="menu-view-none" label="&NoneCmd.label;"
accesskey="&NoneCmd.aKey;"
oncommand="onSimulateCommand('/css none');"/>
<menuitem id="menu-view-default" label="&DefaultCmd.label;"
accesskey="&DefaultCmd.aKey;"
oncommand="onSimulateCommand('/css default');"/>
<menuitem id="menu-view-dark" label="&DarkCmd.label;"
accesskey="&DarkCmd.aKey;"
oncommand="onSimulateCommand('/css dark');"/>
<menuitem id="menu-view-light" label="&LightCmd.label;"
accesskey="&LightCmd.aKey;"
oncommand="onSimulateCommand('/css light');"/>
<menuseparator/>
<!-- hide vs delete nuances are too vague
<menuitem label="&HideCmd.label;" oncommand="onHideCurrentView();"/>
-->
<menuitem label="&ClearViewCmd.label;" accesskey="&ClearViewCmd.aKey;"
observes="cmd_clearview" key="key_clearview"/>
<menuitem label="&DeleteViewCmd.label;" accesskey="&DeleteViewCmd.aKey;"
observes="cmd_deleteview" key="key_deleteview"/>
<menuseparator/>
<menuitem label="&StatusCmd.label;" accesskey="&StatusCmd.aKey;"
observes="cmd_status" key="key_status"/>
</menupopup>
</menu>
<menu id="tasksMenu"/>
</menubar>
</toolbox>
<vbox id="outer-box" flex="1">
<vbox id="upper-box" flex="1">
<hbox id="tabpanels-contents-box" flex="1">
<vbox id="user-list-box" width="20%" persist="collapsed width">
<tree id="user-list" container="true" datasources="rdf:null" flex="1"
containment="http://home.netscape.com/NC-irc#chanuser"
multiple="true" context="userlistPopup">
<template>
<treechildren flex="1">
<treeitem uri="..." flex="1">
<treerow >
<treecell align="center">
<image class="op-image"
state="rdf:http://home.netscape.com/NC-irc#op"/>
</treecell>
<treecell align="center">
<image class="voice-image"
state="rdf:http://home.netscape.com/NC-irc#voice"/>
</treecell>
<treecell flex="1">
<label class="user-nick"
isop="rdf:http://home.netscape.com/NC-irc#op"
isvoice="rdf:http://home.netscape.com/NC-irc#voice"
value="rdf:http://home.netscape.com/NC-irc#nick"
flex="1"/>
</treecell>
</treerow>
</treeitem>
</treechildren>
</template>
<treecolgroup flex="1">
<treecol align="center"
resource="http://home.netscape.com/NC-irc#op" width="25"/>
<splitter class="tree-splitter"/>
<treecol align="center"
resource="http://home.netscape.com/NC-irc#voice" width="25"/>
<splitter class="tree-splitter"/>
<treecol flex="1"
resource="http://home.netscape.com/NC-irc#nick"/>
</treecolgroup>
<treehead>
<treerow >
<treecell id="usercol-op"
resource="http://home.netscape.com/NC-irc#op"
class="treecell-header" label="O"
onclick="return onSortCol('usercol-op');"/>
<treecell id="usercol-voice"
resource="http://home.netscape.com/NC-irc#voice"
class="treecell-header" label="V"
onclick="return onSortCol('usercol-voice');"/>
<treecell id="usercol-nick"
resource="http://home.netscape.com/NC-irc#nick"
class="treecell-header sortDirectionIndicator" label="Nick"
onclick="return onSortCol('usercol-nick');"/>
</treerow>
</treehead>
</tree>
</vbox> <!-- user-list-box -->
<splitter id="main-splitter" collapse="before" persist="collapsed left">
<grippy/>
</splitter>
<vbox flex="1">
<iframe id="output-iframe" class="output-container" type="content"
flex="1" tooltip="aHTMLTooltip" context="outputContext"
ondragover="nsDragAndDrop.dragOver(event, contentDropObserver);"
ondragdrop="nsDragAndDrop.drop(event, contentDropObserver);"
ondraggesture="nsDragAndDrop.startDrag(event, contentAreaDNDObserver);"
src="chrome://chatzilla/content/outputwindow.html?chrome://chatzilla/skin/output-dark.css"/>
</vbox>
</hbox> <!-- tabpanels-contents-box -->
<hbox id="tabstrip-box" flex="0" >
<scrollbox id="view-tabs" persist="collapsed" orient="horizontal"
flex="1">
<tabs class="tabs-bottom" id="views-tbar-inner" flex="1"
>
<tab collapsed="true"/> <!-- dummy tab to keep the freaking xbl from
causing an exception -->
</tabs>
</scrollbox>
</hbox>
</vbox> <!-- upper-box -->
<splitter id="input-splitter" collapse="after" collapsed="true"/>
<vbox id="input-widgets">
<textbox id="multiline-input" multiline="true" flex="1" height="100px"
class="multiline-input-widget" collapsed="true"/>
<textbox id="input" class="input-widget"/>
</vbox>
</vbox> <!-- outer-box -->
<toolbox id="status-bar-tbox">
<toolbar id="status-bar-tbar" class="chromeclass-status" persist="collapsed" grippytooltip="aTooltip"
grippytooltiptext="&statusBar.tooltip;">
<hbox class="status-box" flex="20%" >
<vbox class="status-label" >
<label value="&network.label;"/>
<label value="&channel.label;"/>
<label value="&topicBy.label;"/>
</vbox>
<vbox class="status-data" >
<label id="net-name" value="(one)"/>
<label id="channel-name" value="(none)"/>
<label id="channel-topicby" value="(nobody)"/>
</vbox>
<spacer flex="20%"/>
<vbox class="status-label" >
<label value="&server.label;"/>
<label value="&mode.label;"/>
<label value="&topic.label;"/>
</vbox>
<vbox flex="80%" >
<hbox flex="1" >
<vbox class="status-data" >
<label id="server-name" value="(none)"/>
<label id="channel-mode" value="(none)"/>
</vbox>
<spacer flex="100%"/>
<vbox class="status-label" >
<label value="&nickname.label;"/>
<label value="&users.label;"/>
</vbox>
<vbox class="status-data" >
<label id="server-nick" value="(unknown)"/>
<label id="channel-users" value="(none)"/>
</vbox>
<spacer flex="100%"/>
<vbox class="status-label" >
<label value="&lag.label;"/>
<label value="&limit.label;"/>
</vbox>
<vbox class="status-data" >
<label id="server-lag" value="-1"/>
<label id="channel-limit" value="(none)"/>
</vbox>
<spacer flex="100%"/>
<vbox class="status-label"
collapsed="true">
<label value="&lastPing.label;"/>
<label value="&key.label;"/>
</vbox>
<vbox class="status-data"
collapsed="true">
<label id="last-ping" value="(never)"/>
<label id="channel-key" value="(none)"/>
</vbox>
</hbox>
<hbox flex="1">
<vbox class="status-data" flex="1">
<label id="channel-topic" value="(none)"/>
</vbox>
</hbox>
</vbox>
</hbox>
</toolbar>
</toolbox>
</window>