ecb added. new config file needs to be implemented

This commit is contained in:
Sameer Rahmani 2013-02-11 17:52:50 +03:30
parent 545117ce6b
commit 6d8b81a439
272 changed files with 84216 additions and 0 deletions

5
conf/emacs.d/ecb/.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
*.elc
*~
/TAGS
/html-help/
/info-help/

View File

@ -0,0 +1,162 @@
One of the limitations of the ECB is that it does not support multiple buffers
per ECB window.
For example there is no way to support multiple buffers within the 'directories'
window or the 'methods' window. IE it would be nice to support the speedbar and
the ECB directories buffer within the same window and allow the user to switch.
Essentially what we are talking about is the ability to 'cycle' through buffers
in specific windows and support changing the buffers at runtime.
If you want to see what I mean you can check out ecb-cycle.el. Right now this
supports multiple programatic buffers within the `ecb-compile-window'. This
allows you to cycle through all compilation buffers and provides
switch-to-buffer support using completion.
This is already really nice because it allows me to jump to igrep buffers or
jde-ant buffers quickly and without having to deal with the entire list of
buffers.
I want to expand on this concept so that ecb-cycle can support the directories
and methods windows. There is other information which we can display within
these windows.
For example in XML buffers, we could change the 'methods' window to support a
hierarchical view of the current XML document. It would be somewhat trivial to
support this using tree-widget.el or relatives. We could also support XML
schema specific representations. If the user is editing an Ant build.xml
document, we could use this same XML representation but expand to show <tasks>.
There are a *lot* of uses for this:
- Support a Java CLASSPATH browser
- Supporting jde-docindex integration for navigating sourcepath and
documentation based on hierarchical classname.
- using the methods buffer to navigate a list of files that are being tailed via
'tail -f' and displaying the result int the compilation buffer.
- Support complex applications on top of ECB that can use ECB windows as their
UI. (this would probably require another proposal)
- SQL browser (via JDBC, ODCB, etc)
- JDE/JPDA integration when a breakpoint it hit. This would need to set
buffers in each window. For example putting local variables in the
methods winow and possibly breakpoints in the directory window.
- Incremental compiler error lists (I plan on writing an incremental compile
integration package for jikes but I am waiting for them to fix a bug under
Linux). It would be nice to navigate this list in the methods window.
From what I see, in order to implement this, we have to pay significant
attention to making this convenient so that it isn't confusing for the user.
Should be compatible with all window configurations
Should not significantly change any current ECB behavior. We shouldn't force
users to use ecb-cycle.
Need the ability to revert to default buffers on ecb-redraw-layout. The user
should also be able to choose the default buffer per window within
customization. The user should also be able to restore the defaults using a
ecb-cycle-restore-defaults or similar function.
Need a consistent function metaphor so that we can use
`ecb-cycle-switch-to-directory-buffer' and
`ecb-cycle-switch-to-compilation-buffer', etc.
Should support the ability to automatically change buffers on current-buffer
sync. For example if one methods-buffer is a better representation for the
current buffer than the one in the methods window, it should automatically
changed to the better one (this could also be disabled in customization). A
good example of this is XML. The methods buffer doesn't support hierarchical
XML navigation (nor should it). We could automatically change to an XML
hierarchical representation in the methods buffer when an XML buffer is
selected.
- we will need to support some type of current buffer mapping. For example
we could use regexps
- *.xml -> *ecb-xml-methods-buffer*
- * -> * ECB Methods*
Should be able to cycle through buffers available for each window. (should we
support forwards and backwards operation?)
Should support profiles so that we can restore them. IE debug profile, eshell
profile, etc. A profile whould just be a list of cons cells with buffer
names.
'((ecb-compile-window . "*eshell")
(ecb-directory-window . " *SPEEDBAR*"))
- also users should be able to create their own profiles in addition to the
default profiles.
ISSUES:
- This functionality should probably be held back for ECB 1.7.0
- It would be nice to support a tabbed window->buffer metaphor. I think
XEmacs supports something like this but GNU Emacs does not.
TODO:
- We need to have a `ecb-directories-window' and an `ecb-methods-window',
'ecb-history-window' like `ecb-compile-window'
- Need to provide an initial implementation in ecb-cycle
- I was also thinking that we should add the ability to list every buffer
available for selection. This way you can have the directories window show all
the buffers that are available for selection and then choose one.
- We also need the ability to have a profile that used addition buffers that
weren't registered with the ability to cycle. For example we could have a
'calc' profile. So that we can set this profile after calc is run.
- should this support be added in ecb-cycle-external-profiles???
- need the ability to support a profile stack so that you can pop out of a
current profile and restore the last one.
- When we restore the default window configuration (ecb-redraw-layout), we
should pop out of any profiles. (should this be an option)
- ability to *suggest* how a profile should be handled on redraw.
- always-destroy
- never-destroy
- yield-to-setting
- All external profiles (gnus, calc, etc) should be stored in ecb-cycle-ext.el
- the following windows need to be accounted for:
- sources
- methods
- directory
- history
- need the ability to run a function prior to displaying a buffer.
Example: ' *ECB Directories*' needs to have ecb-update-directories-buffer
pior to viewing.
Actually this is a good way from keeping ecb-cycle from refreshing too many
buffers on ecb-current-buffer-sync. By default we should run the update
function when we change to a buffer.
- use a design pattern for creating profiles. AKA instead of a profile object I
could just do an:
- (defun ecb-cycle-create-profile(name buffers)
- support the ability to compare two buffers to find out which should be higher
priority
- support JIT buffer generation so that we aren't constantly regenerating
bufffers when they are actually hidden.

263
conf/emacs.d/ecb/Makefile Normal file
View File

@ -0,0 +1,263 @@
# This Makefile byte-compiles the ECB lisp files and generates online-help.
# Copyright (C) 2000 - 2010 Jesper Nordenberg,
# Klaus Berndl,
# Free Software Foundation, Inc.
# Author: Jesper Nordenberg <mayhem@home.se>
# Klaus Berndl <klaus.berndl@sdm.de>
# Maintainer: Klaus Berndl <klaus.berndl@sdm.de>
# Keywords: browser, code, programming, tools
# Created: 2001
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2, or (at your option) any later version.
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
# You should have received a copy of the GNU General Public License along with
# GNU Emacs; see the file COPYING. If not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# $Id$
# ========================================================================
# User configurable section
# ------------------------------------------------------------------------
# Byte-compiling ECB:
# ------------------------------------------------------------------------
# Define here the correct path to your Emacs or XEmacs binary. Ensure you
# have set this variable to 'xemacs' if you want byte-compile with XEmacs!
EMACS=emacs
# In the following path-settings of this section use always FORWARD-SLASHES
# as directory-separator even with MS Windows systems.
# -------- Compiling ECB with the cedet-library ----------------------
# cedet >= 1.0pre6 (contains a.o. semantic >= 2.0, eieio >= 0.18 and
# speedbar >= 0.15).
#
# + If you use Emacs >= 23.2 and you want to use the integrated CEDET:
# Set this to empty (CEDET=)
#
# + If you use Emacs < 23.2 or if you want to use the author version of CEDET:
# Set this to the full path of your CEDET-installation.
#CEDET=
CEDET=c:/Programme/emacs-23.1/site-lisp/package-development/cedet
# You can set here more load-paths to arbitrary packages if you want. But
# this is really not necessary!
LOADPATH=
# Two ways to build ECB:
# - Call "make" to byte-compile the ECB. You can savely ignore the messages.
# - Or call
#
# make [EMACS="path/to/emacs"] [CEDET="path/to/cedet" or empty]
#
# if you want to set either different load-paths or Emacs-binary and
# you do not want edit the Makefile. Do not forget quoting the arguments
# if they contain spaces!
#
# If there are any warning messages during byte-compilation (normally there
# are not any) you can savely ignore them!
# ------------------------------------------------------------------------
# Generating different online-help formats
# ------------------------------------------------------------------------
# If you want to generate all formats of online-help from the texi-source
# you must set here the FULL paths to the required tools. The Makefile
# tests if the tools are available on these locations, so if a tool x is
# not available let the related setting X empty! NOTE: For generating the
# PDF-format you will need an installed TeX and Ghostscript!
MAKEINFO=/usr/bin/makeinfo
TEXI2DVI=/C/Programme/texmf/miktex/bin/texi2dvi
# You need either the dvipdfm-tool
#DVIPDFM=/C/Programme/texmf/miktex/bin/dvipdfm
DVIPDFM=
# or the tools dvips and ps2pdf. If dvipdfm is available the Makefile uses
# this one!
DVIPS=/C/Programme/texmf/miktex/bin/dvips
PS2PDF=/C/home/bin/ps2pdf
# To generate the online-formats just call "make online-help" for info- and
# HTML-format and "make pdf" for PDF-format.
# ------------------------------------------------------------------------
# Installing the info online-help in the Top-directory of (X)Emacs-info
# ------------------------------------------------------------------------
# Set here the path of the info subdirectory of your (X)Emacs installation
# which contains the dir file.
EMACSINFOPATH=/C/Programme/emacs-22.3/info
# If you want to install the info-format of the online-help in the
# Top-directory of the info-directory of (X)Emacs (see above EMACSINFOPATH)
# then you must specify the full path of the tool install-info.
INSTALLINFO=/usr/bin/install-info
# To install the online-help just call "make install-help"
# end of user configurable section
# ========================================================================
# ========================================================================
# !!!!!!!!!!!!!!!!!!!!! Do not change anything below !!!!!!!!!!!!!!!!!!!!!
# ========================================================================
# $Id$
# For the ECB-maintainers: Change the version-number here and not
# elsewhere!
ecb_VERSION=2.41
include ecb-makedef.mk
ecb: $(ecb_LISP_EL)
@echo "Byte-compiling ECB with LOADPATH=${LOADPATH} ..."
@$(RM) $(ecb_LISP_ELC) ecb-compile-script
@echo "(add-to-list 'load-path nil)" > ecb-compile-script
@if test ! -z "${CEDET}"; then\
if test -f $(CEDET)/cedet-devel-load.el ; then \
echo "(load-file \"$(CEDET)/cedet-devel-load.el\")" >> ecb-compile-script; \
else \
echo "(load-file \"$(CEDET)/common/cedet.el\")" >> ecb-compile-script; \
fi \
else \
echo "(semantic-mode 1)" >> ecb-compile-script; \
echo "(require 'semantic/bovine/el)" >> ecb-compile-script; \
fi
@if test ! -z "${LOADPATH}"; then\
for loadpath in ${LOADPATH}; do \
echo "(add-to-list 'load-path \"$$loadpath\")" >> ecb-compile-script; \
done; \
fi
@echo "(require 'ecb)" >> ecb-compile-script
@echo "(setq debug-on-error t)" >> ecb-compile-script
$(EBATCH) -l ecb-compile-script --eval '(ecb-byte-compile t)'
@$(RM) ecb-compile-script
all: ecb online-help
online-help: $(ecb_TEXI)
@if test -x "$(MAKEINFO)"; then\
$(RM) -R $(ecb_INFO_DIR) $(ecb_HTML_DIR); \
$(MKDIR) $(ecb_INFO_DIR) $(ecb_HTML_DIR); \
echo Generating info-format...; \
$(MAKEINFO) --fill-column=78 $<; \
$(MV) *.info* $(ecb_INFO_DIR); \
echo Generating html-format...; \
$(MAKEINFO) --html --output=$(ecb_HTML_DIR) $<; \
for file in $(ecb_HTML_DIR)/*.html; do\
$(MV) $$file tmpfile; \
sed "s/index\\.html/$(ecb_HTML)/g" tmpfile > $$file; \
$(RM) tmpfile; \
done; \
$(MV) $(ecb_HTML_DIR)/index.html $(ecb_HTML_DIR)/$(ecb_HTML); \
else \
echo No info- and html-format generating because the tool; \
echo - makeinfo in $(MAKEINFO); \
echo is not available!; \
fi
pdf: $(ecb_TEXI)
@if test -x "$(TEXI2DVI)" -a -x "$(DVIPDFM)"; then\
$(RM) $(ecb_DVI) $(ecb_PDF); \
echo Generating pdf-format with dvipdfm ...; \
$(TEXI2DVI) --clean $<; \
$(DVIPDFM) $(ecb_DVI); \
$(RM) $(ecb_DVI); \
elif test -x "$(TEXI2DVI)" -a -x "$(DVIPS)" -a -x "$(PS2PDF)"; then\
$(RM) $(ecb_DVI) $(ecb_PS) $(ecb_PDF); \
echo Generating pdf-format with dvips and ps2pdf ...; \
$(TEXI2DVI) --quiet --clean $<; \
$(DVIPS) -Pcmz -q $(ecb_DVI) -o $(ecb_PS); \
$(PS2PDF) $(ecb_PS); \
$(RM) $(ecb_DVI) $(ecb_PS); \
else \
echo No pdf-format generating because at least one of the tools; \
echo - texi2dvi in $(TEXI2DVI); \
echo - dvips in $(DVIPS); \
echo - ps2pdf in $(PS2PDF); \
echo is not available!; \
fi
install-help: $(ecb_INFO_DIR)/$(ecb_INFO)
@if test -x "$(INSTALLINFO)" -a -f "$(EMACSINFOPATH)/dir"; then\
echo Installing the Online-help in $(EMACSINFOPATH)...; \
$(CP) $(ecb_INFO_DIR)/*info* $(EMACSINFOPATH); \
$(INSTALLINFO) $< $(EMACSINFOPATH)/dir; \
else \
echo Can not install the online-help because either; \
echo - the tool $(INSTALLINFO) or; \
echo - the file $(EMACSINFOPATH)/dir; \
echo is not available!; \
fi
clean:
@$(RM) $(ecb_LISP_ELC) ecb-compile-script
# The targets below are only for maintaining the ECB-package.
$(ecb_INFO_DIR)/$(ecb_INFO): online-help
# updates RELEASE_NOTES, README, NEWS, ecb.texi and ecb.el to the
# version-number of $(ecb_VERSION).
prepversion:
@$(MV) RELEASE_NOTES RELEASE_NOTES.tmp
@sed "1s/version.*/version $(ecb_VERSION)/" RELEASE_NOTES.tmp > RELEASE_NOTES
@$(RM) RELEASE_NOTES.tmp
@$(MV) README README.tmp
@sed "1s/version.*/version $(ecb_VERSION)/" README.tmp > README
@$(RM) README.tmp
@$(MV) NEWS NEWS.tmp
@sed "1s/version.*/version $(ecb_VERSION)/" NEWS.tmp > NEWS
@$(RM) NEWS.tmp
@$(MV) ecb-upgrade.el ecb-upgrade.el.tmp
@sed "s/^(defconst ecb-version.*/(defconst ecb-version \"$(ecb_VERSION)\"/" ecb-upgrade.el.tmp > ecb-upgrade.el
@$(RM) ecb-upgrade.el.tmp
@(echo "/@macro ecbver"; \
echo "+"; \
echo "c"; \
echo "$(ecb_VERSION)"; \
echo "."; \
echo "w"; \
echo "q") | ed -s $(ecb_TEXI) 1> /dev/null
autoloads:
@$(RM) $(ecb_AUTOLOADS) $(ecb_AUTOLOADS)c
$(EBATCH) -l ecb-autogen -f ecb-update-autoloads
# builds the distribution file $(ecb_VERSION).tar.gz
distrib: $(ecb_INFO_DIR)/$(ecb_INFO) prepversion autoloads ecb
@$(RM) ecb-$(ecb_VERSION).tar.gz
@$(RM) -R ecb-$(ecb_VERSION)
@$(MKDIR) ecb-$(ecb_VERSION)
@$(CP) $(ecb_DISTRIB_FILES) ecb-$(ecb_VERSION)
@$(CP) -r $(ecb_INFO_DIR) ecb-$(ecb_VERSION)
@$(CP) -r $(ecb_HTML_DIR) ecb-$(ecb_VERSION)
@$(CP) -r $(ecb_IMAGE_DIR) ecb-$(ecb_VERSION)
@find ecb-$(ecb_VERSION)/$(ecb_IMAGE_DIR) -name CVS -print | xargs rm -Rf
@find ecb-$(ecb_VERSION)/$(ecb_IMAGE_DIR) -name *~ -print | xargs $(RM)
@find ecb-$(ecb_VERSION)/$(ecb_IMAGE_DIR) -name *.png -print | xargs $(RM)
@tar -cvzf ecb-$(ecb_VERSION).tar.gz ecb-$(ecb_VERSION)
@$(RM) -R ecb-$(ecb_VERSION)
# End of Makefile

3135
conf/emacs.d/ecb/NEWS Normal file

File diff suppressed because it is too large Load Diff

210
conf/emacs.d/ecb/README Normal file
View File

@ -0,0 +1,210 @@
README for the Emacs Code Browser (ECB) version 2.40.1
About
-----
This package contains a code browser for several programming-languages for
(X)Emacs. For instructions on how to use the browser read the online-help
either with the shipped info-manual (see "Usage" below) or direct from the
ECB-Homepage at http://ecb.sourceforge.net.
The latest version can be found at: http://ecb.sourceforge.net
------------
Requirements
------------
The short story:
With Emacs >= 23.2 there is nothing to do. With XEmacs or Emacs < 23.2 you
have to install the CEDET-suite by hand.
The long story:
1. Emacs-version: ECB works only with (X)Emacs >= 21! If you have an older
one, please upgrade.
2. CEDET-suite: If Emacs >= 23.2 is used then CEDET is already integrated
into Emacs and there is nothing to do.
For users of any XEmacs-version, any Emacs-version < 23.2 or the latest
author CEDET version: Get it from http://cedet.sourceforge.net, read
the setup-instructions in http://cedet.sourceforge.net/setup.shtml and
read also the shipped file `INSTALL'.
*Please note*: If ECB detects an author version of CEDET (as available
at http://cedet.sourceforge.net) then ECB will ALWAYS try to use that
one even if you use Emacs >= 23.2! This is for users who want to use
latest Emacs >= 23.2 but still prefer using the latest author version of
CEDET instead of the Emacs-integrated one.
So if you want to use the Emacs-integrated CEDET-suite of Emacs >= 23.2
you have to ensure that no author-version of CEDET is in the `load-path'!
This means that the library cedet.el of the author-version MUST NOT be
loaded into Emacs (as described in the file INSTALL of CEDET)! This is a
valid check: (locate-library "semantic-ctxt") must return nil!
3. Only for XEmacs-users: If you use XEmacs you must have installed the
package c-support (contains hideshow.el). If you want to read the
online-help of ECB in HTML-format you must have the library browse-url
(part of the mail-lib XEmacs package) installed; this package is also
needed for submitting problem-reports to the ECB-maintainers!
4. Optional for Java-coding: ECB works very well with the JDEE package (
http://jdee.sourceforge.net) but JDEE is not required by ECB.
Do not install ECB before you have successfully installed the requirements!
------------
Installation
------------
*IMPORTANT*: ECB is no longer runnable as XEmacs-package via the
package-manager of XEmacs. This is because CEDET is not available as
XEmacs-package. Therefore ECB can also not be run as XEmacs-package. If CEDET
will later become a XEmacs-package then probably ECB will come back as
XEmacs-package. But in the meanwhile you have to install ECB "by hand".
1. Fulfill all requirements ECB needs (s.a. Requirements)
ECB performs two autom checks:
- At load-time: It checks if the cedet-suite is at least installed so
ECB can be loaded. If not it reports an error.
- At start-time: It checks if the correct versions of cedet and
semantic are installed and gives you proper feedback.
So if you are not sure if you have installed the required packages at
all or if you have installed the correct versions of these packages then
do not worry about this, just go on with the following installation
steps: If ECB is missing something it will give you proper feedback and
support not later than at load-time or start-time!
2. Download and unpack the ECB archive (probably you have already done this
:-)
3. Add the new ECB-directory to your `load-path' variable.
You *MUST* add the ECB-install-directory to the `load-path' either by
changing the `load-path' variable directly in your `.emacs' or
`site-lisp/site-start.el' or by working with a file `subdirs.el'(1).
So for example the needed entry for your `.emacs'-file could be:
(add-to-list 'load-path
"/path/to/your/ecb/installation/directory")
*ATTENTION*: ECB is NOT properly installed if it's directory is not
added to `load-path' and for example just loaded by
(load-file "/path/to/ecb/ecb.el")
Do not do this! It will not work!
4. Load ECB by adding code to your `.emacs':
If you want to load the complete ECB at (X)Emacs-loadtime (Advantage:
All ECB-options available after loading ECB. Disadvantage: Increasing
loadtime(2)):
(require 'ecb)
If you want to load the ECB first after starting it by `ecb-activate'
(Advantage: Fast loading(3). Disadvantage: ECB- and semantic-options
first available after starting ECB):
(require 'ecb-autoloads)
This loads all available autoloads of ECB, e.g. `ecb-activate',
`ecb-minor-mode', `ecb-byte-compile' and `ecb-show-help'.
Regardless which method you prefer: In both cases the used statement
must be placed *after* the statement of step 3!
Only for users of a manually installed author version of the CEDET-suite
(not that one integrated into Emacs >= 23.2): Instructions for loading
CEDET into Emacs must be placed somewhere before the statements needed for
loading ECB (s.a.)!
5. Restart (X)Emacs.
ECB is now ready for use and can be activated by calling `M-x ecb-activate'
or `ecb-minor-mode'. Now you can either starting using ECB or you can do
these optional installation steps:
6. Reading the online help with `ecb-show-help'
Maybe you are interested to read the online-help of ECB before first
start.
7. Bytecompiling ECB with `ecb-byte-compile'
This byte compiles ECB. You can safely ignore all messages if there are
any. (You can also bytecompile ECB from the command-line either by using
the `Makefile' or by using the batch-file `make.bat'; just read the
comments in that file you choose.)
8. Installing the Info-help of ECB
The ECB distribution contains a subdirectory `info-help' which contains
the online-help of ECB in Info-format. You can install this online help
so it's available in the Top-directory of Info. There are two ways to do
this:
- Use "install-info" (recommended):
1. Copy the files of the subdirectory `info-help' into the
info-directory of Emacs
2. Install the file `info-help/ecb.info' with the command
"install-info" (if available on your system) in the `dir'-file.
The supplied `Makefile' offers a target `install-help' which does
both of these steps. You have just to call `make install-help' with
the correct EMACSINFOPATH set (see the comment in `Makefile'). Here
is an example:
make EMACSINFOPATH=/path/to/emacs/info install-help
- Manually Installation:
Copy the files of the subdirectory `info-help' into the
info-directory of Emacs and modify the file `dir' manually.
But it doesn't matter if you do not execute this step (8.) because the
online help of ECB is always available though, see `ecb-show-help'.
-----
Usage
-----
Call "M-x ecb-activate" to activated ECB.
Call "M-x ecb-customize-most-important" to get a list of the most important
options of ECB. These are options you should at least know that they exist.
Call "M-x ecb-show-help" to get a detailed online-help for ECB. If you are
using ECB the first time you should read the online help accurately!
--------
Contacts
--------
Send comments, bug reports and improvement suggestions to:
ecb-list@lists.sourceforge.net
*IMPORTANT*: Cause of extra appearance of SPAM in the mailing-lists,
SourceForge has changed its policy: Now it is only possible to post to the
mailing-list for users who have subscribed this mailing-list.
So please be aware you will not be able to send comments, bug reports and
improvement suggestions before you have subscribed the ECB-mailing-list. See
the section "Mailing-list" at the ECB-website at http://ecb.sourceforge.net
how to do this.

View File

@ -0,0 +1,288 @@
This file contains some important release-notes for ECB version 2.40.1
General:
--------
Please read also the sections "Known conflicts and bugs" and "Tips and Tricks"
in the online help ('ecb-show-help'). The former one is a small list of known
conflicts and for each conflict a proper and easy solution! Please read also
carefully the upgrade informations below!
Installing ECB first time:
--------------------------
No special notes beyond the contents of README.
Upgrading from any version:
---------------------------
If you are upgrading from version newer then 2.27 (ie. ecb-version > 2.27)
then you can skip the rest of this release notes.
Upgrading from any version < 2.27:
----------------------------------
The option `ecb-auto-expand-tag-tree-collapse-other' has changed its type. ECB
autom. upgrades your old setting to the new option-type.
Upgrading from any version < 2.26:
----------------------------------
Some regexp-options has been changed to regexp-list-options:
`ecb-excluded-directories-regexp' --> `ecb-excluded-directories-regexps'
`ecb-source-file-regexps' --> `ecb-source-file-regexps'
`ecb-exclude-parents-regexp' --> `ecb-exclude-parents-regexps'
All these options now accept (and require) a list of regexps instead of
exactly one big regexp. ECB autom. upgrades your old settings to the new
option-types rsp. also -names (if the option has been renamed).
Upgrading from versions < 2.25:
-------------------------------
`ecb-sort-history-items' has been renamed to `ecb-history-sort-method'. ECB
autom. upgrades your old setting to the new option-name and -type.!
Upgrading from versions < 2.23:
-------------------------------
The option `ecb-show-tags' has changed its type. ECB autom. upgrades your old
setting to the new option-type.!
Upgrading from versions < 2.20:
-------------------------------
All user-defined extensions written for and added to one of the options
`ecb-directories-menu-user-extension', `ecb-sources-menu-user-extension',
`ecb-methods-menu-user-extension' or `ecb-history-menu-user-extension' MUST be
rewritten and redefined via the new macro `tree-buffer-defpopup-command'!
The option `ecb-primary-mouse-jump-destination' has been renamed to
`ecb-mouse-click-destination' and has also changed its default value to
'last-point.
The option `ecb-split-edit-window' has been renamed in
`ecb-split-edit-window-after-start'. In addition the value t is not allowed
anymore for this option - use 'before-activation instead. In a further
addition this option has a new default value 'before-deactivation. See the
docstring of this option to get all details.
The Option `ecb-other-window-jump-behavior' has been renamed to
`ecb-other-window-behavior'.
ECB autom. upgrades your old settings to the new option types/names!
Upgrading from versions < 2.11:
-------------------------------
The type of the option `ecb-post-process-semantic-taglist' has been changed.
ECB autom. upgrades the old-value of that option to the new type! There is
nothing to do for you.
Upgrading from versions < 2.01:
-------------------------------
The following options have changed their name:
- ecb-auto-expand-token-tree -> ecb-auto-expand-tag-tree
- ecb-font-lock-tokens -> ecb-font-lock-tags
- ecb-token-jump-sets-mark -> ecb-tag-jump-sets-mark
- ecb-token-display-function -> ecb-tag-display-function
- ecb-type-token-display -> ecb-type-tag-display
- ecb-post-process-semantic-tokenlist -> ecb-post-process-semantic-taglist
- ecb-show-only-positioned-tokens -> ecb-show-only-positioned-tags
- ecb-show-tokens -> ecb-show-tags
- ecb-highlight-token-with-point -> ecb-highlight-tag-with-point
- ecb-highlight-token-with-point-delay -> ecb-highlight-tag-with-point-delay
- ecb-token-visit-post-actions -> ecb-tag-visit-post-actions
- ecb-token-header-face -> ecb-tag-header-face
ECB autom. upgrades all old-values of these options to the new options! There
is nothing to do for you.
The type of the options `ecb-directories-menu-user-extension',
`ecb-sources-menu-user-extension', `ecb-methods-menu-user-extension' and
`ecb-history-menu-user-extension' has been changed - now sub-menus are
allowed. The new default values of these options contains now entries, mostly
concerning "version control". ECB autom. upgrades the old-values to the new
option-type by appending the new defaults to your old values. So no old
personal menu-entries are lost, but cause of the new default maybe you have
some entries twice. Feel free to delete via customize what you want from the
new settings.
The old option `ecb-tree-use-image-icons' has been replaced by
`ecb-tree-buffer-style'.
Upgrading from versions < 1.96:
-------------------------------
The options `ecb-mode-line-data' and `ecb-mode-line-prefixes' have changed
their type. ECB will autom. upgrade the old values of these options as best as
possible to the new types!
The option `ecb-layout-switch-to-compilation-window' has been removed. This
mimic is now done automatically.
The name of the command `ecb-toggle-enlarged-compilation-window' has been
changed to `ecb-toggle-compile-window-height' (The old name is still available
as alias but is deprecated). The keybinding [C-. /] remains.
The command `ecb-eshell-goto-eshell' has been removed. Now just use `eshell'
to work with the eshell. The old binding [C-. e] now simply runs `eshell'.
The command `ecb-eshell-enlarge' has been removed. Now just use the standard
ECB-command `ecb-toggle-compile-window-height' for this.
Upgrading from a version < 1.95.1:
----------------------------------
If there are byte-compiled(!) user-defined layouts - either created
interactively by `ecb-create-new-layout' or programmed with the macro
`ecb-layout-define' - then the file where these user-defined layouts are saved
(see option `ecb-create-layout-file') must be re-byte-compiled with latest ECB
version >= 1.95.1! If the user-defined layouts are not byte-compiled then
there is nothing to do.
Some default key-bindings have changed; the new bindings are:
C-c . g1: `ecb-goto-window-edit1' (was C-c . 1)
C-c . g2: `ecb-goto-window-edit2' (was C-c . 2)
C-c . gd: `ecb-goto-window-directories' (was C-c . d)
C-c . gs: `ecb-goto-window-sources' (was C-c . s)
C-c . gm: `ecb-goto-window-methods' (was C-c . m)
C-c . gh: `ecb-goto-window-history' (was C-c . h)
C-c . gb: `ecb-goto-window-speedbar' (was C-c . bw)
C-c . gc: `ecb-goto-window-compilation' (was C-c . c)
Upgrading from version < 1.95:
------------------------------
Some default key-bindings have changed; the new bindings are:
C-c . r: `ecb-rebuild-methods-buffer' (was not bound before)
C-c . lc: `ecb-change-layout' (was C-c . l)
C-c . lr: `ecb-redraw-layout' (was C-c . r)
C-c . lt: `ecb-toggle-layout' (was C-c . t)
C-c . lw: `ecb-toggle-ecb-windows' (was C-c . w)
ECB now requires speedbar. ECB needs a version >= 0.14beta1.
For XEmacs now the package c-support (contains hideshow.el) has to be
installed.
Upgrading from versions < 1.92:
--------------------------------
The type of the option `ecb-truncate-lines' has changed.
ECB autom. upgrades the old value of this option to its new type!
Upgrading from version 1.80:
----------------------------
The type or name of the following options has changed:
- ecb-layout-nr: New name is ecb-layout-name
- ecb-toggle-layout-sequence: New type
- ecb-major-modes-activate: New type
- ecb-layout-window-sizes: New type
- ecb-show-sources-in-directories-buffer: New type
- ecb-cache-directory-contents: New type
- ecb-source-file-regexps: New type
- ecb-show-ecb-windows-hook: New name is ecb-show-ecb-windows-before-hook
- ecb-hide-ecb-windows-hook: New name is ecb-hide-ecb-windows-before-hook
ECB autom. upgrades the values of these options to theirs new names/types!
Upgrading from version < 1.80:
------------------------------
The type of the following options has changed:
- 'ecb-token-display-function'
- 'ecb-window-sync'
ECB has a new feature 'ecb-auto-compatibility-check' which enables a check for
incompatible or renamed ECB-options at ECB startup. These options are then
autom. upgraded to the new type or reset to the default-values of current
ECB-version if no upgrade is possible. All upgraded or reset options are
displayed to the user with their old and new values!
ECB now requires Semantic version 1.4 and eieio version 0.17! Any previous
beta version is not supported anymore!
Upgrading from any version < 1.60:
----------------------------------
- The options `ecb-show-node-name-in-minibuffer',
`ecb-show-complete-file-name-in-minibuffer' and
`ecb-show-file-info-in-minibuffer' are gone and have been replaced by one
single new option `ecb-show-node-info-in-minibuffer' where you can define
separately for every tree-buffer when and which node info should be
displayed in the minibuffer
Upgrading from versions < 1.52:
-------------------------------
+ ECB now requires eieio >= 0.16 (see also README)
+ The option ecb-prefix-key has been removed. Now all customization of
key-bindings is done via the new option ecb-key-map.
+ ecb-layout-window-sizes is now an association list. If you have customized
this variable or used the ecb-store-window-sizes function, there will be an
error when drawing the ECB layout. Reset ecb-layout-window-sizes to it's
default value (nil) and store your window sizes using ecb-store-window-sizes.
+ A new customization variable ecb-show-tokens controls the behavior of the
methods buffer. Read the documentation for more information.
Upgrading from versions < 1.20:
-------------------------------
+ Now mouse-1 and mouse-2 for opening source-files and jumping to
methods/variables is not longer the default key-binding. Please take a look
at the new options 'ecb-primary-secondary-mouse-buttons' and
'ecb-primary-mouse-jump-destination'.
+ Now it is no longer necessary to bind in the ECB-hooks (ecb-activate-hook
and ecb-deactivate-hook) some standard-Emacs-keys for window-handling to the
ECB replacements for the related standard-functions to get proper
window-handling within the edit-window(s) of ECB.
Example: With ECB < 1.20 it was necessary to bind [C-x o] to
'ecb-other-window' in 'ecb-activate-hook' (and also "unbinding" it back to
the standard other-window in the 'ecb-deactivate-hook') to get a more
ECB-suitable other-window behavior. Same for other window-keys.
This way will work also in ECB 1.20 but it is NOT the recommended way
because the new option 'ecb-advice-window-functions' makes this much easier
and better. Please read the documentation of this option exactly!
+ Default-value of `ecb-other-window-jump-behavior' is now 'all.
+ Interactively calling 'ecb-update-methods-buffer' is not longer necessary as
work-around for the bug, that sometimes the error "Wrong type argument,
integer-or-marker-p nil" is displayed after clicking onto a method/variable
in the ECB-method-buffer. This bug is fixed!
+ For a complete list of changes and new features for versions > 1.20 see the
NEWS file.

34
conf/emacs.d/ecb/TODO Normal file
View File

@ -0,0 +1,34 @@
- Distinction of include-tags by "" or <>. This can be done via
(semantic-tag-include-system-p TAG). Thanks to Markus grietsch.
But probably it would be the best if semantic itself does this special
formating!
- Prevent layout-engine from splitting windows when smaller than
window-min-height/width.
- (BUG) if a buffer is opened from within an archive (zip or tar) then
clicking onto a method in this buffer tries to jump somewhere in the archive
(tar or zip) buffer (Klaus)
This is fixed for GNU Emacs - for XEmacs see next point
- KB: I think it would be best if ECB would not be so file-based means it
would be good if all semantic-parsable buffers could be displayed correct -
regardless if saved in a file or not - this would be good for sources not
yet saved as file or for extracted files from an archive with XEmacs (XEmacs
does not handle such extracts as normal files like GUN Emacs does)
But this implies some deeper changes - because we must take care of
ecb-path-selected-source and ecb-path-selected-directory and all places
where buffer-file-name is used and ECB currently expects a real existing
file...
A solution could be instead of storing filenames as tree-buffer-data storing
either filenames (in case of real files) or buffer-object in case of buffers
which can be parsed but are not real files (not saved sources or
archive-extracts for example).
- For left-right-layouts: Not only hiding all the ecb-windows but offering to
hide only one of the left or the right column. Maybe toggling in the
sequence "Hide left" --> "Hide all" --> Hide right" --> "Show all". But i
(Klaus) think this is not so easy........

View File

@ -0,0 +1,7 @@
* TODO Fix make.bat
* Write macro that will emit emacs-specific code ?
Macro should wrap code & emit it only if needed emacs/xemacs is selected - instead of
evaluating this condition in run-time

View File

@ -0,0 +1,281 @@
;;; ecb-advice-test.el --- test-lib for the advice backbone of ECB
;; Copyright (C) 2000 - 2009 Klaus Berndl,
;; Free Software Foundation, Inc.
;; Author: Klaus Berndl <klaus.berndl@sdm.de>
;; Maintainer: Klaus Berndl <klaus.berndl@sdm.de>
;; Keywords: browser, code, programming, tools
;; Created: 2009
;; This program is free software; you can redistribute it and/or modify it under
;; the terms of the GNU General Public License as published by the Free Software
;; Foundation; either version 2, or (at your option) any later version.
;; This program is distributed in the hope that it will be useful, but WITHOUT
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
;; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
;; details.
;; You should have received a copy of the GNU General Public License along with
;; GNU Emacs; see the file COPYING. If not, write to the Free Software
;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
;; $Id$
;;; Commentary:
;;
;; Contains a test-suite for the advice-backbone of ECB.
;;
;; This file is part of the ECB package which can be found at:
;; http://ecb.sourceforge.net
;;; Usage
;;
;; 1. Load this library into Emacs
;; 2. Call M-x ecb-test-with-original-advice-set
;; 3. Compare the Output in the message-buffer with the expected output at the
;; end of this file
;; 4. If there are differences then send this output to
;; the ecb-mailing-list (see Info-manual)
(eval-when-compile
(require 'silentcomp))
(require 'ecb-util)
(require 'ecb-common-browser)
(defecb-advice-set ecb-advice-test-set
"An advice-set only for testing the advice-mechanism of ECB")
(defun ecb-advice-test-defun-1 ()
(message "I'm the ORIGINAL function ecb-advice-test-defun-1"))
(defecb-advice ecb-advice-test-defun-1 around ecb-advice-test-set
"An advice"
(message "I'm the AROUND advice of ecb-advice-test-defun-1"))
(defun ecb-advice-test-defun-2 ()
(message "I'm the ORIGINAL function ecb-advice-test-defun-2"))
(defecb-advice ecb-advice-test-defun-2 before ecb-advice-test-set
"An advice"
(message "I'm the BEFORE advice of ecb-advice-test-defun-2"))
(defecb-advice ecb-advice-test-defun-2 after ecb-advice-test-set
"An advice"
(message "I'm the AFTER advice of ecb-advice-test-defun-2"))
(defun ecb-advice-test-defun-3 ()
(message "I'm the ORIGINAL function ecb-advice-test-defun-3"))
(defecb-advice ecb-advice-test-defun-3 around ecb-always-disabled-advices
"An always disabled advice"
(message "I'm the AROUND advice of (the always disabled) ecb-advice-test-defun-3"))
(defecb-advice ecb-advice-test-defun-3 after ecb-always-disabled-advices
"An always disabled advice"
(message "I'm the AFTER advice of (the always disabled) ecb-advice-test-defun-3"))
(defun ecb-advice-test-defun-4 ()
(message "I'm the ORIGINAL function ecb-advice-test-defun-4"))
(defecb-advice ecb-advice-test-defun-4 around ecb-always-disabled-advices
"An always disabled advice"
(message "I'm the AROUND advice of (the always disabled) ecb-advice-test-defun-4"))
(defun ecb-test-with-original-advice-set ()
(interactive)
(let ((ecb-advices-debug-error t))
(unwind-protect
(progn
(message "!!! BEGIN ecb-test-with-original-advice-set !!!!")
(ecb-enable-advices 'ecb-advice-test-set)
(ecb-disable-advices 'ecb-always-disabled-advices)
(ecb-advice-test-defun-1)
(ecb-advice-test-defun-2)
(ecb-advice-test-defun-3)
(ecb-advice-test-defun-4)
(ecb-with-original-adviced-function-set 'ecb-advice-test-set
(ecb-advice-test-defun-1)
(message "LOC-0.1 ecb-test-with-original-advice-set")
(ecb-with-ecb-advice 'ecb-advice-test-defun-3 'around
(ecb-advice-test-defun-1)
(ecb-advice-test-defun-2)
(ecb-advice-test-defun-3)
(ecb-advice-test-defun-4)
(ecb-with-ecb-advice 'ecb-advice-test-defun-3 'around
(ecb-advice-test-defun-3)
(ecb-advice-test-defun-4)
(ecb-with-ecb-advice 'ecb-advice-test-defun-3 'after
(ecb-advice-test-defun-3)
(ecb-advice-test-defun-4)
(ecb-with-ecb-advice 'ecb-advice-test-defun-4 'around
(ecb-advice-test-defun-3)
(ecb-advice-test-defun-4))
(message "LOC-0.2 ecb-test-with-original-advice-set")
(ecb-advice-test-defun-3)
(ecb-advice-test-defun-4))
(message "LOC-0.3 ecb-test-with-original-advice-set")
(ecb-advice-test-defun-3)
(ecb-advice-test-defun-4))
(message "LOC-0.4 ecb-test-with-original-advice-set")
(ecb-advice-test-defun-3)
(ecb-advice-test-defun-4))
(ecb-advice-test-defun-2)
(ecb-advice-test-defun-3)
(ecb-advice-test-defun-4)
(message "LOC-1 ecb-test-with-original-advice-set")
(ecb-with-original-adviced-function-set 'ecb-advice-test-set
(ecb-advice-test-defun-1)
(ecb-advice-test-defun-2))
(message "LOC-2 ecb-test-with-original-advice-set")
(ecb-advice-test-defun-1)
(ecb-advice-test-defun-2)
(message "LOC-3 ecb-test-with-original-advice-set")
(ecb-with-original-adviced-function-set 'ecb-advice-test-set
(ecb-advice-test-defun-1)
(ecb-advice-test-defun-2)
(message "LOC-4 ecb-test-with-original-advice-set")
(ecb-with-original-adviced-function-set 'ecb-advice-test-set
(ecb-advice-test-defun-1)
(ecb-advice-test-defun-2)))
(message "LOC-5 ecb-test-with-original-advice-set")
)
(ecb-advice-test-defun-1)
(ecb-advice-test-defun-2)
(message "LOC-6 ecb-test-with-original-advice-set"))
(ecb-disable-advices 'ecb-advice-test-set)
(ecb-advice-test-defun-1)
(ecb-advice-test-defun-2)
(ecb-advice-test-defun-3)
(ecb-advice-test-defun-4)
(message "!!! END ecb-test-with-original-advice-set !!!!"))))
;; expected output:
;; !!! BEGIN ecb-test-with-original-advice-set !!!!
;; ECB 2.33: debug enabling the advice-set: ecb-advice-test-set
;; ECB 2.33: debug enabling of 'after' advice ecb-advice-test-defun-2
;; ECB 2.33: debug enabling of 'before' advice ecb-advice-test-defun-2
;; ECB 2.33: debug enabling of 'around' advice ecb-advice-test-defun-1
;; ECB 2.33: debug disabling the advice-set: ecb-always-disabled-advices
;; ECB 2.33: debug disabling of 'around' advice ecb-advice-test-defun-4
;; ECB 2.33: debug disabling of 'after' advice ecb-advice-test-defun-3
;; ECB 2.33: debug disabling of 'around' advice ecb-advice-test-defun-3
;; ECB 2.33: debug disabling of 'around' advice count-windows
;; ECB 2.33: debug disabling of 'around' advice one-window-p
;; ECB 2.33: debug disabling of 'around' advice walk-windows
;; ECB 2.33: debug calling of 'around' advice ecb-advice-test-defun-1
;; I'm the AROUND advice of ecb-advice-test-defun-1
;; ECB 2.33: debug calling of 'before' advice ecb-advice-test-defun-2
;; I'm the BEFORE advice of ecb-advice-test-defun-2
;; I'm the ORIGINAL function ecb-advice-test-defun-2
;; ECB 2.33: debug calling of 'after' advice ecb-advice-test-defun-2
;; I'm the AFTER advice of ecb-advice-test-defun-2
;; I'm the ORIGINAL function ecb-advice-test-defun-3
;; I'm the ORIGINAL function ecb-advice-test-defun-4
;; ECB 2.33: debug with original advice-set: ecb-advice-test-set - ENTRY
;; ECB 2.33: debug disabling the advice-set: ecb-advice-test-set
;; ECB 2.33: debug disabling of 'after' advice ecb-advice-test-defun-2
;; ECB 2.33: debug disabling of 'before' advice ecb-advice-test-defun-2
;; ECB 2.33: debug disabling of 'around' advice ecb-advice-test-defun-1
;; I'm the ORIGINAL function ecb-advice-test-defun-1
;; LOC-0.1 ecb-test-with-original-advice-set
;; ECB 2.33: debug with always disabled ecb-advice: around ecb-advice-test-defun-3 - ENTRY
;; ECB 2.33: debug enabling of 'around' advice ecb-advice-test-defun-3
;; I'm the ORIGINAL function ecb-advice-test-defun-1
;; I'm the ORIGINAL function ecb-advice-test-defun-2
;; ECB 2.33: debug calling of 'around' advice ecb-advice-test-defun-3
;; I'm the AROUND advice of (the always disabled) ecb-advice-test-defun-3
;; I'm the ORIGINAL function ecb-advice-test-defun-4
;; ECB 2.33: debug with always disabled ecb-advice: around ecb-advice-test-defun-3 - ENTRY
;; ECB 2.33: debug calling of 'around' advice ecb-advice-test-defun-3
;; I'm the AROUND advice of (the always disabled) ecb-advice-test-defun-3
;; I'm the ORIGINAL function ecb-advice-test-defun-4
;; ECB 2.33: debug with always disabled ecb-advice: after ecb-advice-test-defun-3 - ENTRY
;; ECB 2.33: debug enabling of 'after' advice ecb-advice-test-defun-3
;; ECB 2.33: debug calling of 'around' advice ecb-advice-test-defun-3
;; I'm the AROUND advice of (the always disabled) ecb-advice-test-defun-3
;; ECB 2.33: debug calling of 'after' advice ecb-advice-test-defun-3
;; I'm the AFTER advice of (the always disabled) ecb-advice-test-defun-3
;; I'm the ORIGINAL function ecb-advice-test-defun-4
;; ECB 2.33: debug with always disabled ecb-advice: around ecb-advice-test-defun-4 - ENTRY
;; ECB 2.33: debug enabling of 'around' advice ecb-advice-test-defun-4
;; ECB 2.33: debug calling of 'around' advice ecb-advice-test-defun-3
;; I'm the AROUND advice of (the always disabled) ecb-advice-test-defun-3
;; ECB 2.33: debug calling of 'after' advice ecb-advice-test-defun-3
;; I'm the AFTER advice of (the always disabled) ecb-advice-test-defun-3
;; ECB 2.33: debug calling of 'around' advice ecb-advice-test-defun-4
;; I'm the AROUND advice of (the always disabled) ecb-advice-test-defun-4
;; ECB 2.33: debug disabling of 'around' advice ecb-advice-test-defun-4
;; ECB 2.33: debug with always disabled ecb-advice: around ecb-advice-test-defun-4 - EXIT
;; LOC-0.2 ecb-test-with-original-advice-set
;; ECB 2.33: debug calling of 'around' advice ecb-advice-test-defun-3
;; I'm the AROUND advice of (the always disabled) ecb-advice-test-defun-3
;; ECB 2.33: debug calling of 'after' advice ecb-advice-test-defun-3
;; I'm the AFTER advice of (the always disabled) ecb-advice-test-defun-3
;; I'm the ORIGINAL function ecb-advice-test-defun-4
;; ECB 2.33: debug disabling of 'after' advice ecb-advice-test-defun-3
;; ECB 2.33: debug with always disabled ecb-advice: after ecb-advice-test-defun-3 - EXIT
;; LOC-0.3 ecb-test-with-original-advice-set
;; ECB 2.33: debug calling of 'around' advice ecb-advice-test-defun-3
;; I'm the AROUND advice of (the always disabled) ecb-advice-test-defun-3
;; I'm the ORIGINAL function ecb-advice-test-defun-4
;; ECB 2.33: debug with always disabled ecb-advice: around ecb-advice-test-defun-3 - EXIT
;; LOC-0.4 ecb-test-with-original-advice-set
;; ECB 2.33: debug calling of 'around' advice ecb-advice-test-defun-3
;; I'm the AROUND advice of (the always disabled) ecb-advice-test-defun-3
;; I'm the ORIGINAL function ecb-advice-test-defun-4
;; ECB 2.33: debug disabling of 'around' advice ecb-advice-test-defun-3
;; ECB 2.33: debug with always disabled ecb-advice: around ecb-advice-test-defun-3 - EXIT
;; I'm the ORIGINAL function ecb-advice-test-defun-2
;; I'm the ORIGINAL function ecb-advice-test-defun-3
;; I'm the ORIGINAL function ecb-advice-test-defun-4
;; LOC-1 ecb-test-with-original-advice-set
;; ECB 2.33: debug with original advice-set: ecb-advice-test-set - ENTRY
;; I'm the ORIGINAL function ecb-advice-test-defun-1
;; I'm the ORIGINAL function ecb-advice-test-defun-2
;; ECB 2.33: debug with original advice-set: ecb-advice-test-set - EXIT
;; LOC-2 ecb-test-with-original-advice-set
;; I'm the ORIGINAL function ecb-advice-test-defun-1
;; I'm the ORIGINAL function ecb-advice-test-defun-2
;; LOC-3 ecb-test-with-original-advice-set
;; ECB 2.33: debug with original advice-set: ecb-advice-test-set - ENTRY
;; I'm the ORIGINAL function ecb-advice-test-defun-1
;; I'm the ORIGINAL function ecb-advice-test-defun-2
;; LOC-4 ecb-test-with-original-advice-set
;; ECB 2.33: debug with original advice-set: ecb-advice-test-set - ENTRY
;; I'm the ORIGINAL function ecb-advice-test-defun-1
;; I'm the ORIGINAL function ecb-advice-test-defun-2
;; ECB 2.33: debug with original advice-set: ecb-advice-test-set - EXIT
;; ECB 2.33: debug with original advice-set: ecb-advice-test-set - EXIT
;; LOC-5 ecb-test-with-original-advice-set
;; ECB 2.33: debug enabling the advice-set: ecb-advice-test-set
;; ECB 2.33: debug enabling of 'after' advice ecb-advice-test-defun-2
;; ECB 2.33: debug enabling of 'before' advice ecb-advice-test-defun-2
;; ECB 2.33: debug enabling of 'around' advice ecb-advice-test-defun-1
;; ECB 2.33: debug with original advice-set: ecb-advice-test-set - EXIT
;; ECB 2.33: debug calling of 'around' advice ecb-advice-test-defun-1
;; I'm the AROUND advice of ecb-advice-test-defun-1
;; ECB 2.33: debug calling of 'before' advice ecb-advice-test-defun-2
;; I'm the BEFORE advice of ecb-advice-test-defun-2
;; I'm the ORIGINAL function ecb-advice-test-defun-2
;; ECB 2.33: debug calling of 'after' advice ecb-advice-test-defun-2
;; I'm the AFTER advice of ecb-advice-test-defun-2
;; LOC-6 ecb-test-with-original-advice-set
;; ECB 2.33: debug disabling the advice-set: ecb-advice-test-set
;; ECB 2.33: debug disabling of 'after' advice ecb-advice-test-defun-2
;; ECB 2.33: debug disabling of 'before' advice ecb-advice-test-defun-2
;; ECB 2.33: debug disabling of 'around' advice ecb-advice-test-defun-1
;; I'm the ORIGINAL function ecb-advice-test-defun-1
;; I'm the ORIGINAL function ecb-advice-test-defun-2
;; I'm the ORIGINAL function ecb-advice-test-defun-3
;; I'm the ORIGINAL function ecb-advice-test-defun-4
;; !!! END ecb-test-with-original-advice-set !!!!
(silentcomp-provide 'ecb-advice-test)
;;; ecb-advice-test.el ends here

View File

@ -0,0 +1,714 @@
;;; ecb-analyse.el --- ECB analysis display window
;;; Copyright (C) 2004 - 2005 Klaus Berndl
;; Author: Klaus Berndl <klaus.berndl@sdm.de>
;; Maintainer: Klaus Berndl <klaus.berndl@sdm.de>
;; Keywords: browser, code, programming, analyse
;; Created: 2004
;; This program is free software; you can redistribute it and/or modify it under
;; the terms of the GNU General Public License as published by the Free Software
;; Foundation; either version 2, or (at your option) any later version.
;; This program is distributed in the hope that it will be useful, but WITHOUT
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
;; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
;; details.
;; You should have received a copy of the GNU General Public License along with
;; GNU Emacs; see the file COPYING. If not, write to the Free Software
;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
;; $Id$
;;; Commentary:
;;
;; Displays the analysing informations of semantic-analyze in a special
;; tree-buffer.
;;
;;; Code:
(require 'ecb-layout)
(require 'ecb-common-browser)
(require 'ecb-method-browser)
(require 'ecb-cedet-wrapper)
(eval-when-compile
(require 'silentcomp))
(eval-when-compile
;; to avoid compiler grips
(require 'cl))
(defgroup ecb-analyse nil
"Settings for the analyse-buffer in the Emacs code browser."
:group 'ecb
:prefix "ecb-")
(defcustom ecb-analyse-buffer-name " *ECB Analyse*"
"*Name of the ECB analyse buffer.
Because it is not a normal buffer for editing you should enclose the name with
stars, e.g. \"*ECB Analyse*\".
If it is necessary for you you can get emacs-lisp access to the buffer-object of
the ECB-analyse-buffer by this name, e.g. by a call of `set-buffer'.
Changes for this option at runtime will take affect only after deactivating and
then activating ECB again!"
:group 'ecb-analyse
:type 'string)
(defcustom ecb-analyse-buffer-after-create-hook nil
"*Local hook running after the creation of the analyse-buffer.
Every function of this hook is called once without arguments direct after
creating the analyse-buffer of ECB and it's local key-map. So for example a
function could be added which performs calls of `local-set-key' to define new
key-bindings only for the analyse-buffer of ECB."
:group 'ecb-analyse
:type 'hook)
(defcustom ecb-analyse-show-node-info '(if-too-long . name)
"*When to display which node-info in the analyse-buffer.
Define which node info should displayed after moving the mouse over a node
\(or after a shift click onto the node) in the analyse-buffer.
You can define \"when\" a node-info should be displayed:
See `ecb-directories-show-node-info' for the possible choices.
You can define what info should be displayed:
- name: The full name of the node
- full-info: All infos available to a node.
Do NOT set this option directly via setq but use always customize!"
:group 'ecb-analyse
:type '(cons (choice :tag "When"
(const :tag "Always" :value always)
(const :tag "If too long" :value if-too-long)
(const :tag "After shift click" :value shift-click)
(const :tag "Never" :value never))
(choice :tag "What"
(const :tag "Node-name" :value name)
(const :tag "Full info" :value full-info))))
(defcustom ecb-analyse-collapsed-buckets nil
"*Buckets collapsed when displaying the current semantic analysis.
The semantic analyse-modul offers several categories of analysis which are
called buckets here. These are for example:
Context: The current context, which is the current function/method, variable,
class etc. \(what exactly depends on the programming language) point is in.
This means not the current function/method/variable/class-name point stand on
but the current surrounding context. Example: If point stays somewhere within
a defun-definition in emacs-lisp or within a java-method then this defun rsp.
method is the context. In object oriented languages this can be the full
hierachy, i.e. not only the current method, but the current method, the class
of this method, the superclass of this class and so on!
Local Variables: All accessible and bound local variables visible at current
point.
Prefix: The currently parsed prefix, which is mostly the current identifier
point stands on.
Assignee: See the semantic manual
Function: Current function-name point stands on.
Argument #: When point is located within a function-call then this is the
number of the argument point stands on.
Completions: All possible completions for current prefix \(see above). This is
probably the most helpful bucket.
If one of these categories/buckets are not needed per default then add the
bucket-name \(s.a.) to this option and ECB will per default collapse this
bucket. So most needed buckets are better visible in the analyse-buffer."
:group 'ecb-analyse
:type '(repeat (choice :tag "Bucket" :menu-tag "Bucket"
(const :tag "Context" :value "Context")
(const :tag "Arguments" :value "Arguments")
(const :tag "Local Variables" :value "Local Variables")
(const :tag "Prefix" :value "Prefix")
(const :tag "Assignee" :value "Assignee")
(const :tag "Function" :value "Function")
(const :tag "Argument #" :value "Argument #")
(const :tag "Completions" :value "Completions")
(string :tag "Other bucketname"))))
(defcustom ecb-analyse-fontified-buckets '("Context" "Function")
"*Buckets whose elements should be fontified as in the methods-buffer.
If the name of a category/bucket is contained in this option then
all elements of this bucket will be displayed as in the
methods-buffer - at least if an element is a semantic-tag. This
means if `ecb-font-lock-tags' is not nil and the font-lock
feature is loaded into Emacs these elements will be fontified and
also displayed with an appropriate icon if possible. The default
value does this only for the Context-bucket because for most of
the other buckets this makes not really much sense.
For available buckets see `ecb-analyse-collapsed-buckets'.
For the faces used to display a bucket-node itself or bucket-elements not
fontified see the options `ecb-analyse-bucket-node-face' rsp.
`ecb-analyse-bucket-element-face'."
:group 'ecb-analyse
:type '(repeat (choice :tag "Bucket" :menu-tag "Bucket"
(const :tag "Context" :value "Context")
(const :tag "Arguments" :value "Arguments")
(const :tag "Local Variables" :value "Local Variables")
(const :tag "Prefix" :value "Prefix")
(const :tag "Assignee" :value "Assignee")
(const :tag "Function" :value "Function")
(const :tag "Argument #" :value "Argument #")
(const :tag "Completions" :value "Completions")
(string :tag "Other bucketname"))))
(defcustom ecb-analyse-gen-tag-info-fn nil
"*Which info should be displayed for a tag of the analyse-buffer.
If nil then the default information about a tag will be displayed. If a
function then this function gets as argument the tag for which tag-information
should be displayed. This function has to return a string which will be then
display as tag-info. This string has to be fully formatted \(e.g. must already
include line-breaks if the tag-info should be displayed in several lines).
See `ecb-analyse-show-tag-info-fn' how the tag-info is displayed."
:group 'ecb-analyse
:type '(radio (const :tag "Default info" :value nil)
(function :tag "")))
(defcustom ecb-analyse-show-tag-info-fn 'message
"*How to display the tag-info for a tag of the analyse-buffer.
The value of this option is a function which will be called with the
info-string generated for the current tag of the analyse-buffer. This function
must do all things necessary for displaying this info. When this function is
called the window stored in `ecb-last-edit-window-with-point' is the selected
window!
ECB offers two builtin ways: Display the info in the echo-area \(via the
function `message') or in a temp-buffer in the edit-area \(via the function
`ecb-analyse-show-tag-info-in-temp-buffer'). Default is echo-area-display.
See also `ecb-analyse-gen-tag-info-fn'."
:group 'ecb-analyse
:type '(radio (const :tag "Display in the echo-area" :value message)
(const :tag "Display in a temp-buffer"
:value ecb-analyse-show-tag-info-in-temp-buffer)
(function :tag "Info display-function")))
(defcustom ecb-analyse-buffer-sync 'basic
"*Synchronize the analyse buffer automatically with current edit buffer.
If 'always then the synchronization takes place always a buffer changes in the
edit window, if nil then never. If a list of major-modes then only if the
`major-mode' of the new buffer belongs NOT to this list.
Normally it's not necessary to exclude some major-modes because with
not-semantic supported major-modes simply nothing happens. But maybe it can be
helpful for certain situations...
If the special value 'basic is set then ECB uses the setting of the option
`ecb-basic-buffer-sync'.
IMPORTANT NOTE: Every time the synchronization is done the hook
`ecb-analyse-buffer-sync-hook' is evaluated."
:group 'ecb-analyse
:type '(radio :tag "Synchronize ECBs analyse buffer"
(const :tag "use basic value" :value basic)
(const :tag "Always" :value always)
(const :tag "Never" nil)
(repeat :tag "Not with these modes"
(symbol :tag "mode"))))
(defcustom ecb-analyse-buffer-sync-delay 2
"*Time Emacs must be idle before the analyse-buffer is synchronized.
Synchronizing is done with the current source displayed in the edit window. If
nil then there is no delay, means synchronization takes place immediately.
CAUTION: With analysing a value not too small is strongly recommended because
it can be very annoying if more or less after each typing the current context
is analysed. If set to nil then *each* keyboard hit refreshes the
analyse-buffer which will make ECB quite unusable!
If the special value 'basic is set then ECB uses the setting of the option
`ecb-basic-buffer-sync-delay'"
:group 'ecb-analyse
:type '(radio (const :tag "Use basic value" :value basic)
(const :tag "No synchronizing delay" :value nil)
(number :tag "Idle time before synchronizing" :value 2))
:set (function (lambda (symbol value)
(set symbol value)
(if (and (boundp 'ecb-minor-mode)
ecb-minor-mode)
(ecb-activate-ecb-autocontrol-function
value 'ecb-analyse-buffer-sync))))
:initialize 'custom-initialize-default)
(defcustom ecb-analyse-buffer-sync-hook nil
"Hook run at the end of `ecb-analyse-buffer-sync'.
See documentation of `ecb-analyse-buffer-sync' for conditions when
synchronization takes place and so in turn these hooks are evaluated.
Preconditions for such a hook:
- Current buffer is the buffer of the currently selected
edit-window.
- The analyse-buffer is displayed in a visible window of the
ecb-frame \(so no check for visibilty of the analyse-buffer in
the ecb-frame is necessary in a hook function)
Postcondition for such a hook:
Point must stay in the same edit-window as before evaluating the hook.
Important note: If the option `ecb-analyse-buffer-sync' is not
nil the function `ecb-analyse-buffer-sync' is running either
every time Emacs is idle or even after every command \(see
`ecb-analyse-buffer-sync-delay'). So if the anaylse-buffer is
displayed in a window of the ecb-frame \(see preconditions above)
these hooks can be really called very often! Therefore each
function of this hook should/must check in an efficient way at
beginning if its task have to be really performed and then do
them only if really necessary! Otherwise performance of Emacs
could slow down dramatically!"
:group 'ecb-analyse
:type 'hook)
(defconst ecb-analyse-nodedata-tag-with-pos 0)
(defconst ecb-analyse-nodedata-tag-without-pos 1)
(defconst ecb-analyse-nodedata-no-tag 2)
(defconst ecb-analyse-nodetype-bucket 0)
(defconst ecb-analyse-nodetype-context 1)
(defconst ecb-analyse-nodetype-arguments 2)
(defconst ecb-analyse-nodetype-completions 3)
(defconst ecb-analyse-nodetype-localvars 4)
(defconst ecb-analyse-nodetype-prefix 5)
(defconst ecb-analyse-nodetype-assignee 6)
(defconst ecb-analyse-nodetype-function 7)
(defconst ecb-analyse-nodetype-function-arg 8)
(defecb-autocontrol/sync-function ecb-analyse-buffer-sync
ecb-analyse-buffer-name ecb-analyse-buffer-sync t
"Synchronize the analyse buffer with the current buffer and point.
This means in fact display the current analysis for current point."
;; TODO: Klaus Berndl <klaus.berndl@sdm.de>: make interruptable. Necessary
;; e.g. when typing: "(e" then scanning all elisp stuff beginning with e is
;; really annoying....
(let ((analysis nil)
(scope nil)
(completions nil)
(cnt nil)
(mode-local-active-mode nil)
)
;; Try and get some sort of analysis
(condition-case nil
(progn
(setq mode-local-active-mode major-mode)
(save-excursion
;; Get the current scope
(setq scope (semantic-calculate-scope (point)))
;; Get the analysis
(setq analysis (ecb--semantic-analyze-current-context (point)))
(setq cnt (ecb--semantic-find-tag-by-overlay))
(when analysis
(setq completions (ecb--semantic-analyze-possible-completions analysis)))))
(error nil))
(ecb-exec-in-window ecb-analyse-buffer-name
;; we must remove the old nodes
(tree-buffer-set-root (tree-node-new-root))
(when cnt
(ecb-analyse-add-nodes "Context" "Context"
cnt ecb-analyse-nodetype-context))
;; TODO: Klaus Berndl <klaus.berndl@sdm.de>: maybe we should adopt this
;; for ecb-analyse..
;; (when analysis
;; ;; If this analyzer happens to point at a complete symbol, then
;; ;; see if we can dig up some documentation for it.
;; (semantic-ia-sb-show-doc analysis))
;; Show local variables
(when scope
(ecb-analyse-show-scope scope))
(when analysis
;; Let different classes draw more buttons.
(ecb-analyse-more-nodes analysis)
(when completions
(ecb-analyse-add-nodes "Completions" "Completions" completions
ecb-analyse-nodetype-completions)))
(tree-buffer-update)))
(run-hooks 'ecb-analyse-buffer-sync-hook))
(defun ecb-analyse-show-scope (scope)
"Show SCOPE information."
(let ((localvars (when scope
(oref scope localvar))))
(when localvars
(ecb-analyse-add-nodes "Local Variables" "Local Variables" localvars
ecb-analyse-nodetype-localvars))))
(defmethod ecb-analyse-more-nodes ((context semantic-analyze-context))
"Show a set of ecb-nodes specific to CONTEXT."
(let ((prefix (oref context prefix)))
(when prefix
(ecb-analyse-add-nodes "Prefix" "Prefix" prefix ecb-analyse-nodetype-prefix))))
(defmethod ecb-analyse-more-nodes ((context semantic-analyze-context-assignment))
"Show a set of ecb-nodes specific to CONTEXT."
(call-next-method)
(let ((assignee (oref context assignee)))
(when assignee
(ecb-analyse-add-nodes "Assignee" "Assignee" assignee
ecb-analyse-nodetype-assignee))))
(defmethod ecb-analyse-more-nodes ((context semantic-analyze-context-functionarg))
"Show a set of ecb-nodes specific to CONTEXT."
(call-next-method)
(let ((func (oref context function)))
(when func
(ecb-analyse-add-nodes "Function" "Function" func ecb-analyse-nodetype-function)
;; An index for the argument the prefix is in:
(let ((arg (oref context argument)))
(when arg
(ecb-analyse-add-nodes "Argument #"
(format "Argument # %d" (oref context index))
arg
ecb-analyse-nodetype-function-arg))))))
;; Each category of nodes gets its own nodetype, so we can offer different
;; popup-menus for different categories (e.g. completions have other senseful
;; popup-menu-entries than the rest. The date of a node will always be a cons
;; where the car is the analyse-elem and the cdr is a const if it is a
;; semantic-tag (positionless or with position) or not.
(defun ecb-analyse-add-nodes (bucket bucket-name list nodetype)
"Create ecb-nodes from LIST. BUCKET is one of the categories/buckets
mentioned in `ecb-analyse-collapsed-buckets'. BUCKET-NAME is the name a bucket
should be displayed with. LIST is a list of tags for this bucket. NODETYPE is
an integer which will be added as type to the nodes created for the elements
of LIST."
(when list
(with-current-buffer ecb-analyse-buffer-name
(let* ((bucket-name-formatted
(ecb-merge-face-into-text (ecb-format-bucket-name bucket-name)
ecb-analyse-bucket-node-face))
(bucket-node (tree-node-new bucket-name-formatted
ecb-analyse-nodetype-bucket
(list 'ecb-bucket-node
ecb-analyse-nodetype-bucket)
nil
(tree-buffer-get-root))))
(setf (tree-node->expanded bucket-node)
(not (member bucket ecb-analyse-collapsed-buckets)))
(ecb-exit-on-input 'ecb-analyse
(dolist (elem list)
(ecb-throw-on-input 'ecb-analyse-tree-buffer-build)
(let* ((fontify-tags (member bucket ecb-analyse-fontified-buckets))
(string-1 (typecase elem
(string elem)
(ecb--semantic-tag
(if fontify-tags
(ecb-displayed-tag-name elem)
(ecb--semantic-format-tag-uml-concise-prototype elem)))
(otherwise "foo")))
(string (concat string-1)))
(unless fontify-tags
(ecb-merge-face-into-text string ecb-analyse-bucket-element-face))
(if (ecb--semantic-tag-p elem)
(tree-node-new string nodetype
(list elem
(if (ecb--semantic-tag-with-position-p elem)
ecb-analyse-nodedata-tag-with-pos
ecb-analyse-nodedata-tag-without-pos)
nodetype)
t bucket-node nil)
(tree-node-new string nodetype
(list elem ecb-analyse-nodedata-no-tag nodetype)
t bucket-node nil)))))))))
(defun ecb-analyse-compare-node-data (left right)
"Return not nil when LEFT and RIGHT are identical node-datas."
(and (equal (nth 2 left) (nth 2 right))
(ecb-compare-methods-buffer-node-data (car left) (car right))))
(tree-buffer-defpopup-command ecb-analyse-jump-to-tag
"Jump to the definition of current tag of the analyse-buffer.
If first arg of the REST-ARG-LIST is not nil then it must be a window and then
ECB jumps to that window. If nil then `ecb-last-edit-window-with-point' is
used as window."
(let ((window (nth 0 rest-arg-list)))
(when node
(let* ((data (tree-node->data node))
(tag (nth 0 data)))
;; if we have a positioned tag we jump to it
(when (and tag (= (nth 1 data) ecb-analyse-nodedata-tag-with-pos))
;; We must highlight the tag
(tree-buffer-highlight-node-by-data/name data)
;; TODO: Klaus Berndl <klaus.berndl@sdm.de>: what about tags without
;; buffer but onlxy with start- and end-pos?!
(ecb-display-tag (ecb-source-make (ecb-buffer-file-name
(ecb-semantic-tag-buffer tag))
(ecb-semantic-tag-buffer tag))
tag
(or window (ecb-get-edit-window nil))
t nil))))))
(tree-buffer-defpopup-command ecb-analyse-complete/insert
"Complete/insert at current point the selected completion/localvar."
;; We must highlight the tag
(let* ((data (tree-node->data node))
(tag (nth 0 data))
(type (tree-node->type node)))
(when (or (= type ecb-analyse-nodetype-completions)
(= type ecb-analyse-nodetype-localvars))
(tree-buffer-highlight-node-by-data/name data)
(ecb-display-source ecb-path-selected-source nil)
(let* ((a (ecb--semantic-analyze-current-context (point)))
(bounds (if a (oref a bounds)))
(movepoint nil))
(if (null bounds)
(insert (ecb--semantic-tag-name tag))
(save-excursion
(if (and (<= (point) (cdr bounds)) (>= (point) (car bounds)))
(setq movepoint t))
(goto-char (car bounds))
(delete-region (car bounds) (cdr bounds))
(insert (ecb--semantic-tag-name tag))
(if movepoint (setq movepoint (point))))
(if movepoint
(goto-char movepoint)))))))
(defecb-tree-buffer-callback ecb-analyse-node-clicked ecb-analyse-buffer-name select nil
"Handles clicking onto any of the nodes in the analyse-buffer of ECB."
(if shift-mode
(ecb-mouse-over-analyse-node node nil nil 'force))
(let* ((data (tree-node->data node))
(tag (nth 0 data))
(type (tree-node->type node)))
;; we handle hiding the ecb-windows for ourself
(setq no-meta-hiding t)
(cond
((= type ecb-analyse-nodetype-bucket)
(tree-node-toggle-expanded node)
(tree-buffer-update node))
((= type ecb-analyse-nodetype-completions)
(ecb-analyse-complete/insert node))
((= type ecb-analyse-nodetype-localvars)
(ecb-analyse-complete/insert node))
(t
(ecb-analyse-jump-to-tag node (ecb-get-edit-window
;; `ecb-analyse-jump-to-tag' expects all
;; args beyond NODE as one list.
`(,(ecb-combine-ecb-button/edit-win-nr
ecb-button edit-window-nr))))
(when (and tag (= (nth 1 data) ecb-analyse-nodedata-tag-with-pos))
(when meta-mode
(ecb-run-with-idle-timer 0.001 nil 'ecb-hide-ecb-windows)))))))
(defecb-window-dedicator-to-ecb-buffer ecb-set-analyse-buffer ecb-analyse-buffer-name t
"Display the analyse buffer in current window and make window dedicated."
(ecb-activate-ecb-autocontrol-function ecb-analyse-buffer-sync-delay
'ecb-analyse-buffer-sync)
(switch-to-buffer ecb-analyse-buffer-name))
(defun ecb-maximize-window-analyse ()
"Maximize the ECB-analyse-window.
I.e. delete all other ECB-windows, so only one ECB-window and the
edit-window\(s) are visible \(and maybe a compile-window). Works also if the
ECB-analyse-window is not visible in current layout."
(interactive)
(ecb-maximize-ecb-buffer ecb-analyse-buffer-name t))
(defun ecb-goto-window-analyse ()
"Make the ECB-analyse window the current window."
(interactive)
(ecb-goto-ecb-window ecb-analyse-buffer-name))
(defun ecb-analyse-show-tag-info-in-temp-buffer (info-string)
"Display INFO-STRING in a temp-buffer in the edit-area."
(with-output-to-temp-buffer "*Tag Information*"
(with-current-buffer "*Tag Information*"
(insert info-string)))
;; Make it small
(shrink-window-if-larger-than-buffer
(get-buffer-window "*Tag Information*")))
;; TODO: Klaus Berndl <klaus.berndl@sdm.de>: we could use the function
;; `semantic-documentation-for-tag' here to display more infos?!
(defun ecb-analyse-gen-tag-info (tag)
"Return the info-string for TAG."
(or (and (functionp ecb-analyse-gen-tag-info-fn)
(or (funcall ecb-analyse-gen-tag-info-fn tag)
(format "No info generated by `%s'." ecb-analyse-gen-tag-info-fn)))
(concat (ecb-displayed-tag-name tag)
"\n"
(let ((typetag
(condition-case nil
(save-excursion
(ecb--semantic-analyze-tag-type tag))
(error nil))))
(if typetag
(ecb-displayed-tag-name typetag)
;; No type found by the analyzer The below used
;; to try and select the buffer from the last
;; analysis, but since we are already in the
;; correct buffer, I don't think that is needed.
(when (fboundp 'semantic-lex-keyword-p)
(let ((type (ecb--semantic-tag-type tag)))
(typecase type
(ecb--semantic-tag
(setq type (ecb--semantic-tag-name type)))
(list
(setq type (car type))))
(if (semantic-lex-keyword-p type)
(setq typetag
(semantic-lex-keyword-get type 'summary))))
(if typetag
typetag))
)))))
(tree-buffer-defpopup-command ecb-analyse-show-tag-info
"Display as much information as possible about current tag.
Show the information in a shrunk split-buffer and expand out as many details
as possible."
(let* ((data (tree-node->data node))
(tag (car data)))
(when (ecb--semantic-tag-p tag)
(save-selected-window
(select-window ecb-last-edit-window-with-point)
(funcall ecb-analyse-show-tag-info-fn (ecb-analyse-gen-tag-info tag))))))
(defun ecb-mouse-over-analyse-node (node &optional window no-message click-force)
"Displays help text if mouse moves over a node in the analyse buffer or if
CLICK-FORCE is not nil and always with regards to the settings in
`ecb-analyse-show-node-info'. NODE is the node for which help text should be
displayed, WINDOW is the related window, NO-MESSAGE defines if the help-text
should be printed here."
(let ((str (when (or click-force
(ecb-show-minibuffer-info node window
(car
ecb-analyse-show-node-info)))
(if (equal (cdr ecb-analyse-show-node-info) 'full-info)
(ecb-analyse-gen-tag-info (car (tree-node->data node)))
(tree-node->name node)))))
(prog1 str
(unless no-message
(ecb-nolog-message str)))))
(defun ecb-analyse-node-mouse-highlighted-p (node)
"Return not nil when NODE has a positioned tag as data or belongs to the
completions. This means that this node should be highlighted when mouse is
moved over it."
(or (equal ecb-analyse-nodedata-tag-with-pos
(nth 1 (tree-node->data node)))
(member (tree-node->type node)
(list ecb-analyse-nodetype-completions
ecb-analyse-nodetype-localvars))))
(defun ecb-analyse-create-menu (node)
"Return a popup-menu suitable for NODE."
(let* ((data (tree-node->data node))
(tag-p (not (equal (nth 1 data) ecb-analyse-nodedata-no-tag)))
(tag-with-pos-p (equal (nth 1 data) ecb-analyse-nodedata-tag-with-pos))
(nodetype (nth 2 data)))
(delq nil (list (if (member nodetype (list
ecb-analyse-nodetype-completions
ecb-analyse-nodetype-localvars))
'(ecb-analyse-complete/insert "Complete/insert"))
(if tag-p
'(ecb-analyse-show-tag-info "Show tag info"))
(if tag-with-pos-p
'(ecb-analyse-jump-to-tag "Jump to tag"))))))
(defun ecb-analyse-menu-creator (tree-buffer-name node)
"Creates the popup-menus for the analyse-buffer."
(setq ecb-layout-prevent-handle-ecb-window-selection t)
(let ((nodetype (tree-node->type node)))
(unless (equal nodetype ecb-analyse-nodetype-bucket)
(mapcar (function (lambda (type)
(cons type (ecb-analyse-create-menu node))))
`(,ecb-analyse-nodetype-context
,ecb-analyse-nodetype-arguments
,ecb-analyse-nodetype-completions
,ecb-analyse-nodetype-localvars
,ecb-analyse-nodetype-prefix
,ecb-analyse-nodetype-assignee
,ecb-analyse-nodetype-function
,ecb-analyse-nodetype-function-arg)))))
(defun ecb-analyse-gen-menu-title-creator ()
"Returns a menu-title-create-function for the nodetypes of the
analyse-buffer."
(mapcar (function (lambda (nodetype)
(cons nodetype
(function (lambda (node)
(tree-node->name node))))))
`(,ecb-analyse-nodetype-context
,ecb-analyse-nodetype-arguments
,ecb-analyse-nodetype-completions
,ecb-analyse-nodetype-localvars
,ecb-analyse-nodetype-prefix
,ecb-analyse-nodetype-assignee
,ecb-analyse-nodetype-function
,ecb-analyse-nodetype-function-arg)))
(defecb-tree-buffer-creator ecb-create-analyse-tree-buffer ecb-analyse-buffer-name
"Create the tree-buffer for analyse-display."
(tree-buffer-create
ecb-analyse-buffer-name
:frame ecb-frame
:mouse-action-trigger ecb-tree-mouse-action-trigger
:is-click-valid-fn 'ecb-interpret-mouse-click
:node-selected-fn 'ecb-tree-buffer-node-select-callback
:node-expanded-fn 'ecb-tree-buffer-node-expand-callback
:node-collapsed-fn 'ecb-tree-buffer-node-collapsed-callback
:node-mouse-over-fn 'ecb-mouse-over-analyse-node
:mouse-highlight-fn 'ecb-analyse-node-mouse-highlighted-p
:node-data-equal-fn 'ecb-analyse-compare-node-data
:maybe-empty-node-types nil
:leaf-node-types nil
:menu-creator 'ecb-analyse-menu-creator
:menu-titles (ecb-analyse-gen-menu-title-creator)
:modeline-menu-creator 'ecb-common-tree-buffer-modeline-menu-creator
:sticky-parent-p ecb-tree-make-parent-node-sticky
:sticky-indent-string ecb-tree-stickynode-indent-string
:sticky-parent-fn nil
:trunc-lines (ecb-member-of-symbol/value-list ecb-analyse-buffer-name
ecb-tree-truncate-lines)
:read-only t
:tree-indent ecb-tree-indent
:incr-search-p nil ;; ecb-tree-incremental-search
:incr-search-additional-pattern nil ;; ecb-methods-incr-searchpattern-node-prefix
:arrow-navigation ecb-tree-navigation-by-arrow
:hor-scroll-step ecb-tree-easy-hor-scroll
:default-images-dir (car ecb-tree-image-icons-directories)
:additional-images-dir (ecb-member-of-symbol/value-list ecb-analyse-buffer-name
(cdr ecb-tree-image-icons-directories)
'car 'cdr)
:image-file-prefix "ecb-"
:tree-style ecb-tree-buffer-style
:ascii-guide-face ecb-tree-guide-line-face
:type-facer nil
:expand-symbol-before-p ecb-tree-expand-symbol-before
:highlight-node-face ecb-analyse-face
:general-face ecb-analyse-general-face
:after-create-hook (append
(list (function (lambda ()
(ecb-common-after-tree-buffer-create-actions))))
ecb-common-tree-buffer-after-create-hook
ecb-analyse-buffer-after-create-hook)
:after-update-hook nil))
(silentcomp-provide 'ecb-analyse)
;;; ecb-anaylse.el ends here

View File

@ -0,0 +1,160 @@
;;; ecb-autogen.el --- Auto load statement generator
;; Copyright (C) 2000 - 2005 Jesper Nordenberg,
;; Klaus Berndl,
;; Kevin A. Burton,
;; Free Software Foundation, Inc.
;; Author: Jesper Nordenberg <mayhem@home.se>
;; Klaus Berndl <klaus.berndl@sdm.de>
;; Kevin A. Burton <burton@openprivacy.org>
;; Maintainer: Klaus Berndl <klaus.berndl@sdm.de>
;; Keywords: browser, code, programming, tools
;; Created: 2003
;; This program is free software; you can redistribute it and/or modify it under
;; the terms of the GNU General Public License as published by the Free Software
;; Foundation; either version 2, or (at your option) any later version.
;; This program is distributed in the hope that it will be useful, but WITHOUT
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
;; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
;; details.
;; You should have received a copy of the GNU General Public License along with
;; GNU Emacs; see the file COPYING. If not, write to the Free Software
;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
;; $Id$
;;; Commentary:
;;
;; Automatically generate autoloads for ECB
;;
;; This code is based onto semantic-autogen.el, the autoload generator of
;; semantic.
;;
;;; History
;;
;; For the ChangeLog of this file see the CVS-repository. For a complete
;; history of the ECB-package see the file NEWS.
;;; Code
;;
(require 'autoload)
(require 'ecb-util)
(eval-when-compile
(require 'silentcomp))
(when (ecb-noninteractive)
;; If the user is doing this non-interactively, we need to set up
;; these conveniences.
(add-to-list 'load-path nil)
(set (if (boundp 'find-file-hook)
'find-file-hook
'find-file-hooks) nil)
(setq find-file-suppress-same-file-warnings t)
)
(defconst ecb-autogen-header
"Auto-generated ecb autoloads"
"Header of the auto-generated autoloads file.")
(defconst ecb-autogen-file "ecb-autoloads.el"
"Name of the auto-generated autoloads file.")
(defconst ecb-autoload-feature "ecb-autoloads"
"Feature-name of the autoloads")
(defvar ecb-autogen-subdirs nil
"Sub-directories to scan for autoloads.")
(defun ecb-autogen-update-header ()
"Update header of the auto-generated autoloads file.
Run as `write-contents-hooks'."
(when (ecb-string= generated-autoload-file (buffer-file-name))
(let ((tag (format ";;; %s ---" (file-name-nondirectory
(buffer-file-name)))))
(message "Updating header...")
(goto-char (point-min))
(cond
;; Replace existing header line
((re-search-forward (concat "^" (regexp-quote tag)) nil t)
(beginning-of-line)
(kill-line 1)
)
;; Insert header before first ^L encountered (XEmacs)
((re-search-forward "^ " nil t)
(beginning-of-line)
))
(insert tag " " ecb-autogen-header)
(newline)
(message "Updating header...done")
nil ;; Say not already written.
)))
;; We code this so clumsy to silence the bytecompiler of GNU Emacs >= 21.4 not
;; to complain about obsoleteness of `write-contents-hooks'.
(defun ecb-batch-update-autoloads ()
(let ((old-val (symbol-value (if (boundp 'write-contents-functions)
'write-contents-functions
'write-contents-hooks))))
(unwind-protect
(progn
(set (if (boundp 'write-contents-functions)
'write-contents-functions
'write-contents-hooks)
'(ecb-autogen-update-header))
(batch-update-autoloads))
(set (if (boundp 'write-contents-functions)
'write-contents-functions
'write-contents-hooks)
old-val))))
(defun ecb-update-autoloads ()
"Update ecb autoloads from sources.
Autoloads file name is defined in variable `ecb-autogen-file'. If ECB is
installed as regular XEmacs-package then this function reports an error and
does nothing."
(interactive)
(if ecb-regular-xemacs-package-p
(ecb-error "Updating autoloads not possible for regular XEmacs-packages!")
(if (file-exists-p (expand-file-name ecb-autogen-file))
(delete-file (expand-file-name ecb-autogen-file)))
(when (not ecb-running-xemacs)
;; generate a new one but do this not for XEmacs because XEmacs must(!)
;; handle this itself
(with-temp-file (expand-file-name ecb-autogen-file)
(insert " ")))
(let* ((default-directory (file-name-directory (locate-library "ecb")))
(generated-autoload-file (expand-file-name ecb-autogen-file))
;; needed for XEmacs to ensure that always a feature 'ecb-autoloads
;; is provided and not a feature like 'ecb-1.91.2-autoloads (XEmacs
;; uses the installation-directory of ECB as feature prefix if
;; autoload-package-name is not provided.
(autoload-package-name "ecb")
(subdirs (mapcar 'expand-file-name ecb-autogen-subdirs))
(command-line-args-left (cons default-directory subdirs))
)
(ecb-batch-update-autoloads))
;; XEmacs adds autom. the provide statement but for GNU Emacs we must do
;; this:
(when (not ecb-running-xemacs)
(with-current-buffer (find-file-noselect (expand-file-name ecb-autogen-file))
(goto-char (point-min))
(when (not (re-search-forward (format "^(provide '%s)"
ecb-autoload-feature) nil t))
(goto-char (point-max))
(insert (format "\n(provide '%s)\n" ecb-autoload-feature))
(save-buffer)
(kill-buffer (current-buffer)))))))
(silentcomp-provide 'ecb-autogen)
;;; ecb-autogen.el ends here

View File

@ -0,0 +1,115 @@
;;; ecb-buffertab.el ---
;; $Id$
;; Copyright (C) 2000-2003 Free Software Foundation, Inc.
;; Copyright (C) 2000-2003 Kevin A. Burton (burton@openprivacy.org)
;; Author: Kevin A. Burton (burton@openprivacy.org)
;; Maintainer: Kevin A. Burton (burton@openprivacy.org)
;; Location: http://relativity.yi.org
;; Keywords:
;; Version: 1.0.0
;; This file is [not yet] part of GNU Emacs.
;; This program is free software; you can redistribute it and/or modify it under
;; the terms of the GNU General Public License as published by the Free Software
;; Foundation; either version 2 of the License, or any later version.
;;
;; This program is distributed in the hope that it will be useful, but WITHOUT
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
;; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
;; details.
;;
;; You should have received a copy of the GNU General Public License along with
;; this program; if not, write to the Free Software Foundation, Inc., 59 Temple
;; Place - Suite 330, Boston, MA 02111-1307, USA.
;;; Commentary:
;; NOTE: If you enjoy this software, please consider a donation to the EFF
;; (http://www.eff.org)
;;; Code:
;;; TODO: make sure we don't do this TOO many times.
;;
;; - we need to define a property with 'local-map set correctly.
;;
;; - write a function that generates a popup menu
;;
;; - the popup menu should allow the user to check a buffer view to set it as
;; the default when opening new files.
;;
;; - is this possible? I think it might but I would need to set it up
;; correctly.
(eval-when-compile
(require 'silentcomp))
(require 'ecb-compilation)
(defface ecb-buffertab-primary-face '((t (:bold t :foreground "black")))
"Face used to highlight the annotation lines to the left of the annotate buffer."
:group 'ecb)
(defface ecb-buffertab-secondary-face '((t (:bold nil :foreground "black")))
"Face used to highlight the annotation lines to the left of the annotate buffer."
:group 'ecb)
(defface ecb-buffertab-secondary-mouse-face '((t (:bold nil :foreground "black" :italic t)))
"Face used to highlight the annotation lines to the left of the annotate buffer."
:group 'ecb)
(defcustom ecb-buffertab-map (let ((map (make-sparse-keymap)))
(define-key map [header-line down-mouse-2] 'ecb-buffertab-popup-menu)
map)
"Key map used for buffertab navigation"
:group 'ecb)
(defun ecb-buffertab-popup-menu()
"Popup a menu for selecting an ECB buffer."
(interactive)
(let((menu (ecb-buffertab-make-menu "Compilation Buffers")))
(popup-menu menu)))
(defun ecb-buffertab-make-menu(name)
"Make a menu for use on the buffertab."
(let((menu (list 'keymap name)))
(dolist(entry (ecb-compilation-get-buffers))
(add-to-list 'menu (cons (list (car entry) (car entry))
'switch-to-buffer)) t)
(pp menu)
menu))
(defun ecb-buffertab-setup-header()
""
(interactive)
(let((ecb-prefix " ECB: " ))
(with-current-buffer (get-buffer ecb-speedbar-buffer-name)
;;FIXME: figure out what modeline tab to use
(setq header-line-format (concat ecb-prefix "/ " (buffer-name)" "))
(add-text-properties 0 (length ecb-prefix)
(list 'face 'ecb-buffertab-primary-face)
header-line-format)
(add-text-properties (1+ (length ecb-prefix)) (length header-line-format)
(list 'face 'ecb-buffertab-secondary-face
'mouse-face 'ecb-buffertab-secondary-mouse-face
'local-map 'ecb-buffertab-map)
header-line-format))))
(silentcomp-provide 'ecb-buffertab)
;;; ecb-buffertab.el ends here

View File

@ -0,0 +1,368 @@
;;; ecb-cedet-wrapper.el -- define wrappers for all cedet funcs/vars
;; Copyright (C) 2000 - 2009 Klaus Berndl,
;; Free Software Foundation, Inc.
;; Author: Klaus Berndl <klaus.berndl@sdm.de>
;; Maintainer: Klaus Berndl <klaus.berndl@sdm.de>
;; Keywords: browser, code, programming, tools
;; Created: 2009
;; This program is free software; you can redistribute it and/or modify it under
;; the terms of the GNU General Public License as published by the Free Software
;; Foundation; either version 2, or (at your option) any later version.
;; This program is distributed in the hope that it will be useful, but WITHOUT
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
;; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
;; details.
;; You should have received a copy of the GNU General Public License along with
;; GNU Emacs; see the file COPYING. If not, write to the Free Software
;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
;; $Id$
;;; Commentary:
;; This file contains wrappers for every cedet-function and -variable used
;; by ECB independent which cedet version is used. So the ECB-code is
;; independent from the fact, if cedet offers backward-compatibility or
;; not. This library offers for each used variable V of cedet a getter-function
;; named "ecb--V" and for each function F an alias named "ecb--F". V and F
;; follow the naming conventiones of cedet 1.0 but the resulting functions
;; always point to the correct variable or function of cedet independent
;; which cedet version is loaded. ECB only uses the functions exported from
;; ecb-cedet-wrapper.el!
;;
;; In addition this file defines all requirements ECB needs of CEDET.
(eval-when-compile
(require 'silentcomp))
(eval-when-compile
;; to avoid compiler grips
(require 'cl))
(require 'ecb-util)
(defconst ecb-cedet-old-sourcetree-structure-detected-p
(locate-library "semantic-ctxt")
"Not nil if old cedet sourcetree-structure is detected.")
;; Additonal cedet libraries needed by ecb must be added here!!
;; TODO: Klaus Berndl <klaus.berndl@sdm.de>: We have to pay attention if there
;; are changes when Eric marriages the two styles for his CVS-repository
(defconst ecb-cedet-lib-registry '((cedet . cedet)
(semantic . semantic)
(semantic-ctxt . semantic/ctxt)
(semantic-analyze . semantic/analyze)
(semanticdb . semantic/db)
(semanticdb-find . semantic/db-find)
(semanticdb-mode . semantic/db-mode)
(semantic-el . semantic/bovine/el)
(eieio . eieio)
(speedbar . speedbar))
"Maps the old library-structure of cedet to the equivalent libs
of Emacs >= 23.2. The value is an assoc list where the car is the
lib-symbol of an old-style cedet-library and the cdr is the
corresponding lib-symbol of the new style library \(as with the
cedet-suite integrated into Emacs >= 23.2).
ALL CEDET-LIBRARIES NEEDED BY ECB MUST BE REGISTERED HERE!")
(defconst ecb-cedet-required-version-min '(1 0 2 6)
"Minimum version of cedet needed by ECB.
The meaning is as follows:
1. Major-version
2. Minor-version
3. 0 = alpha, 1 = beta, 2 = pre, 3 = nothing \(e.g. \"1.4\"), 4 = . \(e.g. \"1.4.3\"
4. Subversion after the alpha, beta, pre or .")
(defconst ecb-cedet-required-version-max '(10 0 0 0)
"Maximum version of CEDET currently accepted by ECB.
See `ecb-required-cedet-version-min' for an explanation.")
(defun ecb-cedet-missing-libs ()
"Return a list of names of missing cedet-libs.
If no cedet libs are missing nil is returned."
(let ((missing-libs-list nil)
(lib nil))
(dolist (l-elem ecb-cedet-lib-registry)
(setq lib (symbol-name (if ecb-cedet-old-sourcetree-structure-detected-p
(car l-elem)
(cdr l-elem))))
(when (not (locate-library lib))
(push lib missing-libs-list)))
missing-libs-list))
(defun ecb-cedet-require (old-style-lib)
"Loads a cedet-library CVS-LIB into Emacs.
OLD-STYLE-LIB is the symbol-name of the cedet-library as in the cvs-version of
cedet in feb 2010 \(ie. there is a lib semantic-ctxt instead of semantic/ctxt).
All cedet libaryies needed by ECB must be loaded with this function! Do not
use `require' for looading a cedet-library into Emacs!"
(require (if ecb-cedet-old-sourcetree-structure-detected-p
old-style-lib
(cdr (assoc old-style-lib ecb-cedet-lib-registry)))))
;; With old style CEDET-load-mechanism cedet.el must be loaded "by
;; hand" to setup load-path correctly for cedet.
;; + Old-style CEDET-loader: The following require for 'cedet fails if
;; cedet.el is either not loaded or cedet/common is not contained in the
;; load-path. For these cases we encapsulate it with ignore-errors.
;; + New-style CEDET-loader (as in Emacs >= 23.2): cedet.el is not needed to
;; setup the load-path but it contains the costant `cedet-version' which is
;; needed by ECB.
(ignore-errors (ecb-cedet-require 'cedet))
(defconst ecb-cedet-missing-libraries
(ecb-cedet-missing-libs)
"List of library-names of CEDET missed by ECB.
Nil if all libs needed by ECB are found.")
(unless ecb-cedet-missing-libraries
(ecb-cedet-require 'semantic)
(ecb-cedet-require 'semantic-ctxt)
(ecb-cedet-require 'semantic-analyze)
(ecb-cedet-require 'semanticdb)
(ecb-cedet-require 'semanticdb-find)
(ecb-cedet-require 'semanticdb-mode)
(ecb-cedet-require 'eieio))
(defconst ecb-compiled-in-semantic-version
(eval-when-compile (ignore-errors semantic-version))
"Semantic-version used for byte-compiling ECB. Either nil when no semantic
is loaded or the value of `semantic-version' at ECB-compilation time.")
(defconst ecb-compiled-in-cedet-version
(eval-when-compile (ignore-errors cedet-version))
"Cedet-version used for byte-compiling ECB. Either nil when no semantic
is loaded or the value of `cedet-version' at ECB-compilation time.")
(defun ecb-check-semantic-load ()
"Checks if cedet is correctly loaded if semantic 2.X is used and if the same
semantic-version has been used for byte-compiling ECB and loading into Emacs.
If ECB detects a problem it is reported and then an error is thrown."
(when (boundp 'semantic-version)
(let ((err-msg
(cond ;; Different semantic-version used for byte-compiling ECB and
;; loading into Emacs.
((not (string= semantic-version ecb-compiled-in-semantic-version))
(concat "ECB has been byte-compiled with another semantic-version than currently\n"
"loaded into Emacs:\n"
(format " + Semantic used for byte-compiling ECB: %s\n"
ecb-compiled-in-semantic-version)
(format " + Semantic currently loaded into Emacs: %s\n"
semantic-version)
"Please ensure that ECB is byte-compiled with the same semantic-version as you\n"
"you load into your Emacs. Check if you have byte-compiled ECB with the cedet-\n"
"suite but loaded old semantic 1.X into Emacs or vice versa.\n\n"
"In general it is recommended to start ECB first-time not byte-compiled\n"
"and then call the command `ecb-byte-compile'. This ensures you byte-compile ECB\n"
"with the same library-versions \(semantic etc.) as you load into Emacs.\n"
"If you use the Makefile check the variables CEDET before compiling!\n"
))
(t ""))))
(unless (= 0 (length err-msg))
(with-output-to-temp-buffer "*ECB semantic-load problems*"
(princ "Currently ECB can not be activated cause of the following reason:\n\n")
(princ err-msg)
(princ "\n\nPlease fix the reported problem and restart Emacs\n"))
(ecb-error "Please fix the reported problem and restart Emacs!")))))
(defun ecb-check-cedet-load ()
"Checks if cedet is correctly loaded if semantic 2.X is used and if the same
semantic-version has been used for byte-compiling ECB and loading into Emacs.
If ECB detects a problem it is reported and then an error is thrown."
(when (boundp 'cedet-version)
(let ((err-msg
(cond ;; cedet was not compiled into ECB
((null ecb-compiled-in-cedet-version)
(concat (format "Currently CEDET %s is loaded but ECB has been byte-compiled without\n"
cedet-version)
"any CEDET. Please either use ECB un-byte-compiled \(remove all *.elc\n"
"files from the ECB-directory) or byte-compile ECB correctly with CEDET!\n"
"In the later case it is recommended to start ECB first-time not byte-compiled\n"
"and then call the command `ecb-byte-compile'. This ensures you byte-compile ECB\n"
"with the same CEDET-library-version as you load into Emacs.\n"
"If you use the Makefile check the variable CEDET before compiling!\n"
))
;; Different cedet-version used for byte-compiling ECB and
;; loading into Emacs.
((not (string= cedet-version ecb-compiled-in-cedet-version))
(concat "ECB has been byte-compiled with another cedet-version than currently\n"
"loaded into Emacs:\n"
(format " + CECET used for byte-compiling ECB: %s\n"
ecb-compiled-in-cedet-version)
(format " + CEDET currently loaded into Emacs: %s\n"
cedet-version)
"Please ensure that ECB is byte-compiled with the same cedet-version as you\n"
"you load into your Emacs.\n\n"
"In general it is recommended to start ECB first-time not byte-compiled\n"
"and then call the command `ecb-byte-compile'. This ensures you byte-compile ECB\n"
"with the same CEDET-library-version as you load into Emacs.\n"
"If you use the Makefile check the variable CEDET before compiling!\n"))
(t ""))))
(unless (= 0 (length err-msg))
(with-output-to-temp-buffer "*ECB cedet-load problems*"
(princ "Currently ECB can not be activated cause of the following reason:\n\n")
(princ err-msg)
(princ "\n\nPlease fix the reported problem and restart Emacs\n"))
(ecb-error "Please fix the reported problem and restart Emacs!")))))
(defconst ecb-semantic-2-loaded (ignore-errors
(string-match "^2" semantic-version)))
;; -- getter functions for all variables of cedet currently used by ECB ---
(defsubst ecb--semantic-symbol->name-assoc-list ()
"Return the value of `semantic-symbol->name-assoc-list'."
(symbol-value 'semantic-symbol->name-assoc-list))
(defsubst ecb--semantic-symbol->name-assoc-list-for-type-parts ()
"Return the value of `semantic-symbol->name-assoc-list-for-type-parts'."
(symbol-value 'semantic-symbol->name-assoc-list-for-type-parts))
(defsubst ecb--semantic-format-tag-functions ()
"Return value of `semantic-format-tag-functions'."
(symbol-value 'semantic-format-tag-functions))
(defsubst ecb--semantic-orphaned-member-metaparent-type ()
"Return the value of `semantic-orphaned-member-metaparent-type'."
(symbol-value 'semantic-orphaned-member-metaparent-type))
(defsubst ecb--semantic-uml-colon-string ()
"Return the value of `semantic-uml-colon-string'."
(symbol-value 'semantic-uml-colon-string))
(defsubst ecb--semantic-format-face-alist ()
"Return the value of `semantic-format-face-alist'."
(symbol-value 'semantic-format-face-alist))
(defsubst ecb--semantic-after-toplevel-cache-change-hook ()
"Return the hook-symbol `semantic-after-toplevel-cache-change-hook'."
'semantic-after-toplevel-cache-change-hook)
(defsubst ecb--semantic-after-partial-cache-change-hook ()
"Return the hook-symbol `semantic-after-partial-cache-change-hook'."
'semantic-after-partial-cache-change-hook)
(defsubst ecb--semantic--before-fetch-tags-hook ()
"Return the hook-symbol `semantic--before-fetch-tags-hook'."
'semantic--before-fetch-tags-hook)
(defsubst ecb--ezimage-use-images ()
(if (boundp 'ezimage-use-images)
ezimage-use-images))
(defsubst ecb--semantic-format-use-images-flag ()
(if (boundp 'semantic-format-use-images-flag)
semantic-format-use-images-flag))
;; -- an alias for all functions of cedet currently used by ECB ---
;; (delq nil (mapcar (function (lambda (f)
;; (if (not (fboundp f))
;; f)))
;; ecb--cedet-function-list))
(defconst ecb--cedet-function-list
'(
semantic--format-colorize-text
semantic--tag-get-property
semantic--tag-overlay-cdr
semantic--tag-put-property
semantic--tag-set-overlay
semantic-active-p
semantic-adopt-external-members
semantic-analyze-current-context
semantic-analyze-find-tag
semantic-analyze-possible-completions
semantic-analyze-tag-type
semantic-brute-find-first-tag-by-name
semantic-bucketize
semantic-c-template-string
semantic-calculate-scope
semantic-clear-toplevel-cache
semantic-current-tag
semantic-current-tag-parent
semantic-dependency-tag-file
semantic-documentation-for-tag
semantic-equivalent-tag-p
semantic-fetch-available-tags
semantic-fetch-tags
semantic-find-tag-by-overlay
semantic-find-tags-by-class
semantic-find-tags-by-name
semantic-flatten-tags-table
semantic-get-local-arguments
semantic-go-to-tag
semantic-lex-token-start
semantic-overlay-live-p
semantic-overlay-p
semantic-something-to-tag-table
semantic-tag
semantic-tag-abstract-p
semantic-tag-bounds
semantic-tag-buffer
semantic-tag-calculate-parent
semantic-tag-children-compatibility
semantic-tag-class
semantic-tag-components
semantic-tag-components-with-overlays
semantic-tag-end
semantic-tag-faux-p
semantic-tag-function-arguments
semantic-tag-function-constructor-p
semantic-tag-function-destructor-p
semantic-tag-function-parent
semantic-tag-get-attribute
semantic-tag-name
semantic-tag-named-parent
semantic-tag-new-variable
semantic-tag-overlay
semantic-tag-p
semantic-tag-protection
semantic-tag-prototype-p
semantic-tag-start
semantic-tag-static-p
semantic-tag-type
semantic-tag-type-interfaces
semantic-tag-type-members
semantic-tag-type-superclasses
semantic-tag-with-position-p
semanticdb-brute-deep-find-tags-by-name
semanticdb-deep-find-tags-by-name
semanticdb-find-result-length
semanticdb-find-result-nth
semanticdb-find-tags-by-name
semanticdb-full-filename
semanticdb-minor-mode-p
semanticdb-strip-find-results
)
)
(defconst ecb--semantic-format-function-list
'(
semantic-format-tag-abbreviate
semantic-format-tag-concise-prototype
semantic-format-tag-name
semantic-format-tag-prin1
semantic-format-tag-prototype
semantic-format-tag-summarize
semantic-format-tag-uml-abbreviate
semantic-format-tag-uml-concise-prototype
semantic-format-tag-uml-prototype
))
;; new let us create the aliase. Each alias has the name "ecb--"<function of
;; cedet >= 1.0
(unless ecb-cedet-missing-libraries
(dolist (f-elem (append ecb--cedet-function-list ecb--semantic-format-function-list))
(defalias (intern (concat "ecb--" (symbol-name f-elem))) f-elem)))
(silentcomp-provide 'ecb-cedet-wrapper)
;;; ecb-cedet-wrapper.el end here

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,369 @@
;;; ecb-compatibility.el --- ECB-compatibility for other packages
;; Copyright (C) 2000 - 2005 Jesper Nordenberg,
;; Klaus Berndl,
;; Kevin A. Burton,
;; Free Software Foundation, Inc.
;; Author: Klaus Berndl <klaus.berndl@sdm.de>
;; Maintainer: Klaus Berndl <klaus.berndl@sdm.de>
;; Keywords: browser, code, programming, tools
;; Created: 2004
;; This program is free software; you can redistribute it and/or modify it under
;; the terms of the GNU General Public License as published by the Free Software
;; Foundation; either version 2, or (at your option) any later version.
;; This program is distributed in the hope that it will be useful, but WITHOUT
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
;; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
;; details.
;; You should have received a copy of the GNU General Public License along with
;; GNU Emacs; see the file COPYING. If not, write to the Free Software
;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
;; $Id$
;;; Commentary:
;;
;; Contains compatibility-code for other-packages.
;;
;; Whenever commands of other packages are not fully compatible with ECB then
;; this library should contain the necessary code to make it fully compatible
;; - or at least working acceptable.
;;
;; This file is part of the ECB package which can be found at:
;; http://ecb.sourceforge.net
(eval-when-compile
(require 'silentcomp))
(require 'ecb-util)
(require 'ecb-common-browser)
(require 'ecb-layout)
;; To add compatibilty code for packages just do:
;;
;; 1. Add the needed advice(s) to `ecb-compatibility-advices'
;; 2. Add the advice-code below.
;;
;; All advices of `ecb-compatibility-advices' will be autom. enabled when ECB
;; starts and autom. disabled when ECB shuts down. No advice is enabled just
;; by loading the ECB-library!
(defecb-advice-set ecb-compatibility-advices
"Contains all advices needed for package-compatibility.")
;; package bs.el ----------------------------------------------------------
(defecb-advice bs-show before ecb-compatibility-advices
"Ensures `bs-show' works well when called from another window as an
edit-window. Does nothing if called in another frame as the `ecb-frame'."
(when (equal (selected-frame) ecb-frame)
(unless (ecb-point-in-edit-window-number)
(ecb-select-edit-window))
;; now we handle if bs-show should always display in the compile-window
(let ((my-bs-buffer (get-buffer-create "*buffer-selection*")))
;; ecb-compilation-buffer-p needs a living buffer!
(when (and (ecb-compilation-buffer-p my-bs-buffer)
ecb-compile-window-height)
(display-buffer (buffer-name my-bs-buffer))))))
;; package electric.el ------------------------------------------------------
(defecb-advice one-window-p around ecb-always-disabled-advices
"If called for the `ecb-frame' it only returns not nil if there is exactly
one edit-window. Neither the ecb-windows nor the compile-window nor the
minibuffer-window are considered. This adviced version of `one-window-p' is
not for direct usage therefore it's added to `ecb-always-disabled-advices' and
therefore it's always disabled\; use the macro `ecb-with-ecb-advice' instead
if you need this adviced version of `one-window-p'!"
(if (and ecb-minor-mode
(equal (selected-frame) ecb-frame))
(setq ad-return-value
(= (length (ecb-canonical-edit-windows-list)) 1))
ad-do-it))
(defecb-advice Electric-pop-up-window around ecb-compatibility-advices
"Ensures that the electric-* commands \(e.g. `electric-buffer-list') work
well with ECB. If BUFFER is a \"compilation-buffer\" in the sense of
`ecb-compilation-buffer-p' then BUFFER will be displayed in the compile-window
of ECB - if there is any. If the compile-window is temporally hidden then the
BUFFER is displayed in an edit-window!"
(if (and ecb-minor-mode
(equal (selected-frame) ecb-frame))
(if (and (ecb-compilation-buffer-p (ad-get-arg 0))
(equal (ecb-compile-window-state) 'visible))
(pop-to-buffer (ad-get-arg 0))
(let ((ecb-compilation-buffer-names nil)
(ecb-compilation-major-modes nil)
(ecb-compilation-predicates nil))
(ecb-with-ecb-advice 'one-window-p 'around
ad-do-it)))
ad-do-it))
(defecb-advice electric-command-history before ecb-compatibility-advices
"Ensures that the electric-* commands work well with ECB."
(when (and ecb-minor-mode
(equal (selected-frame) ecb-frame)
(ecb-point-in-dedicated-special-buffer))
(ecb-select-edit-window)))
(defecb-advice electric-buffer-list before ecb-compatibility-advices
"Ensures that the electric-* commands work well with ECB."
(when (and ecb-minor-mode
(equal (selected-frame) ecb-frame)
(ecb-point-in-dedicated-special-buffer))
(ecb-select-edit-window)))
(defecb-advice electric-buffer-list after ecb-compatibility-advices
"Ensures that the electric-* commands work well with ECB."
(when (and ecb-minor-mode
(equal (selected-frame) ecb-frame))
(if (ecb-buffer-obj "*Buffer List*")
(bury-buffer (ecb-buffer-obj "*Buffer List*")))))
;; package master.el (only Emacs >= 22.X) ------------------------------------
;; The adviced version of switch-to-buffer-other-window can redraw the layout
;; (e.g. if the buffer in the compile-window is the slave and the
;; compile-window has been made visible), so <window> in the code below can be
;; a destroyed window-object! we have to prevent from this (e.g. by selecting
;; the window before by number).
(when-ecb-running-emacs
(defecb-advice master-says around ecb-compatibility-advices
"Makes the function compatible with ECB."
(if (or (not ecb-minor-mode)
(not (equal (selected-frame) ecb-frame)))
(ecb-with-original-basic-functions ad-do-it)
(if (null (buffer-live-p (ecb-buffer-obj master-of)))
(error "Slave buffer has disappeared")
(let ((window (selected-window))
(point-loc (ecb-where-is-point))
(p (point)))
(if (not (eq (window-buffer window) (ecb-buffer-obj master-of)))
(switch-to-buffer-other-window master-of))
(if (ad-get-arg 0)
(condition-case nil
(apply (ad-get-arg 0) (ad-get-arg 1))
(error nil)))
(select-window (case (car point-loc)
(ecb
(ecb-get-ecb-window-by-number (cdr point-loc)))
(edit
(ecb-get-edit-window-by-number (cdr point-loc)))
(compile
ecb-compile-window)
(minibuf
(minibuffer-window ecb-frame))
(other-dedicated
(ecb-get-window-by-number (cdr point-loc)))))
(goto-char (point))))))
)
;; package scroll-all.el --------------------------------------------------
(defecb-advice scroll-all-function-all around ecb-compatibility-advices
"Make it compatible with ECB."
(if (or (not ecb-minor-mode)
(not (equal (selected-frame) ecb-frame)))
(ecb-with-original-basic-functions ad-do-it)
(let (;; This runs the `other-window'-calls in the body in the right mode
(ecb-other-window-behavior 'only-edit))
;; return the current number of edit-windows if point is in an edit-window
;; and always return 1 if point is not in an edit-window.
(flet ((count-windows (&optional minibuf)
(if (ecb-point-in-edit-window-number)
(length (ecb-canonical-edit-windows-list))
1)))
ad-do-it))))
;; package tmm.el --------------------------------------------------------
;; Klaus Berndl <klaus.berndl@sdm.de>: We can not use our
;; Electric-pop-up-window advice instaed of this advice because otherwise
;; some commands of the popup-menus of the ecb-buffers would not work - this
;; comes from the save-window-excursion in the the tmm.
(when-ecb-running-emacs
(defecb-advice tmm-prompt around ecb-compatibility-advices
"Make it compatible with ECB."
(if (or (not ecb-minor-mode)
(not (equal (selected-frame) ecb-frame)))
(ecb-with-original-basic-functions ad-do-it)
;; we set temporally `ecb-other-window-behavior' to a function which
;; always selects the "next" window after the
;; `ecb-last-edit-window-with-point'
(let ((ecb-other-window-behavior
(lambda (win-list edit-win-list ecb-win-list comp-win
mini-win point-loc nth-win)
(ecb-next-listelem edit-win-list
ecb-last-edit-window-with-point)))
;; we must not handle the tmm-stuff as compilation-buffer
(ecb-compilation-buffer-names nil)
(ecb-compilation-major-modes nil)
(ecb-compilation-predicates nil))
ad-do-it)))
)
;; ediff-stuff ---------------------------------------------------------------
(silentcomp-defun ediff-cleanup-mess)
(silentcomp-defvar ediff-quit-hook)
;; (defecb-advice ediff-setup-windows around ecb-compatibility-advices
;; "Ediff can manage all its windows with deactivated ECB-advices.
;; This is possible because we have in the setup-hook cleared the whole ecb-frame."
;; (if (and (boundp 'ecb-minor-mode)
;; ecb-minor-mode
;; (eq (selected-frame) ecb-frame))
;; (ecb-with-original-basic-functions
;; ad-do-it)
;; ad-do-it))
(defvar ecb-before-ediff-window-config nil)
;; We must not add this function to `ediff-before-setup-windows-hook' because
;; this hook is called very often - see docu. The hook
;; `ediff-before-setup-hook' is called only once - so it can be used to store
;; window-configs!
(defun ecb-ediff-before-setup-hook ()
"Special ecb-setup before starting ediff."
(if (and ecb-minor-mode
(equal (selected-frame) ecb-frame))
(progn
(setq ecb-before-ediff-window-config (ecb-current-window-configuration))
(if ecb-run-ediff-in-ecb-frame
;; !!!! we must delete all ECB-windows and the compile-window so
;; ediff can manage the whole ecb-frame concerning its windows!
;; This is the reason why we can advice `ediff-setup-windows' so
;; it runs with all original layout basic functions (especially
;; delete-other-window is necessary!)
(progn
(ecb-toggle-ecb-windows -1)
(ecb-toggle-compile-window -1))
(if (not (ecb-windows-all-hidden))
(delete-other-windows (car (ecb-canonical-edit-windows-list))))))
(setq ecb-before-ediff-window-config nil)))
;; TODO: Klaus Berndl <klaus.berndl@sdm.de>: Should we add this function to
;; `ediff-suspend-hook' too?! We should add something but this functions is
;; not perfectly....in general suspending ediff need some work here...
(defun ecb-ediff-quit-hook ()
"Added to the end of `ediff-quit-hook' during ECB is activated. It
does all necessary after finishing ediff."
(when ecb-minor-mode
(if (and (not (equal (selected-frame) ecb-frame))
(y-or-n-p
"Ediff finished. Do you want to delete the extra ediff-frame? "))
(delete-frame (selected-frame) t))
(select-frame ecb-frame)
(when ecb-before-ediff-window-config
(ecb-set-window-configuration ecb-before-ediff-window-config)
(setq ecb-before-ediff-window-config nil))))
(defun ecb-activate-ediff-compatibility ()
(if (boundp 'ediff-quit-hook)
(put 'ediff-quit-hook 'ecb-ediff-quit-hook-value
ediff-quit-hook))
(add-hook 'ediff-quit-hook 'ediff-cleanup-mess)
(add-hook 'ediff-quit-hook 'ecb-ediff-quit-hook t)
;; TODO: Klaus Berndl <klaus.berndl@sdm.de>: suspending ediff and
;; especially reactivating does currently not really work well...
;; (add-hook 'ediff-suspend-hook 'ecb-ediff-quit-hook t)
(add-hook 'ediff-before-setup-hook
'ecb-ediff-before-setup-hook))
(defun ecb-deactivate-ediff-compatibility ()
(if (get 'ediff-quit-hook 'ecb-ediff-quit-hook-value)
(setq ediff-quit-hook (get 'ediff-quit-hook
'ecb-ediff-quit-hook-value))
(remove-hook 'ediff-quit-hook 'ecb-ediff-quit-hook))
(remove-hook 'ediff-before-setup-hook
'ecb-ediff-before-setup-hook))
;; view-stuff --------------------------------------------------------------------
;; The code of the view-package of GNU Emacs has to be advices when the
;; view-buffer is displayed in the compile-window of ECB.
;; The much simpler view-mechanism of XEmacs (view-less.el) should work out of
;; the box.
;; TODO: Klaus Berndl <klaus.berndl@sdm.de>: for Emacs 22 we need also a
;; workaround when no compile-window is active because the return-to-alist
;; stuff in Emacs 22 is not really smart and does not work with layout like
;; ECB - with Emacs 23 it works perfectly without a compile-window.
;; In Emacs 22 the return-to-alist contains in case of a window-layout with
;; more than two windows quit-window which switches the buffer after quiting
;; (which is not what we want); with deactivated ECB and more than 2 windows
;; the same dump behavior - but unfortunatelly ECB contains always more than
;; two windows (at least in by far most cases), so current view-mode-exit
;; stuff wil not work with Emacs 22 and ECB ==> we simplify the logic in the
;; following case:
;; - Emacs 22 is running and
;; - there is no compile-window:
;; - current buffer is in view-mode
;; then we just delete the current-window (for which view-mode-exit is called)
;; and select ecb-last-edit-window-with-point (hmm, is this possible - this
;; one will be the deleted one...how to go back to that window we have to go
;; back??
(when-ecb-running-emacs
(defecb-advice view-mode-exit around ecb-compatibility-advices
"Makes view-mode compatible with ECB.
If there is no compile-window \(i.e. the buffer with view-mode is not
displayed in the special compile-window of ECB) then nothing special is done
but the original `view-mode-exit' is performed.
If the view-buffer is displayed in the compile-window \(i.e. this function is
called from within the compile-window) then the whole window-management stuff
of view-mode is disabled only `view-no-disable-on-exit' is taken into acount.
The compile-window will be shrinked down with
`ecb-toggle-compile-window-height' and the last edit-window with point will be
selected afterwards."
(if (and (boundp 'ecb-minor-mode)
ecb-minor-mode
(eq (selected-frame) ecb-frame)
(eq (selected-window) ecb-compile-window))
(when view-mode
(or view-no-disable-on-exit
(view-mode-disable))
;; (when (ad-get-arg 1) ;; = exit-action
;; (setq view-exit-action nil)
;; (funcall (ad-get-arg 1) (current-buffer)))
(force-mode-line-update)
(ecb-toggle-compile-window-height -1)
(select-window ecb-last-edit-window-with-point))
ad-do-it))
)
;; not yet done ----------------------------------------------------------------
;; TODO: Klaus Berndl <klaus.berndl@sdm.de>:
;; *** The new package gdb-ui.el provides an enhanced graphical interface to
;; GDB. You can interact with GDB through the GUD buffer in the usual way, but
;; there are also further buffers which control the execution and describe the
;; state of your program. It separates the input/output of your program from
;; that of GDB and watches expressions in the speedbar. It also uses features
;; of Emacs 21 such as the display margin for breakpoints, and the toolbar.
;; This is new in Emacs 21.4 so maybe we have to make it compatible with ECB!
;; But maybe this could be hard because AFAIK gdb-ui.el uses dedicated
;; windows!
;; we disable the advices at load-time
(ecb-disable-advices 'ecb-compatibility-advices t)
(silentcomp-provide 'ecb-compatibility)
;;; ecb-compatibility.el ends here

View File

@ -0,0 +1,312 @@
;;; ecb-compilation.el --- code for buffers displayed in compile-window
;; Copyright (C) 2000 - 2005 Jesper Nordenberg,
;; Klaus Berndl,
;; Kevin A. Burton,
;; Free Software Foundation, Inc.
;; Author: Jesper Nordenberg <mayhem@home.se>
;; Klaus Berndl <klaus.berndl@sdm.de>
;; Kevin A. Burton <burton@openprivacy.org>
;; Maintainer: Klaus Berndl <klaus.berndl@sdm.de>
;; Keywords: browser, code, programming, tools
;; Created: 2001
;; This program is free software; you can redistribute it and/or modify it under
;; the terms of the GNU General Public License as published by the Free Software
;; Foundation; either version 2, or (at your option) any later version.
;; This program is distributed in the hope that it will be useful, but WITHOUT
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
;; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
;; details.
;; You should have received a copy of the GNU General Public License along with
;; GNU Emacs; see the file COPYING. If not, write to the Free Software
;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
;; $Id$
;;; Commentary:
;; NOTE: If you enjoy this software, please consider a donation to the EFF
;; (http://www.eff.org)
;;; History
;;
;; For the ChangeLog of this file see the CVS-repository. For a complete
;; history of the ECB-package see the file NEWS.
;;; Code:
(eval-when-compile
(require 'silentcomp))
(silentcomp-defun comint-check-proc)
(require 'ecb-util)
(defcustom ecb-compilation-buffer-names `(("*Calculator*" . nil)
("*vc*" . nil)
("*vc-diff*" . nil)
,(if ecb-running-xemacs
'("\\*Apropos.*\\*" . t)
'("*Apropos*" . nil))
("*Occur*" . nil)
("*shell*" . nil)
("\\*[cC]ompilation.*\\*" . t)
("\\*i?grep.*\\*" . t)
("*JDEE Compile Server*" . nil)
,(if ecb-running-xemacs
'("\\*Help.*\\*" . t)
'("*Help*" . nil))
("*Completions*" . nil)
("*Backtrace*" . nil)
("*Compile-log*" . nil)
("*bsh*" . nil)
(,(if ecb-running-xemacs
" *Message-Log*"
"*Messages*") . nil))
"*Additional buffer names that should be displayed in the compile-window.
Buffer names can either be defined as strings or as regexps. If the
buffer-name of a buffer matches one of the defined string or regexp then it
will be displayed in the compile-window of ECB even if `compilation-buffer-p'
says nil for this buffer.
It is not recommended to add the name of eshell-buffers to this list because
ECB already handles the eshell-integration as best as possible.
See also the options `ecb-compilation-major-modes' and
`ecb-compilation-predicates'."
:group 'ecb-compilation
:group 'ecb-most-important
:type '(repeat (cons (string :tag "Buffer name")
(boolean :tag "Handled as regexp"))))
(defvar ecb-compilation-buffer-names-internal nil
"This variable is for ECB internal use and can be used by ECB to add
buffer-names to the set specified in `ecb-compilation-buffer-names'. Type is
the same as of option `ecb-compilation-buffer-names'")
(defun ecb-compilation-buffer-names ()
"Return the set of buffer names which should be displayed in the
compile-window of ECB. This is a list combined of
`ecb-compilation-buffer-names' and `ecb-compilation-buffer-names-internal'."
(append ecb-compilation-buffer-names
ecb-compilation-buffer-names-internal))
(defun ecb-compilation-registered-buffer-p (name)
"Check if name belongs to the set of buffers returned by
`ecb-compilation-buffer-names'. If yes returns NAME."
(catch 'exit
(dolist (b (ecb-compilation-buffer-names))
(if (null (cdr b))
(if (ecb-string= name (car b))
(throw 'exit name))
(save-match-data
(if (string-match (car b) name)
(throw 'exit name))))
nil)))
(defcustom ecb-compilation-major-modes '(compilation-mode)
"*Additional major-mode that should be displayed in the compile-window.
All buffers of a major-mode contained in this list are displayed in the
compile-window even if `compilation-buffer-p' says nil for such a buffer.
It is not recommended to add `eshell-mode' to this list because ECB already
handles the eshell-integration as best as possible."
:group 'ecb-compilation
:type '(repeat (symbol :tag "major-mode name")))
(defvar ecb-compilation-major-modes-internal nil
"This variable is for ECB internal use and can be used by ECB to add
major-mode symbols to the set specified in `ecb-compilation-major-modes'.")
(defun ecb-compilation-major-modes ()
"Return all major-mode symbols which should be displayed in the
compile-window. This is a list combined of `ecb-compilation-major-modes' and
`ecb-compilation-major-modes-internal'."
(append ecb-compilation-major-modes
ecb-compilation-major-modes-internal))
(defcustom ecb-compilation-predicates '(comint-check-proc)
"*Predicates when a buffer should be treated as compilation-buffer.
Every element of this list has to be a function or lambda-expression which
gets as argument a buffer-object and which has to return not nil when this
buffer should be treated as compilation-buffer \(even if
`compilation-buffer-p' says nil) and therefore be displayed in the
compile-window of ECB \(if there is any).
In combination with the values of `ecb-compilation-buffer-names' and
`ecb-compilation-major-modes' ECB decides when a buffer is displayed in the
compile-window.
Default value is the function `comint-check-proc' which returns not nil when
the buffer is related to a living process."
:group 'ecb-compilation
:type '(repeat (symbol :tag "Compilation predicate")))
(defvar ecb-compilation-predicates-internal nil
"This variable is for ECB internal use and can be used by ECB to add
predicates to the set defined in `ecb-compilation-predicates'.")
(defun ecb-compilation-predicates ()
"Return all predicates which should be used to test if a buffer should be
displayed in the compile-window. This is a list combined of
`ecb-compilation-predicates' and `ecb-compilation-predicates-internal'."
(append ecb-compilation-predicates
ecb-compilation-predicates-internal))
(defun ecb-compilation-get-buffers()
"Get all known compilation buffer names. See `ecb-compilation-buffer-p'."
(let((buffer-names '())
(buffer-list (buffer-list ecb-frame))
(index 0))
(setq buffer-list (sort buffer-list (lambda(first second)
(ecb-string< (buffer-name first)
(buffer-name second)))))
(dolist(buffer buffer-list)
(when (ecb-compilation-buffer-p buffer)
(setq buffer-names
(append buffer-names
(list (cons (buffer-name buffer) index))))
(setq index (1+ index))))
buffer-names))
(defun ecb-compilation-buffer-p (buffer-or-name)
"Test if the given buffer BUFFER-OR-NAME should be treated as a compilation
buffer. Note that in this case we define \"compilation buffer\" as a buffer
that should ideally be displayed in the compile-window of ECB \(see
`ecb-compile-window-height'). This means that in some situations this might
not be the result of a real `compile-internal'. A good example would be the
*Help* buffer.
BUFFER-OR-NAME can be the name of a living\(!) buffer or a buffer-object.
This function returns the buffer-object of BUFFER-OR-NAME - i.e.
BUFFER-OR-NAME will be treated as compilation-buffer - if:
- The name of the buffer is contained in the list returned by the function
`ecb-compilation-buffer-names' or
- the `major-mode' of the buffer is contained in the list returned by the
function `ecb-compilation-major-modes' or
- if `compilation-buffer-p' returns true or
- one of the predicates returned by `ecb-compilation-predicates' returns not
nil for the buffer.
Otherwise nil is returned.
Summary for ECB-end-users: A buffer will be treated as compilation-buffer if
either
- `compilation-buffer-p' returns not nil, i.e. if a real compilation-buffer or
- if at least one of the options `ecb-compilation-buffer-names',
`ecb-compilation-major-modes' or `ecb-compilation-predicates' define the
buffer as compilation-buffer."
;;determine the best valid for the buffer.
(let ((buffer (ecb-buffer-obj buffer-or-name))
(ecb-comp-predicates (ecb-compilation-predicates)))
(when buffer
;;test if this is a valid buffer by name.
(if (ecb-compilation-registered-buffer-p (buffer-name buffer))
buffer
;;else test if this is a valid buffer by mode
(if (with-current-buffer buffer
(member major-mode (ecb-compilation-major-modes)))
buffer
;;else test if this is a regular compilation buffer
(if (compilation-buffer-p buffer)
buffer
;; we do not use run-hook-with-args-until-success because we have
;; to check if the functions are bound!!
(if (dolist (p ecb-comp-predicates)
(if (and (fboundp p) (funcall p buffer))
(return t)))
buffer
nil)))))))
;; Klaus Berndl <klaus.berndl@sdm.de>: The following mechanism is necessary to
;; avoid eating up whole CPU for updating the menu-entries for the
;; compilation-buffers. Especially if you have opened a lot of buffers this
;; can slow down Emacs/ECB dramatically. Now we add an idle-times
;; check-function `ecb-compilation-buffer-list-changed-p' which checks if the
;; buffer-list has changed. If yes, then the variable
;; `ecb-compilation-update-menu-p' is set to t. Only if this variable is not
;; nil the menu-bar-update-hook `ecb-compilation-update-menu' updates the
;; ECB-menu.
(defvar ecb-compilation-update-menu-p nil)
(defvar ecb-compilation-buffer-list-cache nil)
(defvar ecb-compilation-update-idle-time 0.25)
(defun ecb-compilation-buffer-list-init ()
"Initialize the compilation buffer list cache."
(setq ecb-compilation-update-menu-p nil)
(setq ecb-compilation-buffer-list-cache nil)
(ecb-compilation-buffer-list-changed-p))
(defecb-autocontrol/sync-function ecb-compilation-buffer-list-changed-p nil nil nil
"Check if current active buffer list has changed - i.e. if a new buffer has
been created or a buffer has been deleted. If yes then
`ecb-compilation-update-menu-p' is set to not nil and the cache is updated."
(let ((new-buffer-list (buffer-list)))
(when (not (equal new-buffer-list
ecb-compilation-buffer-list-cache))
(ecb-bodytrace-autocontrol/sync-fcn-error
'ecb-compilation-buffer-list-changed-p
"New buffer list not equal with cached buffer list.")
(setq ecb-compilation-buffer-list-cache new-buffer-list)
;; Nowhere else this variable will be set to t.
(setq ecb-compilation-update-menu-p t))))
(defun ecb-compilation-update-menu()
"Create an install a menu that allows the user to navigate buffers that are
valid ECB compilation buffers. This is only done if
`ecb-compilation-update-menu-p' is not nil; see
`ecb-compilation-buffer-list-changed-p'. For more information about
compilation buffers see `ecb-compilation-buffer-p'."
(when ecb-compilation-update-menu-p
(let ((submenu nil)
(buffers (ecb-compilation-get-buffers)))
(condition-case nil
(progn
(setq ecb-compilation-update-menu-p nil)
(dolist(buffer buffers)
(setq submenu
(append submenu
(list (vector (car buffer)
;; switch-to-buffer-other-window is
;; ok for all situations because if
;; no compile-window it uses another
;; edit-window otherwise it uses the
;; compile-window.
`(funcall 'switch-to-buffer-other-window
,(car buffer))
:active t)))))
;;Klaus Berndl <klaus.berndl@sdm.de>: Seems not to work with
;;Emacs 20.X, but who cares, 20.x is outdated and not supported
;;anymore by ECB
(easy-menu-change (list ecb-menu-name)
"Compilation Buffers"
submenu
"Navigate")
t)
(error nil)))))
(silentcomp-provide 'ecb-compilation)
;;; ecb-compilation.el ends here

View File

@ -0,0 +1,861 @@
;;; ecb-create-layout.el --- creating new layouts
;; Copyright (C) 2000 - 2005 Jesper Nordenberg,
;; Klaus Berndl,
;; Kevin A. Burton,
;; Free Software Foundation, Inc.
;; Author: Klaus Berndl <klaus.berndl@sdm.de>
;; Maintainer: Klaus Berndl <klaus.berndl@sdm.de>
;; Keywords: browser, code, programming, tools
;; Created: 2002
;; This program is free software; you can redistribute it and/or modify it under
;; the terms of the GNU General Public License as published by the Free Software
;; Foundation; either version 2, or (at your option) any later version.
;; This program is distributed in the hope that it will be useful, but WITHOUT
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
;; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
;; details.
;; You should have received a copy of the GNU General Public License along with
;; GNU Emacs; see the file COPYING. If not, write to the Free Software
;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
;; $Id$
;;; Commentary:
;;
;; Contains code for easy creating new layouts
;;; History
;;
;; For the ChangeLog of this file see the CVS-repository. For a complete
;; history of the ECB-package see the file NEWS.
;;; Code
(eval-when-compile
(require 'silentcomp))
(eval-when-compile
;; to avoid compiler grips
(require 'cl))
(require 'ecb-mode-line)
(require 'ecb-util)
(require 'ecb-compilation)
;; XEmacs stuff
(silentcomp-defvar vertical-divider-map)
(silentcomp-defvar modeline-map)
;; Emacs 21.X stuff
(silentcomp-defvar before-make-frame-hook)
(silentcomp-defvar after-make-frame-functions)
;; First loaded during activated ECB
(silentcomp-defvar ecb-buildin-layouts)
(defgroup ecb-create-layout nil
"Settings for creating new ECB-layouts."
:group 'ecb-layout
:prefix "ecb-create-layout-")
(defcustom ecb-create-layout-file "~/.ecb-user-layouts.el"
"*File where all layouts created by `ecb-create-new-layout' are stored."
:group 'ecb-create-layout
:type 'file)
(defcustom ecb-create-layout-frame-width 140
"*Frame width of the layout creation frame."
:group 'ecb-create-layout
:type 'integer)
(defcustom ecb-create-layout-frame-height 51
"*Frame height of the layout creation frame."
:group 'ecb-create-layout
:type 'integer)
;; internal vars and consts
(defconst ecb-create-layout-buf-prefix " *ECB-LC-")
(defconst ecb-create-layout-frame-name "Creation of a new ECB-layout")
(defconst ecb-create-layout-all-buf-types
'("directories" "history" "methods" "sources" "speedbar" "analyse" "symboldef"))
(defconst ecb-create-layout-help-text-left-right
"
ECB layout creation mode
========================
This is the help-screen of this mode. The window
displaying this help text is called the edit-window
which is neither selectable nor delete-able nor
split-able in this mode.
<left/right/up/down-arrow>: Moving around in current
window C-n, C-p: Go to next/previous window (beside
the edit-window)
C-s: Split current window. You will be asked:
- If \"vertical\" or \"horizontal\" split
- How to split: \"at-point\", \"half\" or
\"other\" (i.e. you can specify any fraction
between 0.1 and 0.9)
- Which type the current window should be
\(see description of C-t below).
C-u: Unsplit, ie. delete current window
C-t: Give the current window a built-in type
(\"directories\", \"sources\", \"methods\",
\"history\" etc.) or any arbitrary user-defined
type (\"other\"). See the Online-manual!
C-c: Cancel layout creation. This does not save the
layout. Deletes this frame.
C-q: Save current defined layout and quit the layout
creation. You will be asked for a layout-name.
With TAB-completion you can get the names already
in use. You have to choose a new name!
Deletes this frame.
There are NO other commands or keys available. ALL
other keys are disabled in this mode!
")
(defconst ecb-create-layout-help-text-top
" ECB layout creation mode
========================
This is the help-screen of this mode. The window displaying this help text is called
the edit-window which is neither selectable nor delete-able nor split-able in this mode.
<left/right/up/down-arrow>: Moving around in current window
C-n, C-p: Go to next/previous window (beside the edit-window)
C-s: Split current window. You will be asked:
- If \"vertical\" or \"horizontal\" split
- How to split: \"at-point\", \"half\" or \"other\" (i.e. you can specify any
fraction between 0.1 and 0.9)
- Which type the current window should be \(see description of C-t below).
C-u: Unsplit, ie. delete current window
C-t: Give the current window a built-in type (\"directories\", \"sources\", \"methods\",
\"history\" etc.) or any arbitrary user-defined type (\"other\").
C-c: Cancel layout creation. This does not save the layout. Deletes this frame.
C-q: Save current defined layout and quit the layout creation. You will be asked for a
layout-name. With TAB-completion you can get the names already in use.
You have to choose a new name! Deletes this frame.
There are NO other commands or keys available. ALL other keys are disabled in this mode!
")
(defconst ecb-create-layout-file-header
"
;; Copyright (C) 2001 - 2005 Jesper Nordenberg
;; Copyright (C) 2001 - 2005 Free Software Foundation, Inc.
;; Copyright (C) 2001 - 2005 Klaus Berndl <klaus.berndl@sdm.de>
;; Author: Klaus Berndl <klaus.berndl@sdm.de>
;; Maintainer: Klaus Berndl <klaus.berndl@sdm.de>
;; Keywords: java, class, browser
;; This program is free software; you can redistribute it and/or modify it
;; under the terms of the GNU General Public License as published by the Free
;; Software Foundation; either version 2, or (at your option) any later
;; version.
;; This program is distributed in the hope that it will be useful, but WITHOUT
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
;; more details.
;; You should have received a copy of the GNU General Public License along
;; with GNU Emacs; see the file COPYING. If not, write to the Free Software
;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
;;; Commentary:
;; This file contains all user-defined ECB-layouts created by the command
;; `ecb-create-new-layout'.
;; !!! DO NOT EDIT THIS FILE MANUALLY - IT IS GENERATED BY ECB !!!
")
(defvar ecb-create-layout-frame nil)
(defvar ecb-create-layout-edit-window nil)
(defvar ecb-create-layout-old-global-map nil)
(defvar ecb-create-layout-old-minor-mode-map-alist nil)
(defvar ecb-create-layout-old-hscroll nil)
(defvar ecb-create-layout-old-debug-on-error nil)
(defvar ecb-create-layout-old-frame nil)
(defvar ecb-create-layout-old-vertical-div-map nil)
(defvar ecb-create-layout-old-modeline-map nil)
(defvar ecb-create-layout-old-after-frame-h nil)
(defvar ecb-create-layout-old-before-frame-h nil)
(defvar ecb-create-layout-generated-lisp nil)
(defvar ecb-create-layout-gen-counter 0)
(defvar ecb-create-layout-buf-types nil)
;; can be 'left, 'right, 'top or 'left-right
(defvar ecb-create-layout-type 'left)
(defun ecb-create-layout-initilize ()
(setq ecb-create-layout-buf-types
(ecb-copy-list ecb-create-layout-all-buf-types))
(setq ecb-create-layout-frame nil)
(setq ecb-create-layout-edit-window nil)
(setq ecb-create-layout-old-global-map nil)
(setq ecb-create-layout-old-minor-mode-map-alist nil)
(setq ecb-create-layout-old-hscroll nil)
(setq ecb-create-layout-old-frame nil)
(if ecb-running-xemacs
(progn
(setq ecb-create-layout-old-vertical-div-map nil)
(setq ecb-create-layout-old-modeline-map nil))
(setq ecb-create-layout-old-after-frame-h nil)
(setq ecb-create-layout-old-before-frame-h nil))
(setq ecb-create-layout-generated-lisp nil)
(setq ecb-create-layout-gen-counter 0))
(defvar ecb-create-layout-frame-deleted nil)
(defadvice delete-frame (before ecb-create-layout)
"Ensure calling `ecb-create-layout-cancel' during deleting the
layout-creation frame. Does nothing for any other other frame!"
(let ((frame (or (ad-get-arg 0) (selected-frame))))
(when (ecb-string= (ecb-frame-parameter frame 'name)
ecb-create-layout-frame-name)
(setq ecb-create-layout-frame-deleted t)
(ecb-create-layout-cancel))))
(defadvice delete-frame (after ecb-create-layout)
"Ensures correct deleting of the layout-creation frame. Does nothing for any
other other frame!"
(when ecb-create-layout-frame-deleted
(setq ecb-create-layout-frame-deleted nil)
(ecb-activate))
(ad-disable-advice 'delete-frame 'after 'ecb-create-layout)
(ad-activate 'delete-frame))
(defun ecb-create-layout-frame-ok ()
"Return not nil if current frame is the `ecb-create-layout-frame'"
(and ecb-create-layout-frame
(frame-live-p ecb-create-layout-frame)
(equal (selected-frame) ecb-create-layout-frame)))
(defun ecb-create-layout-cancel (&rest ignore)
"Cancel layout-creation without saving the layout."
(interactive)
(when (ecb-create-layout-frame-ok)
(ecb-create-layout-clear-all (called-interactively-p 'interactive))
(message "ECB Layout Creation canceled - the layout is not saved!")
(and (called-interactively-p 'interactive) (ecb-activate))))
(defun ecb-create-layout-clear-all (&optional delete-frame)
"Resets all stuff to state before `ecb-create-new-layout' was called. If
DELETE-FRAME is not nil then the new created frame will be deleted and the
`ecb-create-layout-old-frame' will be selected."
;; disabling the advice
(ad-disable-advice 'delete-frame 'before 'ecb-create-layout)
(ad-activate 'delete-frame)
;; killing all white-space-filled layout-buffers
(save-match-data
(dolist (b (buffer-list ecb-create-layout-frame))
(if (string-match "^ \\*ECB-LC-" (buffer-name b))
(kill-buffer b))))
;; restore the global-map
(if (keymapp ecb-create-layout-old-global-map)
(use-global-map ecb-create-layout-old-global-map))
;; restore the minor-mode-maps
(if ecb-create-layout-old-minor-mode-map-alist
(setq minor-mode-map-alist
ecb-create-layout-old-minor-mode-map-alist))
;; restore horiz. scrolling
(unless ecb-running-xemacs
(setq auto-hscroll-mode ecb-create-layout-old-hscroll))
;; for XEmacs restore these maps
(if ecb-running-xemacs
(progn
(setq vertical-divider-map ecb-create-layout-old-vertical-div-map)
(setq modeline-map ecb-create-layout-old-modeline-map))
;; before and after making frame stuff
(setq before-make-frame-hook ecb-create-layout-old-before-frame-h)
(setq after-make-frame-functions ecb-create-layout-old-after-frame-h))
;; restore old debug-on-error
(setq debug-on-error ecb-create-layout-old-debug-on-error)
;; delete the layout-frame and select the ecb-create-layout-old-frame
(when delete-frame
(when (and ecb-create-layout-old-frame
(frame-live-p ecb-create-layout-old-frame))
(raise-frame ecb-create-layout-old-frame)
(select-frame ecb-create-layout-old-frame))
(when (and ecb-create-layout-frame
(frame-live-p ecb-create-layout-frame))
(ad-with-originals 'delete-frame
(delete-frame ecb-create-layout-frame))))
(setq ecb-create-layout-frame nil))
(defun ecb-create-layout-save-and-quit (&rest ignore)
"Quit the ECB Layout creation and save the defined layout."
(interactive)
(when (ecb-create-layout-frame-ok)
(if (ecb-create-layout-ready-for-save-p)
(let ((delete-frame (called-interactively-p 'interactive)))
;; if an error occurs during `ecb-create-layout-save-layout' or the
;; user hits C-q we must clean the layout creation stuff!
(unwind-protect
(ecb-create-layout-save-layout)
;; clean the layout creation stuff
(ecb-create-layout-clear-all delete-frame)
(message "ECB Layout Creation finished.")
(ecb-activate)))
(ecb-error "You must give every ECB-tree-window a type (use C-t)!"))))
(defun ecb-create-layout-ready-for-save-p ()
"Returns only not nil if all windows in current layout have a type."
(let ((save-p t))
(save-excursion
(dolist (win (ecb-window-list (selected-frame) 0))
(unless (equal win ecb-create-layout-edit-window)
(set-buffer (window-buffer win))
(setq save-p (ecb-create-layout-buffer-type)))))
save-p))
(defmacro ecb-create-layout-insert-line (line)
"Insert LINE in current-buffer and adds a newline."
`(progn
(insert ,line)
(insert "\n")))
(defun ecb-create-layout-insert-file-header ()
(insert (format ";;; %s --- user defined ECB-layouts" ;;
(ecb-file-name-nondirectory ecb-create-layout-file)))
(insert ecb-create-layout-file-header))
(defun ecb-create-layout-save-layout ()
"Saves current layout in `ecb-create-layout-file'."
;; make edit-window the current selected window
(ecb-create-layout-select-edit-window)
;; we need the reversed sequence of the generated code
(setq ecb-create-layout-generated-lisp
(nreverse ecb-create-layout-generated-lisp))
;; ensure we have load all layouts defined until now
(ecb-load-layouts)
;; now we have the create-code in the right sequence so we can save the new
;; layout in the user-layout file
(let ((layout-name ""))
;; a repeat...until-loop
(while (progn
;;the while body
(setq layout-name
(ecb-choose-layout-name (ecb-available-layouts-of-type nil)
nil))
;; the while condition
(ecb-available-layouts-member-p layout-name)))
(with-temp-file (expand-file-name ecb-create-layout-file)
(erase-buffer)
(if (file-readable-p (expand-file-name ecb-create-layout-file))
(insert-file-contents (expand-file-name ecb-create-layout-file))
(ecb-create-layout-insert-file-header))
(goto-char (point-max))
;; insert header of the layout-define macro
(ecb-create-layout-insert-line
(format "(ecb-layout-define \"%s\" %s nil"
layout-name
(symbol-name ecb-create-layout-type)))
;; insert all the generated layout-code of the new layout
(dolist (line ecb-create-layout-generated-lisp)
(ecb-create-layout-insert-line
(format " %s" line)))
;; close the new layout-function
(ecb-create-layout-insert-line " )"))
;; now we load the new layout
(load-file (expand-file-name ecb-create-layout-file))
(message "The new layout is saved in %s, loaded and available!"
ecb-create-layout-file)))
(defun ecb-create-layout-gen-lisp (lisp-statement)
(setq ecb-create-layout-generated-lisp
(cons lisp-statement ecb-create-layout-generated-lisp)))
(defun ecb-create-layout-split-ver (&optional fraction)
(let ((factor (or fraction
(/ (float (count-lines (window-start) (point)))
(float (- (ecb-window-full-height) 2))))))
(ecb-split-ver factor t)
(ecb-create-layout-gen-lisp `(ecb-split-ver ,factor t))
factor))
(defun ecb-create-layout-split-hor (&optional fraction)
(let ((factor (or fraction
(/ (float (- (point) (ecb-line-beginning-pos)))
(float (- (window-width) 3))))))
(ecb-split-hor factor t)
(ecb-create-layout-gen-lisp `(ecb-split-hor ,factor t))
(beginning-of-line)
factor))
(defun ecb-create-layout-add-to-buf-types (type)
(when (and (stringp type)
(member type ecb-create-layout-all-buf-types))
(add-to-list 'ecb-create-layout-buf-types type)
(setq ecb-create-layout-buf-types
(sort ecb-create-layout-buf-types 'ecb-string<))))
(defun ecb-create-layout-remove-from-buf-type (type)
(when (stringp type)
(setq ecb-create-layout-buf-types
(sort (delete type ecb-create-layout-buf-types) 'ecb-string<))))
(defun ecb-create-layout-buffer-type ()
(get-text-property (point-min) 'ecb-create-layout-type))
(defun ecb-create-layout-buffer-factor ()
(get-text-property (point-min) 'ecb-create-layout-factor))
(defun ecb-create-layout-set-buffer-type (type)
(let ((buffer-read-only nil))
(put-text-property (point-min) (1+ (point-min)) 'ecb-create-layout-type
type)))
(defun ecb-create-layout-set-buffer-factor (factor)
(let ((buffer-read-only nil))
(put-text-property (point-min) (1+ (point-min)) 'ecb-create-layout-factor
factor)))
(defun ecb-create-layout-gen-lisp-for-buffer-type (type)
(let ((func-sym (intern (format "ecb-set-%s-buffer" type))))
(ecb-create-layout-gen-lisp
`(if (fboundp (quote ,func-sym))
(,func-sym)
(ecb-set-default-ecb-buffer)))))
(defun ecb-create-layout-set-buffer-to-type (&optional type)
"Give current ECB-buffer a type."
(interactive)
(when (ecb-create-layout-frame-ok)
;; adding the old buffer type to the available-list
(ecb-create-layout-add-to-buf-types (or type
(ecb-create-layout-buffer-type)))
(let ((new-type (or (and (stringp type) type)
(ecb-query-string "Type of current ECB-tree-buffer:"
ecb-create-layout-buf-types
"Insert the buffer type"))))
;; removing the new buffer type from the available-list
(ecb-create-layout-remove-from-buf-type new-type)
(ecb-mode-line-set (buffer-name (current-buffer))
(selected-frame)
(concat "ECB " new-type) nil t)
;; setting the new buffer type in the buffer itself
(ecb-create-layout-set-buffer-type new-type)
(when (called-interactively-p 'interactive)
(ecb-create-layout-gen-lisp-for-buffer-type new-type)
(ecb-create-layout-next-window))
new-type)))
(defun ecb-create-layout-select-edit-window ()
(let ((counter 0))
(while (not (equal (selected-window) ecb-create-layout-edit-window))
(other-window 1)
(setq counter (1+ counter)))
(ecb-create-layout-gen-lisp `(dotimes (i ,counter)
(other-window 1)
(if (equal (selected-window)
ecb-compile-window)
(other-window 1))))))
(defun ecb-create-layout-split ()
"Split current window."
(interactive)
(when (ecb-create-layout-frame-ok)
;; splitting
(let* ((old-buf-type (ecb-create-layout-buffer-type))
(split-choices (if (equal ecb-create-layout-type 'top)
'("horizontal" "vertical")
'("vertical" "horizontal")))
(split-type (ecb-query-string "Split type:" split-choices))
(split-method
(ecb-query-string "Split method:"
'("at-point" "half")
"Insert a fraction between 0.1 and 0.9"))
(fraction (cond ((ecb-string= split-method "at-point")
nil)
((ecb-string= split-method "half")
0.5)
((floatp (string-to-number split-method))
(string-to-number split-method))
(t 0.5)))
(real-split-factor
(if (ecb-string= split-type "horizontal")
(ecb-create-layout-split-hor fraction)
(ecb-create-layout-split-ver fraction))))
;; creating new fitting buffers
(ecb-create-layout-new-buffer)
(save-excursion
(save-selected-window
(select-window (next-window))
(ecb-create-layout-new-buffer)))
;; asking for the buffer type
(ecb-create-layout-set-buffer-factor real-split-factor)
(ecb-create-layout-gen-lisp-for-buffer-type
(ecb-create-layout-set-buffer-to-type old-buf-type))
(ecb-create-layout-next-window))))
(defun ecb-create-layout-forward-char ()
"Move one character forward."
(interactive)
(when (ecb-create-layout-frame-ok)
(unless (> (- (point) (ecb-line-beginning-pos)) (- (window-width)
(if ecb-running-xemacs
3
2)))
(call-interactively 'forward-char))))
(defun ecb-create-layout-next-window ()
"Go to the next window.
This command always goes to the next special ECB-window, i.e. it never selects
the edit-window."
(interactive)
(when (ecb-create-layout-frame-ok)
(let ((steps (if (equal (next-window) ecb-create-layout-edit-window) 2 1)))
(other-window steps)
(ecb-create-layout-gen-lisp `(dotimes (i ,steps)
(other-window 1)
(if (equal (selected-window)
ecb-compile-window)
(other-window 1)))))))
(defun ecb-create-layout-previous-window ()
"Go to the previous window.
This command always goes to the ECB-window preceding current window, i.e. it
never selects the edit-window."
(interactive)
(when (ecb-create-layout-frame-ok)
(let ((steps (if (equal (previous-window (selected-window) 0)
ecb-create-layout-edit-window)
-2 -1)))
(other-window steps)
(ecb-create-layout-gen-lisp `(dotimes (i ,(abs steps))
(other-window -1)
(if (equal (selected-window)
ecb-compile-window)
(other-window -1)))))))
(defun ecb-create-layout-delete-window ()
"Delete current window."
(interactive)
(when (ecb-create-layout-frame-ok)
(unless (or (equal (selected-window) ecb-create-layout-edit-window)
(= (length (ecb-window-list nil 0))
(if (equal ecb-create-layout-type 'left-right) 3 2)))
(if (and (member ecb-create-layout-type '(right left-right))
(equal (previous-window (selected-window) 0)
ecb-create-layout-edit-window)
(> (nth 0 (ecb-window-edges (next-window))) (nth 0 (ecb-window-edges)))
(= (nth 3 (ecb-window-edges ecb-create-layout-edit-window))
(nth 3 (ecb-window-edges))))
;; In exactly this window context we can not delete the current
;; window because otherwise the edit-window would enlarge and the
;; wrong window would be deleted!
(ecb-error "This window can not be deleted! Delete another one.")
;; add the buffer type of the deleted window to the available-list
(ecb-create-layout-add-to-buf-types (ecb-create-layout-buffer-type))
(kill-buffer (current-buffer))
(delete-window)
(ecb-create-layout-gen-lisp '(delete-window))
(if (equal (selected-window) ecb-create-layout-edit-window)
(ecb-create-layout-previous-window))
;; add the buffer type of the new bigger window to the available-list
(ecb-create-layout-add-to-buf-types (ecb-create-layout-buffer-type))
(kill-buffer (current-buffer))
(ecb-create-layout-new-buffer)))))
(defvar ecb-create-layout-mode-map nil
"`ecb-create-layout-mode' key-map.")
(if ecb-create-layout-mode-map
()
(setq ecb-create-layout-mode-map (make-sparse-keymap))
;; (suppress-key-map ecb-create-layout-mode-map t)
;; for minibuffer insertion we need the following
(dotimes (i 26)
(define-key ecb-create-layout-mode-map
(string (+ i 97)) 'self-insert-command))
(dotimes (i 26)
(define-key ecb-create-layout-mode-map
(string (+ i 65)) 'self-insert-command))
(dotimes (i 10)
(define-key ecb-create-layout-mode-map
(string (+ i 48)) 'self-insert-command))
(define-key ecb-create-layout-mode-map "." 'self-insert-command)
(define-key ecb-create-layout-mode-map "-" 'self-insert-command)
(if ecb-running-xemacs
(define-key ecb-create-layout-mode-map (kbd "<BS>")
'delete-backward-char)
(define-key ecb-create-layout-mode-map (kbd "<DEL>")
'backward-delete-char-untabify))
(define-key ecb-create-layout-mode-map (kbd "C-q")
'ecb-create-layout-save-and-quit)
(define-key ecb-create-layout-mode-map (kbd "C-c")
'ecb-create-layout-cancel)
(define-key ecb-create-layout-mode-map (kbd "C-u")
'ecb-create-layout-delete-window)
(define-key ecb-create-layout-mode-map (kbd "C-s") 'ecb-create-layout-split)
(define-key ecb-create-layout-mode-map (kbd "C-t")
'ecb-create-layout-set-buffer-to-type)
(define-key ecb-create-layout-mode-map (kbd "<left>") 'backward-char)
(define-key ecb-create-layout-mode-map (kbd "<right>")
'ecb-create-layout-forward-char)
(define-key ecb-create-layout-mode-map (kbd "<up>") 'previous-line)
(define-key ecb-create-layout-mode-map (kbd "<down>") 'next-line)
(define-key ecb-create-layout-mode-map (kbd "C-n")
'ecb-create-layout-next-window)
(define-key ecb-create-layout-mode-map (kbd "C-p")
'ecb-create-layout-previous-window)
;; (define-key ecb-create-layout-mode-map (kbd "C-h v")
;; 'describe-variable)
;; (define-key ecb-create-layout-mode-map (kbd "C-h k")
;; 'describe-key)
;; (define-key ecb-create-layout-mode-map (kbd "C-h d")
;; 'ecb-create-layout-debug)
;; (define-key ecb-create-layout-mode-map (kbd "M-<down>")
;; 'scroll-other-window)
(set-keymap-parent ecb-create-layout-mode-map nil))
(defun ecb-create-layout-new-buffer (&optional do-not-fill)
(set-window-dedicated-p (selected-window) nil)
(switch-to-buffer (generate-new-buffer ecb-create-layout-buf-prefix))
(erase-buffer)
(unless do-not-fill
(dotimes (i (ecb-window-full-height))
(insert
(format "%s\n"
(make-string (- (window-width)
(if ecb-running-xemacs 3 1))
?\ )))))
(goto-char (point-min))
(ecb-create-layout-mode)
(set-window-dedicated-p (selected-window) t))
(defun ecb-create-layout-mode ()
"Major mode for creating new ECB-layouts."
(setq major-mode 'ecb-create-layout-mode)
(setq mode-name "ECB Create-Layout")
(use-local-map ecb-create-layout-mode-map)
(make-local-variable 'buffer-read-only)
(ecb-mode-line-set (buffer-name (current-buffer))
(selected-frame) "" nil t)
(setq buffer-read-only t))
(defun ecb-create-layout-init-layout (&optional new)
(delete-other-windows)
(ecb-create-layout-new-buffer)
(when new
(setq ecb-create-layout-type (intern (ecb-query-string
"Location of the the ECB-tree-windows:"
'("left" "right" "top" "left-right")))))
(case ecb-create-layout-type
(left
(ecb-split-hor ecb-windows-width))
(right
(ecb-split-hor (- ecb-windows-width) t))
(top
(ecb-split-ver ecb-windows-height))
(otherwise
(ecb-split-hor (- (* 0.667 ecb-windows-width)) t)
(ecb-split-hor (* 0.667 ecb-windows-width) nil t)))
;; we set the buffer in the big edit-window
(ecb-create-layout-new-buffer t)
;; now we insert the help in the edit-window
(let ((buffer-read-only nil))
(insert (if (equal ecb-create-layout-type 'top)
ecb-create-layout-help-text-top
ecb-create-layout-help-text-left-right)))
(setq ecb-create-layout-edit-window (selected-window))
(ecb-mode-line-set (buffer-name (current-buffer))
(selected-frame) " ECB edit-window" nil t)
;; The edit window must not be dedicated
(set-window-dedicated-p (selected-window) nil)
;; we set the buffer for the (currently unsplitted) ECB-window
(other-window 1)
(ecb-create-layout-new-buffer)
;; for the left-right type we have to set the other column too
(when (equal ecb-create-layout-type 'left-right)
(other-window 1)
(ecb-create-layout-new-buffer)))
(defun ecb-create-layout-make-frame ()
"Create a new frame for the layout creation process and return it."
(if ecb-running-xemacs
(make-frame `((name . ,ecb-create-layout-frame-name)
(minibuffer . t)
(user-position . t)
(width . ,ecb-create-layout-frame-width)
(height . ,ecb-create-layout-frame-height)
(default-toolbar-visible-p . nil)
(left-toolbar-visible-p . nil)
(right-toolbar-visible-p . nil)
(top-toolbar-visible-p . nil)
(bottom-toolbar-visible-p . nil)
(default-gutter-visible-p . nil)
(left-gutter-visible-p . nil)
(right-gutter-visible-p . nil)
(top-gutter-visible-p . nil)
(bottom-gutter-visible-p . nil)
(has-modeline-p . t)
(use-left-overflow . nil)
(vertical-scrollbar-visible-p . nil)
(horizontal-scrollbar-visible-p . nil)
(use-right-overflow . nil)
(menubar-visible-p . nil)))
(make-frame `((name . ,ecb-create-layout-frame-name)
(minibuffer . t)
(user-position . t)
(width . ,ecb-create-layout-frame-width)
(height . ,ecb-create-layout-frame-height)
(vertical-scroll-bars . nil)
(horizontal-scroll-bars . nil)
(tool-bar-lines . 0)
(menu-bar-lines . 0)))))
;; TODO: Klaus Berndl <klaus.berndl@sdm.de>: Wir müssen ev. ECB vorher
;; deaktivieren, da sonst ein 2. ECB-menu entsteht. Beim C-c oder C-q eben
;; dann wieder aktivieren.
(defun ecb-create-new-layout ()
"Start interactively layout creating."
(interactive)
(ecb-deactivate)
(ecb-create-layout-initilize)
;; before- and after make frame stuff
(when (not ecb-running-xemacs)
(setq ecb-create-layout-old-after-frame-h after-make-frame-functions)
(setq after-make-frame-functions nil)
(setq ecb-create-layout-old-before-frame-h before-make-frame-hook)
(setq before-make-frame-hook nil))
;; saving old frame
(setq ecb-create-layout-old-frame (selected-frame))
;; creating new frame
(setq ecb-create-layout-frame (ecb-create-layout-make-frame))
(raise-frame ecb-create-layout-frame)
(select-frame ecb-create-layout-frame)
(ad-enable-advice 'delete-frame 'before 'ecb-create-layout)
(ad-enable-advice 'delete-frame 'after 'ecb-create-layout)
(ad-activate 'delete-frame)
;; global map
(setq ecb-create-layout-old-global-map (current-global-map))
(use-global-map ecb-create-layout-mode-map)
;; minor-modes map
(setq ecb-create-layout-old-minor-mode-map-alist minor-mode-map-alist)
(setq minor-mode-map-alist nil)
;; horiz. scrolling
(unless ecb-running-xemacs
(setq ecb-create-layout-old-hscroll auto-hscroll-mode)
(setq auto-hscroll-mode nil))
;; for XEmacs modeline- and vertical-divider maps
(when ecb-running-xemacs
(setq ecb-create-layout-old-vertical-div-map vertical-divider-map)
(setq vertical-divider-map nil)
(setq ecb-create-layout-old-modeline-map modeline-map)
(setq modeline-map nil))
;; debug on error
(setq ecb-create-layout-old-debug-on-error debug-on-error)
(setq debug-on-error nil)
(ecb-create-layout-init-layout t))
(defun ecb-delete-new-layout ()
"Select a layout-name and delete this layout.
This means the layout-definition is removed from the file
`ecb-create-layout-file' and the layout-function and associated aliases are
unbound."
(interactive)
;; ensure we have load all layouts defined until now
(ecb-load-layouts)
(let ((new-layout-list
(sort (ecb-set-difference (ecb-available-layouts-of-type nil)
(mapcar (function (lambda (elem)
(car elem)))
ecb-buildin-layouts)
'member)
'ecb-string<))
(layout-name nil))
(if (= (length new-layout-list) 0)
(ecb-error "There are no layouts to delete!")
(setq layout-name (ecb-choose-layout-name new-layout-list t)))
(with-temp-file (expand-file-name ecb-create-layout-file)
(erase-buffer)
(if (file-readable-p (expand-file-name ecb-create-layout-file))
(insert-file-contents (expand-file-name ecb-create-layout-file))
(ecb-error "This layout is not defined in %s!" ecb-create-layout-file))
(goto-char (point-min))
(if (re-search-forward (concat "^(ecb-layout-define +"
"\"" layout-name "\".+$")
nil t)
(progn
;; Deleting the layout definition in the file
;; `ecb-create-layout-file'.
(beginning-of-line)
(delete-region (match-beginning 0)
(progn
(forward-sexp)
(point)))
(kill-line)
;; undefining the function and aliases.
(ecb-layout-undefine layout-name))
(ecb-error "This layout is not defined in %s!" ecb-create-layout-file)))))
(defun ecb-create-layout-debug ()
"Debugging command for the ECB-developers."
(interactive)
(message "Layout-Debug: Type: %s, Factor: %s"
(ecb-create-layout-buffer-type)
(ecb-create-layout-buffer-factor)))
;; Klaus Berndl <klaus.berndl@sdm.de>: Cause of the magic autostart stuff of
;; the advice-package we must disable at load-time all these advices!!
;; Otherwise would just loading ecb (not activating!) activate each advice
;; AFTER the FIRST usage of our advices!!
(ad-disable-advice 'delete-frame 'after 'ecb-create-layout)
(ad-disable-advice 'delete-frame 'before 'ecb-create-layout)
(ad-activate 'delete-frame)
(silentcomp-provide 'ecb-create-layout)
;; ecb-help.el ends here

View File

@ -0,0 +1,137 @@
;;; ecb-cycle.el --- cycle buffers through ecb windows.
;; Copyright (C) 2000 - 2005 Jesper Nordenberg,
;; Klaus Berndl,
;; Kevin A. Burton,
;; Free Software Foundation, Inc.
;; Author: Klaus Berndl <klaus.berndl@sdm.de>
;; Kevin A. Burton <burton@openprivacy.org>
;; Maintainer: Klaus Berndl <klaus.berndl@sdm.de>
;; Keywords: browser, code, programming, tools
;; Created: 2002
;; This program is free software; you can redistribute it and/or modify it under
;; the terms of the GNU General Public License as published by the Free Software
;; Foundation; either version 2, or (at your option) any later version.
;; This program is distributed in the hope that it will be useful, but WITHOUT
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
;; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
;; details.
;; You should have received a copy of the GNU General Public License along with
;; GNU Emacs; see the file COPYING. If not, write to the Free Software
;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
;; $Id$
;;; Commentary:
;; NOTE: If you enjoy this software, please consider a donation to the EFF
;; (http://www.eff.org)
;;; History:
;; For the ChangeLog of this file see the CVS-repository. For a complete
;; history of the ECB-package see the file NEWS.
;;; TODO:
;;
;; - What is the pattern we should use for cycling through other windows?
;;
;; - ecb-cycle-through-X-buffers (select the next X buffer)
;; - ecb-cycle-switch-to-X-buffer (set the X buffer using completion)
;;
;; - How do we setup the menubar?
;;
;; - ECB
;; Cycle
;; - Forward Compilation Buffer
;; - Set Compilation Buffer
;;
;; - What do we use for key bindings?
;;
;; - We need an easier way to setup completion and a better way to get the
;; index.
;;
;; - If possible, try to put fit the buffer so that the end of buffer is at the
;; end of the window... if necessary.
;;; Code:
(eval-when-compile
(require 'silentcomp))
(require 'ecb-compilation)
(require 'ecb-layout)
(defgroup ecb-cycle nil
"Setting for cycling through misc ECB buffers."
:group 'ecb
:prefix "ecb-cycle-")
(defun ecb-cycle-through-compilation-buffers(&optional choose-buffer)
"Cycle through all compilation buffers currently open.
The choosen compilation buffer is displayed within the compilation window
`ecb-compile-window' \(if this window doesn't exist then an error is
displayed). If the currently opened buffer within the compilation window is
not a compilation buffer, we jump to the first compilation buffer. If not we
try to loop through all compilation buffers. If we hit the end we go back to
the beginning.
If CHOOSE-BUFFER is not nil then the user will be prompted for the
compilation-buffer to switch to.
Afterwards always the compile-window of ECB is selected."
(interactive "P")
(if (not (numberp ecb-compile-window-height))
(ecb-error "This command needs a persistent compile window!")
(if choose-buffer
(switch-to-buffer (completing-read "ECB compilation buffer: "
(ecb-compilation-get-buffers)))
(let* ((compilation-buffers (ecb-compilation-get-buffers))
;; This works even if ecb-compile-window is nil or not alive
;; (means temporally hidden) --> then current-buffer is the
;; buffer of the currently selected window!
(current-buffer (or (and (ecb-compile-window-live-p)
(window-buffer ecb-compile-window))
(current-buffer)))
(current-buffer-name (buffer-name current-buffer))
(current nil)
(index nil))
(when (null compilation-buffers)
(ecb-error "No compilation buffers available."))
(if (not (ecb-compilation-buffer-p current-buffer))
;;if the current buffer is not a compilation buffer, goto the first
;;compilation buffer.
(ecb-cycle-set-compilation-buffer 0 compilation-buffers)
;;else... we need to determine what buffer to display.
(setq current (assoc current-buffer-name compilation-buffers))
(setq index (cdr current))
(if (= (1+ index) (length compilation-buffers))
;;go back to the first buffer.
(ecb-cycle-set-compilation-buffer 0 compilation-buffers)
(ecb-cycle-set-compilation-buffer (1+ index)
compilation-buffers)))))))
(defun ecb-cycle-set-compilation-buffer(index compilation-buffers)
"Set the buffer in the compilation window."
(let ((buffer-name (car (nth index compilation-buffers))))
(switch-to-buffer buffer-name)))
(silentcomp-provide 'ecb-cycle)
;;; ecb-cycle.el ends here

View File

@ -0,0 +1,394 @@
;;; ecb-eshell.el --- eshell integration for the ECB.
;; Copyright (C) 2000 - 2005 Jesper Nordenberg,
;; Klaus Berndl,
;; Kevin A. Burton,
;; Free Software Foundation, Inc.
;; Author: Klaus Berndl <klaus.berndl@sdm.de>
;; Kevin A. Burton <burton@openprivacy.org>
;; Maintainer: Klaus Berndl <klaus.berndl@sdm.de>
;; Keywords: browser, code, programming, tools
;; Created: 2001
;; This program is free software; you can redistribute it and/or modify it under
;; the terms of the GNU General Public License as published by the Free Software
;; Foundation; either version 2, or (at your option) any later version.
;; This program is distributed in the hope that it will be useful, but WITHOUT
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
;; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
;; details.
;; You should have received a copy of the GNU General Public License along with
;; GNU Emacs; see the file COPYING. If not, write to the Free Software
;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
;; $Id$
;;; Commentary:
;; This package provides eshell integration for the ECB. This basically allows
;; you to jump to the eshell in the compilation window, sync up the current
;; eshell with the current ECB buffer and run commands without getting in the
;; way.
;;
;; It provides the following features:
;;
;; - ability to jump to the eshell buffer within the compilation window ( C-.e )
;; If the eshell isn't running it will be started
;;
;; - expands the compilation window when you run commands. So for example it
;; allows you to view the eshell in minimized mode and then when you run 'ls'
;; the window automatically expands.
;;
;; - Synchronizes the current directory of the eshell with the current buffer
;; of the either the edit-window or the ecb-windows.
;;
;; - Provides smart window layout of the eshell buffer. This makes sure that
;; the eshell is taking up the exact amount of space and that nothing is
;; hidden.
;;
;; The goal is to make it easy to jump to a command prompt to run OS level
;; commands.
;;
;; If you enjoy this software, please consider a donation to the EFF
;; (http://www.eff.org)
;;; History:
;; For the ChangeLog of this file see the CVS-repository. For a complete
;; history of the ECB-package see the file NEWS.
;;; Design:
;;
;; Syncing the current buffer with the eshell is done two ways. If the buffer
;; is visible in a window, we always resync. If it is not visible then
;; ecb-eshell-goto-eshell will sync up when the user goes to the eshell
;; buffer.
;;
;; Integrating of eshell is mostly done by advicing the command `eshell' which
;; uses the mechanism of the display-buffer (adviced version).
;;; Code:
(eval-when-compile
(require 'silentcomp))
(require 'ecb-util)
(require 'ecb-compilation)
(require 'ecb-common-browser)
(silentcomp-defvar eshell-buffer-name)
(silentcomp-defun eshell)
(silentcomp-defun eshell/cd)
(silentcomp-defun eshell-send-input)
(silentcomp-defun eshell-bol)
(defgroup ecb-eshell nil
"Settings for eshell integration within the ECB."
:group 'ecb
:prefix "ecb-eshell-")
(defcustom ecb-eshell-enlarge-when-eshell t
"*Enlarge the compile-window if it is selected by `eshell'.
This takes only effect if the command `eshell' is called!"
:group 'ecb-eshell
:type 'boolean)
(defcustom ecb-eshell-fit-window-to-command-output t
"*Fit the compile-window after an eshell-command to the output.
This is done by the function `ecb-eshell-fit-window-to-output' which is added
to `eshell-post-command-hook' ie. which is running autom. after each
eshell-command."
:group 'ecb-eshell
:type 'boolean)
(defcustom ecb-eshell-auto-activate nil
"*Startup the eshell and display it in the compile-window.
If current layout does not display a compile-window \(see
`ecb-compile-window-height') then nothing is done."
:group 'ecb-eshell
:type 'boolean)
;; TODO: Klaus Berndl <klaus.berndl@sdm.de>: was ecb-eshell-synchronize -->
;; rename in texi and also to ecb-upgrade (also with value-upgrade!)
(defcustom ecb-eshell-buffer-sync 'basic
"*Synchronize eshell with the default-directory of current source-buffer.
This option takes only effect if a permanant compile-window is used in the
current layout.
If 'always then the synchronization takes place always a buffer
changes in the edit window and if after this the
default-directory of the new edit-buffer is different from the
default-directory of the current eshell-buffer. If value is nil
then never a synchronization will take place. If a list of
major-modes then only if the `major-mode' of the new buffer
belongs NOT to this list.
If the special value 'basic is set then ECB uses the setting of the option
`ecb-basic-buffer-sync'."
:group 'ecb-eshell
:type '(radio :tag "Synchronize the eshell if in compile-window."
(const :tag "Use basic value" :value basic)
(const :tag "Always" :value always)
(const :tag "Never" nil)
(repeat :tag "Not with these modes"
(symbol :tag "mode"))))
(defcustom ecb-eshell-buffer-sync-delay 'basic
"*Time Emacs must be idle before the eshell-buffer of ECB is synchronized.
Synchronizing is done with the current source displayed in the edit window. If
nil then there is no delay, means synchronization takes place immediately. A
small value of about 0.25 seconds saves CPU resources and you get even though
almost the same effect as if you set no delay.
If the special value 'basic is set then ECB uses the setting of the option
`ecb-basic-buffer-sync-delay'."
:group 'ecb-eshell
:type '(radio (const :tag "Use basic value" :value basic)
(const :tag "No synchronizing delay" :value nil)
(number :tag "Idle time before synchronizing" :value 2))
:set (function (lambda (symbol value)
(set symbol value)
(if (and (boundp 'ecb-minor-mode)
ecb-minor-mode)
(ecb-activate-ecb-autocontrol-function
value 'ecb-analyse-buffer-sync))))
:initialize 'custom-initialize-default)
(defvar ecb-eshell-pre-command-point nil
"Point in the buffer we are at before we executed a command.")
(defvar ecb-eshell-buffer-list nil
"List of eshell-buffers created until now.
Background: `eshell' creates new eshell-buffers with `generate-new-buffer' if
called with an prefix arg!")
(defecb-advice-set ecb-eshell-adviced-functions
"These functions of eshell are adviced if ehsell is active during ECB is
active.")
(defecb-advice eshell around ecb-eshell-adviced-functions
"Ensure that ehsell is running in the ECB-compile-window if any."
;; we tell ECB to handle the eshell-buffers as compilation-buffers so they
;; will be displayed in the compile-window (if any). We must add this as
;; regexp because ehsell can open new eshell-buffers with a name created by
;; generate-new-buffer-name! This approach is not completely save because if
;; a users changes `eshell-buffer-name' during acivated ECB we get not
;; informed about this and maybe we can handle the new buffer-name of eshell
;; not as compilation-buffer. But we have no other chance: Adding the return
;; value of `eshell' in the advice to `ecb-compilation-buffer-names-internal'
;; does not help because `eshell' uses the new buffer-name already for
;; `pop-to-buffer'. So an after advice would add the new buffer-name to late
;; and a before-advice does not know the new-buffer name. The only way would
;; be to reimplement the whole `eshell'-code in an around advice but this is
;; not related to the benefit. IMO is it very improbably that a user changes
;; `eshell-buffer-name' at all...
(let ((new-elem (cons (concat ".*"
(regexp-quote eshell-buffer-name)
".*")
t)))
(if ecb-compile-window-height
(progn
(add-to-list 'ecb-compilation-buffer-names-internal new-elem)
(add-to-list 'ecb-compilation-major-modes-internal 'eshell-mode))
;; if we have no persistent compile-window we do not handle eshell autom.
;; as compilation-buffer. If the user wants this then he has to modify
;; `ecb-compilation-buffer-names' and/or `ecb-compilation-major-modes'.
;; Therefore we remove the new-elem here from the internal lists.
(setq ecb-compilation-buffer-names-internal
(delete new-elem ecb-compilation-buffer-names-internal))
(setq ecb-compilation-major-modes-internal
(delete 'eshell-mode ecb-compilation-major-modes-internal))))
;; maybe we have to auto toggle our compile-window if temporally hidden
(when (equal 'hidden (ecb-compile-window-state))
(ecb-layout-debug-error "eshell around-advice: comp-win will be toggled.")
(ecb-toggle-compile-window 1))
(ecb-activate-ecb-autocontrol-function ecb-eshell-buffer-sync-delay
'ecb-eshell-buffer-sync)
;; some hooks
(add-hook 'eshell-post-command-hook 'ecb-eshell-recenter)
(add-hook 'eshell-post-command-hook 'ecb-eshell-fit-window-to-output)
(add-hook 'eshell-pre-command-hook 'ecb-eshell-precommand-hook)
(add-hook 'window-size-change-functions 'ecb-eshell-window-size-change)
;; run `eshell' --------------------------------------------
(ecb-eshell-save-buffer-history
ad-do-it)
;; ---------------------------------------------------------
;; some post processing
;; add the buffer of the buffer used/created by `eshell' to
;; `ecb-eshell-buffer-list'
(add-to-list 'ecb-eshell-buffer-list ad-return-value)
(when ecb-eshell-enlarge-when-eshell
(ecb-toggle-compile-window-height 1))
;;always recenter because if the point is at the top of the eshell buffer
;;and we switch to it the user is not going to be able to type a command
;;right away.
(ecb-eshell-recenter)
;;sync to the current buffer
(ecb-eshell-buffer-sync))
(defun ecb-eshell-activate-integration ()
"Does all necessary to activate the eshell-integration. But this doesn not
load or activate eshell - it just prepares ECB to work perfectly with eshell."
(ecb-enable-advices 'ecb-eshell-adviced-functions))
(defun ecb-eshell-deactivate-integration ()
(ecb-disable-advices 'ecb-eshell-adviced-functions)
(ecb-stop-autocontrol/sync-function 'ecb-eshell-buffer-sync)
(remove-hook 'eshell-post-command-hook 'ecb-eshell-recenter)
(remove-hook 'eshell-post-command-hook 'ecb-eshell-fit-window-to-output)
(remove-hook 'eshell-pre-command-hook 'ecb-eshell-precommand-hook)
(remove-hook 'window-size-change-functions 'ecb-eshell-window-size-change))
(defecb-autocontrol/sync-function ecb-eshell-buffer-sync nil ecb-eshell-buffer-sync t
"Synchronize the eshell with the directory of current source-buffer.
This is only done if the eshell is currently visible in the compile-window of
ECB and if either this function is called interactively or
`ecb-eshell-buffer-sync' is not nil."
(when (and (equal (selected-frame) ecb-frame)
(ecb-compile-window-live-p)
(ecb-point-in-edit-window-number))
(let* ((my-eshell-buffer
;; nil or a living eshell-buffer in the ecb-compile-window
(car (member (window-buffer ecb-compile-window)
ecb-eshell-buffer-list)))
(my-reference-directory default-directory)
(my-eshell-directory (and (bufferp my-eshell-buffer)
(with-current-buffer my-eshell-buffer
default-directory))))
(when (and (bufferp my-eshell-buffer)
(stringp my-reference-directory)
(stringp my-eshell-directory)
(not (ecb-string= (ecb-fix-filename my-reference-directory)
(ecb-fix-filename my-eshell-directory))))
(ecb-eshell-save-buffer-history
(with-current-buffer my-eshell-buffer
;; make sure we have a clean eshell-command-line
(goto-char (point-max))
(eshell-bol)
(delete-region (point) (point-at-eol))
;;change the directory without showing the cd command
(eshell/cd my-reference-directory))
;;execute the command
(save-selected-window
(select-window ecb-compile-window)
(eshell-send-input)))
(ecb-eshell-recenter)
;; we need to make sure that that the eshell buffer isn't at the
;; top of the buffer history list just because we implicitly
;; changed its directory and switched to it. It might not be a
;; good idea in the long term to put it all the way at the end of
;; the history list but it is better than leaving it at the top.
(bury-buffer eshell-buffer-name)))))
(defmacro ecb-eshell-save-buffer-history (&rest body)
"Protect the buffer-list so that the eshell buffer name is not placed early
in the buffer list or at all if it currently doesn't exist."
(let ((eshell-buffer-list (make-symbol "my-buffer-list")))
`(let ((,eshell-buffer-list (ecb-frame-parameter (selected-frame)
'buffer-list)))
(unwind-protect
(progn
,@body)
(modify-frame-parameters nil (list (cons 'buffer-list
,eshell-buffer-list)))))))
(defun ecb-eshell-recenter(&optional display-errors)
"Recenter the eshell window so that the prompt is at the buffer-end."
(interactive (list t))
(if (and (equal (selected-frame) ecb-frame)
(ecb-compile-window-live-p)
;; the buffer in the ecb-compile-window is a living eshell-buffer
(member (window-buffer ecb-compile-window)
ecb-eshell-buffer-list))
(save-selected-window
(select-window ecb-compile-window)
(goto-char (point-max))
(recenter -2))
(when display-errors
(ecb-error "Eshell not running or compile-window not visible!"))))
(defun ecb-eshell-precommand-hook ()
;;use the eshell-pre-command-hook to set the point.
(setq ecb-eshell-pre-command-point (point)))
(defun ecb-eshell-fit-window-to-output()
"Fit window of eshell to the output of last command. This function is added
to `eshell-post-command-hook' and only called there. This function tries to
fit the height of the compile-window best to the last command-output. The
algorithm fit the window to the height of the last command-output but do not
enlarge the compile-window over half of the frame-height and also not below
`ecb-compile-window-height' (in lines)."
(when (and (equal (selected-frame) ecb-frame)
(ecb-compile-window-live-p)
;; the buffer in the ecb-compile-window is a living eshell-buffer
(member (window-buffer ecb-compile-window)
ecb-eshell-buffer-list))
;; fit the window to the height of the last command-output but do not
;; enlarge the compile-window over half of the frame-height and also not
;; below `ecb-compile-window-height' (in lines).
(when (and ecb-eshell-fit-window-to-command-output
(integer-or-marker-p ecb-eshell-pre-command-point))
(let* ((compile-window-height-lines
(ecb-normalize-number ecb-compile-window-height
(1- (frame-height))))
(ecb-enlarged-compilation-window-max-height
(max (min (with-current-buffer (window-buffer ecb-compile-window)
;; we want to see the old command line too and 2
;; must be added because we have a modeline and one
;; empty line cause of the (recenter -2) in
;; `ecb-eshell-recenter'. For XEmacs it would be
;; better to check if a horiz. scrollbar is used.
;; This causes the one line more we need for XEmacs
(+ (if ecb-running-xemacs 4 3)
(count-lines ecb-eshell-pre-command-point
(point))))
(/ (1- (frame-height)) 2))
compile-window-height-lines)))
(ecb-toggle-compile-window-height 1)
(ecb-eshell-recenter))
;;reset
(setq ecb-eshell-pre-command-point nil))))
(defun ecb-eshell-auto-activate-hook()
"Activate the eshell when ECB is activated. See `ecb-eshell-auto-activate'."
(when ecb-eshell-auto-activate
(ignore-errors (eshell))))
(defun ecb-eshell-window-size-change(frame)
"Called when we change window sizes so that the eshell can resize."
(when (and ecb-minor-mode
(equal frame ecb-frame))
(ignore-errors (ecb-eshell-recenter))))
(add-hook 'ecb-activate-hook 'ecb-eshell-auto-activate-hook)
(silentcomp-provide 'ecb-eshell)
;;; ecb-eshell.el ends here

View File

@ -0,0 +1,560 @@
;;; ecb-examples.el --- examples for using ECB with Elisp
;; Copyright (C) 2000 - 2005 Jesper Nordenberg,
;; Klaus Berndl,
;; Free Software Foundation, Inc.
;; Author: Klaus Berndl <klaus.berndl@sdm.de>
;; Maintainer: Klaus Berndl <klaus.berndl@sdm.de>
;; Keywords: browser, code, programming, tools
;; Created: 2002
;; This program is free software; you can redistribute it and/or modify it under
;; the terms of the GNU General Public License as published by the Free Software
;; Foundation; either version 2, or (at your option) any later version.
;; This program is distributed in the hope that it will be useful, but WITHOUT
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
;; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
;; details.
;; You should have received a copy of the GNU General Public License along with
;; GNU Emacs; see the file COPYING. If not, write to the Free Software
;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
;; $Id$
;;; Commentary:
;;
;; Contains the code for some examples mentioned in the online-help.
;; This is a full working layout-example to demonstrate how to program
;; complete new special windows/buffers, add them to a layout and synchronize
;; it with the edit-window of ECB.
;;
;; To test this example just do:
;; 1. Start ECB
;; 2. Load ecb-examples.el into (X)Emacs: (require 'ecb-examples)
;; 3. Call `ecb-show-layout-help' and insert "example-layout1" as layout name
;; to see the outline of the test layout and get information about the
;; special windows of this layout.
;; 4. Call `ecb-examples-activate'.
;; 5. Play around with the new layout and test it.
;; 6. Call `ecb-examples-deactivate'.
;;
;; The intention of this example is to be a skeleton and pattern for other
;; packages which want to use the layout-engine of ECB do display their own
;; information. For example graphical debuggers (like JDEbug of JDEE) could be
;; made this way.
;;; History
;;
;; For the ChangeLog of this file see the CVS-repository. For a complete
;; history of the ECB-package see the file NEWS.
;;; Code
;; ---------------------------------------------------------------------------
;; --- Some requirements we always need if using the ECB layout-engine -------
;; ---------------------------------------------------------------------------
(require 'ecb-util)
(require 'ecb-layout)
(require 'ecb-common-browser)
(eval-when-compile
;; to avoid compiler grips
(require 'cl))
;; ---------------------------------------------------------------------------
;; --- Code for the bufferinfo buffer ----------------------------------------
;; ---------------------------------------------------------------------------
;; Normally we should have some options the user can customize
;; Lets define an own customize-group
(defgroup ecb-examples nil
"Settings for the bufferinfo example in the Emacs code browser."
:group 'ecb-examples-bufferinfo
:prefix "ecb-")
;; The following three options are typical for a special ECB-buffer which
;; should be synchronized with current buffer in the edit-area.
;; The :type of the first two options is essential and MUST NOT be defined
;; different, because the macro `defecb-autocontrol/sync-function' and the
;; function `ecb-activate-ecb-autocontrol-function' expects exactly this
;; option-type!
;; An own hook running after synchronizing is not essential but mostly useful
;; for users who wants to do some own stuff.
(defcustom ecb-examples-bufferinfo-buffer-sync 'basic
"*Synchronize the bufferinfo buffer automatically with current edit buffer.
If 'always then the synchronization takes place always a buffer changes in the
edit window, if nil then never. If a list of major-modes then only if the
`major-mode' of the new buffer belongs NOT to this list.
If the special value 'basic is set then ECB uses the setting of the option
`ecb-basic-buffer-sync'.
IMPORTANT NOTE: Every time the synchronization is done the hook
`ecb-bufferinfo-buffer-sync-hook' is evaluated."
:group 'ecb-examples-bufferinfo
:type '(radio :tag "Synchronize ECBs example bufferino buffer"
(const :tag "use basic value" :value basic)
(const :tag "Always" :value always)
(const :tag "Never" nil)
(repeat :tag "Not with these modes"
(symbol :tag "mode"))))
(defcustom ecb-examples-bufferinfo-buffer-sync-delay 'basic
"*Time Emacs must be idle before the bufferinfo-buffer is synchronized.
Synchronizing is done with the current source displayed in the edit window. If
nil then there is no delay, means synchronization takes place immediately. A
small value of about 0.25 seconds saves CPU resources and you get even though
almost the same effect as if you set no delay.
If the special value 'basic is set then ECB uses the setting of the option
`ecb-basic-buffer-sync-delay'"
:group 'ecb-analyse
:type '(radio (const :tag "use basic value" :value basic)
(const :tag "No synchronizing delay" :value nil)
(number :tag "Idle time before synchronizing" :value 2))
:set (function (lambda (symbol value)
(set symbol value)
(if (and (boundp 'ecb-minor-mode)
(featurep 'ecb-examples)
ecb-minor-mode)
(ecb-activate-ecb-autocontrol-function
value 'ecb-examples-bufferinfo-buffer-sync))))
:initialize 'custom-initialize-default)
(defcustom ecb-examples-bufferinfo-buffer-sync-hook nil
"Hook run at the end of `ecb-examples-bufferinfo-buffer-sync'.
See documentation of `ecb-examples-bufferinfo-buffer-sync' for conditions when
synchronization takes place and so in turn these hooks are evaluated.
Preconditions for such a hook:
- Current buffer is the buffer of the currently selected
edit-window.
- The bufferinfo-buffer is displayed in a visible window of the
ecb-frame \(so no check for visibilty of the bufferinfo-buffer in
the ecb-frame is necessary in a hook function)
Postcondition for such a hook:
Point must stay in the same edit-window as before evaluating the hook.
Important note: If the option
`ecb-examples-bufferinfo-buffer-sync' is not nil the function
`ecb-examples-bufferinfo-buffer-sync' is running either every
time Emacs is idle or even after every command \(see
`ecb-examples-bufferinfo-buffer-sync-delay'). So if the
bufferinfo-buffer is displayed in a window of the ecb-frame \(see
preconditions above) these hooks can be really called very often!
Therefore each function of this hook should/must check in an
efficient way at beginning if its task have to be really
performed and then do them only if really necessary! Otherwise
performance of Emacs could slow down dramatically!"
:group 'ecb-analyse
:type 'hook)
;; --------------- internals for bufferinfo-buffer -------------------
(defconst ecb-examples-bufferinfo-buffer-name " *ECB buffer info*")
(defvar ecb-examples-bufferinfo-last-file-buffer nil)
;; Two helper functions for displaying infos in a special buffer
(defun ecb-examples-print-file-attributes (buffer filename)
"Insert in buffer BUFFER some file-information about FILENAME."
(ecb-with-readonly-buffer buffer
(erase-buffer)
(insert (format "Bufferinfo for %s:\n\n" filename))
(let* ((attributes (file-attributes filename))
(type (format "Type: %s\n" (cond ((null (nth 0 attributes))
"File")
((equal (nth 0 attributes) t)
"Directory")
((stringp (nth 0 attributes))
(concat "Link to "
(nth 0 attributes))))))
(size (format "Size: %d\n" (nth 7 attributes)))
(modes (format "Modes: %s\n" (nth 8 attributes))))
(insert type size modes))))
(defun ecb-examples-print-non-filebuffer (buffer buffer-name)
"Insert in buffer BUFFER a small message for buffer with name BUFFER-NAME."
(ecb-with-readonly-buffer buffer
(erase-buffer)
(insert (format "Bufferinfo for buffer %s\n\n" buffer-name))
(insert "This is a not a filebuffer, so there are no\n")
(insert "informations available.")))
;; IMPORTANT: The main synchronizing function must be defined with the macro
;; `defecb-autocontrol/sync-function'!
(defecb-autocontrol/sync-function ecb-examples-bufferinfo-buffer-sync
ecb-examples-bufferinfo-buffer-name ecb-examples-bufferinfo-buffer-sync t
"Synchronizes the buffer-info buffer with current source if changed.
Can be called interactively but normally this should not be necessary because
it will be called autom. by the internal synchronizing mechanism of ECB."
;; The macro `defecb-autocontrol/sync-function' does a lot for our
;; conveniance:
;; 1) here we can be sure that the buffer with name
;; `ecb-examples-bufferinfo-buffer-name' is displayed in a window of
;; `ecb-frame' because the macro `defecb-autocontrol/sync-function'
;; encapsulates automatically the following code within
;; `ecb-do-if-buffer-visible-in-ecb-frame' and this macro binds locally the
;; variables visible-buffer and visible-window: visible-window:=
;; (get-buffer-window ecb-examples-bufferinfo-buffer-name) visible-buffer:=
;; (get-buffer ecb-examples-bufferinfo-buffer-name)
;; 2) The macro `defecb-autocontrol/sync-function' automatically takes care of
;; the setting of option `ecb-examples-bufferinfo-buffer-sync' and runs the
;; following code only when the related conditions are true
;; 3) The generated function has one optional argument FORCE which can be used
;; in the code below.
;; 4) The macro `defecb-autocontrol/sync-function' makes this synchronizing
;; function interactive
;; For details please read the documentation of
;; `defecb-autocontrol/sync-function'!
;; synchronize only when point stays in one of the edit-window.
(when (ecb-point-in-edit-window-number)
;; we need the file-name of indirect-buffers too (if the base-buffer is a
;; file-buffer), therefore we use `ecb-buffer-file-name' (see the docstring
;; of this function)
(let ((filename (ecb-buffer-file-name (current-buffer))))
(if (and filename (ecb-buffer-or-file-readable-p filename))
;; synchronizing for real filesource-buffers or indirect buffers of
;; real file buffers
;; Let us be smart: We synchronize only if sourcebuffer has changed
;; or if the argument FORCE is not nil
(when (or force
(not (equal (current-buffer)
ecb-examples-bufferinfo-last-file-buffer)))
;; set new last-file-buffer so we can check next time if changed
(setq ecb-examples-bufferinfo-last-file-buffer (current-buffer))
;; we display the file-infos for current source-buffer
(ecb-examples-print-file-attributes visible-buffer filename))
;; what should we do for non file buffers like help-buffers etc...
(setq ecb-examples-bufferinfo-last-file-buffer nil)
(ecb-examples-print-non-filebuffer visible-buffer
(buffer-name (current-buffer)))))
;; Now lets run the hooks in `ecb-examples-bufferinfo-buffer-sync-hook'
(run-hooks 'ecb-examples-bufferinfo-buffer-sync-hook)))
;; Two conveniance-commands for the user
(defun ecb-maximize-bufferinfo-window ()
"Maximize the bufferinfo-window.
I.e. delete all other ECB-windows, so only one ECB-window and the
edit-window\(s) are visible \(and maybe a compile-window). Works
also if the ECB-analyse-window is not visible in current layout."
(interactive)
(ecb-maximize-ecb-buffer ecb-examples-bufferinfo-buffer-name t))
(defun ecb-goto-bufferinfo-window ()
"Make the bufferinfo-window the current window."
(interactive)
(ecb-goto-ecb-window ecb-examples-bufferinfo-buffer-name))
;; The "window-dedicator"-function for the bufferinfo-buffer. See
;; `defecb-window-dedicator-to-ecb-buffer' for an explanation.
(defecb-window-dedicator-to-ecb-buffer ecb-examples-set-bufferinfo-buffer
ecb-examples-bufferinfo-buffer-name nil
"Set the buffer in the current window to the bufferinfo-buffer and make this
window dedicated for this buffer. Makes the buffer read-only."
;; activating the synchronization of the bufferinfo-window:
;; `ecb-activate-ecb-autocontrol-function' takes care of the possible
;; settings in `ecb-examples-bufferinfo-buffer-sync-delay'. Therefore we do
;; it here because then changes in ecb-examples-bufferinfo-buffer-sync-delay
;; are taken into account each time the bufferinfo buffer is set in the
;; layout (after each hiding/showing the ecb-window, each redrawing the
;; layout deactivating/activating ECB)
(ecb-activate-ecb-autocontrol-function ecb-examples-bufferinfo-buffer-sync-delay
'ecb-examples-bufferinfo-buffer-sync)
(switch-to-buffer (get-buffer-create ecb-examples-bufferinfo-buffer-name))
(setq buffer-read-only t))
;; ---------------------------------------------------------------------------
;; --- Code for the action buffer --------------------------------------------
;; ---------------------------------------------------------------------------
(defconst ecb-examples-action-buffer-name " *ECB action buffer*")
(defvar ecb-examples-action-buffer-keymap nil)
;; Two helper functions for creating a read-only buffer with a special local
;; key-map.
(defun ecb-examples-insert-text-in-action-buffer (text)
"Insert TEXT at point and make it highlight-able for mouse-movement over the
text."
(let ((p (point)))
(insert text)
(put-text-property p (+ p (length text)) 'mouse-face 'highlight)))
(defun ecb-examples-action-buffer-create ()
"Return the action-buffer with name `ecb-examples-action-buffer-name' If
the buffer does not exist it will be created. The buffer is read only,
contains two buttons \[prior] and \[next] and mouse-2 calls
`ecb-examples-action-buffer-clicked'."
(save-excursion
(if (get-buffer ecb-examples-action-buffer-name)
(get-buffer ecb-examples-action-buffer-name)
(let ((nop (function (lambda() (interactive)))))
(set-buffer (get-buffer-create ecb-examples-action-buffer-name))
;; we setup a local key-map
(make-local-variable 'ecb-examples-action-buffer-keymap)
(setq ecb-examples-action-buffer-keymap (make-sparse-keymap))
;; define mouse-2 with `ecb-examples-action-buffer-clicked'
(define-key ecb-examples-action-buffer-keymap
(if ecb-running-xemacs '(button2) [down-mouse-2])
'ecb-examples-action-buffer-clicked)
;; nop operations for the other mouse-2 operations with Emacs
(define-key ecb-examples-action-buffer-keymap [mouse-2] nop)
(define-key ecb-examples-action-buffer-keymap [double-mouse-2] nop)
(define-key ecb-examples-action-buffer-keymap [triple-mouse-2] nop)
(use-local-map ecb-examples-action-buffer-keymap)
;; insert the action buttons [prior] and [next] and make it read-only
(ecb-with-readonly-buffer (current-buffer)
(erase-buffer)
(ecb-examples-insert-text-in-action-buffer "[prior]")
(insert "\n")
(ecb-examples-insert-text-in-action-buffer "[next]")
(insert "\n"))
(current-buffer)))))
;; The function which performs the actions in the action-buffer
(defun ecb-examples-action-buffer-clicked (e)
"Perform the right action for the mouse-click.
If the user clicks onto \[prior] the buffer in the edit-window is scrolled up,
if clicks onto \[next] the buffer in the edit-window is scrolled down.
Otherwise nothing will be done."
(interactive "e")
(mouse-set-point e)
(let ((line (ecb-buffer-substring (ecb-line-beginning-pos) (ecb-line-end-pos))))
(save-match-data
(cond ((string-match "prior" line)
(ecb-select-edit-window)
(call-interactively 'scroll-down))
((string-match "next" line)
(ecb-select-edit-window)
(call-interactively 'scroll-up))
(t nil)))))
;; Two conveniance-commands for the user
(defun ecb-maximize-action-window ()
"Maximize the action-window.
I.e. delete all other ECB-windows, so only one ECB-window and the
edit-window\(s) are visible \(and maybe a compile-window). Works
also if the ECB-analyse-window is not visible in current layout."
(interactive)
(ecb-maximize-ecb-buffer ecb-examples-action-buffer-name t))
(defun ecb-goto-action-window ()
"Make the action-window the current window."
(interactive)
(ecb-goto-ecb-window ecb-examples-action-buffer-name))
;; The "window-dedicator"-function for the action-buffer. See
;; `defecb-window-dedicator-to-ecb-buffer' for an explanation.
(defecb-window-dedicator-to-ecb-buffer ecb-examples-set-action-buffer
ecb-examples-action-buffer-name nil
"Set the buffer in the current window to the action-buffer and make this
window dedicated for this buffer."
(switch-to-buffer (buffer-name (ecb-examples-action-buffer-create))))
;; ---------------------------------------------------------------------------
;; --- The layout definition with a bufferinfo- and a action-buffer -----------
;; ---------------------------------------------------------------------------
(ecb-layout-define "example-layout1" top
"This function creates the following layout:
-------------------------------------------------------
|Bufferinfo for <filename>: |[prior] |
|Type: file |[next] |
|Size: 23456 | |
|Modes: rw-rw-rw- | |
|-----------------------------------------------------|
| |
| |
| |
| |
| Edit |
| |
| |
| |
| |
-------------------------------------------------------
| |
| Compilation |
| |
-------------------------------------------------------
If you have not set a compilation-window in `ecb-compile-window-height' then
the layout contains no persistent compilation window and the other windows get a
little more place.
The top-left window always displays informations about the current buffer in
the selected edit-window. This window demonstrates how autom. synchronizing
a special window/buffer of a layout with current edit-window.
The top-right window offers two buttons which can be used with the middle
mouse-button to scroll the edit-window. This is not very senseful but it
demonstrates how to drive the edit-window with actions performed in a special
window/buffer of a layout."
;; dedicating the bufferinfo window to the bufferinfo-buffer
(ecb-examples-set-bufferinfo-buffer)
;; creating the action-window
(ecb-split-hor 0.75)
;; dedicating the action window to the action-buffer
(ecb-examples-set-action-buffer)
;; selecting the edit-window
(select-window (next-window)))
;; ---------------------------------------------------------------------------
;; --- (De)activating the new layout and the synchronization -----------------
;; ---------------------------------------------------------------------------
;; Code for saving and restoring the state before activation
(defvar ecb-examples-preact-layout nil)
(defvar ecb-examples-preact-windows-height nil)
(defvar ecb-examples-preact-compile-window-height nil)
(defun ecb-examples-preactivation-state(action)
(cond ((equal action 'save)
(setq ecb-examples-preact-layout
ecb-layout-name
ecb-examples-preact-windows-height
ecb-windows-height
ecb-examples-preact-compile-window-height
ecb-compile-window-height))
((equal action 'restore)
(setq ecb-layout-name
ecb-examples-preact-layout
ecb-windows-height
ecb-examples-preact-windows-height
ecb-compile-window-height
ecb-examples-preact-compile-window-height))))
;; Activation of the example. Because a set of new special windows integrated
;; in a new layout is often just the GUI of a complete tool (like a graphical
;; debugger) we demonstrate here the complete activation and deactivation of
;; such a tool or at least of the tool-GUI. We decide that the GUI of our
;; example tool needs a compile-window with height 5 lines and the height of
;; the special windows "row" on top should be exactly 6 lines (normally width
;; and height of the special windows should be a fraction of the frame, but
;; here we use 6 lines; You can change the code below to use a frame-fraction
;; of 0.2 instead of 6 hard lines, just try it!
(defun ecb-examples-activate ()
"Activate the new layout \"example-layout1\".
Set `ecb-compile-window-height' to 5 and `ecb-windows-height' to 6. The
preactivation-state is saved and will be restored by
`ecb-examples-deactivate'."
(interactive)
(assert (featurep 'ecb) nil
"ECB must be loaded!")
(assert ecb-minor-mode nil
"ECB must be activated!")
(assert (equal (selected-frame) ecb-frame) nil
"The ECB-frame must be selected!")
(assert (not (ecb-string= ecb-layout-name "example-layout1")) nil
"The examples-layout1 is already active!")
;; saving the state
(ecb-examples-preactivation-state 'save)
;; switch to our prefered layout
(setq ecb-windows-height 6)
(setq ecb-compile-window-height 8)
(let ((ecb-change-layout-preserves-compwin-state nil))
;; activating the synchronization of the bufferinfo-window is done in the
;; dedicator-function (see `ecb-examples-set-bufferinfo-buffer' for the
;; reason). So the synchronizing will be activated implicitly with the
;; layout-switch because this redraws the layout and this calls all
;; dedicator-functions.
(ecb-layout-switch "example-layout1")))
;; Deactivation of the example
(defun ecb-examples-deactivate ()
"Deactivate the new layout \"example-layout1\".
Stops `ecb-examples-bufferinfo-buffer-sync' and restore the state
as before activation."
(interactive)
(assert (featurep 'ecb) nil
"ECB must be loaded!")
(assert ecb-minor-mode nil
"ECB must be activated!")
(assert (equal (selected-frame) ecb-frame) nil
"The ECB-frame must be selected!")
(assert (ecb-string= ecb-layout-name "example-layout1") nil
"The example-layout1 is not active!")
(ecb-stop-autocontrol/sync-function 'ecb-examples-bufferinfo-buffer-sync)
(ecb-examples-preactivation-state 'restore)
(ecb-layout-switch ecb-layout-name))
;; ---------------------------------------------------------------------------
;; --- Providing the examples ------------------------------------------------
;; ---------------------------------------------------------------------------
(provide 'ecb-examples)
;; ecb-examples.el ends here

View File

@ -0,0 +1,768 @@
;;; ecb-face.el --- all face-options of ECB
;; Copyright (C) 2000 - 2005 Jesper Nordenberg,
;; Klaus Berndl,
;; Kevin A. Burton,
;; Free Software Foundation, Inc.
;; Author: Klaus Berndl <klaus.berndl@sdm.de>
;; Kevin A. Burton <burton@openprivacy.org>
;; Maintainer: Klaus Berndl <klaus.berndl@sdm.de>
;; Keywords: browser, code, programming, tools
;; Created: 2001
;; This program is free software; you can redistribute it and/or modify it under
;; the terms of the GNU General Public License as published by the Free Software
;; Foundation; either version 2, or (at your option) any later version.
;; This program is distributed in the hope that it will be useful, but WITHOUT
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
;; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
;; details.
;; You should have received a copy of the GNU General Public License along with
;; GNU Emacs; see the file COPYING. If not, write to the Free Software
;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
;; $Id$
;;; Commentary:
;; This file contains all options with type 'face and all face-definitions of
;; ECB.
;;; History
;;
;; For the ChangeLog of this file see the CVS-repository. For a complete
;; history of the ECB-package see the file NEWS.
;;; Code
(eval-when-compile
(require 'silentcomp))
(silentcomp-defun set-face-parent)
(silentcomp-defun make-face-bold)
(silentcomp-defun make-face)
(silentcomp-defun set-face-foreground)
(defgroup ecb-face-options nil
"Settings for all faces used in ECB."
:group 'ecb
:prefix "ecb-")
(defgroup ecb-faces nil
"Definitions of all ECB-faces"
:group 'ecb-face-options
:group 'faces
:prefix "ecb-")
(defmacro ecb-face-default (&optional height bold-p italic-p
inherit
fg-light-col fg-dark-col
bg-light-col bg-dark-col
fg-rest bg-rest
reverse-video-p)
"Macro for setting default values for an ECB face.
The parameters are set for the following display-types:
- ((class color) (background light)): HEIGHT, BOLD-P, ITALIC-P, INHERIT
FG-LIGHT-COL, BG-LIGHT-COL
- ((class color) (background dark)): HEIGHT, BOLD-P, ITALIC-P, INHERIT
FG-DARK-COL, BG-DARK-COL
- t: HEIGHT, BOLD-P, ITALIC-P, INHERIT, FG-REST, BG-REST, REVERSE-VIDEO."
`(list (list '((class color) (background light))
(append (if (and ,height (not ecb-running-xemacs)) (list :height ,height))
(if ,bold-p (if (not ecb-running-xemacs)
(list :weight 'bold)
(list :bold t)))
(if ,italic-p (if (not ecb-running-xemacs)
(list :slant 'italic)
(list :italic t)))
(if (and ,inherit (not ecb-running-xemacs)) (list :inherit ,inherit))
(if ,fg-light-col (list :foreground ,fg-light-col))
(if ,bg-light-col (list :background ,bg-light-col))))
(list '((class color) (background dark))
(append (if (and ,height (not ecb-running-xemacs)) (list :height ,height))
(if ,bold-p (if (not ecb-running-xemacs)
(list :weight 'bold)
(list :bold t)))
(if ,italic-p (if (not ecb-running-xemacs)
(list :slant 'italic)
(list :italic t)))
(if (and ,inherit (not ecb-running-xemacs)) (list :inherit ,inherit))
(if ,fg-dark-col (list :foreground ,fg-dark-col))
(if ,bg-dark-col (list :background ,bg-dark-col))))
(list 't (append (if (and ,height (not ecb-running-xemacs)) (list :height ,height))
(if ,bold-p (if (not ecb-running-xemacs)
(list :weight 'bold)
(list :bold t)))
(if ,italic-p (if (not ecb-running-xemacs)
(list :slant 'italic)
(list :italic t)))
(if (and ,inherit (not ecb-running-xemacs)) (list :inherit ,inherit))
(if ,fg-rest (list :foreground ,fg-rest))
(if ,bg-rest (list :foreground ,bg-rest))
(if ,reverse-video-p (list :reverse-video t))))))
(defface ecb-default-general-face (ecb-face-default 1.0)
"*Basic face for all ECB tree-buffers.
It´s recommended to define here the font-family, the font-size, the basic
color etc.
In GNU Emacs 21.X all faces \(even the face 'ecb-default-highlight-face') used
in the ECB tree-buffers inherit from this face. Therefore the default
attributes like font etc. of a face used in a tree-buffer can be very easily
changed with face 'ecb-default-general-face'.
With XEmacs and GNU Emacs 20.X there is no inheritance-feature but the options
`ecb-directories-general-face', `ecb-sources-general-face',
`ecb-methods-general-face' and `ecb-history-general-face' offer the choice to
use the face 'ecb-default-general-face' so also with XEmacs and GNU Emacs 20.X
the basic face-settings can be easily changed just by customizing the face
'ecb-default-general-face'!"
:group 'ecb-faces)
(defface ecb-tree-guide-line-face (ecb-face-default 1.0 nil nil
'ecb-default-general-face
"grey" "gray")
"*Face for the guide-lines in the tree-buffers."
:group 'ecb-faces)
(defcustom ecb-tree-guide-line-face 'ecb-tree-guide-line-face
"*Face for the guide-lines in the tree-buffers."
:group 'ecb-face-options)
(defface ecb-directories-general-face (ecb-face-default 1.0 nil nil
'ecb-default-general-face)
"*Basic face for the ECB directories buffer.
It´s recommended to define here the font-family, the font-size, the basic
color etc."
:group 'ecb-faces)
(defcustom ecb-directories-general-face 'ecb-default-general-face
"*Basic face for the ECB directories buffer.
This defines the basic face the whole directory buffer should displayed with.
If the face 'ecb-default-general-face' is used then the display of all
ECB-tree-buffers can be changed by modifying only the face
'ecb-default-general-face'.
Changes take first effect after finishing and reactivating ECB!"
:group 'ecb-face-options
:group 'ecb-directories
:type '(radio (const :tag "Use ecb-default-general-face"
:value ecb-default-general-face)
(face :tag "Special face"
:value ecb-directories-general-face)))
(defface ecb-sources-general-face (ecb-face-default 1.0 nil nil
'ecb-default-general-face)
"*Basic face for the ECB sources buffer.
It´s recommended to define here the font-family, the font-size, the basic
color etc."
:group 'ecb-faces)
(defcustom ecb-sources-general-face 'ecb-default-general-face
"*Basic face for the ECB sources buffer.
This defines the basic face the whole sources buffer should displayed with. If
the face 'ecb-default-general-face' is used then the display of all
ECB-tree-buffers can be changed by modifying only the face
'ecb-default-general-face'.
Changes take first effect after finishing and reactivating ECB!"
:group 'ecb-face-options
:group 'ecb-sources
:type 'face
:type '(radio (const :tag "Use ecb-default-general-face"
:value ecb-default-general-face)
(face :tag "Special face"
:value ecb-sources-general-face)))
(defface ecb-methods-general-face (ecb-face-default 1.0 nil nil
'ecb-default-general-face)
"*Basic face for the ECB methods buffer.
It´s recommended to define here the font-family, the font-size, the basic
color etc."
:group 'ecb-faces)
(defcustom ecb-methods-general-face 'ecb-default-general-face
"*Basic face for the ECB methods buffer.
This defines the basic face the whole methods buffer should displayed with. If
the face 'ecb-default-general-face' is used then the display of all
ECB-tree-buffers can be changed by modifying only the face
'ecb-default-general-face'.
Changes take first effect after finishing and reactivating ECB!"
:group 'ecb-face-options
:group 'ecb-methods
:type '(radio (const :tag "Use ecb-default-general-face"
:value ecb-default-general-face)
(face :tag "Special face"
:value ecb-methods-general-face)))
(defface ecb-history-general-face (ecb-face-default 1.0 nil nil
'ecb-default-general-face)
"*Basic face for the ECB history buffer.
It´s recommended to define here the font-family, the font-size, the basic
color etc."
:group 'ecb-faces)
(defcustom ecb-history-general-face 'ecb-default-general-face
"*Basic face for the ECB history buffer.
This defines the basic face the whole history buffer should displayed with. If
the face 'ecb-default-general-face' is used then the display of all
ECB-tree-buffers can be changed by modifying only the face
'ecb-default-general-face'.
Changes take first effect after finishing and reactivating ECB!"
:group 'ecb-face-options
:group 'ecb-history
:type '(radio (const :tag "Use ecb-default-general-face"
:value ecb-default-general-face)
(face :tag "Special face"
:value ecb-history-general-face)))
(defface ecb-history-bucket-node-face (ecb-face-default nil nil nil
'ecb-bucket-node-face)
"*Face used for displaying a bucket-node in the ECB-history-buffer.
In GNU Emacs 21.X this face inherits from the face 'ecb-bucket-node-face'.
With XEmacs and GNU Emacs 20.X there is no inheritance-feature so if the
buckets in the ECB-history-buffer should be displayed with the same basic
attributes set by 'ecb-bucket-node-face' this set of basic attributes have
to be set in 'ecb-history-bucket-node-face' too!"
:group 'ecb-faces)
(defcustom ecb-history-bucket-node-face 'ecb-history-bucket-node-face
"*Basic face for displaying a bucket-node in the ECB-history-buffer.
This defines the basic face for the bucket-nodes used to bucketize the
history-entries as defined with the option `ecb-history-make-buckets'.
Changes take first effect after finishing and reactivating ECB!"
:group 'ecb-face-options
:group 'ecb-history
:type '(radio (const :tag "Use ecb-bucket-node-face"
:value ecb-bucket-node-face)
(face :tag "Special face"
:value ecb-history-bucket-node-face)))
(defface ecb-history-bucket-node-dir-soure-path-face (ecb-face-default nil nil nil
'ecb-history-bucket-node-face
;; DarkCyan would be good too
"DarkMagenta"
"DarkMagenta")
"*Face used for displaying the source-path part in a directory-bucket.
In GNU Emacs 21.X this face inherits from the face 'ecb-history-bucket-node-face'.
With XEmacs and GNU Emacs 20.X there is no inheritance-feature so if the
buckets in the ECB-history-buffer should be displayed with the same basic
attributes set by 'ecb-history-bucket-node-face' this set of basic attributes have
to be set in 'ecb-history-bucket-node-dir-soure-path-face' too!"
:group 'ecb-faces)
(defcustom ecb-history-bucket-node-dir-soure-path-face 'ecb-history-bucket-node-dir-soure-path-face
"*Basic face for displaying the source-path part in a directory bucket.
This defines the face for the source-path part in a bucket-node of the
history-buffer if `ecb-history-make-buckets' is set to
'directory-with-source-path. For all other values of
`ecb-history-make-buckets' this option takes no effect.
Changes take first effect after finishing and reactivating ECB!"
:group 'ecb-face-options
:group 'ecb-history
:type '(radio (const :tag "Use ecb-history-bucket-node-face"
:value ecb-history-bucket-node-face)
(face :tag "Special face"
:value ecb-history-bucket-node-dir-soure-path-face)))
(defface ecb-history-indirect-buffer-face (ecb-face-default nil nil t
'ecb-history-general-face)
"*Define a face for displaying indirect buffers in the history buffer.
In GNU Emacs 21.X this face inherits from the face 'ecb-history-general-face'.
With XEmacs and GNU Emacs 20.X there is no inheritance-feature so if the
buckets in the ECB-history-buffer should be displayed with the same basic
attributes set by 'ecb-history-general-face' this set of basic attributes have
to be set in 'ecb-history-indirect-buffer-face' too!"
:group 'ecb-faces)
(defcustom ecb-history-indirect-buffer-face 'ecb-history-indirect-buffer-face
"*Face for indirect buffers in the history buffer."
:group 'ecb-history
:group 'ecb-face-options
:type '(radio (const :tag "Use ecb-history-general-face"
:value ecb-history-general-face)
(face :tag "Special face"
:value ecb-history-indirect-buffer-face)))
(defface ecb-history-dead-buffer-face (ecb-face-default nil nil nil
'ecb-history-general-face
"gray60"
"gray60"
nil nil
nil "gray60")
"*Define a face for history entries pointing to dead buffers.
In GNU Emacs 21.X this face inherits from the face 'ecb-history-general-face'.
With XEmacs and GNU Emacs 20.X there is no inheritance-feature so if the
buckets in the ECB-history-buffer should be displayed with the same basic
attributes set by 'ecb-history-general-face' this set of basic attributes have
to be set in 'ecb-history-dead-buffer-face' too!"
:group 'ecb-faces)
(defcustom ecb-history-dead-buffer-face 'ecb-history-dead-buffer-face
"*Face for history entries pointing to dead buffers."
:group 'ecb-history
:group 'ecb-face-options
:type '(radio (const :tag "Use ecb-history-general-face"
:value ecb-history-general-face)
(face :tag "Special face"
:value ecb-history-dead-buffer-face)))
(defface ecb-default-highlight-face (ecb-face-default nil nil nil
nil ;'ecb-default-general-face
"yellow" nil
"cornflower blue" "magenta"
nil nil t)
"*Define basic face for highlighting the selected node in a tree-buffer.
In GNU Emacs 21.X all highlighting faces in the ECB tree-buffers inherit from
this face. Therefore the default attributes like font etc. of a face used in a
tree-buffer for highlighting the current tag can be very easily changed with
face 'ecb-default-highlight-face'.
With XEmacs and GNU Emacs 20.X there is no inheritance-feature but the options
`ecb-directory-face', `ecb-source-face', `ecb-method-face' and
`ecb-history-face' offer the choice to use the face
'ecb-default-highlight-face' so also with XEmacs and GNU Emacs 20.X the basic
face-settings can be easily changed just by customizing the face
'ecb-default-highlight-face'!"
:group 'ecb-faces)
(defface ecb-directory-face (ecb-face-default nil nil nil
'ecb-default-highlight-face
"yellow" nil
"cornflower blue" "magenta"
nil nil t)
"*Define face used for highlighting current dir in directories buffer."
:group 'ecb-faces)
(defcustom ecb-directory-face 'ecb-default-highlight-face
"*Face used for highlighting current directory in the directories-buffer.
If the face 'ecb-default-highlight-face' is used then the display of all
ECB-tree-buffers can be changed by modifying only the face
'ecb-default-highlight-face'.
Changes take first effect after finishing and reactivating ECB!"
:group 'ecb-face-options
:group 'ecb-directories
:type '(radio (const :tag "Use ecb-default-highlight-face"
:value ecb-default-highlight-face)
(face :tag "Special face"
:value ecb-directory-face)))
(defface ecb-source-face (ecb-face-default nil nil nil
'ecb-default-highlight-face
"yellow" nil
"cornflower blue" "magenta"
nil nil t)
"*Define face used for highlighting current source in the sources buffer."
:group 'ecb-faces)
(defcustom ecb-source-face 'ecb-default-highlight-face
"*Face used for highlighting current source in the sources buffer.
If the face 'ecb-default-highlight-face' is used then the display of all
ECB-tree-buffers can be changed by modifying only the face
'ecb-default-highlight-face'.
Changes take first effect after finishing and reactivating ECB!"
:group 'ecb-face-options
:group 'ecb-sources
:type '(radio (const :tag "Use ecb-default-highlight-face"
:value ecb-default-highlight-face)
(face :tag "Special face"
:value ecb-sources-face)))
(defface ecb-method-face (ecb-face-default nil nil nil
'ecb-default-highlight-face
"yellow" nil
"cornflower blue" "magenta"
nil nil t)
"*Define face used for highlighting current tag in the methods buffer."
:group 'ecb-faces)
(defcustom ecb-method-face 'ecb-default-highlight-face
"*Face used for highlighting current tag in the methods buffer.
If the face 'ecb-default-highlight-face' is used then the display of all
ECB-tree-buffers can be changed by modifying only the face
'ecb-default-highlight-face'.
Changes take first effect after finishing and reactivating ECB!"
:group 'ecb-face-options
:group 'ecb-methods
:type '(radio (const :tag "Use ecb-default-highlight-face"
:value ecb-default-highlight-face)
(face :tag "Special face"
:value ecb-method-face)))
(defface ecb-method-non-semantic-face (ecb-face-default nil nil nil
'ecb-methods-general-face
"brown" "brown")
"*Define face used for displaying tags of non-semantic-sources."
:group 'ecb-faces)
(defcustom ecb-method-non-semantic-face 'speedbar-tag-face
"*Face used for for displaying tags of non-semantic-sources.
Default is the face used by speedbar for tags.
Changes take first effect after finishing and reactivating ECB!"
:group 'ecb-face-options
:group 'ecb-methods
:type '(radio (const :tag "Use ecb-default-highlight-face"
:value ecb-default-highlight-face)
(face :tag "Special face"
:value ecb-method-face)))
(defface ecb-history-face (ecb-face-default nil nil nil
'ecb-default-highlight-face
"yellow" nil
"cornflower blue" "magenta"
nil nil t)
"*Define face used for highlighting current entry in the history buffer."
:group 'ecb-faces)
(defcustom ecb-history-face 'ecb-default-highlight-face
"*Face used for highlighting current entry in the history buffer.
If the face 'ecb-default-highlight-face' is used then the display of all
ECB-tree-buffers can be changed by modifying only the face
'ecb-default-highlight-face'.
Changes take first effect after finishing and reactivating ECB!"
:group 'ecb-face-options
:group 'ecb-history
:type '(radio (const :tag "Use ecb-default-highlight-face"
:value ecb-default-highlight-face)
(face :tag "Special face"
:value ecb-history-face)))
(defface ecb-analyse-face (ecb-face-default nil nil nil
'ecb-default-highlight-face
"yellow" nil
"cornflower blue" "magenta"
nil nil t)
"*Define face used for highlighting current entry in the analyse buffer."
:group 'ecb-faces)
(defcustom ecb-analyse-face 'ecb-default-highlight-face
"*Face used for highlighting current entry in the analyse buffer.
If the face 'ecb-default-highlight-face' is used then the display of all
ECB-tree-buffers can be changed by modifying only the face
'ecb-default-highlight-face'.
Changes take first effect after finishing and reactivating ECB!"
:group 'ecb-face-options
:group 'ecb-analyse
:type '(radio (const :tag "Use ecb-default-highlight-face"
:value ecb-default-highlight-face)
(face :tag "Special face"
:value ecb-analyse-face)))
(defface ecb-analyse-general-face (ecb-face-default 1.0 nil nil
'ecb-default-general-face)
"*Basic face for the ECB analyse buffer.
It´s recommended to define here the font-family, the font-size, the basic
color etc."
:group 'ecb-faces)
(defcustom ecb-analyse-general-face 'ecb-default-general-face
"*Basic face for the ECB analyse buffer.
This defines the basic face the whole history buffer should displayed with. If
the face 'ecb-default-general-face' is used then the display of all
ECB-tree-buffers can be changed by modifying only the face
'ecb-default-general-face'.
Changes take first effect after finishing and reactivating ECB!"
:group 'ecb-face-options
:group 'ecb-analyse
:type '(radio (const :tag "Use ecb-default-general-face"
:value ecb-default-general-face)
(face :tag "Special face"
:value ecb-analyse-general-face)))
(defface ecb-analyse-bucket-element-face (ecb-face-default nil nil nil
'ecb-analyse-general-face
"brown")
"*Face used for displaying elements of buckets in the ECB-analyse-buffer.
In GNU Emacs 21.X this face inherits from the face 'ecb-default-general-face'.
With XEmacs and GNU Emacs 20.X there is no inheritance-feature so if the
buckets in the ECB-buffers should be displayed with the same basic
attributes set by 'ecb-default-general-face' this set of basic attributes have
to be set in 'ecb-analyse-bucket-node-face' too!"
:group 'ecb-faces)
(defcustom ecb-analyse-bucket-element-face 'ecb-analyse-bucket-element-face
"*Basic face for displaying elements of buckets in the ECB-analyse-buffer.
This defines the basic face for the elements of category-buckets like Context,
Prefix, Completions etc. in the ECB-analyse-buffer.
Changes take first effect after finishing and reactivating ECB!"
:group 'ecb-face-options
:group 'ecb-analyse
:type '(radio (const :tag "Use ecb-default-general-face"
:value ecb-default-general-face)
(face :tag "Special face"
:value ecb-analyse-bucket-element-face)))
(defface ecb-analyse-bucket-node-face (ecb-face-default nil t nil
'ecb-bucket-node-face)
"*Face used for displaying a bucket-node in the ECB-analyse-buffer.
In GNU Emacs >= 21.X this face inherits from the face 'ecb-bucket-node-face'.
With XEmacs and GNU Emacs 20.X there is no inheritance-feature so if the
buckets in the ECB-buffers should be displayed with the same basic
attributes set by 'ecb-bucket-node-face' this set of basic attributes have
to be set in 'ecb-analyse-bucket-node-face' too!"
:group 'ecb-faces)
(defcustom ecb-analyse-bucket-node-face 'ecb-analyse-bucket-node-face
"*Basic face for displaying a bucket-node in the ECB-analyse-buffer.
This defines the basic face for the bucket-nodes like Context, Prefix,
Completions etc. in the ECB-analyse-buffer.
Changes take first effect after finishing and reactivating ECB!"
:group 'ecb-face-options
:group 'ecb-analyse
:type '(radio (const :tag "Use ecb-bucket-node-face"
:value ecb-bucket-node-face)
(face :tag "Special face"
:value ecb-analyse-bucket-node-face)))
(defface ecb-symboldef-symbol-face (ecb-face-default nil t nil
'ecb-default-general-face)
"*Define face used for the symbol itself in the symboldef-buffer.
In GNU Emacs >= 21.X this face inherits from the face 'ecb-default-general-face'.
With XEmacs and GNU Emacs 20.X there is no inheritance-feature so if the
buckets in the ECB-buffers should be displayed with the same basic
attributes set by 'ecb-default-general-face' this set of basic attributes have
to be set in 'ecb-analyse-bucket-node-face' too!"
:group 'ecb-faces)
(defcustom ecb-symboldef-symbol-face 'use-font-lock-face
"*Which face should be used for the symbol itself in the symboldef-buffer.
There are two choices: Either a face or the special symbol 'use-font-lock-face
whereas the latter one means that ECB uses that face font-lock uses for
fontifying the symbol \(e.g. font-lock-function-name-face for a function
symbol or font-lock-variable-name-face for a variable symbol)."
:group 'ecb-face-options
:group 'ecb-symboldef
:type '(radio (const :tag "No special face" :value nil)
(const :tag "Use font-lock face"
:value use-font-lock-face)
(face :tag "Use face"
:value ecb-symboldef-symbol-face)))
(defface ecb-symboldef-prototype-face (ecb-face-default nil t nil
'ecb-default-general-face)
"*Define face used for the prototype of symbol in the symboldef-buffer.
In GNU Emacs >= 21.X this face inherits from the face 'ecb-default-general-face'.
With XEmacs and GNU Emacs 20.X there is no inheritance-feature so if the
buckets in the ECB-buffers should be displayed with the same basic
attributes set by 'ecb-default-general-face' this set of basic attributes have
to be set in 'ecb-analyse-bucket-node-face' too!"
:group 'ecb-faces)
(defcustom ecb-symboldef-prototype-face nil
"*Which face should be used for the symbol prototype in the symboldef-buffer.
The prototype can be the function prototype in case of a function or method or
- in case of a variable - the type of the variable \(in case of a typed
language)."
:group 'ecb-face-options
:group 'ecb-symboldef
:type '(radio (const :tag "No special face" :value nil)
(const :tag "Use ecb-symboldef-prototype-face"
:value ecb-symboldef-prototype-face)
(face :tag "Special face")))
(defface ecb-tag-header-face (ecb-face-default nil nil nil nil nil nil
"SeaGreen1" "SeaGreen1"
nil nil t)
"*Define face used for highlighting the tag header.
The tag header is the first line of the tag which is highlighted after
jumping to it by clicking onto a node in the methods buffer."
:group 'ecb-faces)
(defcustom ecb-tag-header-face 'ecb-tag-header-face
"*Face used for highlighting the tag header.
The tag header is the first line of the tag which is highlighted after
jumping to it by clicking onto a node in the methods buffer."
:group 'ecb-face-options
:group 'ecb-methods
:type 'face)
(defface ecb-source-in-directories-buffer-face (ecb-face-default nil nil nil
'ecb-directories-general-face
"medium blue"
"LightBlue1"
nil nil
nil "gray")
"*Define a face for displaying sources in the directories buffer."
:group 'ecb-faces)
(defcustom ecb-source-in-directories-buffer-face 'ecb-source-in-directories-buffer-face
"*Face for source files in the directories buffer."
:group 'ecb-directories
:group 'ecb-face-options
:type 'face)
(defface ecb-source-read-only-face (ecb-face-default nil nil t
'ecb-default-general-face)
"*Define a face for displaying read-only sources."
:group 'ecb-faces)
(defcustom ecb-source-read-only-face 'ecb-source-read-only-face
"*Face for read-only sources."
:group 'ecb-sources
:group 'ecb-directories
:group 'ecb-face-options
:type 'face)
(defface ecb-directory-not-accessible-face (ecb-face-default nil nil nil
'ecb-directories-general-face
"gray60"
"gray60"
nil nil
nil "gray60")
"*Define a face for displaying not accessible dirs in the directories buffer."
:group 'ecb-faces)
(defcustom ecb-directory-not-accessible-face 'ecb-directory-not-accessible-face
"*Face for not accessible dirs in the directories buffer."
:group 'ecb-directories
:group 'ecb-face-options
:type 'face)
(defface ecb-type-tag-class-face (ecb-face-default nil t)
"*Define face used with option `ecb-type-tag-display'."
:group 'ecb-faces)
(defface ecb-type-tag-interface-face (ecb-face-default nil t)
"*Define face used with option `ecb-type-tag-display'."
:group 'ecb-faces)
(defface ecb-type-tag-struct-face (ecb-face-default nil t)
"*Define face used with option `ecb-type-tag-display'."
:group 'ecb-faces)
(defface ecb-type-tag-typedef-face (ecb-face-default nil t)
"*Define face used with option `ecb-type-tag-display'."
:group 'ecb-faces)
(defface ecb-type-tag-union-face (ecb-face-default nil t)
"*Define face used with option `ecb-type-tag-display'."
:group 'ecb-faces)
(defface ecb-type-tag-enum-face (ecb-face-default nil t)
"*Define face used with option `ecb-type-tag-display'."
:group 'ecb-faces)
(defface ecb-type-tag-group-face (ecb-face-default nil t nil nil
(if ecb-running-xemacs
"dimgray"
"dim gray")
(if ecb-running-xemacs
"dimgray"
"dim gray"))
"*Define face used with option `ecb-type-tag-display'."
:group 'ecb-faces)
(defface ecb-bucket-node-face (ecb-face-default nil t nil
'ecb-default-general-face)
"*Face used for displaying bucket-nodes in the ECB-buffers.
See also `ecb-bucket-node-display'.
In GNU Emacs 21.X this face inherits from the face 'ecb-default-general-face'.
With XEmacs and GNU Emacs 20.X there is no inheritance-feature so if the
buckets in the ECB-buffers should be displayed with the same basic
attributes set by 'ecb-default-general-face' this set of basic attributes have
to be set in 'ecb-bucket-node-face' too!"
:group 'ecb-faces)
;; - mode-line faces-------------------------------------------
;; For XEmacs a face in the modeline should really inhertit from the face
;; 'modeline!
;; TODO: Klaus Berndl <klaus.berndl@sdm.de>: Currently with XEmacs 21.4.X
;; set-face-parent MUST be before defface - therefore we have to use make-face
;; first and then adding the values to this face we would have also added
;; by`defface. The defface is here only used to make this face customizable!
;; Maybe later XEmacs-versions support the parent-keyword with defface then we
;; can change back this ugly hack.
(when ecb-running-xemacs
(make-face 'ecb-mode-line-win-nr-face)
(set-face-parent 'ecb-mode-line-win-nr-face 'modeline nil '(default))
(make-face-bold 'ecb-mode-line-win-nr-face))
(defface ecb-mode-line-win-nr-face (ecb-face-default nil t)
"*Define face for the window-number in the mode-line.
See `ecb-mode-line-display-window-number'."
:group 'ecb-faces)
(defcustom ecb-mode-line-win-nr-face 'ecb-mode-line-win-nr-face
"*Face used for the window-number in the mode-line.
See `ecb-mode-line-display-window-number'. For XEmacs the face should inherit
from the face 'modeline \(see `set-face-parent')!"
:group 'ecb-mode-line
:group 'ecb-face-options
:type 'face)
(when ecb-running-xemacs
(make-face 'ecb-mode-line-prefix-face)
(set-face-parent 'ecb-mode-line-prefix-face 'modeline nil '(default))
(set-face-foreground 'ecb-mode-line-prefix-face "forestgreen"))
;; nil '(default color win)))
(defface ecb-mode-line-prefix-face (ecb-face-default nil nil nil nil
"forestgreen"
"forestgreen")
"*Define face for the prefix in the mode-line.
See `ecb-mode-line-prefixes'."
:group 'ecb-faces)
(defcustom ecb-mode-line-prefix-face 'ecb-mode-line-prefix-face
"*Face used for the prefix in the mode-line.
See `ecb-mode-line-prefixes'. For XEmacs the face should inherit from the face
'modeline \(see `set-face-parent')!"
:group 'ecb-mode-line
:group 'ecb-face-options
:type 'face)
(when ecb-running-xemacs
(make-face 'ecb-mode-line-data-face)
(set-face-parent 'ecb-mode-line-data-face 'modeline nil '(default)))
(defface ecb-mode-line-data-face (ecb-face-default)
"*Define face for the data in the mode-line.
See `ecb-mode-line-data'."
:group 'ecb-faces)
(defcustom ecb-mode-line-data-face 'ecb-mode-line-data-face
"*Face used for the data in the mode-line.
See `ecb-mode-line-data'. For XEmacs the face should inherit from the face
'modeline \(see `set-face-parent')!"
:group 'ecb-mode-line
:group 'ecb-face-options
:type 'face)
(silentcomp-provide 'ecb-face)
;;; ecb-face.el ends here

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,458 @@
;;; ecb-help.el --- online help for ECB and bug reporting
;; Copyright (C) 2000 - 2005 Jesper Nordenberg,
;; Klaus Berndl,
;; Kevin A. Burton,
;; Free Software Foundation, Inc.
;; Author: Klaus Berndl <klaus.berndl@sdm.de>
;; Kevin A. Burton <burton@openprivacy.org>
;; Maintainer: Klaus Berndl <klaus.berndl@sdm.de>
;; Keywords: browser, code, programming, tools
;; Created: 2001
;; This program is free software; you can redistribute it and/or modify it under
;; the terms of the GNU General Public License as published by the Free Software
;; Foundation; either version 2, or (at your option) any later version.
;; This program is distributed in the hope that it will be useful, but WITHOUT
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
;; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
;; details.
;; You should have received a copy of the GNU General Public License along with
;; GNU Emacs; see the file COPYING. If not, write to the Free Software
;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
;; $Id$
;;; Commentary:
;;
;; Contains all online-help for ECB (stolen something from recentf.el)
;;; History
;;
;; For the ChangeLog of this file see the CVS-repository. For a complete
;; history of the ECB-package see the file NEWS.
;;; Code
(eval-when-compile
(require 'silentcomp))
(require 'ecb-layout)
(require 'ecb-util)
;; XEmacs and Emacs 20.X
(silentcomp-defvar browse-url-new-window-p)
(silentcomp-defun browse-url)
;; Emacs 21
(silentcomp-defvar browse-url-new-window-flag)
;; JDE
(silentcomp-defvar jde-version)
;; mail and reporter
(silentcomp-defun mail-subject)
(silentcomp-defun mail-text)
(silentcomp-defun reporter-submit-bug-report)
(defconst ecb-help-info-start-file "ecb.info")
(defconst ecb-help-html-start-file "ecb.html")
(defconst ecb-help-info-subdir "./info-help/")
(defconst ecb-help-html-subdir "./html-help/")
(defgroup ecb-help nil
"Settings for the ECB online help"
:group 'ecb)
(defcustom ecb-show-help-format 'info
"*The format `ecb-show-help' shows its online help.
Allowed values are 'info \(for the Info format) and 'html \(for HTML format).
If the value is 'html then `browse-url-browser-function' says which browser is
used.
Note: If you got ECB as a standard XEmacs-package maybe the
HTML-online-documentation is not included."
:group 'ecb-help
:group 'ecb-most-important
:type '(choice :tag "Online-help format" :menu-tag "Online-help format"
(const :tag "Info" :value info)
(const :tag "Html" :value html)))
(defcustom ecb-help-info-path (concat
(if ecb-running-xemacs
(if (file-exists-p
(concat ecb-ecb-dir
ecb-help-info-subdir
ecb-help-info-start-file))
ecb-help-info-subdir
"../../info/")
ecb-help-info-subdir)
ecb-help-info-start-file)
"*Path where the ECB online help in info format resides.
This must be the location of the file \"ecb.info\" which comes with the ECB
distribution. If is installed by unpacking the archive available on the ECB
web-site then this is the subdir `ecb-help-info-subdir' of the installation
directory of ECB. If it is installed as XEmacs-package \(e.g. via the package
manager of XEmacs) then this is probably the directory \"../../info/\"
\(relativ to the Elisp directory of ECB).
The path can either be an absolute path or a path relative to the directory
where the Elisp files of ECB are.
Normally there should be no need to change this option!"
:group 'ecb-help
:type 'file)
(defcustom ecb-help-html-path
(if (not ecb-running-xemacs)
(concat ecb-help-html-subdir ecb-help-html-start-file)
(cond ((file-exists-p
(concat ecb-ecb-dir
ecb-help-html-subdir
ecb-help-html-start-file))
(concat ecb-help-html-subdir ecb-help-html-start-file))
((file-exists-p
(concat ecb-ecb-dir
"../../html/"
ecb-help-html-start-file))
(concat "../../html/" ecb-help-html-start-file))
((file-exists-p
(concat ecb-ecb-dir
"../../html/ecb/index.html"))
"../../html/ecb/index.html")
(t
(concat "../../etc/ecb/html/" ecb-help-html-start-file))))
"*Path where the ECB online help in HTML format resides.
This must be the location of the file \"index.html\" which comes with the ECB
distribution. If is installed by unpacking the archive available on the ECB
web-site then this is the subdir `ecb-help-html-subdir' of the installation
directory of ECB. If it is installed as XEmacs-package \(e.g. via the package
manager of XEmacs) then this is probably either the directory \"../../html/\" or
\"../../etc/ecb/html/\" \(both relative to the Elisp directory of ECB).
The path can either be an absolute path or a path relative to the directory
where the Elisp files of ECB are.
Normally there should be no need to change this option!"
:group 'ecb-help
:type 'file)
(defun ecb-info (info-file &optional no-file-not-exist-err)
"Starts `info' with INFO-FILE. If INFO-FILE does not exists then nil is
returned otherwise true. If NO-FILE-NOT-EXIST-ERR is not nil then just nil is
returned if INFO-FILE does not exist otherwise an error is reported."
(if (file-exists-p info-file)
(prog1 t
(info info-file))
(unless no-file-not-exist-err
(ecb-error "Info file %s does not exists!" info-file))
nil))
(defun ecb-browse-html-file (html-file &optional no-file-not-exist-err)
"Opens HTML-FILE in the standard-webbrowser with `browse-url'. If INFO-FILE
does not exists then nil is returned otherwise true. If NO-FILE-NOT-EXIST-ERR
is not nil then just nil is returned if HTML-FILE does not exist otherwise an
error is reported."
(if (file-exists-p html-file)
(prog1 t
(if (and (locate-library "browse-url")
(require 'browse-url)
(fboundp 'browse-url))
(browse-url (concat "file://" html-file)
(if (boundp 'browse-url-new-window-flag)
browse-url-new-window-flag
browse-url-new-window-p))
(ecb-error "Function 'browse-url needed for displaying HTML!")))
(unless no-file-not-exist-err
(ecb-error "HTML file %s does not exists!" html-file))
nil))
;;;###autoload
(defun ecb-show-help (&optional format)
"Shows the online help of ECB in Info or HTML-format.
The format depends on the setting in `ecb-show-help-format'. If called with
prefix argument, i.e. if FORMAT is not nil then the user is prompted to choose
the format of the help \(Info or Html).
If an error about not finding the needed help-file occurs please take a look
at the options `ecb-help-info-start-file' and `ecb-help-html-start-file'!
Note: If you got ECB as a standard XEmacs-package maybe the
HTML-online-documentation is not included."
(interactive "P")
(let ((f (if format
(intern (ecb-query-string "Choose format of online-help:"
(if (equal 'ecb-show-help-format
'html)
'("info" "html")
'("html" "info"))))
ecb-show-help-format))
(info-path-abs (expand-file-name
(save-match-data
(if (or (string-match "^\\." ecb-help-info-path)
(string-match (concat "^"
(regexp-quote
ecb-help-info-start-file))
ecb-help-info-path))
(concat ecb-ecb-dir ecb-help-info-path)
ecb-help-info-path))))
(html-path-abs (expand-file-name
(save-match-data
(if (or (string-match "^\\." ecb-help-html-path)
(string-match (concat "^"
(regexp-quote
ecb-help-html-start-file))
ecb-help-html-path))
(concat ecb-ecb-dir ecb-help-html-path)
ecb-help-html-path)))))
(if (equal f 'info)
(ecb-info info-path-abs)
(message "Opening ECB online-help in a web-browser...")
(ecb-browse-html-file html-path-abs))))
;;
;; Problem reporting functions stolen from JDEE
;;
(defvar ecb-problem-report-mail-address "ecb-list@lists.sourceforge.net" )
(defconst ecb-problem-report-message
"Please enter the details of your bug report here")
(defun ecb-submit-problem-report()
"Submit a problem report for the ECB to the ECB mailing-list.
This command generates in the edit-window a problem-report which contains
already the current values of all ECB options, the current backtrace-buffer if
there is any and the current message-buffer. You will be asked for a
problem-report subject and then you must insert a description of the problem.
Please describe the problem as detailed as possible!
*IMPORTANT*: Cause of extra appearance of SPAM in the mailing-lists,
SourceForge has changed its policy: Now it is only possible to post to the
mailing-list for users who have subscribed this mailing-list. So please be
aware you will not be able to send comments, bug reports and improvement
suggestions before you have subscribed the ECB-mailing-list. See the section
\"Mailing-list\" at the ECB-website at http://ecb.sourceforge.net how to do
this."
(interactive)
(when (or ecb-minor-mode
(y-or-n-p "ECB should be active when submitting a problem-report. Force report? "))
(if (and (equal ecb-frame (selected-frame))
(not (ecb-point-in-edit-window-number)))
(ecb-select-edit-window))
(if (not (locate-library "reporter"))
(ecb-error "You need the reporter.el package to submit a bugreport for ECB!")
(require 'reporter)
(progn
(message "Preparing problem report...")
;;prepare the basic buffer
(reporter-submit-bug-report
ecb-problem-report-mail-address
(format "ECB: %s, CEDET: %s, semantic: %s, eieio: %s, speedbar: %s, JDEE: %s"
ecb-version
cedet-version
semantic-version
eieio-version
speedbar-version
(if (boundp 'jde-version)
jde-version
"No JDEE"))
(ecb-problem-report-list-all-variables)
nil
'ecb-problem-report-post-hook
ecb-problem-report-message)
(if (equal ecb-frame (selected-frame))
(ecb-redraw-layout))
(mail-subject)
(insert (read-string "Problem report subject: "
(format "ECB-%s -- " ecb-version)))
(mail-text)
(search-forward ecb-problem-report-message)
(end-of-line)
(message "Preparing bug report...done")))))
(defun ecb-problem-report-post-hook()
"Function run the reporter package done its work. It looks for a message- and
a backtrace-buffer and inserts the contents of that."
(save-excursion
(goto-char (point-min))
;; if the mail-packages has already inserted a signature we must not go to
;; the buffer-end but just before the signature
(if (re-search-forward "^--[ \t]*$" nil t)
(progn
(beginning-of-line)
(insert "\n\n\n")
(forward-line -2))
(goto-char (point-max))
(insert "\n\n"))
;; ecb-faces
(let ((ecb-face-list (delq nil (mapcar (function
(lambda (f)
(if (save-match-data
(string-match "^ecb-"
(symbol-name f)))
f
nil)))
(face-list)))))
(insert "\n\n-----------------------------------------------------\n")
(insert "The attributes of the ECB-faces are:\n\n")
(dolist (f ecb-face-list)
(when f
(insert (format "%s: %s\n"
(symbol-name f)
(funcall (if ecb-running-xemacs
'face-custom-attributes-get
'custom-face-attributes-get)
f ecb-frame)))))
(insert "\n-----------------------------------------------------\n\n"))
(let* ((messages-buffer
(get-buffer
(if ecb-running-xemacs " *Message-Log*" "*Messages*")))
(backtrace-buffer (ecb-buffer-obj "*Backtrace*"))
(tag-dump-buffer (ecb-buffer-obj "*ecb-tag-dump*")))
;;insert the contents of the tag-dump buffer if it is there.
(insert "\n\n-----------------------------------------------------\n")
(if tag-dump-buffer
(progn
(insert "The contents of the *ecb-tag-dump* buffer were\n\n")
(insert-buffer-substring tag-dump-buffer)
;; we must force the mark
;;(goto-char (mark t))
(insert "\nEnd Insert *ecb-tag-dump* buffer" ))
(insert "There was no *ecb-tag-dump* buffer" ))
(insert "\n-----------------------------------------------------\n\n")
;;insert the contents of the trace-output buffer if it is there.
;; (insert "\n\n-----------------------------------------------------\n")
;; (if tag-dump-buffer
;; (progn
;; (insert "The contents of the *ecb-tag-dump* buffer were\n\n")
;; (insert-buffer-substring tag-dump-buffer)
;; ;; we must force the mark
;; (goto-char (mark t))
;; (insert "\nEnd Insert *ecb-tag-dump* buffer" ))
;; (insert "There was no *ecb-tag-dump* buffer" ))
;; (insert "\n-----------------------------------------------------\n\n")
;;insert the contents of the backtrace buffer if it is there.
(insert "\n\n-----------------------------------------------------\n")
(if backtrace-buffer
(progn
(insert "The contents of the *Backtrace* buffer were\n\n")
(insert-buffer-substring backtrace-buffer)
;; we must force the mark
;;(goto-char (mark t))
(insert "\nEnd Insert *Backtrace* buffer" ))
(insert "There was no *Backtrace* buffer" ))
(insert "\n-----------------------------------------------------\n\n")
;;insert the contents of the messages buffer if it is there.
(insert "-----------------------------------------------------\n")
(if messages-buffer
(progn
(insert "The contents of the *Messages* buffer were\n\n")
(insert-buffer-substring messages-buffer)
;;(goto-char (mark t))
(insert "\nEnd Insert *Messages* buffer" ))
(insert "There was no *Messages* buffer" ))
(insert "\n-----------------------------------------------------\n\n"))))
(defun ecb-problem-report-list-all-variables()
"List all variables starting with `ecb-' and some other variables which
could be interesting for support."
(let ((emacs-vars (sort (delete nil
`(pre-command-hook
post-command-hook
after-save-hook
help-mode-hook
compilation-mode-hook
truncate-partial-width-windows
truncate-lines
,(if (boundp 'compilation-window-height)
'compilation-window-height)
,(if (boundp 'temp-buffer-max-height)
'temp-buffer-max-height)
auto-mode-alist
,(if (boundp 'c-mode-hook)
'c-mode-hook)
,(if (boundp 'c++-mode-hook)
'c++-mode-hook)
,(if (boundp 'c-mode-common-hook)
'c-mode-common-hook)
,(if (boundp 'java-mode-hook)
'java-mode-hook)
,(if (boundp 'jde-mode-hook)
'jde-mode-hook)
system-type
window-system
max-specpdl-size
max-lisp-eval-depth
,(if (boundp 'ediff-quit-hook)
'ediff-quit-hook)))
(function (lambda (l r)
(ecb-string< (symbol-name l)
(symbol-name r))))))
(semantic-vars (sort (delete nil
`(semantic-after-toplevel-cache-change-hook
semantic-after-partial-cache-change-hook
semantic-format-face-alist
semantic-uml-colon-string
semantic-orphaned-member-metaparent-type))
(function (lambda (l r)
(ecb-string< (symbol-name l)
(symbol-name r))))))
(speedbar-vars (sort '(speedbar-dynamic-tags-function-list
speedbar-tag-hierarchy-method
speedbar-tag-group-name-minimum-length
speedbar-tag-split-minimum-length
speedbar-tag-regroup-maximum-length
speedbar-fetch-etags-command
speedbar-fetch-etags-arguments
speedbar-fetch-etags-parse-list)
(function (lambda (l r)
(ecb-string< (symbol-name l)
(symbol-name r))))))
(ecb-options (mapcar
'intern
(sort
(let (completion-ignore-case)
(all-completions "ecb-" obarray 'user-variable-p))
'ecb-string<)))
(ecb-internal-vars (sort '(ecb-path-selected-directory
ecb-path-selected-source
ecb-use-semantic-grouping
ecb-autocontrol/sync-fcn-register
ecb-idle-timer-alist
ecb-post-command-hooks
ecb-pre-command-hooks
ecb-max-specpdl-size-old
ecb-max-lisp-eval-depth-old
ecb-minor-mode
ecb-adviced-function-sets
ecb-adviced-functions
ecb-last-window-config-before-deactivation
ecb-edit-area-creators
ecb-partial-reparse-always-full-fetch
ecb-stealthy-function-list
ecb-stealthy-function-state-alist
ecb-windows-hidden-state
ecb-toggle-layout-state
ecb-tree-buffer-creators
ecb-ecb-buffer-registry
ecb-current-maximized-ecb-buffer-name
ecb-special-ecb-buffers-of-current-layout)
(function (lambda (l r)
(ecb-string< (symbol-name l)
(symbol-name r)))))))
(append emacs-vars semantic-vars speedbar-vars
ecb-internal-vars ecb-options)))
(silentcomp-provide 'ecb-help)
;; ecb-help.el ends here

View File

@ -0,0 +1,48 @@
/* XPM */
static char * ecbclose_xpm[] = {
"16 10 35 1",
" c None",
"! c black",
"# c white",
"$ c #7898B5",
"% c #FCFCFB",
"& c #FDFDFB",
"' c #040404",
"( c #FCFCFA",
") c #F7F6F3",
"* c #F7F7F5",
"+ c #F7F7F4",
", c #F6F6F4",
"- c #F1F0EB",
". c #E5E1DA",
"0 c #A5A5C6",
"1 c #F5F5F1",
"2 c #DFDBD2",
"3 c #F2F2EE",
"4 c #F0F0EC",
"5 c #EDEDE7",
"6 c #EAE9E3",
"7 c #E3E0D9",
"8 c #DBD6CC",
"9 c #E4E1D9",
": c #DCD8CF",
"; c #D8D3C9",
"< c #D6D1C6",
"= c #D2CCC0",
"> c #CFC8BB",
"? c #D2CCBF",
"@ c #C6BEAE",
"A c #C2B8A8",
"B c #C1B8A7",
"C c #C0B7A6",
"D c #C3BAAA",
" #$$$$$$$# ",
" $#######$ ",
" $%&&'%()$ ",
" $**+',-.$ ",
"0$1'''''2$ ",
" $345'678$ ",
" $9:;'<=>$ ",
" $?@ABBCD$ ",
" #$$$$$$$# ",
" "};

View File

@ -0,0 +1,41 @@
/* XPM */
static char * empty_xpm[] = {
"16 10 28 1",
" c None",
". c #848400",
"+ c #858504",
"@ c #91911F",
"# c #8C8C13",
"$ c #91911E",
"% c #9B9B33",
"& c #9C9C36",
"* c #8F8F16",
"= c #868604",
"- c #929220",
"; c #9C9C34",
"> c #9E9E3B",
", c #A4A445",
"' c #A6A64B",
") c #949423",
"! c #959527",
"~ c #9E9E3A",
"{ c #A4A444",
"] c #ACAC53",
"^ c #959525",
"/ c #9B9B31",
"( c #A6A64C",
"_ c #AAAA4F",
": c #92921E",
"< c #878706",
"[ c #A0A03C",
"} c #939320",
" ",
" .. ",
" +@#. ",
" .$%&*. ",
"=-;>,'). ",
"=!~{']^. ",
" ./(_:. ",
" <[}. ",
" .. ",
" "};

View File

@ -0,0 +1,15 @@
/* XPM */
static char * end_guide_xpm[] = {
"6 10 2 1",
" c None",
". c #ADA5C6",
" . ",
" . ",
" . ",
" . ",
" . ",
" ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,15 @@
/* XPM */
static char * guide_xpm[] = {
"6 10 2 1",
" c None",
". c #ADA5C6",
" . ",
" . ",
" . ",
" . ",
" . ",
" . ",
" . ",
" . ",
" . ",
" . "};

View File

@ -0,0 +1,16 @@
/* XPM */
static char * ecbhandle_xpm[] = {
"8 10 3 1",
" c None",
"! c black",
"# c #ADA5C6",
" ",
" ",
" ",
" ",
"########",
" ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,34 @@
/* XPM */
static char * leaf_xpm[] = {
"16 10 21 1",
" c None",
". c #484848",
"+ c #000000",
"@ c #585858",
"# c #777777",
"$ c #7C7C7C",
"% c #818181",
"& c #858585",
"* c #3E3E3E",
"= c #595959",
"- c #8A8A8A",
"; c #8E8E8E",
"> c #474747",
", c #868686",
"' c #939393",
") c #979797",
"! c #9F9F9F",
"~ c #5E5E5E",
"{ c #A0A0A0",
"] c #616161",
"^ c #4B4B4B",
" ",
" .+++ ",
" @#$%&* ",
" =#$%&-;* ",
">#$%,-;')+ ",
">$%,-;')!+ ",
" ~&-;'){* ",
" ];'){* ",
" ^+++ ",
" "};

View File

@ -0,0 +1,14 @@
/* XPM */
static char * no_guide_xpm[] = {
"6 10 1 1",
" c None",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,15 @@
/* XPM */
static char * ecbnohandle_xpm[] = {
"8 10 2 1",
" c None",
"! c black",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,50 @@
/* XPM */
static char * ecbopen_xpm[] = {
"16 10 37 1",
" c None",
"! c black",
"# c white",
"$ c #7898B5",
"% c #FCFCFB",
"& c #FDFDFB",
"' c #FCFCFA",
"( c #F7F6F3",
") c #F7F7F5",
"* c #F7F7F4",
"+ c #F6F6F4",
", c #F1F0EB",
"- c #E5E1DA",
". c #A5A5C6",
"0 c #F5F5F1",
"1 c #040404",
"2 c #DFDBD2",
"3 c #F2F2EE",
"4 c #F0F0EC",
"5 c #EDEDE7",
"6 c #ECEBE6",
"7 c #EAE9E3",
"8 c #E3E0D9",
"9 c #DBD6CC",
": c #E4E1D9",
"; c #DCD8CF",
"< c #D8D3C9",
"= c #D7D2C7",
"> c #D6D1C6",
"? c #D2CCC0",
"@ c #CFC8BB",
"A c #D2CCBF",
"B c #C6BEAE",
"C c #C2B8A8",
"D c #C1B8A7",
"E c #C0B7A6",
"F c #C3BAAA",
" #$$$$$$$# ",
" $#######$ ",
" $%&&&%'($ ",
" $))**+,-$ ",
".$0111112$ ",
" $3456789$ ",
" $:;<=>?@$ ",
" $ABCDDEF$ ",
" #$$$$$$$# ",
" . "};

View File

@ -0,0 +1,51 @@
/* XPM */
static char * ecb_close_xpm[] = {
"12 14 34 1",
" c None",
". c #7898B5",
"+ c #FFFFFF",
"@ c #FCFCFB",
"# c #FDFDFB",
"$ c #040404",
"% c #FCFCFA",
"& c #F7F6F3",
"* c #F7F7F5",
"= c #F7F7F4",
"- c #F6F6F4",
"; c #F1F0EB",
"> c #E5E1DA",
", c #A5A5C6",
"' c #F5F5F1",
") c #DFDBD2",
"! c #F2F2EE",
"~ c #F0F0EC",
"{ c #EDEDE7",
"] c #EAE9E3",
"^ c #E3E0D9",
"/ c #DBD6CC",
"( c #E4E1D9",
"_ c #DCD8CF",
": c #D8D3C9",
"< c #D6D1C6",
"[ c #D2CCC0",
"} c #CFC8BB",
"| c #D2CCBF",
"1 c #C6BEAE",
"2 c #C2B8A8",
"3 c #C1B8A7",
"4 c #C0B7A6",
"5 c #C3BAAA",
" ",
" ",
" ",
" ....... ",
" .+++++++. ",
" .@##$@%&. ",
" .**=$-;>. ",
",.'$$$$$). ",
" .!~{$]^/. ",
" .(_:$<[}. ",
" .|123345. ",
" ....... ",
" ",
" "};

View File

@ -0,0 +1,277 @@
/* XPM */
static char *empty[] = {
/* width height num_colors chars_per_pixel */
" 16 14 256 2",
/* colors */
"`` c #848400",
"`. c #949429",
"`# c #9c9c31",
"`a c #9c9c39",
"`b c #a5a542",
"`c c #a5a54a",
"`d c #adad4a",
"`e c #adad52",
"`f c #adad5a",
"`g c None",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #ffffff",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g```````g`g`g`g`g`g`g`g`g",
"`g`g`g`````.`````g`g`g`g`g`g`g`g",
"`g`g`````.`#`a`````g`g`g`g`g`g`g",
"`g`````.`#`a`a`b`````g`g`g`g`g`g",
"`````.`#`a`a`b`c`c`````g`g`g`g`g",
"```.`#`a`a`b`c`c`e`f```g`g`g`g`g",
"`````a`a`b`c`c`e`f`````g`g`g`g`g",
"`g`````b`c`c`e`f`````g`g`g`g`g`g",
"`g`g`````c`e`f`````g`g`g`g`g`g`g",
"`g`g`g`````f`````g`g`g`g`g`g`g`g",
"`g`g`g`g```````g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g"
};

View File

@ -0,0 +1,277 @@
/* XPM */
static char *end-guide[] = {
/* width height num_colors chars_per_pixel */
" 6 14 256 2",
/* colors */
"`` c #000000",
"`. c #a5a5c6",
"`# c #ada5c6",
"`a c #cecee7",
"`b c #ceceff",
"`c c None",
"`d c #ffffff",
"`e c #ffffff",
"`f c #ffffff",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #808000",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c"
};

View File

@ -0,0 +1,277 @@
/* XPM */
static char *guide[] = {
/* width height num_colors chars_per_pixel */
" 6 14 256 2",
/* colors */
"`` c #000000",
"`. c #a5a5c6",
"`# c #ada5c6",
"`a c #cecee7",
"`b c #ceceff",
"`c c None",
"`d c #ffffff",
"`e c #ffffff",
"`f c #ffffff",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #808000",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#"
};

View File

@ -0,0 +1,19 @@
/* XPM */
static char * ecb_handle_xpm[] = {
"6 14 2 1",
" c None",
". c #ADA5C6",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
"......",
" ",
" ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,277 @@
/* XPM */
static char *leaf[] = {
/* width height num_colors chars_per_pixel */
" 16 14 256 2",
/* colors */
"`` c #424242",
"`. c #737373",
"`# c #7b7b7b",
"`a c #848484",
"`b c #8c8c8c",
"`c c #949494",
"`d c #9c9c9c",
"`e c #a5a5a5",
"`f c None",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #ffffff",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f```````````f`f`f`f`f`f`f`f",
"`f`f```.`#`#`a`a```f`f`f`f`f`f`f",
"`f```.`#`#`a`a`b`b```f`f`f`f`f`f",
"```.`#`#`a`a`b`b`c`c```f`f`f`f`f",
"```#`#`a`a`b`b`c`c`d```f`f`f`f`f",
"```#`a`a`b`b`c`c`d`e```f`f`f`f`f",
"`f```a`b`b`c`c`d`e```f`f`f`f`f`f",
"`f`f```b`c`c`d`e```f`f`f`f`f`f`f",
"`f`f`f```````````f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f"
};

View File

@ -0,0 +1,277 @@
/* XPM */
static char *no-guide[] = {
/* width height num_colors chars_per_pixel */
" 6 14 256 2",
/* colors */
"`` c #000000",
"`. c #84849c",
"`# c #8c8ca5",
"`a c #a5a5c6",
"`b c #ada5c6",
"`c c #b5b5ce",
"`d c #cecee7",
"`e c #ceceff",
"`f c #e7e7ff",
"`g c None",
"`h c #808000",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #ffffff",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g"
};

View File

@ -0,0 +1,18 @@
/* XPM */
static char * ecb_no_handle_xpm[] = {
"6 14 1 1",
" c None",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,53 @@
/* XPM */
static char * ecb_open_xpm[] = {
"12 14 36 1",
" c None",
". c #7898B5",
"+ c #FFFFFF",
"@ c #FCFCFB",
"# c #FDFDFB",
"$ c #FCFCFA",
"% c #F7F6F3",
"& c #F7F7F5",
"* c #F7F7F4",
"= c #F6F6F4",
"- c #F1F0EB",
"; c #E5E1DA",
"> c #A5A5C6",
", c #F5F5F1",
"' c #040404",
") c #DFDBD2",
"! c #F2F2EE",
"~ c #F0F0EC",
"{ c #EDEDE7",
"] c #ECEBE6",
"^ c #EAE9E3",
"/ c #E3E0D9",
"( c #DBD6CC",
"_ c #E4E1D9",
": c #DCD8CF",
"< c #D8D3C9",
"[ c #D7D2C7",
"} c #D6D1C6",
"| c #D2CCC0",
"1 c #CFC8BB",
"2 c #D2CCBF",
"3 c #C6BEAE",
"4 c #C2B8A8",
"5 c #C1B8A7",
"6 c #C0B7A6",
"7 c #C3BAAA",
" ",
" ",
" ",
" ....... ",
" .+++++++. ",
" .@###@$%. ",
" .&&**=-;. ",
">.,'''''). ",
" .!~{]^/(. ",
" ._:<[}|1. ",
" .2345567. ",
" ....... ",
" > ",
" > "};

View File

@ -0,0 +1,53 @@
/* XPM */
static char * ecbclose_xpm[] = {
"16 15 35 1",
" c None",
"! c black",
"# c white",
"$ c #7898B5",
"% c #FCFCFB",
"& c #FDFDFB",
"' c #040404",
"( c #FCFCFA",
") c #F7F6F3",
"* c #F7F7F5",
"+ c #F7F7F4",
", c #F6F6F4",
"- c #F1F0EB",
". c #E5E1DA",
"0 c #A5A5C6",
"1 c #F5F5F1",
"2 c #DFDBD2",
"3 c #F2F2EE",
"4 c #F0F0EC",
"5 c #EDEDE7",
"6 c #EAE9E3",
"7 c #E3E0D9",
"8 c #DBD6CC",
"9 c #E4E1D9",
": c #DCD8CF",
"; c #D8D3C9",
"< c #D6D1C6",
"= c #D2CCC0",
"> c #CFC8BB",
"? c #D2CCBF",
"@ c #C6BEAE",
"A c #C2B8A8",
"B c #C1B8A7",
"C c #C0B7A6",
"D c #C3BAAA",
" ",
" ",
" ",
" #$$$$$$$# ",
" $#######$ ",
" $%&&'%()$ ",
" $**+',-.$ ",
"0$1'''''2$ ",
" $345'678$ ",
" $9:;'<=>$ ",
" $?@ABBCD$ ",
" #$$$$$$$# ",
" ",
" ",
" "};

View File

@ -0,0 +1,278 @@
/* XPM */
static char *empty[] = {
/* width height num_colors chars_per_pixel */
" 16 15 256 2",
/* colors */
"`` c #848400",
"`. c #949429",
"`# c #9c9c31",
"`a c #9c9c39",
"`b c #a5a542",
"`c c #a5a54a",
"`d c #adad4a",
"`e c #adad52",
"`f c #adad5a",
"`g c None",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #ffffff",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g```````g`g`g`g`g`g`g`g`g",
"`g`g`g`````.`````g`g`g`g`g`g`g`g",
"`g`g`````.`#`a`````g`g`g`g`g`g`g",
"`g`````.`#`a`a`b`````g`g`g`g`g`g",
"`````.`#`a`a`b`c`c`````g`g`g`g`g",
"```.`#`a`a`b`c`c`e`f```g`g`g`g`g",
"`````a`a`b`c`c`e`f`````g`g`g`g`g",
"`g`````b`c`c`e`f`````g`g`g`g`g`g",
"`g`g`````c`e`f`````g`g`g`g`g`g`g",
"`g`g`g`````f`````g`g`g`g`g`g`g`g",
"`g`g`g`g```````g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g"
};

View File

@ -0,0 +1,278 @@
/* XPM */
static char *end-guide[] = {
/* width height num_colors chars_per_pixel */
" 6 15 256 2",
/* colors */
"`` c #000000",
"`. c #a5a5c6",
"`# c #ada5c6",
"`a c #cecee7",
"`b c #ceceff",
"`c c None",
"`d c #ffffff",
"`e c #ffffff",
"`f c #ffffff",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #808000",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c"
};

View File

@ -0,0 +1,278 @@
/* XPM */
static char *guide[] = {
/* width height num_colors chars_per_pixel */
" 6 15 256 2",
/* colors */
"`` c #000000",
"`. c #a5a5c6",
"`# c #ada5c6",
"`a c #cecee7",
"`b c #ceceff",
"`c c None",
"`d c #ffffff",
"`e c #ffffff",
"`f c #ffffff",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #808000",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#"
};

View File

@ -0,0 +1,21 @@
/* XPM */
static char * ecbhandle_xpm[] = {
"8 15 3 1",
" c None",
"! c black",
"# c #ADA5C6",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
"########",
" ",
" ",
" ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,278 @@
/* XPM */
static char *leaf[] = {
/* width height num_colors chars_per_pixel */
" 16 15 256 2",
/* colors */
"`` c #424242",
"`. c #737373",
"`# c #7b7b7b",
"`a c #848484",
"`b c #8c8c8c",
"`c c #949494",
"`d c #9c9c9c",
"`e c #a5a5a5",
"`f c None",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #ffffff",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f```````````f`f`f`f`f`f`f`f",
"`f`f```.`#`#`a`a```f`f`f`f`f`f`f",
"`f```.`#`#`a`a`b`b```f`f`f`f`f`f",
"```.`#`#`a`a`b`b`c`c```f`f`f`f`f",
"```#`#`a`a`b`b`c`c`d```f`f`f`f`f",
"```#`a`a`b`b`c`c`d`e```f`f`f`f`f",
"`f```a`b`b`c`c`d`e```f`f`f`f`f`f",
"`f`f```b`c`c`d`e```f`f`f`f`f`f`f",
"`f`f`f```````````f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f"
};

View File

@ -0,0 +1,278 @@
/* XPM */
static char *no-guide[] = {
/* width height num_colors chars_per_pixel */
" 6 15 256 2",
/* colors */
"`` c #000000",
"`. c #84849c",
"`# c #8c8ca5",
"`a c #a5a5c6",
"`b c #ada5c6",
"`c c #b5b5ce",
"`d c #cecee7",
"`e c #ceceff",
"`f c #e7e7ff",
"`g c None",
"`h c #808000",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #ffffff",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g"
};

View File

@ -0,0 +1,20 @@
/* XPM */
static char * ecbnohandle_xpm[] = {
"8 15 2 1",
" c None",
"! c black",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,55 @@
/* XPM */
static char * ecbopen_xpm[] = {
"16 15 37 1",
" c None",
"! c black",
"# c white",
"$ c #7898B5",
"% c #FCFCFB",
"& c #FDFDFB",
"' c #FCFCFA",
"( c #F7F6F3",
") c #F7F7F5",
"* c #F7F7F4",
"+ c #F6F6F4",
", c #F1F0EB",
"- c #E5E1DA",
". c #A5A5C6",
"0 c #F5F5F1",
"1 c #040404",
"2 c #DFDBD2",
"3 c #F2F2EE",
"4 c #F0F0EC",
"5 c #EDEDE7",
"6 c #ECEBE6",
"7 c #EAE9E3",
"8 c #E3E0D9",
"9 c #DBD6CC",
": c #E4E1D9",
"; c #DCD8CF",
"< c #D8D3C9",
"= c #D7D2C7",
"> c #D6D1C6",
"? c #D2CCC0",
"@ c #CFC8BB",
"A c #D2CCBF",
"B c #C6BEAE",
"C c #C2B8A8",
"D c #C1B8A7",
"E c #C0B7A6",
"F c #C3BAAA",
" ",
" ",
" ",
" #$$$$$$$# ",
" $#######$ ",
" $%&&&%'($ ",
" $))**+,-$ ",
".$0111112$ ",
" $3456789$ ",
" $:;<=>?@$ ",
" $ABCDDEF$ ",
" #$$$$$$$# ",
" . ",
" . ",
" . "};

View File

@ -0,0 +1,54 @@
/* XPM */
static char * ecbclose_xpm[] = {
"16 16 35 1",
" c None",
"! c black",
"# c white",
"$ c #7898B5",
"% c #FCFCFB",
"& c #FDFDFB",
"' c #040404",
"( c #FCFCFA",
") c #F7F6F3",
"* c #F7F7F5",
"+ c #F7F7F4",
", c #F6F6F4",
"- c #F1F0EB",
". c #E5E1DA",
"0 c #A5A5C6",
"1 c #F5F5F1",
"2 c #DFDBD2",
"3 c #F2F2EE",
"4 c #F0F0EC",
"5 c #EDEDE7",
"6 c #EAE9E3",
"7 c #E3E0D9",
"8 c #DBD6CC",
"9 c #E4E1D9",
": c #DCD8CF",
"; c #D8D3C9",
"< c #D6D1C6",
"= c #D2CCC0",
"> c #CFC8BB",
"? c #D2CCBF",
"@ c #C6BEAE",
"A c #C2B8A8",
"B c #C1B8A7",
"C c #C0B7A6",
"D c #C3BAAA",
" ",
" ",
" ",
" ",
" #$$$$$$$# ",
" $#######$ ",
" $%&&'%()$ ",
" $**+',-.$ ",
"0$1'''''2$ ",
" $345'678$ ",
" $9:;'<=>$ ",
" $?@ABBCD$ ",
" #$$$$$$$# ",
" ",
" ",
" "};

View File

@ -0,0 +1,279 @@
/* XPM */
static char *empty[] = {
/* width height num_colors chars_per_pixel */
" 16 16 256 2",
/* colors */
"`` c #848400",
"`. c #949429",
"`# c #9c9c31",
"`a c #9c9c39",
"`b c #a5a542",
"`c c #a5a54a",
"`d c #adad4a",
"`e c #adad52",
"`f c #adad5a",
"`g c None",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #ffffff",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g```````g`g`g`g`g`g`g`g`g",
"`g`g`g`````.`````g`g`g`g`g`g`g`g",
"`g`g`````.`#`a`````g`g`g`g`g`g`g",
"`g`````.`#`a`a`b`````g`g`g`g`g`g",
"`````.`#`a`a`b`c`c`````g`g`g`g`g",
"```.`#`a`a`b`c`c`e`f```g`g`g`g`g",
"`````a`a`b`c`c`e`f`````g`g`g`g`g",
"`g`````b`c`c`e`f`````g`g`g`g`g`g",
"`g`g`````c`e`f`````g`g`g`g`g`g`g",
"`g`g`g`````f`````g`g`g`g`g`g`g`g",
"`g`g`g`g```````g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g"
};

View File

@ -0,0 +1,279 @@
/* XPM */
static char *end-guide[] = {
/* width height num_colors chars_per_pixel */
" 6 16 256 2",
/* colors */
"`` c #000000",
"`. c #a5a5c6",
"`# c #ada5c6",
"`a c #cecee7",
"`b c #ceceff",
"`c c None",
"`d c #ffffff",
"`e c #ffffff",
"`f c #ffffff",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #808000",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c"
};

View File

@ -0,0 +1,279 @@
/* XPM */
static char *guide[] = {
/* width height num_colors chars_per_pixel */
" 6 16 256 2",
/* colors */
"`` c #000000",
"`. c #a5a5c6",
"`# c #ada5c6",
"`a c #cecee7",
"`b c #ceceff",
"`c c None",
"`d c #ffffff",
"`e c #ffffff",
"`f c #ffffff",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #808000",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#"
};

View File

@ -0,0 +1,22 @@
/* XPM */
static char * ecbhandle_xpm[] = {
"8 16 3 1",
" c None",
"! c black",
"# c #ADA5C6",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
"########",
" ",
" ",
" ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,279 @@
/* XPM */
static char *leaf[] = {
/* width height num_colors chars_per_pixel */
" 16 16 256 2",
/* colors */
"`` c #424242",
"`. c #737373",
"`# c #7b7b7b",
"`a c #848484",
"`b c #8c8c8c",
"`c c #949494",
"`d c #9c9c9c",
"`e c #a5a5a5",
"`f c None",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #ffffff",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f```````````f`f`f`f`f`f`f`f",
"`f`f```.`#`#`a`a```f`f`f`f`f`f`f",
"`f```.`#`#`a`a`b`b```f`f`f`f`f`f",
"```.`#`#`a`a`b`b`c`c```f`f`f`f`f",
"```#`#`a`a`b`b`c`c`d```f`f`f`f`f",
"```#`a`a`b`b`c`c`d`e```f`f`f`f`f",
"`f```a`b`b`c`c`d`e```f`f`f`f`f`f",
"`f`f```b`c`c`d`e```f`f`f`f`f`f`f",
"`f`f`f```````````f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f"
};

View File

@ -0,0 +1,279 @@
/* XPM */
static char *no-guide[] = {
/* width height num_colors chars_per_pixel */
" 6 16 256 2",
/* colors */
"`` c #000000",
"`. c #84849c",
"`# c #8c8ca5",
"`a c #a5a5c6",
"`b c #ada5c6",
"`c c #b5b5ce",
"`d c #cecee7",
"`e c #ceceff",
"`f c #e7e7ff",
"`g c None",
"`h c #808000",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #ffffff",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g"
};

View File

@ -0,0 +1,21 @@
/* XPM */
static char * ecbnohandle_xpm[] = {
"8 16 2 1",
" c None",
"! c black",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,56 @@
/* XPM */
static char * ecbopen_xpm[] = {
"16 16 37 1",
" c None",
"! c black",
"# c white",
"$ c #7898B5",
"% c #FCFCFB",
"& c #FDFDFB",
"' c #FCFCFA",
"( c #F7F6F3",
") c #F7F7F5",
"* c #F7F7F4",
"+ c #F6F6F4",
", c #F1F0EB",
"- c #E5E1DA",
". c #A5A5C6",
"0 c #F5F5F1",
"1 c #040404",
"2 c #DFDBD2",
"3 c #F2F2EE",
"4 c #F0F0EC",
"5 c #EDEDE7",
"6 c #ECEBE6",
"7 c #EAE9E3",
"8 c #E3E0D9",
"9 c #DBD6CC",
": c #E4E1D9",
"; c #DCD8CF",
"< c #D8D3C9",
"= c #D7D2C7",
"> c #D6D1C6",
"? c #D2CCC0",
"@ c #CFC8BB",
"A c #D2CCBF",
"B c #C6BEAE",
"C c #C2B8A8",
"D c #C1B8A7",
"E c #C0B7A6",
"F c #C3BAAA",
" ",
" ",
" ",
" ",
" #$$$$$$$# ",
" $#######$ ",
" $%&&&%'($ ",
" $))**+,-$ ",
".$0111112$ ",
" $3456789$ ",
" $:;<=>?@$ ",
" $ABCDDEF$ ",
" #$$$$$$$# ",
" . ",
" . ",
" . "};

View File

@ -0,0 +1,55 @@
/* XPM */
static char * ecbclose_xpm[] = {
"16 17 35 1",
" c None",
"! c black",
"# c white",
"$ c #7898B5",
"% c #FCFCFB",
"& c #FDFDFB",
"' c #040404",
"( c #FCFCFA",
") c #F7F6F3",
"* c #F7F7F5",
"+ c #F7F7F4",
", c #F6F6F4",
"- c #F1F0EB",
". c #E5E1DA",
"0 c #A5A5C6",
"1 c #F5F5F1",
"2 c #DFDBD2",
"3 c #F2F2EE",
"4 c #F0F0EC",
"5 c #EDEDE7",
"6 c #EAE9E3",
"7 c #E3E0D9",
"8 c #DBD6CC",
"9 c #E4E1D9",
": c #DCD8CF",
"; c #D8D3C9",
"< c #D6D1C6",
"= c #D2CCC0",
"> c #CFC8BB",
"? c #D2CCBF",
"@ c #C6BEAE",
"A c #C2B8A8",
"B c #C1B8A7",
"C c #C0B7A6",
"D c #C3BAAA",
" ",
" ",
" ",
" ",
" #$$$$$$$# ",
" $#######$ ",
" $%&&'%()$ ",
" $**+',-.$ ",
"0$1'''''2$ ",
" $345'678$ ",
" $9:;'<=>$ ",
" $?@ABBCD$ ",
" #$$$$$$$# ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,280 @@
/* XPM */
static char *empty[] = {
/* width height num_colors chars_per_pixel */
" 16 17 256 2",
/* colors */
"`` c #848400",
"`. c #949429",
"`# c #9c9c31",
"`a c #9c9c39",
"`b c #a5a542",
"`c c #a5a54a",
"`d c #adad4a",
"`e c #adad52",
"`f c #adad5a",
"`g c None",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #ffffff",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g```````g`g`g`g`g`g`g`g`g",
"`g`g`g`````.`````g`g`g`g`g`g`g`g",
"`g`g`````.`#`a`````g`g`g`g`g`g`g",
"`g`````.`#`a`a`b`````g`g`g`g`g`g",
"`````.`#`a`a`b`c`c`````g`g`g`g`g",
"```.`#`a`a`b`c`c`e`f```g`g`g`g`g",
"`````a`a`b`c`c`e`f`````g`g`g`g`g",
"`g`````b`c`c`e`f`````g`g`g`g`g`g",
"`g`g`````c`e`f`````g`g`g`g`g`g`g",
"`g`g`g`````f`````g`g`g`g`g`g`g`g",
"`g`g`g`g```````g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g"
};

View File

@ -0,0 +1,280 @@
/* XPM */
static char *end-guide[] = {
/* width height num_colors chars_per_pixel */
" 6 17 256 2",
/* colors */
"`` c #000000",
"`. c #a5a5c6",
"`# c #ada5c6",
"`a c #cecee7",
"`b c #ceceff",
"`c c None",
"`d c #ffffff",
"`e c #ffffff",
"`f c #ffffff",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #808000",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c"
};

View File

@ -0,0 +1,280 @@
/* XPM */
static char *guide[] = {
/* width height num_colors chars_per_pixel */
" 6 17 256 2",
/* colors */
"`` c #000000",
"`. c #a5a5c6",
"`# c #ada5c6",
"`a c #cecee7",
"`b c #ceceff",
"`c c None",
"`d c #ffffff",
"`e c #ffffff",
"`f c #ffffff",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #808000",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#"
};

View File

@ -0,0 +1,23 @@
/* XPM */
static char * ecbhandle_xpm[] = {
"8 17 3 1",
" c None",
"! c black",
"# c #ADA5C6",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
"########",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,280 @@
/* XPM */
static char *leaf[] = {
/* width height num_colors chars_per_pixel */
" 16 17 256 2",
/* colors */
"`` c #424242",
"`. c #737373",
"`# c #7b7b7b",
"`a c #848484",
"`b c #8c8c8c",
"`c c #949494",
"`d c #9c9c9c",
"`e c #a5a5a5",
"`f c None",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #ffffff",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f```````````f`f`f`f`f`f`f`f",
"`f`f```.`#`#`a`a```f`f`f`f`f`f`f",
"`f```.`#`#`a`a`b`b```f`f`f`f`f`f",
"```.`#`#`a`a`b`b`c`c```f`f`f`f`f",
"```#`#`a`a`b`b`c`c`d```f`f`f`f`f",
"```#`a`a`b`b`c`c`d`e```f`f`f`f`f",
"`f```a`b`b`c`c`d`e```f`f`f`f`f`f",
"`f`f```b`c`c`d`e```f`f`f`f`f`f`f",
"`f`f`f```````````f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f"
};

View File

@ -0,0 +1,280 @@
/* XPM */
static char *no-guide[] = {
/* width height num_colors chars_per_pixel */
" 6 17 256 2",
/* colors */
"`` c #000000",
"`. c #84849c",
"`# c #8c8ca5",
"`a c #a5a5c6",
"`b c #ada5c6",
"`c c #b5b5ce",
"`d c #cecee7",
"`e c #ceceff",
"`f c #e7e7ff",
"`g c None",
"`h c #808000",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #ffffff",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g"
};

View File

@ -0,0 +1,22 @@
/* XPM */
static char * ecbnohandle_xpm[] = {
"8 17 2 1",
" c None",
"! c black",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,57 @@
/* XPM */
static char * ecbopen_xpm[] = {
"16 17 37 1",
" c None",
"! c black",
"# c white",
"$ c #7898B5",
"% c #FCFCFB",
"& c #FDFDFB",
"' c #FCFCFA",
"( c #F7F6F3",
") c #F7F7F5",
"* c #F7F7F4",
"+ c #F6F6F4",
", c #F1F0EB",
"- c #E5E1DA",
". c #A5A5C6",
"0 c #F5F5F1",
"1 c #040404",
"2 c #DFDBD2",
"3 c #F2F2EE",
"4 c #F0F0EC",
"5 c #EDEDE7",
"6 c #ECEBE6",
"7 c #EAE9E3",
"8 c #E3E0D9",
"9 c #DBD6CC",
": c #E4E1D9",
"; c #DCD8CF",
"< c #D8D3C9",
"= c #D7D2C7",
"> c #D6D1C6",
"? c #D2CCC0",
"@ c #CFC8BB",
"A c #D2CCBF",
"B c #C6BEAE",
"C c #C2B8A8",
"D c #C1B8A7",
"E c #C0B7A6",
"F c #C3BAAA",
" ",
" ",
" ",
" ",
" #$$$$$$$# ",
" $#######$ ",
" $%&&&%'($ ",
" $))**+,-$ ",
".$0111112$ ",
" $3456789$ ",
" $:;<=>?@$ ",
" $ABCDDEF$ ",
" #$$$$$$$# ",
" . ",
" . ",
" . ",
" . "};

View File

@ -0,0 +1,56 @@
/* XPM */
static char * ecbclose_xpm[] = {
"16 18 35 1",
" c None",
"! c black",
"# c white",
"$ c #7898B5",
"% c #FCFCFB",
"& c #FDFDFB",
"' c #040404",
"( c #FCFCFA",
") c #F7F6F3",
"* c #F7F7F5",
"+ c #F7F7F4",
", c #F6F6F4",
"- c #F1F0EB",
". c #E5E1DA",
"0 c #A5A5C6",
"1 c #F5F5F1",
"2 c #DFDBD2",
"3 c #F2F2EE",
"4 c #F0F0EC",
"5 c #EDEDE7",
"6 c #EAE9E3",
"7 c #E3E0D9",
"8 c #DBD6CC",
"9 c #E4E1D9",
": c #DCD8CF",
"; c #D8D3C9",
"< c #D6D1C6",
"= c #D2CCC0",
"> c #CFC8BB",
"? c #D2CCBF",
"@ c #C6BEAE",
"A c #C2B8A8",
"B c #C1B8A7",
"C c #C0B7A6",
"D c #C3BAAA",
" ",
" ",
" ",
" ",
" ",
" #$$$$$$$# ",
" $#######$ ",
" $%&&'%()$ ",
" $**+',-.$ ",
"0$1'''''2$ ",
" $345'678$ ",
" $9:;'<=>$ ",
" $?@ABBCD$ ",
" #$$$$$$$# ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,281 @@
/* XPM */
static char *empty[] = {
/* width height num_colors chars_per_pixel */
" 16 18 256 2",
/* colors */
"`` c #848400",
"`. c #949429",
"`# c #9c9c31",
"`a c #9c9c39",
"`b c #a5a542",
"`c c #a5a54a",
"`d c #adad4a",
"`e c #adad52",
"`f c #adad5a",
"`g c None",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #ffffff",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g```````g`g`g`g`g`g`g`g`g",
"`g`g`g`````.`````g`g`g`g`g`g`g`g",
"`g`g`````.`#`a`````g`g`g`g`g`g`g",
"`g`````.`#`a`a`b`````g`g`g`g`g`g",
"`````.`#`a`a`b`c`c`````g`g`g`g`g",
"```.`#`a`a`b`c`c`e`f```g`g`g`g`g",
"`````a`a`b`c`c`e`f`````g`g`g`g`g",
"`g`````b`c`c`e`f`````g`g`g`g`g`g",
"`g`g`````c`e`f`````g`g`g`g`g`g`g",
"`g`g`g`````f`````g`g`g`g`g`g`g`g",
"`g`g`g`g```````g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g"
};

View File

@ -0,0 +1,281 @@
/* XPM */
static char *end-guide[] = {
/* width height num_colors chars_per_pixel */
" 6 18 256 2",
/* colors */
"`` c #000000",
"`. c #a5a5c6",
"`# c #ada5c6",
"`a c #cecee7",
"`b c #ceceff",
"`c c None",
"`d c #ffffff",
"`e c #ffffff",
"`f c #ffffff",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #808000",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c"
};

View File

@ -0,0 +1,281 @@
/* XPM */
static char *guide[] = {
/* width height num_colors chars_per_pixel */
" 6 18 256 2",
/* colors */
"`` c #000000",
"`. c #a5a5c6",
"`# c #ada5c6",
"`a c #cecee7",
"`b c #ceceff",
"`c c None",
"`d c #ffffff",
"`e c #ffffff",
"`f c #ffffff",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #808000",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#"
};

View File

@ -0,0 +1,24 @@
/* XPM */
static char * ecbhandle_xpm[] = {
"8 18 3 1",
" c None",
"! c black",
"# c #ADA5C6",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
"########",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,281 @@
/* XPM */
static char *leaf[] = {
/* width height num_colors chars_per_pixel */
" 16 18 256 2",
/* colors */
"`` c #424242",
"`. c #737373",
"`# c #7b7b7b",
"`a c #848484",
"`b c #8c8c8c",
"`c c #949494",
"`d c #9c9c9c",
"`e c #a5a5a5",
"`f c None",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #ffffff",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f```````````f`f`f`f`f`f`f`f",
"`f`f```.`#`#`a`a```f`f`f`f`f`f`f",
"`f```.`#`#`a`a`b`b```f`f`f`f`f`f",
"```.`#`#`a`a`b`b`c`c```f`f`f`f`f",
"```#`#`a`a`b`b`c`c`d```f`f`f`f`f",
"```#`a`a`b`b`c`c`d`e```f`f`f`f`f",
"`f```a`b`b`c`c`d`e```f`f`f`f`f`f",
"`f`f```b`c`c`d`e```f`f`f`f`f`f`f",
"`f`f`f```````````f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f"
};

View File

@ -0,0 +1,281 @@
/* XPM */
static char *no-guide[] = {
/* width height num_colors chars_per_pixel */
" 6 18 256 2",
/* colors */
"`` c #000000",
"`. c #84849c",
"`# c #8c8ca5",
"`a c #a5a5c6",
"`b c #ada5c6",
"`c c #b5b5ce",
"`d c #cecee7",
"`e c #ceceff",
"`f c #e7e7ff",
"`g c None",
"`h c #808000",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #ffffff",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g"
};

View File

@ -0,0 +1,23 @@
/* XPM */
static char * ecbnohandle_xpm[] = {
"8 18 2 1",
" c None",
"! c black",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,58 @@
/* XPM */
static char * ecbopen_xpm[] = {
"16 18 37 1",
" c None",
"! c black",
"# c white",
"$ c #7898B5",
"% c #FCFCFB",
"& c #FDFDFB",
"' c #FCFCFA",
"( c #F7F6F3",
") c #F7F7F5",
"* c #F7F7F4",
"+ c #F6F6F4",
", c #F1F0EB",
"- c #E5E1DA",
". c #A5A5C6",
"0 c #F5F5F1",
"1 c #040404",
"2 c #DFDBD2",
"3 c #F2F2EE",
"4 c #F0F0EC",
"5 c #EDEDE7",
"6 c #ECEBE6",
"7 c #EAE9E3",
"8 c #E3E0D9",
"9 c #DBD6CC",
": c #E4E1D9",
"; c #DCD8CF",
"< c #D8D3C9",
"= c #D7D2C7",
"> c #D6D1C6",
"? c #D2CCC0",
"@ c #CFC8BB",
"A c #D2CCBF",
"B c #C6BEAE",
"C c #C2B8A8",
"D c #C1B8A7",
"E c #C0B7A6",
"F c #C3BAAA",
" ",
" ",
" ",
" ",
" ",
" #$$$$$$$# ",
" $#######$ ",
" $%&&&%'($ ",
" $))**+,-$ ",
".$0111112$ ",
" $3456789$ ",
" $:;<=>?@$ ",
" $ABCDDEF$ ",
" #$$$$$$$# ",
" . ",
" . ",
" . ",
" . "};

View File

@ -0,0 +1,57 @@
/* XPM */
static char * ecbclose_xpm[] = {
"16 19 35 1",
" c None",
"! c black",
"# c white",
"$ c #7898B5",
"% c #FCFCFB",
"& c #FDFDFB",
"' c #040404",
"( c #FCFCFA",
") c #F7F6F3",
"* c #F7F7F5",
"+ c #F7F7F4",
", c #F6F6F4",
"- c #F1F0EB",
". c #E5E1DA",
"0 c #A5A5C6",
"1 c #F5F5F1",
"2 c #DFDBD2",
"3 c #F2F2EE",
"4 c #F0F0EC",
"5 c #EDEDE7",
"6 c #EAE9E3",
"7 c #E3E0D9",
"8 c #DBD6CC",
"9 c #E4E1D9",
": c #DCD8CF",
"; c #D8D3C9",
"< c #D6D1C6",
"= c #D2CCC0",
"> c #CFC8BB",
"? c #D2CCBF",
"@ c #C6BEAE",
"A c #C2B8A8",
"B c #C1B8A7",
"C c #C0B7A6",
"D c #C3BAAA",
" ",
" ",
" ",
" ",
" ",
" #$$$$$$$# ",
" $#######$ ",
" $%&&'%()$ ",
" $**+',-.$ ",
"0$1'''''2$ ",
" $345'678$ ",
" $9:;'<=>$ ",
" $?@ABBCD$ ",
" #$$$$$$$# ",
" ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,282 @@
/* XPM */
static char *empty[] = {
/* width height num_colors chars_per_pixel */
" 16 19 256 2",
/* colors */
"`` c #848400",
"`. c #949429",
"`# c #9c9c31",
"`a c #9c9c39",
"`b c #a5a542",
"`c c #a5a54a",
"`d c #adad4a",
"`e c #adad52",
"`f c #adad5a",
"`g c None",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #ffffff",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g```````g`g`g`g`g`g`g`g`g",
"`g`g`g`````.`````g`g`g`g`g`g`g`g",
"`g`g`````.`#`a`````g`g`g`g`g`g`g",
"`g`````.`#`a`a`b`````g`g`g`g`g`g",
"`````.`#`a`a`b`c`c`````g`g`g`g`g",
"```.`#`a`a`b`c`c`e`f```g`g`g`g`g",
"`````a`a`b`c`c`e`f`````g`g`g`g`g",
"`g`````b`c`c`e`f`````g`g`g`g`g`g",
"`g`g`````c`e`f`````g`g`g`g`g`g`g",
"`g`g`g`````f`````g`g`g`g`g`g`g`g",
"`g`g`g`g```````g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g"
};

View File

@ -0,0 +1,282 @@
/* XPM */
static char *end-guide[] = {
/* width height num_colors chars_per_pixel */
" 6 19 256 2",
/* colors */
"`` c #000000",
"`. c #a5a5c6",
"`# c #ada5c6",
"`a c #cecee7",
"`b c #ceceff",
"`c c None",
"`d c #ffffff",
"`e c #ffffff",
"`f c #ffffff",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #808000",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c"
};

View File

@ -0,0 +1,282 @@
/* XPM */
static char *guide[] = {
/* width height num_colors chars_per_pixel */
" 6 19 256 2",
/* colors */
"`` c #000000",
"`. c #a5a5c6",
"`# c #ada5c6",
"`a c #cecee7",
"`b c #ceceff",
"`c c None",
"`d c #ffffff",
"`e c #ffffff",
"`f c #ffffff",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #808000",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#"
};

View File

@ -0,0 +1,25 @@
/* XPM */
static char * ecbhandle_xpm[] = {
"8 19 3 1",
" c None",
"! c black",
"# c #ADA5C6",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
"########",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,282 @@
/* XPM */
static char *leaf[] = {
/* width height num_colors chars_per_pixel */
" 16 19 256 2",
/* colors */
"`` c #424242",
"`. c #737373",
"`# c #7b7b7b",
"`a c #848484",
"`b c #8c8c8c",
"`c c #949494",
"`d c #9c9c9c",
"`e c #a5a5a5",
"`f c None",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #ffffff",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f```````````f`f`f`f`f`f`f`f",
"`f`f```.`#`#`a`a```f`f`f`f`f`f`f",
"`f```.`#`#`a`a`b`b```f`f`f`f`f`f",
"```.`#`#`a`a`b`b`c`c```f`f`f`f`f",
"```#`#`a`a`b`b`c`c`d```f`f`f`f`f",
"```#`a`a`b`b`c`c`d`e```f`f`f`f`f",
"`f```a`b`b`c`c`d`e```f`f`f`f`f`f",
"`f`f```b`c`c`d`e```f`f`f`f`f`f`f",
"`f`f`f```````````f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f"
};

View File

@ -0,0 +1,282 @@
/* XPM */
static char *no-guide[] = {
/* width height num_colors chars_per_pixel */
" 6 19 256 2",
/* colors */
"`` c #000000",
"`. c #84849c",
"`# c #8c8ca5",
"`a c #a5a5c6",
"`b c #ada5c6",
"`c c #b5b5ce",
"`d c #cecee7",
"`e c #ceceff",
"`f c #e7e7ff",
"`g c None",
"`h c #808000",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #ffffff",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g"
};

View File

@ -0,0 +1,24 @@
/* XPM */
static char * ecbnohandle_xpm[] = {
"8 19 2 1",
" c None",
"! c black",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,59 @@
/* XPM */
static char * ecbopen_xpm[] = {
"16 19 37 1",
" c None",
"! c black",
"# c white",
"$ c #7898B5",
"% c #FCFCFB",
"& c #FDFDFB",
"' c #FCFCFA",
"( c #F7F6F3",
") c #F7F7F5",
"* c #F7F7F4",
"+ c #F6F6F4",
", c #F1F0EB",
"- c #E5E1DA",
". c #A5A5C6",
"0 c #F5F5F1",
"1 c #040404",
"2 c #DFDBD2",
"3 c #F2F2EE",
"4 c #F0F0EC",
"5 c #EDEDE7",
"6 c #ECEBE6",
"7 c #EAE9E3",
"8 c #E3E0D9",
"9 c #DBD6CC",
": c #E4E1D9",
"; c #DCD8CF",
"< c #D8D3C9",
"= c #D7D2C7",
"> c #D6D1C6",
"? c #D2CCC0",
"@ c #CFC8BB",
"A c #D2CCBF",
"B c #C6BEAE",
"C c #C2B8A8",
"D c #C1B8A7",
"E c #C0B7A6",
"F c #C3BAAA",
" ",
" ",
" ",
" ",
" ",
" #$$$$$$$# ",
" $#######$ ",
" $%&&&%'($ ",
" $))**+,-$ ",
".$0111112$ ",
" $3456789$ ",
" $:;<=>?@$ ",
" $ABCDDEF$ ",
" #$$$$$$$# ",
" . ",
" . ",
" . ",
" . ",
" . "};

View File

@ -0,0 +1,58 @@
/* XPM */
static char * ecbclose_xpm[] = {
"16 20 35 1",
" c None",
"! c black",
"# c white",
"$ c #7898B5",
"% c #FCFCFB",
"& c #FDFDFB",
"' c #040404",
"( c #FCFCFA",
") c #F7F6F3",
"* c #F7F7F5",
"+ c #F7F7F4",
", c #F6F6F4",
"- c #F1F0EB",
". c #E5E1DA",
"0 c #A5A5C6",
"1 c #F5F5F1",
"2 c #DFDBD2",
"3 c #F2F2EE",
"4 c #F0F0EC",
"5 c #EDEDE7",
"6 c #EAE9E3",
"7 c #E3E0D9",
"8 c #DBD6CC",
"9 c #E4E1D9",
": c #DCD8CF",
"; c #D8D3C9",
"< c #D6D1C6",
"= c #D2CCC0",
"> c #CFC8BB",
"? c #D2CCBF",
"@ c #C6BEAE",
"A c #C2B8A8",
"B c #C1B8A7",
"C c #C0B7A6",
"D c #C3BAAA",
" ",
" ",
" ",
" ",
" ",
" ",
" #$$$$$$$# ",
" $#######$ ",
" $%&&'%()$ ",
" $**+',-.$ ",
"0$1'''''2$ ",
" $345'678$ ",
" $9:;'<=>$ ",
" $?@ABBCD$ ",
" #$$$$$$$# ",
" ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,283 @@
/* XPM */
static char *empty[] = {
/* width height num_colors chars_per_pixel */
" 16 20 256 2",
/* colors */
"`` c #848400",
"`. c #949429",
"`# c #9c9c31",
"`a c #9c9c39",
"`b c #a5a542",
"`c c #a5a54a",
"`d c #adad4a",
"`e c #adad52",
"`f c #adad5a",
"`g c None",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #ffffff",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g```````g`g`g`g`g`g`g`g`g",
"`g`g`g`````.`````g`g`g`g`g`g`g`g",
"`g`g`````.`#`a`````g`g`g`g`g`g`g",
"`g`````.`#`a`a`b`````g`g`g`g`g`g",
"`````.`#`a`a`b`c`c`````g`g`g`g`g",
"```.`#`a`a`b`c`c`e`f```g`g`g`g`g",
"`````a`a`b`c`c`e`f`````g`g`g`g`g",
"`g`````b`c`c`e`f`````g`g`g`g`g`g",
"`g`g`````c`e`f`````g`g`g`g`g`g`g",
"`g`g`g`````f`````g`g`g`g`g`g`g`g",
"`g`g`g`g```````g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g"
};

View File

@ -0,0 +1,283 @@
/* XPM */
static char *end-guide[] = {
/* width height num_colors chars_per_pixel */
" 6 20 256 2",
/* colors */
"`` c #000000",
"`. c #a5a5c6",
"`# c #ada5c6",
"`a c #cecee7",
"`b c #ceceff",
"`c c None",
"`d c #ffffff",
"`e c #ffffff",
"`f c #ffffff",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #808000",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c"
};

View File

@ -0,0 +1,283 @@
/* XPM */
static char *guide[] = {
/* width height num_colors chars_per_pixel */
" 6 20 256 2",
/* colors */
"`` c #000000",
"`. c #a5a5c6",
"`# c #ada5c6",
"`a c #cecee7",
"`b c #ceceff",
"`c c None",
"`d c #ffffff",
"`e c #ffffff",
"`f c #ffffff",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #808000",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#"
};

View File

@ -0,0 +1,26 @@
/* XPM */
static char * ecbhandle_xpm[] = {
"8 20 3 1",
" c None",
"! c black",
"# c #ADA5C6",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
"########",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,283 @@
/* XPM */
static char *leaf[] = {
/* width height num_colors chars_per_pixel */
" 16 20 256 2",
/* colors */
"`` c #424242",
"`. c #737373",
"`# c #7b7b7b",
"`a c #848484",
"`b c #8c8c8c",
"`c c #949494",
"`d c #9c9c9c",
"`e c #a5a5a5",
"`f c None",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #ffffff",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f```````````f`f`f`f`f`f`f`f",
"`f`f```.`#`#`a`a```f`f`f`f`f`f`f",
"`f```.`#`#`a`a`b`b```f`f`f`f`f`f",
"```.`#`#`a`a`b`b`c`c```f`f`f`f`f",
"```#`#`a`a`b`b`c`c`d```f`f`f`f`f",
"```#`a`a`b`b`c`c`d`e```f`f`f`f`f",
"`f```a`b`b`c`c`d`e```f`f`f`f`f`f",
"`f`f```b`c`c`d`e```f`f`f`f`f`f`f",
"`f`f`f```````````f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f",
"`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f"
};

View File

@ -0,0 +1,283 @@
/* XPM */
static char *no-guide[] = {
/* width height num_colors chars_per_pixel */
" 6 20 256 2",
/* colors */
"`` c #000000",
"`. c #84849c",
"`# c #8c8ca5",
"`a c #a5a5c6",
"`b c #ada5c6",
"`c c #b5b5ce",
"`d c #cecee7",
"`e c #ceceff",
"`f c #e7e7ff",
"`g c None",
"`h c #808000",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #ffffff",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g",
"`g`g`g`g`g`g"
};

View File

@ -0,0 +1,25 @@
/* XPM */
static char * ecbnohandle_xpm[] = {
"8 20 2 1",
" c None",
"! c black",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,60 @@
/* XPM */
static char * ecbopen_xpm[] = {
"16 20 37 1",
" c None",
"! c black",
"# c white",
"$ c #7898B5",
"% c #FCFCFB",
"& c #FDFDFB",
"' c #FCFCFA",
"( c #F7F6F3",
") c #F7F7F5",
"* c #F7F7F4",
"+ c #F6F6F4",
", c #F1F0EB",
"- c #E5E1DA",
". c #A5A5C6",
"0 c #F5F5F1",
"1 c #040404",
"2 c #DFDBD2",
"3 c #F2F2EE",
"4 c #F0F0EC",
"5 c #EDEDE7",
"6 c #ECEBE6",
"7 c #EAE9E3",
"8 c #E3E0D9",
"9 c #DBD6CC",
": c #E4E1D9",
"; c #DCD8CF",
"< c #D8D3C9",
"= c #D7D2C7",
"> c #D6D1C6",
"? c #D2CCC0",
"@ c #CFC8BB",
"A c #D2CCBF",
"B c #C6BEAE",
"C c #C2B8A8",
"D c #C1B8A7",
"E c #C0B7A6",
"F c #C3BAAA",
" ",
" ",
" ",
" ",
" ",
" ",
" #$$$$$$$# ",
" $#######$ ",
" $%&&&%'($ ",
" $))**+,-$ ",
".$0111112$ ",
" $3456789$ ",
" $:;<=>?@$ ",
" $ABCDDEF$ ",
" #$$$$$$$# ",
" . ",
" . ",
" . ",
" . ",
" . "};

View File

@ -0,0 +1,59 @@
/* XPM */
static char * ecbclose_xpm[] = {
"16 21 35 1",
" c None",
"! c black",
"# c white",
"$ c #7898B5",
"% c #FCFCFB",
"& c #FDFDFB",
"' c #040404",
"( c #FCFCFA",
") c #F7F6F3",
"* c #F7F7F5",
"+ c #F7F7F4",
", c #F6F6F4",
"- c #F1F0EB",
". c #E5E1DA",
"0 c #A5A5C6",
"1 c #F5F5F1",
"2 c #DFDBD2",
"3 c #F2F2EE",
"4 c #F0F0EC",
"5 c #EDEDE7",
"6 c #EAE9E3",
"7 c #E3E0D9",
"8 c #DBD6CC",
"9 c #E4E1D9",
": c #DCD8CF",
"; c #D8D3C9",
"< c #D6D1C6",
"= c #D2CCC0",
"> c #CFC8BB",
"? c #D2CCBF",
"@ c #C6BEAE",
"A c #C2B8A8",
"B c #C1B8A7",
"C c #C0B7A6",
"D c #C3BAAA",
" ",
" ",
" ",
" ",
" ",
" ",
" #$$$$$$$# ",
" $#######$ ",
" $%&&'%()$ ",
" $**+',-.$ ",
"0$1'''''2$ ",
" $345'678$ ",
" $9:;'<=>$ ",
" $?@ABBCD$ ",
" #$$$$$$$# ",
" ",
" ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,284 @@
/* XPM */
static char *empty[] = {
/* width height num_colors chars_per_pixel */
" 16 21 256 2",
/* colors */
"`` c #848400",
"`. c #949429",
"`# c #9c9c31",
"`a c #9c9c39",
"`b c #a5a542",
"`c c #a5a54a",
"`d c #adad4a",
"`e c #adad52",
"`f c #adad5a",
"`g c None",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #ffffff",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g```````g`g`g`g`g`g`g`g`g",
"`g`g`g`````.`````g`g`g`g`g`g`g`g",
"`g`g`````.`#`a`````g`g`g`g`g`g`g",
"`g`````.`#`a`a`b`````g`g`g`g`g`g",
"`````.`#`a`a`b`c`c`````g`g`g`g`g",
"```.`#`a`a`b`c`c`e`f```g`g`g`g`g",
"`````a`a`b`c`c`e`f`````g`g`g`g`g",
"`g`````b`c`c`e`f`````g`g`g`g`g`g",
"`g`g`````c`e`f`````g`g`g`g`g`g`g",
"`g`g`g`````f`````g`g`g`g`g`g`g`g",
"`g`g`g`g```````g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g",
"`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g"
};

View File

@ -0,0 +1,284 @@
/* XPM */
static char *end-guide[] = {
/* width height num_colors chars_per_pixel */
" 6 21 256 2",
/* colors */
"`` c #000000",
"`. c #a5a5c6",
"`# c #ada5c6",
"`a c #cecee7",
"`b c #ceceff",
"`c c None",
"`d c #ffffff",
"`e c #ffffff",
"`f c #ffffff",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #808000",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c",
"`c`c`c`c`c`c"
};

View File

@ -0,0 +1,284 @@
/* XPM */
static char *guide[] = {
/* width height num_colors chars_per_pixel */
" 6 21 256 2",
/* colors */
"`` c #000000",
"`. c #a5a5c6",
"`# c #ada5c6",
"`a c #cecee7",
"`b c #ceceff",
"`c c None",
"`d c #ffffff",
"`e c #ffffff",
"`f c #ffffff",
"`g c #ffffff",
"`h c #ffffff",
"`i c #ffffff",
"`j c #ffffff",
"`k c #ffffff",
"`l c #ffffff",
"`m c #ffffff",
"`n c #ffffff",
"`o c #ffffff",
"`p c #ffffff",
"`q c #ffffff",
"`r c #ffffff",
"`s c #ffffff",
"`t c #ffffff",
"`u c #ffffff",
"`v c #ffffff",
"`w c #ffffff",
"`x c #ffffff",
"`y c #ffffff",
"`z c #ffffff",
"`A c #ffffff",
"`B c #ffffff",
"`C c #ffffff",
"`D c #808000",
"`E c #ffffff",
"`F c #ffffff",
"`G c #ffffff",
"`H c #ffffff",
"`I c #ffffff",
"`J c #ffffff",
"`K c #ffffff",
"`L c #ffffff",
"`M c #ffffff",
"`N c #ffffff",
"`O c #ffffff",
"`P c #ffffff",
"`Q c #ffffff",
"`R c #ffffff",
"`S c #ffffff",
"`T c #ffffff",
"`U c #ffffff",
"`V c #ffffff",
"`W c #ffffff",
"`X c #ffffff",
"`Y c #ffffff",
"`Z c #ffffff",
"`0 c #ffffff",
"`1 c #ffffff",
"`2 c #ffffff",
"`3 c #ffffff",
"`4 c #ffffff",
"`5 c #ffffff",
"`6 c #ffffff",
"`7 c #ffffff",
"`8 c #ffffff",
".` c #ffffff",
".. c #ffffff",
".# c #ffffff",
".a c #ffffff",
".b c #ffffff",
".c c #ffffff",
".d c #ffffff",
".e c #ffffff",
".f c #ffffff",
".g c #ffffff",
".h c #ffffff",
".i c #ffffff",
".j c #ffffff",
".k c #ffffff",
".l c #ffffff",
".m c #ffffff",
".n c #ffffff",
".o c #ffffff",
".p c #ffffff",
".q c #ffffff",
".r c #ffffff",
".s c #ffffff",
".t c #ffffff",
".u c #ffffff",
".v c #ffffff",
".w c #ffffff",
".x c #ffffff",
".y c #ffffff",
".z c #ffffff",
".A c #ffffff",
".B c #ffffff",
".C c #ffffff",
".D c #ffffff",
".E c #ffffff",
".F c #ffffff",
".G c #ffffff",
".H c #ffffff",
".I c #ffffff",
".J c #ffffff",
".K c #ffffff",
".L c #ffffff",
".M c #ffffff",
".N c #ffffff",
".O c #ffffff",
".P c #ffffff",
".Q c #ffffff",
".R c #ffffff",
".S c #ffffff",
".T c #ffffff",
".U c #ffffff",
".V c #ffffff",
".W c #ffffff",
".X c #ffffff",
".Y c #ffffff",
".Z c #ffffff",
".0 c #ffffff",
".1 c #ffffff",
".2 c #ffffff",
".3 c #ffffff",
".4 c #ffffff",
".5 c #ffffff",
".6 c #ffffff",
".7 c #ffffff",
".8 c #ffffff",
"#` c #ffffff",
"#. c #ffffff",
"## c #ffffff",
"#a c #ffffff",
"#b c #ffffff",
"#c c #ffffff",
"#d c #ffffff",
"#e c #ffffff",
"#f c #ffffff",
"#g c #ffffff",
"#h c #ffffff",
"#i c #ffffff",
"#j c #ffffff",
"#k c #ffffff",
"#l c #ffffff",
"#m c #ffffff",
"#n c #ffffff",
"#o c #ffffff",
"#p c #ffffff",
"#q c #ffffff",
"#r c #ffffff",
"#s c #ffffff",
"#t c #ffffff",
"#u c #ffffff",
"#v c #ffffff",
"#w c #ffffff",
"#x c #ffffff",
"#y c #ffffff",
"#z c #ffffff",
"#A c #ffffff",
"#B c #ffffff",
"#C c #ffffff",
"#D c #ffffff",
"#E c #ffffff",
"#F c #ffffff",
"#G c #ffffff",
"#H c #ffffff",
"#I c #ffffff",
"#J c #ffffff",
"#K c #ffffff",
"#L c #ffffff",
"#M c #ffffff",
"#N c #ffffff",
"#O c #ffffff",
"#P c #ffffff",
"#Q c #ffffff",
"#R c #ffffff",
"#S c #ffffff",
"#T c #ffffff",
"#U c #ffffff",
"#V c #ffffff",
"#W c #ffffff",
"#X c #ffffff",
"#Y c #ffffff",
"#Z c #ffffff",
"#0 c #ffffff",
"#1 c #ffffff",
"#2 c #ffffff",
"#3 c #ffffff",
"#4 c #ffffff",
"#5 c #ffffff",
"#6 c #ffffff",
"#7 c #ffffff",
"#8 c #ffffff",
"a` c #ffffff",
"a. c #ffffff",
"a# c #ffffff",
"aa c #ffffff",
"ab c #ffffff",
"ac c #ffffff",
"ad c #ffffff",
"ae c #ffffff",
"af c #ffffff",
"ag c #ffffff",
"ah c #ffffff",
"ai c #ffffff",
"aj c #ffffff",
"ak c #ffffff",
"al c #ffffff",
"am c #ffffff",
"an c #ffffff",
"ao c #ffffff",
"ap c #ffffff",
"aq c #ffffff",
"ar c #ffffff",
"as c #ffffff",
"at c #ffffff",
"au c #ffffff",
"av c #ffffff",
"aw c #ffffff",
"ax c #ffffff",
"ay c #ffffff",
"az c #ffffff",
"aA c #ffffff",
"aB c #ffffff",
"aC c #ffffff",
"aD c #ffffff",
"aE c #ffffff",
"aF c #ffffff",
"aG c #ffffff",
"aH c #ffffff",
"aI c #ffffff",
"aJ c #ffffff",
"aK c #ffffff",
"aL c #ffffff",
"aM c #ffffff",
"aN c #ffffff",
"aO c #ffffff",
"aP c #ffffff",
"aQ c #ffffff",
"aR c #ffffff",
"aS c #ffffff",
"aT c #ffffff",
"aU c #ffffff",
"aV c #ffffff",
"aW c #ffffff",
"aX c #ffffff",
"aY c #ffffff",
"aZ c #ffffff",
"a0 c #ffffff",
"a1 c #ffffff",
"a2 c #ffffff",
"a3 c #ffffff",
"a4 c #ffffff",
"a5 c #ffffff",
"a6 c #ffffff",
"a7 c #ffffff",
"a8 c #ffffff",
/* pixels */
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#",
"`c`c`c`c`c`#"
};

View File

@ -0,0 +1,27 @@
/* XPM */
static char * ecbhandle_xpm[] = {
"8 21 3 1",
" c None",
"! c black",
"# c #ADA5C6",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
"########",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};

Some files were not shown because too many files have changed in this diff Show More