pax_global_header00006660000000000000000000000064115737423650014527gustar00rootroot0000000000000052 comment=a00335b28e6186e5ab6cd17841fbce380e5906b0 ecb-2.40+cvs20110608/000077500000000000000000000000001157374236500136165ustar00rootroot00000000000000ecb-2.40+cvs20110608/CYCLE_PROPOSAL000066400000000000000000000150211157374236500157160ustar00rootroot00000000000000 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 . 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. ecb-2.40+cvs20110608/Makefile000066400000000000000000000226451157374236500152670ustar00rootroot00000000000000# 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 # Klaus Berndl # Maintainer: Klaus Berndl # 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: Makefile,v 1.119 2010/02/22 16:33:42 berndl Exp $ # ======================================================================== # 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: Makefile,v 1.119 2010/02/22 16:33:42 berndl Exp $ # 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\ echo "(load-file \"$(CEDET)/common/cedet.el\")" >> ecb-compile-script; \ 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 ecb-2.40+cvs20110608/NEWS000066400000000000000000004352571157374236500143350ustar00rootroot00000000000000* Changes for ECB version 2.40.1 ** Better compatibility with forthcoming Gnu Emacs 23.2 *** Works out of the box with the Emacs-integrated CEDET-suite If Emacs >= 23.2 is used then CEDET is already integrated into Emacs and ECB can be used out of the box without further requirements. 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 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! Details about the Requirements of ECB are available in the README. ** The special symboldef ECB-window is now stable and ready for usage *** TODO description what is new ** ECB now uses the partial reparse feature of semantic The main effect a user will notice is that edit actions which trigger just a partial reparse will just update the related node in the methods-window and not the whole methods-window. One of the main advantages is that this preserves the expand/collapse state of the methods-window. Editing examples which trigger only a partial reparse: - editing a function- or methodbody - changing the name of a variable or function/method - modifying the return-type of a function/method - and some other... In these cases only the related node in the methods-window will change nothing else, ie. the expand/collapse-states of all other nodes in the methods-window will not be changed. ** ECB eliminates duplicates in the directories-buffer There can be duplicates either .... TODO description ** New default-value for `ecb-auto-update-methods-after-save': nil Switching off this by default makes sense because now ECB uses the idle-scheduler of semantic (if it is switched on but this is at least very recommended) and therefore the methods-buffer will be up-to-date most of the time. Therefore updating it after saving makes not much sense. In addition this auto update is always a full-fetch for the tags which does not preserve the expand/collapse-state of the methods-window whereas a partial reparse does (s.a.). ** The contents of the methods-window are updated even if currently hidden If at least the current ecb-window-layout contains a methods-window then the contents will be autom-updated even if the methods-window is currently invisible (e.g. because the ecb-windows are all hidden or another ecb-window is currently maximized. But the updates takes only place if the semantic idle scheduler is active (see instructions in the manuals of ECB and/or cedet). The advantage of this new behavior is that now editing changes done with invisible methods-window will be reflected immediately after showing the methods-window (e.g. by unhiding the ecb-windows via the command `ecb-toggle-ecb-windows' - bound to [C-c . l w]). ** New support for Bazaar as version-control system If Bazaar is supported by VC (means vc-bzr.el is distributed with Emacs) then ECB supports it out of the box. ** New default value of the option `ecb-history-make-buckets' This option offers now an additional choice 'directory-with-source-path: This substituts the best (= deepest) matching source-path of the directory-window in the directory-bucket with the alias of this matching source-path (if an alias is set in the option `ecb-source-path'). A new face is used for this: `ecb-history-bucket-node-dir-soure-path-face'. ** `defecb-window-dedicator-to-ecb-buffer' replaces `defecb-window-dedicator' This is only relevant for people who program own special ecb-windows. ** Fixed Bugs *** Command `delete-windows-on' has only deleted one window Now this command works also with ECB as expected. *** Fixed a bug which prevents the ecb-windows from being vertically resizeable This bug occured only when using Gnu Emacs. *** Fixed a bug concerning horizontal mouse-scrolling of ecb-windows via modeline-click when the ecb-window was not the selected window. This bug occured only when using Gnu Emacs. *** Fixed a bug which prevented `ecb-type-tag-display' from taking effect. *** Killing a buffer failed when history-window is not visible Killing a buffer failed in case the history buffer is not visible (e.g. when currently a layout without a history buffer is used or when another buffer is maximized and the history buffer thus hidden). This is fixed now. *** All compile-modes (e.g. compile, grep etc.) failed in XEmacs This came from a bug introduced in 2.40 but it is fixed now. * Changes for ECB version 2.40 ** ECB now requires full CEDET-suite being installed (at least version 1.0pre6) This means the support for the single packages semantic 1.4.X, eieio 0.X and speedbar 0.X is completely switched off. As a consequence 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". In general the current CEDET is much more powerful than older semantic-versions and ECB uses this power, especially the power of the semantic-analyzer. ** Completely reworked synchronizing mechanism of the ECB-windows Now there are separate options for synchronizing: - The basic ECB-windows (directories, sources, methods, history): `ecb-basic-buffer-sync', `ecb-basic-buffer-sync-delay' and `ecb-basic-buffer-sync-hook'. - The analyser-window (s.a.): `ecb-analyse-buffer-sync', `ecb-analyse-buffer-sync-delay' and `ecb-analyse-buffer-sync-hook' - The symboldef-window: `ecb-symboldef-buffer-sync', `ecb-symboldef-buffer-sync-delay' and `ecb-symboldef-buffer-sync-hook' - The integrated speedbar (if used): `ecb-speedbar-buffer-sync', `ecb-speedbar-buffer-sync-delay' and `ecb-speedbar-buffer-sync-hook' - The integrated eshell-support (if used): `ecb-eshell-buffer-sync', `ecb-eshell-buffer-sync-delay' and `ecb-eshell-buffer-sync-hook' But all options for synchronizing not the basic ECB-windows offer an additional choice 'basic: Then ECB uses the setting of the related option for the basic ECB-windows! Example: If you set `ecb-eshell-buffer-sync' to 'basic then the value of `ecb-basic-buffer-sync' is used. If you set `ecb-eshell-buffer-sync-delay' to 'basic then the value of `ecb-basic-buffer-sync-delay' is used. This enhancement allows much more control for the synchronizing of certain windows. ** Better compatibility with CEDET >= 1.0pre6 and semantic >= 2.0pre6 *** The ECB-analyse-window now works very well with current semantic analyzer There is an own synchronize-option-set for the analyse-window: `ecb-analyse-buffer-sync', `ecb-analyse-buffer-sync-delay' and `ecb-analyse-buffer-sync-hook'. See the docstrings. The advantage is, that now the synchronizing of the analyse-window can be customized separately from the other ECB-windows. THis is important because for the analyse-window a higher delay (or even disabled auto.synchronizing) increases usability a lot. See the info-manual. *** Fix compatibility about some changes of semantic concerning adopting external member-functions (as in C++ or eieio). *** ECB now works very well with semantic-idle-scheduler-mode (s.a.) ** More user-responsible buffer-parsing based on the idle-mechanism of semantic Force a reparse of the semantic-source if the idle-scheduler is off. Generally ECB calls semantic to get the list of tags for current source-file of current edit-window. Per default ECB does never automatically force a reparse of the source-file - this is only done on demand by calling `ecb-rebuild-methods-buffer'. So per default the idle-scheduler of semantic is responsible for reparsing the source-file and when this is necessary (see `semantic-idle-scheduler-mode' for further details). This is the most user-resonsible and therefore the recommended approach. So it's strongly recommended to enable `semantic-idle-scheduler-mode' because then reparsing is always done during idle-time of Emacs and is also interruptable. But if this idle-scheduler is switched off then ECB offers now two possibilities (via `ecb-force-reparse-when-semantic-idle-scheduler-off'): - Not forcing itself a reparse when tags are needed by ECB: then a user declines knowingly Emacs/semantic-driven parsing of code when he/she switches off the idle-mode of semantic. This is the default behavior of ECB and the default value of this option. But this has also the consequence that the methods-buffer is only filed on demand via `ecb-rebuild-methods-buffer' (bound to \[C-c . r])! This means also in consequence that the methods-buffer is not automatically filled when a source-file is opened but first on demand after calling the command `ecb-rebuild-methods-buffer'! - Forcing a reparse when tags are needed: Then ECB forces semantic to parse the source-file when ECB needs tags to display. For this behavior this option has to be set to not nil. The term "forcing a reparse by semantic" is a simplification: ECB uses then the function `semantic-fetch-tags' which can decide that the cached tags are up-to-date so no real reparsing is necessary - but it can also run a full reparse and this reparse is not being done when Emacs is idle but immediatelly and not interruptable (as with the idle-scheduler of semantic), which can be quite annoying with big source-files. ** Complete reworked history-buffer *** The history is able to deal with indirect-buffer entries. See new option `ecb-history-stick-indirect-buffers-to-basebuffer'. *** The history can now be bucketized, see new `ecb-history-make-buckets'. This option allows to define several criterias for building buckets in the history-buffer all the history entries are sorted in (e.g. by major-mode, directory, file-extension or regular expressions). You can change the bucketizing type on the fly via the popup-menu of the history-window. The regular expressions bucketizing allows in combination with the indirect-buffer ability to work with something like "virtual folders" (well, "virtual folders" light). For example, there is a large project with a huge number of files, and there are various tasks in this project. So it could be convenient to group buffers according to various tasks. It could be fulfiled through using indirect buffers, for example like this task_1-aaa.pl task_1-bbb.c task_1-ccc.sh ... task_N-xxx.java task_N-ccc.sh This means create indirect buffers with a name-part which can be used for grouping together buffers with same name-part (here e.g. task_1- ... task_N-). In the example above you would create two indirect buffers for the filebuffer ccc.sh, one named task_1-ccc.sh, the other named task_N-ccc.sh). Then use the new option `ecb-history-make-buckets' to define regexps for bucketizing all (indirect) buffers according their task-part in the buffer-name. *** There are now new faces for the history entries. See new options `ecb-history-bucket-node-face', `ecb-history-dead-buffer-face' and `ecb-history-indirect-buffer-face' and equaly named new faces. ** Sticky parent-node for all special ECB-windows of type tree-buffer Only for GNU Emacs: in the header-line of a tree-buffer always the current-parent node of the first visible node is displayed (if there is a parent node). This sticky node is exactly in the same manner clickable as all other nodes. There is a new option `ecb-tree-make-parent-node-sticky' which enabales/disables this new feature (default is enabled). ** Much saver advice-backbone for all advices needed by ECB This is not a user-visible change but enhances the stability of ECB by using now a new advice-backbone which guarantes that all ecb-advices are enabled rsp. disabled correctly depending on the surrounding context. Introducing four new macros `defecb-advice-set', `defecb-advice', `ecb-with-original-adviced-function-set' and `ecb-with-ecb-advice'. ** Changes in the version control support of ECB *** ECB now also offers version control support only if the current vc-package is installed which offers support for modern vc-backends like subversion, git and monotone. Because vc-package lacks having a version number which can be checked ECB uses the following check if the right vc-package is installed: (locate-library "vc-svn") must return not nil. *** New support for Git and Monotone as version-control systems If Git rsp. Monotone are supported by VC (means vc-git.el rsp. vc-mtn.el are distributed with Emacs) then ECB supports now both of them out of the box. *** `ecb-vc-supported-backends' offers now also a accurate recompute-state function This is by offering `ecb-vc-recompute-state' as an alias to the function `vc-recompute-state' as state-check function for this option. *** CVS-support is now fully compatible with Emacs 22 and 23 ** New options rsp. commands *** New command `ecb-goto-window-edit-by-smart-selection' *** New command `ecb-goto-window-ecb-by-smart-selection' *** New option `ecb-ignore-pop-up-frames' The new option is for customizing the behavior of ECB concerning `pop-up-frames'. It allows three value: Always, only when a permanent compile-window is used and never. This makes ECB fully compatible with the option `pop-up-frames'. ** Much better compatibility with current Emacs-versions *** Full compatibility with Gnu Emacs 22 **** `balance-windows' now works with Emacs 22 too Cause of the completely new implemantation based on `window-tree' ECB uses a new machanism for enabling balance-windows to work properly with active ECB, so only the edit-windows are balanced but all ecb-windows remain on their sizes. **** view-mode works also when a permanent compile-window is active This is especially important for displaying help and completions. **** `master-mode' now works with Emacs 22 **** Grepping from ECB now uses per default `lgrep' rsp. `rgrep'. ***** The option `ecb-grep-function' defaults to `lgrep' if available If not it tries `igrep' or 'grep'. ***** `ecb-grep-find-function' has been renamed to `ecb-grep-recursive-function' It defaults to `rgrep' if available. If not it tries `igrep-find' or `grep-find'. The old value is automatically upgraded to the new option name. **** Fixed problems with `ecb-fix-window-size' and active compile-windows With Emacs >= 22 the bugs of Emacs 21.3.X concerning `window-size-fixed' are fixed by the Emacs-team so now ECB supports this feature also with active compile-window. **** Fixed small lack in the `switch-to-buffer-other-window'-advice. In Emacs 22 this command ignores the settings in `same-window-*'. Now ECB adopts this behavior also for its adviced version so the command works in a smart manner optimized for ECB. *** Much better compatibility with forthcoming Gnu Emacs 23 **** Removed an annoying behavior which has set the mark hundred of times even when the user just moves the cursor. This comes from a change within Emacs 23 and the function `goto-line' which sets the mark in Emacs 23. This is not necessary when not used as command but as internal utility. Now ECB uses its own goto-line-function which does not set the mark --> No unnecessary mark settings with Emacs 23. **** The adviced `display-buffer' is now fully compatible with Emacs 23 This means simply that you can work with ECB and Emacs 23 as you expect. Especially for displaying temporary buffers (like completion, help, compilation etc.) this means: Gnu Emacs 23 has a much smarter window-manager for displaying temporary buffers (like help-buffers) and "compile"-buffers. Therefore ECB uses completely the logic of Emacs 23 and does exactly what Emacs 23 would do without activated ECB: This means mainly that the split-behavior depends on the settings of the options `split-width-threshold' and `split-height-threshold'. So if you are wondering why displaying temporary-buffers (like help, compile, grep, completion etc.) shows different behavior compared to deactivated ECB, then you probably have to adjust the values of the options `split-width-threshold' and `split-height-threshold' so they matches the sizes of the edit-area of ECB (at least nearly). **** Fixing some incompatibilities with Emacs 23 concerning using temp. buffers The fit-window-to-buffer version of Emacs 23 can destroy windows and is therefore not useable within ECB - now ECB has its own - stolen and adapted from Emacs 22. In addition to this the internal help-window-manager of Emacs 23 (a.o. responsible for displaying *Help*-buffers) chooses sometimes dedicated windows (which is a problem because ECB uses dedicated windows for its own special ECB-windows) whereas Emacs 22 doesn't do this. Now ECB works smoothly with Emacs 23 help-system. Same for view-mode. **** ediff-support of ECB is now also fully compatible with Emacs 23 Emacs 23 uses dedicated windows: Now ECB can deal with frame-layouts where some windows are neither an ecb-, edit- nor a compile-window. Therefore now also single-frame mode (see `ediff-windows-setup-function') of ediff wirks smoothly with ECB. **** All this together makes the new layout-engine of ECB much more robust so ECB works smoothly with forthcoming Emacs 23. *** Better compatibility with XEmacs 21.4 and XEmacs 21.5 Compatibility has been increased but is still not perfect. There is a need for much more tests with XEmacs. This can not been done by the ECB-maintainer because it costs too much effort. Any help from XEmacs-gurus using ECB for their daily work is very appreciated. ** ECB is able to work with indirect buffers if the base-buffer is filebased Now you can work with indirect-buffers as well as with normal file-buffers, i.e. indirect buffers are shown in the history´, their contents are displayed in the methods-buffer, the ECB-analyse-buffer works with them, autom. synchronizing the ECB-tree-buffers works for them etc... ** Deprecated, disabled and deactivated features: *** The commands `ecb-download-ecb' and `ecb-download-semantic' are deactivated These features are not supported anymore. It costs two much effort to keep the needed links and mechanism to the sourceforge-download-area up to date. Please download the needed release-archives and extract and install as described in the shipped README rsp. INSTALL-files. ** Fixed Bugs *** Fixed a bug which displayed empty tag-names in the methods-buffer when font-lock is not loaded. *** Fixed a bug in the ping-functionality Now `ecb-ping-options' has a new default value which should operate well on most os. *** Fixed a bug which prevented `ecb-rebuild-methods-buffer' from working correctly *** Fixed a bug in the internals of the methods-filter which prevented all commands `ecb-methods-filter-*' from working correctly. *** Fixed context-menu for VC-operations in the sources- and history-window Now all vc-commands are called interactively by ECB. *** Fixed a bug with the ECB-navigation feature (C-c . p and C-c . n) Now the commands `ecb-nav-goto-next' and `ecb-nav-goto-previous' work saver and also for indirect buffers. *** Fixed small bugs with synchronizing current tag with highlighted tag in the methods buffer. This was when the buffer was reparsed with `semantic-idle-scheduler-mode' or after saving the buffer. *** Fixed a bug in `ecb-create-new-layout' which has displayed wrong modelines in the layout-creation frame. *** Fixed a bug in `ecb-submit-problem-report' which prevented it from working * Changes for ECB version 2.32 ** New backbone-add-on of ECB for getting the definition of the symbol at point It allows to display in a new special ECB-window the semantic (do not confuse this term with the semantic-library!) context of the definition of the current symbol under point. Per default ECB tries to find this context via semanticdb (part of cedet) and etags (shipped with (X)Emacs) but in general this is completely customizable; see the options of the new options-group "ecb-symboldef". Either use the layout "left-symboldef" (e.g. via [C-c . l c]) or create a new ecb-layout via the command `ecb-create-new-layout' and add a buffer of type "other" and name "symboldef" into this new layout. This add-on interactior can be seen as a "backbone" infrastructure, because it is/should be highly customizable how to get the definition of the symbol at point (e.g. via semanticdb or etags or whatever). Thanks to Hauke Wintjen for having the idea and writing the first implementation This add-on ECB-window of ECB is currently in beta or gamma stage but works already quite well. So please try it out and send feedback to the ECB-mailing-list. Every suggestion is highly appretiated! ** New native ECB-window (tree-buffer) for the semantic-analyzer There is a new tree-buffer ECB-analyse which displays the tags and informations of the semanic-analyzer in a smooth way. There are already new prebuild layouts "left-analyse" and "leftright-analyse" which contain this new tree-buffer ECB-window. But of course it can be added to own build layouts - either via the command `ecb-create-new-layout' (add a buffer of type "other" and name "analyse" into the new layout) or via a elisp-programmed new layout. ** New smart-arrow-navigation in a tree-buffer with up- and down-arrow Point jumps to the first character of the previous (up) rsp. next node (down). "First" character means either the first character of the expand-symbol (in case `ecb-tree-expand-symbol-before' is not nil) or of the displayed node-name. Or with other words: The first non-indentation and non-guide-line (see `ecb-tree-buffer-style') character of a node. Left- and right-arrow were already smart - see the existing option `ecb-tree-navigation-by-arrow'. ** Better handling of maximized ecb-windows *** Smarter handling of node-selections in maximized tree-windows Now the default behavior of ECB is: Maximized directories-window: When selecting a directory then first automatically the maximized directories-window will be "minimized" (i.e. all ecb-windows of current layout are displayed) if the current layout contains a sources-buffer and no sources are shown in the directories-window. So the source-files can be displayed in the sources-window. Maximized sources- or history-window: When selecting a source-file in one of these buffers then first automatically the maximized window will be "minimized" (i.e. all ecb-windows of current layout are displayed) if the current layout contains a methods-buffer. So the tag-contents of the selected source-file can be displayed in the methods-window. For a even smarter behavior ECB introduces a new option `ecb-maximize-next-after-maximized-select' which automatically maximizes the next logical tree-window after a node selection. The definition of "next logical is": Directories --> sources, sources/history --> methods. See the docstring of this new option for more detailled informations. Thanks for suggestion to Michael Reiher. *** Easier maximizing and "minimizing" ECB supports the default modeline-mechanisms for deleting other windows. GNU Emacs binds `mouse-2' in its modeline to `delete-other-window'. XEmacs binds a popup-menu with some window commands to `button-3' in its modeline. ECB combines the best of both worlds by supporting both of these mechanisms for both Xemacs and Emacs: ECB binds a toggle-command to `mouse-2' in the modeline of each tree-buffer which maximizes the current tree-window if all ECB-windows are visible and displays all ECB-windows if current tree-window is maximized. In addition ECB binds a popup-menu to `mouse-3' which offers exactly 2 commands: Maximizing current tree-window and displaying all ECB-windows. ** Renamed options or options with new type The following options have been renamed: ecb-truncate-lines --> ecb-tree-truncate-lines The following options have now a new type: ecb-tree-RET-selects-edit-window ecb-tree-image-icons-directories ECB automatically upgrades the old values to the new options! ** Better assistance fixing errors related to semantic-load problems Often users report errors somehow related to problems running ECB with the right semantic-version. There are different reasons for this: - People do not install the cedet-suite as described in the INSTALL-file of cedet. - People byte-compile ECB with another semantic (also eieio and speedbar) version than loaded into Emacs. All of them prevent ECB from working correctly. Now ECB detects the error at startup-time and assists the user in finding the reason of the problem and how to fix it. ** More robust downloading of new ECB from within Emacs Now `ecb-download-ecb' should work also with native Windows-XEmacs and also when ECB is installed in a directory which name contains spaces. If there are still problems in running this command please check the new options `ecb-wget-setup', `ecb-gzip-setup' and `ecb-tar-setup'. ** Support for (X)Emacs < 21 has been officialy removed. ECB requires now (X)Emacs >= 21. ECB stops activation with an appropriate error-message when (X)Emacs < 21 is detected. ** Full documentation of the library tree-buffer.el The ECB-info-manual contains a new section "tree-buffer" in the chapter "Entry points for elisp-programers". This describes in detail how to program with the library tree-buffer.el which is shipped with ECB. ** Fixed Bugs *** Version-controlled (VC) and not-VC history-entries are now sorted correctly according the setting in `ecb-history-sort-method'. *** Handles not anymore existing files in the stealthy tasks. If a stealthy task detects that a displayed file does not exist anymore it removes this source-file from the tree-displays. *** Fixed a bug when `ecb-process-non-semantic-files' is set to nil. This bug only occurs with XEmacs. As a side effect of this fix now the methods-buffer is correctly cleared out when loading a non-semantic-sourcefile (i.e. not parsable by semantic) and processing of non-semantic-files is switched off (`ecb-process-non-semantic-files' is set to nil) or the sourcefile is not parsable by a parser like imenu or etags/ctags. *** Fixed a bug in displaying semantic-tags which have plain-string members E.g. parsing `defstruct' has failed in previous ECB-version cause of this bug. *** Fixed a bug when Emacs is started with -q so Emacs could not determine the `custom-file'. This case is correctly handled now. * Changes for ECB version 2.31 ** Fixed bugs *** Fixed a recently introduced bug with XEmacs and an active isearch. This bug occured when a user has clicked onto a node in a tree-buffer during an active isearch and it had as result completely out-of-order tree-buffers. This buf is now fixed and should never occur. *** Fixed a bug concerning accessing root-drives in native window-XEmacs Fixes an annoying behavior of the native windows-version of XEmacs: When a path contains only a drive-letter and a : (e.g. C:) then `expand-file-name' (and a lot of other file-operations) do not interpret this path as root of that drive. So ECB adds temporary a trailing `directory-sep-char' and calls file-operations like `expand-file-name' with this new path because then `expand-file-name' treats this as root-dir of that drive. For all (X)Emacs-version besides the native-windows-XEmacs this fix is not needed and takes no effect. *** Better recognizing of remote CVS-root-repositories for the VC-support ** Enhancement for the VC-support *** New option `ecb-vc-xemacs-exclude-remote-cvs-repository' This excludes directories with a remote cvs-repository from VC-check. This option takes only effect for XEmacs and is needed cause of the outdated VC-package of XEmacs which offers no heuristic state-checking and also no option `vc-cvs-stay-local'. So this option takes only effect if `vc-cvs-stay-local' is not avaiable. In this case ECB treats directories which are managed by CVS but have a remote repository as if the directory would not being managed by CVS (so the files are not checked for their VC-state). This is done to avoid blocking XEmacs cause of running full cvs-commands (e.g. ``cvs status'') for a bunch of files over the net. *** Added beta-support for Clearcase There is already an identify-backend-function `ecb-vc-dir-managed-by-CC' and a check-state-function `ecb-vc-check-CC-state' and an advice for `clearcase-sync-from-disk' which enable automatic state-update after checkin/out. These code seems to work quite well but nevertheless there are some problems so this Clearcase-support is not added per default to `ecb-vc-supported-backends'. So if you want Clearcase-support you have to customize the option `ecb-vc-supported-backends' and add these functions mentioned above (the advice of `clearcase-sync-from-disk' takes only effect if the function `ecb-vc-dir-managed-by-CC' can be found in `ecb-vc-supported-backends' and ECB is active!). But use it at your own risk. Of course the best would be if a lot of people would test this Clearcase-support and fix the encountered problems ;-). Thanks to David Ostrovsky for providing a first implementation! * Changes for ECB version 2.30.1 ** Enhancement to the automatic option-upgrading mechanism ECB now automatically makes a backup-file of that file which will be modified by storing the upgraded rsp. renamed ECB-options. This backup file gets a unique name by adding a suffix ".before_ecb_" to the name of the modified file. If such a file already exists ECB adds a unique number to the end of the filename to make the filename unique. This is a safety mechanism if something fails during storing the upgraded options, so you never lose the contents of your customization-file! ** Enhancement to the VC-support *** Better recomputing of the VC-state of a file when state changed outside With the new check-state-function `ecb-vc-state' the heuristic state is always computed right which is especially useful if the state for a file has been changed outside Emacs (e.g. by checking in from command line or Windows Explorer). This function is now added to the default-value of `ecb-vc-supported-backends' for GNU Emacs. *** Added out-of-the-box support for VC-system Subversion For this the latest version of the VC-package incl. the library vc-syn.el is needed. Latest CVS Emacs contains this VC-version. The new function `ecb-vc-dir-managed-by-SVN' is now added to the default-value of `ecb-vc-supported-backends'. Thanks for first implementation to Ekkehard Görlach . ** Fixed bugs *** Fixed errors occured at load-time of ECB 2.30 * Changes for ECB version 2.30 ** Enhancements to the file-browser *** Much better performance of the file-browser display because all time-consuming tasks (like the check if the displayed directories are empty of not) are now performed "stealthy" - means when Emacs is idle. Each stealthy task is interruptable by the user just by hitting any key or clicking the mouse so Emacs/ECB will not be blocked by such tasks; next time Emacs is idle again the interrupted task automatically proceeds from the state it has been interrupted. There is a new macro `defecb-stealthy' which can be used by a user to program own stealthy tasks. Currently ECB performs three stealthy tasks: Prescann directories for emptyness: Prescann directories and display them as empty or not-empty in the directories-buffer. See the documentation of the option `ecb-prescan-directories-for-emptyness' for a description. File is read only: Check if sourcefile-items of the directories- or sources-buffer are read-only or not. See documentation of the option `ecb-sources-perform-read-only-check'. Version-control-state: Checks the version-control-state of files in directories which are managed by a VC-backend. See the option `ecb-vc-enable-support'. There is also a new option `ecb-stealthy-tasks-delay'. There are three options which allow excluding certain directories from these stealthy tasks: `ecb-prescan-directories-exclude-regexps', `ecb-read-only-check-exclude-regexps' and last but not least `ecb-vc-directory-exclude-regexps'. *** ECB is now capable of handling remote paths. "Remote" means file- or directory-paths in the sense of TRAMP, ANGE-FTP or EFS. Such paths can now being added to the option `ecb-source-path' with no limitation compared to "local" paths. Just work with remote-paths in the same manner as with local paths. See also the additional choices of the options `ecb-prescan-directories-for-emptyness', `ecb-sources-perform-read-only-check' and `ecb-vc-enable-support' (new). This new support is tested with the combinations GNU Emacs+TRAMP and XEmacs+EFS but it should (hopefully) also work with all other combinations. Thanks a lot to Tomas Orti for beta-testing! *** ECB displays the Version-control-state of a file in the tree-buffers. There are four new options `ecb-vc-enable-support', `ecb-vc-supported-backends', `ecb-vc-directory-exclude-regexps' and `ecb-vc-state-mapping' which define if and how ECB should check the state of a sourcefile in a directory managed by a version-control system. By default ECB supports the same VC-backends as the builtin VC-support of Emacs: CVS, RCS and SCCS. But the option `ecb-vc-supported-backends' allows to add support for arbitrary VC-backends (e.g. Clearcase). New image-icons are also included for a cute display of the VC-state in the directories, sources and history-buffer. Thanks to Markus Gritsch for contributing the icons. It's recommended to read the section "Version-control support" in the chapter "Tips and Trick" of the ECB-info-manual! *** New hook which runs directly after the selected directory has changed. See documentation of `ecb-after-directory-change-hook'. ** The popup-menu of the methods-browser allows precisely expanding of the current node. This means you can precisely expand a certain node to an exact indentation level relative to the node. This means all subnodes <= this level will be expanded (full recursive expanding is therefore of course also possible) and all subnodes indented deeper than this level will be collapsed - this is very different from using the expand/collapse symbol of a node. For forther details and examples the the manual and the section "Expanding" and here the subsection "Explicit expanding of the current node to a certain level". ** Automatically upgraded ecb-option-settings are now not saved by default. This means that ECB has now the new policy "Never touching the customization-files of a user without asking". The result is a completely redesigned upgraded-options-buffer: Now at the bottom of this buffer (displayed by `ecb-display-upgraded-options') two clickable buttons [Save] and [Cancel] are displayed which give the user the choice between saving the upgraded options for future Emacs-sessions ot just to cancel this buffer. In the latter case ECB has also upgraded the not compatible or renamed options (as listed in the displayed upgraded-options-buffer) but they will be not saved, i.e. no customization-file is touched and the changed and upgraded values will be lost after quiting Emacs. ** With XEmacs ECB temporary sets `progress-feedback-use-echo-area' to t This is necessary because otherwise the progress-display with native widgets modifies the window-sizes of ECB and does not exactly restore the window-sizes as before that progress-display. Deactivating ECB automatically restores the old value of this option. ** Fixed bugs *** Fixed resizing of the ecb-windows after opening a file Sometimes (X)Emacs (the behavior has only been reported for XEmacs) resizes the ecb-windows after opening a file by clicking onto a sourcefile or calling `find-file' (or similar functions). This is not a bug of ECB but nevertheless it is annoying for the ECB-users. Therefore ECB has now a workaround which prevents the ecb-windows from resizing. The work around is done via two simple advices of `find-file' and `find-file-other-window'. *** Fixed a bug in the upgrading feature (command `ecb-download-ecb') which has occured when the user has set a different LOKALE (e.g. "de_DE@euro"). *** Fixed a bug in restoring sizes of the ecb-windows. Now a check will be performed if there are ecb-windows visible. If not nothing will be done (versions < 2.30 have failed in such a case). This bug has prevented ediff from working together with ECB when a compile-window was visible and the user has stored window-sizes for the current layout. * Changes for ECB version 2.27 ** The option `ecb-auto-expand-tag-tree-collapse-other' now has three possible choices. You can decide between auto-collapsing only when point stays onto a tag in the edit-window or even when point doesn't stay onto a tag (which then results in a full collapsed methods-buffer). ECB autom. upgrades the old setting of this option to the new type. Thanks to Javier Oviedo for the suggestion. ** Not accessible directories are displayed in a different face in the directory-browser. See the new option `ecb-directory-not-accessible-face' and the new face with same name. ** Enhancements to the permanent compile-window *** Enlarging the compile-window does not destroy some ecb-windows With previous versions of ECB enlarging the permanent compile-window has often destroyed some ecb-windows if the compile-window has occupied a large portion of the frame-height (e.g. half of the frame). Beginning with ECB 2.27 such a ecb-window-damage is either prevented or - if it still occurs (can not be prevented in all situations) - ECB now has a "self-healing"-mechanism which immediatelly repairs the layout via idle-checks if the current window-layout is correct for the current `ecb-layout-name'. Conclusion: Enlarging or shrinking the compile-window should never damage the ecb-windows! Thanks to Javier Oviedo for a great problem-report! Caution: If bytecompiled user-defined layouts are used (ie. the file, which contains the user-defined layouts is byte-compiled) then you MUST recompile this file with ECB 2.27 active! *** Now `ecb-store-window-sizes' and `ecb-restore-window-sizes' also work when called during a permanent compile-window is visible and also when these commands are called with another compile-window state than the other (e.g. when the window-sizes are stored without a compile-window and restored with a compile-window). *** Now ECB ensures that the permanent compile-window has always its specified size when shrinked either by Emacs/ECB or by the command `ecb-toggle-compile-window-height'. *** Now ECB ensures that all ecb-windows have always either their default or stored size size after the compile-window has been shrinked either by Emacs/ECB or by the command `ecb-toggle-compile-window-height'. *** ECB takes into account the new Emacs-option `grep-window-height' when it compute the max. allowed size of its permanent compile-window. More generally spoken: It takes into account all options with name *-window-height defined for modes which are defined by the macro `define-compilation-mode'. This mechanism is available in the forthcoming Emacs 21.4 (and of course with current CVS-Emacs 21). ** Fixed Bugs *** Added a workaround for a bug in the custom-library of current release 21.3 of GNU Emacs which causes under certain circumstances the autom. option-upgrading-feature of ECB to fail. Same for the command `ecb-store-window-sizes'. Thanks for reporting this annoying bug and great help to Christoph Ludwig * Changes for ECB version 2.26 ** Improved the performance of the directories-buffer-display Reduced the need of completely rebuilding the whole directories-tree-buffer when just switching between buffers and the related directories are already expanded. This can dramatically increase the speed of the tree-buffer display when displaying the sources-files in the directories-buffer (see `ecb-show-sources-in-directories-buffer'). Thanks to Rob Walker for tracking down the performance bottleneck and supplying a first patch. ** Per default all mouse-actions in the special ECB-buffers are now triggered first after releasing the mouse-button and not when pressed as with previous ECB-versions. This is the standard behavior of Emacs and of most applications. But with the new option `ecb-tree-mouse-action-trigger' a user can switch back to the old behavior. As a side effect now the ECB-tree-buffers can be used during an active isearch - at least with GNU Emacs. Thanks to Markus Gritsch for pointing to this problem. ** ECB sets autom. temp-buffer-resize-mode rsp. temp-buffer-shrink-to-fit when needed. This modes are needed when a permanent compile-window is used because otherwise the correct sizing of the compile-window according to the settings in ecb-compile-window-temporally-enlarge and ecb-enlarged-compilation-window-max-height is not possible. After disabling the permanent compile-window or when deactivating ECB the original settings of these modes are restored! ** 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. This allows easier regexp-definition and follows now the way Emacs goes with other regexp-options like `same-window-regexps' or `special-display-regexps' which are also lists of regexps. ECB autom. upgrades your old settings to the new option-types rsp. also -names (if the option has been renamed). ** New option `ecb-history-exclude-file-regexps' for excluding certain files from being displayed in the history-buffer of ECB. Currently the filenames TAGS and semantic.cache are excluded per default. Thanks to Javier Oviedo for the suggestion. ** ECB now displays read-only sourcefiles in a different face. For this a new option and a new face are offered both named `ecb-source-read-only-face' (default: italic) which is used to display source-files in the sources-tree-buffer (or in the directories-tree-buffer if `ecb-show-sources-in-directories-buffer' is not nil) if the file is read-only. ** Fixed bugs *** Fixed merging faces with XEmacs. Now options like `ecb-type-tag-display' (merges own ECB-faces to already by semantic faced tags) work also correct with XEmacs. ECB-versions prior to 2.26 has not merged the ECB-faces to the already applied faces of a text but instead replaced the applied faces with the ECB ones. Now all faces are merged. *** Now the command `ecb-expand-methods-nodes' and all the expand-* menu-entries in the popup-menu of the methods-buffer work for non-semantic-buffers too. *** Fixed a bug concerning `ecb-auto-expand-tag-tree-collapse-other'. Thanks to Javier Oviedo for pointing to the problem. *** Handles not existing source-paths in `ecb-source-path' correct. These paths are now ignored with a warning. * Changes for ECB version 2.25 ** More flexible sorting of the Sources- and the History-buffer *** `ecb-sort-history-items' has been renamed to `ecb-history-sort-method' and offers now the same choices as the already existing option `ecb-sources-sort-method'. *** Two new options `ecb-sources-sort-ignore-case' and `ecb-history-sort-ignore-case' which allow to ignore case when sorting the Sources- and/or the History-buffer. Thanks for suggestion to Markus Gritsch . Per default case is now ignored. ** New icons for parent-display in the Methods-buffer. Thanks to Markus Gritsch for contributing the icon-images. ** Fixed Bugs *** Fixed an annoying bug which results sometimes in an error "stack-overflow error in equal" when using `senator-try-expand-semantic' which is called when you use hippie-expand for example. Maybe the bug occured also in other situation but now this bug has been extirpated! *** Fixed a bug in the mechanism which prescanes directories for emptyness. Now a directory is checked if it is accessible before it is prescanned - otherwise the prescan could fail with an error. *** Fixed a bug in the autom. option-upgrading-mechanism. Thanks to Javier Oviedo for pointing to the underlying problem. * Changes for ECB version 2.24 ** Enhancements for the Methods-buffer *** Enhancements to the icon-display in the Methods-buffer **** New icon-images for enumerations and abstract/virtual tags (interfaces are currently displayed with the icon for abstract classes - at least til someone provides special icons ;-) **** Some slightly fixes in the other icons - e.g. a better display with a not-white background **** Static and abstract tags are no longer underlined rsp. italic when icons are displayed because this is somehow "tautological" when a special static rsp. abstract icon is already displayed. *** New option for switching on/off distinction of function-prototypes from the real function-definitions: `ecb-methods-separate-prototypes'. This is useful for C++ and C because these languages distinct between a method-prototype (rsp. function-prototype for C) and the method (rsp. function for C) itself. If this option is not nil (default) then ECB separates the prototypes from the real function/methods in the Methods-buffer. *** New "current-type"-filter for the Methods-buffer In languages which have types (like Java or C++) this filter displays only the current type and all its members \(e.g. attributes and methods). The current-type is either the type of the current tag in the source-buffer or the type of the current node in the methods-buffer. If ECB can not identify the current type in the source-buffer or in the methods-window then nothing will be done. ** Now directories are prescanned for emptyness so they are displayed as empty in the directories-buffer even without user-interaction (i.e. in previous ECB-versions the emptyness of a directory has been first checked when the user has clicked onto a directory). ECB optimizes this check as best as possible but if a directory contains a lot of subdirectories which contain in turn a lot of entries, then expanding such a directory or selecting it takes of course more time as without this check - at least at the first time (all following selects of a directory uses the cached information if its subdirectories are empty or not). Therefore this feature can be switched of via the new option `ecb-prescan-directories-for-emptyness'. ** Fixed Bugs *** Fixed some newly introduced bugs which made ECB 2.23 incompatible with semantic 1.4. *** Fixed a bug which changed the highlighted directory even after just expanding or collapsing other directories. *** Fixed two small bugs which have influenced `ecb-create-new-layout' * Changes for ECB version 2.23 ** New cedet1.0beta2 is supported. ** Enhancements for the Methods-buffer *** The look&feel of the Methods-buffer is now much nicer because it has been polished with a lot of new icons. ECB contains now a lot of new icons for displaying the Method-buffer as pretty and professional as possible. The new default-value of the option `ecb-tree-image-icons-directories' points autom. to the new icon-images. Thanks a lot to Markus Gritsch for providing these new icons. To use this you should reset the option `ecb-tree-image-icons-directories' to the new default-value if you have customized this option! You can disable this icon-display via the new option `ecb-display-image-icons-for-semantic-tags' if you do not like the new icons. *** New feature for applying default tag-filters for certain files. The new option `ecb-default-tag-filter' allow to define default tag-filters for certain files which are applied automatically after loading such a file into a buffer. The possible filters are the same as offered by the command `ecb-methods-filter' and they are applied in the same manner - the only difference is they are applied automatically. The files can be specified on a combined major-mode- and filename-regexp-basis. Usage-example: This can be used to display for outline-mode files (e.g. NEWS) in the Methods-buffer only the level-1-headings by defining a regexp-filter "^\* .*" (see the default-value of this new option). *** New keybindings and commands for faster applying certain tag-filters. Here are the new bindings: [C-c . fr] --> `ecb-methods-filter-regexp' [C-c . ft] --> `ecb-methods-filter-tagclass' [C-c . fp] --> `ecb-methods-filter-protection' [C-c . fn] --> `ecb-methods-filter-nofilter' [C-c . fl] --> `ecb-methods-filter-delete-last' [C-c . ff] --> `ecb-methods-filter-function' *** The popup-menu contains now mode-dependend tag-filter entries. This means for sources not supported by semantic no protection- or tag-class filters will be offered. And for semantic-supported sources exactly these tag-classes are offered the semantic-parser for the current major-mode offers. Same for the command `ecb-methods-filter'. For example texi-sources can only be filtered by the tag-classes "Definitions" and "Sections" and java-sources can be filtered by "Methods", "Variables", "Classes" etc. In general the semantic-variable `semantic-symbol->name-assoc-list' is used to get the right tag-classes. *** The option `ecb-show-tags' is now defined on a major-mode-basis. This means you can have different settings for each major-mode. ECB autom. upgrades your old setting to the new option-type. *** Distinction between functions and function-prototypes in the Methods-buffer This is for example useful for C++ and C because these languages distinct between a method-prototype (rsp. function-prototype for C) and the method (rsp. function for C) itself. The new default value of `ecb-show-tags' displayes per default the methods as flattened and the method-prototype as collapsed when opening a C- or C++-buffer. ECB autom. updates your old setting of this option to the new default value. ** The command `ecb-toggle-layout' now has a prefix-argument: If this optional argument is not nil (e.g. if called with a prefix-arg) then always the last selected layout was choosen regardless of the setting in `ecb-toggle-layout-sequence'. The last selected layout is always that layout which was current direct before the most recent layout-switch. So now a user can switch to another layout via `ecb-change-layout' [C-c . l c] and always come back to his previous layout via [C-u C-c . l t]. ** Better internal self-monitoring of ECB ECB now monitors itself when Emacs is idle, ie. it monitors if all necessary ecb-functions are still member of the hooks `post-command-hook' and `pre-command-hook'. This is because Emacs resets these hooks to nil if any of the contained hook-functions fails with an error-signal. The ECB-hook-functions are error-save but if any of the "other" hook-functions of these hooks fail then the ECB-hooks would also have been removed from these hooks. The new monitoring-mechanism checks this periodically and re-adds the ECB-hooks if necessary. ** New option group for the integrated speedbar and one new option: The new hook `ecb-speedbar-before-activate-hook' runs directly before ECB activates the integrated speedbar. For example this hook can be used to change the expansion-mode of the integrated speedbar via `speedbar-change-initial-expansion-list'. Example: (speedbar-change-initial-expansion-list "buffers"). ** Added a new section in the info-manual which describes how desktop.el can be used best in combination with ECB. This has been done because some conflicts have been reported. See the "Conflicts"-Chapter in the info-manual. ** Fixed bugs *** Double-clicking the mouse-1-button now works with integrated speedbar. *** Fixed two small bugs in the advice of `display-buffer': One bug occured when called for one of the special ECB-buffers. The other bug has not preserved the current-buffer when called for a buffer in the sense of `ecb-compilation-buffer-p' and a hidden compile-window is shown by display-buffer to display this buffer. The latter one for example has prevented the ant-server of JDEE from working properly. *** Fixed a bug so now always the correct directory in the directories-buffer is higlighted. * Changes for ECB version 2.22 ** New nifty feature for filtering the tags displayed in the Methods-buffer You can filter by regexp, protection, tag-class etc. See the new command `ecb-methods-filter' (bound to [C-c . f m] and the new option `ecb-methods-filter-replace-existing' for getting all details. Filters can be layered filters, i.e. you can apply filters on top of already applied filters: An example of 3 combined filters would be: Display only all public methods having the string "test" in its name. The modeline of the Methods-buffer always displays the topmost filter. But you can see all currently applied filters by moving the mouse over this section of the modeline: The filters will be displayed as help-echo. The new functionality is also completely available via the popup-menu of the Methods-buffer. Currently tags of class 'type can not be filtered out, because especially in OO-languages like Java or C++ this makes only less sense because if the class is filtered out then no filter can be applied to its members like methods or attributes. These tag-filters can also applied to sources which are not supported by the semantic-parser but "only" by imenu or etags. But because for these sources not all information are avaiable the protection- and tag-class filter can not used with such "non-semantic"-sources. ** All tree-buffer filters are now guarded against filtering out all tags. Each filter which a user can apply to the sources-, methods- or history-buffer is now guarded against filtering out all nodes by accident, ie. if a filter would empty the whole tree-buffer then this filter will be autom. unwinded. ** Much smarter mechanism to highlight the current tag in the methods-buffer. Previous versions of ECB have always fully expanded the whole tree in the Methods-buffer if the current tag in the source-buffer was not visible in the current tree - e.g. because the variables-bucket was collapsed or the containing type of a tag (e.g. the class of a method) was collapsed. So in most cases much more was expanded as needed to make the current tag visible. The mechanism of ECB 2.22 only expands the needed parts of the tree-buffer to make the related node visible: First we try to highlight the current tag with current expansion-state of the Methods-buffer. If the node is not visible so the tag can not be highlighted then we go upstairs the ladder of type-tags the current tag belongs to (e.g. we expand successive the nodes of the whole class-hierachy of the current method-tag until the related node becomes visible). If there is no containing type for the current tag then the node of the tag is probably contained in a toplevel-bucket which is currently collapsed; in this case we expand only this bucket-node and try highlighting again. Only if this has still no success then we expand the full tree-buffer and try to highlight the current tag. There is also a new option `ecb-auto-expand-tag-tree-collapse-other': If this option is set then auto. expanding the tag-tree collapses all not related nodes. This means that all nodes which have no relevance for the currently highlighted node will be collapsed, because they are not necessary to make the highlighted node visible. This feature is switched off by default because if always collapses the complete Methods-tree before the the following highlighting of the node for the current tag expands the needed parts of the tree-buffer. ** The popup-menus can now be nested into 4 levels of submenus. In general there could be an infinite depth of nesting but it makes no sense - if possible at all - to define infinite nested defcustom-types. So there is a limit of 4 levels until a user asks for more - then this wish can be satisfied during 1 minute: Just increase the value of the `ecb-max-submenu-depth' before loading ECB. This enhancement affects the four options with name `ecb-*-menu-user-extension'. ** The indication for ECB in the minor-mode is now hidden when the ECB-windows are visible because in this case the activity of ECB is quite obvious. When the ECB-windows are hidden the the value of `ecb-minor-mode-text' is displayed in the modeline. ** Compatibility enhancements *** Cause of the fixed bugs the compatibility for `bs-show' has increased when the buffer-selection should be displayed in the permanent compile-window. ** Fixed Bugs *** Fixed a bug preventing the native Windows-port of XEmacs from working. *** Makes the behavior of adviced `display-buffer' fully compatible to the original version for all buffers which are neither ecb-tree-buffer nor compilation-buffers in the sense of `ecb-compilation-buffer-p'. These "source-buffers" are now also handled correctly in all situations. *** Fixed a small bug in `ecb-toggle-compile-window-height'. This bug has influenced the behavior of `display-buffer' when called from programs for "compilation-buffers". *** Fixed a bug related to the speedbar-integration. This bug complained "Can not switch buffer in dedicated window" when the intergrated speedbar-buffer was selected and the user tries to open a file or to jump to a tag. *** Fixed a bug for the special ECB-modeline-menu for the XEmacs-modelines. Now only in the special ECB-tree-buffer a special ECB-modeline-menu is bound to mouse-3, all other buffers display the standard modeline-menu of XEmacs. *** Fixed a bug which occurs with XEmacs in combination with func-menu. But there are still some incompatibilities between ECB and func-menu. So the recommendation is to disable func-menu-support when using ECB. Normally using func-menu makes no sense in combination with ECB because ECB provides the same and even more informations as func-menu - so func-menu is redundant ;-) * Changes for ECB version 2.21 ** Advice for `balance-windows' so only the edit-windows are balanced. Thanks to David Ishee <782zp6a02@sneakemail.com> for suggestion. ** New option `ecb-ignore-display-buffer-function' Per default the adviced version of `display-buffer' ignores the value of `display-buffer-function' when called for the ECB-frame. If this variable should not be ignored then the function of `display-buffer-function' is completely responsible which window is used for the buffer to display - no smart ECB-logic will help to deal best with the ECB-window-layout! You can define if and when `display-buffer-function' should be ignored: Always (default), when a compile-window is used or never. ** Compatibility enhancements In general the current layout-engine of ECB is so flexible that there should be no - or at least very few - conflicts between ECB and any other elisp-library - even when another lib is running during the ECB-windows are visible. *** Commands like `bs-show' of the library bs.el now work correctly with ECB *** Xrefactory works even when all ECB-windows are visible (see Fixed Bugs). *** Applications like Gnus or BBDB run withing the ECB-frame without conflicts - even when the ECB-windows are visible. *** Commands using `Electric-pop-up-window' now work correctly with ECB. This ensures that the electric-* commands (e.g. `electric-buffer-list' or `electric-command-history') work well with ECB. If the related "display-buffer" of such an electric command is a "compilation-buffer" in the sense of `ecb-compilation-buffer-p' then this buffer will be displayed in the compile-window of ECB - if there is any shown. ** For XEmacs the package fsf-compat is no longer required by ECB. But it is still necessary to check if fsf-compat is required by the packages semantic, eieio and speedbar which in turn are required by ECB. ** Fixed Bugs *** Fixed a fatal bug which prevents `other-window' from working with arguments < 0. This bug has also prevented Xrefactory from working correct when ECB is active - see compatibility enhancements above. *** If point stays in the current source-buffer on a function argument then still ECB highlights the function in the Methods-buffer. *** ECB now uses `compilation-window-height' correctly when set buffer-local as possible with latest CVS-version of GNU Emacs 21. *** Fixed a bug in `ecb-sources-filter' and `ecb-history-filter'. * Changes for ECB version 2.20 ** New customization group "ecb-most-important" This group centralizes the most important options of ECB in one group which is also offered by the "Preferences" submenu ob the ECB-menu. These are options you should at least know that they exist. ** The keybinding for the online-help has changed from [C-c . o] to [C-c . h] This has been done because the key [C-c . o] is needed for the new command `ecb-toggle-scroll-other-window-scrolls-compile'. ** The options `ecb-major-modes-activate' and `ecb-majors-mode-deactivate' have been replaced by one new option `ecb-major-modes-show-or-hide'. The purpose of the old option is now quite out-of-date because: - ECB supports window-managers like winring.el or escreen.el very well, - as of version 2.20 ECB has no restrictions about the number of edit-windows and - the new option simplifies things a lot. ** The restriction of only two edit-windows has been gone! *** Beginning with this version 2.20 there are no restrictions about the window-layout in the edit-area of ECB. This means you can split the edit-area of ECB in as many windows as you like. The split-state of the edit-area will be preserved when toggling the visibility of the ECB-windows and even between activation and deactivation of ECB. Deleting of certain edit-windows will never destroy the special ECB-windows or the compile-window. Just work with the edit-area of ECB as if it would be an extra frame! *** Option `ecb-split-edit-window' has been renamed in `ecb-split-edit-window-after-start' because this new name reflects much better the purpose of this option. In addition there is offered a new value 'before-deactivation which is also the new default value. This new value preserves the full state between activations of ECB, i.e. the visibility of the ECB-windows, the visibility of a compile-window and also the full split-state of the edit-area. ECB auto. upgrades your setting! *** Compile-window can now be displayed even when the ECB-windows are hidden. So now you can have the same compile-window functionality when the ECB-window are hidden as when the ECB-windows are visible. The state of the compile-window will be preserved when toggling the ecb-windows or when maximizing one ecb-windows! So you have the advantage of one special window for all help-, grep or compile-output also when the ecb-windows are hidden - a window which will not be deleted if you call `delete-other-windows' (bound to [C-x 1]) for one of the edit-windows. *** 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. ECB autom. upgrades the old settings. *** New keybinding [C-c . g l] for selecting the last selected edit-window. Also available via the ECB-menu. The command is `ecb-goto-window-edit-last'. *** Option `ecb-other-window-jump-behavior' has been renamed to `ecb-other-window-behavior' and has also two new allowed values: 'smart (the new default) and an arbitrary function-symbol. With the latter one the user can define his own other-window-behavior and the former one chooses in a smart and intuitive way the "other window" for going to it via `other-window' or for scrolling it via one of the "scroll another window"-functions (e.g. `scroll-other-window'). Thanks to John S. Yates, Jr. for suggesting the new smart behavior. ECB autom. upgrades the old value of `ecb-other-window-jump-behavior' to the new option-name. *** New option `ecb-scroll-other-window-scrolls-compile-window' and new command `ecb-toggle-scroll-other-window-scrolls-compile' (bound to [C-c . o]). If this new option is nil then ECB chooses very smart and intuitive the window which will be scrolled by commands like `scroll-other-window' (see documentation of the the option `ecb-other-window-behavior'). But sometimes the user wants to scroll the compile-window from another window. With this new command the user can fest and easy toggle the behavior ECB chooses another window for scrolling. *** Higher compatibility of ECB with other packages Without the 2-edit-window-restriction ECB is now more compatible with other packages. For example the package calculator.el can now also being used without setting `calculator-electric-mode' to not nil - regardless in how many edit-windows the edit-area of ECB is splitted. Also the package bs.el (command `bs-show') benefits from the new layout-flexibility. As of ECB-version 2.20 there should be no conflicts between this package and ECB. ** Enhancements to the tree-buffers of ECB *** Enhancements to the popup-menus of the tree-buffers **** All popup-menus of the tree-buffers can be used with the tmm-library The already existing command `tree-buffer-show-menu-keyboard' (bound to [M-m] in every tree-buffer of ECB) accepts now a prefix argument. If called with a prefix-argument (hit [C-u M-m]) then the popup-menu is displayed with the tmm-mechanismus (like the Emacs-[menu-bar] is displayed when `tmm-menubar' is called). Thanks for suggestion to Yvonne Thomson . **** Select an edit-window via popup where a source should be opened or a token should be displayed. **** The popup-menus can be dynamically extended. See the new options `ecb-directories-menu-user-extension-function', `ecb-sources-menu-user-extension-function', `ecb-methods-menu-user-extension-function' and `ecb-history-menu-user-extension-function'. **** All popup-menu-commands respect the setting of the option `ecb-mouse-click-destination' (formerly known as `ecb-primary-mouse-jump-destination' - see above). *** ECB supports the default modeline-mechanisms for deleting other windows. GNU Emacs binds [mouse-2] in its modeline to `delete-other-window'. ECB now supports this mechanism by binding a toggle-command to [mouse-2] in the modeline of each tree-buffer: If all ECB-windows are visible then this command maximizes the current tree-window and if current tree-window is maximized all ECB-windows are displayed again. XEmacs binds a popup-menu with some window commands to [button-3] in its modeline. ECB supports this mechanism by replacing this menu by a menu which offers exactly 2 commands: Maximizing current tree-window and displaying all ECB-windows. *** Now all commands for selecting a tree-buffer work even when this buffer is not visible because another tree-buffer is maximized. If the tree-buffer is contained in the layout then the layout is redrawn with all its tree-buffers visible so that tree-buffer can be selected. Same for maximizing. An example for such a command is `ecb-goto-window-methods'. *** New option `ecb-maximize-ecb-window-after-selection'. Automatic maximizing of a tree-window after selecting it. Thanks for suggestion to John S. Yates, Jr. . *** Changes to the image-icons of the tree-buffers **** All image-files have been renamed from .xpm to ecb-.xpm. This was necessary because the icons for "open" and "close" in Emacs toolbar got superseeded by ECB's icons for "open" and "close". The problem was, that ECB was using the same names for the icon files "open.xpm" and "close.xpm" as emacs toolbar does. This problem occurs if the image-directory of ECB is contained in the `load-path' which is when ECB is installed in the site-lisp directory of Emacs with the default subdirs.el of Emacs which adds automatically all subdirectories to the load-path (and therefore also subdirectories which does not contain elisp-files but only images - btw: not really smart;-). Thanks to Roland Schaeuble for pointing out that. **** Added all image-icons in a 10-point height. Thanks to Nick Cross for sizing down the images. ** New default-value for `ecb-post-process-semantic-taglist'. Now for buffers with major-mode `c-mode' all function-prototypes are filtered out. For example this is useful for editing C files which have the function prototypes defined at the top of the file and the implementations at the bottom. This means that everything appears twice in the methods buffer, but probably nobody wants to jump to the prototypes, they are only wasting space in the methods buffer. Of course in C-header-files function-prototypes will be displayed! Thanks for suggestion and a first implementation to Rob Walker . ** Changes for the compile-window *** The command `ecb-toggle-compile-window' now displays a compile-window even if the option `ecb-compile-window-height' is nil. This is a shortcut for customizing this option via the customize-feature if you just want displaying a compile-window for the current Emacs-session. In this situation ECB asks for the height of the compile-window, sets this height as new value of `ecb-compile-window-height' and displays the compile-window. *** New option `ecb-change-layout-preserves-compwin-state'. Changing the layout preserves now the state of the compile-window if this option is not nil. This is for example useful if the user toggles between several layouts and wants to preserve the hidden-state of the compile-window. Thanks to John S. Yates, Jr. for suggestion. *** Adviced `delete-window' and `delete-other-windows' handle compile-window. The former one hides the compile-window if called in or for that window whereas the latter one hides the compile-window if called in or for an unsplitted edit-window. Thanks to John S. Yates, Jr. for the suggestion. ** New option `ecb-activation-selects-ecb-frame-if-already-active'. See the docstring for more details. Thanks for suggestion to Jeff Jensen ** The command `ecb-redraw-layout' can be called with prefix-argument(s). Called with ONE prefix-argument the command behaves as with ECB-versions < 2.20, i.e. redrawing the full layout regardless of the current visibility-state of the ecb-windows or the compile-window. Called without a prefix-arg this command now preserves the state of the ecb-windows as well as the state of the compile-window. Called with TWO prefix-args means an emergency-redraw (see documentation of `ecb-redraw-layout'). ** New command `ecb-display-news-for-upgrade'. ECB autom. displays after an upgrade a short summary of the most important NEWS. With the new command you can do this also on demand. ** Fixed Bugs *** Adviced `display-buffer' handles `same-window-buffer-names' and `same-window-regexps' correctly. *** Fixed a bug preventing tree-buffers with expand-symbol "before" to work *** Fixed a bug in the adviced version of `other-window'. Now it works correctly also when a durable compile-window is set but currently hidden. *** Fixed a bug when scrolling a window from within the minibuffer. For example this bug has prevented scrolling the *Completion* buffer from within the minibuffer. Now `minibuffer-scroll-window' is set correctly. *** Toggling the compile-window has not worked when `ecb-compile-window-height' has not been saved for future sessions. This is fixed now. *** `ecb-cycle-through-compilation-buffers' works with hidden compile-window. *** Fixed a bug when an ECB-window was maximized and the user has stored sizes for this layout. *** Fixed a bug in `ecb-major-modes-activate' and `ecb-major-modes-deactivate' *** Fixed a bug in the handling of the option `ecb-kill-buffer-clears-history' *** Fixed a bug which prevents some older version of XEmacs 21.4 working well. For XEmacs 21.4.6 a bug was reported which causes this XEmacs-version to fail when `compile' or `grep' is called. The reason for this was that these old versions of XEmacs 21.4 contain versions of `display-buffer' and/or `get-frame-for-buffer' which do not have the fourth argument SHRINK-TO-FIT. Now ECB has fixed this and handles correctly the option `temp-buffer-shrink-to-fit' and all shades of displaying and compiling buffers even for these versions of XEmacs. * Changes for ECB version 2.11 ** Using semanticdb to jump to type-tags defined in other files. In OO-languages like CLOS, eieio and C++ there can be type-tags in the method-buffer which are somehow virtual because there is no definition in the current source-file. But such a virtual type collects all its outside defined members like methods in C++ which are defined in the *.cc file whereas the class-definition is defined in the associated header-file. ECB uses semanticb to open the definition-file of such a tag and to jump to the definition of this tag. Same for parent-tags in the methods-buffer. This feature can only work correctly if semanticdb is well configured! ** New option `ecb-ignore-special-display' The options `special-display-buffer-names', `special-display-regexps' and `special-display-function' work as expected. Per default this in only true, when no durable compile-window is used (see option `ecb-compile-window-height'), i.e. with a durable compile window the special-display-options are ignored per default. But this behavior can be changed with the new option `ecb-ignore-special-display'. Thanks to Rob Walker for a first suggestion. ** Better reporting if there are errors during ECB-startup ** Fixed bugs *** Clicking onto nodes with positionless semantic-tags as data doesn't fail *** Non-semantic sources (e.g. Perl, TeX) work when cedet 1.0 is loaded *** Fixed the versioning of ECB so the autom. upgrade works * Changes for ECB version 2.01 ** Prepared for the new semantic 2.0 beta (contained in the cedet 1 beta) *** New naming convention Forthcoming semantic 2.0 (part of the new cedet-library) introduces a new naming convention. Here is the relevant part of the semantic 2.0 NEWS-file: token - Refers to a lexical analyzer production. stream - A list of tokens tag - Refers to a datastructure created by a grammar to represent something in a language file table - A hierarchical list of tags. tag-class - A tag may represent a function, data type, or variable. parse - Run a source file through a parser. Normally there is no need for ECB users to bother with all details of semantic naming conventions but for the sake of consisteny between semantic and ECB the ECB-package has renamed all its variables and functions from "token" to "tag". Therefore also all options which contain "token" in their name have been renamed by replacing "token" with "tag". See RELEASE_NOTES for a list of this options. ECB autom. upgrades all old-values of these options to the new options! There is nothing to do for you. *** ECB works with new semantic 2.0 which is shipped within cedet 1.0 ** Overhaul of the display-layer and -handling of the tree-buffers *** Now there are 3 different styles available * Image: Looks very nice and modern - just give it a try or see the screenshots-section at http://ecb.sourceforge.net * Ascii with guide-lines: Drawing the trees with ascii-symbols * Ascii without guide-lines: This is the style of ECB <= 1.96 For details and a visualization of these different styles see the new option `ecb-tree-buffer-style' (replaces the old option `ecb-tree-use-image-icons'). Especially the new image-style was inspired by the library tree-widget.el written by David Ponce . Also some images shipped with ECB are "stolen" from this library. *** No-leaf-tree-nodes with currently no subnodes are displayed with [x] An example are directories in the Directories tree-buffer which have currently no subdirectories. Leafs like source-files or methods are of course handled as leafs and not as currently empty nodes. *** Fixed some inconsistencies in expanding, collapsing and selecting nodes *** Moving all options related to the tree-buffer-style or -handling to the new customize-group "ecb-tree-buffer". ** Completely rewritten popup-menu mechanism. *** Now sub-menus are allowed for all popups To give a better lucidity of the popup-menus of the tree-buffers these menus can now being arranged in sub-menus. The default values now already use sub-menus. So if you have added menu-entries 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' ECB resets these options to the new defaults of ECB and adds at the top your "old" personal entries. This comes because the type of these options has changed. Thanks for general suggestion to Ole Arndt . *** Added new defaults to `ecb-directories-menu-user-extension' Three new entries "CVS status", "CVS examine" and "CVS update" in a new sub-menu "Version control" for running CVS-commands against the directory. These menu-entries are added as new default values to `ecb-directories-menu-user-extension' so a user can delete or change them if he does not use CVS but another revision-tool (e.g. Clearcase). Thanks for suggestion and first implementation to Ole Arndt . *** Added new defaults to `ecb-sources-menu-user-extension' One new sub-menu "Version control" with some senseful commands. See also new default for the option `ecb-directories-menu-user-extension'. Same is added to the `ecb-history-menu-user-extension'. Thanks for suggestion and first implementation to Ole Arndt . ** Possibility to define which types should be expanded at file-open-time Semantic groups types into different type-specifiers. Current available type-specifiers are for example "class", "interface", "struct", "typedef", "union" and "enum". With the new option `ecb-type-tag-expansion' you can specify on a major-mode-basis which type-specifiers should be expanded at file-open-time and which not. So for example in C++ it could be senseful not to expand the types with a type-specifiers "typedef", "struct" or "enum" (see the default-value of this option). ** Adding a filter-feature to the Sources- and the History-buffer Now a filter can be applied to the Sources- and/or History-buffer which desides which entries are displayed in these buffers. See the new commands `ecb-sources-filter' (bound to [C-c . fs]) and `ecb-history-filter' (bound to [C-c . fh]) and the new entries for the popup-menus for these buffers. In the sources-buffer each directory has its own filter. The currently applied filter is displayed in the modeline of that tree-buffer with the new face `ecb-mode-line-prefix-face' (s.b.) ** Changes related to the modelines of the tree-buffers *** Added faces to the mode-lines of the ECB-tree-buffers. See the three new options `ecb-mode-line-win-nr-face', `ecb-mode-line-prefix-face' and `ecb-mode-line-data-face' and also they related (and equally named) new faces. *** Moved all options related to the modelines in the new customize-group "ecb-mode-line". ** No window-restrictions if the ECB-windows are hidden If the special ECB-windows are hidden (e.g. by `ecb-toggle-ecb-windows') then there are no restrictions about the window-layout of the ecb-frame: The frame can be splitted in any arbitrary windows. All adviced functions behave as their originals. So the frame can be used as if ECB would not be active but ECB IS still active in the "background" and all ECB-commands and all ECB-keybindings can be used. Of course some of them doesn't make much sense but nevertheless they can be called. Therefore it should be enough to hide the ECB-windows to run other Emacs-applications which have their own window-layout-managing. There should be no conflicts. But nevertheless the most recommended method for running ECB and other applications (e.g. xrefactory, Gnus etc.) in the same frame is to use a window-manager like winring.el or escreen.el! ** Ediff runs per default in the ECB-frame. Now ediff can run per default in the ECB-frame because ECB ensures that all special ECB-windows are hidden before ediff sets up its own window-layout. ECB also restores exactly the "before-ediff" window-layout of the ecb-frame See new option `ecb-run-ediff-in-ecb-frame'. ** More flexible directory-caching with new `ecb-cache-directory-contents-not' ** New option `ecb-advice-window-functions-signal-error' Now the adviced window functions of `ecb-advice-window-functions' do not signal per default an error if called in situations which are not allowed - they simple do nothing. An example is calling `delete-window' in a special ecb-window or in the compile-window; if this new option is nil then nothing is done otherwise an error is signaled. If you want the old behavior of signaling an error just set this new option to not nil. ** Fixed Bugs *** When the special ECB-windows were hidden and a durable compile-window was set then ECB shows the special ECB-windows when a temp-buffer (e.g. *Help*-buffers) has been displayed. This annoying behavior is fixed. *** XEmacs has not added the ECB-menu to the menubar of that buffers which are already alive while activating ECB. On the other side XEmacs has not removed the ECB-menu from the menubar for all living buffers after deactivating ECB. Both of these two bugs are fixed now. *** JDEE-dialogs now work correctly. JDEE offers sometimes "dialogs" where the user can choose among several options. These "dialogs" now work correctly regardless if a durable compile-window is used or not. *** A bug in displaying the tree-buffers in a different font or font-height * Changes for ECB version 1.96 ** ECB can work together with the window-managers escreen and winring This allows to run applications like Gnus, VM or BBDB in the same frame as ECB! See the new lib ecb-winman-support.el and read the section "Window-managers and ECB" in the chapter "Tips and tricks" in the info-manual of ECB. Thanks to Johann "Myrkraverk" Oskarsson who has reported some bugs related to escreen and has therefore motivated a lot to add support for the well known window-managers escreen and winring. ** ECB can display the window-number in the modeline of the special windows. The left-top-most window in a frame has the window-number 0 and all other windows are numbered with increasing numbers in the sequence, functions like `other-window' or `next-window' would walk through the frame. This allows to jump to windows by name as described at the Emacs-Wiki http://www.emacswiki.org/cgi-bin/wiki.pl?SwitchingWindows. See the new option `ecb-mode-line-display-window-number'. Currently this feature is only available for GNU Emacs 21.X, because neither GNU Emacs < 21 nor XEmacs can dynamically evaluate forms in the mode-line. Thanks to Johann "Myrkraverk" Oskarsson for suggesting this. In addition the already existing options `ecb-mode-line-data' and `ecb-mode-line-prefixes' are now more flexible and are now able to define special modelines not only for the 4 builtin ECB-tree-buffers but for every special ECB-buffer. ECB will autom. upgrade the old values of these options as best as possible to their new types! ** Much better support of the ECB-compile-window *** General overhaul for displaying buffers in the ECB-compile-window. The whole mechanism has been rewritten so now using a durable compile-window is much safer and works as well as without one. Now all buffers displayed with `display-buffer' are checked if they are "compilation-buffers" in the sense of the function `ecb-compilation-buffer-p' and then displayed in the compile-window of ECB. Especially temp-buffers displayed with `with-output-to-temp-buffer' (e.g. *Help*-buffers) are now much better supported. Simply said: All buffers for which `ecb-compilation-buffer-p' says t are now *always* displayed in the compile-window (if there is any) with complete consideration of Emacs-options like `compilation-window-height', `temp-buffer-max-height', `temp-buffer-resize-mode' (GNU Emacs), `temp-buffer-shrink-to-fit' (XEmacs) etc. All other buffer not. *** New layout-option `ecb-compile-window-width'. Thanks for suggestion to John S. Yates, Jr. *** New layout-option `ecb-compile-window-prevent-shrink-below-height' *** Better and more reliable eshell-integration. Now the compile-window fits always autom. to the output of the last eshell-command. *** All options related to the ECB-compile-window have been moved to the new customization-group "ecb-compilation" which is a subgroup of "ecb-layout". ** Safer handling of all adviced functions of ECB All ECB-advices are now active if and only if ECB is running. Just loading the ECB-library doesn't activate any ECB-advice! Also if there is an error during the activation-process of ECB then all advices are always disabled automatically. ** ECB can visit tokens in a smarter way *** Narrowing via popup-menu of the Methods-buffer includes now the documentation of the token if located outside of the token (e.g. Javadoc for Java). *** More flexible definition what to do after visiting a token via the Methods-buffer. See the new option `ecb-token-visit-post-actions' which now replaces the options ecb-highlight-token-header-after-jump', `ecb-scroll-window-after-jump' and `ecb-token-jump-narrow'. ** ECB selects autom. the current default-directory after activation even if no file-buffer is displayed in the edit-window. This is useful if ECB is autom. activated after startup of Emacs and Emacs is started without a file-argument. So the directory from which the startup has performed is auto. selected in the ECB-directories buffer and the ECB-sources buffer displays the contents of this directory. See new option `ecb-display-default-dir-after-start'. ** ECB preserves the split-state of the frame after activation rsp. deactivation This is done if the already existing option `ecb-split-edit-window' has the new value t. ** New command `ecb-toggle-window-sync' for fast toggling between autom. synchronization of the ECB-buffers is switched on and off. ** The popup-menu of the Directories-buffer allows opening a dir with Dired. The Sources-Buffer offers the same for the current selected directory. In the History-buffer the directory of the selected file-buffer can be "dired". ** Now manually resizing of the ECB-windows is possible even if `ecb-fix-window-size' is not nil for current layout. Thanks for suggestion Massimiliano Mirra . Only relevant for GNU Emacs 21.X. ** ECB does not call any functions of the cl-library at runtime. ** Fixed Bugs *** Fixed all the file- and directory-commands in the popup-menus. Now the Directories- and Sources-buffers are autom. updated after creating rsp. deleting source-files or directories. *** Jumping to some tokens for Perl sources failed. This is fixed now. *** Now the buffer-names displayed in the History-window are always uptodate, even if file-buffers are killed/opened during hidden ECB-windows. *** Fixed a conflict between ECB and `tmm-menubar' (tmm.el) *** Fixed a lot of misspellings in the ECB-online-help and also in all comments and strings of the sources. *** Fixed a bug in `ecb-toggle-enlarged-compilation-window'. This function has been also renamed to `ecb-toggle-compile-window-height'. *** Fixed a bug in the layout-engine related to dedicated windows. Thanks to Johann "Myrkraverk" Oskarsson who helped to find this bug. *** Fixed some references in the info-manual of ECB. * Changes for ECB version 1.95.1 ** Now the ecb-windows can be "maximized", means all other ecb-windows are deleted so only the edit-window(s), and this maximized ecb-window are visible (and maybe a compile-window if active). This can be done either via the popup-menus of the ecb-windows or via calling `delete-other-windows' (bound to [C-x 1]) in one of the ecb-windows or via the new commands `ecb-maximize-window-*' where * stands for {directories, sources, methods, history, speedbar}. There is also a command `ecb-cycle-maximized-ecb-buffers'. *Note*: 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; see RELEASE_NOTES for details. ** All popup-menus of the ECB-tree-buffers can be opened via [Meta-m] ** Fixed bugs *** Clicking onto the image-icons of an integrated speedbar has failed for XEmacs. This comes from a bug in speedbar which is now fixed locally in ECB by advicing `dframe-mouse-set-point' if speedbar is integrated in the ECB-frame. * Changes for ECB version 1.95 ** ECB now displays the expand- and collapse symbols in the tree-buffers with image-icons - the same icons as speedbar uses. See the new option `ecb-tree-use-image-icons'. ** Adding hideshow to the popup-menu of the Methods-buffer. This popup-menu now offers two entries for hiding rsp. showing the block of that token in the Methods-buffer for which the popup-menu was opened. This is done with the hideshow.el library. Thanks to Christoff Pale for suggestion. ** Horizontal scrolling of the tree-buffers by clicking the edges of the modeline with mouse-1 or mouse-2. I.e. if you click with mouse-1 onto the left (rsp right) edge of the modeline you will scroll left (rsp. right) with the scroll-step defined in `ecb-tree-easy-hor-scroll'. This is only for GNU Emacs because XEmacs has hor. scrollbars. ** Changed default key-bindings: - C-c . r: `ecb-rebuild-methods-buffer' - C-c . lc: `ecb-change-layout' - C-c . lr: `ecb-redraw-layout' - C-c . lt: `ecb-toggle-layout' - C-c . lw: `ecb-toggle-ecb-windows' ** Starting ECB is now possible via the "Tools"-menu ** ECB now requires speedbar version 0.14beta1 or higher. An automatic requirements-check is done by ECB. This is because now ECB has three dependencies to speedbar-code: Integrating whole speedbar in the ECB-frame, using speedbar-logic to parse files with imenu or etags and using the icons of speedbar for the ECB-tree-buffers. ** Fixed bugs *** Now the "goto-window-..." menu-entries in the "ECB"-menu are working correct if a speedbar is integrated into the layout. *** Preventing etags-supported sources from being parsed (and saved) too often. * Changes for ECB version 1.94 ** Supporting of non-semantic-sources. *** Native parsing and displaying source-contents of imenu supported files *** Native parsing and displaying source-contents of etags supported files *** There are some new options like `ecb-process-non-semantic-files', `ecb-non-semantic-parsing-function' and `ecb-method-non-semantic-face' and one new face `ecb-method-non-semantic-face'. See new customize group "ecb-non-semantic"! ** Better speedbar integration into the ECB-frame *** Now speedbar can be used not only as replacement for the ECB-directory-browser in the directory-window but also instead of the sources- or the methods-buffer/window. See new option `ecb-use-speedbar-instead-native-tree-buffer' which replaces the old option `ecb-use-speedbar-for-directories'. *** Now speedbar can be integrated into an arbitrary layout in the same way as the other four special buffers (directories, sources, methods and history). See new example layout with name "left-dir-plus-speedbar". *** New option `ecb-directories-update-speedbar' which helps you to update a speedbar-window to the current selected directory of the ECB-directories-window. ** New option `ecb-compilation-predicates' for better specifying which buffers should be treated as compilation-buffers and therefore be displayed in the compile-window of ECB - if there is any. ** Better customizing of the mode-line of an ECB-tree-buffer. See the new option `ecb-mode-line-data'. ** Fixed bugs: *** Using "Add source path" from the popup-menu now doesn't open the Windows file-dialog-box onto Windows-systems because this would prevent this command from working. *** Smart arrowkey-navigation in the tree-buffers is now even smarter. Thanks to John Russel for suggestion. *** If ECB was activated with a layout which does not contain a directory-buffer then you got always an empty directory-buffer even after switching to a layout with a directory-buffer. This is fixed now. * Changes for ECB version 1.93 ** Fixed bugs: *** The adviced version of `other-window' now works correct too if a minibuffer-window is active. *** The commands of `winner-mode' are now only forbidden in the ECB-frame but work in any other frame. *** `scroll-all-mode' now works correct in other frames than the ECB-frame. *** Removed the annoying message "Partial reparsing..." ** Enhancements to the layout: *** Slightly better redrawing current layout especially if the layout contains a compile-window. *** ECB autom. displays hidden compile-window before starting a compilation. This is done if `ecb-compile-window-height' is not nil but the compile-window is currently hidden by `ecb-toggle-compile-window'. Of course this works also for grep and other compile-modes. Same for `switch-to-buffer' and `switch-to-buffer-other-window' if called for a compilation-buffer in the sense of `ecb-compilation-buffer-p'. *** `switch-to-buffer-other-window' now works more naturally within the ECB-frame, especially if a compile-window is used. *** `ecb-toggle-compile-window' now has a default key-binding: [C-c . \] *** Now also layouts with user-defined special ecb-windows can be created interactively. See the online-manual for further details. ** Enhancements to the tree-buffers: *** Now user-extensions can be added to the popup-menus of the tree-buffers. See new options `ecb-directories-menu-user-extension', `ecb-sources-menu-user-extension', `ecb-methods-menu-user-extension', `ecb-history-menu-user-extension'. *** The methods-buffer now has a popup-menu with senseful actions ** New option `ecb-sources-exclude-cvsignore' which allows to exclude files from being displayed in the sources-buffer if they are contained in a .cvsignore file. ** ECB now also works with buffers "online" extracted from archives. Buffers extracted from an archive in `tar-mode' or `archive-mode' are now correct handled as if they were normal file-buffers. This feature doesn't work with XEmacs cause of its tar-mode and arc-mode implementation which does not handle extracted files as normal files. ** ECB now checks at load-time if the required packages semantic and eieio are at least available - regardless of the needed version. If at least one of these packages is missing then ECB offers to download and install it. More details are available in the installation instructions. * Changes for ECB version 1.92.1 ** Fixed bugs: *** Fixing eating up a lot of CPU-power just for updating the menu- entries of current compilation-buffers in the ECB-menu. Now the mechanism is based on a idle-timer and a cache. Fixed with great testing-help by Dan Debertin *** Fixed a bug which always truncates lines in the ECB-windows regardless of the value of `ecb-truncate-lines' *** The upgrade library of ECB now explicitly requires and loads the library executable.el because Emacs 20.X does not autoload the function `executable-find'. *** `ecb-toggle-compile-window' now works also correct if called with a prefix arg. * Changes for ECB version 1.92 ** Fixed bugs: *** Fixed small bugs in the popup-menu of the history-buffer. *** Fixed some not working links in the FAQ. ** ECB now includes a file "ecb-autoloads.el" which contains all available autoloads of ECB. Therefore loading this file is enough. ** Enhancements to the layout *** The sizes of the ecb-windows can be fixed even during frame-resizing This new feature is only available with GNU Emacs 21.X. See new option `ecb-fix-window-size'. Suggested by Gunther Ohrner *** The command `ecb-store-window-sizes' can now also store fixed sizes. If called with a prefix arg then fixed sizes are stored instead of fractions of frame-width rsp. -height. *** The command `split-window' is now also adviced to work properly. ** Enhancements for the tree-buffers *** "Create Source" in the popup-menus now work also for non-java-files. *** ecb-truncate-lines can now be set different for each ECB-tree-buffer. *** Easy horizontal mouse-scrolling of the ECB tree-buffers. See new option `ecb-tree-easy-hor-scroll'. ** Added a command `ecb-jde-display-class-at-point' which displays the contents of the java-class under point in the methods-buffer of ECB. ** Renamed previous HISTORY file to NEWS and reformated it for outline-mode. * Changes for ECB version 1.91.1 ** Fixed bugs: *** Fixes a bug in the speedbar integration which prevented clicking onto a directory in the speedbar: Always after clicking onto a directory speedbar has re-synced itself to the directory of the current source-buffer in the edit-window. This bug is fixed, now directory navigation in the speedbar works. (Klaus) *** Fixes a bug in upgrading stored window-sizes from ECB 1.80 to ECB >= 1.90. Fixes also two bugs in `ecb-store-window-sizes' if default-values are used in `ecb-layout-window-sizes' or if ecb-windows have frame-height as height (rsp. frame-width as width) . (Klaus) *** Fixed a bug in the navigation-history of ECB which sometimes has prevented that a user can open files from the sources/history buffer or clicking onto tokens in the method-buffer. Now the back-forward-navigation works stable. (Klaus) ** Enhanced the downloading feature of ECB *** Fixed a bug in the downloading feature of ECB. (Klaus) *** Now ECB autom. checks at the download sites which versions are available. With the new option `ecb-download-package-version-type' you can define which types of version you allow to download (only stable, stable and betas or stable, betas and alphas); see related section in the online-manual! (Klaus) *** New command `ecb-download-semantic' for easy getting latest semantic versions. (Klaus) * Changes for ECB version 1.90 ** The website of ECB has moved from http://home.swipnet.se/mayhem/ecb.html to http://ecb.sourceforge.net. Maintainance has switched from Jesper Nordenberg to Klaus Berndl. ** Fixed bugs: *** Fixed an annoying bug which results in an error "Wrong type argument: integer-or-marker-p nil)" after a full buffer reparse. ECB 1.80 has repaired its internal state but nevertheless the user had to re-click on the same token after this error to really jump to a token. With ECB 1.90 this bug has been gone (Klaus). *** Fixed a small bug in `ecb-add-all-buffers-to-history': If `ecb-sort-history-items' is nil then now the most recently used buffers are added to the top of the history, the seldom used buffers at the bottom. Thanks to Stefan Reichör ! (Klaus). *** Fixed some bugs concerning the eshell-integration (Klaus): **** Synchronizing does not set the mark anymore **** No longer synchronizing after every command if current source resides in the HOME directory. **** Redrawing the layout preserves the eshell-buffer in the compile-window. **** Standard emacs-hooks are not clobbered with ecb-eshell-functions if ECB is not active. ** General enhancements: *** Now ECB displays at every start a "Tip of the day" in a dialog-box. This can be switched off with option `ecb-tip-of-the-day'. There is also a new command `ecb-show-tip-of-the-day' (Klaus). *** Advicing `scroll-all-mode' so it works correct with ECB, means `scroll-all-mode' scrolls only the windows of the edit-area, i.e. max. the two edit-windows (Klaus). *** Autom. preventing `winner-mode' from being activated as long as ECB is running (Klaus). *** Now autom. (de)activating ECB via the options ecb-major-modes-activate and ecb-major-modes-deactivate also works when opening files via dired (Klaus). *** Now ECB can be "autoloaded", i.e. + ecb-activate, + ecb-minor-mode, + ecb-byte-compile and + ecb-show-help are autoload-able via '(autoload ...)' (Klaus) *** Silencing the byte-compiler, i.e. byte-compilation of ECB should now be warning free. If byte-compilation still throws warnings during byte-compilation with 'ecb-byte-compile' (rsp. using the Makefile or make.bat) please send this to our mailing list. (Klaus) ** Enhancements to the methods/variable/token tree-buffer: *** New feature: Now the methods buffer is auto. expanded if the node related to the current token in the edit-window is not visible (probably because its parent is collapsed). See new options `ecb-auto-expand-token-tree' and `ecb-expand-methods-switch-off-auto-expand' and the new command `ecb-toggle-auto-expand-token-tree' (Klaus). *** New command `ecb-expand-methods-nodes' which allows precisely expanding tokens with a certain indentation-level. There are also two new related options `ecb-methods-nodes-expand-spec' and `ecb-methods-nodes-collapse-spec' (Klaus). ** Enhancements to the directories tree-buffer: *** New command `ecb-expand-directory-nodes' which does the same for the directories tree-buffer as the new command `ecb-expand-methods-nodes' for the methods tree-buffer (Klaus). *** Rewritten cache-mechanism for directories and sources: Depending on the value of the option ecb-cache-directory-contents the following is cached for a directory: - The disk-contents of the directory means subdirs and files - If ecb-show-sources-in-directories-buffer is nil (i.e. sources are displayed in the extra ECB-sources-window) then also the complete sources-buffer is cached. This results in a speed-boost for big-size directories. The cache of a directory is refreshed and actualized with a POWER-click onto the related directory in the directories-buffer (s.b.) (Klaus) ** Enhancements to the sources tree-buffer: *** The option ecb-source-file-regexps now works on a directory-base, which means for each directory-regexp the files to display can be specified. Default is an all-matching directory-regexp. Old saved values are autom. upgraded (Klaus). ** Enhancements to the layout-customization: *** Naming and managing of layouts has been changed! Now a layout is not longer identified by an integer but by an arbitrary string! Example: The layout with index 0 in ECB <= 1.80 is now named "left1" in ECB 1.90. **** Therefore the name of the option 'ecb-layout-nr' has changed to 'ecb-layout-name'! See the docstring of 'ecb-layout-name' for the names of all built-in layouts. **** In this context also the type of ecb-show-sources-in-directories-buffer has changed so it is now a list of layout-names where the sources should be displayed in the directories window (or 'always/'never). Now every change of the layout also checks the value of ecb-show-sources-in-directories-buffer. **** This change also introduces three new commands: - ecb-change-layout: Change layouts by selecting a name - ecb-delete-new-layout: Delete an user-created (by 'ecb-create-new-layout') layout. - ecb-show-layout-help: Displays the docstring of a layout which at least for built-in layouts contains a picture of the outline of this layout. All three commands offer TAB-completion for easy selecting a layout name. **** ECB autom. upgrades the following options to theirs new names/types: - ecb-layout-nr: The stored value is transformed to the new name of the related layout and stored in 'ecb-layout-name' - ecb-toggle-layout-sequence: The stored value is transformed to the new type with layout-names instead of layout-numbers. - ecb-major-modes-activate: The stored value is transformed to the new type with layout-names instead of layout-numbers. - ecb-layout-window-sizes: The stored value is transformed to the new type with layout-names instead of layout-numbers. - ecb-show-sources-in-directories-buffer: Reset to the new default value. (Klaus) *** Adding a new layout type "left-right" which allows the ECB-tree-windows to be located at the left and the right side of the ECB-frame. See the new layouts "leftright1", "leftright2" and "leftright3" for examples. Other layouts of this type can be created or programmed very easy with 'ecb-create-newlayout' rsp. the macro 'ecb-layout-define'. (Klaus) *** Now ECB offers a command `ecb-create-new-layout' for interactively creating new layouts "by example". Read the online-help. (Klaus) *** Rewritten the mechanism for storing customized window-sizes. See option ecb-layout-window-sizes and the command ecb-store-window-sizes and ecb-restore-window-sizes. Now the sizes are always saved as fractions of the width (rsp. height) of the ECB-frame, so the stored sizes are always correct regardless of the current frame-size (Klaus). Suggested and first implementation by Geert Ribbers [geert.ribbers@realworld.nl] ** General Enhancements of the tree-windows: *** Introduced a POWER-click (was SHIFT-click before) in the ECB-tree-windows - see documentation of ecb-primary-secondary-mouse-buttons and see also the online-help section "Usage of ECB --> Using the mouse" (Klaus). *** Now the ECB-tree-buffers offer in their popup-menus a "Grep" and a "Grep recursive" (= grep-find) command where you can perform an easy grep in every directory without buffer-switching before. See also the new options `ecb-grep-function' and `ecb-grep-find-function'. (Klaus) *** Modified syntax-table for all tree-buffers with all paren, braces and brackets handled as whitespace so for example no paren-matching takes place (Klaus). ** Enhancements to the layout-engine of ECB: *** Added a complete new section "The layout-engine of ECB" to the online-help which describes in detail how to program new layouts and new special windows. This is for foreign packages which want to display own informations in own special windows and synchronizing these windows with the edit-window of ECB (a graphical debugger could be an example). Also a full working example is added in the new file ecb-examples.el. (Klaus) *** Completely rewritten how to program new layouts. Now there is a new macro `ecb-layout-define' which offers very easy programming of new layouts. (Klaus). ** Enhancements to the compile-window *** ECB now has a list of valid compilation buffers within the ECB menu. (Kevin) *** ECB now supports `ecb-enlarged-compilation-window-max-height' which can be used for defining the max. height of the ecb-compile-window if enlarged by `ecb-toggle-enlarged-compilation-window'. (burton) *** Added new command 'ecb-toggle-compile-window': Toggle the visibility of the compile-window of ECB (Klaus). ** Speedbar is now integrated in ECB and can be used instead of the standard ECB-directories buffer (or instead of all tree-buffers if you like :-). Most of the important basic work has been done by Kevin A. Burton. *** See new option 'ecb-use-speedbar-for-directories' and the node "Integrating speedbar" in the online-help. (Klaus) *** Version-checking for correct speedbar version (>= 0.14beta1). For lower versions ecb-use-speedbar-for-directories has no effect. (Klaus) *** ecb-speedbar and speedbar first loaded direct before drawing the layout with integrated speedbar. (Klaus) *** The speedbar-commands speedbar, speedbar-get-focus are adviced during running speedbar within ECB, so they behave in a senseful way. (Klaus) ** Enhancements to the ehell-support of ECB: *** ecb-eshell now recenters after command execution. (burton) *** ecb-eshell now recenters if there are any window resizes. This is done so that the prompt is always at the bottom of the window. (burton) *** ecb-eshell integration now protects against buffer-list modifications during transparent eshell updates in the compile window. In the past, if the eshell was running, and you want from buffer "foo", to "bar", and then tries to go back to "foo" the next entry in your buffer list is "*eshell*" so this would break a lot of completion tools like 'switch-to-buffer. (burton) *** Added online documentation for the eshell integration. See section "Tips and tricks". (Klaus) ** New hooks: *** New or renamed hooks: - ecb-redraw-layout-after-hook (new) - ecb-redraw-layout-before-hook (new) - ecb-hide-ecb-windows-after-hook (new) - ecb-hide-ecb-windows-before-hook (was ecb-hide-ecb-windows-hook) - ecb-show-ecb-windows-after-hook (new) - ecb-show-ecb-windows-before-hook (was ecb-show-ecb-windows-hook) Read the documentation! (Klaus) *** Added two general hooks: + ecb-before-activate-hook: Activate ECB only if all added hooks return not nil + ecb-before-deactivate-hook: Deactivate ECB only if all added hooks return not nil (Klaus) *** Added 5 new hooks for the ECB tree-buffers: + ecb-common-tree-buffer-after-create-hook + ecb-directories-buffer-after-create-hook + ecb-sources-buffer-after-create-hook + ecb-methods-buffer-after-create-hook + ecb-history-buffer-after-create-hook These hooks are called directly after tree-buffer creation so they can be used for example to add personal local key-bindings either to all tree-buffers (ecb-common-tree-buffer-after-create-hook) or just to a certain tree-buffer. Please read the documentation. (Klaus) * Changes for ECB version 1.80 ** ECB now requires: + Latest stable release of semantic: Version 1.4 + Latest stable release of eieio: Version 0.17 ECB checks at start-time if the correct versions are available and if not ECB offers you to download and install them from within Emacs. After this you have only to restart Emacs and you are fine. (Klaus) ** Fixed bugs: *** Fixed: Now no empty tool-tips are displayed if mouse moves over nodes in the tree-buffers of ECB which can be displayed completely in the tree-window. (Klaus) *** Fixed a bug in ecb-eshell. If we are running with current buffer sync, and there is garbage on the current line, when we change buffers this garbage will be executed which could result in a 'command not found' or even worse, a damaging command executed. We now cleanse the command line prior to directory changed. (Kevin A. Burton) *** Fixed a bug in ecb-speedbar. The speedbar was doing its own updating outside of the ECB. This means that if you were to change buffers in a frame outside of the ECB frame, the ECB's Speedbar would be updated to reflect a buffer not within the ECB. We now disable Speedbar's automatic update and have ECB handle this. (Kevin A. Burton) *** Fixed a bug: Sometimes there occurs a a "wrong-type-argument"-error (or "destroyed extent"-error with XEmacs) under some circumstances. Now ECB auto-reparses the buffer and after that ECB is in correct state again. (Klaus) *** Fixed formatting of "Parent" nodes in token buffer. (Jesper) ** Byte compiling ECB either interactive with `ecb-byte-compile' or with the supplied Makefile now checks also the versions of semantic and eieio. (Klaus) ** ECB now displays the section "First steps" of the online-manual after activating first time. (Klaus) ** Now the adviced versions of `delete-window' and `delete-other-windows' can also handle the optional WINDOW argument of the original versions correctly so the adviced versions now also work correct if called from program (Klaus). ** New adviced window command: `delete-windows-on' now works correct with ECB. See `ecb-advice-window-functions'. (Klaus) ** In the ECB-directories buffer now F4 adds a new source-path instead of F1. That is because F1 is such an important key in many OS and tools (e.g. opens help in all windows-programs), so ECB should not hardly "rebind" it. (Klaus) ** Enhancing the option 'ecb-window-sync': Now the synchronization can take place for all buffers which have a relation to files AND directories, i.e. now also for dired-buffers. But per default this is switched off, see the doc-string. (Klaus) ** Now the ECB online help is available in the standard Info-format and also in HTML-format. With the new option 'ecb-show-help-format' you can choose which format is used by the function 'ecb-show-help'. (Klaus) ** New feature and command: ecb-download-ecb. With this function you can download and install any arbitrary ECB-version from the ECB-website from within Emacs. This is especially useful for upgrading to the latest version. (Klaus) ** New debug mode for ECB which prints some debug informations in the message buffer for certain critical operations with semantic-overlays/extends. New option 'ecb-debug-mode' (also available in the Help-menu of ECB). (Klaus) ** Some default key-bindings have changed; see `ecb-key-map'. (Klaus) ** New feature: Possibility to define a sequence of layouts with new option `ecb-toggle-layout-sequence' and toggle very fast between them via `ecb-toggle-layout'. Read the online-help section "Simulation a speedbar without an extra frame"! (Klaus). ** Two new hooks: ecb-hide-ecb-windows-hook and ecb-show-ecb-windows-hook. Read the documentation. (Klaus) Suggested by Daniel Hegyi ** Two new options: ecb-major-modes-activate and ecb-major-modes-deactivate. Allow (de)activation of ECB on major-mode base. Instead of deactivation also just hiding the ECB-windows is possible. Read the docstrings. (Klaus) Suggested by Daniel Hegyi ** Redefining of the option 'ecb-compile-window-temporally-enlarge': Now you can specify that the compile-window is auto. enlarged after selecting it and auto. shrinked after leaving it. Read the docstring! (Klaus) Suggested by Daniel Hegyi ** Much better and more powerful auto. upgrading-mechanism of incompatible or renamed ECB-options to latest ECB-version. See the option ecb-auto-compatibility-check! (Klaus) ** New option ecb-tree-RET-selects-edit-window: Possibility not to select the edit-window of hitting RET in a tree-buffer; see the doc-string. There is also a new function ecb-toggle-RET-selects-edit-window which is bound to [C-t] in each tree-buffer. (Kevin A. Burton, Klaus) ** Better grouping of external methods, i.e. methods which are implemented outside the class-definition, like in C++, CLOS and EIEIO. Now this is done completely by semantic. (Klaus) ** For application programmers using the tree-buffer library: + The function tree-buffer-create has a new argument NODE-DATA-EQUAL-FN. See the doc-string for a description (Klaus). + For each tree-buffer a special user-data-storage (for any arbitrary data) is created which can be accessed via `tree-buffer-set-data-store' and `tree-buffer-get-data-store'. See the docstring of `tree-buffer-create'. (Klaus) * Changes for ECB version 1.70 ** New option ecb-bucket-token-display. See doc-string for details. (Klaus) ** Reorganization of the faces used by ECB. The group 'ecb-face-options' contains now all options which type is 'face (i.e. the defcustom's) and the group 'ecb-faces' contains all face-definition (the defface's). In addition it is now possible to change easily and fast the general face for ALL ECB-tree-buffers (same for the highlighting face). See the docstring of the new faces 'ecb-default-general-face' and 'ecb-default-highlight-face' for further details. (Klaus). ** Smarter incr. search in a tree-buffer with the [end]-key: If there are at least two nodes with the same greatest common-prefix than every hit of [end] jumps to the next node with this common prefix. (Klaus) ** New feature ecb-auto-compatibility-check: ECB checks on startup if the current value of an ECB-option OPT is not compatible with the type of OPT in current ECB-release. This is done during activation. If there are incompatible options ECB resets them to the default value of current ECB release and displays after activation in a temporary window which options have been reset, incl. their old-value (before the reset) and new-value (after the reset). (Klaus) ** New feature ecb-tree-navigation-by-arrow: Smarter navigation in the tree-windows with left- and right-arrow key (Klaus). Thanks for the suggestion and a first implementation to Geert Ribbers ! ** New feature 'ecb-type-token-display'. See the doc-string of this new option for a description. (Klaus) ** Now the option 'ecb-post-process-semantic-tokenlist' has per default an entry for emacs-lisp-mode, so for eieio-code the methods (defmethod) of a class are grouped with respect to the class they belong. The new default value of this option does this for c++- and eieio-code. (Klaus) ** Now in the ECB-tree-buffers RETURN works like the primary button (already in previous versions) and C-RETURN works like the secondary button (new in version 1.70). For an explanation of primary and secondary see the option ecb-primary-secondary-mouse-buttons. (Klaus) ** New feature: Now the token-display function can be defined separated for each major-mode. Furthermore the token-display for C++ has enhanced, especially for template-classes (but template displaying is first available with semantic > version 14beta13!). For this the option ecb-token-display-function has been completely rewritten and is now incompatible with the old values before ECB 1.61. (Klaus) ** Fixed a bug with mouse-avoidance-mode (only relevant for GNU Emacs 20.X) Klaus. ** New feature, ecb-select-edit-window-on-redraw. Mostly used if you are running with ecb-redraw-layout-quickly and want to make sure you are always in the edit window. (Kevin) ** New feature, ecb-auto-activate. If non-nil we can start the ECB after Emacs is started. See `ecb-auto-activate' for more information. (Kevin) ** New package, ecb-cycle.el. Supports cycling through all known compilation buffers. (Kevin) + ecb-cycle-switch-to-compilation-buffer - switch to available compilation buffers. + ecb-cycle-through-compilation-buffers - cycle through all compilation buffers. ** Much better performance of the directory and file-browser in ECB, especially for directories with a lot of entries (means ~ >1000, dependent on your machine and the net-connection in case of network-drives). See also the new feature: ecb-cache-directory-contents. (Klaus) ** ecb-eshell now supports customization. (Kevin) ** New feature: ecb-layout-always-operate-in-edit-window. Look at the documentation. (Kevin & Klaus) ** Fixed a bug in `ecb-toggle-ecb-windows'. For starters we weren't setting `ecb-window-hidden' when we redraw the layout. This means that the ecb windows could be hidden but never shown. Other things: + ecb-windows-hidden now has documentation + we display status messages when we hide windows. (Kevin) ** Fixed bug in `ecb-redraw-layout-quickly'. If for come reason any of the ECB windows are not alive, we do not return with a hard error. Instead, we use the scratch buffer. (Kevin) ** New function ecb-toggle-enlarged-compilation-window allows users to expand and then contract the compilation window with a new key binding C-c . / (Kevin) ** new option ecb-add-path-for-not-matching-files. Look at the documentation (Klaus). * Changes for ECB version 1.60 ** ecb-highlight-token-header-after-jump is now a boolean; which face is used for highlighting is defined in ecb-token-header-face. (Klaus) ** New option 'ecb-post-process-semantic-tokenlist': Special post-processing of the semantic tokenlist for certain major-modes. This is useful for c++-mode. Now with the default value of this option all methods in a c++-implementation-file (no class/method-declaration but only method implementations) are grouped with respect to the class they belong. (Klaus) ** Now also with C++ Sources the method- and variable-protection is displayed correct in the ECB-method buffer (Klaus). ** Fixed a bug which prevented ECB using the root path "/" on Unix-like systems as a source-path. (Klaus) ** If a file via the standard-mechanisms of Emacs (e.g. find-file) is opened, then the auto. window sync (see `ecb-window-sync') has worked only correct if the new file is located in any of the paths in `ecb-source-path'. Now ECB adds the path of the new file at least temporally via `ecb-add-source-path' to the list of paths in `ecb-source-path', so the window-sync works always correct. ECB asks the user if the new path should saved also for future sessions. (Klaus) ** Added ecb-redraw-layout-hooks so that code can be executed after we redraw the ecb layout. ** New hook ecb-current-buffer-sync-hook allows developers to add code to be evaluated after the ECB is synchronized with the current buffer. ** Now all faces used by ECB for highlighting and displaying it´s own stuff are customizable. See new group 'ecb-faces' (Klaus). ** ECB is now fully prepared for Emacs 21. The new feature `ecb-show-node-info-in-minibuffer' is implemented with the new 'help-echo property of Emacs 21, therefore the ugly `track-mouse' mechanism is not needed anymore with Emacs 21. (Klaus). ** 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 (Klaus). ** ecb-auto-expand-directory-tree now offers two options: - best: Expand always the best matching source-path for a file - first: Expand always the first matching source-path for a file (Klaus) ** Fixed a bug in auto. expanding directories if a source-path has an alias. (Klaus) ** If mouse is moved over an alias in the directories buffer then the real path is shown in the echo-area; see also 'ecb-show-node-info-in-minibuffer' (Klaus). ** If mouse is moved over an history-entry then the full path is shown in the echo-area so you can distinct better between two entries with the same name but with different paths; see also 'ecb-show-node-info-in-minibuffer' (Klaus). ** New option for the history: ecb-kill-buffer-clears-history defines if `kill-buffer' should also remove the corresponding history entry. There are several options (Klaus). * Changes for ECB version 1.52 ** Added EIEIO requirement to ECB. * Changes for ECB version 1.51 ** Now the names of all ECB buffers begin with a SPC per default. (Klaus) ** ECB now can handle not only full but also partial buffer reparsing if done by semantic and other tools (e.g. JDE >= 2.2.9). The method buffer will always be uptodate if for a major-mode auto. reparsing after buffer changes is enabled (the auto. buffer reparsing itself is not an ECB feature but must be supplied by the major-mode, e.g. JDE). (Klaus) ** Incremental node-search in the ECB-buffers now uses the value of `case-fold-search'. (Klaus) ** Complete new customization of the ECB-key-bindings. The option `ecb-prefix-key' has been removed. There is one new option `ecb-key-map' where you can customize all key-settings of ECB (including a common prefixkey). (Klaus) ** ecb-add-source-path and ecb-delete-source-path now ask if saving should be done for future sessions (Klaus). ** Added new navigator functionality. Makes it easy to go to the back and forward in navigated tokens and buffers. See ecb-nav-goto-next and ecb-nav-goto-previous. (Jesper) ** Added an option to narrow the buffer to the token that is jumped to. See ecb-token-jump-narrow. (Jesper) ** Fixed a small bug that placed the window start at the beginning of the token instead of the beginning of the token line. (Jesper) * Changes for ECB version 1.50 ** Fixed a minor bug that occured when de-activating ECB under XEmacs. (Jesper) ** ecb-layout-window-sizes variable is now an association list, which makes it easier to add and remove layouts. (Jesper) ** Added a new layout (nr. 12). Thanks to Nick Cross for this layout. ** Each source path can now have an alias that is displayed instead of the path name in the directories buffer. (Jesper) ** The history items can now use the buffer name instead of the file name. Customizable with ecb-history-item-name. (Jesper) ** When jumping to a token the window can be scrolled so that the token starts at the top or center of the window. This behavior is customizable with the variable ecb-scroll-window-after-jump. (Jesper) ** Fixed a bug when retrieving parent names for a token. (Jesper) ** Now the option 'ecb-prefix-key' is customizable so you can define another prefix if there are conflicts with other minor-modes or packages (Klaus). * Changes for ECB version 1.41 ** Fixed bug when clicking on token in the methods buffer in XEmacs. * Changes for ECB version 1.40 ** Tree-incremental-search in the ecb-windows now ignores all non interesting stuff: + any leading spaces + expand/collapse-buttons: [+] rsp. [-] + protection-signs (+, -, #) in the method-window if uml-notation is used + variables types or return-types in front of variable- or method-names. + const specifier for variables This makes incremental-searching in a tree-buffer much faster and easier. (Klaus) ** ECB now uses Semantic DB to find parents of types. (Jesper) ** Long source paths in the directories buffer are now truncated at the beginning. Customizable with variable ecb-truncate-long-names. (Jesper) ** Tokens can now be sorted by access. (Jesper) ** Added a function to semantic-clean-token-hooks that just updates the token changed instead of re-building the entire token tree. (Jesper) ** Implemented a token tree cache that stores recently opened buffers' token trees. This makes the buffer switching much faster and also saves expanded nodes and window positions. The cache is unlimited at the moment. (Jesper) ** Added a speedbar-like layout nr. 11. This is very useful (like also layout nr. 10) either for users with small screens or users which normally do not need/want the ECB-windows but sometimes browsing/selecting methods/variables. (Klaus) ** Better extraction of tokens from current buffer. ECB now displays any token type in any order. (Jesper) ** ECB now uses Semantic to display tokens in the methods buffer. (Jesper) ** Much saver ecb-redraw-layout: Now the layout can be restored ALWAYS regardless what messy thing has been done before. (Klaus) ** New advice for 'other-window-for-scrolling', so all scroll-functions for the "other" window can also scroll the first edit-window if point stays in the second one. (Klaus) ** ecb-toggle-ecb-windows now preserves the split, the split-amount, the buffer contents, the window starts and current point. (Klaus) ** Some important changes in the ECB-layout concerning displaying compilation- and temp-buffers. (Klaus): *** 'ecb-select-compile-window' has been gone. *** 'ecb-use-dedicated-windows' is not longer a user-customizable option but it is always set to t, because this is essential for correct working of the ecb-layout engine! *** 'ecb-compile-window-temporally-enlarge' is now a boolean option. *** Now ECB does all necessary that your edit-window of ECB seems to be a normal Emacs frame, especially concerning displaying temp-buffers (like help- and completion-buffers) and compilation-buffers. *** The variables 'compilation-window-height' and 'temp-buffer-shrink-to-fit' (XEmacs) and 'temp-buffer-resize-mode' (GNU Emacs) are now fully supported by ECB if no durable compilation-window is shown. ** New function to toggle visibility of the ECB windows. Now it´s possible to hide all ECB windows without deactivating ECB (see 'ecb-toggle-ecb-windows') (Klaus). ** ECB is now a global minor mode with it´s own menu "ECB" and it´s own key-map with prefix "C-c .". New function to (de)activate/toggle ECB with 'ecb-minor-mode'. (Klaus) ** Fixed a bug in highlighting current token in the method-buffer when font-lock-mode is nil for the source-buffer. (Klaus) ** New option for highlighting the method-header in the edit-window after clicking onto the method in the method-window (like Speedbar does). (Klaus) ** Function for automatically submitting a problem report to the ECB mailing list: ecb-submit-problem-report. (Klaus) ** Now not only for method-highlighting an idle delay can be set but also for synchronizing the ECB windows with current edit window (see option ecb-window-sync and ecb-window-sync-delay; default is 0.25 sec delay) (Klaus). ** Smarter highlighting of current method (Klaus). ** All tree-buffers now have as default-directory the current selected directory in the directory buffer. So you can also open files with find-file etc. from within the tree-buffers. (Klaus). * Changes for ECB version 1.32 ** Nil parent bug fixed. (Jesper) ** New advices for find-file and switch-to-buffer (Klaus). ** Now possible to set an idle delay before the current method is highlighted; useful for slow machines but prevents also "jumping backward/forward" during scrolling within java-classes if point goes out of method-definition into class-definition. Default is an idle time of 0.25 seconds. (Klaus). * Changes for ECB version 1.31 ** Parents (extends and implements) of the classes in the current buffer is now shown in the methods buffer. (Jesper). Possibility to define a regexp which parents should not be shown. (Klaus). ** Now displaying the complete node name in minibuffer with the track-mouse mechanism works also with mouse-avoidance-mode on; the mouse-avoidance will be deactivated as long ECB is activated and the node-name display-mechanism is on. This refers only to GNU Emacs! (Klaus) ** Fixed a bug in 'ecb-current-buffer-sync' and 'ecb-redraw-layout' (Klaus) ** Fixed a bug in loading semantic 1.3.3 or semantic 1.4 (Klaus) * Changes for ECB version 1.30 ** If not all ECB-tree-windows of current layout are visible at redraw-time ('ecb-redraw-layout') then the redraw synchronizes the contents of the tree-windows with the source displayed in current edit-window (Klaus). ** Added a section "Tips and Tricks" to the ECB online-help. (Klaus) ** Added a new layout Nr. 10 for very small screen resolutions where all square-centimeters are needed for the editing itself. This layout only displays a method-window and a edit-window. (Klaus). ** The messages displayed after moving the mouse over a node in a tree-buffer do not longer wasting the log, means they will not be logged (Klaus). ** ECB now also works with semantic >= 1.4 (Klaus). ** Now the ecb-compile-window-height is also preserved after displaying temp-buffers (e.g. help-buffers after C-h f) - if you want this. See the documentation of the option 'ecb-compile-window-temporally-enlarge'. (Klaus) ** Added menu items for modification of the source paths in the directories buffer. (Jesper) ** Added buttons to directories buffer. (Jesper) ** Mouse over files, methods etc. now work even if follow-mouse isn't activated (Jesper). ECB adds a more intelligent mouse tracking mechanism, so not only the mouse-over-node stuff of ECB works now very well and savely but also follow-mouse itself works better and saver as without activated ECB. (Klaus) ** Popup menus now work in XEmacs. (Jesper) ** You can now specify paths with env-vars like $HOME in the option `ecb-source-path'. (Klaus) ** The user must now confirm if he tries to delete the ECB frame. If he wants to proceed then ECB will be first deactivated before deleting the frame. This works for all ways to delete a frame (shortcut, window-manager-button, ...). (Klaus) ** ECB now optionally create its own frame when activated. See the new option 'ecb-new-ecb-frame'. (Klaus) ** Intelligent recentering of tree-buffers now completely implemented without the function 'recenter'. This means no flickering and flashing the whole frame anymore after each 'recenter'. Now the ECB display is stable like a rock :-) (Klaus) ** Mouse over directories now shows directory path. (Jesper) ** Methods and variables with point are now highlighted. (Jesper) ** ECB windows are now updated when saving new files and deleting files. (Jesper) ** incremental-search in every tree-buffer for easier and faster selecting nodes with the keyboard (see new option `ecb-tree-incremental-search' and new function 'tree-buffer-incremental-node-search') for more details. (Klaus) ** ecb-redraw-layout now restores both edit window buffers and the edit window start. (Jesper) ** Spelling corrections. Thanks to Colin Marquardt for spotting them. ** Mode line prefixes can now be set individually for each ECB-buffer. There is a default-prefix for each buffer but the user can also define a custom prefix or no prefix at all. (Jesper/Klaus) ** Fixed small bug in directory tree that caused directories to be sorted by extension. (Jesper) * Changes for ECB version 1.20 ** Now the ECB-buffers are intelligent in displaying nodes (Klaus): + Expandable nodes: (e.g. a directory with it´s subdirectories). An ECB-tree-window now tries always to make visible as much as possible of the sub-nodes of a node if a node is expanded (e.g. by clicking onto it´s expand-symbol). + Other nodes: A ECB-tree-window is always best filled, means no empty lines if there are enough lines to fill the whole window. ** The source file is only parsed if the ECB methods window is visible (Jesper). ** The methods buffer now show fields of EIEIO classes. Only works with semantic 1.4. Thanks to Eric M. Ludlam for this patch. ** Now all adviced functions behave only special in the ECB-frame. In each other frame they behave exactly like the not adviced functions. (Klaus) ** Fix "invalid method-buffer"-bug (Klaus, with a lot of help by Eric Ludlam and David Ponce). ** Source files can now be sorted by name, extension or not sorted at all (Jesper). ** Now you can precisely define by an exclude and include regexp which files should be displayed by ECB. (Jesper). ** Jumping to a method/variable from the ECB-method buffer now sets the mark so the user can easily jump back (see `ecb-method-jump-sets-mark'). (Klaus) ** Now you can define a primary and a secondary mouse-button for ECB. See the new variable `ecb-primary-secondary-mouse-buttons'. Note: The name of the option 'ecb-left-mouse-jump-destination' has been changed to `ecb-primary-mouse-jump-destination'! ** Now ECB is really ediff-friendly: During ediff is active the advices of ECB are temporally deactivated! (Klaus) ** Now all tree-buffers (ECB-buffers) are read-only (Klaus)! ** Better implementation of advising the functions. Now all advice-able functions are completely independent from each other (Klaus)! ** Removes the redundant modeline info and shows important information. ** Added new option `ecb-advice-window-functions'. Enabling the intelligent window functions via customize. No hook hacking necessary anymore! Now the intelligent window functions are implemented by advicing (Klaus). ** Better online help display (Klaus). ** Added new option 'ecb-primary-mouse-jump-destination' (thanks to David Hay for suggestion . ** Adviced 'other-window' acts now exactly like the original but always related to 'ecb-other-window-jump-behavior' (Klaus)! ** Fixed bug with 'ecb-compile-window-height'. Now ECB has always the correct compile-window height after compilation-output (compile, grep etc.) ** New option 'ecb-compile-window-temporally-enlarge'. Allowing Emacs-compilation to enlarge the ECB-compile-window temporally. * Changes for ECB version 1.10 ** Automatic expansion of the directory tree. ** Method parsing is now recursive, so that for example inner classes in Java are shown in the methods buffer. ** Variables are now shown in the methods buffer. ** Selected files and directories now use the secondary-selection face. Thanks to Kevin A. Burton for this patch. ** Fixed some issues with XEmacs. Thanks to Colin Marquardt for this. ** Fixed bug with truncating lines in tree-buffer.el. ** The methods buffer can now be automatically updated when the source file is saved. ** Help text is available with "ecb-show-help". ** Moving the mouse over a node shows the name in the mini-buffer. Currently this only works when follow-mouse is activated. * Changes for ECB version 1.0 ** Changed name from JCB to ECB and prefix from "jde-jcb-" to "ecb-". ** Works with semantic 1.3.1 and higher. ** Fixed a couple of bugs when creating and deleting files. ** Grouped customization variables. ** Contributed by Klaus Berndl : *** A lot of intelligent ECB window-functions (e.g. ecb-delete-window) which gives you the feeling as if the edit-window is the only window of the ECB frame. *** New layout functionality. *** The history buffer can optionally be sorted and also cleared. *** The package expanded symbol can optionally be placed before the package name. *** Syntax highlighting of the methods buffer. *** Show argument names and return type in the methods buffer. *** History clear function: ecb-clear-history. *** Added pop-up menu to the history buffer. *** Fixed edit buffer sync bug. * Changes for ECB version 0.04 ** Keyboard navigation in JCB buffers. Use Return to select and Tab to expand. ** Tree view of packages. ** Class files can be viewed in the packages buffer. ** Better handling of mouse events. ** Automatic update of the packages buffer. ** Added pop-up menus to the packages and classes buffers. They are activated with mouse button 3 (right button). ** Added method sorting. Thanks to Brian Anderson for this improvement. * Changes for ECB version 0.03 ** Fixed naming of variables. ** Fixed license and copyright comments. ** Fixed class file regular expression bug. Thanks to Jim Loverde for finding it. ** Added three new layouts. ** The JCB buffers can now be (almost) synchronized with the edit window. ** When clicking on a class or method using mouse button 2, it will be loaded into another window. A new customization variable was added for this. ** Minor changes. Thanks to Jim for his suggestions. ** Removed the "jde-jcb-window-skips-from-methods-buffer" and "jde-jcb-window-skips-from-history-buffer" customization variables. * Changes for ECB version 0.02 ** Changed prefix from "jcb-" to "jde-jcb-". This will cause JCB customization variables to be saved in JDE project files. ** Lists and parses non-Java file types. Currently the C and Lisp parsers from semantic-ex.el are used. ** History buffer implemented. ** Layout function implement. Thanks to Jim Loverde for helping out with this. ** Packages matching a regular expression can be excluded from the packages buffer. Thanks to Mark Gibson for this feature. * Changes for ECB version 0.01 ** Initial version. Local variables: mode: outline paragraph-separate: "[ ]*$" end: ecb-2.40+cvs20110608/README000066400000000000000000000175771157374236500145170ustar00rootroot00000000000000README 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. ecb-2.40+cvs20110608/RELEASE_NOTES000066400000000000000000000260121157374236500155720ustar00rootroot00000000000000This 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. ecb-2.40+cvs20110608/TODO000066400000000000000000000032261157374236500143110ustar00rootroot00000000000000- 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........ ecb-2.40+cvs20110608/ecb-advice-test.el000077500000000000000000000337221157374236500171110ustar00rootroot00000000000000;;; 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 ;; Maintainer: Klaus Berndl ;; 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: ecb-advice-test.el,v 1.3 2009/07/06 07:45:33 berndl Exp $ ;;; 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 ecb-2.40+cvs20110608/ecb-analyse.el000066400000000000000000000776121157374236500163400ustar00rootroot00000000000000;;; ecb-analyse.el --- ECB analysis display window ;;; Copyright (C) 2004 - 2005 Klaus Berndl ;; Author: Klaus Berndl ;; Maintainer: Klaus Berndl ;; 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: ecb-analyse.el,v 1.28 2010/02/23 16:08:55 berndl Exp $ ;;; 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 : 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 : 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 : 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 : 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 ecb-2.40+cvs20110608/ecb-autogen.el000066400000000000000000000134771157374236500163450ustar00rootroot00000000000000;;; 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 ;; Klaus Berndl ;; Kevin A. Burton ;; Maintainer: Klaus Berndl ;; 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: ecb-autogen.el,v 1.15 2010/02/23 16:08:56 berndl Exp $ ;;; 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 ecb-2.40+cvs20110608/ecb-buffertab.el000066400000000000000000000074651157374236500166430ustar00rootroot00000000000000;;; ecb-buffertab.el --- ;; $Id: ecb-buffertab.el,v 1.7 2002/12/29 10:15:12 burtonator Exp $ ;; 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.") (defface ecb-buffertab-secondary-face '((t (:bold nil :foreground "black"))) "Face used to highlight the annotation lines to the left of the annotate buffer.") (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.") (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") (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: " )) (save-excursion (set-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 hereecb-2.40+cvs20110608/ecb-cedet-wrapper.el000077500000000000000000000374161157374236500174470ustar00rootroot00000000000000;;; ecb-cedet-wrapper.el -- define wrappers for all cedet funcs/vars ;; Copyright (C) 2000 - 2009 Klaus Berndl, ;; Free Software Foundation, Inc. ;; Author: Klaus Berndl ;; Maintainer: Klaus Berndl ;; 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: ecb-cedet-wrapper.el,v 1.7 2010/02/21 13:10:12 berndl Exp $ ;;; 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 : 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 '(1 0 4 9) "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--"= 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 ecb-2.40+cvs20110608/ecb-common-browser.el000066400000000000000000003057131157374236500176510ustar00rootroot00000000000000;;; ecb-common-browser.el --- common browsing stuff for Emacs ;; Copyright (C) 2000 - 2005 Jesper Nordenberg, ;; Klaus Berndl, ;; Kevin A. Burton, ;; Free Software Foundation, Inc. ;; Author: Jesper Nordenberg ;; Klaus Berndl ;; Kevin A. Burton ;; Maintainer: Klaus Berndl ;; 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 PATICULAR 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: ecb-common-browser.el,v 1.45 2010/02/23 16:08:56 berndl Exp $ ;;; 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-util) (require 'tree-buffer) ;; (require 'ecb-layout) ;; causes cyclic dependencies! (require 'ecb-mode-line) (require 'ecb-navigate) ;; various loads (require 'assoc) (eval-when-compile ;; to avoid compiler grips (require 'cl)) (silentcomp-defvar modeline-map) (defgroup ecb-tree-buffer nil "General settings related to the tree-buffers of ECB." :group 'ecb :prefix "ecb-") (defcustom ecb-bucket-node-display '("" "" ecb-bucket-node-face) "*How ECB displays bucket-nodes in a ECB tree-buffer. Bucket-nodes have only one job: Nodes with similar properties will be dropped into one bucket for such a common property and all these nodes will be added as children to the bucket-node. Besides being expandable and collapsable a bucket-node has no senseful action assigned. Examples for bucket-nodes are \"[+] Variables\", \"[+] Dependencies\" etc. in the Methods-buffer or buckets which combine filenames with same extension under a bucket-node with name this extension. This option defines how bucket-node should be displayed. The name of the bucket-node is computed by ECB but you can define a prefix, a suffix and a special face for the bucket-node The default are empty prefix/suffix-strings and 'ecb-bucket-node-face'. But an alternative can be for example '\(\"[\" \"]\" nil) which means no special face and a display like \"[+] []\"." :group 'ecb-tree-buffer :set (function (lambda (symbol value) (set symbol value) (ecb-clear-tag-tree-cache))) :type '(list (string :tag "Bucket-prefix" :value "[") (string :tag "Bucket-suffix" :value "]") (choice :tag "Bucket-face" :menu-tag "Bucket-face" (const :tag "No special face" :value nil) (face :tag "Face" :value ecb-bucket-node-face))) :initialize 'custom-initialize-default) (defcustom ecb-use-speedbar-instead-native-tree-buffer nil "*If true then uses speedbar for directories, sources or methods. This means that speedbar is integrated in the ECB-frame and is displayed in that window normally displaying the standard ECB-directories-buffer, ECB-sources-buffer or ECB-methods-buffer. This option takes effect in all layouts which contain either a directory window, a sources window or a method window. This option can have four valid values: - nil: Do not use speedbar \(default) - dir: Use speedbar instead of the standard directories-buffer - source: Use speedbar instead of the standard sources-buffer - method: Use speedbar instead of the standard methods-buffer Note: For directories and sources a similar effect and usability is available by setting this option to nil \(or 'method) and setting `ecb-show-sources-in-directories-buffer' to not nil, because this combination displays also directories and sources in one window. `ecb-use-speedbar-instead-native-tree-buffer' is for people who like the speedbar way handling directories and source-files or methods and want it in conjunction with ECB." :group 'ecb-tree-buffer :group 'ecb-directories :group 'ecb-sources :group 'ecb-methods :type '(radio (const :tag "Do not use speedbar" :value nil) (const :tag "For directories" :value dir) (const :tag "For sources" :value source) (const :tag "For methods" :value method)) :initialize 'custom-initialize-default :set (function (lambda (sym val) (set sym val) (if (and (boundp 'ecb-minor-mode) ecb-minor-mode) (ecb-redraw-layout-full))))) (defvar ecb-tree-do-not-leave-window-after-select--internal nil "Only set by customizing `ecb-tree-do-not-leave-window-after-select' or calling `ecb-toggle-do-not-leave-window-after-select'! Do not set this variable directly, it is only for internal uses!") (defcustom ecb-tree-do-not-leave-window-after-select nil "*Tree-buffers which stay selected after a key- or mouse-selection. If a buffer \(either its name or the variable-symbol which holds the name) is contained in this list then selecting a tree-node either by RET or by a mouse-click doesn't leave that tree-buffer after the node-selection but performes only the appropriate action \(opening a new source, selecting a method etc.) but point stays in the tree-buffer. In tree-buffers not contained in this option normaly a node-selection selects as \"last\" action the right edit-window or maximizes the next senseful tree-buffer in case of a currently maximized tree-buffer \(see `ecb-maximize-next-after-maximized-select'). The buffer-name can either be defined as plain string or with a symbol which contains the buffer-name as value. The latter one is recommended for the builtin ECB-tree-buffers because then simply the related option-symbol can be used. A special remark for the `ecb-directories-buffer-name': Of course here the value of this option is only relevant if the name of the current layout is contained in `ecb-show-sources-in-directories-buffer' or if the value of `ecb-show-sources-in-directories-buffer' is 'always and the clicked ot hitted node represents a sourcefile \(otherwise this would not make any sense)! The setting in this option is only the default for each tree-buffer. With the command `ecb-toggle-do-not-leave-window-after-select' the behavior of a node-selection can be changed fast and easy in a tree-buffer without customizing this option, but of course not for future Emacs sessions!" :group 'ecb-tree-buffer :set (function (lambda (sym val) (set sym val) (setq ecb-tree-do-not-leave-window-after-select--internal (ecb-copy-list val)))) :type '(repeat (choice :menu-tag "Buffer-name" (string :tag "Buffer-name as string") (symbol :tag "Symbol holding buffer-name")))) (defcustom ecb-tree-indent 4 "*Indent size for tree buffer. If you change this during ECB is activated you must deactivate and activate ECB again to take effect." :group 'ecb-tree-buffer :group 'ecb-most-important :type 'integer) (defcustom ecb-tree-expand-symbol-before t "*Show the expand symbol before the items in a tree. When the expand-symbol is located before the items then the tree looks like: \[-] ECB \[+] code-save \[-] ecb-images \[-] directories When located after then the tree looks like: ECB \[-] code-save \[+] ecb-images \[-] directories \[-] The after-example above use a value of 2 for `ecb-tree-indent' whereas the before-example uses a value of 4. It is recommended to display the expand-symbol before because otherwise it could be that with a deep nested item-structure with and/or with long item-names \(e.g. a deep directory-structure with some long subdirectory-names) the expand-symbol is not visible in the tree-buffer and the tree-buffer has to be horizontal scrolled to expand an item." :group 'ecb-tree-buffer :group 'ecb-most-important :type 'boolean) ;; we can savely set here 'image as default because the tree-buffer-lib checks ;; itslef if image-support is possible and switches back to 'ascii-style if not. (defcustom ecb-tree-buffer-style 'image "*The style of the tree-buffers. There are three different styles available: Image-style \(value 'image): Very nice and modern - just try it. For this style the options `ecb-tree-indent' and `ecb-tree-expand-symbol-before' have no effect! The value 'image means use image-style if images can be displayed with current Emacs-setup \(otherwise auto. 'ascii-style is used). Note: GNU Emacs <= 21.3.X for Windows does not support image-display so ECB uses always 'ascii-guides even when here 'image is set! Ascii-style with guide-lines \(value 'ascii-guides): \[-] ECB | \[+] code-save `- \[-] ecb-images | \[-] directories | | \[-] height-15 | | | * close.xpm | | | * empty.xpm | | | * leaf.xpm | | `- * open.xpm | | \[+] height-17 | | \[+] height-19 | `- \[+] height-21 | \[x] history | \[x] methods `- \[x] sources Ascii-style without guide-lines \(value 'ascii-no-guides) - this is the style used by ECB <= 1.96: \[-] ECB \[+] code-save \[-] ecb-images \[-] directories \[-] height-15 * close.xpm * empty.xpm * leaf.xpm * open.xpm \[+] height-17 \[+] height-19 \[+] height-21 \[x] history \[x] methods \[x] sources With both ascii-styles the tree-layout can be affected with the options `ecb-tree-indent' and `ecb-tree-expand-symbol-before'." :group 'ecb-tree-buffer :group 'ecb-most-important :type '(radio (const :tag "Images-style" :value image) (const :tag "Ascii-style with guide-lines" :value ascii-guides) (const :tag "Ascii-style w/o guide-lines" :value ascii-no-guides))) ;; TODO: Klaus Berndl : add here the analyse buffer if ;; additonal images are necessary - but currently i don't think we need ;; special images for this analyse-stuff. (defcustom ecb-tree-image-icons-directories (let ((base (concat (if ecb-regular-xemacs-package-p (format "%s" (locate-data-directory "ecb")) ecb-ecb-dir) "ecb-images/"))) (cons (concat base "default/height-17") (mapcar (function (lambda (i) (cons (car i) (concat base (cdr i))))) '((ecb-directories-buffer-name . "directories/height-17") (ecb-sources-buffer-name . "sources/height-14_to_21") (ecb-methods-buffer-name . "methods/height-14_to_21"))))) "*Directories where the images for the tree-buffer can be found. This is a cons cell where: car: Default directory where the default images for the tree-buffer can be found. It should contain an image for every name of `tree-buffer-tree-image-names'. The name of an image-file must be: \"ecb-.\". cdr: This is a list where each element is a cons again with: car is the buffer name of the tree-buffer for which a special image-path should be used. The buffer-name can either be defined as plain string or with a symbol which contains the buffer-name as value. The latter one is recommended for the builtin ECB-tree-buffers because then simply the related option-symbol can be used \(e.g. the symbol `ecb-directories-buffer-name'). The cdr is the the full-path of an additional image-directorie which is searched first for images needed for the related tree-buffer. If the image can not be found in this directory then the default-directory \(see above) is searched. If the image can't even be found there the related ascii-symbol is used - which is defined in `tree-buffer-tree-image-names'. If a tree-buffer is not contained in this list then there is no additional special image-directory for it. ECB comes with predefined images in several different heights - so for the most senseful font-heights of a tree-buffer a fitting image-size should be available. The images reside either in the subdirectory \"ecb-images\" of the ECB-installation or - if ECB is installed as regular XEmacs-package - in the ECB-etc data-directory \(the directory returned by \(locate-data-directory \"ecb\")." :group 'ecb-tree-buffer :type '(cons (directory :tag "Full default image-path") (repeat (cons (choice :menu-tag "Buffer-name" (string :tag "Buffer-name as string") (symbol :tag "Symbol holding buffer-name")) (directory :tag "Full image-path for this tree-buffer"))))) ;; TODO: Klaus Berndl : rename this to ecb-truncate-lines. (defcustom ecb-tree-truncate-lines '(ecb-directories-buffer-name ecb-sources-buffer-name ecb-methods-buffer-name ecb-history-buffer-name ecb-analyse-buffer-name) "*Truncate lines in ECB buffers. If a buffer \(either its name or the variable-symbol which holds the name) is contained in this list then line-truncation is switched on for this buffer otherwise it is off. The buffer-name can either be defined as plain string or with a symbol which contains the buffer-name as value. The latter one is recommended to switch on line-truncation for one of the builtin ECB-tree-buffers because then simply the related option-symbol can be used. To truncate lines in the builtin directories tree-buffer just add the symbol `ecb-directories-buffer-name' to this option. If you change this during ECB is activated you must deactivate and activate ECB again to take effect." :group 'ecb-tree-buffer :group 'ecb-most-important :type '(repeat (choice :menu-tag "Buffer-name" (string :tag "Buffer-name as string") (symbol :tag "Symbol holding buffer-name")))) (defcustom ecb-tree-easy-hor-scroll 5 "*Scroll step for easy hor. scrolling via mouse-click in tree-buffers. XEmacs has horizontal scroll-bars so invisible parts beyond the right window-border of a tree-buffer can always made visible very easy. GNU Emacs does not have hor. scroll-bars so especially with the mouse it is quite impossible to scroll smoothly right and left. The functions `scroll-left' and `scroll-right' can be annoying and are also not bound to mouse-buttons. If this option is a positive integer S then in all ECB-tree-buffers the keys \[M-mouse-1] and \[M-mouse-3] are bound to scrolling left rsp. right with scroll-step S - clicking with mouse-1 or mouse-2 onto the edge of the modeline has the same effect, i.e. if you click with mouse-1 onto the left \(rsp. right) edge of the modeline you will scroll left \(rsp. right). Additionally \[C-M-mouse-1] and \[C-M-mouse-3] are bound to scrolling left rsp. right with scroll-step `window-width' - 2. Default is a scroll-step of 5. If the value is nil then no keys for horizontal scrolling are bound." :group 'ecb-tree-buffer :type '(radio :value 5 (const :tag "No hor. mouse scrolling" :value nil) (integer :tag "Scroll step"))) (defcustom ecb-tree-make-parent-node-sticky t "*Make the parent-node sticky in the headerline of the tree-buffer. If not nil then the first line of the tree-buffer is used as header-line which is used to display the next unvisible parent of the first visible node as sticky, so always the parent of a node is visible and clickable. If a node has no parent then just the next node above is displayed in the header-line. The node displayed in the header-line is exactly in the same manner clickable as all other nodes. See also `ecb-tree-stickynode-indent-string'. This feature is only available with Gnu Emacs, not with XEmacs." :group 'ecb-tree-buffer :group 'ecb-most-important :type 'boolean) (defcustom ecb-tree-stickynode-indent-string (tree-buffer-sticky-default-indent-string) "*String used to indent the stickynode. This string is used to match the space used by scrollbars and fringe so it does not appear that the node-name is moving left/right when it lands in the sticky line. Normally the needed value is computed automatically by ECB. But if the result is not matching this option allows to customize the indent-string. The default value is computed by the function `tree-buffer-sticky-default-indent-string', so you can change the needed value with that starting-point. Changing this option takes only effect after restarting Emacs!" :group 'ecb-tree-buffer :type 'string) ;; TODO: Klaus Berndl : maybe we should change this to a ;; type analogous to ecb-tree-truncate-lines (defcustom ecb-truncate-long-names t "*Truncate long names that don't fit in the width of the ECB windows. If you change this during ECB is activated you must deactivate and activate ECB again to take effect." :group 'ecb-tree-buffer :type 'boolean) ;; TODO: Klaus Berndl : maybe we should change this to a ;; type analogous to ecb-tree-truncate-lines (defcustom ecb-tree-incremental-search 'prefix "*Enable incremental search in the ECB-tree-buffers. For a detailed explanation see the online help section \"Working with the keyboard in the ECB buffers\". If you change this during ECB is activated you must deactivate and activate ECB again to take effect." :group 'ecb-tree-buffer :type '(radio (const :tag "Match only prefix" :value prefix) (const :tag "Match every substring" :value substring) (const :tag "No incremental search" :value nil))) (defcustom ecb-tree-navigation-by-arrow t "*Enable smart navigation in the tree-windows by horizontal arrow-keys. If not nil then the left- and right-arrow keys work in the ECB tree-window in the following smart way if onto an expandable node: + Left-arrow: If node is expanded then it will be collapsed otherwise point jumps to the next \"higher\" node in the hierarchical tree \(higher means the next higher tree-level or - if no higher level available - the next higher node on the same level). + Right-arrow: If node is not expanded then it will be expanded. Onto a not expandable node the horizontal arrow-keys go one character in the senseful correct direction. If this option is changed the new value takes first effect after deactivating ECB and then activating it again!" :group 'ecb-tree-buffer :type 'boolean) (defun ecb-show-any-node-info-by-mouse-moving-p () "Return not nil if for at least one tree-buffer showing node info only by moving the mouse over a node is activated. See `ecb-directories-show-node-info' etc...." (let ((when-list (mapcar (function (lambda (elem) (car (symbol-value elem)))) '(ecb-directories-show-node-info ecb-sources-show-node-info ecb-methods-show-node-info ecb-history-show-node-info ecb-analyse-show-node-info )))) (or (member 'if-too-long when-list) (member 'always when-list)))) (defcustom ecb-primary-secondary-mouse-buttons 'mouse-2--C-mouse-2 "*Primary- and secondary mouse button for using the ECB-buffers. A click with the primary button causes the main effect in each ECB-buffer: - ECB Directories: Expanding/collapsing nodes and displaying files in the ECB Sources buffer. - ECB sources/history: Opening the file in that edit-window specified by the option `ecb-mouse-click-destination'. - ECB Methods: Jumping to the method in that edit-window specified by the option `ecb-mouse-click-destination'. A click with the primary mouse-button while the SHIFT-key is pressed called the POWER-click and does the following \(depending on the ECB-buffer where the POWER-click occurs): + Directory-buffer: Refreshing the directory-contents-cache \(see `ecb-cache-directory-contents'). + Sources- and History-buffer: Only displaying the source-contents in the method-buffer but not displaying the source-file in the edit-window. + Methods-buffer: Narrowing to the clicked method/variable/ect... \(see `ecb-tag-visit-post-actions'). This works only for sources supported by semantic! In addition always the whole node-name is displayed in the minibuffer after a POWER-click \(for this see `ecb-directories-show-node-info' etc...). The secondary mouse-button is for opening \(jumping to) the file in another edit-window \(see the documentation `ecb-mouse-click-destination'). The following combinations are possible: - primary: mouse-2, secondary: C-mouse-2 \(means mouse-2 while CTRL-key is pressed). This is the default setting. - primary: mouse-1, secondary: C-mouse-1 - primary: mouse-1, secondary: mouse-2 Note: If the tree-buffers are used with the keyboard instead with the mouse then [RET] is interpreted as primary mouse-button and [C-RET] as secondary mouse-button! If you change this during ECB is activated you must deactivate and activate ECB again to take effect!" :group 'ecb-tree-buffer :group 'ecb-most-important :type '(radio (const :tag "Primary: mouse-2, secondary: Ctrl-mouse-2" :value mouse-2--C-mouse-2) (const :tag "Primary: mouse-1, secondary: Ctrl-mouse-1" :value mouse-1--C-mouse-1) (const :tag "Primary: mouse-1, secondary: mouse-2" :value mouse-1--mouse-2))) (defcustom ecb-tree-mouse-action-trigger 'button-release "*When the tree-buffer mouse-action should be triggered. This option determines the moment a mouse-action in a tree-buffer is triggered. This can be either direct after pressing a mouse-button \(value 'button-press) or not until releasing the mouse-button \(value: 'button-release). If you change this during ECB is activated you must deactivate and activate ECB again to take effect!" :group 'ecb-tree-buffer :type '(radio (const :tag "After button release" :value button-release) (const :tag "After button press" :value button-press))) (defcustom ecb-mouse-click-destination 'last-point "*Destination of a mouse-button click. Defines in which edit-window \(if splitted) ECB does the \"right\" action \(opening a source, jumping to a method/variable etc.) after clicking with a mouse-button \(see `ecb-primary-secondary-mouse-buttons') onto a node. There are two possible choices: - left-top: Does the \"right\" action always in the left/topmost edit-window. - last-point: Does the \"right\" action always in that edit-window which had the point before. This is if the user has clicked either with the primary mouse-button or has activated a popup-menu in the tree-buffer. A click with the secondary mouse-button \(see again `ecb-primary-secondary-mouse-buttons') does the \"right\" action always in another edit-window related to the setting in this option: If there are two edit-windows then the \"other\" edit-window is used and for more than 2 edit-windows the \"next\" edit-window is used \(whereas the next edit-window of the last edit-window is the first edit-window). If the edit-window is not splitted this setting has no effect. Note: If the tree-buffers are used with the keyboard instead with the mouse then this option takes effect too because [RET] is interpreted as primary mouse-button and [C-RET] as secondary mouse-button!" :group 'ecb-tree-buffer :group 'ecb-most-important :type '(radio (const :tag "Left/topmost edit-window" :value left-top) (const :tag "Last edit-window with point" :value last-point))) (defcustom ecb-common-tree-buffer-after-create-hook nil "*Local hook running at the end of each tree-buffer creation. Every function of this hook is called once without arguments direct after creating a tree-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 for EVERY tree-buffer. The following keys must not be rebind in all tree-buffers: - and all combinations with and - - `C-t'" :group 'ecb-tree-buffer :type 'hook) (defcustom ecb-basic-buffer-sync '(Info-mode dired-mode) "*Synchronize the basic ECB-buffers automatically with current edit buffer. The basic ECB-buffers are the buffers for directories, sources, methods and history. 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. But in every case the synchronization takes only place if the current-buffer in the edit-window has a relation to files or directories. Examples for the former one are all programming-language-modes, `Info-mode' too, an example for the latter one is `dired-mode'. For all major-modes related to non-file/directory-buffers like `help-mode', `customize-mode' and others never an autom. synchronization will be done! It's recommended to exclude at least `Info-mode' because it makes no sense to synchronize the ECB-windows after calling the Info help. Per default also `dired-mode' is excluded but it can also making sense to synchronize the ECB-directories/sources windows with the current directory in the dired-buffer. IMPORTANT NOTE: Every time the synchronization is done the hook `ecb-basic-buffer-sync-hook' is evaluated." :group 'ecb-tree-buffer :type '(radio :tag "Synchronize basic ECB buffers" (const :tag "Always" :value always) (const :tag "Never" nil) (repeat :tag "Not with these modes" (symbol :tag "mode")))) (defcustom ecb-basic-buffer-sync-delay 0.25 "*Time Emacs must be idle before the special ECB-buffers are 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." :group 'ecb-tree-buffer :type '(radio (const :tag "No synchronizing delay" :value nil) (number :tag "Idle time before synchronizing" :value 0.25)) :set (function (lambda (symbol value) (set symbol value) (if ecb-minor-mode (ecb-activate-ecb-autocontrol-function value 'ecb-basic-buffer-sync)))) :initialize 'custom-initialize-default) (defcustom ecb-basic-buffer-sync-hook nil "*Hook run at the end of `ecb-basic-buffer-sync'. See documentation of `ecb-basic-buffer-sync' for conditions when synchronization takes place and so in turn these hooks are evaluated. Precondition for such a hook: Current buffer is the buffer of the currently selected edit-window. Postcondition for such a hook: Point must stay in the same edit-window as before evaluating the hook. Important note: If the option `ecb-basic-buffer-sync' is not nil the function `ecb-basic-buffer-sync' is running either every time Emacs is idle or even after every command \(see `ecb-basic-buffer-sync-delay'). So 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! It is strongly recommended that each function added to this hook uses the macro `ecb-do-if-buffer-visible-in-ecb-frame' at beginning! See `ecb-speedbar-buffer-sync' and `ecb-eshell-buffer-sync' for examples how to use this macro!" :group 'ecb-tree-buffer :type 'hook) ;;==================================================== ;; Internals ;;==================================================== ;;; ----- advice stuff ------------------------------------- (defvar ecb-adviced-function-sets nil "A list of adviced-function sets defined with `defecb-advice-set'. Each element is a cons-cell where car is the advice-set-var and cdr is an indicator if the caller of `ecb-with-original-adviced-function-set' is the outmost caller. DO NOT CHANGE THIS!") (defvar ecb-adviced-permanent-function-sets nil "A list of symbols, each of them an advice-set which should be permanent. Permanent means this advice set will not be disabled during deactivation of ECB. This variable is only set by `defecb-advice-set'. DO NOT CHANGE THIS!") (defvar ecb-adviced-functions nil "A list of all advices defined with `defecb-advice'. This list is the set union of the values of all function-sets of `ecb-adviced-function-sets'. DO NOT CHANGE THIS!") (defvar ecb-advices-debug-error nil "It not nil then each advice of ECB reports when it's en/disabled or called.") (defun ecb-advices-debug-error (advice class action &rest args) "Run ARGS through `format' and write it to the *Messages*-buffer. ADVICE is the adviced-function-symbol, CLASS is the advice-class \(after, around or before) and ACTION is one of the symbols 'calling, 'enabling, 'disabling or 'reporting. This will build up a message string like: ECB : debug of '' advice ADVICE: ARGS. If ARGS is nil then only the message above is reported." (when ecb-advices-debug-error (message (concat (format "ECB %s: debug %s of '%s' advice %s " ecb-version action class advice) (if args (apply 'format args)))))) (defmacro defecb-advice-set (advice-set docstring &optional permanent) "Defines an advice-set for ECB. This defines a variable which will contain adviced functions defined by `defecb-advice-set'. This is a set of advices which can be enabled or disabled \"en block\" which must be done either by `ecb-enable-advices', `ecb-disable-advices' or `ecb-with-original-adviced-function-set'. Before defining a new advice-set it's recommended to take a look at the value of `ecb-adviced-function-sets' if there is already a suitable advice-set. IMPORTANT: Each advice in ECB must be defined by `defecb-advice' and must belong to an advice-set previously defined by `defecb-advice-set'! All advice-sets of ECB will be automatically\(!) disabled at load-time of the ecb-library and at deactivation-time of ECB. But: Enabling of a certain advice-set must be done appropriately. If optional argument PERMANENT is t then this advice-set will NOT be disabled at deactivation-time of ECB! Calling `ecb-disable-advices' for an advice set defined with permanent is t will take no effect unless the optional argument FORCE-PERMANENT of this function is set to not nil. PERMANENT can also be a function which will be called by `ecb-disable-advices' for this advice set \(the function gets one argument: the symbol of the advice-set) and have to return not nil if the advice-set should not be disable by `ecb-disable-advices' unless the FORCE-PERMANENT of this function is set to not nil. Example: \(defecb-advice-set ecb-always-disabled-advices \"These advices are always disabled.\")" `(eval-and-compile (add-to-list 'ecb-adviced-function-sets (cons (quote ,advice-set), nil)) ,(if permanent `(add-to-list 'ecb-adviced-permanent-function-sets (cons (quote ,advice-set) ,permanent))) (defvar ,advice-set nil ,docstring))) (put 'defecb-advice-set 'lisp-indent-function 1) (defmacro defecb-advice (adviced-function advice-class advice-set advice-docstring &rest body) "Defines an advice for ADVICED-FUNCTION with ADVICE-CLASS for ADVICE-SET. ADVICED-FUNCTION must be an advicable object \(e.g. a function, a subr etc...). ADVICE-CLASS must be one of around, after or before. ADVICE-SET must ba an advice-set previously defined by `defecb-advice-set'. ADVICE-DOCSTRING ist the docstring for the advice. BODY is the program-code for the advice as it would be written with `defadvice'. Do not quote ADVICED-FUNCTION, ADVICE-CLASS and ADVICE-SET. Example: \(defecb-advice delete-frame around ecb-layout-basic-adviced-functions \"If FRAME is equal to the ECB frame then...\" \(let \(\(frame \(or \(ad-get-arg 0) \(selected-frame)))) \(if \(and ecb-minor-mode \(equal frame ecb-frame)) \(when \(ecb-confirm \"Attempt to delete the ECB-frame....Proceed? \") \(ecb-deactivate-internal) ad-do-it) ad-do-it)))" `(progn (if (assoc (quote ,advice-set) ecb-adviced-function-sets) (add-to-list (quote ,advice-set) (cons (quote ,adviced-function) (quote ,advice-class))) (error "The advice-set %s does not exist!" (symbol-name (quote ,advice-set)))) (if (not (member (quote ,advice-class) '(around after before))) (error "The advice-class %s is not allowed - only around, after and before!" (symbol-name (quote ,advice-class)))) (add-to-list 'ecb-adviced-functions (cons (quote ,adviced-function) (quote ,advice-class))) (eval-and-compile (defadvice ,adviced-function (,advice-class ecb) ,advice-docstring (ecb-advices-debug-error (quote ,adviced-function) (quote ,advice-class) 'calling) ,@body)))) (put 'defecb-advice 'lisp-indent-function 3) ;; (insert (pp (macroexpand '(defecb-advice insert around ;; ecb-always-disabled-advices "doc" ;; (message "test"))))) (defun ecb-enable-ecb-advice (function-symbol advice-class arg) "If ARG is greater or equal zero then enable the adviced version of FUNCTION-SYMBOL. Otherwise disable the adviced version. The advice must be defined with class ADVICE-CLASS by `defecb-advice'. IMPORTANT: Do not use the function directly. Always use `ecb-enable-advices', `ecb-disable-advices' or `ecb-with-original-adviced-function-set'!." (if (< arg 0) (progn (ad-disable-advice function-symbol advice-class 'ecb) (ad-activate function-symbol) (ecb-advices-debug-error function-symbol advice-class 'disabling)) (ad-enable-advice function-symbol advice-class 'ecb) (ad-activate function-symbol) (ecb-advices-debug-error function-symbol advice-class 'enabling))) (defun ecb-enable-advices (adviced-function-set-var) "Enable all advices of ADVICED-FUNCTION-SET-VAR, which must be defined by `defecb-advice-set'." (if ecb-advices-debug-error (message "ECB %s: debug enabling the advice-set: %s" ecb-version adviced-function-set-var)) (if (eq adviced-function-set-var 'ecb-always-disabled-advices) (error "The advice-set ecb-always-disabled-advices must not be enabled!")) (if (not (assq adviced-function-set-var ecb-adviced-function-sets)) (error "The adviced function set %s is not defined by defecb-advice-set!" (symbol-name adviced-function-set-var))) (dolist (elem (symbol-value adviced-function-set-var)) (ecb-enable-ecb-advice (car elem) (cdr elem) 1))) (defun ecb-disable-advices (adviced-function-set-var &optional force-permanent) "Disable all advices of ADVICED-FUNCTION-SET-VAR, which must be defined by `defecb-advice-set' This function tests if ADVICED-FUNCTION-SET-VAR has been defined as permanent by `defecb-advice-set'. Calling `ecb-disable-advices' for an advice set defined with permanent t will take no effect unless the optional argument FORCE-PERMANENT is set to not nil. If the advice set is defined as permanent with a permanent-disable-function then this function is called with ADVICED-FUNCTION-SET-VAR as argument; if this function returns not nil then the adviced will be treated as permanent and will not being disabled. If optional FORCE-PERMANENT is not nil then ADVICED-FUNCTION-SET-VAR will be disabled regardless if permanent or not." (if ecb-advices-debug-error (message "ECB %s: debug disabling the advice-set: %s" ecb-version adviced-function-set-var)) (if (not (assq adviced-function-set-var ecb-adviced-function-sets)) (error "The adviced function set %s is not defined by defecb-advice-set!" (symbol-name adviced-function-set-var))) (let ((permanent (if force-permanent nil (cdr (assq adviced-function-set-var ecb-adviced-permanent-function-sets))))) (unless (or (eq permanent t) (and (functionp permanent) (funcall permanent adviced-function-set-var))) (dolist (elem (symbol-value adviced-function-set-var)) (ecb-enable-ecb-advice (car elem) (cdr elem) -1))))) ;; for the outmost-caller-stuff see ecb-with-original-adviced-function-set (defmacro ecb-with-ecb-advice (function-symbol advice-class &rest body) "Evaluates BODY with the adviced version of FUNCTION-SYMBOL. The advice must be defined by `defecb-advice' with class ADVICE-CLASS for the advice-set `ecb-always-disabled-advices'. Otherwise an error occurs. The advice is only active during BODY. BODY is protected by `unwind-protect' so in each case the advice will be disabled after finishing this macro unless it is nested within a call to this macro for the *same* FUNCTION-SYMBOL and ADVICE-CLASS-combination! This means that the usage of this macro is save for arbitrary nested calls, so full BODY is guaranted being evaluated with enabled ADVICE-CLASS advice for FUNCTION-SYMBOL. Returns the value of BODY. Example where this macro is used for `walk-windows' within another advice: \(ecb-with-ecb-advice 'walk-windows 'around ad-do-it)" (let ((outmost-caller-p (make-symbol "outmost-caller-p"))) ;; we have to check if we are the outmost-caller of this macro for this ;; adviced function AND the advice-class! different advice-classes for the ;; same function have to be treated differently!! `(let ((,outmost-caller-p (unless (member ,advice-class (get ,function-symbol 'ecb-with-ecb-advice)) (put ,function-symbol 'ecb-with-ecb-advice (append (list ,advice-class) (get ,function-symbol 'ecb-with-ecb-advice))) ,advice-class))) (if (not (member (cons ,function-symbol ,advice-class) ecb-always-disabled-advices)) (error "Advice for %s with class %s not registered in ecb-always-disabled-advices!" (symbol-name ,function-symbol) (symbol-name ,advice-class))) (if ecb-advices-debug-error (message "ECB %s: debug with always disabled ecb-advice: %s %s - ENTRY" ecb-version ,advice-class ,function-symbol)) (unwind-protect (progn (when ,outmost-caller-p (ecb-enable-ecb-advice ,function-symbol ,advice-class 1)) ,@body) (when ,outmost-caller-p ;; Only if we are the outmost caller we are allowed to disable the ;; enabled advice (put ,function-symbol 'ecb-with-ecb-advice (delete ,advice-class (get ,function-symbol 'ecb-with-ecb-advice))) (ecb-enable-ecb-advice ,function-symbol ,advice-class -1)) (if ecb-advices-debug-error (message "ECB %s: debug with always disabled ecb-advice: %s %s - EXIT" ecb-version ,advice-class ,function-symbol)))))) (put 'ecb-with-ecb-advice 'lisp-indent-function 2) ;; (insert (pp (macroexpand '(ecb-with-ecb-advice 'one-window-p 'around ;; (message ""))))) (defmacro ecb-with-original-adviced-function-set (adviced-function-set-var &rest body) "Evaluates BODY with all adviced functions of ADVICED-FUNCTION-SET-VAR being disabled \(means with their original definition). Restores always \(even if an error occurs during evaluating BODY) the previous state of the adviced functions, means it depends if the call to this macro is the outermost call: Only if it is the outermost-call the advices of the used advice-set will be disabled after finishing. So full BODY is guaranted being evaluated with disabled advices of ADVICED-FUNCTION-SET-VAR. ADVICED-FUNCTION-SET-VAR must be defined by `defecb-advice-set' and all advices of this set must be defined by `defecb-advice'. Otherwise an error occurs. Example: \(ecb-with-original-adviced-function-set 'ecb-layout-basic-adviced-functions \(do-something..))" (let ((outmost-caller-p (make-symbol "outmost-caller-p"))) `(let ((,outmost-caller-p (unless (equal (cdr (assq ,adviced-function-set-var ecb-adviced-function-sets)) 'outmost-caller) ;; if we are the outmost caller of this macro we store this ;; for ;; a) following callers ;; b) ourself, so we can later reset is (setcdr (assq ,adviced-function-set-var ecb-adviced-function-sets) 'outmost-caller)) )) (if ecb-advices-debug-error (message "ECB %s: debug with original advice-set: %s - ENTRY" ecb-version ,adviced-function-set-var)) (unwind-protect (progn (when ,outmost-caller-p ;; we must force disabling permanent advice-sets too (ecb-disable-advices ,adviced-function-set-var t)) ,@body) (when ,outmost-caller-p ;; Only if we are the outmost caller we are allowed to re-enable the ;; disabled advice-set (setcdr (assq ,adviced-function-set-var ecb-adviced-function-sets) nil) (ecb-enable-advices ,adviced-function-set-var)) (if ecb-advices-debug-error (message "ECB %s: debug with original advice-set: %s - EXIT" ecb-version ,adviced-function-set-var)))))) (put 'ecb-with-original-adviced-function-set 'lisp-indent-function 1) ;; !!!!!!!!!!!!!!!! Caution !!!!!!!!!!!!!!!!!!!!!!!!!! ;; when editing that file which defines such an advice and then saving and ;; byte-compiling this file then this reactivates this advice - just a hint - ;; should be not a problem for ECB because the users should not edit the ;; ecb-code ;-) But we should have this in mind!!!!!!!!!!!!!!!!!!!!!!! (defecb-advice-set ecb-always-disabled-advices "These advices are always disabled. This advice-set can not be enabled by `ecb-enable-advices' but such an advice has to be activated 'on demand' by the caller. Such an advice must be used with the macro `ecb-with-ecb-advice'.") (defun ecb-source-make (filename &optional buffer) "Build a source-object from FILENAME and BUFFER. If optional arg BUFFER is nil then the just FILENAME is returned. If BUFFER is not nil then it can be either a buffer-object or a buffer-name. A cons is returned where car is FILENAME and cdr is the buffername of BUFFER." (let ((buffername (when buffer (if (bufferp buffer) (buffer-name buffer) buffer)))) (if buffername (cons filename buffername) filename))) (defun ecb-source-get-filename (source) "SOURCE is either a string, then it is a filename or a cons, then the car is the filename and the cdr is the buffer-name, whereas the latter one can be the name of an indirect-buffer." (if (consp source) (car source) source)) (defun ecb-source-get-buffername (source) "SOURCE is either a string, then it is a filename or a cons, then the car is the filename and the cdr is the buffer-name, whereas the latter one can be the name of an indirect-buffer." (if (consp source) (cdr source))) (defun ecb-source-get-buffer (source) "Return a living buffer-object for SOURCE. SOURCE is either a string, then it is a filename or a cons, then the car is the filename and the cdr is the buffer-name, whereas the latter one can be the name of an indirect-buffer. If SOURCE contains a living buffer then this buffer is returned. Otherwise a buffer for the filename-part of SOURCE is created and returned. For an existing ans readable file this means the file is loaded into a buffer. Note: The buffer is just returned but not displayed." (let* ((my-source (if (consp source) source (cons source nil))) (filename (car my-source)) (buffer (ecb-buffer-obj (cdr my-source)))) (or buffer (find-file-noselect filename)))) (defvar ecb-path-selected-directory nil "Path to currently selected directory.") (defvar ecb-path-selected-source nil "Path to currently selected source. It is a cons where the cdr is a buffer-object of the current selected source The name of this file is the car of the cons: \( . ). This variable is only set by `ecb-path-selected-source-set' and evaluated by the function `ecb-path-selected-source'. Do not use it directly! Use always one of the mentioned functions!") (defun ecb-path-selected-source-set (filename buffer) "Set `ecb-path-selected-source' to FILENAME and BUFFER. Returns in the new value. FILENAME and BUFFER must not be nil. For a description of FILENAME and BUFFER see `ecb-source-make'." (unless (and filename buffer) (error "ECB %s: Invalid setting of `ecb-path-selected-source with file %s, buffer %s" ecb-version filename buffer)) (setq ecb-path-selected-source (ecb-source-make filename buffer))) (defun ecb-path-selected-source (&optional type) "Get the value of the internal variable `ecb-path-selected-source'. If optional arg TYPE is the symbol 'file then the filename-part is returned as string, if it is the symbol 'buffername then the stored buffername is returned if there is any and and if it is the symbol 'buffer then the buffer-object of the stored buffername is returned if there is any or nil. In all other cases of TYPE always that value is returned `ecb-path-selected-source' has been set by most recent `ecb-path-selected-source-set'." (case type (file (ecb-source-get-filename ecb-path-selected-source)) (buffername (ecb-source-get-buffername ecb-path-selected-source)) (buffer (ecb-source-get-buffer ecb-path-selected-source)) (otherwise ecb-path-selected-source))) ;; all defined tree-buffer creators (defvar ecb-tree-buffer-creators nil "The tree-buffer creators of ECB. An alist where each element is a cons where the car is a symbol which contains the name of a tree-buffer \(e.g. `ecb-sources-buffer-name') and the cdr is the associated function-symbol which creates the tree-buffer with that name.") (defun ecb-tree-buffer-creators-init () "Initialize `ecb-tree-buffer-creators'. Removes all creators and set it to nil." (setq ecb-tree-buffer-creators nil)) (defun ecb-tree-buffer-creators-register (name-symbol fn) "Register the creator-function FN for the tree-buffer NAME-SYMBOL." (add-to-list 'ecb-tree-buffer-creators (cons name-symbol fn))) (defun ecb-tree-buffer-creators-run () "Run all currently registered creator-functions." (dolist (creator-elem ecb-tree-buffer-creators) ;; create all the tree-buffers if they don't already exist (funcall (cdr creator-elem)))) (defmacro defecb-tree-buffer-creator (creator tree-buffer-name-symbol docstring &rest body) "Define a creator-function CREATOR for a tree-buffer which name is hold in the symbol TREE-BUFFER-NAME-SYMBOL. Do not quote CREATOR and TREE-BUFFER-NAME-SYMBOL. DOCSTRING is the docstring for CREATOR. BODY is all the program-code of CREATOR \(must contain a call to `tree-buffer-create'). It makes sense that BODY returns the created tree-buffer. When creating a tree-buffer with this macro then this tree-buffer will be automatically created \(i.e. its creator-function defined with this macro will be called) when activating ECB and the tree-buffer will automatically registered at ECB. This means that some features of ECB will work automatically out of the box with this tree-buffer. When creating a tree-buffer for ECB then it MUST be created with this macro and not with `tree-buffer-create'!" `(eval-and-compile (ecb-tree-buffer-creators-register (quote ,tree-buffer-name-symbol) (quote ,creator)) (defun ,creator () ,docstring (unless (ecb-ecb-buffer-registry-get-symbol ,tree-buffer-name-symbol) (ecb-ecb-buffer-registry-add ,tree-buffer-name-symbol (quote ,tree-buffer-name-symbol) t) ,@body)))) (put 'defecb-tree-buffer-creator 'lisp-indent-function 2) ;; all created ecb-buffers ;; KB: `defecb-tree-buffer-creator' calls ecb-ecb-buffer-registry-add. Besides ;; `defecb-window-dedicator-to-ecb-buffer' this is the only modifier of that ;; variable! (defvar ecb-ecb-buffer-registry nil "The ecb-buffers registry. Each special ecb-buffer must be registered at ECB in this registry. Do not change this variable! This registration is done completely by the macro `defecb-window-dedicator-to-ecb-buffer' and the results are stored in this registry. Each item is a 4-element list with the following contents: 1. elem: The buffer-name of the registered ecb-buffer 2. elem: The symbol which holds this buffer-name 3. elem: An indicator if the registered ecb-buffer is of type tree-buffer \(i.e. this tree-buffer is created with `defecb-tree-buffer-creator'). Not nil in case of a tree-buffer otherwise nil 4. elem: A function which displays that buffer in current window when called and makes this window dedicated to this buffer. This is the DEDICATOR-argument of `defecb-window-dedicator-to-ecb-buffer'. The dedicator-function must do: 1. switch to that buffer in current window 2. all things necessary for this buffer - e.g. making it read-only The setting function must ensure that the current window is still current at the end and that the related ecb-buffer is displayed in this window at the end. One examples of such a setting function is `ecb-set-history-buffer' for the buffer with name `ecb-history-buffer-name'. See `defecb-window-dedicator-to-ecb-buffer' for more details and an example.") (defun ecb-ecb-buffer-registry-init () (setq ecb-ecb-buffer-registry nil)) (defun ecb-ecb-buffer-registry-add (name name-symbol tree-buffer-p &optional set-fcn-symbol) (if (assoc name ecb-ecb-buffer-registry) (ecb-set-elt (assoc name ecb-ecb-buffer-registry) 3 set-fcn-symbol) (setq ecb-ecb-buffer-registry (cons (list name name-symbol tree-buffer-p set-fcn-symbol) ecb-ecb-buffer-registry)))) (defsubst ecb-ecb-buffer-registry-name-list (&optional only-tree-buffers) (delq nil (mapcar (function (lambda (e) (and (or (not only-tree-buffers) (nth 2 e)) (nth 0 e)))) ecb-ecb-buffer-registry))) (defsubst ecb-ecb-buffer-registry-symbol-list (&optional only-tree-buffers) (delq nil (mapcar (function (lambda (e) (and (or (not only-tree-buffers) (nth 2 e)) (nth 1 e)))) ecb-ecb-buffer-registry))) (defsubst ecb-ecb-buffer-registry-buffer-list (&optional only-tree-buffers) (delq nil (mapcar (function (lambda (e) (and (or (not only-tree-buffers) (nth 2 e)) (ecb-buffer-obj (nth 0 e))))) ecb-ecb-buffer-registry))) (defsubst ecb-ecb-buffer-registry-get-symbol (name) (nth 1 (assoc name ecb-ecb-buffer-registry))) (defsubst ecb-ecb-buffer-registry-get-set-fcn (name) (nth 3 (assoc name ecb-ecb-buffer-registry))) (defvar ecb-tree-buffer-callbacks '((expand . nil) (select . nil)) "All callback-functions for the tree-buffers of ECB. This list contains two items of the form: \( .\()) where is 'select and 'expand and is an alist where each item is a cons like \( . )." ) (defun ecb-tree-buffer-callbacks-add (type buffer-name-symbol callback) (unless (member type '(select expand)) (error "ECB %s tries to add tree-buffer-callback of unknown type %s" ecb-version type)) ;; TODO: Klaus Berndl : maybe we should add a check if ;; the buffer-name-symbol is already registered with defecb-tree-buffer-creator (let ((type-elem (ecb-find-assoc type ecb-tree-buffer-callbacks))) (unless (ecb-find-assoc buffer-name-symbol type-elem) (setcdr type-elem (cons (cons buffer-name-symbol callback) (cdr type-elem)))))) (defun ecb-tree-buffer-callbacks-alist-of-type (type) (unless (member type '(select expand)) (error "ECB %s tries to get tree-buffer-callback of unknown type %s" ecb-version type)) (cdr (assoc type ecb-tree-buffer-callbacks))) (defmacro defecb-tree-buffer-callback (callback tree-buffer-name-symbol callback-type optional-arg-list docstring &rest body) "Define a callback-function CALLBACK for a tree-buffer which name is hold in the symbol TREE-BUFFER-NAME-SYMBOL. Do not quote CALLBACK and TREE-BUFFER-NAME-SYMBOL and CALLBACK-TYPE. DOCSTRING is the docstring for CALLBACK. BODY is all the program-code of CALLBACK. CALLBACK-TYPE must be either 'expand or 'select, whereas the former one defines a callback for handling expanding a node and the latter one for clicking onto a node. CALLBACK is defined as a function with at least five arguments: NODE, ECB-BUTTON, EDIT-WINDOW-NR, SHIFT-MODE and META-MODE. CALLBACK must handle clicking onto NODE in the tree-buffer for which the callback is defined. ECB-BUTTON can be 1, 2 or 3 \(= mouse-buttons). If 3 then EDIT-WINDOW-NR contains the number of the edit-window the NODE should be displayed or whatever should be done with NODE. For 1 and 2 the value of EDIT-WINDOW-NR is ignored. SHIFT-MODE and META-MODE are not nil if the user has pressed the shift- rsp. the meta-button during his click. Note: using the keyboard in the tree-buffer instead the mouse is already handled by the caller of CALLBACK, so CALLBACK has no need to bother with keyboard or mouse specific stuff! If OPTIONAL-ARG-LIST is not nil then it must be a list with all optional or rest arguments. You have to include the keywords &optional or/and &rest! The first item of this list must be either the keyword &optional or &rest! The defined CALLBACK gets exactly these additional arguments after the reqired 5 arguments described above. Do not quote OPTIONAL-ARG-LIST! The defined CALLBACK automatically hides the ecb-windows after selecting a node in case META-MODE is not nil and if the CALLBACK is of type 'select; this is a must for every tree-buffer. Do not do this within BODY! But: During the evaluation of BODY the local variable no-meta-hiding is bound and set to nil per default. If BODY sets it to not nil then the hiding of the ecb-windows is prevented even if META-MODE is not nil. The value of the last expression of BODY is returned. This macro automatically adds the appropriate description of the 5 arguments of the defined CALLBACK to DOCSTRING. So just describe what the CALLBACK does! It is strongly recommended defining a callback-function for a tree-buffer of ECB with this macro and not with plain `defun', because then a lot of stuff needed to be done by every tree-buffer is automatically performed." `(eval-and-compile (ecb-tree-buffer-callbacks-add (quote ,callback-type) (quote ,tree-buffer-name-symbol) (quote ,callback)) (defun ,callback ,(append '(node ecb-button edit-window-nr shift-mode meta-mode) optional-arg-list) ,(concat (if (equal callback-type 'select) (concat "Handle clicking onto NODE in the current tree-buffer.\n" "ECB-BUTTON can be 1, 2 or 3. If 3 then EDIT-WINDOW-NR contains the number\n" "of the edit-window the NODE should be displayed or whatever should be done\n" "with NODE. For 1 and 2 the value of EDIT-WINDOW-NR is ignored.\n" "SHIFT-MODE and META-MODE are self-explanatory.") (concat "Handle expanding NODE in the current tree-buffer.\n" "ECB-BUTTON can be 1, 2 or 3. If 3 then EDIT-WINDOW-NR contains the number\n" "of the edit-window the NODE should be displayed or whatever should be done\n" "with NODE. For 1 and 2 the value of EDIT-WINDOW-NR is ignored.\n" "SHIFT-MODE and META-MODE are self-explanatory.")) "\n\n" docstring) (let ((no-meta-hiding nil)) (prog1 (progn ,@body) ,(if (equal callback-type 'select) `(when (and (not no-meta-hiding) meta-mode) (ecb-run-with-idle-timer 0.001 nil 'ecb-hide-ecb-windows)))))))) ;; (insert (pp (macroexpand ;; '(defecb-tree-buffer-callback kausi-callback ecb-history-buffer ;; expand (&optional a b) ;; "das ist ein Docstring" ;; (message "") ;; (if nil t nil))))) (put 'defecb-tree-buffer-callback 'lisp-indent-function 4) ;; the filename/path cache (defecb-multicache ecb-filename-cache 500 nil '(FILES-AND-SUBDIRS EMPTY-DIR-P SOURCES VC FIXED-FILENAMES REMOTE-PATH HOST-ACCESSIBLE) "Cache used for the filebrowser to cache all necessary informations associated to file- or directory-names. Currently there are the following subcaches managed within this cache: FILES-AND-SUBDIRS: Cache for every directory all subdirs and files. This is a cache with key: value: \( . ) EMPTY-DIR-P: Cache for every directory if it is empty or not. This is a cache with key: value: \(\[nil|t] . ) SOURCES: Cache for the contents of the buffer `ecb-sources-buffer-name'. This is a cache with key: value: \( . ) whereas is a 3-elem list \(tree-buffer-root buffer-string) for a full \(i.e. all files) cache and is a 4-elem list \(tree-buffer-root sources-buffer-string ) for a filtered cache where is a cons-cell \( . ). VC: Cache necessary informations for the version-control-support. This is a cache for filenames and directories. In case of a file with key: of a sourcefile value: \( ) whereas is the that VC-state the file had at time . is a list of tree-buffer-names for which was checked. In case of a directory with key: of a directory value: or 'NO-VC is the function used to get the VC-state if is older than the most recent modification-timestamp of . FIXED-FILENAMES: Cache for fixed filenames which can speedup handling-remote-paths \(like tramp-paths) key: The concatenation of the args PATH and FILENAME of `ecb-fix-filename'. value: The result of `ecb-fix-filename' for these args. REMOTE-PATH: Cache if a path is a remote path and store its components if yes. key: a path value: 'NOT-REMOTE if not a remote path otherwise the result of `ecb-remote-path'. HOST-ACCESSIBLE: Cache if a host is accessible or not. key: a host \(e.g. ecb.sourceforge.net) value: \( . ) whereas is the cache time of and is either 'NOT-ACCESSIBLE if host is not accessible or t if accessible. ") (defun ecb-filename-cache-init () "Initialize the whole cache for file- and directory-names" (if (ecb-multicache-p 'ecb-filename-cache) (ecb-multicache-clear 'ecb-filename-cache))) ;; directory separator (defconst ecb-directory-sep-char (if ecb-running-xemacs ;; to avoid compiler complainings (symbol-value 'directory-sep-char) ?/)) (defsubst ecb-directory-sep-char (&optional refdir) (if (or (null refdir) (not (ecb-remote-path refdir))) ecb-directory-sep-char ?/)) (defsubst ecb-directory-sep-string (&optional refdir) (char-to-string (ecb-directory-sep-char refdir))) ;; autocontrol/sync-stuff -------------------------------------------- (defvar ecb-autotrace-autocontrol/sync-functions nil "Allow autotracing the internal autocontrol/synchronisations of ECB. All functions defined with `defecb-autocontrol/sync-function' can be autotraced. The value of this variable is either nil \(then no autotracing will be performed) or t \(then all functions defined with `defecb-autocontrol/sync-function' will be traced) or a list of function-symbols \(then exactly these functions will be traced). Auto-tracing means that each\(!) time the function runs \(either by idle-timer or within pre- or post-command-hook) a trace-message on function-entry and a trace-message on function exit is writen.") (defvar ecb-bodytrace-autocontrol/sync-functions nil "Allows a body tracing of the internal autocontrol/synchronisations of ECB. For allowed values for this variable see `ecb-autotrace-autocontrol/sync-functions' Body-tracing means calls to `ecb-bodytrace-autocontrol/sync-fcn-error' somewhere within the BODY of functions defined by `defecb-autocontrol/sync-function'. So by setting this variable tracing of the BODY of autocontrol/sync-function can be switched on or off.") ;; (setq ecb-autotrace-autocontrol/sync-functions ;; (list 'ecb-compilation-buffer-list-changed-p)) ;; (setq ecb-bodytrace-autocontrol/sync-functions ;; (list 'ecb-compilation-buffer-list-changed-p)) (defun ecb-autotrace-autocontrol/sync-fcn-error (autocontrol-fcn &rest args) "Run ARGS through `format' and write it to the *Messages*-buffer. Do not use this function for own traces, but use the function `ecb-bodytrace-autocontrol/sync-fcn-error'! Entry and exit-traces are already buildin in functions defined with `defecb-autocontrol/sync-function' and can be switched on/off by `ecb-autotrace-autocontrol/sync-functions'." (when (or (eq ecb-autotrace-autocontrol/sync-functions t) (member autocontrol-fcn ecb-autotrace-autocontrol/sync-functions)) (message (concat (format "ECB %s autocontrol-fcn %s autotrace [%s] " ecb-version autocontrol-fcn (format-time-string "%H:%M:%S")) (apply 'format args))))) (defun ecb-bodytrace-autocontrol/sync-fcn-error (autocontrol-fcn &rest args) "Run ARGS through `format' and write it to the *Messages*-buffer. Use this function only for traces used within the BODY of a function defined with `defecb-autocontrol/sync-function' and not for entry and exit-traces because these ones are already buildin in functions defined with `defecb-autocontrol/sync-function' and can be switched on/off by `ecb-autotrace-autocontrol/sync-functions'. Body-tracing can be switched on/off with `ecb-bodytrace-autocontrol/sync-function'." (when (or (eq ecb-bodytrace-autocontrol/sync-functions t) (member autocontrol-fcn ecb-bodytrace-autocontrol/sync-functions)) (message (concat (format "ECB %s autocontrol-fcn %s bodytrace [%s] " ecb-version autocontrol-fcn (format-time-string "%H:%M:%S")) (apply 'format args))))) (defvar ecb-autocontrol/sync-fcn-register nil "List of autocontrol/sync-functions defined by `defecb-autocontrol/sync-function'. Each element is a cons where car is the function symbol and cdr is either the symbol of a variable containing a buffer-name of a special ECB-buffer or nil.") (defvar ecb-idle-timer-alist nil "List of active idle-timers of ECB") (defvar ecb-post-command-hooks nil "List of functions which have to be part of the value of `post-command-hook'") (defvar ecb-pre-command-hooks nil "List of functions which have to be part of the value of `pre-command-hook'") (defun ecb-register-autocontrol/sync-function (fcn-symbol buffer-name-symbol) (add-to-list 'ecb-autocontrol/sync-fcn-register (cons fcn-symbol buffer-name-symbol))) (defun ecb-stop-all-autocontrol/sync-functions () (dolist (fcn-elem ecb-autocontrol/sync-fcn-register) (ecb-stop-autocontrol/sync-function (car fcn-elem)))) (defun ecb-stop-autocontrol/sync-function (fcn-symbol) (let* ((timer-elem (assoc fcn-symbol ecb-idle-timer-alist)) (timer (cdr timer-elem))) (when timer-elem (ecb-cancel-timer timer) (setq ecb-idle-timer-alist (delq timer-elem ecb-idle-timer-alist))) (remove-hook 'post-command-hook fcn-symbol) (remove-hook 'pre-command-hook fcn-symbol) (setq ecb-post-command-hooks (delq fcn-symbol ecb-post-command-hooks)) (setq ecb-pre-command-hooks (delq fcn-symbol ecb-pre-command-hooks)))) (defun ecb-activate-ecb-autocontrol-function (value func) "Adds function FUNC to `ecb-idle-timer-alist' and activates an idle-timer with idle-time VALUE if VALUE is a number. If nil or 'post the FUNC is added to `post-command-hook' and `ecb-post-command-hooks' and removed from the idle-list \(if it has been contained). If 'pre the FUNC is added to `pre-command-hook' and `ecb-pre-command-hooks' and removed from the idle-list \(if it has been contained)." (unless (assoc func ecb-autocontrol/sync-fcn-register) (error "ECB %s: Try to activate unregistered %s as autocontrol/sync-function" ecb-version func)) ;; `ecb-basic-buffer-sync-delay' can never have the value 'basic so this ;; recursion is save (if (equal 'basic value) (ecb-activate-ecb-autocontrol-function ecb-basic-buffer-sync-delay func) (ecb-stop-autocontrol/sync-function func) (case value ((nil post) (add-hook 'post-command-hook func) (add-to-list 'ecb-post-command-hooks func)) (pre (add-hook 'pre-command-hook func) (add-to-list 'ecb-pre-command-hooks func)) (otherwise (add-to-list 'ecb-idle-timer-alist (cons func (ecb-run-with-idle-timer value t func))))))) (defmacro defecb-autocontrol/sync-function (fcn buffer-name-symbol buffer-sync-option-symbol interactive-p docstring &rest body) "Define a function run either by idle-timer or before or after each command. Such a function is used either for automatic self-controlling certain aspects of ECB or for synchronizing a special window/buffer of ECB with contents of the active buffer in the edit-area. FCN is the name of the defined function and BUFFER-NAME-SYMBOL is either nil or a variable-symbol containing the buffer-name of a special ECB-window/buffer for which the defined function is used for synchronizing it with the edit-area. In the latter case BODY is encapsulated with the macros a) `ecb-when-point-in-edit-window-ecb-windows-visible' and b) `ecb-do-if-buffer-visible-in-ecb-frame' so BODY runs only if a) point stays in an edit-window \(ie. the currently selected window is an edit-window) and the ecb-windows of current layout are not hidden and b) the buffer of BUFFER-NAME-SYMBOL is displayed in a window of the ECB-frame \(for details see the documentation of this macro). Please note: If BUFFER-NAME-SYMBOL is nil then BODY is not encapsulated with these two macros mentioned above! The defined function has an optional argument FORCE which can be used within BODY. BUFFER-SYNC-OPTION-SYMBOL is either nil or the name of an option which defines if and under which circumstances the synchronization should take place. Such an option must be of the same type and must offer exactly the same values as `ecb-analyse-buffer-sync'. If BUFFER-SYNC-OPTION-SYMBOL is not nil and a valid symbol then the generated function encapsulates BODY in a when-statement whereas the condition-clause is exactly true when either: - force is not nil or - The value of BUFFER-SYNC-OPTION-SYMBOL is t or 'always or - The major-mode of current buffer is not contained in the list-value of BUFFER-SYNC-OPTION-SYMBOL or - The value of BUFFER-SYNC-OPTION-SYMBOL is 'basic and the conditions above are true for `ecb-basic-buffer-sync'. If INTERACTIVE-P is not nil then FCN will be defined as an interactice command, i.e. it will containe the clause \(interactive \"P\"). The defined function is automatically prepared for tracing its calls when `ecb-autotrace-autocontrol/sync-functions' is either set to t or the symbol of FCN is contained in the list of this variable. In this case a trace-statemant with time-details is reported to the message-buffer directly before and after BODY. Do not quote FCN, BUFFER-NAME-SYMBOL and BUFFER-SYNC-OPTION-SYMBOL! Example: \(defecb-autocontrol/sync-function ecb-sync-a-buffer ecb-a-special-buffer-name ecb-a-special-buffer-sync nil \"Synchronize the buffer of ECB-A-SPECIAL-BUFFER-NAME with...\" \(let \(\(x nil)) \(if force ;; do something ;; do something else ) )) This defines a non interactive function `ecb-sync-a-buffer' which should be used for synchronizing the special buffer the name is hold in the variable `ecb-a-special-buffer-name'. " `(eval-and-compile (ecb-register-autocontrol/sync-function (quote ,fcn) (quote ,buffer-name-symbol)) (defun ,fcn (&optional force) ,docstring ,(if interactive-p '(interactive "P")) (ecb-autotrace-autocontrol/sync-fcn-error (quote ,fcn) "Begin: Cur-buf: %s" (current-buffer)) (let (,(if (and buffer-sync-option-symbol (symbolp buffer-sync-option-symbol)) `(,buffer-sync-option-symbol (if (equal ,buffer-sync-option-symbol 'basic) ecb-basic-buffer-sync ,buffer-sync-option-symbol)) ;; we need anything to bound in the else-fork, so we just bind ;; major-mode to major-mode - we could use any variable, takes ;; no effect `(major-mode major-mode)) ;; `(,(make-symbol "abc123xyz456efg789") nil)) ) (when ,(if (and buffer-sync-option-symbol (symbolp buffer-sync-option-symbol)) `(or force (equal 'always ,buffer-sync-option-symbol) (equal t ,buffer-sync-option-symbol) (and ,buffer-sync-option-symbol (listp ,buffer-sync-option-symbol) (not (member major-mode ,buffer-sync-option-symbol)))) t) ,(if (and buffer-name-symbol (symbolp buffer-name-symbol)) `(ecb-when-point-in-edit-window-ecb-windows-visible (ecb-do-if-buffer-visible-in-ecb-frame (quote ,buffer-name-symbol) (ecb-bodytrace-autocontrol/sync-fcn-error (quote ,fcn) "After conditions: Cur-buf: %s" (current-buffer)) ,@body (ecb-autotrace-autocontrol/sync-fcn-error (quote ,fcn) "End: Cur-buf: %s" (current-buffer)) nil ;; we always return nil )) `(progn (ecb-bodytrace-autocontrol/sync-fcn-error (quote ,fcn) "After conditions: Cur-buf: %s" (current-buffer)) ,@body (ecb-autotrace-autocontrol/sync-fcn-error (quote ,fcn) "End: Cur-buf: %s" (current-buffer)) nil ;; we always return nil ) )))))) (put 'defecb-autocontrol/sync-function 'lisp-indent-function 4) ;; (insert (pp (macroexpand ;; '(defecb-autocontrol/sync-function ecb-analyse-buffer-sync-test ;; ecb-anaylyse-buffer-name-test ecb-basic-buffer-sync nil ;; "testdoctsirng" ;; (let ((analysis nil) ;; (completions nil) ;; (fnargs nil) ;; (cnt nil) ;; ) ;; ;; Try and get some sort of analysis ;; (ignore-errors ;; (save-excursion ;; (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)) ;; (setq fnargs (ecb--semantic-get-local-arguments (point))) ;; ))))) ;; ))) (defecb-autocontrol/sync-function ecb-monitor-autocontrol-functions nil nil nil "Checks if all necessary ECB-hooks are contained in `post-command-hook' rsp. `pre-command-hook'. If one of them has been removed by Emacs \(Emacs resets these hooks to nil if any of the contained functions fails!) then this function reads them to these hooks." ;; post-command-hook (dolist (hook ecb-post-command-hooks) (when (not (member hook post-command-hook)) (add-hook 'post-command-hook hook))) ;; pre-command-hook (dolist (hook ecb-pre-command-hooks) (when (not (member hook pre-command-hook)) (add-hook 'pre-command-hook hook)))) ;; -- end of sync stuff ;;; ----- Wrappers for file- and directory-operations ------ (dolist (f '(file-name-nondirectory file-exists-p file-name-directory file-readable-p file-attributes file-name-extension file-directory-p file-accessible-directory-p file-name-sans-extension file-writable-p file-name-as-directory directory-files)) (fset (intern (format "ecb-%s" f)) `(lambda (file-or-dir-name &rest args) ,(format "Delegate all args to `%s' but call first `ecb-fix-path' for FILE-OR-DIR-NAME." f) (apply (quote ,f) (ecb-fix-path file-or-dir-name) args)))) (defun ecb-expand-file-name (name &optional default-dir) "Delegate all args to `expand-file-name' but call first `ecb-fix-path' for both args." (expand-file-name (ecb-fix-path name) (ecb-fix-path default-dir))) ;;; ----- Canonical filenames ------------------------------ (defun ecb-fix-path (path) "Fixes an annoying behavior of the native windows-version of XEmacs: When PATH contains only a drive-letter and a : then `expand-file-name' does not interpret this PATH as root of that drive. So we add a trailing `directory-sep-char' and return this new path because then `expand-file-name' treats this as root-dir of that drive. For all \(X)Emacs-version besides the native-windows-XEmacs PATH is returned." (if (and ecb-running-xemacs (equal system-type 'windows-nt)) (if (and (= (length path) 2) (equal (aref path 1) ?:)) (concat path (ecb-directory-sep-string)) path) path)) ;; accessors for the FIXED-FILENAMES-cache (defsubst ecb-fixed-filename-cache-put (path filename fixed-filename) "Add FIXED-FILENAME for PATH and FILENAME to the FIXED-FILENAMES-cache of `ecb-filename-cache'." (ecb-multicache-put-value 'ecb-filename-cache (concat path filename) 'FIXED-FILENAMES fixed-filename)) (defsubst ecb-fixed-filename-cache-get (path filename) "Get the cached value for PATH and FILENAME from the FIXED-FILENAMES-cache in `ecb-filename-cache'. If no vaue is cached for PATH and FILENAME then nil is returned." (ecb-multicache-get-value 'ecb-filename-cache (concat path filename) 'FIXED-FILENAMES)) (defun ecb-fixed-filename-cache-dump (&optional no-nil-value) "Dump the whole FIXED-FILENAMES-cache. If NO-NIL-VALUE is not nil then these cache-entries are not dumped. This command is not intended for end-users of ECB." (interactive "P") (ecb-multicache-print-subcache 'ecb-filename-cache 'FIXED-FILENAMES no-nil-value)) ;; TODO: Klaus Berndl : What about the new cygwin-version ;; of GNU Emacs 21? We have to test if this function and all locations where ;; `ecb-fix-path' is used work correctly with the cygwin-port of GNU Emacs. (silentcomp-defun mswindows-cygwin-to-win32-path) (defun ecb-fix-filename (path &optional filename substitute-env-vars) "Normalizes path- and filenames for ECB. If FILENAME is not nil its pure filename \(i.e. without directory part) will be concatenated to PATH. The result will never end with the directory-separator! If SUBSTITUTE-ENV-VARS is not nil then in both PATH and FILENAME env-var substitution is done. If the `system-type' is 'cygwin32 then the path is converted to win32-path-style!" (when (stringp path) (or (ecb-fixed-filename-cache-get path filename) (let ((remote-path (ecb-remote-path path)) (norm-path nil) (result nil)) (if (or (not remote-path) (ecb-host-accessible-p (nth 1 remote-path))) (progn (setq norm-path (if ecb-running-xemacs (case system-type (cygwin32 (mswindows-cygwin-to-win32-path (expand-file-name path))) (windows-nt (expand-file-name (ecb-fix-path path))) (otherwise (expand-file-name path))) (expand-file-name path))) ;; substitute environment-variables (setq norm-path (expand-file-name (if substitute-env-vars (substitute-in-file-name norm-path) norm-path)))) (setq norm-path path)) ;; For windows systems we normalize drive-letters to downcase (setq norm-path (if (and (member system-type '(windows-nt cygwin32)) (> (length norm-path) 1) (equal (aref norm-path 1) ?:)) (concat (downcase (substring norm-path 0 2)) (substring norm-path 2)) norm-path)) ;; delete a trailing directory-separator if there is any (setq norm-path (if (and (> (length norm-path) 1) (= (aref norm-path (1- (length norm-path))) (ecb-directory-sep-char path))) (substring norm-path 0 (1- (length norm-path))) norm-path)) (setq result (concat norm-path (if (stringp filename) (concat (when (> (length norm-path) 1) ;; currently all protocols like tramp, ;; ange-ftp or efs support only not ;; windows-remote-hosts ==> we must not ;; add a backslash here (would be done ;; in case of a native Windows-XEmacs) (ecb-directory-sep-string path)) (file-name-nondirectory (if substitute-env-vars (substitute-in-file-name filename) filename)))))) (ecb-fixed-filename-cache-put path filename result) result)))) ;; (ecb-fix-filename "/berndl@ecb.sourceforge.net:~") ;; -- end of canonical filenames (defun ecb-format-bucket-name (name &optional ignore-prefix-suffix ignore-bucket-face) "Format NAME as a bucket-name according to `ecb-bucket-node-display'. If optional arg IGNORE-PREFIX-SUFFIX is not nil then these settings of `ecb-bucket-node-display' are ignored. If IGNORE-BUCKET-FACE it t then the face of `ecb-bucket-node-display' is completely ignored, if it is 'only-name then the face of `ecb-bucket-node-display' is only ignored for NAME but not for a prefix or suffix of `ecb-bucket-node-display' \(if any)." (let ((formated-prefix (unless ignore-prefix-suffix (if (eq ignore-bucket-face t) (nth 0 ecb-bucket-node-display) (ecb-merge-face-into-text (nth 0 ecb-bucket-node-display) (nth 2 ecb-bucket-node-display))))) (formated-suffix (unless ignore-prefix-suffix (if (eq ignore-bucket-face t) (nth 1 ecb-bucket-node-display) (ecb-merge-face-into-text (nth 1 ecb-bucket-node-display) (nth 2 ecb-bucket-node-display))))) (formatted-name (if ignore-bucket-face name (ecb-merge-face-into-text name (nth 2 ecb-bucket-node-display))))) (concat formated-prefix formatted-name formated-suffix))) (defun ecb-toggle-do-not-leave-window-after-select () "Toggles if a node-selection in a tree-buffer leaves the tree-window. See also the option `ecb-tree-do-not-leave-window-after-select'." (interactive) (let ((tree-buffer (ecb-point-in-ecb-tree-buffer))) (if tree-buffer (let ((tree-buf-name (buffer-name tree-buffer))) (if (ecb-member-of-symbol/value-list tree-buf-name ecb-tree-do-not-leave-window-after-select--internal) (progn (setq ecb-tree-do-not-leave-window-after-select--internal ;; we must try both - the symbol of the tree-buffer-name ;; and the tree-buffer-name because we do not know what ;; the user has specified in ;; `ecb-tree-do-not-leave-window-after-select'! (delete (ecb-ecb-buffer-registry-get-symbol tree-buf-name) (delete tree-buf-name ecb-tree-do-not-leave-window-after-select--internal))) (message "Selections leave the tree-window of %s" tree-buf-name)) (setq ecb-tree-do-not-leave-window-after-select--internal (append ecb-tree-do-not-leave-window-after-select--internal (list (ecb-ecb-buffer-registry-get-symbol tree-buf-name)))) (message "Selections don't leave the tree-window of %s." tree-buf-name))) (message "Point must stay in an ECB tree-buffer!")))) (defun ecb-common-tree-buffer-modeline-menu-creator (buf-name) "Return a menu for the modeline of all ECB-tree-buffers." '((delete-other-windows "Maximize Window Above") (ecb-redraw-layout-preserving-compwin-state "Display All ECB-windows"))) (defun ecb-common-after-tree-buffer-create-actions () "Things which should be performed after creating a tree-buffer. The tree-buffer is the current buffer." (local-set-key (kbd "C-t") 'ecb-toggle-do-not-leave-window-after-select) (if ecb-running-xemacs ;; TODO: Klaus Berndl : Is it necessary to make ;; modeline-map buffer-local for current buffer first?! (define-key modeline-map '(button2up) 'ecb-toggle-maximize-ecb-window-with-mouse) (local-set-key [mode-line mouse-2] 'ecb-toggle-maximize-ecb-window-with-mouse))) ;;==================================================== ;; Mouse callbacks ;;==================================================== (defun ecb-tree-buffer-node-select-callback (node mouse-button shift-pressed control-pressed meta-pressed tree-buffer-name) "This is the callback-function ecb.el gives to every tree-buffer to call when a node has been selected. This function does nothing if the click combination is invalid \(see `ecb-interpret-mouse-click'." (let* ((ecb-button-list (ecb-interpret-mouse-click mouse-button shift-pressed control-pressed meta-pressed tree-buffer-name)) (ecb-button (nth 0 ecb-button-list)) (shift-mode (nth 1 ecb-button-list)) (meta-mode (nth 2 ecb-button-list)) (keyboard-p (equal (nth 3 ecb-button-list) 'keyboard)) (maximized-p (ecb-buffer-is-maximized-p tree-buffer-name)) (select-callbacks (ecb-tree-buffer-callbacks-alist-of-type 'select)) (callback-fcn nil)) ;; we need maybe later that something has clicked in a tree-buffer, e.g. ;; in `ecb-handle-major-mode-visibilty'. (setq ecb-item-in-tree-buffer-selected t) (if (not keyboard-p) (setq ecb-layout-prevent-handle-ecb-window-selection t)) ;; first we dispatch to the right action (when ecb-button-list (setq callback-fcn (ecb-member-of-symbol/value-list tree-buffer-name select-callbacks 'car 'cdr)) (when (functionp callback-fcn) (funcall callback-fcn node ecb-button nil shift-mode meta-mode))) ;; now we go back to the tree-buffer but only if all of the following ;; conditions are true: ;; 1. The ecb-windows are now not hidden ;; 2. The tree-buffer-name is contained in ;; ecb-tree-do-not-leave-window-after-select--internal ;; 3. Either it is not the ecb-directories-buffer-name or ;; at least `ecb-show-sources-in-directories-buffer-p' is true and the ;; hitted node is a sourcefile (when (and (not (ecb-windows-all-hidden)) (ecb-member-of-symbol/value-list tree-buffer-name ecb-tree-do-not-leave-window-after-select--internal) (or (not (ecb-string= tree-buffer-name ecb-directories-buffer-name)) (and (ecb-show-sources-in-directories-buffer-p) (= ecb-directories-nodetype-sourcefile (tree-node->type node))))) ;; If there is currently no maximized window then we can savely call ;; `ecb-goto-ecb-window'. If we have now a maximized window then there ;; are two possibilities: ;; - if it is not equal to the maximzed tree-buffer before the selection ;; then we must maximi (if (and maximized-p (not (ecb-buffer-is-maximized-p tree-buffer-name))) (ecb-maximize-ecb-buffer tree-buffer-name t) (ecb-goto-ecb-window tree-buffer-name)) (tree-buffer-remove-highlight)))) (defun ecb-tree-buffer-node-collapsed-callback (node mouse-button shift-pressed control-pressed meta-pressed tree-buffer-name) "This is the callback-function ecb.el gives to every tree-buffer to call when a node has been collapsed." (let* ((ecb-button-list (ecb-interpret-mouse-click mouse-button shift-pressed control-pressed meta-pressed tree-buffer-name)) (keyboard-p (equal (nth 3 ecb-button-list) 'keyboard))) (if (not keyboard-p) (setq ecb-layout-prevent-handle-ecb-window-selection t)))) (defun ecb-tree-buffer-node-expand-callback (node mouse-button shift-pressed control-pressed meta-pressed tree-buffer-name) "This is the callback-function ecb.el gives to every tree-buffer to call when a node should be expanded. This function does nothing if the click combination is invalid \(see `ecb-interpret-mouse-click')." (let* ((ecb-button-list (ecb-interpret-mouse-click mouse-button shift-pressed control-pressed meta-pressed tree-buffer-name)) (ecb-button (nth 0 ecb-button-list)) (shift-mode (nth 1 ecb-button-list)) (meta-mode (nth 2 ecb-button-list)) (keyboard-p (equal (nth 3 ecb-button-list) 'keyboard)) (expand-callbacks (ecb-tree-buffer-callbacks-alist-of-type 'expand)) (callback-fcn nil)) (if (not keyboard-p) (setq ecb-layout-prevent-handle-ecb-window-selection t)) ;; we just dispatch to the right action (when ecb-button-list (setq callback-fcn (ecb-member-of-symbol/value-list tree-buffer-name expand-callbacks 'car 'cdr)) (when (functionp callback-fcn) (funcall callback-fcn node ecb-button nil shift-mode meta-mode))))) (defun ecb-interpret-mouse-click (mouse-button shift-pressed control-pressed meta-pressed tree-buffer-name) "Converts the physically pressed MOUSE-BUTTON \(1 = mouse-1, 2 = mouse-2, 0 = no mouse-button but the keys RET or TAB) to ECB-mouse-buttons: either primary or secondary mouse-button depending on the value of CONTROL-PRESSED and the setting in `ecb-primary-secondary-mouse-buttons'. Returns a list '\( ) where is either 1 \(= primary) or 2 \(= secondary) and and are non nil if SHIFT-PRESSED rsp. META-PRESSED is non nil. is either 'mouse or 'keyboard dependent if the uses has used the mouse rsp. the keyboard in the tree-buffer. For an invalid and not accepted click combination nil is returned. Note: If MOUSE-BUTTON is 0 \(means no mouse-button but a key like RET or TAB was hitted) then CONTROL-PRESSED is interpreted as ECB-button 2. Currently the fourth argument TREE-BUFFER-NAME is not used here." (if (eq mouse-button 0) (list (if control-pressed 2 1) shift-pressed meta-pressed 'keyboard) (if (and (not (eq mouse-button 1)) (not (eq mouse-button 2))) nil (case ecb-primary-secondary-mouse-buttons (mouse-1--mouse-2 (if control-pressed nil (list mouse-button shift-pressed meta-pressed 'mouse))) (mouse-1--C-mouse-1 (if (not (eq mouse-button 1)) nil (list (if control-pressed 2 1) shift-pressed meta-pressed 'mouse))) (mouse-2--C-mouse-2 (if (not (eq mouse-button 2)) nil (list (if control-pressed 2 1) shift-pressed meta-pressed 'mouse))) (otherwise nil))))) (defun ecb-show-minibuffer-info (node window when-spec) "Checks if any info about the current node in the ECB-window WINDOW should be displayed. WHEN-SPEC must have the same format as the car of `ecb-directories-show-node-info'." (or (eq when-spec 'always) (and (eq when-spec 'if-too-long) window (>= (tree-node-linelength node) (window-width window))))) (tree-buffer-defpopup-command ecb-maximize-ecb-window-menu-wrapper "Expand the current ECB-window from popup-menu." (ecb-maximize-ecb-buffer (buffer-name (current-buffer)) t)) ;; stealthy mechanism (defvar ecb-stealthy-function-list nil "List of functions which ECB runs stealthy. Do not modify this variable! This variable is autom. set by the macro `defecb-stealthy'!") (defvar ecb-stealthy-function-state-alist nil "Alist which stores the state of each function of `ecb-stealthy-function-list'. Do not add new items to this variable because this is autom. done by the macro `defecb-stealthy'!") (defun ecb-stealthy-function-list-add (fcn) (add-to-list 'ecb-stealthy-function-list fcn)) (defun ecb-stealthy-function-state-alist-add (fcn) (add-to-list 'ecb-stealthy-function-state-alist (cons fcn 'done))) (defun ecb-stealthy-function-state-get (fcn) "Getter for `ecb-stealthy-function-state-alist'. Return state for the stealthy function FCN." (cdr (assoc fcn ecb-stealthy-function-state-alist))) (defun ecb-stealthy-function-state-set (fcn state) "Setter for `ecb-stealthy-function-state-alist'. Set STATE for the stealthy function FCN. Return STATE." (setcdr (assoc fcn ecb-stealthy-function-state-alist) state)) (defun ecb-stealthy-function-p (fcn) "Return not nil if FCN is a stealthy function defined with `defecb-stealthy'." (member fcn ecb-stealthy-function-list)) (defun ecb-stealthy-function-state-init (&optional fcn state) "Reset the state of stealthy functions. If first optional arg FCN is a stealthy function then only the state of this function is reset - otherwise all stealthy functions of `ecb-stealthy-function-list' are reset. If second optional arg STATE is nil then the state will be reset to the special state 'restart - otherwise to the value STATE." (if (and fcn (ecb-stealthy-function-p fcn)) (ecb-stealthy-function-state-set fcn (or state 'restart)) (dolist (f ecb-stealthy-function-list) (ecb-stealthy-function-state-set f (or state 'restart))))) (defmacro defecb-stealthy (name docstring &rest body) "Define a so called stealthy function with NAME. This function will be registered by this macro in `ecb-stealthy-function-list' and `ecb-stealthy-function-state-alist'. During the evaluation of BODY the variable `state' will be bound and initialized with the stealthy state. BODY can use and modify `state'. After evaluating BODY `state' will be automatically saved so its available at the runtime of this stealthy function. BODY will only be evaluated if `state' is not 'done. BODY should be designed to be interruptable by the user, so its recommended to use for this `ecb-exit-on-input' ans `ecb-throw-on-input' \(see example in `ecb-test-throw-on-input'). If BODY completes then BODY has to set `state' to the special value 'done! If BODY has been interrupted then `state' can have an arbitrary value which will be autom. stored and at next runtime of the stealthy function NAME `state' will be initialized with this stored value. If `state' is initialized with the special value 'restart then this means the stealthy function should start from scratch because an eventually stored state is not longer valid. If the stealthy function sets `state' to 'done then this function will first being called after the state for this function has been reset to something else than 'done \(mostly to 'restart)\; such a reset of the state for a stealthy function can be done by any code and must be done via `ecb-stealthy-function-state-init'!" `(progn (unless (fboundp (quote ,name)) (ecb-stealthy-function-list-add (quote ,name)) (ecb-stealthy-function-state-alist-add (quote ,name))) (eval-and-compile (unless (fboundp (quote ,name)) (defun ,name nil ,docstring (let ((state (ecb-stealthy-function-state-get (quote ,name)))) (unless (equal state 'done) ,@body) (ecb-stealthy-function-state-set (quote ,name) state))))))) (put 'defecb-stealthy 'lisp-indent-function 1) (defvar ecb-stealthy-update-running nil "Recursion avoidance variable for stealthy performance.") (defecb-autocontrol/sync-function ecb-stealthy-updates nil nil nil "Run all functions in the stealthy function list. Each function returns 'done if it completes successfully, or something else if interrupted by the user \(i.e. the function has been interrupted by the user). If a function is interrupted then `ecb-stealthy-function-list' is rotated so the interrupted function is the first element so the next stealthy run starts with this interrupted function." (unless ecb-stealthy-update-running (let ((l ecb-stealthy-function-list) (ecb-stealthy-update-running t) ;; necessary because timers set this locally to t to prevent ;; timer-actions from being quitted by C-g. Our potentially long ;; lasting actions must be quit-able! (inhibit-quit nil)) (while (and l (equal 'done (funcall (car l)))) (setq l (cdr l))) ;; if l is nil this means all functions have successfully completed - ;; otherwise we ensure that next time we start with the interrupted ;; function. (when l (setq ecb-stealthy-function-list (ecb-rotate ecb-stealthy-function-list (car l))))))) ; ;; generation of nodes rsp. of attributes of nodes (defun ecb-generate-node-name (text-name first-chars icon-name name-of-buffer) "Generate a new name from TEXT-NAME by adding an appropriate image according to ICON-NAME to the first FIRST-CHARS of TEXT-NAME. If FIRST-CHARS is < 0 then a string with length abs\(FIRST-CHARS) is created, the image is applied to this new string and this \"image\"-string is added to the front of TEXT-NAME. If no image can be found for ICON-NAME then the original TEXT-NAME is returned. NAME-OF-BUFFER is the name of the tree-buffer where the resulting node-name will be displayed. If an image is added then two text-properties are added to the FIRST-CHARS of the returned string: 'tree-buffer-image-start which holds 0 as value and 'tree-buffer-image-length which holds the absolute value of FIRST-CHARS value." (let ((image nil) (ret nil)) (with-current-buffer name-of-buffer (setq image (and icon-name (tree-buffer-find-image icon-name))) (setq ret (if image (if (> first-chars 0) (tree-buffer-add-image-icon-maybe 0 first-chars text-name image) (concat (tree-buffer-add-image-icon-maybe 0 (- first-chars) (make-string (- first-chars) ? ) image) text-name)) text-name))) ret)) (silentcomp-provide 'ecb-common-browser) ;;; ecb-common-browser.el ends here ecb-2.40+cvs20110608/ecb-compatibility.el000066400000000000000000000377501157374236500175540ustar00rootroot00000000000000;;; 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 ;; Maintainer: Klaus Berndl ;; 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: ecb-compatibility.el,v 1.17 2009/06/24 17:49:54 berndl Exp $ ;;; 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 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 : 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 : 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 : 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 : 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 : ;; *** 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 ecb-2.40+cvs20110608/ecb-compilation.el000066400000000000000000000324351157374236500172140ustar00rootroot00000000000000;;; 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 ;; Klaus Berndl ;; Kevin A. Burton ;; Maintainer: Klaus Berndl ;; 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: ecb-compilation.el,v 1.41 2010/02/23 16:08:56 berndl Exp $ ;;; 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 : 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 : 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 ecb-2.40+cvs20110608/ecb-create-layout.el000066400000000000000000001035471157374236500174570ustar00rootroot00000000000000;;; 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 ;; Maintainer: Klaus Berndl ;; 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: ecb-create-layout.el,v 1.38 2009/06/23 11:16:56 berndl Exp $ ;;; 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 automatic-hscrolling) (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. : 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. : 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 ;; Author: Klaus Berndl ;; Maintainer: Klaus Berndl ;; 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 (interactive-p)) (message "ECB Layout Creation canceled - the layout is not saved!") (and (interactive-p) (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 automatic-hscrolling 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 (interactive-p))) ;; 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 (interactive-p) (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 "") 'delete-backward-char) (define-key ecb-create-layout-mode-map (kbd "") '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 "") 'backward-char) (define-key ecb-create-layout-mode-map (kbd "") 'ecb-create-layout-forward-char) (define-key ecb-create-layout-mode-map (kbd "") 'previous-line) (define-key ecb-create-layout-mode-map (kbd "") '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-") ;; '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 : 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 automatic-hscrolling) (setq automatic-hscrolling 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 : 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 ecb-2.40+cvs20110608/ecb-cycle.el000066400000000000000000000117621157374236500157750ustar00rootroot00000000000000;;; 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 ;; Kevin A. Burton ;; Maintainer: Klaus Berndl ;; 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: ecb-cycle.el,v 1.30 2009/04/15 14:22:35 berndl Exp $ ;;; 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 ecb-2.40+cvs20110608/ecb-eshell.el000066400000000000000000000416201157374236500161460ustar00rootroot00000000000000;;; 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 ;; Kevin A. Burton ;; Maintainer: Klaus Berndl ;; 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: ecb-eshell.el,v 1.86 2010/02/23 16:08:56 berndl Exp $ ;;; 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 : 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 ecb-2.40+cvs20110608/ecb-examples.el000066400000000000000000000566551157374236500165260ustar00rootroot00000000000000;;; ecb-examples.el --- examples for using ECB with Elisp ;; Copyright (C) 2000 - 2005 Jesper Nordenberg, ;; Klaus Berndl, ;; Free Software Foundation, Inc. ;; Author: Klaus Berndl ;; Maintainer: Klaus Berndl ;; 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: ecb-examples.el,v 1.27 2009/06/04 08:38:15 berndl Exp $ ;;; 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 : |[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 ecb-2.40+cvs20110608/ecb-face.el000066400000000000000000001054571157374236500156010ustar00rootroot00000000000000;;; 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 ;; Kevin A. Burton ;; Maintainer: Klaus Berndl ;; 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: ecb-face.el,v 1.26 2009/06/04 08:38:15 berndl Exp $ ;;; 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 : 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 ecb-2.40+cvs20110608/ecb-file-browser.el000066400000000000000000007141061157374236500173000ustar00rootroot00000000000000;;; ecb-file-browser.el --- the file-browser of Emacs ;; Copyright (C) 2000 - 2005 Jesper Nordenberg, ;; Klaus Berndl, ;; Free Software Foundation, Inc. ;; Author: Jesper Nordenberg ;; Klaus Berndl ;; Maintainer: Klaus Berndl ;; Keywords: browser, code, programming, tools ;; Created: 2000 ;; 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: ecb-file-browser.el,v 1.87 2010/02/24 21:52:55 berndl Exp $ ;;; Commentary: ;; This file contains the code of the file-browser of ECB (require 'ecb-util) (require 'tree-buffer) (require 'ecb-mode-line) (require 'ecb-navigate) (require 'ecb-face) (require 'ecb-speedbar) (require 'ecb-layout) (require 'ecb-common-browser) ;; various loads (require 'assoc) (eval-when-compile ;; to avoid compiler grips (require 'cl)) (eval-when-compile (require 'silentcomp)) (silentcomp-defun ecb-speedbar-update-contents) (silentcomp-defun vc-load-vc-hooks) ;; (silentcomp-defvar vc-svn-admin-directory) (silentcomp-defun substring-no-properties) (silentcomp-defun vc-find-root) (silentcomp-defun vc-file-clearprops) (silentcomp-defun vc-state) (silentcomp-defvar dired-directory) ;;==================================================== ;; Customization ;;==================================================== (defgroup ecb-directories nil "Settings for the directories-buffer in the Emacs code browser." :group 'ecb :prefix "ecb-") (defgroup ecb-sources nil "Settings for the sources-buffers in the Emacs code browser." :group 'ecb :prefix "ecb-") (defgroup ecb-history nil "Settings for the history-buffer in the Emacs code browser." :group 'ecb :prefix "ecb-") (defgroup ecb-version-control nil "Settings for the version-control support in the ECB." :group 'ecb :prefix "ecb-") (defcustom ecb-source-path nil "*Paths where to find code sources. Each path can have an optional alias that is used as it's display name. If no alias is set, the path is used as display name. Lisp-type of this option: The value must be a list L whereas each element of L is either - a simple string which has to be the full path of a directory \(this string is displayed in the directory-browser of ECB) or - a 2-element list whereas the first element is the full path of a directory \(string) and the second element is an arbitrary alias \(string) for this directory which is then displayed instead of the underlying directory." :group 'ecb-directories :group 'ecb-most-important :initialize 'custom-initialize-default :set (function (lambda (symbol value) (set symbol value) (if (and (boundp 'ecb-minor-mode) ecb-minor-mode (functionp 'ecb-update-directories-buffer)) (ecb-update-directories-buffer)))) :type '(repeat (choice :tag "Display type" :menu-tag "Display type" (directory :tag "Path") (list :tag "Path with alias" (directory :tag "Path") (string :tag "Alias"))))) (defcustom ecb-add-path-for-not-matching-files '(t . nil) "*Add path of a file to `ecb-source-path' if not already contained. This is done during the auto. windows synchronization which happens if a file is opened not via the file/directory-browser of ECB. In such a situation ECB adds the path of the new file auto. to `ecb-source-path' at least temporally for the current Emacs session. This option defines two things: 1. Should only the root-part \(which means for Unix-like systems always '/' and for windows-like systems the drive) of the new file be added as source-path to `ecb-source-path' or the whole directory-part? For remote-files \(e.g. tramp, ange-ftp- or efs-files) the root-part is the complete host-part + the root-dir at that host \(example: /berndl@ecb.sourceforge.net:/ would be the root-part of /berndl@ecb.sourceforge.net:/tmp/test.txt). 2. Should this path be added for future sessions too? The value of this option is a cons-cell where the car is a boolean for 1. and the cdr is a boolean for 2. A value of not nil for the car \(1.) is reasonably if a user often opens files not via the ECB-browser which are not located in any of the paths of `ecb-source-path' because then only one path for each drive \(windows) or the root-path \(unix) is added to the directory buffer of ECB." :group 'ecb-directories :type '(cons (boolean :tag "Add only root path") (boolean :tag "Ask for saving for future sessions"))) (defvar ecb-source-path-functions nil "List of functions to call for finding sources. Each time the function `ecb-update-directories-buffer' is called, the functions in this variable will be evaluated. Such a function must return either nil or a list of strings where each string is a path.") (defcustom ecb-display-default-dir-after-start t "*Automatically display current default-directory after activating ECB. If a file-buffer is displayed in the edit-window then ECB synchronizes its tree-buffers to this file-buffer - at least if the option `ecb-basic-buffer-sync' it not nil. So for this situation `ecb-display-default-dir-after-start' takes no effect but this option is for the case if no file-buffer is displayed in the edit-window after startup: If true then ECB selects autom. the current default-directory after activation even if no file-buffer is displayed in the edit-window. This is useful if ECB is autom. activated after startup of Emacs and Emacs is started without a file-argument. So the directory from which the startup has performed is auto. selected in the ECB-directories buffer and the ECB-sources buffer displays the contents of this directory." :group 'ecb-directories :type 'boolean) (defcustom ecb-show-sources-in-directories-buffer '("left7" "left13" "left14" "left15") "*Show source files in directories buffer. The value is either 'always or 'never or a list of layout-names for which layouts sources should be displayed in the directories window." :group 'ecb-directories :initialize 'custom-initialize-default :set (function (lambda (symbol value) (set symbol value) (if (and ecb-minor-mode (functionp 'ecb-set-selected-directory) ecb-path-selected-directory) (ecb-set-selected-directory ecb-path-selected-directory t)))) :type '(radio (const :tag "Always" :value always) (const :tag "Never" :value never) (repeat :tag "With these layouts" (string :tag "Layout name")))) (defcustom ecb-directories-show-node-info '(if-too-long . path) "*When to display which node-info in the directories-buffer. Define which node info should be displayed after moving the mouse over a node \(or after a shift click onto the node) in the directories-buffer. You can define \"when\" a node-info should be displayed: - always: Node info is displayed by moving with the mouse over a node. - if-too-long: Node info is only displayed by moving with the mouse over a node does not fit into the window-width of the tree-buffer window. In the ECB directories buffer this means also if a node is shortend or if the node has an alias \(see `ecb-source-path'). - shift-click: Node info is only displayed after a shift click with the primary mouse button onto the node. - never: Node info is never displayed. You can define \"which\" info should be displayed: - name: Only the full node-name is displayed. - path: The full-path of the node is displayed. Do NOT set this option directly via setq but use always customize!" :group 'ecb-directories :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 path" :value path)))) (defcustom ecb-directories-update-speedbar 'auto "*Update an integrated speedbar after selecting a directory. If not nil then an integrated speedbar will be updated after selecting a directory in the ECB-directories-buffer so the speedbar displays the contents of that directory. Of course this option makes only sense if the integrated speedbar is displayed in addition to the ECB-directories-buffer. This option can have the following values: - t: Always update speedbar. - nil: Never update speedbar. - auto: Update when senseful \(see scenarios below) - : A user-defined function. The function is called after a directory is selected, gets the selected directory as argument and has to return nil if the the integrated speedbar should NOT be updated. Two example-scenarios where different values for this option can be senseful: If `ecb-show-sources-in-directories-buffer' is not nil or you have a layout where an ECB-sources-buffer is visible then you probably want to use the ECB-directories-buffer \(and/or the ECB-sources-buffer) for directory- and file-browsing. If you have in addition an integrated speedbar running then you probably want to use speedbar instead of the ECB-methods-buffer for source-content-browsing. In this case you probably want the speedbar not be updated because you do not need speedbar reflecting the current-directory contents but only the contents of the currently selected source-file and the integrated speedbar updates itself autom. for the latter one! If `ecb-show-sources-in-directories-buffer' is nil and there is also no ECB-sources-buffer visible in the current layout then you probably want to use an integrated speedbar for browsing directory-contents \(i.e. the files) and file-contents \(instead of the ECB-methods-buffer for example). In this case you probably want the speedbar updated because you need speedbar reflecting the current-directory contents so you can select files. The value 'auto \(see above) takes exactly these two scenarios into account." :group 'ecb-directories :type '(radio (const :tag "Always" :value t) (const :tag "Never" :value nil) (const :tag "Automatic" :value auto) (function :tag "Custom function"))) (defun ecb-show-sources-in-directories-buffer-p () "Return not nil if in current layout sources are shown in the directories-buffer." (case ecb-show-sources-in-directories-buffer (never nil) (always t) (otherwise (and (listp ecb-show-sources-in-directories-buffer) (member ecb-layout-name ecb-show-sources-in-directories-buffer))))) (defcustom ecb-cache-directory-contents '(("^/\\([^:/]*@\\)?\\([^@:/]*\\):.*" . 0) (".*" . 50)) "*Cache contents of certain directories. This can be useful if `ecb-source-path' contains directories with many files and subdirs, especially if these directories are mounted net-drives \(\"many\" means here something > 1000, dependent of the speed of the net-connection and the machine). Or if it contains remote-source-paths which means paths in the sense of tramp, ange-ftp or efs. For these directories actualizing the sources- and/or directories- buffer of ECB \(if displayed in current layout!) can slow down dramatically so a caching increases speed a lot. The value of this option is a list where the each element is a cons-cell and looks like: \( . ) : Regular expression a directory must match to be cached. : Number of directory contents must exceed this number. A directory will only be cached if and only if the directory-name matches one regexp of this option and its content-number exceeds the related threshold AND the directory-name does not match and regexp of `ecb-cache-directory-contents-not'! The cache entry for a certain directory will be refreshed and actualized only by using the POWER-click \(see `ecb-primary-secondary-mouse-buttons') in the directories-buffer of ECB. Default-value: ECB caches the contents of all remote directories regardless of the size and all other directories if more than 50 entries are contained. Examples: An entry \(\"/usr/home/john_smith/bigdir*\" . 1000) means the contents of every subdirectory of the home-directory of John Smith will be cached if the directory contains more than 1000 entries and its name begins with \"bigdir\". An entry \(\".*\" . 1000) caches every directory which has more than 1000 entries. An entry \(\"^/\\\\\(\[^:/]*@\\\\)?\\\\\(\[^@:/]*\\\\):.*\" . 0) caches every remote \(in the sense of tramp, ange-ftp or efs) directory regardless of the number of entries. Please note: If you want your home-dir being cached then you MUST NOT use \"~\" because ECB tries always to match full path-names!" :group 'ecb-directories :group 'ecb-most-important :type `(repeat (cons (regexp :tag "Directory-regexp") (integer :tag "Filenumber threshold" :value 1000)))) (defcustom ecb-cache-directory-contents-not nil "*Do not cache the contents of certain directories. The value of this option is a list where the each element is a regular expression a directory must match if it should not being cached. If a directory-name matches at least one of the regexps of this option the directory-contents will never being cached. See `ecb-cache-directory-contents' to see when a directory will be cached. This option can be useful when normally all directories with a certain amount of content \(files and subdirs) should be cached but some special directories not. This can be achieved by: - setting `ecb-cache-directory-contents' to \(\".*\" . 500): Caches all directories with more then 500 entries - setting `ecb-cache-directory-contents-not' to a value which matches these directories which should not being cached \(e.g. \(\"/usr/home/john_smith\") excludes the HOME-directory of John Smith from being cached). Please note: If you want your home-dir exclude from being cached then you MUST NOT use \"~\" because ECB tries always to match full path-names!" :group 'ecb-directories :type `(repeat (regexp :tag "Directory-regexp"))) (defcustom ecb-ping-program "ping" "Program to send network test packets to a host. The set ping-program is used to test if a remote host of a remote path \(e.g. a tramp-, ange-ftp- or efs-path) is accessible. See also `ecb-ping-options'." :group 'ecb-directories :type 'string) (defcustom ecb-ping-options (append (cond ((memq system-type (list 'linux 'gnu/linux 'irix)) (list "-c" "2")) ((eq system-type 'windows-nt) (list "-n" "2"))) (list "HOST")) "List of options for the ping program. These options have to ensure that the program set in `ecb-ping-program' only emits as few as possible ICMP packets, ideally exactly 1. These options must ensure the ping-program doesn't emit an endless sequence of packets! These sequence of options must fit the required argument- and options-list of the specified ping-program \(see `ecb-ping-program'). Therefore at least on of these options must be the string HOST \(uppercase) which will be replaced internally by ECB with that host-name the accessibility of this host has to be tested. So ensure that this 'HOST'-option is in the right place of the options-sequence - check the manual of your ping-program! Default-value of this option is a list with just one element HOST, which means the ping-program of `ecb-ping-program' will be called with one argument which will be the host-name which should be tested. See also `ecb-ping-program'." :group 'ecb-directories :type '(repeat string)) (defcustom ecb-host-accessible-check-valid-time nil "Time in seconds a cached accessible-state of a remote host is valid. This option is a list where each element specifies how long for a certain remote host the cached ping-state \(i.e. if the host is accessible or not) should be valid. During this time-intervall ECB pings such a remote host only once, all other checks use the cached value of that real check. But it the cached value is older than the value of this option ECB will ping again. Per default ECB discards after 1 minute the cached ping-state of each remote host. But if you are sure that a certain remote host is always accessible \(i.e. means in consequence that you are always online when working with ECB and remote-paths) then add an entry to this option with a high valid-interval. Examples: An entry \(\".*sourceforge.*\" . 3600) ensures that all remote hosts machting the string \"sourceforge\" will only once pinged during one hour. Or \(\".*\" . 300) would ensure that every remote host would be pinged only once during 5 minutes." :group 'ecb-directories :type '(repeat (cons (regexp :tag "Remote host regexp") (integer :tag "Valid interval")))) (defcustom ecb-prescan-directories-for-emptyness 'unless-remote "*Prescan directories for emptyness. ECB does this so directories are displayed as empty in the directories-buffer even without user-interaction \(i.e. in previous ECB-versions the emptyness of a directory has been first checked when the user has clicked onto a directory). ECB optimizes this check as best as possible but if a directory contains a lot of subdirectories which contain in turn a lot of entries, then expanding such a directory or selecting it would take of course more time as without this check - at least at the first time \(all following selects of a directory uses the cached information if its subdirectories are empty or not). Therefore ECB performs this check stealthy \(see `ecb-stealthy-tasks-delay') so normally there should no performance-decrease or additional waiting-time for the user. There is one exception: For remote directories \(in the sense of tramp, ange-ftp, or efs) this check can descrease performance even if performed stealthy and interruptable. Therefore this option offers three possible settings: t: Switch on this feature 'unless-remote: Switch on this feature but not for remote directories. The term \"remote\" means here directories which are used via tramp, ange-ftp or efs. So mounted directories are counted not as remote directories here even if such a directory is maybe hosted on a remote machine. But normally only directories in a LAN are mounted so there should be no performance-problems with such mounted directories. nil: Switch off this feature completely. The option `ecb-prescan-directories-exclude-regexps' offers are more fine granularity to exclude certain directories from this prescan." :group 'ecb-directories :group 'ecb-most-important :type '(radio (const :tag "Switch on" :value t) (const :tag "Switch off for remote directories" :value unless-remote) (const :tag "Switch off completely" :value nil))) (defcustom ecb-prescan-directories-exclude-regexps nil "*Which directories should be excluded from the empty-prescan. If a directory matches any of the regexps of this option it will not be prescanned for emptyness - This option takes only effect if `ecb-prescan-directories-for-emptyness' is not nil." :group 'ecb-directories :type '(repeat (regexp :tag "Directory-regexp"))) (defsubst ecb-directory-should-prescanned-p (dir) "Return not nil if DIR should be prescanned for emptyness. The check is performed according to the settings in the options `ecb-prescan-directories-for-emptyness' and `ecb-prescan-directories-exclude-regexps'." (and (or (equal t ecb-prescan-directories-for-emptyness) (and (equal 'unless-remote ecb-prescan-directories-for-emptyness) (not (ecb-remote-path dir)))) (not (ecb-match-regexp-list dir ecb-prescan-directories-exclude-regexps)))) (defcustom ecb-grep-function (cond ((fboundp 'lgrep) 'lgrep) ((fboundp 'igrep) 'igrep) (t 'grep)) "*Function used for performing a grep. The popup-menu of the tree-buffers \"Directories\", \"Sources\" and \"History\" offer to grep the \"current\" directory: - Directory-buffer: The grep is performed in the current popup-directory after clicking the right mouse-button onto a node. - Sources-buffer: The grep is performed in the current selected directory. - History-buffer: The grep is performed in the directory of the current popup-source after clicking the right mouse-button onto a node. Conditions for such a function: - The function is called interactively via `call-interactively' - During the function-call the `default-directory' is temp. set to that directory mentioned above with \"... is performed in ...\", i.e. the function can use the value of `default-directory' to determine the directory to grep. - The function must read all it's arguments itself. - The function is completely responsible for performing the grep itself and displaying the results. Normally one of the standard-grepping functions like `lgrep', `grep' or `igrep' \(or some wrappers around it) should be used!" :group 'ecb-directories :group 'ecb-sources :type 'function) (defcustom ecb-grep-recursive-function (cond ((fboundp 'rgrep) 'rgrep) ((fboundp 'igrep-find) 'igrep-find) (t 'grep-find)) "*Function used for performing a recursive grep. For more Details see option `ecb-grep-function' and replace \"grep\" with \"recursive grep\". Normally one of the standard-grepping functions like `rgrep', `grep-find' or `igrep-find' \(or some wrappers around it) should be used!" :group 'ecb-directories :group 'ecb-sources :type 'function) (defcustom ecb-after-directory-change-hook nil "*Hook which run directly after the selected directory has changed. This means not onyl after a click onto a directory in the directory-window of ECB but it means this hook runs always when the current directory changes regardless of the trigger of this change. So for example it runs also when you just switches from one buffer to another via `switch-to-buffer' or `switch-to-buffer-other-window' and the directory of these filebuffers is different but only when auto-synchronizing of the ECB-windows is on (see `ecb-basic-buffer-sync'). It runs not when switching between buffers and the associated files reside in the same directory. Each function added to this hook will be called with two arguments: The directory which was current _before_ the directory-change-trigger and the directory which was now the current \(i.e. after the trigger). Example: If you switch from a filebuffer \"~/.emacs\" to a filebuffer \"/tmp/test.txt\" then the functions of this hook will be called with the two arguments \"~\" and \"/tmp\"." :group 'ecb-directories :type 'hook) (defcustom ecb-sources-perform-read-only-check 'unless-remote "*Check if source-items in the tree-buffers are read-only. If a sourcefile is read-only then it will be displayed with that face set in the option `ecb-source-read-only-face'. Because this check can be take some time if files are used via a mounted net-drive ECB performs this check stealthy \(see `ecb-stealthy-tasks-delay') so normally there should no performance-decrease or additional waiting-time for the user. But to get sure this option offers three choices: t, 'unless-remote and nil. See `ecb-prescan-directories-for-emptyness' for an explanation for these three choices. The option `ecb-read-only-check-exclude-regexps' offers are more fine granularity to exclude the sources of certain directories from the read-only state-check." :group 'ecb-sources :group 'ecb-directories :group 'ecb-most-important :type '(radio (const :tag "Switch on" :value t) (const :tag "Switch off for remote directories" :value unless-remote) (const :tag "Switch off completely" :value nil))) (defcustom ecb-read-only-check-exclude-regexps nil "*Which directories should be excluded from the sources-read-only-check. If a directory matches any of the regexps of this option their sources will not be checked if they are writable - This option takes only effect if `ecb-sources-perform-read-only-check' is not nil." :group 'ecb-sources :group 'ecb-directories :type '(repeat (regexp :tag "Directory-regexp"))) (defsubst ecb-sources-read-only-check-p (dir) "Return not nil if the sources of DIR should be checked for read-only-state. The check is performed according to the settings in the options `ecb-sources-perform-read-only-check' and `ecb-read-only-check-exclude-regexps'." (and (or (equal t ecb-sources-perform-read-only-check) (and (equal 'unless-remote ecb-sources-perform-read-only-check) (not (ecb-remote-path dir)))) (not (ecb-match-regexp-list dir ecb-read-only-check-exclude-regexps)))) (defcustom ecb-directories-buffer-name " *ECB Directories*" "*Name of the ECB directory buffer. Because it is not a normal buffer for editing you should enclose the name with stars, e.g. \"*ECB Directories*\". If it is necessary for you you can get emacs-lisp access to the buffer-object of the ECB-directory-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-directories :type 'string) (defcustom ecb-excluded-directories-regexps '("^\\(CVS\\|\\.[^xX]*\\)$") "*Directories that should not be included in the directories list. The value of this variable should be a list of regular expressions." :group 'ecb-directories :type '(repeat (regexp :tag "Directory-regexp"))) (defsubst ecb-check-dir-exclude (dir) (ecb-match-regexp-list dir ecb-excluded-directories-regexps)) (defcustom ecb-auto-expand-directory-tree 'best "*Automatically expand the directory tree to the current source file. There are three options: - best: Expand the best-matching source-path - first: Expand the first matching source-path - nil: Do not automatically expand the directory tree." :group 'ecb-directories :type '(radio (const :tag "Best matching" :value best) (const :tag "First matching" :value first) (const :tag "No auto. expand" :value nil))) (defcustom ecb-sources-buffer-name " *ECB Sources*" "*Name of the ECB sources buffer. Because it is not a normal buffer for editing you should enclose the name with stars, e.g. \"*ECB Sources*\". If it is necessary for you you can get emacs-lisp access to the buffer-object of the ECB-sources-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-sources :type 'string) (defcustom ecb-sources-show-node-info '(if-too-long . name) "*When to display which node-info in the sources-buffer. Define which node info should be displayed after moving the mouse over a node \(or after a shift click onto the node) in the sources-buffer. You can define \"when\" a node-info should be displayed: See `ecb-directories-show-node-info' for the possible choices. You can define \"which\" info should be displayed: - name: Only the full node-name is displayed. - file-info: File infos for this file are displayed. - file-info-full: Fill infos incl. full path for this file are displayed. Do NOT set this option directly via setq but use always customize!" :group 'ecb-sources :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 "File info" :value file-info) (const :tag "File info \(full path)" :value file-info-full)))) (defcustom ecb-sources-exclude-cvsignore nil "*Specify if files contained in a .cvsignore should be excluded. Value is a list of regular expressions or nil. If you want to exclude files listed in a .cvsignore-file from being displayed in the ecb-sources-buffer then specify a regexp for such a directory. If you want to exclude the contents of .cvsignore-files for every directory then you should add one regexp \".*\" which matches every directory. If you never want to exclude the contents of .cvsignore-files then set this option to nil. This is the default." :group 'ecb-sources :group 'ecb-directories :type '(repeat (regexp :tag "Directory-regexp"))) (defcustom ecb-source-file-regexps '((".*" . (("\\(^\\(\\.\\|#\\)\\|\\(~$\\|\\.\\(elc\\|obj\\|o\\|class\\|lib\\|dll\\|a\\|so\\|cache\\)$\\)\\)") ("^\\.\\(emacs\\|gnus\\)$")))) "*Specifies which files are shown as source files. This is done on directory-base, which means for each directory-regexp the files to display can be specified. If more than one directory-regexp matches the current selected directory then always the first one \(and its related file-exclude/include-regexps) is used! If no directory-regexp matches then all files are displayed for the currently selected directory. Important note: It is recommended that the *LAST* element of this list should contain an always matching directory-regexp \(\".*\")! So the value of this option is a list of cons-cells where the car is a directory regexp and the cdr is a 2 element list where the first element is a list of exclude regexps and the second element is a list of include regexps. A file is displayed in the sources-buffer of ECB iff: The file does not match any of the exclude regexps OR the file matches at least one of the include regexps. But regardless of the value of this option a file F is never displayed in the sources-buffer if the directory matches `ecb-sources-exclude-cvsignore' and the directory contains a file .cvsignore which contains F as an entry! There are three predefined and useful combinations of an exclude and include regexp: - All files - All, but no backup, object, lib or ini-files \(except .emacs and .gnus). This means all files except those starting with \".\", \"#\" or ending with \"~\", \".elc\", \".obj\", \".o\", \".lib\", \".dll\", \".a\", \".so\". (but including .emacs and .gnus) - Common source file types (.c, .java etc.) In addition to these predefined values a custom exclude and include combination can be defined. Here each list must at least contain one regexp - this can be a least the empty regexp \"\"! Tips for the directory- and file-regexps: \"$^\" matches no files/directories, \".*\" matches all files/directories." :group 'ecb-sources :group 'ecb-most-important :type '(repeat (cons :tag "Directory file-spec" (regexp :tag "Directory regexp") (choice :tag "Files to display" :menu-tag "Files to display" (const :tag "All files" :value (("") (""))) (const :tag "All, but no backups, objects, etc..." :value (("\\(^\\(\\.\\|#\\)\\|\\(~$\\|\\.\\(elc\\|obj\\|o\\|class\\|lib\\|dll\\|a\\|so\\|cache\\)$\\)\\)") ("^\\.\\(x?emacs\\|gnus\\)$"))) (const :tag "Common source file types" :value (("") ("\\(\\(M\\|m\\)akefile\\|.*\\.\\(java\\|el\\|c\\|cc\\|h\\|hh\\|txt\\|html\\|texi\\|info\\|bnf\\)\\)$"))) (list :tag "Custom" (repeat (regexp :tag "Exclude regexp" :value "")) (repeat (regexp :tag "Include regexp" :value ""))))))) (defcustom ecb-show-source-file-extension t "*Show the file extension of source files." :group 'ecb-sources :type 'boolean) (defcustom ecb-sources-sort-method 'name "*Defines how the source files are sorted. - 'name: Sorting by name. - 'extension: Sorting first by extension and then by name. - nil: No sorting, means source files are displayed in the sequence returned by `directory-files' \(called without sorting). See also `ecb-sources-sort-ignore-case'." :group 'ecb-sources :type '(radio (const :tag "By name" :value name) (const :tag "By extension" :value extension) (const :tag "No sorting" :value nil))) (defcustom ecb-sources-sort-ignore-case t "*Ignore case for sorting the source-files of the Sources-buffer. See also `ecb-sources-sort-method'." :group 'ecb-sources :type 'boolean) (defcustom ecb-history-buffer-name " *ECB History*" "*Name of the ECB history buffer. Because it is not a normal buffer for editing you should enclose the name with stars, e.g. \"*ECB History*\". If it is necessary for you you can get emacs-lisp access to the buffer-object of the ECB-history-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-history :type 'string) (defcustom ecb-history-exclude-file-regexps '("TAGS$" "semantic\\.cache$") "*List of regexps which exclude source-files from being historized. Be aware that each always full filenames \(ie. incl. full path) are matched against these regexps! Therefore be carefore with regexps beginning with ^!" :group 'ecb-history :type '(repeat (regexp :tag "Source-regexp"))) (defsubst ecb-check-filename-for-history-exclude (filename) (ecb-match-regexp-list filename ecb-history-exclude-file-regexps)) (defcustom ecb-history-show-node-info '(always . name-path) "*When to display which node-info in the history-buffer. Define which node info should be displayed after moving the mouse over a node \(or after a shift click onto the node) in the history-buffer. You can define \"when\" a node-info should be displayed: See `ecb-directories-show-node-info' for the possible choices. You can define \"which\" info should be displayed: - name: Only the full node-name is displayed. - path: The full-path of the node is displayed. - name-path: The full node-name and the full-path is displayed. Do NOT set this option directly via setq but use always customize!" :group 'ecb-history :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 path" :value path) (const :tag "Node-name \(Full path)" :value name-path)))) (defcustom ecb-history-make-buckets 'directory-with-source-path "*Bucketize the entries of the history-buffer. There are several options how the bucketizing should be done: - 'never: No bucketizing at all, ie. all entries of the history-buffer we be displayed flat. - 'directory: All entries with related filesources residing in the same directory will be contained in a bucket named with that directory. - 'directory-with-source-path: Same as 'directory but the best matching source-path of the directory-window \(see `ecb-source-path') substituts the matching part of the directory with its alias \(if there is any set). For this a special face is used \(see `ecb-history-bucket-node-dir-soure-path-face'). - 'mode: All entries with related buffers have the same major-mode will be contained in a bucket named with that major-mode - 'extension: All entries with related filesources having the same extension will be contained in a bucket named with that extension If the value is a list of regular expressions then all entries where the buffername matches the same regular expression will be contained in one bucket. If the value is nil then this is interpreted as an empty list of regular expressions! The default value is 'directory." :group 'ecb-history :initialize 'custom-initialize-default :set (function (lambda (symbol value) (set symbol value) (when (and (boundp 'ecb-minor-mode) ecb-minor-mode) (ecb-exec-in-window ecb-history-buffer-name (ecb-add-buffers-to-history-new))))) :type '(radio (const :tag "Never" :value never) (const :tag "By directory" :value directory) (const :tag "By directory with source-path" :value directory-with-source-path) (const :tag "By major-mode" :value mode) (const :tag "By file-extension" :value extension) (repeat :tag "By regexps" (regexp :tag "A bucket regexp")))) (defcustom ecb-history-stick-indirect-buffers-to-basebuffer t "*Stick all indirect-buffers as subnodes to their base-buffer. If nil then indirect-buffers are treated as non-indirect-buffers and sorted into the history-buffer-sequence according to the setting of `ecb-history-sort-method'. If not nil then indirect-buffers are always sticked to their base-buffer, ie. the base-buffer is displayed as expandable node with all its indirect-buffers as children-nodes, so the history looks like: \[-] | `- " :group 'ecb-history :initialize 'custom-initialize-default :set (function (lambda (symbol value) (set symbol value) (when (and (boundp 'ecb-minor-mode) ecb-minor-mode) (ecb-exec-in-window ecb-history-buffer-name (ecb-add-buffers-to-history-new))))) :type 'boolean) (defcustom ecb-history-sort-method 'name "*Defines how the entries in the history-buffer are sorted. - 'name: Sorting by name. - 'extension: Sorting first by extension and then by name. - nil: No sorting, means the most recently used buffers are on the top of the history and the seldom used buffers at the bottom. See also `ecb-history-sort-ignore-case'. If the history is bucketized \(see `ecb-history-make-buckets') then this sorting applies to the sorting within each bucket." :group 'ecb-history :initialize 'custom-initialize-default :set (function (lambda (symbol value) (set symbol value) (when (and (boundp 'ecb-minor-mode) ecb-minor-mode) (ecb-exec-in-window ecb-history-buffer-name (ecb-add-buffers-to-history-new))))) :type '(radio (const :tag "By name" :value name) (const :tag "By extension" :value extension) (const :tag "No sorting" :value nil))) (defcustom ecb-history-sort-ignore-case t "*Ignore case for sorting the history-entries. See also `ecb-history-sort-method'." :group 'ecb-history :initialize 'custom-initialize-default :set (function (lambda (symbol value) (set symbol value) (when (and (boundp 'ecb-minor-mode) ecb-minor-mode) (ecb-exec-in-window ecb-history-buffer-name (ecb-add-buffers-to-history-new))))) :type 'boolean) (defcustom ecb-kill-buffer-clears-history nil "*Define if `kill-buffer' should also clear the history. There are three options: - auto: Removes automatically the corresponding history-entry after the buffer has been killed. - ask: Asks, if the history-entry should be removed after the kill. - nil: `kill-buffer' does not affect the history \(this is the default)." :group 'ecb-history :type '(radio (const :tag "Remove history entry automatically" :value auto) (const :tag "Ask if history entry should be removed" :value ask) (const :tag "Do not clear the history" :value nil))) (defcustom ecb-directories-menu-user-extension '(("Version Control" (ecb-dir-popup-cvs-status "CVS Status" ) (ecb-dir-popup-cvs-examine "CVS Examine") (ecb-dir-popup-cvs-update "CVS Update"))) "*Static user extensions for the popup-menu of the directories buffer. Value is a list of elements of the following type: Each element defines a new menu-entry and is either: a) Menu-command: A list containing two sub-elements, whereas the first is the function \(a function symbol) being called if the menu-entry is selected and the second is the name of the menu-entry. b) Separator: A one-element-list and the element is the string \"---\": Then a non-selectable menu-separator is displayed. c) Submenu: A list where the first element is the title of the submenu displayed in the main-menu and all other elements are either menu-commands \(see a) or separators \(see b) or another submenu \(see c). This allows deep nested menu-submenu-structures. Currently a level of 4 is allowed but in general there could be an infinite depth of nesting but it makes no sense - if possible at all - to define infinite nested defcustom-types. So there is a limit of 4 levels but tis is not a hard limit: Just increase the value of the `ecb-max-submenu-depth' *BEFORE* first loading ECB! The function of a menu-command must follow the following guidelines: Such a function must be defined with the macro `tree-buffer-defpopup-command! This macro defines a new popup-command whereas the newly defined command gets one argument NODE. See the docstring of `tree-buffer-defpopup-command' for further details. Example for the definition of such a popupmenu-command: \(tree-buffer-defpopup-command ecb-my-special-dir-popup-function \"Prints the name of the directory of the node under point.\" \(let \(\(node-data=dir \(tree-node->data node))) \(message \"Dir under node: %s\" node-data=dir))) Per default the static user-extensions are added at the beginning of the built-in menu-entries of `ecb-directories-menu' but the whole menu can be re-arranged with `ecb-directories-menu-sorter'. These menu-extensions are static. A dynamic menu-extension can be achieved via `ecb-directories-menu-user-extension-function'." :group 'ecb-directories :type (ecb-create-menu-user-ext-type 1 ecb-max-submenu-depth)) (defcustom ecb-directories-menu-user-extension-function 'ignore "*Dynamic user extensions for the popup-menu of the directories buffer. A function which has to return a list in the same format like the option `ecb-directories-menu-user-extension'. This function is called when the user opens the popup-menu for the directories buffer. If no dynamically evaluated menu-extensions should be added to the directories-buffer the function has to return nil. Therefore the default-value of this option is `ignore'. Per default the dynamic user-extensions are added in front of the static extensions of `ecb-directories-menu-user-extension' but the whole menu can be re-arranged with `ecb-directories-menu-sorter'." :group 'ecb-directories :type 'function) (defcustom ecb-sources-menu-user-extension '(("Version control" (ecb-file-popup-ediff-revision "Ediff against revision") ("---") (ecb-file-popup-vc-next-action "Check In/Out") (ecb-file-popup-vc-log "Revision history") (ecb-file-popup-vc-annotate "Annotate") (ecb-file-popup-vc-diff "Diff against last version") ("---") (ecb-file-popup-vc-refresh-file "Recompute state for file") (ecb-file-popup-vc-refresh-dir "Recompute state for whole dir"))) "*Static user extensions for the popup-menu of the sources buffer. For further explanations see `ecb-directories-menu-user-extension'. The node-argument of a menu-function contains as data the source for which the popup-menu has been opened. Use always `ecb-source-get-*' to extract whatever you need from the node-data. E.g. use `ecb-source-get-filename' to get the full filename of the source of the node. Per default the static user-extensions are added at the beginning of the built-in menu-entries of `ecb-sources-menu' but the whole menu can be re-arranged with `ecb-sources-menu-sorter'." :group 'ecb-sources :type (ecb-create-menu-user-ext-type 1 ecb-max-submenu-depth)) (defcustom ecb-sources-menu-user-extension-function 'ignore "*Dynamic user extensions for the popup-menu of the sources buffer. A function which has to return a list in the same format like the option `ecb-sources-menu-user-extension'. This function is called when the user opens the popup-menu for the sources buffer. If no dynamically evaluated menu-extensions should be added to the sources-buffer the function has to return nil. Therefore the default-value of this option is `ignore'. Per default the dynamic user-extensions are added in front of the static extensions of `ecb-sources-menu-user-extension' but the whole menu can be re-arranged with `ecb-sources-menu-sorter'." :group 'ecb-sources :type 'function) (defcustom ecb-history-menu-user-extension '(("Version control" (ecb-file-popup-ediff-revision "Ediff against revision") ("---") (ecb-file-popup-vc-next-action "Check In/Out") (ecb-file-popup-vc-log "Revision history") (ecb-file-popup-vc-annotate "Annotate") (ecb-file-popup-vc-diff "Diff against last version") ("---") (ecb-file-popup-vc-refresh-file "Recompute state for file") (ecb-file-popup-vc-refresh-all-files "Recompute state for whole history"))) "*Static user extensions for the popup-menu of the history buffer. For further explanations see `ecb-directories-menu-user-extension'. The node-argument of a menu-function contains as data a cons: car is the filename of the source for which the popup-menu has been opened. cdr is the related buffer-name; but be careful, because the node can point to a dead buffer (see `ecb-kill-buffer-clears-history'). Use always `ecb-source-get-*' to extract whatever you need from the node-data. E.g. use `ecb-source-get-filename' to get the full filename of the source of the node and use `ecb-source-get-buffername' or `ecb-source-get-buffer' to get the buffername rsp. the buffer-object. Per default the static user-extensions are added at the beginning of the built-in menu-entries of `ecb-history-menu' but the whole menu can be re-arranged with `ecb-history-menu-sorter'." :group 'ecb-history :type (ecb-create-menu-user-ext-type 1 ecb-max-submenu-depth)) (defcustom ecb-history-menu-user-extension-function 'ignore "*Dynamic user extensions for the popup-menu of the history buffer. A function which has to return a list in the same format like the option `ecb-history-menu-user-extension'. This function is called when the user opens the popup-menu for the history buffer. If no dynamically evaluated menu-extensions should be added to the history-buffer the function has to return nil. Therefore the default-value of this option is `ignore'. Per default the dynamic user-extensions are added in front of the static extensions of `ecb-history-menu-user-extension' but the whole menu can be re-arranged with `ecb-history-menu-sorter'." :group 'ecb-history :type 'function) (defcustom ecb-directories-menu-sorter nil "*Function which re-sorts the menu-entries of the directories buffer. If a function then this function is called to re-arrange the menu-entries of the combined menu-entries of the user-menu-extensions of `ecb-directories-menu-user-extension' and the built-in-menu `ecb-directories-menu'. If nil then no special sorting will be done and the user-extensions are placed in front of the built-in-entries. The function get one argument, a list of menu-entries. For the format of this argument see `ecb-directories-menu-user-extension'. The function must return a new list in the same format. Of course this function can not only re-arrange the entries but also delete entries or add new entries." :group 'ecb-directories :type '(choice :tag "Menu-sorter" :menu-tag "Menu-sorter" (const :tag "No special sorting" :value nil) (function :tag "Sort-function" :value identity))) (defcustom ecb-sources-menu-sorter nil "*Function which re-sorts the menu-entries of the directories buffer. If a function then this function is called to sort the menu-entries of the combined menu-entries of the user-menu-extensions of `ecb-sources-menu-user-extension' and the built-in-menu `ecb-sources-menu'. If nil then no special sorting will be done and the user-extensions are placed in front of the built-in-entries. For the guidelines for such a sorter-function see `ecb-directories-menu-sorter'." :group 'ecb-sources :type '(choice :tag "Menu-sorter" :menu-tag "Menu-sorter" (const :tag "No special sorting" :value nil) (function :tag "Sort-function" :value identity))) (defcustom ecb-history-menu-sorter nil "*Function which re-sorts the menu-entries of the directories buffer. If a function then this function is called to sort the menu-entries of the combined menu-entries of the user-menu-extensions of `ecb-history-menu-user-extension' and the built-in-menu `ecb-history-menu'. If nil then no special sorting will be done and the user-extensions are placed in front of the built-in-entries. For the guidelines for such a sorter-function see `ecb-directories-menu-sorter'." :group 'ecb-history :type '(choice :tag "Menu-sorter" :menu-tag "Menu-sorter" (const :tag "No special sorting" :value nil) (function :tag "Sort-function" :value identity))) (defcustom ecb-directories-buffer-after-create-hook nil "*Local hook running after the creation of the directories-buffer. Every function of this hook is called once without arguments direct after creating the directories-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 directories-buffer of ECB. The following keys must not be rebind in the directories-buffer: , and " :group 'ecb-directories :type 'hook) (defcustom ecb-sources-buffer-after-create-hook nil "*Local hook running after the creation of the sources-buffer. Every function of this hook is called once without arguments direct after creating the sources-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 sources-buffer of ECB." :group 'ecb-sources :type 'hook) (defcustom ecb-history-buffer-after-create-hook nil "*Local hook running after the creation of the history-buffer. Every function of this hook is called once without arguments direct after creating the history-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 history-buffer of ECB." :group 'ecb-history :type 'hook) (defvar ecb-vc-needed-vc-package-available-p (if (locate-library "vc-svn") t nil) "Not nil if that vc-package is installed needed by ECB to enable vc-support. If this variable is nil all other vc related options of ECB have no effect!") (defcustom ecb-vc-enable-support (and ecb-vc-needed-vc-package-available-p 'unless-remote) "*Enable support for version-control \(VC) systems. If on then in the directories-buffer \(if the value of the option `ecb-show-sources-in-directories-buffer' is on for current layout), the sources-buffer and the history-buffer all file-items are displayed with an appropriate icon in front of the item-name to indicate the VC-state of this item. If off then no version-control-state checking is done. Because this check can be take some time if files are managed by a not local Version-control-server ECB performs this check stealthy \(see `ecb-stealthy-tasks-delay') so normally there should no performance-decrease or additional waiting-time for the user. But to get sure this option offers three choices: t, 'unless-remote and nil. See the option `ecb-prescan-directories-for-emptyness' for an explanation for these three choices. The option `ecb-vc-directory-exclude-regexps' offers are more fine granularity to exclude the sources of certain directories from the VC-state-check. See `ecb-vc-supported-backends' how to customize the VC-support itself." :group 'ecb-version-control :group 'ecb-sources :group 'ecb-most-important :type '(radio (const :tag "Switch on" :value t) (const :tag "Switch off for remote directories" :value unless-remote) (const :tag "Switch off completely" :value nil))) (defcustom ecb-vc-directory-exclude-regexps nil "*Which directories should be excluded from VC-state-check. If a directory matches any of the regexps of this option the VC-state of its sources will not be checked - This option takes only effect if `ecb-vc-enable-support' is not nil." :group 'ecb-version-control :group 'ecb-sources :type '(repeat (regexp :tag "Directory-regexp"))) (defsubst ecb-vc-directory-should-be-checked-p (dir) "Return not nil if the sources of DIR should be checked for VC-state. The check is performed according to the settings in the options `ecb-vc-enable-support' and `ecb-vc-directory-should-be-checked-p'." (and dir ecb-vc-needed-vc-package-available-p (or (equal t ecb-vc-enable-support) (and (equal 'unless-remote ecb-vc-enable-support) (not (ecb-remote-path dir)))) (not (ecb-match-regexp-list dir ecb-vc-directory-exclude-regexps)))) (defcustom ecb-vc-state-mapping '((up-to-date . up-to-date) (edited . edited) (locally-modified . edited) (needs-patch . needs-patch) (needs-checkout . needs-patch) (needs-merge . needs-merge) (unlocked-changes . unlocked-changes) (added . added) (locally-added . added) (ignored . ignored) (unknown . unknown)) "*Mapping from VC-state-values of the backends to VC-state-values of ECB. ECB understands the following state-values: 'up-to-date The working file is unmodified with respect to the latest version on the current branch, and not locked. 'edited The working file has been locally edited by the user. If locking is used for the file, this state means that the current version is locked by the calling user. 'needs-patch The file has not been edited by the user, but there is a more recent version on the current branch stored in the master file. 'needs-merge The file has been edited by the user, and there is also a more recent version on the current branch stored in the master file. This state can only occur if locking is not used for the file. 'unlocked-changes The current version of the working file is not locked, but the working file has been changed with respect to that version. This state can only occur for files with locking\; it represents an erroneous condition that should be resolved by the user. 'added The working file has already been added/registered to the VC-system but not yet commited. 'ignored The version-control-system ignores this file \(e.g. because included in a .cvsignore-file in case of CVS). 'unknown The state of the file can not be retrieved\; probably the file is not under a version-control-system. All state-values a check-vc-state-function of `ecb-vc-supported-backends' can return must have a mapping to one of the ECB-state-values listed above. If for a certain backend-VC-state no mapping can be found then per default 'edited is assumed! The default value of this option maps already the possible returned state-values of `ecb-vc-state', `vc-state' and `vc-recompute-state' \(both GNU Emacs) and `vc-cvs-status' \(Xemacs) to the ECB-VC-state-values." :group 'ecb-version-control :group 'ecb-sources :initialize 'custom-initialize-default :set (function (lambda (sym val) (set sym val) (ecb-vc-cache-clear))) :type '(repeat (cons (choice :tag "Backend VC-state" :menu-tag "Backend VC-state" (const :tag "up-to-date" :value up-to-date) (const :tag "edited" :value edited) (const :tag "locally-modified" :value locally-modified) (const :tag "needs-patch" :value needs-patch) (const :tag "needs-checkout" :value needs-checkout) (const :tag "needs-merge" :value needs-merge) (const :tag "unlocked-changes" :value unlocked-changes) (const :tag "added" :value added) (const :tag "locally-added" :value locally-added) (const :tag "ignored" :value ignored) (const :tag "unknown" :value unknown) (symbol :tag "Other...")) (choice :tag "ECB VC-state" :menu-tag "ECB VC-state" (const :tag "up-to-date" :value up-to-date) (const :tag "edited" :value edited) (const :tag "needs-patch" :value needs-patch) (const :tag "needs-merge" :value needs-merge) (const :tag "unlocked-changes" :value unlocked-changes) (const :tag "added" :value added) (const :tag "ignored" :value ignored) (const :tag "unknown" :value unknown))))) ;; Remark why we need for ECB the information if a *directory* is managed by ;; a version-control system and why we can not use the file-based machanism ;; offered by vc*.el: ;; With only a file-based check we would need to check each file in each directory ;; when displaying the contents of a directory either in the sources-buffer or ;; in the directories buffer (when ecb-show-sources-in-directories-buffer is ;; not nil). With our directory-based machanism we check only if the directory ;; is in general managed by a version-control system and then we perform the ;; check for each file of a directory only in this case --> this is much ;; faster. ;; Therefore we can not use functions like `vc-backend' or `vc-registered'. (defcustom ecb-vc-supported-backends '((ecb-vc-dir-managed-by-CVS . ecb-vc-state) (ecb-vc-dir-managed-by-RCS . ecb-vc-state) (ecb-vc-dir-managed-by-SCCS . ecb-vc-state) (ecb-vc-dir-managed-by-SVN . ecb-vc-state) (ecb-vc-dir-managed-by-GIT . ecb-vc-state) (ecb-vc-dir-managed-by-BZR . ecb-vc-state) (ecb-vc-dir-managed-by-MTN . ecb-vc-state) (ecb-vc-dir-managed-by-HG . ecb-vc-state)) "*Define how to to identify the VC-backend and how to check the state. The value of this option is a list containing cons-cells where the car is a function which is called to identify the VC-backend for a DIRECTORY and the cdr is a function which is called to check the VC-state of the FILEs contained in DIRECTORY. Identify-backend-function: It gets a full directory-name as argument - always without ending slash \(rsp. backslash for native Windows-XEmacs) - and has to return a unique symbol for the VC-backend which manages that directory \(e.g. 'CVS for the CVS-system or 'RCS for the RCS-system) or nil if the file is not managed by a version-control-system. Check-vc-state-function: It gets a full filename \(ie. incl. the complete directory-part) and has to return a symbol which indicates the VC-state of that file. The possible returned values of such a check-vc-state-function have to be mapped with `ecb-vc-state-mapping' to the allowed ECB-VC-state values. ECB runs for a certain DIRECTORY all identify-backend-functions in that order they are listed in this option. For the first which returns a value unequal nil the associated check-state-function is used to retrieve the VC-state of all sourcefiles in that DIRECTORY. There is no need for the identify-backend-function or the check-vc-state-function to cache any state because ECB automatically caches internally all necessary informations for directories and files for best possible performance. To prepend ECB from checking the VC-state for any file set `ecb-vc-enable-support' to nil. Default value: Support for CVS, RCS, SCCS, Subversion, Git, Bazaar, Monotone and Mercurial. To identify the VC-backend the functions `ecb-vc-dir-managed-by-CVS', `ecb-vc-dir-managed-by-RCS' rsp. `ecb-vc-dir-managed-by-SCCS' rsp. `ecb-vc-dir-managed-by-SVN' rsp. `ecb-vc--dir-managed-by-GIT' rsp. `ecb-vc-dir-managed-by-BZR' rsp. `ecb-vc-dir-managed-by-MTN' rsp. `ecb-vc-dir-managed-by-HG' are used. For all eight backends the function `ecb-vc-state' of the VC-package is used by default \(which uses a heuristic and therefore faster but less accurate approach), but there is also `ecb-vc-recompute-state' available which is an alias for `vc-recompute-state' \(which returns accurate state-values by calling the backend which can be slow especialy for remote root-repositories!) Example: If `ecb-vc-recompute-state' \(to get real state-values not only heuristic ones) should be used to check the state for CVS-managed files and `ecb-vc-state' for all other backends then an element \(ecb-vc-dir-managed-by-CVS . ecb-vc-recompute-state) should be added at the beginning of this option." :group 'ecb-version-control :group 'ecb-sources :initialize 'custom-initialize-default :set (function (lambda (sym val) (set sym val) (ecb-vc-cache-clear))) :type '(repeat (cons :tag "Backend-identifier and state-checker" (choice :tag "Identify-backend-function" :menu-tag "Identify-backend-function" (const :tag "ecb-vc-dir-managed-by-CVS" :value ecb-vc-dir-managed-by-CVS) (const :tag "ecb-vc-dir-managed-by-RCS" :value ecb-vc-dir-managed-by-RCS) (const :tag "ecb-vc-dir-managed-by-SCCS" :value ecb-vc-dir-managed-by-SCCS) (const :tag "ecb-vc-dir-managed-by-SVN" :value ecb-vc-dir-managed-by-SVN) (const :tag "ecb-vc-dir-managed-by-GIT" :value ecb-vc-dir-managed-by-GIT) (const :tag "ecb-vc-dir-managed-by-BZR" :value ecb-vc-dir-managed-by-BZR) (const :tag "ecb-vc-dir-managed-by-MTN" :value ecb-vc-dir-managed-by-MTN) (const :tag "ecb-vc-dir-managed-by-HG" :value ecb-vc-dir-managed-by-HG) (function :tag "Any function")) (choice :tag "Check-state-function" :menu-tag "Check-state-function" (const :tag "ecb-vc-state (heuristic)" :value ecb-vc-state) (const :tag "ecb-vc-recompute-state (accurate)" :value ecb-vc-recompute-state) (function :tag "Any function"))))) ;;==================================================== ;; Internals ;;==================================================== ;; constants for the node-types - they should be all different! (defconst ecb-directories-nodetype-directory 100) (defconst ecb-directories-nodetype-sourcefile 200) (defconst ecb-directories-nodetype-sourcepath 300) (defconst ecb-sources-nodetype-sourcefile 400) (defconst ecb-history-nodetype-bucket 500) (defconst ecb-history-nodetype-filebuffer 600) (defconst ecb-history-nodetype-indirect-filebuffer 700) ;; accessors for the FILES-AND-SUBDIRS-cache (defun ecb-files-and-subdirs-cache-add (dir cached-value) "Add the files and subdirs of DIR to the cache." (ecb-multicache-put-value 'ecb-filename-cache dir 'FILES-AND-SUBDIRS cached-value)) (defun ecb-files-and-subdirs-cache-get (dir) "Get the files and subdirs of DIR from the cache. Nil if not cached." (ecb-multicache-get-value 'ecb-filename-cache dir 'FILES-AND-SUBDIRS)) (defun ecb-files-and-subdirs-cache-remove (dir) "Remove DIR from the cache." (ecb-multicache-clear-value 'ecb-filename-cache dir 'FILES-AND-SUBDIRS)) (defun ecb-files-and-subdirs-cache-clear () "Clear the whole FILES-AND-SUBDIRS-cache." (ecb-multicache-clear-subcache 'ecb-filename-cache 'FILES-AND-SUBDIRS)) (defun ecb-files-and-subdirs-cache-dump (&optional no-nil-value) "Dump the whole FILES-AND-SUBDIRS-cache in another window. If NO-NIL-VALUE is not nil then these cache-entries are not dumped. This command is not intended for end-users of ECB." (interactive "P") (ecb-multicache-print-subcache 'ecb-filename-cache 'FILES-AND-SUBDIRS no-nil-value)) ;; accessors for the EMPTY-DIR-P-cache (defun ecb-directory-empty-cache-add (dir cached-value) "Add information if DIR is empty or not to the cache." (ecb-multicache-put-value 'ecb-filename-cache dir 'EMPTY-DIR-P cached-value)) (defun ecb-directory-empty-cache-get (dir) "get information if DIR is empty or not from the cache." (ecb-multicache-get-value 'ecb-filename-cache dir 'EMPTY-DIR-P)) (defun ecb-directory-empty-cache-remove (dir) "Remove DIR from the EMPTY-DIR-P-cache." (ecb-multicache-clear-value 'ecb-filename-cache dir 'EMPTY-DIR-P)) (defun ecb-directory-empty-cache-remove-all (dir) "Remove DIR and all its suddirs from the EMPTY-DIR-P-cache." (ecb-directory-empty-cache-remove dir) ;; now we remove the subdirs (save-match-data (ecb-multicache-mapsubcache 'ecb-filename-cache 'EMPTY-DIR-P (function (lambda (key old-value) (if (string-match (concat "^" (regexp-quote dir) ".+") key) ;; the directory-key matches DIR so its a cache ;; subdirectory of DIR so we return nil ==> in fact we ;; remove this subdir from the empty-dir-p-cache nil ;; the directory-key doesn't match DIR so we just return ;; the old-value, which means in fact that nothing changes old-value)))))) (defun ecb-directory-empty-cache-clear () "Clear the whole EMPTY-DIR-P-cache." (ecb-multicache-clear-subcache 'ecb-filename-cache 'EMPTY-DIR-P)) (defun ecb-directory-empty-cache-dump (&optional no-nil-value) "Dump the whole EMPTY-DIR-P-cache. If NO-NIL-VALUE is not nil then these cache-entries are not dumped. This command is not intended for end-users of ECB." (interactive "P") (ecb-multicache-print-subcache 'ecb-filename-cache 'EMPTY-DIR-P no-nil-value)) ;; accessors for the SOURCES-cache (defun ecb-sources-cache-remove (dir) "Remove the cache-entry for DIR from the cache." (ecb-multicache-clear-value 'ecb-filename-cache dir 'SOURCES)) (defun ecb-sources-cache-add-full (dir cache-elem-full) "Add the full sources-cache CACHE-ELEM-FULL for DIR to the cache. If there is already a full cache-entry then replace it. CACHE-ELEM-FULL has to be a list as returned by `ecb-sources-cache-get-full'." (ecb-multicache-apply-to-value 'ecb-filename-cache dir 'SOURCES (function (lambda (old-cached-value) (if (consp old-cached-value) (progn (setcar old-cached-value cache-elem-full) old-cached-value) (cons cache-elem-full nil)))))) (defun ecb-sources-cache-add-filtered (dir cache-elem-filtered) "Add the filtered sources-cache CACHE-ELEM-FILTERED for DIR to the cache. If there is already a filtered cache-entry then replace it. CACHE-ELEM-FILTERED has to be a list as returned by `ecb-sources-cache-get-filtered'." (ecb-multicache-apply-to-value 'ecb-filename-cache dir 'SOURCES (function (lambda (old-cached-value) (if (consp old-cached-value) (progn (setcdr old-cached-value cache-elem-filtered) old-cached-value) (cons nil cache-elem-filtered)))))) (defun ecb-sources-cache-get-full (dir) "Return the full value of a cached-directory DIR, means the 3-element-list \(tree-buffer-root, tree-buffer-displayed-nodes, sources-buffer-string). If no cache-entry for DIR is available then nil is returned." (car (ecb-multicache-get-value 'ecb-filename-cache dir 'SOURCES))) (defun ecb-sources-cache-get-filtered (dir) "Return the filtered value of a cached-directory DIR, means the 4-element-list \(tree-buffer-root, tree-buffer-displayed-nodes, sources-buffer-string, filter-regexp). If no cache-entry for DIR is available then nil is returned." (cdr (ecb-multicache-get-value 'ecb-filename-cache dir 'SOURCES))) (defun ecb-sources-cache-clear () "Clear the whole SOURCES-cache." (ecb-multicache-clear-subcache 'ecb-filename-cache 'SOURCES)) (defun ecb-sources-cache-dump (&optional no-nil-value) "Dump the whole SOURCES-cache. If NO-NIL-VALUE is not nil then these cache-entries are not dumped. This command is not intended for end-users of ECB." (interactive "P") (ecb-multicache-print-subcache 'ecb-filename-cache 'SOURCES no-nil-value)) ;; accessors for the VC-cache (defun ecb-vc-cache-add-file (file state checked-buffer-names) (ecb-multicache-put-value 'ecb-filename-cache file 'VC (list state (ecb-subseq (current-time) 0 2) checked-buffer-names)) state) (defun ecb-vc-cache-add-dir (dir backend) (ecb-multicache-put-value 'ecb-filename-cache dir 'VC backend) backend) (defun ecb-vc-cache-get (file) (ecb-multicache-get-value 'ecb-filename-cache file 'VC)) (defun ecb-vc-cache-remove (file) "Remove FILE from the VC-cache." (ecb-multicache-clear-value 'ecb-filename-cache file 'VC)) (defun ecb-vc-cache-remove-files-of-dir (dir) "Remove all files contained in DIR from the VC-cache." (let* ((dir-sep-string (ecb-directory-sep-string dir)) (regexp (concat "^" (regexp-quote dir) (regexp-quote dir-sep-string) "[^" dir-sep-string "]+$"))) (save-match-data (ecb-multicache-mapsubcache 'ecb-filename-cache 'VC (function (lambda (key old-value) (if (and old-value (string-match regexp key)) ;; the filename-key has a VC-cache value and matches the ;; regexp above so its a cached file of DIR so we return ;; nil ==> in fact we remove this file from the VC-cache nil ;; the filename-key doesn't match the regexp above so we ;; just return the old-value, which means in fact that ;; nothing changes old-value))))))) (defun ecb-vc-cache-clear () "Clear the whole VC-cache." (ecb-multicache-clear-subcache 'ecb-filename-cache 'VC)) (defun ecb-vc-cache-dump (&optional no-nil-value) "Dump the whole VC-cache. If NO-NIL-VALUE is not nil then these cache-entries are not dumped. This command is not intended for end-users of ECB." (interactive "P") (ecb-multicache-print-subcache 'ecb-filename-cache 'VC no-nil-value)) ;; accessors for the REMOTE-PATH cache (defun ecb-remote-path-cache-add (path remote-path) "Add the value of REMOTE-PATH for PATH to the REMOTE-PATH-cache." (ecb-multicache-put-value 'ecb-filename-cache path 'REMOTE-PATH remote-path)) (defun ecb-remote-path-cache-get (path) "Return the cached value for PATH from the REMOTE-PATH-cache." (ecb-multicache-get-value 'ecb-filename-cache path 'REMOTE-PATH)) (defun ecb-remote-path-cache-dump (&optional no-nil-value) "Dump the whole REMOTE-PATH-cache. If NO-NIL-VALUE is not nil then these cache-entries are not dumped. This command is not intended for end-users of ECB." (interactive "P") (ecb-multicache-print-subcache 'ecb-filename-cache 'REMOTE-PATH no-nil-value)) ;; accessors for the HOST-ACCESSIBLE cache (defun ecb-host-accessible-cache-add (host accessible-p) "Add the value of ACCESSIBLE-P to the HOST-ACCESSIBLE-cache with key HOST." (ecb-multicache-put-value 'ecb-filename-cache host 'HOST-ACCESSIBLE (cons (current-time) accessible-p))) (defun ecb-host-accessible-cache-get (host valid-time) "Get the accessible-p value from the HOST-ACCESSIBLE-cache. If the cache entry is older then VALID-TIME \(in seconds) then it is discarded." (let ((value (ecb-multicache-get-value 'ecb-filename-cache host 'HOST-ACCESSIBLE))) (if (or (null value) (> (ecb-time-diff (current-time) (car value) t) valid-time)) ;; either not yet cached or outdated nil ;; return the valid cache-value (cdr value)))) (defun ecb-host-accessible-cache-dump (&optional no-nil-value) "Dump the whole HOST-ACCESSIBLE-cache. If NO-NIL-VALUE is not nil then these cache-entries are not dumped. This command is not intended for end-users of ECB." (interactive "P") (ecb-multicache-print-subcache 'ecb-filename-cache 'HOST-ACCESSIBLE no-nil-value)) ;; ---- end of filename-cache implementation ----------------------- (defun ecb-file-browser-initialize-caches () "Initialize the caches of the file-browser of ECB." (ecb-reset-history-filter) (ecb-filename-cache-init)) (defun ecb-file-browser-initialize (&optional no-caches) "Initialize the file-browser of ECB. If optional arg NO-CACHES is not nil then the caches used by the file-browser will not be initialized." (setq ecb-path-selected-directory nil ecb-path-selected-source nil) (unless no-caches (ecb-file-browser-initialize-caches))) (defun ecb-goto-window-directories () "Make the ECB-directories window the current window. If `ecb-use-speedbar-instead-native-tree-buffer' is 'dir then goto to the speedbar-window." (interactive) (or (ecb-goto-ecb-window ecb-directories-buffer-name) (and (equal ecb-use-speedbar-instead-native-tree-buffer 'dir) (ecb-goto-window-speedbar)))) (defun ecb-goto-window-sources () "Make the ECB-sources window the current window. If `ecb-use-speedbar-instead-native-tree-buffer' is 'source then goto to the speedbar-window." (interactive) (or (ecb-goto-ecb-window ecb-sources-buffer-name) (and (equal ecb-use-speedbar-instead-native-tree-buffer 'source) (ecb-goto-window-speedbar)))) (defun ecb-goto-window-history () "Make the ECB-history window the current window." (interactive) (ecb-goto-ecb-window ecb-history-buffer-name)) (defun ecb-maximize-window-directories () "Maximize the ECB-directories-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-directories-window is not visible in current layout." (interactive) (if (equal ecb-use-speedbar-instead-native-tree-buffer 'dir) (ecb-maximize-window-speedbar) (ecb-maximize-ecb-buffer ecb-directories-buffer-name t))) (defun ecb-maximize-window-sources () "Maximize the ECB-sources-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-sources-window is not visible in current layout." (interactive) (if (equal ecb-use-speedbar-instead-native-tree-buffer 'source) (ecb-maximize-window-speedbar) (ecb-maximize-ecb-buffer ecb-sources-buffer-name t))) (defun ecb-maximize-window-history () "Maximize the ECB-history-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-history-window is not visible in current layout." (interactive) (ecb-maximize-ecb-buffer ecb-history-buffer-name t)) (defecb-window-dedicator-to-ecb-buffer ecb-set-directories-buffer ecb-directories-buffer-name t "Display the Directories-buffer in current window and make window dedicated." (let ((set-directories-buffer (not (equal ecb-use-speedbar-instead-native-tree-buffer 'dir)))) ;; first we act depending on the value of ;; ecb-use-speedbar-instead-native-tree-buffer (when (not set-directories-buffer) (condition-case error-data (ecb-set-speedbar-buffer) ;; setting the speedbar buffer has failed so we set ;; set-directories-buffer to t ==> standard-directories-buffer is set! (error (message "%s" error-data) (setq set-directories-buffer t)))) ;; maybe we need to set the standard directories buffer: ;; - if ecb-use-speedbar-instead-native-tree-buffer is not 'dir or ;; - if setting the speedbar buffer has failed. (when set-directories-buffer (if (null ecb-use-speedbar-instead-native-tree-buffer) (ignore-errors (ecb-speedbar-deactivate))) (switch-to-buffer ecb-directories-buffer-name)))) (defecb-window-dedicator-to-ecb-buffer ecb-set-sources-buffer ecb-sources-buffer-name t "Display the Sources-buffer in current window and make window dedicated." (let ((set-sources-buffer (not (equal ecb-use-speedbar-instead-native-tree-buffer 'source)))) ;; first we act depending on the value of ;; ecb-use-speedbar-instead-native-tree-buffer (when (not set-sources-buffer) (condition-case error-data (ecb-set-speedbar-buffer) ;; setting the speedbar buffer has failed so we set ;; set-sources-buffer to t ==> standard-sources-buffer is set! (error (message "%s" error-data) (setq set-sources-buffer t)))) ;; maybe we need to set the standard sources buffer: ;; - if ecb-use-speedbar-instead-native-tree-buffer is not 'source or ;; - if setting the speedbar buffer has failed. (when set-sources-buffer (if (null ecb-use-speedbar-instead-native-tree-buffer) (ignore-errors (ecb-speedbar-deactivate))) (switch-to-buffer ecb-sources-buffer-name)))) (defecb-window-dedicator-to-ecb-buffer ecb-set-history-buffer ecb-history-buffer-name t "Display the History-buffer in current window and make window dedicated." (switch-to-buffer ecb-history-buffer-name)) (defecb-autocontrol/sync-function ecb-basic-buffer-sync nil ecb-basic-buffer-sync nil "Synchronizing the basic tree-buffers of ECB. The basic ecb-buffers are the tree-buffers for drirectories, sources, history and methods. Under the following additional conditions some tasks are performed: - Current buffer is a file-buffer and either FORCE is not nil or the buffer is different from the source-file currently displayed in the ECB-tree-buffers: Synchronizing all basic tree-buffers \(directories, sources, history, methods) with the current buffer - Current buffer is a dired-buffer: Synchronizing the directory- and sources-tree-buffer if visible At the end the hooks in `ecb-basic-buffer-sync-hook' run." (when (and ecb-minor-mode (not (ecb-windows-all-hidden)) (ecb-point-in-edit-window-number)) (let* ((filename (ecb-buffer-file-name (current-buffer)))) (cond ( ;; synchronizing for real filesource-buffers and indirect ;; buffers which have a filesource-buffer as base-buffer (and filename (ecb-buffer-or-file-readable-p filename) (or force (not (equal (ecb-source-make filename (buffer-name)) (ecb-path-selected-source))))) ;; * KB: Problem: seems this little sleep is necessary because ;; otherwise jumping to certain markers in new opened files (e.g. ;; with next-error etc. ) doesn´t work correct. Can´t debug down ;; this mysterious thing! Regardless of the size of the file to ;; load, this 0.1 fraction of a sec is enough! ;; * KB: With current ECB implementation this sit-for seems not ;; longer necessary, it works with every Emacs version correct. ;; Therefore i comment out the sit-for until this error occurs ;; again. ;; (sit-for 0.1) ;; if the file is not located in any of the paths in ;; `ecb-source-path' or in the paths returned from ;; `ecb-source-path-functions' we must at least add the new ;; source path temporally to our paths. But the user has also ;; the choice to save it for future sessions too. (if (null (ecb-matching-source-paths filename)) (let* ((norm-filename (ecb-fix-filename filename)) (remote-path (ecb-remote-path norm-filename)) (source-path (if (car ecb-add-path-for-not-matching-files) ;; we always add the only the root ;; as source-path (if remote-path ;; for a remote-path we add the ;; host+ the root of the host (concat (car remote-path) "/") ;; filename is a local-path (if (= (aref norm-filename 0) ?/) ;; for Unix-style-path we add the ;; root-dir (substring norm-filename 0 1) ;; for win32-style-path we add ;; the drive; because ;; `ecb-fix-filename' also ;; converts cygwin-path-style ;; to win32-path-style here ;; also the drive is added. (substring norm-filename 0 2))) ;; add the full directory as source-path (ecb-file-name-directory norm-filename)))) (ecb-add-source-path source-path (ecb-fix-filename source-path) (not (cdr ecb-add-path-for-not-matching-files))))) ;; now we can be sure that a matching source-path exists ;; Klaus: The explicit update of the directories buffer is not ;; necessary because the sync with the current source is done by ;; `ecb-select-source'! ;; (ecb-update-directories-buffer) (ecb-path-selected-source-set filename (buffer-name)) (ecb-select-source force) (ecb-update-methods-buffer--internal 'scroll-to-begin) (setq ecb-major-mode-selected-source major-mode) ;; Klaus Berndl : is now be done at the ;; end of `ecb-rebuild-methods-buffer-with-tagcache' which is ;; called by `ecb-update-methods-buffer--internal'! ;; selected source has changed, therefore we must initialize ;; ecb-selected-tag again. (ecb-tag-sync 'force) ) ( ;; synchronizing for dired-mode (eq major-mode 'dired-mode) (ecb-set-selected-directory (or (and (stringp dired-directory) (ecb-file-exists-p dired-directory) dired-directory) (and (listp dired-directory) (car dired-directory))))) (t nil))) (run-hooks 'ecb-basic-buffer-sync-hook) )) (defun ecb-expand-directory-tree (path node) "Expands the directory part so the node representing PATH is visible. Start with the childrens of NODE. Return not nil when an expansion has been done \(so normally the tree-buffer must be rebuild). Return nil if the expansion-state of the tree can show without any further expansion the node representing PATH." (catch 'exit (dolist (child (tree-node->children node)) (let ((data (tree-node->data child))) (when (and (>= (length path) (length data)) (ecb-string= (substring path 0 (length data)) data) (or (= (length path) (length data)) (eq (elt path (length data)) (ecb-directory-sep-char path)))) (let ((was-expanded (or (not (tree-node->expandable child)) (tree-node->expanded child)))) (setf (tree-node->expanded child) t) (ecb-update-directory-node child) (throw 'exit (or (when (> (length path) (length data)) (ecb-expand-directory-tree path child)) (not was-expanded))))))))) (defun ecb-check-directory-for-caching (dir number-of-contents) "Return not nil if DIR matches not any regexp of the option `ecb-cache-directory-contents-not' but matches at least one regexp in `ecb-cache-directory-contents' and NUMBER-OF-CONTENTS is greater then the related threshold." (and (not (catch 'exit (dolist (elem ecb-cache-directory-contents-not) (let ((case-fold-search t)) (save-match-data (if (string-match (car elem) dir) (throw 'exit (car elem)))) nil)))) (catch 'exit (dolist (elem ecb-cache-directory-contents) (let ((case-fold-search t)) (save-match-data (if (and (string-match (car elem) dir) (> number-of-contents (cdr elem))) (throw 'exit (car elem)))) nil))))) (defun ecb-check-directory-for-source-regexps (dir) "Return the related source-exclude-include-regexps of `ecb-source-file-regexps' if DIR matches any directory-regexp in `ecb-source-file-regexps'." (ecb-match-regexp-list dir ecb-source-file-regexps 'car 'cdr)) (defun ecb-files-from-cvsignore (dir) "Return an expanded list of filenames which are excluded by the .cvsignore file in current directory." (let ((cvsignore-content (ecb-file-content-as-string (ecb-expand-file-name ".cvsignore" dir))) (files nil)) (when cvsignore-content (dolist (f (split-string cvsignore-content)) (setq files (append (ecb-directory-files dir nil (wildcard-to-regexp f) t) files))) files))) (defun ecb-check-directory-for-cvsignore-exclude (dir) "Return not nil if DIR matches a regexp in `ecb-sources-exclude-cvsignore'." (ecb-match-regexp-list dir ecb-sources-exclude-cvsignore)) (defun ecb-get-sources-sort-function (sort-method &optional ignore-case) "According to SORT-METHOD \(which can either be 'name, 'extension or nil) and IGNORE-CASE return a function which can be used as argument for `sort'." (case sort-method (name (function (lambda (a b) (ecb-string< a b ecb-sources-sort-ignore-case)))) (extension (function (lambda(a b) (let ((ext-a (ecb-file-name-extension a t)) (ext-b (ecb-file-name-extension b t))) (if (ecb-string= ext-a ext-b ecb-sources-sort-ignore-case) (ecb-string< a b ecb-sources-sort-ignore-case) (ecb-string< ext-a ext-b ecb-sources-sort-ignore-case)))))) (otherwise (function (lambda (a b) nil))))) (defun ecb-get-files-and-subdirs (dir) "Return a cons cell where car is a list of all files to display in DIR and cdr is a list of all subdirs to display in DIR. Both lists are sorted according to `ecb-sources-sort-method'." (or (ecb-files-and-subdirs-cache-get dir) ;; dir is not cached (let ((files (ecb-directory-files dir nil nil t)) (source-regexps (or (ecb-check-directory-for-source-regexps (ecb-fix-filename dir)) '(("") ("")))) (cvsignore-files (if (ecb-check-directory-for-cvsignore-exclude dir) (ecb-files-from-cvsignore dir))) sorted-files source-files subdirs cached-value) ;; if necessary sort FILES (setq sorted-files (if ecb-sources-sort-method (sort files (ecb-get-sources-sort-function ecb-sources-sort-method)) files)) ;; divide real files and subdirs. For really large directories (~ >= ;; 2000 entries) this is the performance-bottleneck in the ;; file-browser of ECB. (dolist (file sorted-files) (if (ecb-file-directory-p (ecb-fix-filename dir file)) (when (not (ecb-check-dir-exclude file)) ;; (when (not (ecb-file-accessible-directory-p file)) ;; (ecb-merge-face-into-text file ;; ecb-directory-not-accessible-face)) (setq subdirs (append subdirs (list file)))) (when (and (not (member file cvsignore-files)) (or (ecb-match-regexp-list file (cadr source-regexps)) (not (ecb-match-regexp-list file (car source-regexps))))) (setq source-files (append source-files (list file)))))) (setq cached-value (cons source-files subdirs)) ;; check if this directory must be cached (if (ecb-check-directory-for-caching dir (length sorted-files)) (ecb-files-and-subdirs-cache-add dir cached-value)) ;; return the result cached-value))) (defun ecb-update-sources-buffer (dir-before-update) "Updates the sources-buffer with all sources contained in `ecb-path-selected-directory' - the contents are either newly computed or come from the `ecb-sources-cache'. DIR-BEFORE-UPDATE is the directory which was selected before this update." ;; Here we add a cache-mechanism which caches for each path the node-tree ;; and the whole buffer-string of the sources-buffer. A cache-elem would be ;; removed from the cache if a directory is POWER-clicked in the directories ;; buffer because this is the only way to synchronize the sources-buffer ;; with the disk-contents of the clicked directory. This works because the ;; tree of the sources-buffer contains only not expandable nodes (see the ;; comment in `ecb-rebuild-methods-buffer-with-tagcache'). If we would ;; make the nodes in the Sources-buffer "expandable" this caching would not ;; work! (ecb-exec-in-window ecb-sources-buffer-name ;; if we have a filtered cache we must display it - otherwise we use the ;; full cache if there is any (let ((cache-elem (or (ecb-sources-cache-get-filtered ecb-path-selected-directory) (ecb-sources-cache-get-full ecb-path-selected-directory)))) (if cache-elem (progn (tree-buffer-set-root (nth 0 cache-elem)) (tree-buffer-update nil (cons (nth 2 cache-elem) (nth 1 cache-elem)))) (let ((new-tree (tree-node-new-root)) (old-children (tree-node->children (tree-buffer-get-root))) (new-cache-elem nil)) ;; building up the new files-tree (ecb-tree-node-add-files new-tree ecb-path-selected-directory (car (ecb-get-files-and-subdirs ecb-path-selected-directory)) ecb-sources-nodetype-sourcefile ecb-show-source-file-extension old-children t) ;; updating the buffer itself (tree-buffer-set-root new-tree) (tree-buffer-update) ;; check if the sources buffer for this directory must be ;; cached: If yes update the cache (when (ecb-check-directory-for-caching ecb-path-selected-directory (tree-buffer-number-of-displayed-nodes)) (setq new-cache-elem (list (tree-buffer-get-root) (tree-buffer-displayed-nodes-copy) (ecb-buffer-substring (point-min) (point-max)))) (ecb-sources-cache-add-full ecb-path-selected-directory new-cache-elem)))) (when (not (ecb-string= dir-before-update ecb-path-selected-directory)) (ecb-scroll-window (point-min) (point-min)))))) (defun ecb-sources-filter-by-ext (ext-str) "Filter the sources by extension EXT-STR." (if (= (length ext-str) 0) (ecb-apply-filter-to-sources-buffer "^[^.]+$" ;; matches only filenames with no extension "No ext.") (ecb-apply-filter-to-sources-buffer (format "\\.%s\\'" ext-str) (format "*.%s" ext-str)))) (tree-buffer-defpopup-command ecb-popup-sources-filter-by-ext "Filter the sources by extension by popup." (ecb-sources-filter-by-ext (read-string "Insert the filter-extension without leading dot: " (and node (ecb-file-name-extension (tree-node->data node)))))) (defun ecb-sources-filter-by-regexp (&optional regexp filter-display) "Filter history entries by REGEXP. If the first optional argument REGEXP is nil then it asks for a regexp. If second argument FILTER-DISPLAY is not nil then it is displayed in the modeline of the history-buffer for current regexp-filter. Otherwise the regexp itself." (let ((regexp-str (or regexp (read-string "Insert the filter-regexp: ")))) (if (> (length regexp-str) 0) (ecb-apply-filter-to-sources-buffer regexp-str filter-display)))) (tree-buffer-defpopup-command ecb-popup-sources-filter-by-regexp "Filter the sources by regexp by popup." (ecb-sources-filter-by-regexp)) (tree-buffer-defpopup-command ecb-popup-sources-filter-none "Remove any filter from the sources by popup." (ecb-apply-filter-to-sources-buffer nil)) (defun ecb-sources-filter () "Apply a filter to the sources-buffer to reduce the number of entries. So you get a better overlooking. There are three choices: - Filter by extension: Just insert the extension you want the Sources-buffer being filtered. Insert the extension without leading dot! - Filter by regexp: Insert the filter as regular expression. - No filter: This means to display an entry for every file in the current selected directory \(all except these filter already filtered out by `ecb-source-file-regexps' and `ecb-sources-exclude-cvsignore'). Such a filter is only applied to the current selected directory, i.e. each directory has its own filtered sources-buffer." (interactive) (let ((choice (ecb-query-string "Filter sources by:" '("extension" "regexp" "nothing")))) (cond ((ecb-string= choice "extension") (ecb-sources-filter-by-ext (read-string "Insert the filter-extension without leading dot: "))) ((ecb-string= choice "regexp") (ecb-sources-filter-by-regexp)) (t (ecb-apply-filter-to-sources-buffer nil))))) (defun ecb-sources-filter-modeline-prefix (buffer-name sel-dir sel-source) "Compute a mode-line prefix for the Sources-buffer so the current filter applied to the sources is displayed. This function is only for using by the option `ecb-mode-line-prefixes'." (let ((filtered-cache-elem (ecb-sources-cache-get-filtered sel-dir))) (if (null filtered-cache-elem) nil ;; no prefix if no filter (format "[Filter: %s]" (cdr (nth 3 filtered-cache-elem)))))) (defun ecb-apply-filter-to-sources-buffer (filter-regexp &optional filter-display) "Apply the regular expression FILTER-REGEXP to the files of `ecb-path-selected-directory' and display only the filtered files in the Sources-buffer. If FILTER-REGEXP is nil then any applied filter is removed and all files are displayed. Returns t if the filter has been applied otherwise nil. Returns 'window-not-visible if the ECB-sources-buffer is not visible." (prog1 (ecb-exec-in-window ecb-sources-buffer-name (if (or (null filter-regexp) (= (length filter-regexp) 0)) ;; no filtering (progn ;; remove the filtered cache by setting it to nil (ecb-sources-cache-add-filtered ecb-path-selected-directory nil) ;; update the sources buffer - because the filtered cache is nil ;; the full sources are displayed. (ecb-update-sources-buffer ecb-path-selected-directory) (tree-buffer-highlight-node-by-data/name (ecb-path-selected-source 'file)) nil) ;; apply the filter-regexp (let ((new-tree (tree-node-new-root)) (old-children (tree-node->children (tree-buffer-get-root))) (all-files (car (ecb-get-files-and-subdirs ecb-path-selected-directory))) (filtered-files nil)) (save-match-data (dolist (file all-files) (if (string-match filter-regexp file) (setq filtered-files (cons file filtered-files))))) (if (null filtered-files) (progn (ecb-apply-filter-to-sources-buffer nil) (message "ECB has not applied this filter because it would filter out all files!") nil) ;; building up the new files-tree (ecb-tree-node-add-files new-tree ecb-path-selected-directory (nreverse filtered-files) ecb-sources-nodetype-sourcefile ecb-show-source-file-extension old-children t) ;; updating the buffer itself (tree-buffer-set-root new-tree) (tree-buffer-update) (ecb-scroll-window (point-min) (point-min)) (tree-buffer-highlight-node-by-data/name (ecb-path-selected-source 'file)) ;; add the new filter to the cache, so the next call to ;; `ecb-update-sources-buffer' displays the filtered sources. (ecb-sources-cache-add-filtered ecb-path-selected-directory (list (tree-buffer-get-root) (tree-buffer-displayed-nodes-copy) (ecb-buffer-substring (point-min) (point-max)) (cons filter-regexp (or filter-display filter-regexp)))) t)))) ;; now we update the mode-lines so the current filter (can be no filter) is ;; displayed in the mode-line. See `ecb-sources-filter-modeline-prefix'. (ecb-mode-line-format))) ;; Klaus Berndl : the duplicates MUST be eliminated only ;; on path-basis and not of cons (path . alias)-basis, because ;; ecb-source-path-functions only return paths without alias ;; (setq ecb-source-path-functions ;; (list (lambda () ;; '("c:/Programme/emacs-23.1/site-lisp/package-development/ecb" ;; "c:/Programme/emacs-22.3" ;; "c:/Programme/emacs-23.1/site-lisp/package-development")))) ;; TODO: Klaus Berndl : should we add an option for ;; ignore-case for the duplicate-removing?! (defun ecb-normed-source-paths (&optional no-duplicates) "Return a normalized list of all source-paths. This is a list created from all elements of `ecb-source-path' and all source-paths created by `ecb-source-path-functions'. Each element is a cons whereas car is the normed and expanded pathname \(done by `ecb-fix-filename') and cdr is either the alias defined for this path \(see `ecb-source-path') or - if there is no alias defined - the path itself \(in this case car and cdr are equal). If NO-DUPLICATES is not nil then all duplicates in the paths-list are removed. An element is a duplicate if the car \(i.e. the normed and expaneded path) matches exactly the car of another element." (let ((res (mapcar (function (lambda (elem) (let* ((path (ecb-fix-filename (if (listp elem) (nth 0 elem) elem))) (alias (if (listp elem) (nth 1 elem) path))) (cons path alias)))) (append ecb-source-path (ecb-get-source-paths-from-functions) )))) (if no-duplicates (ecb-delete-duplicates res (function (lambda (l r) (ecb-string= (if (consp l) (car l) l) (if (consp r) (car r) r)) )) nil nil t t) res))) (defun ecb-matching-source-paths (path-to-match &optional sorted) "Return all source-paths of `ecb-source-path' which match PATH-TO-MATCH. If SORTED is not nil then the paths are sorted by descending length, means the longest path \(which is the best matching) is the first elem and the shortest path the last elem. Otherwise the matching paths are returned in that sequence they occur in `ecb-source-path'. Each matching path is a cons in the sense of `ecb-normed-source-paths'." (let* ((p-t-m (ecb-fix-filename path-to-match)) (normed-current-source-paths (ecb-normed-source-paths)) (matching-paths (delq nil (mapcar (lambda (elem) (save-match-data (if (string-match (concat "^" (regexp-quote (car elem))) p-t-m) elem))) normed-current-source-paths)))) (if (not sorted) matching-paths (sort matching-paths (function (lambda (lhs rhs) (> (length (car lhs)) (length (car rhs))))))))) (defun ecb-get-best-matching-source-path (path) "Return the best-matching source-path for PATH. It's either nil if no source-path matches or a cons in the sense of `ecb-normed-source-paths'." (car (ecb-matching-source-paths path t))) (defun ecb-set-selected-directory (path &optional force) "Set the contents of the ECB-directories and -sources buffer correct for the value of PATH. If PATH is equal to the value of `ecb-path-selected-directory' then nothing is done unless first optional argument FORCE is not nil." (let ((last-dir ecb-path-selected-directory)) (setq ecb-path-selected-directory (ecb-fix-filename path)) ;; if ecb-path-selected-directory has not changed then there is no need ;; to do anything here because neither the content of directory buffer ;; nor the content of the sources buffer can have been changed! (when (or force (not (ecb-string= last-dir ecb-path-selected-directory))) (when (or (not (ecb-show-sources-in-directories-buffer-p)) ecb-auto-expand-directory-tree) (ecb-exec-in-window ecb-directories-buffer-name (let (start was-expanded) (when ecb-auto-expand-directory-tree ;; Expand tree to show selected directory (setq start (if (equal ecb-auto-expand-directory-tree 'best) ;; If none of the source-paths in the buffer ;; `ecb-directories-buffer-name' matches then nil ;; otherwise the node of the best matching ;; source-path (let ((best-source-path (car (ecb-get-best-matching-source-path ecb-path-selected-directory)))) (if best-source-path (tree-buffer-search-displayed-node-list (function (lambda (node) (if (and (tree-buffer-node-data-equal-p (tree-node->data node) (ecb-fix-filename best-source-path)) ;; only nodes of level 0 (ie. with ;; parent == root) can be source-paths (eq (tree-buffer-get-root) (tree-node->parent node))) node)))))) ;; we start at the root node (tree-buffer-get-root))) (when (and (equal ecb-auto-expand-directory-tree 'best) start) (setq was-expanded (or (not (tree-node->expandable start)) (tree-node->expanded start))) ;; expand the best-match node itself (setf (tree-node->expanded start) t) ;; This function ensures a correct expandable-state of ;; start-node (ecb-update-directory-node start)) ;; start recursive expanding of either the best-matching node or ;; the root-node itself. (if (or (ecb-expand-directory-tree ecb-path-selected-directory (or start (tree-buffer-get-root))) (not was-expanded)) (tree-buffer-update) (tree-buffer-recenter start (selected-window)) ;; sometimes we do not need a full tree-buffer-update, even ;; when FORCE is not nil. But we have to restart the ;; directories-buffer stealthy-state. (and force (ecb-stealth-tasks-after-directories-update)))) ;; (ecb-expand-directory-tree ecb-path-selected-directory ;; (or start ;; (tree-buffer-get-root))) ;; (tree-buffer-update)) (when (not (ecb-show-sources-in-directories-buffer-p)) (tree-buffer-highlight-node-by-data/name ecb-path-selected-directory nil start))))) ;; now we update the sources buffer for `ecb-path-selected-directory' (ecb-update-sources-buffer last-dir) ;; now we run the hooks (run-hook-with-args 'ecb-after-directory-change-hook last-dir ecb-path-selected-directory) )) ;; set the default-directory of each tree-buffer to current selected ;; directory so we can open files via find-file from each tree-buffer. ;; is this necessary if neither dir.- nor sources-buffer-contents have been ;; changed? I think not but anyway, doesn't matter, costs are very low. (save-excursion (dolist (buf (ecb-ecb-buffer-registry-buffer-list)) (set-buffer buf) (setq default-directory (concat ecb-path-selected-directory (and (not (= (aref ecb-path-selected-directory (1- (length ecb-path-selected-directory))) (ecb-directory-sep-char ecb-path-selected-directory))) (ecb-directory-sep-string ecb-path-selected-directory)))))) ;; set the modelines of all visible tree-buffers new (ecb-mode-line-format)) (defun ecb-get-source-name (filename) "Returns the source name of a file." (let ((f (ecb-file-name-nondirectory filename))) (if ecb-show-source-file-extension f (ecb-file-name-sans-extension f)))) (defun ecb-select-source (&optional force) "Updates the directories, sources and history buffers to match the filename given. If FORCE is not nil then the update of the directories buffer is done even if current directory is equal to `ecb-path-selected-directory'." (ecb-set-selected-directory (ecb-file-name-directory (ecb-path-selected-source 'file)) force) ;; Update directory buffer (when (ecb-show-sources-in-directories-buffer-p) (ecb-exec-in-window ecb-directories-buffer-name (tree-buffer-highlight-node-by-data/name (ecb-path-selected-source 'file)))) ;; Update source buffer (ecb-exec-in-window ecb-sources-buffer-name (tree-buffer-highlight-node-by-data/name (ecb-path-selected-source 'file))) (ecb-add-buffers-to-history-new)) (defvar ecb-history-filter nil "A cons-cell where car is the filter-function and the cdr is a string how the current active filter should be displayed in the modeline of the History-buffer. The filter-function gets as arguments the buffername and the filename of an existing file-buffer and has to return not nil if for these data a history-entry should be added.") (defun ecb-reset-history-filter () "Reset the `ecb-history-filter' so all file-buffers are displayed." (setq ecb-history-filter (cons (function (lambda (buf file) t)) nil))) (defun ecb-history-filter-reset-p () (null (cdr ecb-history-filter))) (ecb-reset-history-filter) (defun ecb-indirect-buffers-of-buffer (&optional buffer-or-name) (let ((buffer (if (null buffer-or-name) (current-buffer) (if (and (bufferp buffer-or-name) (buffer-live-p buffer-or-name)) buffer-or-name (if (stringp buffer-or-name) (get-buffer buffer-or-name)))))) (delq nil (mapcar (function (lambda (buf) (if (equal buffer (buffer-base-buffer buf)) buf))) (buffer-list))))) ;; When a base-buffer of indirect-buffers is killed then automatically all ;; indirect-buffers are killed too by Emacs - for all these ind. buffers ;; kill-buffer-hook is called and therefore also this function ==> we must not ;; perform any special logic because the indirect-buffers nodes are always ;; removed. (defun ecb-history-kill-buffer-clear (curr-buf) "Does all necessary clearence when CURR-BUF is killed." (let* ((buffer-file (ecb-fix-filename (ecb-buffer-file-name curr-buf))) (node (if buffer-file (ecb-exec-in-window ecb-history-buffer-name (tree-buffer-find-displayed-node-by-data/name (ecb-source-make buffer-file curr-buf))))) (buffer-name-to-ignore-list-for-rebuild nil)) (when (tree-node-p node) (when (or (buffer-base-buffer curr-buf) ; indirect-buffers always! (equal ecb-kill-buffer-clears-history 'auto) (and (equal ecb-kill-buffer-clears-history 'ask) (y-or-n-p "Remove history entry for this buffer?"))) ;; we must do this even when the history is not visible!! ;; the history should be always up-to-date (with-current-buffer ecb-history-buffer-name (tree-buffer-remove-node node)) ;; if we have removed a node then we must ignore the related buffer ;; when rebuilding the history - otherwise the node would be added ;; again. This is because the history is rebuild before ;; kill-buffer-hook has been finished and therefore the killed buffer ;; is still in (buffer-list) which is used by ;; `ecb-add-buffers-to-history-new'! (setq buffer-name-to-ignore-list-for-rebuild (list (buffer-name curr-buf)))) (ecb-add-buffers-to-history-new nil buffer-name-to-ignore-list-for-rebuild)))) (defun ecb-add-all-buffers-to-history () "Add all current file-buffers to the history-buffer of ECB. Dependend on the values of `ecb-history-make-buckets' and `ecb-history-sort-method' afterwards the history is bucketized or not and sorted either by name or by extension \(if bucketized then the sorting is only within each bucket). If `ecb-history-sort-method' is nil the most recently used buffers are on the top of the history and the seldom used buffers at the bottom \(again: when bucketized then this holds only within each bucket)." (interactive) (ecb-reset-history-filter) (ecb-add-buffers-to-history-new 'no-dead-buffers)) (defalias 'ecb-clear-history 'ecb-add-all-buffers-to-history) (defun ecb-history-content-all-dead-buffers-alist () "Return alist with items \( . ) for dead buffers entries of the history-buffer." (with-current-buffer ecb-history-buffer-name (delq nil (tree-node-map-subtree (tree-buffer-get-root) (function (lambda (node) (let ((data (tree-node->data node))) (unless (or (= (tree-node->type node) ecb-history-nodetype-bucket) (get-buffer (ecb-source-get-buffername data))) (cons (ecb-source-get-buffername data) (ecb-source-get-filename data)))))))))) (defun ecb-add-buffers-to-history-new (&optional no-dead-buffers ignore-buffername-list) "Update contents of the history-buffer. This means a history-item is added to the history-buffer if an existing buffer: - is a file-buffer or is based on a file-buffer \(e.g. indirect-file-buffers) - is not excluded by `ecb-check-filename-for-history-exclude' - is not filtered out by the current history-filter In addition dead-buffer items of the history-content before are added again unless optional argument NO-DEAD-BUFFERS is not nil. If second optional argument IGNORE-BUFFERNAME-LIST is not nil, then it must be a list of buffer-names which should be ignored for the history-rebuild. It takes into account the values of the options `ecb-history-make-buckets' and `ecb-history-stick-indirect-buffers-to-basebuffer'. It calls at the end `ecb-mode-line-format'. If the current history-filter leads to an empty history-buffer it will not be applied but an unfiltered history will be build. Returns t if the current history filter has been applied otherwise nil." (let* ((never-bucket-string "No_hist_bucketizing") (aggr-sort-fcn (function (lambda (l r) ;; l and r are conses like: ;; ( . ( . )) (if (ecb-string= (car l) (car r) ecb-history-sort-ignore-case) (case ecb-history-sort-method (extension (let ((ext-l (file-name-extension (cdr (cdr l)) t)) (ext-r (file-name-extension (cdr (cdr r)) t))) (if (ecb-string= ext-l ext-r ecb-history-sort-ignore-case) (ecb-string< (car (cdr l)) (car (cdr r)) ecb-history-sort-ignore-case) (ecb-string< ext-l ext-r ecb-history-sort-ignore-case)))) (name (ecb-string< (car (cdr l)) (car (cdr r)) ecb-history-sort-ignore-case)) (otherwise nil)) (ecb-string< (car l) (car r) ecb-history-sort-ignore-case))))) (aggr-same-fcn (function (lambda (l r) ;; l and r are strings (= the car of an item of base-alist) (ecb-string= l r ecb-history-sort-ignore-case)))) (indirect-buffer-base nil) ;; lets build an alist where each item is a cons like ;; ( . ) and only items are contained which are: ;; - based on file-buffers (indirect-file-buffers too) ;; - not excluded by `ecb-check-filename-for-history-exclude' ;; - not filtered out by the current history-filter ;; if indirect-buffers should be sticked to the base-buffer then we ;; are sorting out them here and add them all to indirect-buffer-base (buf-file-alist (delq nil (mapcar (function (lambda (buf) (let ((file-name (ecb-fix-filename (ecb-buffer-file-name buf))) (base-buf (buffer-base-buffer buf))) (if (and file-name ;; needed for revision-files temporally ;; checked out (e.g. by ediff-revision) ;; these not longer existing files ;; would pollute the history - we do not ;; want entries which could not loaded ;; into a buffer (ecb-buffer-or-file-readable-p file-name) (not (member (buffer-name buf) ignore-buffername-list)) (not (ecb-check-filename-for-history-exclude file-name)) (funcall (car ecb-history-filter) (buffer-name buf) file-name)) (if (and ecb-history-stick-indirect-buffers-to-basebuffer base-buf) ;; if indirect-buffers should be sticked ;; to the base-buffer then we are sorting ;; out them here and add them all to ;; indirect-buffer-base (progn (push (cons (buffer-name base-buf) (cons (buffer-name buf) file-name)) indirect-buffer-base) nil) (cons (buffer-name buf) file-name)))))) ;; we call reverse to get the most recently used ;; buffers first; usefull when no sorting takes place (reverse (buffer-list))))) (additonal-dead-history-buffer-alist (if no-dead-buffers nil ;; we need these entries of the history-buffer which are marked as ;; dead. If all is working fine the set-difference would not be ;; necessary because dead-items are dead because no buffer exists ;; for them - so both lists should be disjunct - but who knows, to ;; get sure we make the difference so we have no duplicates. (ecb-set-difference (ecb-history-content-all-dead-buffers-alist) buf-file-alist 'member))) (base-alist (mapcar (function (lambda (elem) ;; an elem is a cons ( . ) (cons (case ecb-history-make-buckets (never never-bucket-string) ((directory directory-with-source-path) (ecb-substring-no-properties (ecb-fix-filename (ecb-file-name-directory (cdr elem))) (if ecb-running-xemacs 0))) (mode (symbol-name (if (ecb-buffer-obj (car elem)) (with-current-buffer (ecb-buffer-obj (car elem)) major-mode) ;; for dead buffers of the ;; history we use auto-mode-alist (or (ecb-match-regexp-list (car elem) auto-mode-alist 'car 'cdr) 'no-major-mode-avail)))) (extension (file-name-extension (cdr elem) t)) (otherwise (or (ecb-match-regexp-list (car elem) ecb-history-make-buckets) "No matchings"))) elem))) (append buf-file-alist additonal-dead-history-buffer-alist))) (aggregated-alist-with-buckets (ecb-aggregate-alist base-alist aggr-same-fcn aggr-sort-fcn)) (aggregated-indirect-buffers-alist (ecb-aggregate-alist indirect-buffer-base 'string= (function (lambda (l r) (string< (car l) (car r)))))) ;; an alist with items like ( . ) for each ;; toplevel bucket of the history-buffer. This is the state before ;; rebuilding the history! (curr-bucket-expand-status-alist (with-current-buffer ecb-history-buffer-name (delq nil (mapcar (function (lambda (node) (when (= (tree-node->type node) ecb-history-nodetype-bucket) (cons (tree-node->name node) (and (tree-node->expandable node) (tree-node->expanded node)))))) (tree-node->children (tree-buffer-get-root)))))) ) ;; just for debugging: ;; (list buf-file-alist ;; aggregated-alist-with-buckets ;; additonal-dead-history-buffer-alist ;; indirect-buffer-base ;; aggregated-indirect-buffers-alist) (with-current-buffer ecb-history-buffer-name (tree-buffer-clear-tree) (dolist (bucket-elem aggregated-alist-with-buckets) (let* ((best-matching-sp (if (eq ecb-history-make-buckets 'directory-with-source-path) (ecb-get-best-matching-source-path (car bucket-elem)))) ;; we use concat to get a new string to avoid side-effect in ;; facing source-paths in the directory-buffer (best-matching-path (concat (car best-matching-sp))) (best-matching-alias (concat (cdr best-matching-sp))) (bucket-name-formated nil) (bucket-name-formated-shrink-start-pos (length (nth 0 ecb-bucket-node-display))) (bucket-node nil)) (if (or (null best-matching-sp) ;; if the alias is not smaller then the path ;; itself we use the path ;; with this condition we adress also the case that the alias ;; isn't an alias but only the duplicated path... (>= (length best-matching-alias) (length best-matching-path))) (setq bucket-name-formated (ecb-format-bucket-name ;; we use concat only to get a new string-object (ecb-merge-face-into-text (concat (car bucket-elem)) ecb-history-bucket-node-face) nil 'only-name)) (setq bucket-name-formated (ecb-format-bucket-name (concat (ecb-merge-face-into-text (ecb-merge-face-into-text best-matching-alias ecb-history-bucket-node-face) ecb-history-bucket-node-dir-soure-path-face) (unless (string= best-matching-path (car bucket-elem)) (ecb-merge-face-into-text (ecb-substring-no-properties (car bucket-elem) (length best-matching-path)) ecb-history-bucket-node-face))) nil 'only-name)) ;; now we add the length of the source-path-alias as start-position ;; for name shrinking (setq bucket-name-formated-shrink-start-pos (+ bucket-name-formated-shrink-start-pos (length best-matching-alias))) ) (setq bucket-node (if (string= never-bucket-string (car bucket-elem)) (tree-buffer-get-root) (tree-node-new bucket-name-formated ecb-history-nodetype-bucket (car bucket-elem) nil (tree-buffer-get-root) 'beginning (list bucket-name-formated-shrink-start-pos nil 5)))) (unless (string= never-bucket-string (car bucket-elem)) ;; TODO: Klaus Berndl : maybe we can make ;; this even smarter...depending if now a bucket contains more ;; items than before - for this we have to store not onlxy the ;; expand-state but also the number of children of a bucket (setf (tree-node->expanded bucket-node) (if (assoc bucket-name-formated curr-bucket-expand-status-alist) (cdr (assoc bucket-name-formated curr-bucket-expand-status-alist)) t))) (dolist (elem (cdr bucket-elem)) (let* ((buf-name (car elem)) ;; can only be not nil if the option ;; `ecb-history-stick-indirect-buffers-to-basebuffer' is not ;; nil --> see above the mechanism how indirect-buffer-base ;; is build (indirect-buffer-p (buffer-base-buffer (ecb-buffer-obj buf-name))) ;; Note: indirect-buffer elems can not be dead-buffer ;; elems, because indirect-buffer-items are *always* ;; removed immediately from the history-buffer when such a ;; buffer is killed! (buf-name-formatted (cond (indirect-buffer-p (ecb-merge-face-into-text buf-name ecb-history-indirect-buffer-face)) ((member elem additonal-dead-history-buffer-alist) (ecb-merge-face-into-text buf-name ecb-history-dead-buffer-face)) (t buf-name))) (file-name (cdr elem)) (dir (ecb-file-name-directory file-name)) (vc-p (and (ecb-vc-directory-should-be-checked-p dir) (ecb-vc-managed-dir-p dir))) (node-name (if vc-p (ecb-vc-generate-node-name buf-name-formatted (nth 0 (ecb-vc-cache-get file-name))) (ecb-generate-node-name buf-name-formatted -1 "leaf" ;; here ecb-sources-buffer-name is ;; also correct for history ;; because we want the same ;; icon-stuff as in the sources buffer ecb-sources-buffer-name))) (node (tree-node-new node-name (if indirect-buffer-p ecb-history-nodetype-indirect-filebuffer ecb-history-nodetype-filebuffer) (ecb-source-make file-name buf-name) t bucket-node))) ;; if `ecb-history-stick-indirect-buffers-to-basebuffer' is nil ;; then this dolist does nothing because then the list is always ;; nil, because aggregated-indirect-buffers-alist is nil in this ;; case (dolist (indirect-elem (ecb-find-assoc-value buf-name aggregated-indirect-buffers-alist)) (let* ((ind-buf-name (car indirect-elem)) ;; here we have no need to deal with dead-buffers ;; because indirect-buffers can not dead-buffer-items - ;; s.a. (ind-buf-name-formatted (ecb-merge-face-into-text ind-buf-name ecb-history-indirect-buffer-face)) (ind-node-name (if vc-p (ecb-vc-generate-node-name ind-buf-name-formatted (nth 0 (ecb-vc-cache-get file-name))) (ecb-generate-node-name ind-buf-name-formatted -1 "leaf" ;; here ecb-sources-buffer-name is ;; also correct for history ;; because we want the same ;; icon-stuff as in the sources buffer ecb-sources-buffer-name)))) (setf (tree-node->expandable node) t) (setf (tree-node->expanded node) t) (tree-node-new ;; indirect buffers have the same vc-state as the file ;; associated with the base-buffer ==> we use the same ind-node-name ecb-history-nodetype-indirect-filebuffer (ecb-source-make file-name ind-buf-name) t node))) ))))) (ecb-exec-in-window ecb-history-buffer-name (tree-buffer-update) (tree-buffer-highlight-node-by-data/name (ecb-path-selected-source))) (prog1 (if (and (with-current-buffer ecb-history-buffer-name (tree-buffer-empty-p)) (not (ecb-history-filter-reset-p))) (progn (ecb-add-all-buffers-to-history) (message "ECB has not applied this filter because it would filter out all entries!") nil) t) ;; now the modeline has to display the current filter (ecb-mode-line-format)) )) ;;(insert (pp (ecb-klaus-add-buffers-to-history))) ;;(ecb-add-buffers-to-history-new) (defun ecb-history-filter-modeline-prefix (buffer-name sel-dir sel-source) "Compute a mode-line prefix for the History-buffer so the current filter applied to the history-entries is displayed. This function is only for using by the option `ecb-mode-line-prefixes'." (and (cdr ecb-history-filter) (format "[Filter: %s]" (cdr ecb-history-filter)))) (defun ecb-set-selected-source (source other-edit-window no-edit-buffer-selection) "Updates all the ECB buffers and loads the SOURCE. The source is also displayed unless NO-EDIT-BUFFER-SELECTION is set to non nil. In such case the source is only loaded invisible in the background, all semantic-parsing and ECB-Buffer-updating is done but the content of the main-edit window is not changed. For the allowed values of OTHER-EDIT-WINDOW see `ecb-combine-ecb-button/edit-win-nr'. SOURCE is either a string, then it is a filename or a cons, then the car is the filename and the cdr is the buffer-name, whereas the latter one can be an indirect-buffer." (if no-edit-buffer-selection ;; load the selected source in an invisible buffer, do all the ;; updating and parsing stuff with this buffer in the background and ;; display the methods in the METHOD-buffer. We can not go back to ;; the edit-window because then the METHODS buffer would be ;; immediately updated with the methods of the edit-window. (with-current-buffer (ecb-source-get-buffer source) (ecb-path-selected-source-set (ecb-source-get-filename source) (buffer-name)) (ecb-update-methods-buffer--internal 'scroll-to-begin nil t t)) ;; open the selected source in the correct edit-window and do all the ;; update and parsing stuff with this buffer (ecb-display-source source other-edit-window) (ecb-path-selected-source-set (ecb-source-get-filename source) (buffer-name)) (ecb-update-methods-buffer--internal 'scroll-to-begin) (setq ecb-major-mode-selected-source major-mode) (ecb-tag-sync 'force)) (ecb-select-source t)) (defun ecb-update-directory-node (node) "Updates the directory node NODE and add all subnodes if any." (let ((old-children (tree-node->children node)) (path (tree-node->data node))) (setf (tree-node->children node) nil) (if (ecb-file-accessible-directory-p path) (let ((files-and-dirs (ecb-get-files-and-subdirs path))) (ecb-tree-node-add-files node path (cdr files-and-dirs) ecb-directories-nodetype-directory t old-children) (if (ecb-show-sources-in-directories-buffer-p) (ecb-tree-node-add-files node path (car files-and-dirs) ecb-directories-nodetype-sourcefile ecb-show-source-file-extension old-children t)) (setf (tree-node->expandable node) (or (tree-node->children node))) ;; if node is not expandable we set its expanded state to nil (setf (tree-node->expanded node) (if (not (tree-node->expandable node)) nil (tree-node->expanded node))))))) (defecb-tree-buffer-callback ecb-directory-expand ecb-directories-buffer-name expand nil "Expand the clickes directory and add all subnodes if any. Subnodes can be directories or sources." (ecb-update-directory-node node)) (defun ecb-get-source-paths-from-functions () "Return a list of paths found by querying `ecb-source-path-functions'." (let ((func ecb-source-path-functions) (paths nil) (rpaths nil)) (while func (setq paths (append paths (funcall (car func))) func (cdr func))) (while paths (setq rpaths (cons (ecb-fix-filename (car paths)) rpaths) paths (cdr paths))) rpaths)) (defun ecb-update-directories-buffer () "Updates the ECB directories buffer." (interactive) (unless (or (not ecb-minor-mode) (not (equal (selected-frame) ecb-frame))) (ecb-exec-in-window ecb-directories-buffer-name (let* ((node (tree-buffer-get-root)) (old-children (tree-node->children node)) (normed-paths (ecb-normed-source-paths))) (setf (tree-node->children node) nil) (dolist (path normed-paths) (let* ((dir (car path)) (name (cdr path)) (remote-dir (ecb-remote-path dir)) (not-accessible nil)) (if (or (not remote-dir) (ecb-host-accessible-p (nth 1 remote-dir))) (if (ecb-file-accessible-directory-p dir) (tree-node-add-children node (ecb-new-child old-children name ecb-directories-nodetype-sourcepath dir nil (if ecb-truncate-long-names 'beginning))) (setq not-accessible t)) (setq not-accessible t)) (when not-accessible (ecb-warning "Source-path element %s is not accessible - ignored!" path)))) (tree-buffer-update))) )) ;; remote-path stuff ;; (ecb-host-accessible-valid-time "ecb.sourceforge.net") ;; (ecb-host-accessible-cache-get "ecb.sourceforge.net" 60) (defsubst ecb-host-accessible-valid-time (host) "Get the valid-cache-time of a remote HOST concering its ping-state. If host doesn't match any regexp of `ecb-host-accessible-check-valid-time' then return 60 seconds." (or (ecb-match-regexp-list host ecb-host-accessible-check-valid-time 'car 'cdr) 60)) ;; (ecb-host-accessible-valid-time "ecb.sourceforge.net") ;; (ecb-host-accessible-cache-get "ecb.sourceforge.net" 60) (defun ecb-host-accessible-p (host) "Return not nil if HOST is accessible." (let ((value (ecb-host-accessible-cache-get host (ecb-host-accessible-valid-time host)))) (case value (NOT-ACCESSIBLE nil) ((nil) ;; not cached or outdated (let* ((options (ecb-replace-all-occurences (ecb-copy-list ecb-ping-options) "HOST" host)) (result (equal 0 (apply 'call-process ecb-ping-program nil nil nil options)))) (ecb-host-accessible-cache-add host (or result 'NOT-ACCESSIBLE)) result)) (otherwise value)))) ;; (ecb-host-accessible-p "ecb.cvs.sourceforge.net") (silentcomp-defun ange-ftp-ftp-name) (silentcomp-defun efs-ftp-path) (silentcomp-defun tramp-tramp-file-p) (silentcomp-defun tramp-file-name-path) (silentcomp-defun tramp-file-name-localname) (silentcomp-defun tramp-file-name-host) (silentcomp-defun tramp-dissect-file-name) (defun ecb-remote-path (path) "Test if PATH is a remote path and dissect it into components if yes. Returns a list (FULL-HOST-USER-PART HOST REAL-PATH), or nil if PATH is not a remote path. FULL-HOST-USER-PART is that component from beginning of PATH to the :-separator which separates user- and host-parts from the real path, i.e. it always ends with a colon! HOST is the remote HOST and REAL-PATH is that component after that :-separator. Supports tramp, ange-ftp and efs." (let ((value (ecb-remote-path-cache-get path))) (case value (NOT-REMOTE nil) ((nil) (let* ((dissection (or (and (featurep 'tramp) ;; tramp-support (tramp-tramp-file-p path) (tramp-dissect-file-name path)) (and (featurep 'ange-ftp) ;; ange-ftp-support (ange-ftp-ftp-name path)) (and (featurep 'efs) ;; efs support (efs-ftp-path path)))) (host/real-path (if dissection (or (and (featurep 'tramp) ;; tramp-support (cons (tramp-file-name-host dissection) (if (fboundp 'tramp-file-name-localname) (tramp-file-name-localname dissection) (tramp-file-name-path dissection)))) (and (featurep 'ange-ftp) ;; ange-ftp-support (cons (nth 0 dissection) (nth 2 dissection))) (and (featurep 'efs) ;; efs support (cons (nth 0 dissection) (nth 2 dissection)))) (cons nil path))) (full-host-user-part (substring path 0 (- (length path) (length (cdr host/real-path))))) (result nil)) (setq result (and dissection (list full-host-user-part (car host/real-path) (cdr host/real-path)))) (ecb-remote-path-cache-add path (or result 'NOT-REMOTE)) result)) (otherwise value)))) ;;(ecb-remote-path "/berndl@ecb.sourceforge.net:~") ;;(directory-files "/berndl@ecb.sourceforge.net:~/beate") ;; (ecb-remote-path "~") ;; empty dirs (defun ecb-check-emptyness-of-dir (dir) "Checks if DIR is an empty directory. If empty return not nil otherwise nil." (let ((cache-value (ecb-directory-empty-cache-get dir)) (show-sources (ecb-show-sources-in-directories-buffer-p))) (if (and cache-value (equal (cdr cache-value) show-sources)) (car cache-value) (ecb-directory-empty-cache-remove dir) (let ((entries (and (ecb-file-accessible-directory-p dir) (ecb-directory-files dir nil nil t))) (just-files-means-empty (not show-sources)) (full-file-name nil) (empty-p nil)) (setq empty-p (catch 'found (dolist (e entries) (when (not (member e '("." ".." "CVS"))) (setq full-file-name (ecb-fix-filename dir e)) (if (ecb-file-directory-p full-file-name) (throw 'found 'nil) (if (not just-files-means-empty) (throw 'found 'nil))))) t)) ;; now we add this value to the cache (ecb-directory-empty-cache-add (ecb-fix-filename dir) (cons empty-p show-sources)) empty-p)))) (defecb-stealthy ecb-stealthy-empty-dir-check "Check for each current visible nodes in the directories buffer if the underlying directory is empty or not and update the node if the current node state and display is different from the empty-state of the associated directory. This function is only for use by `ecb-stealthy-updates'!" (when (equal 'window-not-visible (ecb-exec-in-window ecb-directories-buffer-name (if (equal state 'restart) (setq state 1)) ;; Here the state is an integer because a stealthy functions runs only ;; when state != 'done (let ((lines-of-buffer (count-lines (point-min) (point-max))) (curr-node nil) (dir-empty-p nil)) (ecb-exit-on-input 'empty-dir-check-stealthy (save-excursion (while (<= state lines-of-buffer) (ecb-throw-on-input 'lines-of-buffer-loop) (ecb-goto-line state) (setq curr-node (tree-buffer-get-node-at-point)) (when (and ;;(not (= ecb-directories-nodetype-sourcefile ;; (tree-node->type curr-node))) (ecb-directory-should-prescanned-p (tree-node->data curr-node)) (ecb-file-exists-p (tree-node->data curr-node))) (setq dir-empty-p (ecb-check-emptyness-of-dir (tree-node->data curr-node))) ;; we update the node only if we have an empty dir and the node is ;; still expandable (when (or (and dir-empty-p (tree-node->expandable curr-node)) (and (not dir-empty-p) (not (tree-node->expandable curr-node)))) (tree-buffer-update-node nil 'use-old-value 'use-old-value 'use-old-value 'use-old-value (not dir-empty-p) t))) (setq state (1+ state))))) (if (> state lines-of-buffer) (setq state 'done))))) (setq state 'done))) ;; read-only-files? (defun ecb-stealthy-read-only-check--internal (state) "Check for all sourcefile-nodes either in the directories- or the sources-buffer if the associated file is writable or not. This function does the real job and is is only for use by a stealthy function defined with `defecb-stealthy'! STATE is the initial state-value the stealthy-function has when called. Return the new state-value." (if (or (not ecb-sources-perform-read-only-check) (not (or (string= (buffer-name (current-buffer)) ecb-sources-buffer-name) (and (string= (buffer-name (current-buffer)) ecb-directories-buffer-name) (ecb-show-sources-in-directories-buffer-p))))) 'done ;; Now we are either in the sources-buffer or in the directories-buffer ;; when sources are displayed in the directories-buffer (if (equal state 'restart) (setq state 1)) ;; Here the state is an integer because a stealthy functions runs only ;; when state != 'done (let ((lines-of-buffer (count-lines (point-min) (point-max))) (curr-node nil) (new-name nil) (read-only-p nil) (node-types-to-check (list ecb-sources-nodetype-sourcefile ecb-directories-nodetype-sourcefile))) (ecb-exit-on-input 'read-only-stealthy (save-excursion (while (<= state lines-of-buffer) (ecb-throw-on-input 'lines-of-buffer-loop) (ecb-goto-line state) (setq curr-node (tree-buffer-get-node-at-point)) (when (and (member (tree-node->type curr-node) node-types-to-check) (ecb-sources-read-only-check-p (ecb-file-name-directory (tree-node->data curr-node)))) (setq new-name (tree-node->name curr-node)) (setq read-only-p (not (ecb-file-writable-p (tree-node->data curr-node)))) (if read-only-p (ecb-merge-face-into-text new-name ecb-source-read-only-face)) ;; we update the node only if we have an empty dir and the node is ;; still expandable (when read-only-p (tree-buffer-update-node nil new-name 'use-old-value 'use-old-value 'use-old-value 'use-old-value t))) (setq state (1+ state))))) (if (> state lines-of-buffer) (setq state 'done))) state)) (defecb-stealthy ecb-stealthy-ro-check-in-directories-buf "Check for all sourcefile-nodes in the directories-buffer if the associated file is writable or not." (if (ecb-show-sources-in-directories-buffer-p) (when (equal 'window-not-visible (ecb-exec-in-window ecb-directories-buffer-name (setq state (ecb-stealthy-read-only-check--internal state)))) (setq state 'done)) (setq state 'done))) ;; Test, if our new interrupt mechanism works... ;; (defecb-stealthy ecb-stealthy-klaus-test ;; "test" ;; (setq state ;; (if (equal (ecb-exit-on-input 'testing ;; (let ((inhibit-quit nil) ;; (message-log-max nil)) ;; (while t ;; (message "Looping ...") ;; (ecb-throw-on-input 'user-input) ;; ))) ;; 'user-input) ;; 'done ;; 'Klaus))) (defecb-stealthy ecb-stealthy-ro-check-in-sources-buf "Check for all sourcefile-nodes in the sources-buffer if the associated file is writable or not." (when (equal 'window-not-visible (ecb-exec-in-window ecb-sources-buffer-name (setq state (ecb-stealthy-read-only-check--internal state)))) (setq state 'done))) ;; version control support (defecb-advice-set ecb-vc-advices "All advices needed for the builtin VC-support of ECB.") ;; We use a cache which stores for ;; + a directory: either the function used to check the VC-state of its files ;; (if the directory is managed by a VC-backend) or the symbol 'NO-VC (if ;; the dir is not managed by a VC-backend). ;; + a file: the most recent VC-state plus the check-timestamp for this state. ;; ;; So we have to call only once the identify-backend-function (see above) for ;; a directory. The check-state-function must only be called if the file has ;; been modified since the stored check-state-timestamp. With this caching ;; even using real-VC-checks (as vc-recompute-state) which never uses ;; heuristics is possible without loosing to much informations (only if a file ;; is modified by another user can not be detected with this cache - but for ;; this we have the power-click which always throws away any cache-state) (defconst ecb-vc-state-icon-alist '((up-to-date . ("vc-up-to-date" "(u)")) (edited . ("vc-edited" "(e)")) (added . ("vc-added" "(a)")) (needs-patch . ("vc-needs-patch" "(p)")) (needs-merge . ("vc-needs-merge" "(m)")) (ignored . ("vc-ignored" "(x)")) (unknown . ("vc-unknown" "(?)")) (nil . ("vc-unknown" "(?)"))) "Associate an image-name and a textual icon to the allowed VC-states - see `ecb-vc-supported-backends'. Each element is a cons-cell where the car is the symbol of a supported VC-state and the cdr a 2-element list where the first element is the name of the needed image-icon and the second element the ascii-string which should be dislayed if Emacs doesn't support image-display.") (defsubst ecb-vc-get-image-name-for-vc-state (state) "Return the associated image-name for the vc-state STATE." (or (nth 0 (cdr (assq state ecb-vc-state-icon-alist))) "vc-unknown")) (defsubst ecb-vc-get-ascii-icon-for-vc-state (state) "Return the associated texual icon for the vc-state STATE." (or (nth 1 (cdr (assq state ecb-vc-state-icon-alist))) "(?)")) (defconst ecb-vc-incr-searchpattern-node-prefix '("\\(\\(([uempx?])\\)? \\)?" . 2) "Prefix-pattern which ignores all not interesting vc-icon-stuff of a node-name at incr. search. This ignores the \"()\" whereas is one of u, e, m, p or ?. Format: cons with car is the pattern and cdr is the number of subexpr in this pattern.") (defun ecb-vc-check-state (file tree-buffer-name vc-state-fcn) "Check if the VC-state for FILE must be rechecked, i.e. if it is out of date. If it is still valid and also already checked for TREE-BUFFER-NAME then return the symbol 'unchanged \(if still valid but only not checked for TREE-BUFFER-NAME then return the state and store the fact that it has been check now also for this buffer). Otherwise check the new state for FILE with VC-STATE-FCN, store it in the cache only for TREE-BUFFER-NAME and return the new state." (let* ((cached-state (ecb-vc-cache-get file)) (last-state (nth 0 cached-state)) (last-check-time (nth 1 cached-state)) (checked-tree-buffer-names (nth 2 cached-state)) (no-need-for-state-check-p (and last-check-time (or (null last-state) ;; FILE has been checked but is not in VC (not (ecb-time-less-p last-check-time (ecb-subseq (nth 5 (ecb-file-attributes file)) 0 2)))))) (result nil)) (if no-need-for-state-check-p ;; FILE was not modified since our last vc-state-check (if (member tree-buffer-name checked-tree-buffer-names) ;; TREE-BUFFER-NAMES is in the list of buffer-names for which the ;; state of FILE has already been cached ==> there is no need to ;; update the cache we can just return 'unchanged to signalize ;; that nothing has to be updated (setq result 'unchanged) ;; now we add TREE-BUFFER-NAME to that list - this new list will be ;; added to the cache below. As result we will return the last-state ;; because the state itself is still valid - the only thing we now ;; have to store in the cache is that the last-state is now valid ;; for TREE-BUFFER-NAME too! (setq result last-state) (setq checked-tree-buffer-names (cons tree-buffer-name checked-tree-buffer-names))) ;; FILE was modified since our last vc-state-check, so we have to check ;; the state again ;; set the list of the buffer-names for which the check will be performed ;; and then cached to TREE-BUFFER-NAME ==> Only for this buffer-name the ;; cache is valid. (setq checked-tree-buffer-names (list tree-buffer-name)) ;; get the new vc-state (setq result (and vc-state-fcn (fboundp vc-state-fcn) ;; TODO: Klaus Berndl : ;; vc-cvs-state seems to change the window-config ;; (opens a new small window) if it fails...so maybe ;; we have to save the window-config before this call ;; and restore it when the call fails - hmm, prio 3, ;; therefore later... ;-) ;; we must ignore errors here because it could be that ;; a user has a certain VC-system not installed onto ;; his machine but opens directories which have a ;; CVS-subdir for example - then for such a directory ;; ECB would eventually call this backend - but this ;; would fail because the needed program is not ;; installed - so we ignore this and handle this as ;; unknown-state. (ignore-errors (funcall vc-state-fcn file)))) ;; now we map the backend-state to one of the ECB-VC-state-values (setq result (or (cdr (assoc result ecb-vc-state-mapping)) 'unknown))) (if (not (equal result 'unchanged)) ;; add the new state to the cache because either the list of checked ;; buffers and/or the state has been modified. (ecb-vc-cache-add-file file result checked-tree-buffer-names)) ;; return the result - either 'unchanged or the new VC-state result)) (defun ecb-vc-update-sources-cache (dir) "Update the SOURCES cache for DIR with the current-content of the sources-buffer if DIR has currently either a filtered or full cache entry in the SOURCES-cache." (let* ((full-sources-cache (ecb-sources-cache-get-full dir)) (filtered-sources-cache (and full-sources-cache (ecb-sources-cache-get-filtered dir)))) (if filtered-sources-cache ;; we have currently a filtered sources-buffer so we must update the ;; filtered sources-cache. (ecb-sources-cache-add-filtered dir (list (tree-buffer-get-root) (tree-buffer-displayed-nodes-copy) (ecb-buffer-substring (point-min) (point-max)) ;; add the old-filter-spec ;; because it must be the same (nth 3 filtered-sources-cache))) (if full-sources-cache ;; we have currently a cached sources-buffer without an applied ;; filter so we must update the full sources-cache. (ecb-sources-cache-add-full dir (list (tree-buffer-get-root) (tree-buffer-displayed-nodes-copy) (ecb-buffer-substring (point-min) (point-max)))))))) ;; Not needed anymore - but we leave it here, who knows... ;; (defun ecb-vc-cvs-root-remote-p (root) ;; "Return not nil if ROOT is a remote CVS-repository." ;; (save-match-data ;; (if (string-match "^:local:" root) ;; nil ;; (and (string-match "^\\(:ext:\\|:server:\\)?\\([^@]+@\\)?\\([^:]+\\):" ;; root) ;; (match-string 3 root))))) ;; some tests: ;; The following must all return cvs.sourceforge.net! ;; (ecb-vc-cvs-root-remote-p ":ext:berndl@cvs.sourceforge.net:/usr/local/root") ;; (ecb-vc-cvs-root-remote-p "berndl@cvs.sourceforge.net:/usr/local/root") ;; (ecb-vc-cvs-root-remote-p ":ext:cvs.sourceforge.net:/usr/local/root") ;; (ecb-vc-cvs-root-remote-p "cvs.sourceforge.net:/usr/local/root") ;; (ecb-vc-cvs-root-remote-p ":ext:berndl@cvs.sourceforge.net:C:/local/root") ;; (ecb-vc-cvs-root-remote-p "berndl@cvs.sourceforge.net:C:/local/root") ;; (ecb-vc-cvs-root-remote-p ":ext:cvs.sourceforge.net:C:/local/root") ;; (ecb-vc-cvs-root-remote-p "cvs.sourceforge.net:C:/local/root") ;; The following has to return nil! ;; (ecb-vc-cvs-root-remote-p "/local/root") ;; (ecb-vc-cvs-root-remote-p ":local:C:/local/root") ;; The following is allowed to return "C" because CVS forbids to use ;; windows-path as root without keyword :local:! ;; (ecb-vc-cvs-root-remote-p "C:/local/root") (defun ecb-vc-dir-managed-by-CVS (directory) "Return 'CVS if DIRECTORY is managed by CVS. nil if not." (and (locate-library "vc-cvs") (ecb-file-exists-p (concat directory "/CVS/")) (require 'vc) (require 'vc-cvs) 'CVS)) (defun ecb-vc-dir-managed-by-RCS (directory) "Return 'RCS if DIRECTORY is managed by RCS. nil if not." (and (locate-library "vc-rcs") (ecb-file-exists-p (concat directory "/RCS/")) (require 'vc) (require 'vc-rcs) 'RCS)) (defun ecb-vc-dir-managed-by-SVN (directory) "Return 'SVN if DIRECTORY is managed by SVN. nil if not." (and (locate-library "vc-svn") (let ((admin-dir (cond ((and (memq system-type '(cygwin windows-nt ms-dos)) (getenv "SVN_ASP_DOT_NET_HACK")) "_svn") (t ".svn")))) (ecb-file-exists-p (concat directory "/" admin-dir "/"))) (require 'vc) (require 'vc-svn) 'SVN)) (defun ecb-vc-dir-managed-by-SCCS (directory) "Return 'SCCS if DIRECTORY is managed by SCCS. nil if not." (and (locate-library "vc-sccs") (or (ecb-file-exists-p (concat directory "/SCCS/")) ;; Remote SCCS project (let ((proj-dir (getenv "PROJECTDIR"))) (if proj-dir (ecb-file-exists-p (concat proj-dir "/SCCS"))))) (require 'vc) (require 'vc-sccs) 'SCCS)) ;; Bazaar support (defun ecb-vc-dir-managed-by-BZR (directory) "Return 'BZR if DIRECTORY is managed by Bazaar. nil if not." (and (locate-library "vc-bzr") (ecb-file-exists-p (concat directory "/" ".bzr")) (require 'vc) (require 'vc-bzr) 'BZR)) ;; Mercurial support ;; TODO: Klaus Berndl : if this works we should add it to ;; `ecb-vc-supported-backends'. (defun ecb-vc-dir-managed-by-HG (directory) "Return 'HG if DIRECTORY is managed by Mercurial. nil if not. Because with Mercurial only the top-most directory of a source-tree has a subdir .hg this function tries recursively upwards if there is a .hg-subdir." ;; With XEmacs we must first load the vc-hooks which contain the function ;; `vc-find-root' (when ecb-running-xemacs (ignore-errors (vc-load-vc-hooks))) (and (locate-library "vc-hg") (fboundp 'vc-find-root) (vc-find-root directory ".hg") (require 'vc) (require 'vc-hg) 'HG)) ;; Git support (defun ecb-vc-dir-managed-by-GIT (directory) "Return 'GIT if DIRECTORY is managed by Git. nil if not. Because with Git only the top-most directory of a source-tree has a subdir .git this function tries recursively upwards if there is a .git-subdir." ;; With XEmacs we must first load the vc-hooks which contain the function ;; `vc-find-root' (when ecb-running-xemacs (ignore-errors (vc-load-vc-hooks))) (and (locate-library "vc-git") (fboundp 'vc-find-root) (vc-find-root directory ".git") (require 'vc) (require 'vc-git) 'GIT)) ;; an own implementation for Git... ;; (defun ecb-vc-dir-managed-by-GIT (directory) ;; (let* ((sourcedir (ecb-fix-filename (file-truename directory))) ;; (gitdir (concat sourcedir "/.git/"))) ;; (if (and (ecb-file-exists-p gitdir) ;; (locate-library "vc-git")) ;; 'GIT ;; (if (equal sourcedir (ecb-fix-filename "/")) ;; nil ;; (ecb-vc-dir-managed-by-GIT (concat sourcedir "/../")))))) ;;(ecb-vc-dir-managed-by-GIT default-directory) ;; Monotone support (defun ecb-vc-dir-managed-by-MTN (directory) "Return 'MTN if DIRECTORY is managed by Monotone. nil if not." ;; With XEmacs we must first load the vc-hooks which contain the function ;; `vc-find-root' (when ecb-running-xemacs (ignore-errors (vc-load-vc-hooks))) (and (locate-library "vc-mtn") (fboundp 'vc-find-root) (vc-find-root directory "_MTN/format") (require 'vc) (require 'vc-mtn) 'MTN)) ;; clearcase support ;; To enable Cleacase-support just add the combination ;; ecb-vc-dir-managed-by-CC and ecb-vc-check-CC-state to ;; `ecb-vc-supported-backends' ;; Problem: is this OK to assume, that the clearcase-specific stuff is already ;; loaded? may be we need more checks here. (silentcomp-defun clearcase-file-is-in-view-p) (defun ecb-vc-dir-managed-by-CC (directory) "Return 'CC if DIRECTORY is managed by ClearCase. nil if not." (and (fboundp 'clearcase-file-is-in-view-p) (if (clearcase-file-is-in-view-p directory) 'CC))) (silentcomp-defun clearcase-compute-next-action) (defun ecb-vc-check-CC-state (file) "Checks the VC-state of FILE when under Control of Clearcase. Returns the following different state-values: 'unknown, 'up-to-date, 'edited and 'unlocked-changes." (let ((action (and (fboundp 'clearcase-compute-next-action) (clearcase-compute-next-action file)))) (cond ((eq action 'mkelem) 'unknown) ((eq action 'checkout) 'up-to-date) ((eq action 'uncheckout) 'edited) ((eq action 'illegal-checkin) ;; ??? Is OK ??? 'unlocked-changes) ((eq action 'checkin) 'edited)))) (defecb-advice clearcase-sync-from-disk after ecb-vc-advices "Ensures that the ECB-cache is reset and the entry for the currently checked-in/out or added file is cleared. Does nothing if the function `ecb-vc-dir-managed-by-CC' is not contained in `ecb-vc-supported-backends'!" (when (assoc 'ecb-vc-dir-managed-by-CC ecb-vc-supported-backends) (ecb-vc-cache-remove (ecb-fix-filename (ad-get-arg 0))) (ecb-vc-reset-vc-stealthy-checks))) ;; This function should work for all backends supported by vc (defun ecb-vc-state (file) "Same as `vc-state' but it clears the internal caches of the VC-package for FILE before calling `vc-state'. Finally calls `vc-state' and returns that value. This function should work for all backends supported by vc. Note: `vc-state' probably uses the heuristic-state function of the backend which is much faster but can be sometimes inaccurate. If always the accurate state is needed `vc-recompute-state' has to be used - see `ecb-vc-recompute-state'." (and (fboundp 'vc-file-clearprops) (vc-file-clearprops file)) (vc-state file)) (defalias 'ecb-vc-recompute-state 'vc-recompute-state) (defun ecb-vc-get-state-fcn-for-dir (directory) "Get that function which should be used for checking the VC-state for files contained in DIRECTORY. Get it either from the VC-cache or call the car of each element of `ecb-vc-supported-backends' and return the cdr of the first elem where the car returns not nil. If Directory is not managed by a version-control system then return nil. Store the result in the VC-cache for speeding up things next time. Ange-ftp- or efs-directories will never be checked for VC-states!" (let* ((norm-dir (ecb-fix-filename directory)) (cache-val (ecb-vc-cache-get norm-dir))) (case cache-val (NO-VC nil) ((nil) ;; not cached or outdated (let ((vc-backend-fcn (catch 'found (dolist (elem ecb-vc-supported-backends) (when (and (fboundp (car elem)) (funcall (car elem) norm-dir)) (throw 'found (cdr elem)))) nil))) ;; Add it to the vc-cache: Either NO-VC if nil otherwise the ;; check-state-function (ecb-vc-cache-add-dir norm-dir (or vc-backend-fcn 'NO-VC)) vc-backend-fcn)) (otherwise cache-val)))) (defalias 'ecb-vc-managed-dir-p 'ecb-vc-get-state-fcn-for-dir) (defun ecb-vc-generate-node-name (name state) "Generate a node-name with an appropriate icon in the front of NAME depending on STATE. If Emacs supports image-display then an image-icon wll be used otherwise an ascii-icon. The text-property 'ecb-vc-ascii-icon-length is added to the full length of the returned node-name. It contains as value the length of the ascii-icon \(incl. one trailing space) which is added in front of NAME." (let* ((ascii-icon (ecb-vc-get-ascii-icon-for-vc-state state)) (node-name (concat ascii-icon " " (save-match-data (if (string-match "^(.) \\(.+\\)$" name) (match-string 1 name) name))))) (put-text-property 0 (length node-name) 'ecb-vc-ascii-icon-length (1+ (length ascii-icon)) node-name) (ecb-generate-node-name node-name (1+ (length ascii-icon)) (ecb-vc-get-image-name-for-vc-state state) ;; even in the history- or the directories-buffers ;; we use the icons of the sources-buffer because ;; they are the same! ecb-sources-buffer-name))) ;; (insert (ecb-vc-generate-node-name "test-name" 'needs-merge)) (defun ecb-get-sourcename-of-nodename (nodename) "Extract the name of the source from the node-name NODENAME. This is for nodenames generated by `ecb-vc-generate-node-name' or `ecb-generate-node-name' and it return exactly this part of NODENAME without all the preceding stuff added by one of these functions." (let* ((vc-ascii-icon-length (get-text-property 0 'ecb-vc-ascii-icon-length nodename)) (prefix-length (or vc-ascii-icon-length (or (get-text-property 0 'tree-buffer-image-length nodename) 0)))) (substring nodename prefix-length))) (defun ecb-stealthy-vc-check--dir/history (state) "Check for all sourcefile-nodes either in the directories- or the history-buffer the VC-state. This function does the real job and is is only for use by a stealthy function defined with `defecb-stealthy'! STATE is the initial state-value the stealthy-function has when called. Return the new state-value." (if (or (not ecb-vc-needed-vc-package-available-p) (not ecb-vc-enable-support)) 'done (if (not (or (string= (buffer-name (current-buffer)) ecb-history-buffer-name) (and (string= (buffer-name (current-buffer)) ecb-directories-buffer-name) (ecb-show-sources-in-directories-buffer-p)))) 'done ;; Now we are either in the history-buffer or in the directories-buffer ;; when sources are displayed in the directories-buffer (if (equal state 'restart) (setq state 1)) ;; Here the state is an integer because a stealthy functions runs only ;; when state != 'done (let ((lines-of-buffer (count-lines (point-min) (point-max))) (curr-node nil) (curr-dir nil) (new-name nil) (vc-state-fcn nil) (new-state nil) (node-types-to-check (list ecb-history-nodetype-filebuffer ecb-history-nodetype-indirect-filebuffer ecb-directories-nodetype-sourcefile))) (ecb-exit-on-input 'vc-check-dir-hist-stealthy (save-excursion (while (<= state lines-of-buffer) (ecb-throw-on-input 'lines-of-buffer-loop) (ecb-goto-line state) (setq curr-node (tree-buffer-get-node-at-point)) (when (member (tree-node->type curr-node) node-types-to-check) (setq curr-dir (ecb-file-name-directory (ecb-source-get-filename (tree-node->data curr-node)))) (when (and (ecb-vc-directory-should-be-checked-p curr-dir) (ecb-file-exists-p (ecb-source-get-filename (tree-node->data curr-node)))) (setq vc-state-fcn (ecb-vc-get-state-fcn-for-dir curr-dir)) (when vc-state-fcn ;; file is under VC-control (setq new-name (tree-node->name curr-node)) (setq new-state (ecb-vc-check-state (ecb-source-get-filename (tree-node->data curr-node)) (buffer-name (current-buffer)) vc-state-fcn)) ;; we update the node only if the state has changed (when (not (equal 'unchanged new-state)) (setq new-name (ecb-vc-generate-node-name new-name new-state)) (tree-buffer-update-node nil new-name 'use-old-value 'use-old-value 'use-old-value 'use-old-value t))))) (setq state (1+ state))))) (if (> state lines-of-buffer) (setq state 'done))) state))) (defun ecb-stealthy-vc-check--sources (state) "Check for all sourcefile-nodes in sources-buffer the VC-state. This function does the real job and is is only for use by a stealthy function defined with `defecb-stealthy'! STATE is the initial state-value the stealthy-function has when called. Return the new state-value." (if (or (not ecb-vc-needed-vc-package-available-p) (not (ecb-vc-directory-should-be-checked-p ecb-path-selected-directory))) 'done (let ((vc-state-fcn (ecb-vc-get-state-fcn-for-dir ecb-path-selected-directory))) (if (null vc-state-fcn) ;; the sources-files are not under VC-control 'done ;; Now we are either in the sources-, or history-buffer or in the ;; directories-buffer when sources are displayed in the ;; directories-buffer (if (equal state 'restart) (setq state 1)) ;; Here the state is an integer because a stealthy functions runs only ;; when state != 'done (let ((lines-of-buffer (count-lines (point-min) (point-max))) (curr-node nil) (new-name nil) (new-state nil) (update-performed-for-dir nil)) (ecb-exit-on-input 'vc-check-sources-stealthy (save-excursion (while (<= state lines-of-buffer) (ecb-throw-on-input 'lines-of-buffer-loop) (ecb-goto-line state) (setq curr-node (tree-buffer-get-node-at-point)) (if (ecb-file-exists-p (tree-node->data curr-node)) (progn (setq new-name (tree-node->name curr-node)) (setq new-state (ecb-vc-check-state (tree-node->data curr-node) (buffer-name (current-buffer)) vc-state-fcn)) ;; we update the node only if the state has changed (when (not (equal 'unchanged new-state)) (setq new-name (ecb-vc-generate-node-name new-name new-state)) (or update-performed-for-dir (setq update-performed-for-dir ecb-path-selected-directory)) (tree-buffer-update-node curr-node new-name 'use-old-value 'use-old-value 'use-old-value 'use-old-value t)) (setq state (1+ state))) ;; file does no longer exist ;; reduce the number of lines/files (setq lines-of-buffer (1- lines-of-buffer)) ;; remove the node from the tree and the tree-display (tree-buffer-remove-node curr-node t) ;; remove the current dir from the files-and-sub-dir-cache (ecb-files-and-subdirs-cache-remove ecb-path-selected-directory) ;; if there is currently only one line in the tree-buffer the ;; directory will be probably empty now (we knowingly ignore ;; here the possibility that some files can exists in the dir ;; but they are not displayed in the tree-buffer cause of some ;; filters for example), so it's a heuristic approach (if (= lines-of-buffer 1) (ecb-directory-empty-cache-remove ecb-path-selected-directory)) ;; we must trigger that the sources-cache will be updated below (setq update-performed-for-dir ecb-path-selected-directory) )))) ;; if we have performed at least one update then we must update the ;; SOURCES-cache. (when update-performed-for-dir (ecb-vc-update-sources-cache update-performed-for-dir)) (if (> state lines-of-buffer) (setq state 'done))) state)))) (defecb-stealthy ecb-stealthy-vc-check-in-history-buf "Check for all entries in the history-buffer their VC-state and display an appropriate icon in front of the item." (when (equal 'window-not-visible (ecb-exec-in-window ecb-history-buffer-name (setq state (ecb-stealthy-vc-check--dir/history state)))) (setq state 'done))) (defecb-stealthy ecb-stealthy-vc-check-in-sources-buf "Check for all sourcefile-nodes in the sources-buffer their VC-state and display an appropriate icon in front of the file." (when (equal 'window-not-visible (ecb-exec-in-window ecb-sources-buffer-name (setq state (ecb-stealthy-vc-check--sources state)))) (setq state 'done))) (defecb-stealthy ecb-stealthy-vc-check-in-directories-buf "Check for all sourcefile-nodes in the directories-buffer their VC-state and display an appropriate icon in front of the file." (if (ecb-show-sources-in-directories-buffer-p) (when (equal 'window-not-visible (ecb-exec-in-window ecb-directories-buffer-name (setq state (ecb-stealthy-vc-check--dir/history state)))) (setq state 'done)) (setq state 'done))) (defun ecb-vc-reset-vc-stealthy-checks () "Resets all stealthy VC-checks." ;; we can call savely all these initialization because if one of the ;; following tree-windows is not visible nothing will be done (and the ;; directories-check will only run when sources are displayed in the ;; directories buffer!). If visible the vc-check will be performed for all ;; current visible file-nodes again in all visible tree-buffers of the ;; file-browser but because we have only removed the cache-entry for ;; exactly one file, the check will be very fast for all file-nodes ;; besides this file! ;; I think the read-only check must be performed too - because for ;; backends like Clearcase a changed VC-state can also result in a changed ;; read-only-state! (ecb-stealthy-function-state-init 'ecb-stealthy-ro-check-in-directories-buf) (ecb-stealthy-function-state-init 'ecb-stealthy-ro-check-in-sources-buf) (ecb-stealthy-function-state-init 'ecb-stealthy-vc-check-in-sources-buf) (ecb-stealthy-function-state-init 'ecb-stealthy-vc-check-in-directories-buf) (ecb-stealthy-function-state-init 'ecb-stealthy-vc-check-in-history-buf) ;; This function is also used in write-file-hooks so we have to return nil ;; because otherwise a file will never be written - see documentation of ;; `write-file-hooks'! nil) ;; we have to add a smart piece of code to `vc-checkin-hook' which is able to ;; clear the cache entry for exactly that file checked-in with vc-checkin! ;; Problems to solve: ;; - unfortunatelly this hook is not called with the checked-in filename as ;; argument but it is a normal hook runned with `run-hooks' :-( But we can ;; not reset the stuff in the advice itself because this doesn't ensure that ;; the after-advice-stuff is called *after* the checkin - seems that the ;; after-advice runs already during the user inserts/edits the ;; checkin-comment. But the vc-checkin-hook is really called after the ;; checkin! ==> We use a combination of an after-advice and vc-checkin-hook! ;; - If a user uses PCL-CVS for CVS-operations this advice of vc-checkin will ;; not run because pcl-cvs doesn't delegate the checkin-task to ;; `vc-checkin'. Therefore also the `vc-checkin-hook' is not runned via ;; pcl-cvs. ;; - What about other backends not supported by VC, e.g. clearcase.el? Well, ;; with a good documentation what a user has to do.... ;-) (defvar ecb-checkedin-file nil "Stored the filename of the most recent checked-in file. Is only set by the after-advice of `vc-checkin' and `ecb-vc-checkin-hook' \(resets it to nil). Evaluated only by `ecb-vc-checkin-hook'. This is the communication-channel between `vc-checkin' and `ecb-vc-checkin-hook' so this hook-function gets the filename of the checked-in file.") (defecb-advice vc-checkin after ecb-vc-advices "Simply stores the filename of the checked-in file in `ecb-checkedin-file' so it is available in the `vc-checkin-hook'." (ignore-errors (setq ecb-checkedin-file (ecb-fix-filename (ad-get-arg 0))))) (defun ecb-vc-checkin-hook () "Ensures that the ECB-cache is reset and the entry for the most recent checkedin file is cleared. Uses `ecb-checkedin-file' as last checked-in file." (when ecb-checkedin-file (ecb-vc-cache-remove ecb-checkedin-file) (ecb-vc-reset-vc-stealthy-checks) (setq ecb-checkedin-file nil))) (defun ecb-vc-after-revert-hook () "Ensures that the ECB-cache is reset and the entry for the currently reverted file-buffer is cleared." (let ((file (ignore-errors (ecb-fix-filename (ecb-buffer-file-name))))) (when (and file (ecb-file-exists-p file)) (ecb-vc-cache-remove file) (ecb-vc-reset-vc-stealthy-checks)))) (defun ecb-vc-enable-internals (arg) "Enable or disable \(if ARG < 0) all settings needed by the VC-support." (if (< arg 0) (progn (remove-hook 'after-revert-hook 'ecb-vc-after-revert-hook) (remove-hook 'write-file-hooks 'ecb-vc-reset-vc-stealthy-checks) (remove-hook 'vc-checkin-hook 'ecb-vc-checkin-hook) (ecb-disable-advices 'ecb-vc-advices)) (add-hook 'after-revert-hook 'ecb-vc-after-revert-hook) (add-hook 'write-file-hooks 'ecb-vc-reset-vc-stealthy-checks) (add-hook 'vc-checkin-hook 'ecb-vc-checkin-hook) (ecb-enable-advices 'ecb-vc-advices))) ;; -- end of vc-support --------------- ;; TODO: Klaus Berndl : Maybe we should run directly ;; `ecb-stealthy-updates' from within this after-update-hooks?! (defun ecb-stealth-tasks-after-directories-update () "After update hook for the directories-buffer. Runs directly after performing a `tree-buffer-update' for this buffer." (ecb-stealthy-function-state-init 'ecb-stealthy-empty-dir-check) (ecb-stealthy-function-state-init 'ecb-stealthy-ro-check-in-directories-buf) (ecb-stealthy-function-state-init 'ecb-stealthy-vc-check-in-directories-buf) ) (defun ecb-stealth-tasks-after-sources-update () "After update hook for the sources-buffer. Runs directly after performing a `tree-buffer-update' for this buffer." (ecb-stealthy-function-state-init 'ecb-stealthy-ro-check-in-sources-buf) (ecb-stealthy-function-state-init 'ecb-stealthy-vc-check-in-sources-buf) ) (defun ecb-stealth-tasks-after-history-update () "After update hook for the history-buffer. Runs directly after performing a `tree-buffer-update' for this buffer." (ecb-stealthy-function-state-init 'ecb-stealthy-vc-check-in-history-buf) ) ;; -- adding files --------------------- (defun ecb-tree-node-add-files (node path files type include-extension old-children &optional not-expandable) "For every file in FILES add a child-node to NODE." (let* ((no-vc-state-display ;; no vc-state-display when the type of FILES means subdirs in ;; the directories-buffer (and (equal (buffer-name) ecb-directories-buffer-name) (= type ecb-directories-nodetype-directory))) (dir-managed-by-vc (if (or no-vc-state-display (not (ecb-vc-directory-should-be-checked-p path))) nil (ecb-vc-managed-dir-p path)))) (dolist (file files) (let* ((filename (ecb-fix-filename path file)) (file-1 (if include-extension file (ecb-file-name-sans-extension file)))) (tree-node-add-children node (ecb-new-child old-children (if no-vc-state-display file-1 (if dir-managed-by-vc (ecb-vc-generate-node-name file-1 (nth 0 (ecb-vc-cache-get filename))) (ecb-generate-node-name file-1 -1 "leaf" ecb-sources-buffer-name))) type filename (or not-expandable (= type ecb-directories-nodetype-sourcefile) ;; The empty-dir-check is performed stealthy nil ;;(ecb-check-emptyness-of-dir filename) ) (if ecb-truncate-long-names 'end))))))) (defun ecb-new-child (old-children name type data &optional not-expandable shrink-name) "Return a node with type = TYPE, data = DATA and name = NAME. Tries to find a node with matching TYPE and DATA in OLD-CHILDREN. If found no new node is created but only the fields of this node will be updated. Otherwise a new node is created." (catch 'exit (dolist (child old-children) (when (and (equal (tree-node->data child) data) (= (tree-node->type child) type)) (setf (tree-node->name child) name) (if not-expandable (setf (tree-node->expandable child) nil)) (throw 'exit child))) (tree-node-new name type data not-expandable nil shrink-name))) (defun ecb-add-source-path (&optional dir alias no-prompt-for-future-session) "Add a directory to the `ecb-source-path'." (interactive) ;; we must manually cut a filename because we must not add filenames to ;; `ecb-source-path'! (let* ((use-dialog-box nil) (my-dir (ecb-fix-filename (or dir (ecb-file-name-directory (read-file-name "Add source path: "))) nil t)) (my-alias (or alias (read-string (format "Alias for \"%s\" (empty = no alias): " my-dir))))) (setq ecb-source-path (append ecb-source-path (list (if (> (length my-alias) 0) (list my-dir my-alias) my-dir)))) (ecb-update-directories-buffer) (if (and (not no-prompt-for-future-session) (y-or-n-p "Add the new source-path also for future-sessions? ")) (ecb-customize-save-variable 'ecb-source-path ecb-source-path) (customize-set-variable 'ecb-source-path ecb-source-path)))) (tree-buffer-defpopup-command ecb-add-source-path-node "Runs `ecb-add-source-path' from popup." (call-interactively 'ecb-add-source-path)) (tree-buffer-defpopup-command ecb-node-to-source-path "Add this node to the source-path." (ecb-add-source-path (tree-node->data node))) (defun ecb-delete-s (child children sources) (when children (if (eq child (car children)) (cdr sources) (cons (car sources) (ecb-delete-s child (cdr children) (cdr sources)))))) (tree-buffer-defpopup-command ecb-delete-source-path "Delete this source-path via popup." (let ((path (tree-node->data node))) (when (ecb-confirm (concat "Really delete source-path " path "?")) (setq ecb-source-path (ecb-delete-s node (tree-node->children (tree-node->parent node)) ecb-source-path)) (ecb-update-directories-buffer) (if (y-or-n-p "Delete source-path also for future-sessions? ") (ecb-customize-save-variable 'ecb-source-path ecb-source-path) (customize-set-variable 'ecb-source-path ecb-source-path))))) (defun ecb-remove-dir-from-caches (dir) "Remove DIR from the caches SUBDIR, EMPTY-DIR and SOURCES." (ecb-files-and-subdirs-cache-remove dir) (ecb-directory-empty-cache-remove dir) (ecb-sources-cache-remove dir)) (defun ecb-directory-update-speedbar (dir) "Update the integrated speedbar if necessary." (and (ecb-speedbar-active-p) ;; depending on the value of `ecb-directory-update-speedbar' we have to ;; check if it is senseful to update the speedbar. (or (equal ecb-directories-update-speedbar t) (and (equal ecb-directories-update-speedbar 'auto) (not (or (get-buffer-window ecb-sources-buffer-name ecb-frame) (member ecb-layout-name ecb-show-sources-in-directories-buffer)))) (and (not (equal ecb-directories-update-speedbar 'auto)) (functionp ecb-directories-update-speedbar) (funcall ecb-directories-update-speedbar dir))) (ecb-speedbar-update-contents))) (defecb-tree-buffer-callback ecb-directory-or-source-clicked ecb-directories-buffer-name select nil "Does all necessary when a user clicks onto a node in the directories-buffer. Directory- and sources nodes are handled appropriately." (if (= 3 (tree-node->type node)) (funcall (tree-node->data node)) (ecb-update-directory-node node) (if shift-mode (ecb-mouse-over-directory-node node nil nil 'force)) (if (or (= ecb-directories-nodetype-directory (tree-node->type node)) (= ecb-directories-nodetype-sourcepath (tree-node->type node))) (progn ;; prevent from automatically hiding the ecb-windows when meta-mode ;; is not nil (setq no-meta-hiding t) (if (= 2 ecb-button) (when (tree-node->expandable node) (tree-node-toggle-expanded node) (ecb-exec-in-window ecb-directories-buffer-name ;; Update the tree-buffer with optimized display of NODE (tree-buffer-update node))) ;; Removing the element from the sources-cache, the ;; files-and-subdirs-cache and the empty-dirs-cache (incl. all ;; subdirs) (when shift-mode (ecb-remove-dir-from-caches (tree-node->data node)) (ecb-directory-empty-cache-remove-all (tree-node->data node)) ;; a powerclick should remove all vc-caches of contained files (ecb-vc-cache-remove-files-of-dir (tree-node->data node)) ) ;; if we are in a maximized directories-window and if no sources ;; are shown in the directories-buffer but a sources-buffer is ;; contained in current layout then we have to redraw the full ;; layout first so the contents of the clicked directory can be ;; displayed in the sources-buffer. ;; TODO: Klaus Berndl : we should also check ;; if the source-buffer is not visible because in left-right ;; layouts we can maximize 2 buffers or in general: a maximized ;; buffer does not mean that there are no other ecb-buffers visible!!! (when (and (ecb-buffer-is-maximized-p ecb-directories-buffer-name) (not (ecb-show-sources-in-directories-buffer-p)) (ecb-buffer-is-ecb-buffer-of-current-layout-p ecb-sources-buffer-name)) (if (ecb-member-of-symbol/value-list ecb-directories-buffer-name ecb-maximize-next-after-maximized-select) (progn (ecb-maximize-ecb-buffer ecb-sources-buffer-name) (ecb-window-select ecb-sources-buffer-name)) (ecb-undo-maximize-ecb-buffer t))) (ecb-set-selected-directory (tree-node->data node) shift-mode) ;; if we have running an integrated speedbar we must update the ;; speedbar (ecb-directory-update-speedbar (tree-node->data node)))) (ecb-source-item-clicked node ecb-button edit-window-nr shift-mode meta-mode) ))) (defun ecb-source-item-clicked (node ecb-button edit-window-nr shift-mode meta-mode) ;; if we are in a maximized sources-window and if a methods-buffer is ;; contained in current layout then we have to redraw the full layout first ;; so the contents of the clicked source-file can be displayed in the ;; methods-buffer. ;; TODO: Klaus Berndl : see comment in ;; ecb-directory-or-source-clicked (when (and (ecb-buffer-is-maximized-p (buffer-name)) (ecb-buffer-is-ecb-buffer-of-current-layout-p ecb-methods-buffer-name)) (if (ecb-member-of-symbol/value-list (buffer-name) ecb-maximize-next-after-maximized-select) (progn (ecb-maximize-ecb-buffer ecb-methods-buffer-name) (ecb-window-select ecb-methods-buffer-name)) (ecb-undo-maximize-ecb-buffer t))) (ecb-set-selected-source (tree-node->data node) (ecb-combine-ecb-button/edit-win-nr ecb-button edit-window-nr) shift-mode) ) (defecb-tree-buffer-callback ecb-source-clicked ecb-sources-buffer-name select nil "Does all necessary when a user clicks onto a node in the sources-buffer." (if shift-mode (ecb-mouse-over-source-node node nil nil 'force)) (ecb-source-item-clicked node ecb-button edit-window-nr shift-mode meta-mode)) (defecb-tree-buffer-callback ecb-history-clicked ecb-history-buffer-name select nil "Does all necessary when a user clicks onto a node in the history-buffer." (if shift-mode (ecb-mouse-over-history-node node nil nil 'force)) (if (= (tree-node->type node) ecb-history-nodetype-bucket) ;; Just expand/collapse the node (progn (tree-node-toggle-expanded node) ;; Update the tree-buffer with optimized display of NODE (tree-buffer-update node)) (ecb-source-item-clicked node ecb-button edit-window-nr shift-mode meta-mode))) (defun ecb-expand-directory-nodes (level) "Set the expand level of the nodes in the ECB-directories-buffer. For argument LEVEL see `ecb-expand-methods-nodes'. Be aware that for deep structured paths and a lot of source-paths this command can last a long time - depending of machine- and disk-performance." (interactive "nLevel: ") (ecb-exec-in-window ecb-directories-buffer-name (dolist (node (tree-node->children (tree-buffer-get-root))) (tree-buffer-expand-node node level)) (tree-buffer-update)) (ecb-basic-buffer-sync 'force)) (defun ecb-get-file-info-text (file) "Return a file-info string for a file in the ECB sources buffer" (let ((attrs (ecb-file-attributes file))) (format "%s %8s %4d %10d %s %s" (nth 8 attrs) (user-login-name (nth 2 attrs)) (nth 3 attrs) (nth 7 attrs) (format-time-string "%Y/%m/%d %H:%M" (nth 5 attrs)) (if (equal (cdr ecb-sources-show-node-info) 'file-info-full) file (ecb-file-name-nondirectory file))) )) (defun ecb-mouse-over-directory-node (node &optional window no-message click-force) "Displays help text if mouse moves over a node in the directory buffer or if CLICK-FORCE is not nil and always with regards to the settings in `ecb-directories-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." (if (= (tree-node->type node) ecb-directories-nodetype-sourcefile) (ecb-mouse-over-source-node node window no-message click-force) (if (not (= (tree-node->type node) 3)) (let ((str (when (or click-force (ecb-show-minibuffer-info node window (car ecb-directories-show-node-info)) (and (not (equal (car ecb-directories-show-node-info) 'never)) (not (ecb-string= (tree-node->data node) (tree-node->name node))) (eq (tree-node->parent node) (tree-buffer-get-root)))) (if (equal (cdr ecb-directories-show-node-info) 'name) (tree-node->name node) (tree-node->data node))))) (prog1 str (unless no-message (ecb-nolog-message str))))))) (defun ecb-mouse-over-source-node (node &optional window no-message click-force) "Displays help text if mouse moves over a node in the sources buffer or if CLICK-FORCE is not nil and always with regards to the settings in `ecb-sources-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 (ignore-errors ;; For buffers that hasn't been saved yet (when (or click-force (ecb-show-minibuffer-info node window (car ecb-sources-show-node-info))) (if (equal (cdr ecb-sources-show-node-info) 'name) (tree-node->name node) (ecb-get-file-info-text (tree-node->data node))))))) (prog1 str (unless no-message (ecb-nolog-message str))))) (defun ecb-mouse-over-history-node (node &optional window no-message click-force) "Displays help text if mouse moves over a node in the history buffer or if CLICK-FORCE is not nil and always with regards to the settings in `ecb-history-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 (ignore-errors ;; For buffers that hasn't been saved yet (when (or click-force (ecb-show-minibuffer-info node window (car ecb-history-show-node-info))) (if (= (tree-node->type node) ecb-history-nodetype-bucket) (tree-node->data node) (case (cdr ecb-history-show-node-info) (name (tree-node->name node)) (path (ecb-source-get-filename (tree-node->data node))) (name-path (format "%s (%s)" (tree-node->name node) (ecb-source-get-filename (tree-node->data node)))))))))) (prog1 str (unless no-message (ecb-nolog-message str))))) ;; popups ;; needs methods (tree-buffer-defpopup-command ecb-create-source "Creates a new sourcefile in current directory." (let* ((use-dialog-box nil) (dir (ecb-fix-filename (funcall (if (ecb-file-directory-p (tree-node->data node)) 'identity 'ecb-file-name-directory) (tree-node->data node)))) (filename (ecb-file-name-nondirectory (read-file-name "Source name: " (concat dir "/"))))) (ecb-select-edit-window) (if (save-match-data (string-match "\\.java$" filename)) (ecb-jde-gen-class-buffer dir filename) (find-file (concat dir "/" filename))) (when (= (point-min) (point-max)) (set-buffer-modified-p t) (let ((ecb-auto-update-methods-after-save nil)) (save-buffer)) (ecb-rebuild-methods-buffer-with-tagcache nil nil t)) (ecb-remove-dir-from-caches dir) (ecb-set-selected-directory dir t) (ecb-basic-buffer-sync))) (defun ecb-grep-directory-internal (node find) (ecb-select-edit-window) (let* ((node-data-file (ecb-source-get-filename (tree-node->data node))) (default-directory (concat (ecb-fix-filename (if (ecb-file-directory-p node-data-file) node-data-file (ecb-file-name-directory node-data-file))) (ecb-directory-sep-string node-data-file)))) (call-interactively (if find (or (and (fboundp ecb-grep-recursive-function) ecb-grep-recursive-function) 'grep-find) (or (and (fboundp ecb-grep-function) ecb-grep-function) 'grep))))) (tree-buffer-defpopup-command ecb-grep-find-directory "Runs grep-find for current directory." (ecb-grep-directory-internal node t)) (tree-buffer-defpopup-command ecb-grep-directory "Runs grep for current directory." (ecb-grep-directory-internal node nil)) (defun ecb-create-directory (parent-node) (make-directory (concat (tree-node->data parent-node) "/" (read-from-minibuffer "Directory name: "))) (ecb-update-directory-node parent-node) (tree-buffer-update)) (tree-buffer-defpopup-command ecb-delete-directory "Delete current directory." (let ((dir (tree-node->data node))) (when (ecb-confirm (concat "Really delete directory" dir "? ")) (delete-directory (tree-node->data node)) (ecb-update-directory-node (tree-node->parent node)) (tree-buffer-update)))) (defun ecb-dired-directory-internal (node &optional other) (ecb-select-edit-window) (let* ((node-data-file (ecb-source-get-filename (tree-node->data node))) (dir (ecb-fix-filename (funcall (if (ecb-file-directory-p node-data-file) 'identity 'ecb-file-name-directory) node-data-file)))) (funcall (if other 'dired-other-window 'dired) dir))) (tree-buffer-defpopup-command ecb-dired-directory "Run dired for this directory." (ecb-dired-directory-internal node)) (tree-buffer-defpopup-command ecb-dired-directory-other-window "Run dired for this directory in the other window." (ecb-dired-directory-internal node 'other)) (defun ecb-dir-run-cvs-op (node op op-arg-list) (let ((dir (tree-node->data node))) (funcall op dir op-arg-list))) (tree-buffer-defpopup-command ecb-dir-popup-cvs-status "Check status of directory \(and below) in pcl-cvs mode." (ecb-dir-run-cvs-op node 'cvs-status '("-v"))) (tree-buffer-defpopup-command ecb-dir-popup-cvs-examine "Examine directory \(and below) in pcl-cvs mode." (ecb-dir-run-cvs-op node 'cvs-examine '("-d" "-P"))) (tree-buffer-defpopup-command ecb-dir-popup-cvs-update "Update directory \(and below) in pcl-cvs mode." (ecb-dir-run-cvs-op node 'cvs-update '("-d" "-P"))) (defvar ecb-common-directories-menu nil) (setq ecb-common-directories-menu '(("Grep" (ecb-grep-directory "Grep Directory") (ecb-grep-find-directory "Grep Directory recursive")) ;;("---") ("Dired" (ecb-dired-directory "Open in Dired") (ecb-dired-directory-other-window "Open in Dired other window")) ("---") (ecb-create-source "Create Sourcefile") (ecb-create-directory "Create Child Directory") (ecb-delete-directory "Delete Directory") ("---") (ecb-add-source-path-node "Add Source Path"))) (defvar ecb-directories-menu nil "Built-in menu for the directories-buffer for directories which are not a source-path of `ecb-source-path'.") (setq ecb-directories-menu (append ecb-common-directories-menu '((ecb-node-to-source-path "Make This a Source Path") ("---") (ecb-maximize-ecb-window-menu-wrapper "Maximize window")))) (defvar ecb-directories-menu-title-creator (function (lambda (node) (let ((node-type (tree-node->type node)) (node-name (tree-node->name node))) (cond ((= node-type ecb-directories-nodetype-directory) (format "%s (Directory)" node-name)) ((= node-type ecb-directories-nodetype-sourcefile) (format "%s (File)" node-name)) ((= node-type ecb-directories-nodetype-sourcepath) (format "%s (Source-path)" node-name)))))) "The menu-title for the directories menu. Has to be either a string or a function which is called with current node and has to return a string.") (tree-buffer-defpopup-command ecb-open-source-in-editwin1 "Open current source-file the 1. edit-window." ;; We can use `ecb-source-clicked' for history-buffer too because shift-mode ;; is nil. (ecb-source-clicked node 3 1 nil nil)) (tree-buffer-defpopup-command ecb-open-source-in-editwin2 "Open current source-file the 2. edit-window." (ecb-source-clicked node 3 2 nil nil)) (tree-buffer-defpopup-command ecb-open-source-in-editwin3 "Open current source-file the 3. edit-window." (ecb-source-clicked node 3 3 nil nil)) (tree-buffer-defpopup-command ecb-open-source-in-editwin4 "Open current source-file the 4. edit-window." (ecb-source-clicked node 3 4 nil nil)) (tree-buffer-defpopup-command ecb-open-source-in-editwin5 "Open current source-file the 5. edit-window." (ecb-source-clicked node 3 5 nil nil)) (tree-buffer-defpopup-command ecb-open-source-in-editwin6 "Open current source-file the 6. edit-window." (ecb-source-clicked node 3 6 nil nil)) (tree-buffer-defpopup-command ecb-open-source-in-editwin7 "Open current source-file the 7. edit-window." (ecb-source-clicked node 3 7 nil nil)) (tree-buffer-defpopup-command ecb-open-source-in-editwin8 "Open current source-file the 8. edit-window." (ecb-source-clicked node 3 8 nil nil)) (defun ecb-dir/source/hist-menu-editwin-entries () "Generate popup-menu-entries for each edit-window if there are at least 2 edit-windows. Otherwise return nil." (let ((edit-win-list (ecb-canonical-edit-windows-list)) (result nil)) (when (> (length edit-win-list) 1) (dotimes (i (min 8 (length edit-win-list))) (setq result (append result (list (list (intern (format "ecb-open-source-in-editwin%d" (1+ i))) (format "edit-window %d" (1+ i))))))) (append (list (list "---")) ;; we want a separator (list (append (list "Open source-file in ...") result)))))) (defun ecb-directories-menu-creator (tree-buffer-name node) "Creates the popup-menus for the directories-buffer." (setq ecb-layout-prevent-handle-ecb-window-selection t) (let ((dyn-user-extension (and (functionp ecb-directories-menu-user-extension-function) (funcall ecb-directories-menu-user-extension-function tree-buffer-name node))) (dyn-builtin-extension (ecb-dir/source/hist-menu-editwin-entries))) (list (cons ecb-directories-nodetype-directory (funcall (or ecb-directories-menu-sorter 'identity) (append dyn-user-extension ecb-directories-menu-user-extension ecb-directories-menu))) (cons ecb-directories-nodetype-sourcefile (funcall (or ecb-sources-menu-sorter 'identity) (append dyn-user-extension ecb-sources-menu-user-extension ecb-sources-menu dyn-builtin-extension))) (cons ecb-directories-nodetype-sourcepath (funcall (or ecb-directories-menu-sorter 'identity) (append dyn-user-extension ecb-directories-menu-user-extension ecb-source-path-menu)))))) ;; source-path tokens (defvar ecb-source-path-menu nil "Built-in menu for the directories-buffer for directories which are elements of `ecb-source-path'.") (setq ecb-source-path-menu (append ecb-common-directories-menu '((ecb-delete-source-path "Delete Source Path") ("---") (ecb-maximize-ecb-window-menu-wrapper "Maximize window")))) (tree-buffer-defpopup-command ecb-delete-source "Deletes current sourcefile." (let* ((file (ecb-source-get-filename (tree-node->data node))) (dir (ecb-fix-filename (ecb-file-name-directory file)))) (when (ecb-confirm (concat "Really delete " (ecb-file-name-nondirectory file) "? ")) (when (get-file-buffer file) ;; if there is an open buffer for this source then we kill them - this ;; ensures also that if there are indirect-buffers to this base-buffer ;; these buffers will be killed too by Emacs and the called ;; kill-buffer-hook is called for each indirect-buffer - so all ;; history-nodes for these are removed. (kill-buffer (get-file-buffer file))) (ecb-delete-file file) (ecb-remove-dir-from-caches dir) (ecb-set-selected-directory dir t)))) (tree-buffer-defpopup-command ecb-file-popup-ediff-revision "Diff file against repository with ediff." (let ((file (ecb-source-get-filename (tree-node->data node)))) (ediff-revision file))) (tree-buffer-defpopup-command ecb-file-popup-vc-next-action "Checkin/out file." (ecb-display-source (tree-node->data node) nil) (call-interactively 'vc-next-action)) (tree-buffer-defpopup-command ecb-file-popup-vc-log "Print revision history of file." (ecb-display-source (tree-node->data node) nil) (call-interactively 'vc-print-log)) (tree-buffer-defpopup-command ecb-file-popup-vc-annotate "Annotate file" (ecb-display-source (tree-node->data node) nil) (call-interactively 'vc-annotate)) (tree-buffer-defpopup-command ecb-file-popup-vc-diff "Diff file against last version in repository." (ecb-display-source (tree-node->data node) nil) (call-interactively 'vc-diff)) (tree-buffer-defpopup-command ecb-file-popup-vc-refresh-file "Recompute the VC-state for this file." (let ((file (ecb-source-get-filename (tree-node->data node)))) (ecb-vc-cache-remove file) (ecb-vc-reset-vc-stealthy-checks))) (tree-buffer-defpopup-command ecb-file-popup-vc-refresh-dir "Recompute the VC-state-values for the whole directory." (let ((dir (ecb-fix-filename (ecb-file-name-directory (ecb-source-get-filename (tree-node->data node)))))) (ecb-vc-cache-remove-files-of-dir dir) (ecb-vc-reset-vc-stealthy-checks))) (defvar ecb-sources-menu nil "Built-in menu for the sources-buffer.") (setq ecb-sources-menu '(("Grep" (ecb-grep-directory "Grep Directory") (ecb-grep-find-directory "Grep Directory recursive")) ("Dired" (ecb-dired-directory "Open Dir in Dired") (ecb-dired-directory-other-window "Open Dir in Dired other window")) ("Filter" (ecb-popup-sources-filter-by-ext "Filter by extension") (ecb-popup-sources-filter-by-regexp "Filter by a regexp") (ecb-popup-sources-filter-none "No filter")) ("---") (ecb-create-source "Create Sourcefile") (ecb-delete-source "Delete Sourcefile") ("---") (ecb-maximize-ecb-window-menu-wrapper "Maximize window"))) (defvar ecb-sources-menu-title-creator (function (lambda (node) (ecb-file-name-nondirectory (tree-node->data node)))) "The menu-title for the sources menu. See `ecb-directories-menu-title-creator'.") (defun ecb-sources-menu-creator (tree-buffer-name node) "Creates the popup-menus for the sources-buffer." (setq ecb-layout-prevent-handle-ecb-window-selection t) (let ((dyn-user-extension (and (functionp ecb-sources-menu-user-extension-function) (funcall ecb-sources-menu-user-extension-function tree-buffer-name node))) (dyn-builtin-extension (ecb-dir/source/hist-menu-editwin-entries))) (list (cons ecb-sources-nodetype-sourcefile (funcall (or ecb-sources-menu-sorter 'identity) (append dyn-user-extension ecb-sources-menu-user-extension ecb-sources-menu dyn-builtin-extension)))))) ;; history popups (tree-buffer-defpopup-command ecb-history-kill-buffer "Kills the buffer for current entry." (let* ((buf (ecb-source-get-buffer (tree-node->data node)))) (when buf ;; current buffer is always the history-buffer - we have to set ;; the buffer representing data (buf) as current buffer - otherwise ;; ecb-kill-buffer-hook would not run correctly (with-current-buffer buf (kill-buffer buf) (ecb-add-buffers-to-history-new))))) (defun ecb-history-filter-by-ext (ext-str) "Filter history entries by extension. Returns t if the filter has been applied otherwise nil." (if (= (length ext-str) 0) (setq ecb-history-filter (cons `(lambda (buffername filename) ;; for extention-filter we only use the filename-arg (save-match-data (string-match "^[^.]+$" filename))) "No ext.")) (setq ecb-history-filter (cons `(lambda (buffername filename) ;; for extention-filter we only use the filename-arg (save-match-data (string-match ,(format "\\.%s\\'" ext-str) filename))) (format "*.%s" ext-str)))) (ecb-add-buffers-to-history-new)) (tree-buffer-defpopup-command ecb-popup-history-filter-by-ext "Filter history entries by extension." (let ((ext-str (read-string "Insert the filter-extension without leading dot: " (and node (ecb-file-name-extension (ecb-source-get-filename (tree-node->data node))))))) (ecb-history-filter-by-ext ext-str))) (defun ecb-history-filter-by-regexp (&optional regexp filter-display) "Filter history entries by REGEXP. If the first optional argument REGEXP is nil then it asks for a regexp. If second argument FILTER-DISPLAY is not nil then it is displayed in the modeline of the history-buffer for current regexp-filter. Otherwise the regexp itself. Returns t if the filter has been applied otherwise nil." (let ((regexp-str (or regexp (read-string "Insert the filter-regexp: ")))) (if (> (length regexp-str) 0) (setq ecb-history-filter (cons `(lambda (buffername filename) ;; for regexp-filter we only use the buffername-arg (save-match-data (string-match ,regexp-str buffername))) (or filter-display regexp-str))))) (ecb-add-buffers-to-history-new)) (tree-buffer-defpopup-command ecb-popup-history-filter-by-regexp "Filter history entries by regexp by popup." (ecb-history-filter-by-regexp)) (tree-buffer-defpopup-command ecb-popup-history-filter-all-existing "No history filter, i.e. add all existing file-buffers to the history." (ecb-add-all-buffers-to-history)) (tree-buffer-defpopup-command ecb-file-popup-vc-refresh-all-files "Recompute the VC-state for the whole history." (when (equal (buffer-name) ecb-history-buffer-name) (let ((files (mapcar (function (lambda (node) (ecb-source-get-filename (tree-node->data node)))) (tree-node->children (tree-buffer-get-root))))) (dolist (file files) (ecb-vc-cache-remove file)) (ecb-vc-reset-vc-stealthy-checks)))) (tree-buffer-defpopup-command ecb-popup-history-bucketize-by-dir "Bucketize the history by directory. It changes temporaly the option `ecb-history-make-buckets' to the value 'directory." (customize-set-variable 'ecb-history-make-buckets 'directory)) (tree-buffer-defpopup-command ecb-popup-history-bucketize-by-dir-with-sp "Bucketize the history by directory with source-path substitution. It changes temporaly the option `ecb-history-make-buckets' to the value 'directory-with-source-path." (customize-set-variable 'ecb-history-make-buckets 'directory-with-source-path)) (tree-buffer-defpopup-command ecb-popup-history-bucketize-by-mode "Bucketize the history by major-mode. It changes temporaly the option `ecb-history-make-buckets' to the value 'mode." (customize-set-variable 'ecb-history-make-buckets 'mode)) (tree-buffer-defpopup-command ecb-popup-history-bucketize-by-ext "Bucketize the history by file-extension. It changes temporaly the option `ecb-history-make-buckets' to the value 'extension." (customize-set-variable 'ecb-history-make-buckets 'extension)) (tree-buffer-defpopup-command ecb-popup-history-bucketize-by-reg "Bucketize the history by regular expressions. It opens the customize-buffer for the option `ecb-history-make-buckets' so the regular expressions can be inserted." (customize-option 'ecb-history-make-buckets)) (tree-buffer-defpopup-command ecb-popup-history-bucketize-never "Remove all bucketizing in the history - display it \"flat\". It changes temporaly the option `ecb-history-make-buckets' to the value 'never." (customize-set-variable 'ecb-history-make-buckets 'never)) (defun ecb-history-filter () "Apply a filter to the history-buffer to reduce the number of entries. So you get a better overlooking. There are three choices: - Filter by extension: Just insert the extension you want the History-buffer being filtered. Insert the extension without leading dot! - Filter by regexp: Insert the filter as regular expression. - No filter: This means to display an entry for all currently living file-buffers." (interactive) (let ((choice (ecb-query-string "Filter history by:" '("extension" "regexp" "no filter")))) (cond ((ecb-string= choice "extension") (ecb-history-filter-by-ext (read-string "Insert the filter-extension without leading dot: "))) ((ecb-string= choice "regexp") (ecb-history-filter-by-regexp)) (t (ecb-add-all-buffers-to-history))))) (defvar ecb-history-common-menu nil "Common menu entries for history-nodes") (setq ecb-history-common-menu '((ecb-popup-history-filter-all-existing "Exactly all living file-buffers") ("---") ("Bucketize" (ecb-popup-history-bucketize-never "No bucketizing") (ecb-popup-history-bucketize-by-dir "by directory") (ecb-popup-history-bucketize-by-dir-with-sp "by directory with source-path") (ecb-popup-history-bucketize-by-mode "by major-mode") (ecb-popup-history-bucketize-by-ext "by file-extension") (ecb-popup-history-bucketize-by-reg "by reg. expr.")) ("---") (ecb-maximize-ecb-window-menu-wrapper "Maximize window"))) (defvar ecb-history-menu nil "Built-in menu for the history-buffer.") (setq ecb-history-menu (append '(("Grep" (ecb-grep-directory "Grep Directory") (ecb-grep-find-directory "Grep Directory recursive")) ;;("---") ("Dired" (ecb-dired-directory "Open Dir in Dired") (ecb-dired-directory-other-window "Open Dir in Dired other window")) ("Filter" (ecb-popup-history-filter-by-ext "Filter by extension") (ecb-popup-history-filter-by-regexp "Filter by regexp") (ecb-popup-history-filter-all-existing "No filter")) ("---") (ecb-history-kill-buffer "Kill Buffer") (ecb-delete-source "Delete Sourcefile")) ecb-history-common-menu)) (defvar ecb-history-menu-title-creator (function (lambda (node) (tree-node->name node))) "The menu-title for the history menu. See `ecb-directories-menu-title-creator'.") (defun ecb-history-menu-creator (tree-buffer-name node) "Creates the popup-menus for the history-buffer." (setq ecb-layout-prevent-handle-ecb-window-selection t) (let ((dyn-user-extension (and (functionp ecb-history-menu-user-extension-function) (funcall ecb-history-menu-user-extension-function tree-buffer-name node))) (dyn-builtin-extension (ecb-dir/source/hist-menu-editwin-entries))) (list (cons ecb-history-nodetype-filebuffer (funcall (or ecb-history-menu-sorter 'identity) (append dyn-user-extension ecb-history-menu-user-extension ecb-history-menu dyn-builtin-extension))) (cons ecb-history-nodetype-bucket (funcall (or ecb-history-menu-sorter 'identity) (append dyn-user-extension ecb-history-common-menu))) (cons ecb-history-nodetype-indirect-filebuffer (funcall (or ecb-history-menu-sorter 'identity) (append dyn-user-extension ecb-history-menu-user-extension ecb-history-menu dyn-builtin-extension)))))) ;; create the tree-buffers (defecb-tree-buffer-creator ecb-create-directories-tree-buffer ecb-directories-buffer-name "Create the tree-buffer for directories" (tree-buffer-create ecb-directories-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-directory-node :mouse-highlight-fn t ;; highlight each node when moving mouse over it :node-data-equal-fn 'equal :maybe-empty-node-types (list ecb-directories-nodetype-directory ecb-directories-nodetype-sourcepath) ;; Now no longer tree-buffer decides if a node is displayed as leave but ;; now the file-browser does it in the function `ecb-tree-node-add-files' - ;; Reason: We have now to deal with the VC-support :leaf-node-types nil ;;(list ecb-directories-nodetype-sourcefile) :menu-creator 'ecb-directories-menu-creator :menu-titles (list (cons ecb-directories-nodetype-directory ecb-directories-menu-title-creator) (cons ecb-directories-nodetype-sourcefile ecb-directories-menu-title-creator) (cons ecb-directories-nodetype-sourcepath ecb-directories-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-directories-buffer-name ecb-tree-truncate-lines) :read-only t :tree-indent ecb-tree-indent :incr-search-p ecb-tree-incremental-search :incr-search-additional-pattern ecb-vc-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-directories-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 (list (cons ecb-directories-nodetype-sourcefile ecb-source-in-directories-buffer-face)) :expand-symbol-before-p ecb-tree-expand-symbol-before :highlight-node-face ecb-directory-face :general-face ecb-directories-general-face ;; we add an after-create-hook to the tree-buffer :after-create-hook (append (list (function (lambda () (local-set-key [f2] 'ecb-customize) (local-set-key [f3] 'ecb-show-help) (local-set-key [f4] 'ecb-add-source-path) (ecb-common-after-tree-buffer-create-actions)))) ecb-common-tree-buffer-after-create-hook ecb-directories-buffer-after-create-hook) :after-update-hook 'ecb-stealth-tasks-after-directories-update )) (defecb-tree-buffer-creator ecb-create-sources-tree-buffer ecb-sources-buffer-name "Create the tree-buffer for sources" (tree-buffer-create ecb-sources-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-source-node :mouse-highlight-fn t ;; highlight each node when moving mouse over it :node-data-equal-fn 'equal :maybe-empty-node-types nil ;; If we want to display the VC-state in the sources-icon then we should ;; set this argument to nil because then we must compute the needed icon in ;; the file-browser and not in the tree-buffer-library (analogue to the ;; methods-icons computet in the methods-browser). :leaf-node-types nil ;; (list ecb-sources-nodetype-sourcefile) :menu-creator 'ecb-sources-menu-creator :menu-titles (list (cons ecb-sources-nodetype-sourcefile ecb-sources-menu-title-creator)) :modeline-menu-creator 'ecb-common-tree-buffer-modeline-menu-creator :sticky-parent-p nil :sticky-parent-fn nil :trunc-lines (ecb-member-of-symbol/value-list ecb-sources-buffer-name ecb-tree-truncate-lines) :read-only t :tree-indent ecb-tree-indent :incr-search-p ecb-tree-incremental-search :incr-search-additional-pattern ecb-vc-incr-searchpattern-node-prefix ;; TODO: Klaus Berndl : make an option for this :reduce-tree-for-incr-search-fn (lambda (search full-search-regexp) (if (ecb-apply-filter-to-sources-buffer (and search (> (length search) 0) full-search-regexp) search) search "")) :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-sources-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-source-face :general-face ecb-sources-general-face :after-create-hook (append (list (function (lambda () (ecb-common-after-tree-buffer-create-actions)))) ecb-common-tree-buffer-after-create-hook ecb-sources-buffer-after-create-hook) :after-update-hook 'ecb-stealth-tasks-after-sources-update)) (defecb-tree-buffer-creator ecb-create-history-tree-buffer ecb-history-buffer-name "Create the tree-buffer for history" (tree-buffer-create ecb-history-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-history-node :mouse-highlight-fn t ;; highlight each node when moving mouse over it :node-data-equal-fn 'equal :maybe-empty-node-types nil :leaf-node-types nil :menu-creator 'ecb-history-menu-creator :menu-titles (list (cons ecb-history-nodetype-filebuffer ecb-history-menu-title-creator) (cons ecb-history-nodetype-indirect-filebuffer ecb-history-menu-title-creator) (cons ecb-history-nodetype-bucket ecb-history-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-history-buffer-name ecb-tree-truncate-lines) :read-only t :tree-indent ecb-tree-indent :incr-search-p ecb-tree-incremental-search :incr-search-additional-pattern ecb-vc-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-history-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-history-face :general-face ecb-history-general-face :after-create-hook (append (list (function (lambda () (ecb-common-after-tree-buffer-create-actions)))) ecb-common-tree-buffer-after-create-hook ecb-history-buffer-after-create-hook) :after-update-hook 'ecb-stealth-tasks-after-history-update)) (silentcomp-provide 'ecb-file-browser) ;;; ecb-file-browser.el ends here ecb-2.40+cvs20110608/ecb-help.el000066400000000000000000000514601157374236500156250ustar00rootroot00000000000000;;; 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 ;; Kevin A. Burton ;; Maintainer: Klaus Berndl ;; 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: ecb-help.el,v 1.121 2009/06/23 11:16:56 berndl Exp $ ;;; 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 ecb-2.40+cvs20110608/ecb-images/000077500000000000000000000000001157374236500156125ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/default/000077500000000000000000000000001157374236500172365ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/default/height-10/000077500000000000000000000000001157374236500207245ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/default/height-10/ecb-close.xpm000066400000000000000000000014101157374236500233020ustar00rootroot00000000000000/* 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$ ", " #$$$$$$$# ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-10/ecb-empty.xpm000066400000000000000000000012401157374236500233340ustar00rootroot00000000000000/* 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", " ", " .. ", " +@#. ", " .$%&*. ", "=-;>,'). ", "=!~{']^. ", " ./(_:. ", " <[}. ", " .. ", " "}; ecb-2.40+cvs20110608/ecb-images/default/height-10/ecb-end-guide.xpm000066400000000000000000000002701157374236500240410ustar00rootroot00000000000000/* XPM */ static char * end_guide_xpm[] = { "6 10 2 1", " c None", ". c #ADA5C6", " . ", " . ", " . ", " . ", " . ", " ", " ", " ", " ", " "}; ecb-2.40+cvs20110608/ecb-images/default/height-10/ecb-guide.xpm000066400000000000000000000002641157374236500233000ustar00rootroot00000000000000/* XPM */ static char * guide_xpm[] = { "6 10 2 1", " c None", ". c #ADA5C6", " . ", " . ", " . ", " . ", " . ", " . ", " . ", " . ", " . ", " . "}; ecb-2.40+cvs20110608/ecb-images/default/height-10/ecb-handle.xpm000066400000000000000000000003311157374236500234310ustar00rootroot00000000000000/* XPM */ static char * ecbhandle_xpm[] = { "8 10 3 1", " c None", "! c black", "# c #ADA5C6", " ", " ", " ", " ", "########", " ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-10/ecb-leaf.xpm000066400000000000000000000010661157374236500231130ustar00rootroot00000000000000/* 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", " ", " .+++ ", " @#$%&* ", " =#$%&-;* ", ">#$%,-;')+ ", ">$%,-;')!+ ", " ~&-;'){* ", " ];'){* ", " ^+++ ", " "}; ecb-2.40+cvs20110608/ecb-images/default/height-10/ecb-no-guide.xpm000066400000000000000000000002501157374236500237050ustar00rootroot00000000000000/* XPM */ static char * no_guide_xpm[] = { "6 10 1 1", " c None", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; ecb-2.40+cvs20110608/ecb-images/default/height-10/ecb-no-handle.xpm000066400000000000000000000003141157374236500240440ustar00rootroot00000000000000/* XPM */ static char * ecbnohandle_xpm[] = { "8 10 2 1", " c None", "! c black", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-10/ecb-open.xpm000066400000000000000000000014451157374236500231460ustar00rootroot00000000000000/* 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$ ", " #$$$$$$$# ", " . "};ecb-2.40+cvs20110608/ecb-images/default/height-14/000077500000000000000000000000001157374236500207305ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/default/height-14/ecb-close.xpm000066400000000000000000000015111157374236500233100ustar00rootroot00000000000000/* 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. ", " ....... ", " ", " "}; ecb-2.40+cvs20110608/ecb-images/default/height-14/ecb-empty.xpm000066400000000000000000000112101157374236500233360ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-14/ecb-end-guide.xpm000066400000000000000000000105641157374236500240540ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-14/ecb-guide.xpm000066400000000000000000000105601157374236500233040ustar00rootroot00000000000000/* 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`#" }; ecb-2.40+cvs20110608/ecb-images/default/height-14/ecb-handle.xpm000066400000000000000000000003641157374236500234430ustar00rootroot00000000000000/* XPM */ static char * ecb_handle_xpm[] = { "6 14 2 1", " c None", ". c #ADA5C6", " ", " ", " ", " ", " ", " ", " ", "......", " ", " ", " ", " ", " ", " "}; ecb-2.40+cvs20110608/ecb-images/default/height-14/ecb-leaf.xpm000066400000000000000000000112071157374236500231150ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-14/ecb-no-guide.xpm000066400000000000000000000105621157374236500237200ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-14/ecb-no-handle.xpm000066400000000000000000000003471157374236500240560ustar00rootroot00000000000000/* XPM */ static char * ecb_no_handle_xpm[] = { "6 14 1 1", " c None", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; ecb-2.40+cvs20110608/ecb-images/default/height-14/ecb-open.xpm000066400000000000000000000015501157374236500231470ustar00rootroot00000000000000/* 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. ", " ....... ", " > ", " > "}; ecb-2.40+cvs20110608/ecb-images/default/height-15/000077500000000000000000000000001157374236500207315ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/default/height-15/ecb-close.xpm000066400000000000000000000015541157374236500233200ustar00rootroot00000000000000/* 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$ ", " #$$$$$$$# ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-15/ecb-empty.xpm000066400000000000000000000112541157374236500233470ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-15/ecb-end-guide.xpm000066400000000000000000000106041157374236500240500ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-15/ecb-guide.xpm000066400000000000000000000106001157374236500233000ustar00rootroot00000000000000/* 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`#" }; ecb-2.40+cvs20110608/ecb-images/default/height-15/ecb-handle.xpm000066400000000000000000000004251157374236500234420ustar00rootroot00000000000000/* XPM */ static char * ecbhandle_xpm[] = { "8 15 3 1", " c None", "! c black", "# c #ADA5C6", " ", " ", " ", " ", " ", " ", " ", "########", " ", " ", " ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-15/ecb-leaf.xpm000066400000000000000000000112531157374236500231170ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-15/ecb-no-guide.xpm000066400000000000000000000106021157374236500237140ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-15/ecb-no-handle.xpm000066400000000000000000000004101157374236500240460ustar00rootroot00000000000000/* XPM */ static char * ecbnohandle_xpm[] = { "8 15 2 1", " c None", "! c black", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-15/ecb-open.xpm000066400000000000000000000016111157374236500231460ustar00rootroot00000000000000/* 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$ ", " #$$$$$$$# ", " . ", " . ", " . "};ecb-2.40+cvs20110608/ecb-images/default/height-16/000077500000000000000000000000001157374236500207325ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/default/height-16/ecb-close.xpm000066400000000000000000000016001157374236500233110ustar00rootroot00000000000000/* 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$ ", " #$$$$$$$# ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-16/ecb-empty.xpm000066400000000000000000000113201157374236500233420ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-16/ecb-end-guide.xpm000066400000000000000000000106241157374236500240530ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-16/ecb-guide.xpm000066400000000000000000000106201157374236500233030ustar00rootroot00000000000000/* 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`#" }; ecb-2.40+cvs20110608/ecb-images/default/height-16/ecb-handle.xpm000066400000000000000000000004411157374236500234410ustar00rootroot00000000000000/* XPM */ static char * ecbhandle_xpm[] = { "8 16 3 1", " c None", "! c black", "# c #ADA5C6", " ", " ", " ", " ", " ", " ", " ", " ", "########", " ", " ", " ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-16/ecb-leaf.xpm000066400000000000000000000113171157374236500231210ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-16/ecb-no-guide.xpm000066400000000000000000000106221157374236500237170ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-16/ecb-no-handle.xpm000066400000000000000000000004241157374236500240540ustar00rootroot00000000000000/* XPM */ static char * ecbnohandle_xpm[] = { "8 16 2 1", " c None", "! c black", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-16/ecb-open.xpm000066400000000000000000000016351157374236500231550ustar00rootroot00000000000000/* 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$ ", " #$$$$$$$# ", " . ", " . ", " . "};ecb-2.40+cvs20110608/ecb-images/default/height-17/000077500000000000000000000000001157374236500207335ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/default/height-17/ecb-close.xpm000066400000000000000000000016241157374236500233200ustar00rootroot00000000000000/* 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$ ", " #$$$$$$$# ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-17/ecb-empty.xpm000066400000000000000000000113641157374236500233530ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-17/ecb-end-guide.xpm000066400000000000000000000106441157374236500240560ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-17/ecb-guide.xpm000066400000000000000000000106401157374236500233060ustar00rootroot00000000000000/* 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`#" }; ecb-2.40+cvs20110608/ecb-images/default/height-17/ecb-handle.xpm000066400000000000000000000004551157374236500234470ustar00rootroot00000000000000/* XPM */ static char * ecbhandle_xpm[] = { "8 17 3 1", " c None", "! c black", "# c #ADA5C6", " ", " ", " ", " ", " ", " ", " ", " ", "########", " ", " ", " ", " ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-17/ecb-leaf.xpm000066400000000000000000000113631157374236500231230ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-17/ecb-no-guide.xpm000066400000000000000000000106421157374236500237220ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-17/ecb-no-handle.xpm000066400000000000000000000004401157374236500240530ustar00rootroot00000000000000/* XPM */ static char * ecbnohandle_xpm[] = { "8 17 2 1", " c None", "! c black", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-17/ecb-open.xpm000066400000000000000000000016611157374236500231550ustar00rootroot00000000000000/* 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$ ", " #$$$$$$$# ", " . ", " . ", " . ", " . "};ecb-2.40+cvs20110608/ecb-images/default/height-18/000077500000000000000000000000001157374236500207345ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/default/height-18/ecb-close.xpm000066400000000000000000000016501157374236500233200ustar00rootroot00000000000000/* 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$ ", " #$$$$$$$# ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-18/ecb-empty.xpm000066400000000000000000000114301157374236500233460ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-18/ecb-end-guide.xpm000066400000000000000000000106641157374236500240610ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-18/ecb-guide.xpm000066400000000000000000000106601157374236500233110ustar00rootroot00000000000000/* 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`#" }; ecb-2.40+cvs20110608/ecb-images/default/height-18/ecb-handle.xpm000066400000000000000000000004711157374236500234460ustar00rootroot00000000000000/* XPM */ static char * ecbhandle_xpm[] = { "8 18 3 1", " c None", "! c black", "# c #ADA5C6", " ", " ", " ", " ", " ", " ", " ", " ", " ", "########", " ", " ", " ", " ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-18/ecb-leaf.xpm000066400000000000000000000114271157374236500231250ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-18/ecb-no-guide.xpm000066400000000000000000000106631157374236500237260ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-18/ecb-no-handle.xpm000066400000000000000000000004541157374236500240610ustar00rootroot00000000000000/* XPM */ static char * ecbnohandle_xpm[] = { "8 18 2 1", " c None", "! c black", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-18/ecb-open.xpm000066400000000000000000000017051157374236500231550ustar00rootroot00000000000000/* 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$ ", " #$$$$$$$# ", " . ", " . ", " . ", " . "};ecb-2.40+cvs20110608/ecb-images/default/height-19/000077500000000000000000000000001157374236500207355ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/default/height-19/ecb-close.xpm000066400000000000000000000016741157374236500233270ustar00rootroot00000000000000/* 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$ ", " #$$$$$$$# ", " ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-19/ecb-empty.xpm000066400000000000000000000114741157374236500233570ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-19/ecb-end-guide.xpm000066400000000000000000000107041157374236500240550ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-19/ecb-guide.xpm000066400000000000000000000107001157374236500233050ustar00rootroot00000000000000/* 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`#" }; ecb-2.40+cvs20110608/ecb-images/default/height-19/ecb-handle.xpm000066400000000000000000000005051157374236500234450ustar00rootroot00000000000000/* XPM */ static char * ecbhandle_xpm[] = { "8 19 3 1", " c None", "! c black", "# c #ADA5C6", " ", " ", " ", " ", " ", " ", " ", " ", " ", "########", " ", " ", " ", " ", " ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-19/ecb-leaf.xpm000066400000000000000000000114731157374236500231270ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-19/ecb-no-guide.xpm000066400000000000000000000107031157374236500237220ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-19/ecb-no-handle.xpm000066400000000000000000000004701157374236500240600ustar00rootroot00000000000000/* XPM */ static char * ecbnohandle_xpm[] = { "8 19 2 1", " c None", "! c black", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-19/ecb-open.xpm000066400000000000000000000017311157374236500231550ustar00rootroot00000000000000/* 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$ ", " #$$$$$$$# ", " . ", " . ", " . ", " . ", " . "};ecb-2.40+cvs20110608/ecb-images/default/height-20/000077500000000000000000000000001157374236500207255ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/default/height-20/ecb-close.xpm000066400000000000000000000017201157374236500233070ustar00rootroot00000000000000/* 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$ ", " #$$$$$$$# ", " ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-20/ecb-empty.xpm000066400000000000000000000115401157374236500233410ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-20/ecb-end-guide.xpm000066400000000000000000000107241157374236500240470ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-20/ecb-guide.xpm000066400000000000000000000107201157374236500232770ustar00rootroot00000000000000/* 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`#" }; ecb-2.40+cvs20110608/ecb-images/default/height-20/ecb-handle.xpm000066400000000000000000000005211157374236500234330ustar00rootroot00000000000000/* XPM */ static char * ecbhandle_xpm[] = { "8 20 3 1", " c None", "! c black", "# c #ADA5C6", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "########", " ", " ", " ", " ", " ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-20/ecb-leaf.xpm000066400000000000000000000115371157374236500231200ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-20/ecb-no-guide.xpm000066400000000000000000000107231157374236500237140ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-20/ecb-no-handle.xpm000066400000000000000000000005041157374236500240460ustar00rootroot00000000000000/* XPM */ static char * ecbnohandle_xpm[] = { "8 20 2 1", " c None", "! c black", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-20/ecb-open.xpm000066400000000000000000000017551157374236500231530ustar00rootroot00000000000000/* 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$ ", " #$$$$$$$# ", " . ", " . ", " . ", " . ", " . "};ecb-2.40+cvs20110608/ecb-images/default/height-21/000077500000000000000000000000001157374236500207265ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/default/height-21/ecb-close.xpm000066400000000000000000000017441157374236500233160ustar00rootroot00000000000000/* 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$ ", " #$$$$$$$# ", " ", " ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-21/ecb-empty.xpm000066400000000000000000000116041157374236500233430ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-21/ecb-end-guide.xpm000066400000000000000000000107441157374236500240520ustar00rootroot00000000000000/* 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" }; ecb-2.40+cvs20110608/ecb-images/default/height-21/ecb-guide.xpm000066400000000000000000000107401157374236500233020ustar00rootroot00000000000000/* 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`#" }; ecb-2.40+cvs20110608/ecb-images/default/height-21/ecb-handle.xpm000066400000000000000000000005351157374236500234410ustar00rootroot00000000000000/* XPM */ static char * ecbhandle_xpm[] = { "8 21 3 1", " c None", "! c black", "# c #ADA5C6", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "########", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-21/ecb-leaf.xpm000066400000000000000000000116031157374236500231130ustar00rootroot00000000000000/* XPM */ static char *leaf[] = { /* width height num_colors chars_per_pixel */ " 16 21 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", "`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f" }; ecb-2.40+cvs20110608/ecb-images/default/height-21/ecb-no-guide.xpm000066400000000000000000000107431157374236500237170ustar00rootroot00000000000000/* XPM */ static char *no-guide[] = { /* width height num_colors chars_per_pixel */ " 6 21 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", "`g`g`g`g`g`g" }; ecb-2.40+cvs20110608/ecb-images/default/height-21/ecb-no-handle.xpm000066400000000000000000000005201157374236500240450ustar00rootroot00000000000000/* XPM */ static char * ecbnohandle_xpm[] = { "8 21 2 1", " c None", "! c black", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/default/height-21/ecb-open.xpm000066400000000000000000000020011157374236500231350ustar00rootroot00000000000000/* XPM */ static char * ecbopen_xpm[] = { "16 21 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$ ", " #$$$$$$$# ", " . ", " . ", " . ", " . ", " . ", " . "};ecb-2.40+cvs20110608/ecb-images/directories/000077500000000000000000000000001157374236500201265ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/directories/height-10/000077500000000000000000000000001157374236500216145ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/directories/height-10/ecb-close.xpm000066400000000000000000000017331157374236500242020ustar00rootroot00000000000000/* XPM */ static char * close_xpm[] = { "16 10 49 1", " c None", ". c #98981E", "+ c #96961B", "@ c #929216", "# c #FFFDBC", "$ c #B5B54B", "% c #949418", "& c #94941A", "* c #97971D", "= c #98981F", "- c #999923", "; c #8E8E0F", "> c #878706", ", c #95951B", "' c #98981D", ") c #9F9F26", "! c #ADAD40", "~ c #B0B045", "{ c #B5B54A", "] c #B6B651", "^ c #BCBC59", "/ c #919115", "( c #8B8B0B", "_ c #A4A430", ": c #A9A935", "< c #AFAF44", "[ c #B4B449", "} c #B5B550", "| c #BDBD5A", "1 c #8C8C0C", "2 c #AAAA36", "3 c #BEBE5B", "4 c #C3C361", "5 c #939317", "6 c #8D8D0E", "7 c #ADAD3F", "8 c #B6B650", "9 c #BBBB58", "0 c #C2C260", "a c #C6C669", "b c #939319", "c c #8D8D0F", "d c #C2C25F", "e c #C9C96E", "f c #868603", "g c #8E8E11", "h c #8F8F12", "i c #919114", "j c #878705", " ", " ..+ ", "@##$%&*=-; ", ">,')!~{]^/ ", "(_:!<[}^|/ ", "12!<$]^345 ", "67<{89|0ab ", "c<[89|dae& ", "f6;ghhi/@j ", " "}; ecb-2.40+cvs20110608/ecb-images/directories/height-10/ecb-empty.xpm000066400000000000000000000011631157374236500242300ustar00rootroot00000000000000/* XPM */ static char * empty_xpm[] = { "16 10 25 1", " c None", ". c #454545", "+ c #A5A5A5", "@ c #A3A3A3", "# c #999999", "$ c #7B7B7B", "% c #666666", "& c #656565", "* c #636363", "= c #616161", "- c #5B5B5B", "; c #424242", "> c #7E7E7E", ", c #6F6F6F", "' c #6D6D6D", ") c #737373", "! c #747474", "~ c #797979", "{ c #848484", "] c #727272", "^ c #585858", "/ c #646464", "( c #838383", "_ c #858585", ": c #4F4F4F", " ", " ... ", ".+@#.... ", ".@$%&*=-.; ", ".>$....... ", ".,.')!~>{.. ", "..']!~>{.^ ", "./])~>(_. ", "........: ", " "}; ecb-2.40+cvs20110608/ecb-images/directories/height-10/ecb-leaf.xpm000066400000000000000000000010301157374236500237720ustar00rootroot00000000000000/* XPM */ static char * leaf_xpm[] = { "16 10 19 1", " c None", ". c #424242", "+ c #494949", "@ c #979797", "# c #9D9D9D", "$ c #A4A4A4", "% c #737373", "& c #999999", "* c #9B9B9B", "= c #A2A2A2", "- c #B3B3B3", "; c #939393", "> c #989898", ", c #BABABA", "' c #9C9C9C", ") c #949494", "! c #BDBDBD", "~ c #AFAFAF", "{ c #B5B5B5", " ", "....+ ", ".@#$.% ", ".@&#... ", ".#*==-. ", ".&&;>,. ", ".')>>!. ", ".~{,!!. ", "....... ", " "}; ecb-2.40+cvs20110608/ecb-images/directories/height-10/ecb-open.xpm000066400000000000000000000010471157374236500240340ustar00rootroot00000000000000/* XPM */ static char * open_xpm[] = { "16 10 20 1", " c None", ". c #848400", "+ c #FFFDBC", "@ c #D6D67B", "# c #CECE7B", "$ c #C6C66B", "% c #BDBD5A", "& c #CECE73", "* c #B2B247", "= c #B8B84D", "- c #BDBD57", "; c #C0C05D", "> c #B9B950", ", c #C9C96A", "' c #C1C15E", ") c #B7B74C", "! c #BCBC56", "~ c #C6C664", "{ c #ADAD40", "] c #A5A5C6", " .. ", ".++... ", ".@##$%. ", ".@&...... ", ".&.*=-;>,. ", ".&.=-'',. ", "..)!;~,,. ", ".{{!~,,. ", "....... ", " ] "}; ecb-2.40+cvs20110608/ecb-images/directories/height-14/000077500000000000000000000000001157374236500216205ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/directories/height-14/ecb-close.xpm000066400000000000000000000112101157374236500241750ustar00rootroot00000000000000/* XPM */ static char *close[] = { /* width height num_colors chars_per_pixel */ " 16 14 256 2", /* colors */ "`` c #848400", "`. c #9c9c29", "`# c #a5a531", "`a c #adad39", "`b c #adad42", "`c c #b5b54a", "`d c #b5b552", "`e c #bdbd52", "`f c #bdbd5a", "`g c #c6c663", "`h c #c6c66b", "`i c #cece6b", "`j c #cece73", "`k c #dede8c", "`l c #e7e794", "`m c #e7e79c", "`n c #efef9c", "`o c None", "`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 */ "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`````````o`o`o`o`o`o`o`o`o`o`o", "```m`l`l`k```````````````o`o`o`o", "```````````a`b`b`c`c`d`f```o`o`o", "```.`#`#`a`b`b`c`c`d`f`f```o`o`o", "```#`#`a`b`b`c`c`d`f`f`f```o`o`o", "```#`a`b`b`c`c`d`f`f`f`g```o`o`o", "```a`b`b`c`c`d`f`f`f`g`h```o`o`o", "```b`b`c`c`d`f`f`f`g`h`h```o`o`o", "```b`c`c`d`f`f`f`g`h`h`j```o`o`o", "```````````````````````````o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o" }; ecb-2.40+cvs20110608/ecb-images/directories/height-14/ecb-empty.xpm000066400000000000000000000112101157374236500242260ustar00rootroot00000000000000/* XPM */ static char *empty[] = { /* width height num_colors chars_per_pixel */ " 16 14 256 2", /* colors */ "`` c #424242", "`. c #6b6b6b", "`# c #737373", "`a c #7b7b7b", "`b c #848484", "`c c #8c8c8c", "`d c #949494", "`e c #9c9c9c", "`f c #a5a5a5", "`g c #adadad", "`h c None", "`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 */ "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`````````h`h`h`h`h`h`h`h`h`h`h", "```f`f`f`e```````````h`h`h`h`h`h", "```f`f`e`e`e`d`d`c`c```h`h`h`h`h", "```f`e`````````````````````h`h`h", "```e```.`.`.`#`#`#`a`a`b`b```h`h", "```e```.`.`#`#`#`a`a`b`b```h`h`h", "`````.`.`#`#`#`a`a`b`b`b```h`h`h", "`````.`#`#`#`a`a`b`b`b```h`h`h`h", "```.`#`#`#`a`a`b`b`b`c```h`h`h`h", "```````````````````````h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h" }; ecb-2.40+cvs20110608/ecb-images/directories/height-14/ecb-leaf.xpm000066400000000000000000000112071157374236500240050ustar00rootroot00000000000000/* XPM */ static char *leaf[] = { /* width height num_colors chars_per_pixel */ " 16 14 256 2", /* colors */ "`` c #000000", "`. c #424242", "`# c #848484", "`a c #949494", "`b c #9c9c9c", "`c c #a5a5a5", "`d c #adadad", "`e c #b5b5b5", "`f c #bdbdbd", "`g c #c6c6c6", "`h c None", "`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 */ "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`.`.`.`.`.`.`.`h`h`h`h`h`h`h`h`h", "`.`a`a`b`b`c`.`.`h`h`h`h`h`h`h`h", "`.`a`b`b`c`c`.`d`.`h`h`h`h`h`h`h", "`.`b`b`c`c`c`.`.`.`.`h`h`h`h`h`h", "`.`b`#`#`#`a`#`d`e`.`h`h`h`h`h`h", "`.`c`c`c`d`d`d`e`e`.`h`h`h`h`h`h", "`.`c`#`a`#`#`#`e`f`.`h`h`h`h`h`h", "`.`c`d`d`d`e`e`f`f`.`h`h`h`h`h`h", "`.`d`#`#`a`#`#`f`f`.`h`h`h`h`h`h", "`.`d`d`e`e`f`f`f`f`.`h`h`h`h`h`h", "`.`d`e`e`f`f`f`f`f`.`h`h`h`h`h`h", "`.`.`.`.`.`.`.`.`.`.`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h" }; ecb-2.40+cvs20110608/ecb-images/directories/height-14/ecb-open.xpm000066400000000000000000000112071157374236500240370ustar00rootroot00000000000000/* XPM */ static char *open[] = { /* width height num_colors chars_per_pixel */ " 16 14 256 2", /* colors */ "`` c #848400", "`. c #a5a5c6", "`# c #adad39", "`a c #adad42", "`b c #b5b54a", "`c c #bdbd52", "`d c #bdbd5a", "`e c #c6c663", "`f c #c6c66b", "`g c #cece6b", "`h c #cece73", "`i c #cece7b", "`j c #d6d67b", "`k c None", "`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 */ "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`````````k`k`k`k`k`k`k`k`k`k`k", "```j`i`i`h```````````k`k`k`k`k`k", "```i`i`h`h`f`f`d`d`c```k`k`k`k`k", "```i`h`````````````````````k`k`k", "```h```#`a`a`b`b`c`d`d`e`e```k`k", "```h```a`a`b`b`c`d`d`e`e```k`k`k", "`````a`a`b`b`c`d`d`e`e`f```k`k`k", "`````a`b`b`c`d`d`e`e`f```k`k`k`k", "```a`b`b`c`d`d`e`e`f`g```k`k`k`k", "```````````````````````k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k" }; ecb-2.40+cvs20110608/ecb-images/directories/height-15/000077500000000000000000000000001157374236500216215ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/directories/height-15/ecb-close.xpm000066400000000000000000000112541157374236500242060ustar00rootroot00000000000000/* XPM */ static char *close[] = { /* width height num_colors chars_per_pixel */ " 16 15 256 2", /* colors */ "`` c #848400", "`. c #9c9c29", "`# c #a5a531", "`a c #adad39", "`b c #adad42", "`c c #b5b54a", "`d c #b5b552", "`e c #bdbd52", "`f c #bdbd5a", "`g c #c6c663", "`h c #c6c66b", "`i c #cece6b", "`j c #cece73", "`k c #dede8c", "`l c #e7e794", "`m c #e7e79c", "`n c #efef9c", "`o c None", "`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 */ "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`````````o`o`o`o`o`o`o`o`o`o`o", "```m`l`l`k```````````````o`o`o`o", "```````````a`b`b`c`c`d`f```o`o`o", "```.`#`#`a`b`b`c`c`d`f`f```o`o`o", "```#`#`a`b`b`c`c`d`f`f`f```o`o`o", "```#`a`b`b`c`c`d`f`f`f`g```o`o`o", "```a`b`b`c`c`d`f`f`f`g`h```o`o`o", "```b`b`c`c`d`f`f`f`g`h`h```o`o`o", "```b`c`c`d`f`f`f`g`h`h`j```o`o`o", "```````````````````````````o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o" }; ecb-2.40+cvs20110608/ecb-images/directories/height-15/ecb-empty.xpm000066400000000000000000000010631157374236500242340ustar00rootroot00000000000000/* XPM */ static char * ecbempty_xpm[] = { "16 15 14 1", " c None", "! c black", "# c #AEA950", "$ c #FDF9B1", "% c #FDF9AC", "& c #FDF9A9", "' c #FDF8A0", "( c #FDF793", ") c #FDF790", "* c #FCF67C", "+ c #FCF67F", ", c #FCF688", "- c #FDF89D", ". c #FDF9A6", " ", " ", " #### ", "#$%%&##### ", "#%%&&''(()# ", "#%&########## ", "#&#*++,,)((--# ", "#&#++,,)((--# ", "##++,,)((--'# ", "##+,,)((--'# ", "#+,,)((--'.# ", "########### ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/directories/height-15/ecb-leaf.xpm000066400000000000000000000112531157374236500240070ustar00rootroot00000000000000/* XPM */ static char *leaf[] = { /* width height num_colors chars_per_pixel */ " 16 15 256 2", /* colors */ "`` c #000000", "`. c #424242", "`# c #848484", "`a c #949494", "`b c #9c9c9c", "`c c #a5a5a5", "`d c #adadad", "`e c #b5b5b5", "`f c #bdbdbd", "`g c #c6c6c6", "`h c None", "`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 */ "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`.`.`.`.`.`.`.`h`h`h`h`h`h`h`h`h", "`.`a`a`b`b`c`.`.`h`h`h`h`h`h`h`h", "`.`a`b`b`c`c`.`d`.`h`h`h`h`h`h`h", "`.`b`b`c`c`c`.`.`.`.`h`h`h`h`h`h", "`.`b`#`#`#`a`#`d`e`.`h`h`h`h`h`h", "`.`c`c`c`d`d`d`e`e`.`h`h`h`h`h`h", "`.`c`#`a`#`#`#`e`f`.`h`h`h`h`h`h", "`.`c`d`d`d`e`e`f`f`.`h`h`h`h`h`h", "`.`d`#`#`a`#`#`f`f`.`h`h`h`h`h`h", "`.`d`d`e`e`f`f`f`f`.`h`h`h`h`h`h", "`.`d`e`e`f`f`f`f`f`.`h`h`h`h`h`h", "`.`.`.`.`.`.`.`.`.`.`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h" }; ecb-2.40+cvs20110608/ecb-images/directories/height-15/ecb-open.xpm000066400000000000000000000112531157374236500240410ustar00rootroot00000000000000/* XPM */ static char *open[] = { /* width height num_colors chars_per_pixel */ " 16 15 256 2", /* colors */ "`` c #848400", "`. c #a5a5c6", "`# c #adad39", "`a c #adad42", "`b c #b5b54a", "`c c #bdbd52", "`d c #bdbd5a", "`e c #c6c663", "`f c #c6c66b", "`g c #cece6b", "`h c #cece73", "`i c #cece7b", "`j c #d6d67b", "`k c None", "`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 */ "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`````````k`k`k`k`k`k`k`k`k`k`k", "```j`i`i`h```````````k`k`k`k`k`k", "```i`i`h`h`f`f`d`d`c```k`k`k`k`k", "```i`h`````````````````````k`k`k", "```h```#`a`a`b`b`c`d`d`e`e```k`k", "```h```a`a`b`b`c`d`d`e`e```k`k`k", "`````a`a`b`b`c`d`d`e`e`f```k`k`k", "`````a`b`b`c`d`d`e`e`f```k`k`k`k", "```a`b`b`c`d`d`e`e`f`g```k`k`k`k", "```````````````````````k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k" }; ecb-2.40+cvs20110608/ecb-images/directories/height-16/000077500000000000000000000000001157374236500216225ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/directories/height-16/ecb-close.xpm000066400000000000000000000113171157374236500242070ustar00rootroot00000000000000/* XPM */ static char *close[] = { /* width height num_colors chars_per_pixel */ " 16 16 256 2", /* colors */ "`` c #848400", "`. c #9c9c29", "`# c #a5a531", "`a c #adad39", "`b c #adad42", "`c c #b5b54a", "`d c #b5b552", "`e c #bdbd52", "`f c #bdbd5a", "`g c #c6c663", "`h c #c6c66b", "`i c #cece6b", "`j c #cece73", "`k c #dede8c", "`l c #e7e794", "`m c #e7e79c", "`n c #efef9c", "`o c None", "`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 */ "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`````````o`o`o`o`o`o`o`o`o`o`o", "```m`l`l`k```````````````o`o`o`o", "```````````a`b`b`c`c`d`f```o`o`o", "```.`#`#`a`b`b`c`c`d`f`f```o`o`o", "```#`#`a`b`b`c`c`d`f`f`f```o`o`o", "```#`a`b`b`c`c`d`f`f`f`g```o`o`o", "```a`b`b`c`c`d`f`f`f`g`h```o`o`o", "```b`b`c`c`d`f`f`f`g`h`h```o`o`o", "```b`c`c`d`f`f`f`g`h`h`j```o`o`o", "```````````````````````````o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o" }; ecb-2.40+cvs20110608/ecb-images/directories/height-16/ecb-empty.xpm000066400000000000000000000011071157374236500242340ustar00rootroot00000000000000/* XPM */ static char * ecbempty_xpm[] = { "16 16 14 1", " c None", "! c black", "# c #AEA950", "$ c #FDF9B1", "% c #FDF9AC", "& c #FDF9A9", "' c #FDF8A0", "( c #FDF793", ") c #FDF790", "* c #FCF67C", "+ c #FCF67F", ", c #FCF688", "- c #FDF89D", ". c #FDF9A6", " ", " ", " #### ", "#$%%&##### ", "#%%&&''(()# ", "#%&########## ", "#&#*++,,)((--# ", "#&#++,,)((--# ", "##++,,)((--'# ", "##+,,)((--'# ", "#+,,)((--'.# ", "########### ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/directories/height-16/ecb-leaf.xpm000066400000000000000000000113171157374236500240110ustar00rootroot00000000000000/* XPM */ static char *leaf[] = { /* width height num_colors chars_per_pixel */ " 16 16 256 2", /* colors */ "`` c #000000", "`. c #424242", "`# c #848484", "`a c #949494", "`b c #9c9c9c", "`c c #a5a5a5", "`d c #adadad", "`e c #b5b5b5", "`f c #bdbdbd", "`g c #c6c6c6", "`h c None", "`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 */ "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`.`.`.`.`.`.`.`h`h`h`h`h`h`h`h`h", "`.`a`a`b`b`c`.`.`h`h`h`h`h`h`h`h", "`.`a`b`b`c`c`.`d`.`h`h`h`h`h`h`h", "`.`b`b`c`c`c`.`.`.`.`h`h`h`h`h`h", "`.`b`#`#`#`a`#`d`e`.`h`h`h`h`h`h", "`.`c`c`c`d`d`d`e`e`.`h`h`h`h`h`h", "`.`c`#`a`#`#`#`e`f`.`h`h`h`h`h`h", "`.`c`d`d`d`e`e`f`f`.`h`h`h`h`h`h", "`.`d`#`#`a`#`#`f`f`.`h`h`h`h`h`h", "`.`d`d`e`e`f`f`f`f`.`h`h`h`h`h`h", "`.`d`e`e`f`f`f`f`f`.`h`h`h`h`h`h", "`.`.`.`.`.`.`.`.`.`.`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h" }; ecb-2.40+cvs20110608/ecb-images/directories/height-16/ecb-open.xpm000066400000000000000000000113171157374236500240430ustar00rootroot00000000000000/* XPM */ static char *open[] = { /* width height num_colors chars_per_pixel */ " 16 16 256 2", /* colors */ "`` c #848400", "`. c #a5a5c6", "`# c #adad39", "`a c #adad42", "`b c #b5b54a", "`c c #bdbd52", "`d c #bdbd5a", "`e c #c6c663", "`f c #c6c66b", "`g c #cece6b", "`h c #cece73", "`i c #cece7b", "`j c #d6d67b", "`k c None", "`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 */ "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`````````k`k`k`k`k`k`k`k`k`k`k", "```j`i`i`h```````````k`k`k`k`k`k", "```i`i`h`h`f`f`d`d`c```k`k`k`k`k", "```i`h`````````````````````k`k`k", "```h```#`a`a`b`b`c`d`d`e`e```k`k", "```h```a`a`b`b`c`d`d`e`e```k`k`k", "`````a`a`b`b`c`d`d`e`e`f```k`k`k", "`````a`b`b`c`d`d`e`e`f```k`k`k`k", "```a`b`b`c`d`d`e`e`f`g```k`k`k`k", "```````````````````````k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k" }; ecb-2.40+cvs20110608/ecb-images/directories/height-17/000077500000000000000000000000001157374236500216235ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/directories/height-17/ecb-close.xpm000066400000000000000000000113641157374236500242120ustar00rootroot00000000000000/* XPM */ static char *close[] = { /* width height num_colors chars_per_pixel */ " 16 17 256 2", /* colors */ "`` c #848400", "`. c #9c9c29", "`# c #a5a531", "`a c #adad39", "`b c #adad42", "`c c #b5b54a", "`d c #b5b552", "`e c #bdbd52", "`f c #bdbd5a", "`g c #c6c663", "`h c #c6c66b", "`i c #cece6b", "`j c #cece73", "`k c #dede8c", "`l c #e7e794", "`m c #e7e79c", "`n c #efef9c", "`o c None", "`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 */ "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`````````o`o`o`o`o`o`o`o`o`o`o", "```m`l`l`k```````````````o`o`o`o", "```````````a`b`b`c`c`d`f```o`o`o", "```.`#`#`a`b`b`c`c`d`f`f```o`o`o", "```#`#`a`b`b`c`c`d`f`f`f```o`o`o", "```#`a`b`b`c`c`d`f`f`f`g```o`o`o", "```a`b`b`c`c`d`f`f`f`g`h```o`o`o", "```b`b`c`c`d`f`f`f`g`h`h```o`o`o", "```b`c`c`d`f`f`f`g`h`h`j```o`o`o", "```````````````````````````o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o" }; ecb-2.40+cvs20110608/ecb-images/directories/height-17/ecb-empty.xpm000066400000000000000000000011331157374236500242340ustar00rootroot00000000000000/* XPM */ static char * ecbempty_xpm[] = { "16 17 14 1", " c None", "! c black", "# c #AEA950", "$ c #FDF9B1", "% c #FDF9AC", "& c #FDF9A9", "' c #FDF8A0", "( c #FDF793", ") c #FDF790", "* c #FCF67C", "+ c #FCF67F", ", c #FCF688", "- c #FDF89D", ". c #FDF9A6", " ", " ", " ", " #### ", "#$%%&##### ", "#%%&&''(()# ", "#%&########## ", "#&#*++,,)((--# ", "#&#++,,)((--# ", "##++,,)((--'# ", "##+,,)((--'# ", "#+,,)((--'.# ", "########### ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/directories/height-17/ecb-leaf.xpm000066400000000000000000000113631157374236500240130ustar00rootroot00000000000000/* XPM */ static char *leaf[] = { /* width height num_colors chars_per_pixel */ " 16 17 256 2", /* colors */ "`` c #000000", "`. c #424242", "`# c #848484", "`a c #949494", "`b c #9c9c9c", "`c c #a5a5a5", "`d c #adadad", "`e c #b5b5b5", "`f c #bdbdbd", "`g c #c6c6c6", "`h c None", "`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 */ "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`.`.`.`.`.`.`.`h`h`h`h`h`h`h`h`h", "`.`a`a`b`b`c`.`.`h`h`h`h`h`h`h`h", "`.`a`b`b`c`c`.`d`.`h`h`h`h`h`h`h", "`.`b`b`c`c`c`.`.`.`.`h`h`h`h`h`h", "`.`b`#`#`#`a`#`d`e`.`h`h`h`h`h`h", "`.`c`c`c`d`d`d`e`e`.`h`h`h`h`h`h", "`.`c`#`a`#`#`#`e`f`.`h`h`h`h`h`h", "`.`c`d`d`d`e`e`f`f`.`h`h`h`h`h`h", "`.`d`#`#`a`#`#`f`f`.`h`h`h`h`h`h", "`.`d`d`e`e`f`f`f`f`.`h`h`h`h`h`h", "`.`d`e`e`f`f`f`f`f`.`h`h`h`h`h`h", "`.`.`.`.`.`.`.`.`.`.`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h" }; ecb-2.40+cvs20110608/ecb-images/directories/height-17/ecb-open.xpm000066400000000000000000000113631157374236500240450ustar00rootroot00000000000000/* XPM */ static char *open[] = { /* width height num_colors chars_per_pixel */ " 16 17 256 2", /* colors */ "`` c #848400", "`. c #a5a5c6", "`# c #adad39", "`a c #adad42", "`b c #b5b54a", "`c c #bdbd52", "`d c #bdbd5a", "`e c #c6c663", "`f c #c6c66b", "`g c #cece6b", "`h c #cece73", "`i c #cece7b", "`j c #d6d67b", "`k c None", "`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 */ "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`````````k`k`k`k`k`k`k`k`k`k`k", "```j`i`i`h```````````k`k`k`k`k`k", "```i`i`h`h`f`f`d`d`c```k`k`k`k`k", "```i`h`````````````````````k`k`k", "```h```#`a`a`b`b`c`d`d`e`e```k`k", "```h```a`a`b`b`c`d`d`e`e```k`k`k", "`````a`a`b`b`c`d`d`e`e`f```k`k`k", "`````a`b`b`c`d`d`e`e`f```k`k`k`k", "```a`b`b`c`d`d`e`e`f`g```k`k`k`k", "```````````````````````k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k" }; ecb-2.40+cvs20110608/ecb-images/directories/height-18/000077500000000000000000000000001157374236500216245ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/directories/height-18/ecb-close.xpm000066400000000000000000000114301157374236500242050ustar00rootroot00000000000000/* XPM */ static char *close[] = { /* width height num_colors chars_per_pixel */ " 16 18 256 2", /* colors */ "`` c #848400", "`. c #9c9c29", "`# c #a5a531", "`a c #adad39", "`b c #adad42", "`c c #b5b54a", "`d c #b5b552", "`e c #bdbd52", "`f c #bdbd5a", "`g c #c6c663", "`h c #c6c66b", "`i c #cece6b", "`j c #cece73", "`k c #dede8c", "`l c #e7e794", "`m c #e7e79c", "`n c #efef9c", "`o c None", "`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 */ "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`````````o`o`o`o`o`o`o`o`o`o`o", "```m`l`l`k```````````````o`o`o`o", "```````````a`b`b`c`c`d`f```o`o`o", "```.`#`#`a`b`b`c`c`d`f`f```o`o`o", "```#`#`a`b`b`c`c`d`f`f`f```o`o`o", "```#`a`b`b`c`c`d`f`f`f`g```o`o`o", "```a`b`b`c`c`d`f`f`f`g`h```o`o`o", "```b`b`c`c`d`f`f`f`g`h`h```o`o`o", "```b`c`c`d`f`f`f`g`h`h`j```o`o`o", "```````````````````````````o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o" }; ecb-2.40+cvs20110608/ecb-images/directories/height-18/ecb-empty.xpm000066400000000000000000000011571157374236500242430ustar00rootroot00000000000000/* XPM */ static char * ecbempty_xpm[] = { "16 18 14 1", " c None", "! c black", "# c #AEA950", "$ c #FDF9B1", "% c #FDF9AC", "& c #FDF9A9", "' c #FDF8A0", "( c #FDF793", ") c #FDF790", "* c #FCF67C", "+ c #FCF67F", ", c #FCF688", "- c #FDF89D", ". c #FDF9A6", " ", " ", " ", " ", " #### ", "#$%%&##### ", "#%%&&''(()# ", "#%&########## ", "#&#*++,,)((--# ", "#&#++,,)((--# ", "##++,,)((--'# ", "##+,,)((--'# ", "#+,,)((--'.# ", "########### ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/directories/height-18/ecb-leaf.xpm000066400000000000000000000114271157374236500240150ustar00rootroot00000000000000/* XPM */ static char *leaf[] = { /* width height num_colors chars_per_pixel */ " 16 18 256 2", /* colors */ "`` c #000000", "`. c #424242", "`# c #848484", "`a c #949494", "`b c #9c9c9c", "`c c #a5a5a5", "`d c #adadad", "`e c #b5b5b5", "`f c #bdbdbd", "`g c #c6c6c6", "`h c None", "`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 */ "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`.`.`.`.`.`.`.`h`h`h`h`h`h`h`h`h", "`.`a`a`b`b`c`.`.`h`h`h`h`h`h`h`h", "`.`a`b`b`c`c`.`d`.`h`h`h`h`h`h`h", "`.`b`b`c`c`c`.`.`.`.`h`h`h`h`h`h", "`.`b`#`#`#`a`#`d`e`.`h`h`h`h`h`h", "`.`c`c`c`d`d`d`e`e`.`h`h`h`h`h`h", "`.`c`#`a`#`#`#`e`f`.`h`h`h`h`h`h", "`.`c`d`d`d`e`e`f`f`.`h`h`h`h`h`h", "`.`d`#`#`a`#`#`f`f`.`h`h`h`h`h`h", "`.`d`d`e`e`f`f`f`f`.`h`h`h`h`h`h", "`.`d`e`e`f`f`f`f`f`.`h`h`h`h`h`h", "`.`.`.`.`.`.`.`.`.`.`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h" }; ecb-2.40+cvs20110608/ecb-images/directories/height-18/ecb-open.xpm000066400000000000000000000114271157374236500240470ustar00rootroot00000000000000/* XPM */ static char *open[] = { /* width height num_colors chars_per_pixel */ " 16 18 256 2", /* colors */ "`` c #848400", "`. c #a5a5c6", "`# c #adad39", "`a c #adad42", "`b c #b5b54a", "`c c #bdbd52", "`d c #bdbd5a", "`e c #c6c663", "`f c #c6c66b", "`g c #cece6b", "`h c #cece73", "`i c #cece7b", "`j c #d6d67b", "`k c None", "`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 */ "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`````````k`k`k`k`k`k`k`k`k`k`k", "```j`i`i`h```````````k`k`k`k`k`k", "```i`i`h`h`f`f`d`d`c```k`k`k`k`k", "```i`h`````````````````````k`k`k", "```h```#`a`a`b`b`c`d`d`e`e```k`k", "```h```a`a`b`b`c`d`d`e`e```k`k`k", "`````a`a`b`b`c`d`d`e`e`f```k`k`k", "`````a`b`b`c`d`d`e`e`f```k`k`k`k", "```a`b`b`c`d`d`e`e`f`g```k`k`k`k", "```````````````````````k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k" }; ecb-2.40+cvs20110608/ecb-images/directories/height-19/000077500000000000000000000000001157374236500216255ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/directories/height-19/ecb-close.xpm000066400000000000000000000114741157374236500242160ustar00rootroot00000000000000/* XPM */ static char *close[] = { /* width height num_colors chars_per_pixel */ " 16 19 256 2", /* colors */ "`` c #848400", "`. c #9c9c29", "`# c #a5a531", "`a c #adad39", "`b c #adad42", "`c c #b5b54a", "`d c #b5b552", "`e c #bdbd52", "`f c #bdbd5a", "`g c #c6c663", "`h c #c6c66b", "`i c #cece6b", "`j c #cece73", "`k c #dede8c", "`l c #e7e794", "`m c #e7e79c", "`n c #efef9c", "`o c None", "`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 */ "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`````````o`o`o`o`o`o`o`o`o`o`o", "```m`l`l`k```````````````o`o`o`o", "```````````a`b`b`c`c`d`f```o`o`o", "```.`#`#`a`b`b`c`c`d`f`f```o`o`o", "```#`#`a`b`b`c`c`d`f`f`f```o`o`o", "```#`a`b`b`c`c`d`f`f`f`g```o`o`o", "```a`b`b`c`c`d`f`f`f`g`h```o`o`o", "```b`b`c`c`d`f`f`f`g`h`h```o`o`o", "```b`c`c`d`f`f`f`g`h`h`j```o`o`o", "```````````````````````````o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o" }; ecb-2.40+cvs20110608/ecb-images/directories/height-19/ecb-empty.xpm000066400000000000000000000012031157374236500242340ustar00rootroot00000000000000/* XPM */ static char * ecbempty_xpm[] = { "16 19 14 1", " c None", "! c black", "# c #AEA950", "$ c #FDF9B1", "% c #FDF9AC", "& c #FDF9A9", "' c #FDF8A0", "( c #FDF793", ") c #FDF790", "* c #FCF67C", "+ c #FCF67F", ", c #FCF688", "- c #FDF89D", ". c #FDF9A6", " ", " ", " ", " ", " #### ", "#$%%&##### ", "#%%&&''(()# ", "#%&########## ", "#&#*++,,)((--# ", "#&#++,,)((--# ", "##++,,)((--'# ", "##+,,)((--'# ", "#+,,)((--'.# ", "########### ", " ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/directories/height-19/ecb-leaf.xpm000066400000000000000000000114731157374236500240170ustar00rootroot00000000000000/* XPM */ static char *leaf[] = { /* width height num_colors chars_per_pixel */ " 16 19 256 2", /* colors */ "`` c #000000", "`. c #424242", "`# c #848484", "`a c #949494", "`b c #9c9c9c", "`c c #a5a5a5", "`d c #adadad", "`e c #b5b5b5", "`f c #bdbdbd", "`g c #c6c6c6", "`h c None", "`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 */ "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`.`.`.`.`.`.`.`h`h`h`h`h`h`h`h`h", "`.`a`a`b`b`c`.`.`h`h`h`h`h`h`h`h", "`.`a`b`b`c`c`.`d`.`h`h`h`h`h`h`h", "`.`b`b`c`c`c`.`.`.`.`h`h`h`h`h`h", "`.`b`#`#`#`a`#`d`e`.`h`h`h`h`h`h", "`.`c`c`c`d`d`d`e`e`.`h`h`h`h`h`h", "`.`c`#`a`#`#`#`e`f`.`h`h`h`h`h`h", "`.`c`d`d`d`e`e`f`f`.`h`h`h`h`h`h", "`.`d`#`#`a`#`#`f`f`.`h`h`h`h`h`h", "`.`d`d`e`e`f`f`f`f`.`h`h`h`h`h`h", "`.`d`e`e`f`f`f`f`f`.`h`h`h`h`h`h", "`.`.`.`.`.`.`.`.`.`.`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h" }; ecb-2.40+cvs20110608/ecb-images/directories/height-19/ecb-open.xpm000066400000000000000000000114731157374236500240510ustar00rootroot00000000000000/* XPM */ static char *open[] = { /* width height num_colors chars_per_pixel */ " 16 19 256 2", /* colors */ "`` c #848400", "`. c #a5a5c6", "`# c #adad39", "`a c #adad42", "`b c #b5b54a", "`c c #bdbd52", "`d c #bdbd5a", "`e c #c6c663", "`f c #c6c66b", "`g c #cece6b", "`h c #cece73", "`i c #cece7b", "`j c #d6d67b", "`k c None", "`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 */ "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`````````k`k`k`k`k`k`k`k`k`k`k", "```j`i`i`h```````````k`k`k`k`k`k", "```i`i`h`h`f`f`d`d`c```k`k`k`k`k", "```i`h`````````````````````k`k`k", "```h```#`a`a`b`b`c`d`d`e`e```k`k", "```h```a`a`b`b`c`d`d`e`e```k`k`k", "`````a`a`b`b`c`d`d`e`e`f```k`k`k", "`````a`b`b`c`d`d`e`e`f```k`k`k`k", "```a`b`b`c`d`d`e`e`f`g```k`k`k`k", "```````````````````````k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k" }; ecb-2.40+cvs20110608/ecb-images/directories/height-20/000077500000000000000000000000001157374236500216155ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/directories/height-20/ecb-close.xpm000066400000000000000000000115401157374236500242000ustar00rootroot00000000000000/* XPM */ static char *close[] = { /* width height num_colors chars_per_pixel */ " 16 20 256 2", /* colors */ "`` c #848400", "`. c #9c9c29", "`# c #a5a531", "`a c #adad39", "`b c #adad42", "`c c #b5b54a", "`d c #b5b552", "`e c #bdbd52", "`f c #bdbd5a", "`g c #c6c663", "`h c #c6c66b", "`i c #cece6b", "`j c #cece73", "`k c #dede8c", "`l c #e7e794", "`m c #e7e79c", "`n c #efef9c", "`o c None", "`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 */ "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`````````o`o`o`o`o`o`o`o`o`o`o", "```m`l`l`k```````````````o`o`o`o", "```````````a`b`b`c`c`d`f```o`o`o", "```.`#`#`a`b`b`c`c`d`f`f```o`o`o", "```#`#`a`b`b`c`c`d`f`f`f```o`o`o", "```#`a`b`b`c`c`d`f`f`f`g```o`o`o", "```a`b`b`c`c`d`f`f`f`g`h```o`o`o", "```b`b`c`c`d`f`f`f`g`h`h```o`o`o", "```b`c`c`d`f`f`f`g`h`h`j```o`o`o", "```````````````````````````o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o" }; ecb-2.40+cvs20110608/ecb-images/directories/height-20/ecb-empty.xpm000066400000000000000000000012271157374236500242320ustar00rootroot00000000000000/* XPM */ static char * ecbempty_xpm[] = { "16 20 14 1", " c None", "! c black", "# c #AEA950", "$ c #FDF9B1", "% c #FDF9AC", "& c #FDF9A9", "' c #FDF8A0", "( c #FDF793", ") c #FDF790", "* c #FCF67C", "+ c #FCF67F", ", c #FCF688", "- c #FDF89D", ". c #FDF9A6", " ", " ", " ", " ", " ", " #### ", "#$%%&##### ", "#%%&&''(()# ", "#%&########## ", "#&#*++,,)((--# ", "#&#++,,)((--# ", "##++,,)((--'# ", "##+,,)((--'# ", "#+,,)((--'.# ", "########### ", " ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/directories/height-20/ecb-leaf.xpm000066400000000000000000000115371157374236500240100ustar00rootroot00000000000000/* XPM */ static char *leaf[] = { /* width height num_colors chars_per_pixel */ " 16 20 256 2", /* colors */ "`` c #000000", "`. c #424242", "`# c #848484", "`a c #949494", "`b c #9c9c9c", "`c c #a5a5a5", "`d c #adadad", "`e c #b5b5b5", "`f c #bdbdbd", "`g c #c6c6c6", "`h c None", "`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 */ "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`.`.`.`.`.`.`.`h`h`h`h`h`h`h`h`h", "`.`a`a`b`b`c`.`.`h`h`h`h`h`h`h`h", "`.`a`b`b`c`c`.`d`.`h`h`h`h`h`h`h", "`.`b`b`c`c`c`.`.`.`.`h`h`h`h`h`h", "`.`b`#`#`#`a`#`d`e`.`h`h`h`h`h`h", "`.`c`c`c`d`d`d`e`e`.`h`h`h`h`h`h", "`.`c`#`a`#`#`#`e`f`.`h`h`h`h`h`h", "`.`c`d`d`d`e`e`f`f`.`h`h`h`h`h`h", "`.`d`#`#`a`#`#`f`f`.`h`h`h`h`h`h", "`.`d`d`e`e`f`f`f`f`.`h`h`h`h`h`h", "`.`d`e`e`f`f`f`f`f`.`h`h`h`h`h`h", "`.`.`.`.`.`.`.`.`.`.`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h" }; ecb-2.40+cvs20110608/ecb-images/directories/height-20/ecb-open.xpm000066400000000000000000000115371157374236500240420ustar00rootroot00000000000000/* XPM */ static char *open[] = { /* width height num_colors chars_per_pixel */ " 16 20 256 2", /* colors */ "`` c #848400", "`. c #a5a5c6", "`# c #adad39", "`a c #adad42", "`b c #b5b54a", "`c c #bdbd52", "`d c #bdbd5a", "`e c #c6c663", "`f c #c6c66b", "`g c #cece6b", "`h c #cece73", "`i c #cece7b", "`j c #d6d67b", "`k c None", "`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 */ "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`````````k`k`k`k`k`k`k`k`k`k`k", "```j`i`i`h```````````k`k`k`k`k`k", "```i`i`h`h`f`f`d`d`c```k`k`k`k`k", "```i`h`````````````````````k`k`k", "```h```#`a`a`b`b`c`d`d`e`e```k`k", "```h```a`a`b`b`c`d`d`e`e```k`k`k", "`````a`a`b`b`c`d`d`e`e`f```k`k`k", "`````a`b`b`c`d`d`e`e`f```k`k`k`k", "```a`b`b`c`d`d`e`e`f`g```k`k`k`k", "```````````````````````k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k" }; ecb-2.40+cvs20110608/ecb-images/directories/height-21/000077500000000000000000000000001157374236500216165ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/directories/height-21/ecb-close.xpm000066400000000000000000000116041157374236500242020ustar00rootroot00000000000000/* XPM */ static char *close[] = { /* width height num_colors chars_per_pixel */ " 16 21 256 2", /* colors */ "`` c #848400", "`. c #9c9c29", "`# c #a5a531", "`a c #adad39", "`b c #adad42", "`c c #b5b54a", "`d c #b5b552", "`e c #bdbd52", "`f c #bdbd5a", "`g c #c6c663", "`h c #c6c66b", "`i c #cece6b", "`j c #cece73", "`k c #dede8c", "`l c #e7e794", "`m c #e7e79c", "`n c #efef9c", "`o c None", "`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 */ "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`````````o`o`o`o`o`o`o`o`o`o`o", "```m`l`l`k```````````````o`o`o`o", "```````````a`b`b`c`c`d`f```o`o`o", "```.`#`#`a`b`b`c`c`d`f`f```o`o`o", "```#`#`a`b`b`c`c`d`f`f`f```o`o`o", "```#`a`b`b`c`c`d`f`f`f`g```o`o`o", "```a`b`b`c`c`d`f`f`f`g`h```o`o`o", "```b`b`c`c`d`f`f`f`g`h`h```o`o`o", "```b`c`c`d`f`f`f`g`h`h`j```o`o`o", "```````````````````````````o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o", "`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o" }; ecb-2.40+cvs20110608/ecb-images/directories/height-21/ecb-empty.xpm000066400000000000000000000012531157374236500242320ustar00rootroot00000000000000/* XPM */ static char * ecbempty_xpm[] = { "16 21 14 1", " c None", "! c black", "# c #AEA950", "$ c #FDF9B1", "% c #FDF9AC", "& c #FDF9A9", "' c #FDF8A0", "( c #FDF793", ") c #FDF790", "* c #FCF67C", "+ c #FCF67F", ", c #FCF688", "- c #FDF89D", ". c #FDF9A6", " ", " ", " ", " ", " ", " #### ", "#$%%&##### ", "#%%&&''(()# ", "#%&########## ", "#&#*++,,)((--# ", "#&#++,,)((--# ", "##++,,)((--'# ", "##+,,)((--'# ", "#+,,)((--'.# ", "########### ", " ", " ", " ", " ", " ", " "};ecb-2.40+cvs20110608/ecb-images/directories/height-21/ecb-leaf.xpm000066400000000000000000000116031157374236500240030ustar00rootroot00000000000000/* XPM */ static char *leaf[] = { /* width height num_colors chars_per_pixel */ " 16 21 256 2", /* colors */ "`` c #000000", "`. c #424242", "`# c #848484", "`a c #949494", "`b c #9c9c9c", "`c c #a5a5a5", "`d c #adadad", "`e c #b5b5b5", "`f c #bdbdbd", "`g c #c6c6c6", "`h c None", "`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 */ "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`.`.`.`.`.`.`.`h`h`h`h`h`h`h`h`h", "`.`a`a`b`b`c`.`.`h`h`h`h`h`h`h`h", "`.`a`b`b`c`c`.`d`.`h`h`h`h`h`h`h", "`.`b`b`c`c`c`.`.`.`.`h`h`h`h`h`h", "`.`b`#`#`#`a`#`d`e`.`h`h`h`h`h`h", "`.`c`c`c`d`d`d`e`e`.`h`h`h`h`h`h", "`.`c`#`a`#`#`#`e`f`.`h`h`h`h`h`h", "`.`c`d`d`d`e`e`f`f`.`h`h`h`h`h`h", "`.`d`#`#`a`#`#`f`f`.`h`h`h`h`h`h", "`.`d`d`e`e`f`f`f`f`.`h`h`h`h`h`h", "`.`d`e`e`f`f`f`f`f`.`h`h`h`h`h`h", "`.`.`.`.`.`.`.`.`.`.`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h" }; ecb-2.40+cvs20110608/ecb-images/directories/height-21/ecb-open.xpm000066400000000000000000000116031157374236500240350ustar00rootroot00000000000000/* XPM */ static char *open[] = { /* width height num_colors chars_per_pixel */ " 16 21 256 2", /* colors */ "`` c #848400", "`. c #a5a5c6", "`# c #adad39", "`a c #adad42", "`b c #b5b54a", "`c c #bdbd52", "`d c #bdbd5a", "`e c #c6c663", "`f c #c6c66b", "`g c #cece6b", "`h c #cece73", "`i c #cece7b", "`j c #d6d67b", "`k c None", "`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 */ "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k`k", "`k`````````k`k`k`k`k`k`k`k`k`k`k", "```j`i`i`h```````````k`k`k`k`k`k", "```i`i`h`h`f`f`d`d`c```k`k`k`k`k", "```i`h`````````````````````k`k`k", "```h```#`a`a`b`b`c`d`d`e`e```k`k", "```h```a`a`b`b`c`d`d`e`e```k`k`k", "`````a`a`b`b`c`d`d`e`e`f```k`k`k", "`````a`b`b`c`d`d`e`e`f```k`k`k`k", "```a`b`b`c`d`d`e`e`f`g```k`k`k`k", "```````````````````````k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k", "`k`k`k`k`k`.`k`k`k`k`k`k`k`k`k`k" }; ecb-2.40+cvs20110608/ecb-images/methods/000077500000000000000000000000001157374236500172555ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/000077500000000000000000000000001157374236500217535ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-class-private.xpm000066400000000000000000000015511157374236500276100ustar00rootroot00000000000000/* XPM */ static char * ecb_class_private_xpm[] = { "16 14 32 1", " c None", ". c #696969", "+ c #F5F5F5", "@ c #434343", "# c #FFFFFF", "$ c #C5C5C5", "% c #F1F1F1", "& c #CACACA", "* c #E6E6E6", "= c #C9C9C9", "- c #D5D5D5", "; c #D8D8D8", "> c #8C8C8C", ", c #D1D1D1", "' c #656565", ") c #868686", "! c #898989", "~ c #C8C8C8", "{ c #B6B6B6", "] c #ABABAB", "^ c #D7D7D7", "/ c #BDBDBD", "( c #BBBBBB", "_ c #AFAFAF", ": c #D2D2D2", "< c #A7A7A7", "[ c #B0B0B0", "} c #AAAAAA", "| c #676767", "1 c #CBCBCB", "2 c #B8B8B8", "3 c #B4B4B4", " ...+ ", " @# .$#$.+", " @%@+ .+ +.#", " @%&&@# .....+", "@*=$-;@+ ..>..#", " @;,;@# .>#>.+", " @;@+ @@'..>..#", "@@)@)!@~{].....+", "@^/{(@~,]_/'+#+#", "@:<[}@{}{~=|# ", "@123(@}_~=;'+ ", "@:3(3!@/=;'# ", "@)!)!)+'|'+ ", " #+#+# #+# "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-class-protected.xpm000066400000000000000000000017131157374236500301270ustar00rootroot00000000000000/* XPM */ static char * ecb_class_protected_xpm[] = { "16 14 38 1", " c None", ". c #444444", "+ c #FFFFFF", "@ c #EDEDED", "# c #F2F2F2", "$ c #E7E7E7", "% c #747474", "& c #F1F1F1", "* c #F5F5F5", "= c #D8D8D8", "- c #D2D2D2", "; c #8C8C8C", "> c #CACACA", ", c #404040", "' c #E0E0E0", ") c #898989", "! c #E6E6E6", "~ c #C9C9C9", "{ c #C5C5C5", "] c #D5D5D5", "^ c #787878", "/ c #D1D1D1", "( c #656565", "_ c #868686", ": c #C8C8C8", "< c #B6B6B6", "[ c #ABABAB", "} c #D7D7D7", "| c #BDBDBD", "1 c #BBBBBB", "2 c #AFAFAF", "3 c #A7A7A7", "4 c #B0B0B0", "5 c #AAAAAA", "6 c #CBCBCB", "7 c #B8B8B8", "8 c #B4B4B4", "9 c #676767", " .....+ ", " .+ .+@#@$%+", " .&.* .@=.=-;*", " .&>>.+ ,$-='=)+", ".!~{]=.* ..-^)* ", " .=/=.+ .=)+ ", " .=.* ..(.-;* ", ".._._).:<[.=';+ ", ".}|<1.:/[2.';* ", ".-345.<5<:~^+ ", ".6781.52:~=* ", ".-818).|~=(+ ", "._)_)_*(9(* ", " +*+*+ +*+ "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-class-public.xpm000066400000000000000000000015501157374236500274130ustar00rootroot00000000000000/* XPM */ static char * ecb_class_public_xpm[] = { "16 14 32 1", " c None", ". c #686868", "+ c #FFFFFF", "@ c #444444", "# c #9F9F9F", "$ c #F5F5F5", "% c #F1F1F1", "& c #CACACA", "* c #E6E6E6", "= c #C9C9C9", "- c #C5C5C5", "; c #D5D5D5", "> c #D8D8D8", ", c #D1D1D1", "' c #656565", ") c #868686", "! c #898989", "~ c #C8C8C8", "{ c #B6B6B6", "] c #ABABAB", "^ c #D7D7D7", "/ c #BDBDBD", "( c #BBBBBB", "_ c #AFAFAF", ": c #D2D2D2", "< c #A7A7A7", "[ c #B0B0B0", "} c #AAAAAA", "| c #676767", "1 c #CBCBCB", "2 c #B8B8B8", "3 c #B4B4B4", " ...+ ", " @+ .#+#.$ ", " @%@$ .$ $.+ ", " @%&&@+ + .....$", "@*=-;>@$ ..#..+", " @>,>@+ .#+#.$", " @>@$ @@'..#..+", "@@)@)!@~{].....$", "@^/{(@~,]_/'$+$+", "@:<[}@{}{~=|+ ", "@123(@}_~=>'$ ", "@:3(3!@/=>'+ ", "@)!)!)$'|'$ ", " +$+$+ +$+ "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-class-unknown.xpm000066400000000000000000000015311157374236500276330ustar00rootroot00000000000000/* XPM */ static char * ecb_class_unknown_xpm[] = { "16 14 31 1", " c None", ". c #434343", "+ c #FFFFFF", "@ c #F1F1F1", "# c #F5F5F5", "$ c #CACACA", "% c #E6E6E6", "& c #C9C9C9", "* c #C5C5C5", "= c #D5D5D5", "- c #D8D8D8", "; c #D1D1D1", "> c #656565", ", c #A5A5C6", "' c #868686", ") c #898989", "! c #C8C8C8", "~ c #B6B6B6", "{ c #ABABAB", "] c #D7D7D7", "^ c #BDBDBD", "/ c #BBBBBB", "( c #AFAFAF", "_ c #D2D2D2", ": c #A7A7A7", "< c #B0B0B0", "[ c #AAAAAA", "} c #676767", "| c #CBCBCB", "1 c #B8B8B8", "2 c #B4B4B4", " ", " .+ ", " .@.# ", " .@$$.+ ", " .%&*=-.# ", " .-;-.+ ", " .-.# ..># ", ",..'.').!~{>+ ", " .]^~/.!;{(^># ", " ._:<[.~[~!&}+ ", " .|12/.[(!&-># ", " ._2/2).^&->+ ", " .')')'#>}># ", " +#+#+ +#+ "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-constructor-private.xpm000066400000000000000000000012171157374236500310670ustar00rootroot00000000000000/* XPM */ static char * ecb_constructor_private_xpm[] = { "16 14 18 1", " c None", ". c #696969", "+ c #FFFFFF", "@ c #C5C5C5", "# c #F5F5F5", "$ c #444444", "% c #EFEFEF", "& c #787878", "* c #C2C2C2", "= c #C9C9C9", "- c #8C8C8C", "; c #CECECE", "> c #C6C6C6", ", c #D1D1D1", "' c #CDCDCD", ") c #CACACA", "! c #E0E0E0", "~ c #D5D5D5", " ", " ...+ ", " .@+@.# ", " $# .+ +.+ ", " $%&# .....# ", " $%*=&# ..-..+ ", " $%*;>,&#.-+-.# ", "$%*'),;!&..-..+ ", " $!)~;!&#.....# ", " $!,!&# #+#+#+ ", " $!&# ", " &# ", " # ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-constructor-protected.xpm000066400000000000000000000014011157374236500314010ustar00rootroot00000000000000/* XPM */ static char * ecb_constructor_protected_xpm[] = { "16 14 25 1", " c None", ". c #444444", "+ c #FFFFFF", "@ c #EDEDED", "# c #F2F2F2", "$ c #E7E7E7", "% c #747474", "& c #F5F5F5", "* c #D8D8D8", "= c #D2D2D2", "- c #8C8C8C", "; c #FBFBFB", "> c #EFEFEF", ", c #787878", "' c #404040", ") c #E0E0E0", "! c #898989", "~ c #C2C2C2", "{ c #C9C9C9", "] c #CECECE", "^ c #C6C6C6", "/ c #D1D1D1", "( c #CDCDCD", "_ c #CACACA", ": c #D5D5D5", " ", " .....+ ", " .+@#@$%+", " .& .@*.*=-;", " .>,& '$=*)*!+", " .>~{,&+..=,!+ ", " .>~]^/,&+.*!+ ", ".>~(_/]),&.=-; ", " .)_:]),& .*)-+ ", " .)/),& .)-; ", " .),& ,; ", " ,& ; ", " & ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-constructor-public.xpm000066400000000000000000000011761157374236500306770ustar00rootroot00000000000000/* XPM */ static char * ecb_constructor_public_xpm[] = { "16 14 17 1", " c None", ". c #686868", "+ c #9F9F9F", "@ c #FFFFFF", "# c #F5F5F5", "$ c #444444", "% c #EFEFEF", "& c #787878", "* c #C2C2C2", "= c #C9C9C9", "- c #CECECE", "; c #C6C6C6", "> c #D1D1D1", ", c #CDCDCD", "' c #CACACA", ") c #E0E0E0", "! c #D5D5D5", " ", " ... ", " .+@+.# ", " $# .@ .@ ", " $%&#@ .....# ", " $%*=&# ..+..@ ", " $%*-;>&#.+@+.# ", "$%*,'>-)&..+..@ ", " $)'!-)&#.....# ", " $)>)&# #@#@#@ ", " $)&# ", " &# ", " # ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-constructor-unknown.xpm000066400000000000000000000010471157374236500311150ustar00rootroot00000000000000/* XPM */ static char * ecb_constructor_unknown_xpm[] = { "12 14 15 1", " c None", ". c #444444", "+ c #F5F5F5", "@ c #EFEFEF", "# c #787878", "$ c #C2C2C2", "% c #C9C9C9", "& c #CECECE", "* c #C6C6C6", "= c #D1D1D1", "- c #A5A5C6", "; c #CDCDCD", "> c #CACACA", ", c #E0E0E0", "' c #D5D5D5", " ", " ", " ", " .+ ", " .@#+ ", " .@$%#+ ", " .@$&*=#+ ", "-.@$;>=&,#+ ", " .,>'&,#+ ", " .,=,#+ ", " .,#+ ", " #+ ", " + ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-function-private-static.xpm000066400000000000000000000020631157374236500316140ustar00rootroot00000000000000/* XPM */ static char * ecb_function_private_static_xpm[] = { "16 14 44 1", " c None", ". c #696969", "+ c #F5F5F5", "@ c #757575", "# c #727272", "$ c #8F8F8F", "% c #C5C5C5", "& c #FFFFFF", "* c #EEEEEE", "= c #AAAAAA", "- c #656565", "; c #4C4C4C", "> c #DCDCDC", ", c #989898", "' c #444444", ") c #C8C8C8", "! c #8A8A8A", "~ c #ECECEC", "{ c #A1A1A1", "] c #676767", "^ c #8C8C8C", "/ c #DDDDDD", "( c #A8A8A8", "_ c #E2E2E2", ": c #A7A7A7", "< c #B6B6B6", "[ c #D1D1D1", "} c #A4A4A4", "| c #A3A3A3", "1 c #BDBDBD", "2 c #A5A5A5", "3 c #8E8E8E", "4 c #E3E3E3", "5 c #ACACAC", "6 c #C9C9C9", "7 c #B5B5B5", "8 c #D8D8D8", "9 c #E6E6E6", "0 c #AFAFAF", "a c #666666", "b c #939393", "c c #9B9B9B", "d c #EAEAEA", "e c #B7B7B7", " ", " ...+ ", " @#$+ .%&%.+ ", " #*=& .& +.& ", " -;>,+ .....+ ", " ')!~{]+ ..^..& ", "')/(_:<]+.^&^.+ ", "'[}|~})-&..^..& ", "'123456]+.....+ ", "'27!*(8-&+&+&+& ", "+'<390-& ", " +]a9b& ", " +cde+ ", " ^$|& "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-function-private.xpm000066400000000000000000000012541157374236500303300ustar00rootroot00000000000000/* XPM */ static char * ecb_function_private_xpm[] = { "16 14 20 1", " c None", ". c #696969", "+ c #F5F5F5", "@ c #C5C5C5", "# c #FFFFFF", "$ c #444444", "% c #C8C8C8", "& c #D1D1D1", "* c #BDBDBD", "= c #A6A6A6", "- c #676767", "; c #8C8C8C", "> c #A4A4A4", ", c #B5B5B5", "' c #B6B6B6", ") c #656565", "! c #A5A5A5", "~ c #B3B3B3", "{ c #C9C9C9", "] c #D8D8D8", " ", " ...+ ", " .@#@.+ ", " .# +.# ", " $$$$+ .....+ ", " $%&*=-+ ..;..# ", "$%&>=,'-+.;#;.+ ", "$&>=,'%)#..;..# ", "$*!~'%{-+.....+ ", "$!,'%{])#+#+#+# ", "+$'%{])# ", " +-)-)# ", " +#+# ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-function-protected-static.xpm000066400000000000000000000022451157374236500321350ustar00rootroot00000000000000/* XPM */ static char * ecb_function_protected_static_xpm[] = { "16 14 51 1", " c None", ". c #444444", "+ c #F5F5F5", "@ c #757575", "# c #727272", "$ c #8F8F8F", "% c #FFFFFF", "& c #EDEDED", "* c #F2F2F2", "= c #E7E7E7", "- c #747474", "; c #EEEEEE", "> c #AAAAAA", ", c #D8D8D8", "' c #D2D2D2", ") c #8C8C8C", "! c #FBFBFB", "~ c #656565", "{ c #4C4C4C", "] c #DCDCDC", "^ c #989898", "/ c #E0E0E0", "( c #898989", "_ c #C8C8C8", ": c #8A8A8A", "< c #ECECEC", "[ c #A1A1A1", "} c #676767", "| c #787878", "1 c #DDDDDD", "2 c #A8A8A8", "3 c #E2E2E2", "4 c #A7A7A7", "5 c #B6B6B6", "6 c #D1D1D1", "7 c #A4A4A4", "8 c #A3A3A3", "9 c #BDBDBD", "0 c #A5A5A5", "a c #8E8E8E", "b c #E3E3E3", "c c #ACACAC", "d c #C9C9C9", "e c #B5B5B5", "f c #E6E6E6", "g c #AFAFAF", "h c #666666", "i c #939393", "j c #9B9B9B", "k c #EAEAEA", "l c #B7B7B7", " ", " .....+ ", " @#$+ .%&*&=-%", " #;>% .&,.,')!", " ~{]^+ .=',/,(%", " ._:<[}++..'|(% ", "._12345}+%.,(% ", ".678<7_~% .')! ", ".90abcd}+ .,/)% ", ".0e:;2,~% ./)! ", "+.5afg~% +|! ", " +}hfi% ! ", " +jkl+ ", " )$8% "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-function-protected.xpm000066400000000000000000000014361157374236500306510ustar00rootroot00000000000000/* XPM */ static char * ecb_function_protected_xpm[] = { "16 14 27 1", " c None", ". c #444444", "+ c #F5F5F5", "@ c #FFFFFF", "# c #EDEDED", "$ c #F2F2F2", "% c #E7E7E7", "& c #747474", "* c #D8D8D8", "= c #D2D2D2", "- c #8C8C8C", "; c #FBFBFB", "> c #E0E0E0", ", c #898989", "' c #C8C8C8", ") c #D1D1D1", "! c #BDBDBD", "~ c #A6A6A6", "{ c #676767", "] c #787878", "^ c #A4A4A4", "/ c #B5B5B5", "( c #B6B6B6", "_ c #656565", ": c #A5A5A5", "< c #B3B3B3", "[ c #C9C9C9", " ", " .....+ ", " .@#$#%&@", " .#*.*=-;", " ....+ .%=*>*,@", " .')!~{++..=],@ ", ".')^~/({+@.*,@ ", ".)^~/('_@ .=-; ", ".!:<('[{+ .*>-@ ", ".:/('[*_@ .>-; ", "+.('[*_@ +]; ", " +{_{_@ ; ", " +@+@ ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-function-public-static.xpm000066400000000000000000000020621157374236500314170ustar00rootroot00000000000000/* XPM */ static char * ecb_function_public_static_xpm[] = { "16 14 44 1", " c None", ". c #686868", "+ c #F5F5F5", "@ c #757575", "# c #727272", "$ c #8F8F8F", "% c #9F9F9F", "& c #FFFFFF", "* c #EEEEEE", "= c #AAAAAA", "- c #656565", "; c #4C4C4C", "> c #DCDCDC", ", c #989898", "' c #444444", ") c #C8C8C8", "! c #8A8A8A", "~ c #ECECEC", "{ c #A1A1A1", "] c #676767", "^ c #DDDDDD", "/ c #A8A8A8", "( c #E2E2E2", "_ c #A7A7A7", ": c #B6B6B6", "< c #D1D1D1", "[ c #A4A4A4", "} c #A3A3A3", "| c #BDBDBD", "1 c #A5A5A5", "2 c #8E8E8E", "3 c #E3E3E3", "4 c #ACACAC", "5 c #C9C9C9", "6 c #B5B5B5", "7 c #D8D8D8", "8 c #E6E6E6", "9 c #AFAFAF", "0 c #666666", "a c #939393", "b c #9B9B9B", "c c #EAEAEA", "d c #B7B7B7", "e c #8C8C8C", " ", " ...+ ", " @#$+.%&%.+ ", " #*=&.& +.& ", " -;>,+ .....+ ", " ')!~{]+ ..%..& ", "')^/(_:]+.%&%.+ ", "'<[}~[)-&..%..& ", "'|12345]+.....+ ", "'16!*/7-&+&+&+& ", "+':289-& ", " +]08a& ", " +bcd+ ", " e$}& "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-function-public.xpm000066400000000000000000000012331157374236500301310ustar00rootroot00000000000000/* XPM */ static char * ecb_function_public_xpm[] = { "16 14 19 1", " c None", ". c #686868", "+ c #F5F5F5", "@ c #9F9F9F", "# c #FFFFFF", "$ c #444444", "% c #C8C8C8", "& c #D1D1D1", "* c #BDBDBD", "= c #A6A6A6", "- c #676767", "; c #A4A4A4", "> c #B5B5B5", ", c #B6B6B6", "' c #656565", ") c #A5A5A5", "! c #B3B3B3", "~ c #C9C9C9", "{ c #D8D8D8", " ", " ...+ ", " .@#@.+ ", " .# +.# ", " $$$$++ .....+ ", " $%&*=-+ ..@..# ", "$%&;=>,-+.@#@.+ ", "$&;=>,%'#..@..# ", "$*)!,%~-+.....+ ", "$)>,%~{'#+#+#+# ", "+$,%~{'# ", " +-'-'# ", " +#+# ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-function-unknown-static.xpm000066400000000000000000000017531157374236500316460ustar00rootroot00000000000000/* XPM */ static char * ecb_function_unknown_static_xpm[] = { "12 14 43 1", " c None", ". c #757575", "+ c #727272", "@ c #8F8F8F", "# c #F5F5F5", "$ c #EEEEEE", "% c #AAAAAA", "& c #FFFFFF", "* c #656565", "= c #4C4C4C", "- c #DCDCDC", "; c #989898", "> c #444444", ", c #C8C8C8", "' c #8A8A8A", ") c #ECECEC", "! c #A1A1A1", "~ c #676767", "{ c #DDDDDD", "] c #A8A8A8", "^ c #E2E2E2", "/ c #A7A7A7", "( c #B6B6B6", "_ c #A5A5C6", ": c #D1D1D1", "< c #A4A4A4", "[ c #A3A3A3", "} c #BDBDBD", "| c #A5A5A5", "1 c #8E8E8E", "2 c #E3E3E3", "3 c #ACACAC", "4 c #C9C9C9", "5 c #B5B5B5", "6 c #D8D8D8", "7 c #E6E6E6", "8 c #AFAFAF", "9 c #666666", "0 c #939393", "a c #9B9B9B", "b c #EAEAEA", "c c #B7B7B7", "d c #8C8C8C", " ", " ", " .+@# ", " +$%& ", " *=-;# ", " >,')!~# ", " >,{]^/(~# ", "_>:<[)<,*& ", " >}|1234~# ", " >|5'$]6*& ", " #>(178*& ", " #~970& ", " #abc# ", " d@[& "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-function-unknown.xpm000066400000000000000000000011241157374236500303510ustar00rootroot00000000000000/* XPM */ static char * ecb_function_unknown_xpm[] = { "12 14 18 1", " c None", ". c #444444", "+ c #F5F5F5", "@ c #C8C8C8", "# c #D1D1D1", "$ c #BDBDBD", "% c #A6A6A6", "& c #676767", "* c #A4A4A4", "= c #B5B5B5", "- c #B6B6B6", "; c #A5A5C6", "> c #656565", ", c #FFFFFF", "' c #A5A5A5", ") c #B3B3B3", "! c #C9C9C9", "~ c #D8D8D8", " ", " ", " ", " ", " ....+ ", " .@#$%&+ ", " .@#*%=-&+ ", ";.#*%=-@>, ", " .$')-@!&+ ", " .'=-@!~>, ", " +.-@!~>, ", " +&>&>, ", " +,+, ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-variable-private-static.xpm000066400000000000000000000021431157374236500315530ustar00rootroot00000000000000/* XPM */ static char * ecb_variable_private_static_xpm[] = { "16 14 47 1", " c None", ". c #696969", "+ c #F5F5F5", "@ c #757575", "# c #727272", "$ c #8F8F8F", "% c #C5C5C5", "& c #FFFFFF", "* c #989898", "= c #EDEDED", "- c #AFAFAF", "; c #444444", "> c #676767", ", c #D8D8D8", "' c #939393", ") c #D7D7D7", "! c #BDBDBD", "~ c #8C8C8C", "{ c #EBEBEB", "] c #929292", "^ c #A9A9A9", "/ c #D2D2D2", "( c #9E9E9E", "_ c #898989", ": c #E1E1E1", "< c #979797", "[ c #AAAAAA", "} c #CBCBCB", "| c #A5A5A5", "1 c #868686", "2 c #E9E9E9", "3 c #B3B3B3", "4 c #A2A2A2", "5 c #8B8B8B", "6 c #E2E2E2", "7 c #B0B0B0", "8 c #888888", "9 c #B9B9B9", "0 c #A7A7A7", "a c #8D8D8D", "b c #E3E3E3", "c c #B4B4B4", "d c #B6B6B6", "e c #7D7D7D", "f c #E8E8E8", "g c #BCBCBC", "h c #9D9D9D", " ", " ...+ ", " @#$+ .%&%.+ ", " *=-& .& +.& ", ";;;>,';; .....+ ", ";)!~{]!^&..~..& ", ";/(_:<[_+.~&~.+ ", ";}|12]31&..~..& ", ";/456<7_+.....+ ", ";}[8{]91&+&+&+& ", ";/0ab c #9E9E9E", ", c #A6A6A6", "' c #A3A3A3", ") c #ACACAC", "! c #AAAAAA", "~ c #898989", "{ c #CBCBCB", "] c #A5A5A5", "^ c #ABABAB", "/ c #B3B3B3", "( c #868686", "_ c #A2A2A2", ": c #B0B0B0", "< c #A7A7A7", "[ c #B1B1B1", "} c #AFAFAF", "| c #B9B9B9", "1 c #B8B8B8", "2 c #B4B4B4", " ", " ...+ ", " .@#@.+ ", " .# +.# ", "$$$$$$$$ .....+ ", "$%&*&*&=#..-..# ", "$;>,')!~+.-#-.+ ", "${]'^=/(#..-..# ", "$;_!=/:~+.....+ ", "${!<[}|(#+#+#+# ", "$;<:}12~+ ", "$*~(~(~(# ", " #+#+#+#+ ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-variable-protected-static.xpm000066400000000000000000000022451157374236500320750ustar00rootroot00000000000000/* XPM */ static char * ecb_variable_protected_static_xpm[] = { "16 14 51 1", " c None", ". c #444444", "+ c #F5F5F5", "@ c #757575", "# c #727272", "$ c #8F8F8F", "% c #FFFFFF", "& c #EDEDED", "* c #F2F2F2", "= c #E7E7E7", "- c #747474", "; c #989898", "> c #AFAFAF", ", c #D8D8D8", "' c #D2D2D2", ") c #8C8C8C", "! c #FBFBFB", "~ c #676767", "{ c #939393", "] c #E0E0E0", "^ c #898989", "/ c #D7D7D7", "( c #BDBDBD", "_ c #EBEBEB", ": c #929292", "< c #A9A9A9", "[ c #787878", "} c #9E9E9E", "| c #E1E1E1", "1 c #979797", "2 c #AAAAAA", "3 c #CBCBCB", "4 c #A5A5A5", "5 c #868686", "6 c #E9E9E9", "7 c #B3B3B3", "8 c #A2A2A2", "9 c #8B8B8B", "0 c #E2E2E2", "a c #B0B0B0", "b c #888888", "c c #B9B9B9", "d c #A7A7A7", "e c #8D8D8D", "f c #E3E3E3", "g c #B4B4B4", "h c #B6B6B6", "i c #7D7D7D", "j c #E8E8E8", "k c #BCBCBC", "l c #9D9D9D", " ", " .....+ ", " @#$+ .%&*&=-%", " ;&>% .&,.,')!", "...~,{...=',],^%", "./()_:(<%..'[^% ", ".'}^|12^+%.,^% ", ".3456:75% .')! ", ".'8901a^+ .,])% ", ".32b_:c5% .])! ", ".'def1g^+ [! ", ".h^ij:^5% ! ", " %+d6k+%+ ", " ;l2% "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-variable-protected.xpm000066400000000000000000000016761157374236500306170ustar00rootroot00000000000000/* XPM */ static char * ecb_variable_protected_xpm[] = { "16 14 37 1", " c None", ". c #444444", "+ c #F5F5F5", "@ c #FFFFFF", "# c #EDEDED", "$ c #F2F2F2", "% c #E7E7E7", "& c #747474", "* c #D8D8D8", "= c #D2D2D2", "- c #8C8C8C", "; c #FBFBFB", "> c #E0E0E0", ", c #898989", "' c #D7D7D7", ") c #BDBDBD", "! c #B6B6B6", "~ c #A9A9A9", "{ c #787878", "] c #9E9E9E", "^ c #A6A6A6", "/ c #A3A3A3", "( c #ACACAC", "_ c #AAAAAA", ": c #CBCBCB", "< c #A5A5A5", "[ c #ABABAB", "} c #B3B3B3", "| c #868686", "1 c #A2A2A2", "2 c #B0B0B0", "3 c #A7A7A7", "4 c #B1B1B1", "5 c #AFAFAF", "6 c #B9B9B9", "7 c #B8B8B8", "8 c #B4B4B4", " ", " .....+ ", " .@#$#%&@", " .#*.*=-;", ".........%=*>*,@", ".')!)!)~@..={,@ ", ".=]^/(_,+@.*,@ ", ".:-@ ", ".:_3456|@ .>-; ", ".=32578,+ {; ", ".!,|,|,|@ ; ", " @+@+@+@+ ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-variable-public-static.xpm000066400000000000000000000021621157374236500313600ustar00rootroot00000000000000/* XPM */ static char * ecb_variable_public_static_xpm[] = { "16 14 48 1", " c None", ". c #686868", "+ c #F5F5F5", "@ c #757575", "# c #727272", "$ c #8F8F8F", "% c #9F9F9F", "& c #FFFFFF", "* c #989898", "= c #EDEDED", "- c #AFAFAF", "; c #444444", "> c #676767", ", c #D8D8D8", "' c #939393", ") c #404040", "! c #D7D7D7", "~ c #BDBDBD", "{ c #8C8C8C", "] c #EBEBEB", "^ c #929292", "/ c #A9A9A9", "( c #D2D2D2", "_ c #9E9E9E", ": c #898989", "< c #E1E1E1", "[ c #979797", "} c #AAAAAA", "| c #CBCBCB", "1 c #A5A5A5", "2 c #868686", "3 c #E9E9E9", "4 c #B3B3B3", "5 c #A2A2A2", "6 c #8B8B8B", "7 c #E2E2E2", "8 c #B0B0B0", "9 c #888888", "0 c #B9B9B9", "a c #A7A7A7", "b c #8D8D8D", "c c #E3E3E3", "d c #B4B4B4", "e c #B6B6B6", "f c #7D7D7D", "g c #E8E8E8", "h c #BCBCBC", "i c #9D9D9D", " ", " ...+ ", " @#$+.%&%.+ ", " *=-&.& +.& ", ";;;>,';) .....+ ", ";!~{]^~/&..%..& ", ";(_:<[}:+.%&%.+ ", ";|123^42&..%..& ", ";(567[8:+.....+ ", ";|}9]^02&+&+&+& ", ";(abc[d:+ ", ";e:fg^:2& ", " &+a3h+&+ ", " *i}& "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-variable-public.xpm000066400000000000000000000015331157374236500300740ustar00rootroot00000000000000/* XPM */ static char * ecb_variable_public_xpm[] = { "16 14 31 1", " c None", ". c #686868", "+ c #F5F5F5", "@ c #9F9F9F", "# c #FFFFFF", "$ c #444444", "% c #404040", "& c #D7D7D7", "* c #BDBDBD", "= c #B6B6B6", "- c #A9A9A9", "; c #D2D2D2", "> c #9E9E9E", ", c #A6A6A6", "' c #A3A3A3", ") c #ACACAC", "! c #AAAAAA", "~ c #898989", "{ c #CBCBCB", "] c #A5A5A5", "^ c #ABABAB", "/ c #B3B3B3", "( c #868686", "_ c #A2A2A2", ": c #B0B0B0", "< c #A7A7A7", "[ c #B1B1B1", "} c #AFAFAF", "| c #B9B9B9", "1 c #B8B8B8", "2 c #B4B4B4", " ", " ...+ ", " .@#@.+ ", " .# +.# ", "$$$$$$$% .....+ ", "$&*=*=*-#..@..# ", "$;>,')!~+.@#@.+ ", "${]'^-/(#..@..# ", "$;_!-/:~+.....+ ", "${!<[}|(#+#+#+# ", "$;<:}12~+ ", "$=~(~(~(# ", " #+#+#+#+ ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-variable-unknown-static.xpm000066400000000000000000000020331157374236500315760ustar00rootroot00000000000000/* XPM */ static char * ecb_variable_unknown_static_xpm[] = { "12 14 46 1", " c None", ". c #757575", "+ c #727272", "@ c #8F8F8F", "# c #F5F5F5", "$ c #989898", "% c #EDEDED", "& c #AFAFAF", "* c #FFFFFF", "= c #444444", "- c #676767", "; c #D8D8D8", "> c #939393", ", c #D7D7D7", "' c #BDBDBD", ") c #8C8C8C", "! c #EBEBEB", "~ c #929292", "{ c #A9A9A9", "] c #D2D2D2", "^ c #9E9E9E", "/ c #898989", "( c #E1E1E1", "_ c #979797", ": c #AAAAAA", "< c #A5A5C6", "[ c #CBCBCB", "} c #A5A5A5", "| c #868686", "1 c #E9E9E9", "2 c #B3B3B3", "3 c #A2A2A2", "4 c #8B8B8B", "5 c #E2E2E2", "6 c #B0B0B0", "7 c #888888", "8 c #B9B9B9", "9 c #A7A7A7", "0 c #8D8D8D", "a c #E3E3E3", "b c #B4B4B4", "c c #B6B6B6", "d c #7D7D7D", "e c #E8E8E8", "f c #BCBCBC", "g c #9D9D9D", " ", " ", " .+@# ", " $%&* ", " ===-;>== ", " =,')!~'{* ", " =]^/(_:/# ", "<=[}|1~2|* ", " =]345_6/# ", " =[:7!~8|* ", " =]90a_b/# ", " =c/de~/|* ", " *#91f#*# ", " $g:* "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-abstract-variable-unknown.xpm000066400000000000000000000014041157374236500303120ustar00rootroot00000000000000/* XPM */ static char * ecb_variable_unknown_xpm[] = { "12 14 29 1", " c None", ". c #444444", "+ c #D7D7D7", "@ c #BDBDBD", "# c #B6B6B6", "$ c #A9A9A9", "% c #FFFFFF", "& c #D2D2D2", "* c #9E9E9E", "= c #A6A6A6", "- c #A3A3A3", "; c #ACACAC", "> c #AAAAAA", ", c #898989", "' c #F5F5F5", ") c #A5A5C6", "! c #CBCBCB", "~ c #A5A5A5", "{ c #ABABAB", "] c #B3B3B3", "^ c #868686", "/ c #A2A2A2", "( c #B0B0B0", "_ c #A7A7A7", ": c #B1B1B1", "< c #AFAFAF", "[ c #B9B9B9", "} c #B8B8B8", "| c #B4B4B4", " ", " ", " ", " ", " ........ ", " .+@#@#@$% ", " .&*=-;>,' ", ").!~-{$]^% ", " .&/>$](,' ", " .!>_:<[^% ", " .&_(<}|,' ", " .#,^,^,^% ", " %'%'%'%' ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-class-private.xpm000066400000000000000000000017511157374236500260110ustar00rootroot00000000000000/* XPM */ static char * ecb_class_private_xpm[] = { "16 14 40 1", " c None", ". c #BA0000", "+ c #F2F2F2", "@ c #040404", "# c #FFFFFF", "$ c #FF9090", "% c #F2F1C5", "& c #E0B84B", "* c #DCB857", "= c #F2DDA4", "- c #E0B74A", "; c #D7B34F", "> c #ECC864", ", c #F2CB61", "' c #FF2424", ") c #E8C25C", "! c #4F2721", "~ c #4B5F87", "{ c #4F648E", "] c #E5A684", "^ c #D48E67", "/ c #D67A44", "( c #C2CBDF", "_ c #8AAAEA", ": c #83A1DE", "< c #87A7E8", "[ c #E2B7A1", "} c #D08254", "| c #DF966D", "1 c #B2C5EB", "2 c #6B8CD1", "3 c #7798DF", "4 c #7190D4", "5 c #D67942", "6 c #DEAC90", "7 c #532923", "8 c #A9BBDF", "9 c #83A3E6", "0 c #809EDC", "a c #EEC1AA", " ...+ ", " @# .$#$.+", " @%@+ .+ +.#", " @%&*@# .....+", "@=-;>,@+ ..'..#", " @,),@# .'#'.+", " @,@+ @@!..'..#", "@@~@~{@]^/.....+", "@(_:<@][/}|!+#+#", "@1234@^5^]67# ", "@890<@5}]6a!+ ", "@10<0{@|6a!# ", "@~{~{~+!7!+ ", " #+#+# #+# "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-class-protected.xpm000066400000000000000000000020441157374236500263240ustar00rootroot00000000000000/* XPM */ static char * ecbclassprotected_xpm[] = { "16 14 48 1", " c None", "! c black", "# c #040404", "$ c white", "% c #FEE99F", "& c #FEF0B7", "' c #FEDF8B", "( c #8E2E00", ") c #F2F1C5", "* c #F2F2F2", "+ c #FDC760", ", c #FCBD4F", "- c #C04C00", ". c #E0B84B", "0 c #DCB857", "1 c #FDD378", "2 c #B84900", "3 c #F2DDA4", "4 c #E0B74A", "5 c #D7B34F", "6 c #ECC864", "7 c #F2CB61", "8 c #963400", "9 c #E8C25C", ": c #4F2721", "; c #4B5F87", "< c #4F648E", "= c #E5A684", "> c #D48E67", "? c #D67A44", "@ c #C2CBDF", "A c #8AAAEA", "B c #83A1DE", "C c #87A7E8", "D c #E2B7A1", "E c #D08254", "F c #B2C5EB", "G c #6B8CD1", "H c #7798DF", "I c #7190D4", "J c #D67942", "K c #DEAC90", "L c #A9BBDF", "M c #83A3E6", "N c #809EDC", "O c #EEC1AA", "P c #DF966D", "Q c #532923", " #####$ ", " #$ #$%&%'($", " #)#* #%+#+,-*", " #).0#$ !',+1+2$", "#34567#* ##,82* ", " #797#$ #+2$ ", " #7#* ##:#,-* ", "##;#;<#=>?#+1-$ ", "#@ABC#=D?E#1-* ", "#FGHI#>J>=K8$ ", "#LMNC#JE=KO: ", "#FNCN<#PKO:$ ", "#;<;<;*:Q:* ", " $*$*$ $*$ "};ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-class-public.xpm000066400000000000000000000017301157374236500256120ustar00rootroot00000000000000/* XPM */ static char * ecb_class_public_xpm[] = { "16 14 39 1", " c None", ". c #005D00", "+ c #FFFFFF", "@ c #040404", "# c #3CBA00", "$ c #F2F2F2", "% c #F2F1C5", "& c #E0B84B", "* c #DCB857", "= c #F2DDA4", "- c #E0B74A", "; c #D7B34F", "> c #ECC864", ", c #F2CB61", "' c #E8C25C", ") c #4F2721", "! c #4B5F87", "~ c #4F648E", "{ c #E5A684", "] c #D48E67", "^ c #D67A44", "/ c #C2CBDF", "( c #8AAAEA", "_ c #83A1DE", ": c #87A7E8", "< c #E2B7A1", "[ c #D08254", "} c #DF966D", "| c #B2C5EB", "1 c #6B8CD1", "2 c #7798DF", "3 c #7190D4", "4 c #D67942", "5 c #DEAC90", "6 c #532923", "7 c #A9BBDF", "8 c #83A3E6", "9 c #809EDC", "0 c #EEC1AA", " ...+ ", " @+ .#+#.$ ", " @%@$ .$ $.+ ", " @%&*@+ + .....$", "@=-;>,@$ ..#..+", " @,',@+ .#+#.$", " @,@$ @@)..#..+", "@@!@!~@{]^.....$", "@/(_:@{<^[})$+$+", "@|123@]4]{56+ ", "@789:@4[{50)$ ", "@|9:9~@}50)+ ", "@!~!~!$)6)$ ", " +$+$+ +$+ "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-class-unknown.xpm000066400000000000000000000017111157374236500260320ustar00rootroot00000000000000/* XPM */ static char * ecb_class_unknown_xpm[] = { "16 14 38 1", " c None", ". c #040404", "+ c #FFFFFF", "@ c #F2F1C5", "# c #F2F2F2", "$ c #E0B84B", "% c #DCB857", "& c #F2DDA4", "* c #E0B74A", "= c #D7B34F", "- c #ECC864", "; c #F2CB61", "> c #E8C25C", ", c #4F2721", "' c #A5A5C6", ") c #4B5F87", "! c #4F648E", "~ c #E5A684", "{ c #D48E67", "] c #D67A44", "^ c #C2CBDF", "/ c #8AAAEA", "( c #83A1DE", "_ c #87A7E8", ": c #E2B7A1", "< c #D08254", "[ c #DF966D", "} c #B2C5EB", "| c #6B8CD1", "1 c #7798DF", "2 c #7190D4", "3 c #D67942", "4 c #DEAC90", "5 c #532923", "6 c #A9BBDF", "7 c #83A3E6", "8 c #809EDC", "9 c #EEC1AA", " ", " .+ ", " .@.# ", " .@$%.+ ", " .&*=-;.# ", " .;>;.+ ", " .;.# ..,# ", "'..).)!.~{],+ ", " .^/(_.~:]<[,# ", " .}|12.{3{~45+ ", " .678_.3<~49,# ", " .}8_8!.[49,+ ", " .)!)!)#,5,# ", " +#+#+ +#+ "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-constructor-bucket.xpm000066400000000000000000000042021157374236500270660ustar00rootroot00000000000000/* XPM */ static char * Constructors_xpm[] = { "16 14 94 2", " c None", ". c #040404", "+ c #FFFFFF", "@ c #FFE9AD", "# c #848484", "$ c #8B8B8B", "% c #CAA542", "& c #E0B74A", "* c #666666", "= c #616161", "- c #3B3B3B", "; c #D1D1D1", "> c #E4BD54", ", c #CDAA4C", "' c #E8C25C", ") c #C6C6C6", "! c #545454", "~ c #6B6A6A", "{ c #050505", "] c #E3BD53", "^ c #D3B257", "/ c #FFD666", "( c #7C7C7C", "_ c #717070", ": c #F2F2F2", "< c #5E5E5E", "[ c #5B5B5B", "} c #626262", "| c #676767", "1 c #414141", "2 c #857A5D", "3 c #756C55", "4 c #80765D", "5 c #766E57", "6 c #7B7B7B", "7 c #6F6F6F", "8 c #BCBCBC", "9 c #C6C5C6", "0 c #EFEFEF", "a c #FBFCFB", "b c #727272", "c c #FCE7AC", "d c #E1D1A3", "e c #FBE5AB", "f c #FAFAFA", "g c #6B6B6B", "h c #696969", "i c #C5C5C5", "j c #BBBBBB", "k c #FBFBFC", "l c #EEEDED", "m c #F9F9F9", "n c #717170", "o c #FAFAF9", "p c #E6E6E6", "q c #717171", "r c #EBEBEA", "s c #F6F7F7", "t c #F9FAF9", "u c #F1F0F1", "v c #C2C2C2", "w c #B7B8B7", "x c #F5F5F5", "y c #E7E8E8", "z c #E5E5E5", "A c #E2E2E2", "B c #EDEDEE", "C c #DFDFDF", "D c #B7B7B8", "E c #BABBBB", "F c #D9D9D9", "G c #D8D8D8", "H c #D7D7D7", "I c #D7D6D6", "J c #D6D6D6", "K c #D5D5D5", "L c #D4D5D4", "M c #D4D4D4", "N c #C7C7C7", "O c #BDBDBD", "P c #484847", "Q c #C1C1C0", "R c #F1F1F0", "S c #E3E3E3", "T c #E0E0E0", "U c #EBEBEB", "V c #DEDEDE", "W c #E8E9E8", "X c #DCDBDB", "Y c #EAEBEB", "Z c #E9E8E9", "` c #DCDCDB", " . c #E7E7E6", ".. c #646464", " . + ", " . @ . + ", " # $ . @ % & . * # $ = - ", " # ; . @ % > , ' . ; ) ! ~ + ", " = ; { @ % ] ^ ' ^ / . ( ) _ : ", "< [ } | 1 2 3 4 5 2 1 6 ) ; ~ + ", "7 8 9 0 a b c d e 7 f g ; ) _ : ", "h i j k l m n e 7 o p q ) ; ~ + ", "7 j i l m r s 7 t p u g ; ) _ : ", "h v w x y : z s A B C q ) ; ~ + ", "7 D E F G H I J K L M g N O P : ", "h Q J R S l T U V W X q ) } : ", "7 J : S B T Y V Z ` .g } : ", "h 7 h 7 h 7 h 7 h 7 h ..: "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-constructor-private.xpm000066400000000000000000000013171157374236500272670ustar00rootroot00000000000000/* XPM */ static char * ecb_constructor_private_xpm[] = { "16 14 22 1", " c None", ". c #BA0000", "+ c #FFFFFF", "@ c #FF9090", "# c #F2F2F2", "$ c #040404", "% c #FFE9AD", "& c #6B4900", "* c #D5AE46", "= c #E0B74A", "- c #FF2424", "; c #D5AF47", "> c #E4BD54", ", c #D8B350", "' c #E8C25C", ") c #050505", "! c #E3BD53", "~ c #DCB857", "{ c #E0BE5F", "] c #FFD666", "^ c #ECC864", "/ c #E4C267", " ", " ...+ ", " .@+@.# ", " $# .+ +.+ ", " $%&# .....# ", " $%*=&# ..-..+ ", " $%;>,'&#.-+-.# ", ")%*!~'{]&..-..+ ", " $]~^{]&#.....# ", " $]/]&# #+#+#+ ", " $]&# ", " &# ", " # ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-constructor-protected.xpm000066400000000000000000000015411157374236500276050ustar00rootroot00000000000000/* XPM */ static char * ecb_constructor_protected_xpm[] = { "16 14 31 1", " c None", ". c #040404", "+ c #FFFFFF", "@ c #FEE99F", "# c #FEF0B7", "$ c #FEDF8B", "% c #8E2E00", "& c #F2F2F2", "* c #FDC760", "= c #FCBD4F", "- c #C04C00", "; c #FEFBE5", "> c #FFE9AD", ", c #6B4900", "' c #000000", ") c #FDD378", "! c #B84900", "~ c #D5AE46", "{ c #E0B74A", "] c #963400", "^ c #D5AF47", "/ c #E4BD54", "( c #D8B350", "_ c #E8C25C", ": c #050505", "< c #E3BD53", "[ c #DCB857", "} c #E0BE5F", "| c #FFD666", "1 c #ECC864", "2 c #E4C267", " ", " .....+ ", " .+@#@$%+", " .& .@*.*=-;", " .>,& '$=*)*!+", " .>~{,&+..=]!+ ", " .>^/(_,&+.*!+ ", ":>~<[_}|,&.=-; ", " .|[1}|,& .*)-+ ", " .|2|,& .)-; ", " .|,& ]; ", " ,& ; ", " & ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-constructor-public.xpm000066400000000000000000000012411157374236500270670ustar00rootroot00000000000000/* XPM */ static char * ecbconstructorpublic_xpm[] = { "16 14 22 1", " c None", "! c black", "# c #005D00", "$ c white", "% c #3CBA00", "& c #F2F2F2", "' c #040404", "( c #FFE9AD", ") c #6B4900", "* c #D5AE46", "+ c #E0B74A", ", c #D5AF47", "- c #E4BD54", ". c #D8B350", "0 c #E8C25C", "1 c #050505", "2 c #E3BD53", "3 c #DCB857", "4 c #E0BE5F", "5 c #FFD666", "6 c #ECC864", "7 c #E4C267", " ", " ###$ ", " #%$%#& ", " '& #$ #$ ", " '()&$ #####& ", " '(*+)& ##%##$ ", " '(,-.0)&#%$%#& ", "1(*23045)##%##$ ", " '53645)&#####& ", " '575)& &$&$&$ ", " '5)& ", " )& ", " & ", " "};ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-constructor-unknown.xpm000066400000000000000000000011471157374236500273150ustar00rootroot00000000000000/* XPM */ static char * ecb_constructor_unknown_xpm[] = { "12 14 19 1", " c None", ". c #040404", "+ c #F2F2F2", "@ c #FFE9AD", "# c #6B4900", "$ c #D5AE46", "% c #E0B74A", "& c #D5AF47", "* c #E4BD54", "= c #D8B350", "- c #E8C25C", "; c #A5A5C6", "> c #050505", ", c #E3BD53", "' c #DCB857", ") c #E0BE5F", "! c #FFD666", "~ c #ECC864", "{ c #E4C267", " ", " ", " ", " .+ ", " .@#+ ", " .@$%#+ ", " .@&*=-#+ ", ";>@$,'-)!#+ ", " .!'~)!#+ ", " .!{!#+ ", " .!#+ ", " #+ ", " + ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-enum-private.xpm000066400000000000000000000007361157374236500256520ustar00rootroot00000000000000/* XPM */ static char * ecb_enumeration_private_xpm[] = { "16 14 7 1", " c None", ". c #BA0000", "+ c #FFFFFF", "@ c #F2F2F2", "# c #FF9090", "$ c #0000FF", "% c #FF2424", " ", " ...+ ", "+@+ .#+#.+", "@$@ .+ @.@", "$$+@+@ .....+", "@$@$$+ ..%..@", "+$+@+$+@+ .%+%.+", "@$@+$+$$@@..%..@", "+@+$+@+@$+.....+", " @$$$@$@@+@+@+ ", " +@+@+@$@ ", " +$$@+ ", " @+@+ ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-enum-protected.xpm000066400000000000000000000011611157374236500261620ustar00rootroot00000000000000/* XPM */ static char * ecb_enumeration_protected_xpm[] = { "16 14 16 1", " c None", ". c #040404", "+ c #F2F2F2", "@ c #FFFFFF", "# c #FEE99F", "$ c #FEF0B7", "% c #FEDF8B", "& c #8E2E00", "* c #0000FF", "= c #FDC760", "- c #FCBD4F", "; c #C04C00", "> c #FEFBE5", ", c #FDD378", "' c #B84900", ") c #963400", " ", " .....+ ", "@+@ .@#$#%&@", "+*+ .#=.=-;>", "**@+@+ .%-=,='@", "+*+**@ @..-)'@ ", "@*@+@*@+@@.='@ ", "+*+@*@**++.-;> ", "@+@*@+@+*@.=,;@ ", " +***+*++.,;> ", " @+@+@+*+ )> ", " @**+@ > ", " +@+@ ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-enum-public.xpm000066400000000000000000000007151157374236500254530ustar00rootroot00000000000000/* XPM */ static char * ecb_enumeration_public_xpm[] = { "16 14 6 1", " c None", ". c #005D00", "+ c #F2F2F2", "@ c #FFFFFF", "# c #3CBA00", "$ c #0000FF", " ", " ...+ ", "@+@ .#@#.+ ", "+$+ .@ +.@ ", "$$@+@+ @ .....@", "+$+$$@ ..#..+", "@$@+@$@+@ .#@#.@", "+$+@$@$$++..#..+", "@+@$@+@+$@.....@", " +$$$+$++@+@+@+", " @+@+@+$+ ", " @$$+@ ", " +@+@ ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-enum-unknown.xpm000066400000000000000000000006331157374236500256730ustar00rootroot00000000000000/* XPM */ static char * ecbenumunknown_xpm[] = { "16 14 5 1", " c None", "! c black", "# c white", "$ c #F2F2F2", "% c #0000FF", " ", " ", "#$# ", "$%$ ", "%%#$#$ ", "$%$%%# ", "#%#$#%#$# ", "$%$#%#%%$$ ", "#$#%#$#$%# ", " $%%%$%$$ ", " #$#$#$%$ ", " #%%$# ", " $#$# ", " "};ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-function-bucket.xpm000066400000000000000000000044271157374236500263370ustar00rootroot00000000000000/* XPM */ static char * Methods_xpm[] = { "16 14 103 2", " c None", ". c #000000", "+ c #E5A684", "@ c #D6AE99", "# c #DF966D", "$ c #C16E3E", "% c #532923", "& c #E6E6E6", "* c #CA713E", "= c #DB8958", "- c #C98762", "; c #848484", "> c #8B8B8B", ", c #616161", "' c #3B3B3B", ") c #4B251F", "! c #D1D1D1", "~ c #C6C6C6", "{ c #545454", "] c #6B6A6A", "^ c #FFFFFF", "/ c #C16D3C", "( c #DB8757", "_ c #D3A389", ": c #717070", "< c #F2F2F2", "[ c #5E5E5E", "} c #5B5B5B", "| c #626262", "1 c #444444", "2 c #715B4F", "3 c #7B665A", "4 c #736358", "5 c #7E6E65", "6 c #766963", "7 c #80756F", "8 c #544948", "9 c #7B7B7B", "0 c #6F6F6F", "a c #BCBCBC", "b c #C6C5C6", "c c #EFEFEF", "d c #787978", "e c #DAB8A5", "f c #EFCEBC", "g c #DEC5B8", "h c #F2DACE", "i c #96837F", "j c #FAFAFA", "k c #6B6B6B", "l c #696969", "m c #C5C5C5", "n c #BBBBBB", "o c #FBFBFC", "p c #EEEEED", "q c #A28D89", "r c #988480", "s c #A18B88", "t c #FAFAF9", "u c #717171", "v c #EEEDED", "w c #F9F9F9", "x c #E9E9E8", "y c #FBFBFB", "z c #E7E7E7", "A c #F9FAF9", "B c #F1F0F1", "C c #C2C2C2", "D c #B7B8B7", "E c #F5F5F5", "F c #E7E8E8", "G c #E5E5E5", "H c #EFF0F0", "I c #E2E2E2", "J c #ECEDED", "K c #DFDFDF", "L c #B7B7B8", "M c #C0C1C1", "N c #D6D6D6", "O c #E0E0E0", "P c #D4D4D4", "Q c #DFDEDE", "R c #D3D3D3", "S c #DDDDDD", "T c #D1D2D1", "U c #DCDCDC", "V c #C7C7C7", "W c #BDBDBD", "X c #484847", "Y c #C1C1C0", "Z c #F1F1F0", "` c #E3E3E3", " . c #EBEBEB", ".. c #DEDEDE", "+. c #E8E9E8", "@. c #DCDBDB", "#. c #EDEDEE", "$. c #EAEBEB", "%. c #E9E8E9", "&. c #DCDCDB", "*. c #E7E7E6", "=. c #646464", "-. c #040404", " -.-.-.-. ", " -.+ @ # $ % & ", " -.+ @ * $ = - % ; > , ' ", " ; -.@ * $ = - + ) ! ~ { ] ^ ", " , ! -.# / ( - + _ % ~ { ~ : < ", "[ } | 1 2 3 4 5 6 7 8 9 ~ ! ] ^ ", "0 a b c d e f g h i j k ! ~ : < ", "l m n o p q r s i t & u ~ ! ] ^ ", "0 n m v w x y z A & B k ! ~ : < ", "l C D E F < G H I J K u ~ ! ] ^ ", "0 L M N O P Q R S T U k V W X < ", "l Y N Z ` v O ...+.@.u ~ | < ", "0 N < ` #.O $...%.&.*.k | < ", "l 0 l 0 l 0 l 0 l 0 l =.< "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-function-private-static.xpm000066400000000000000000000021661157374236500300170ustar00rootroot00000000000000/* XPM */ static char * ecbfunctionprivatestatic_xpm[] = { "16 14 53 1", " c None", "! c black", "# c #BA0000", "$ c #F2F2F2", "% c #474747", "& c #434343", "' c #626C7D", "( c #FF9090", ") c white", "* c #F6E8C6", "+ c #C27F58", ", c #4F2721", "- c #1B0D0B", ". c #E0CFB0", "0 c #B16238", "1 c #040404", "2 c #E5A684", "3 c #915532", "4 c #F7E4C2", "5 c #C36D3D", "6 c #532923", "7 c #FF2424", "8 c #E7CBBC", "9 c #C07B57", ": c #EAD6B7", "; c #CE7644", "< c #D48E67", "= c #E2B7A1", "> c #CA713E", "? c #B67553", "@ c #F7E2C6", "A c #C37344", "B c #DF966D", "C c #CB733F", "D c #995A35", "E c #EAD7C1", "F c #D07C4D", "G c #DEAC90", "H c #DB8958", "I c #F8E5D1", "J c #C6794E", "K c #EEC1AA", "L c #EBDACB", "M c #D18255", "N c #4A2A26", "O c #ECDBCF", "P c #A85D35", "Q c #887371", "R c #EDE0D8", "S c #D58F67", "T c #73605E", "U c #796563", "V c #90807F", " ", " ###$ ", " %&'$ #()(#$ ", " &*+) #) $#) ", " ,-.0$ #####$ ", " 123456$ ##7##) ", "1289:;<6$#7)7#$ ", "1=>?@A2,)##7##) ", "1BCDEFG6$#####$ ", "1CH3IJK,)$)$)$) ", "$1 c #CA713E", ", c #DB8958", "' c #D48E67", ") c #4F2721", "! c #CB733F", "~ c #DB8757", "{ c #DEAC90", "] c #EEC1AA", " ", " ...+ ", " .@#@.+ ", " .# +.# ", " $$$$+ .....+ ", " $%&*=-+ ..;..# ", "$%&>=,'-+.;#;.+ ", "$&>=,'%)#..;..# ", "$*!~'%{-+.....+ ", "$!,'%{])#+#+#+# ", "+$'%{])# ", " +-)-)# ", " +#+# ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-function-protected-static.xpm000066400000000000000000000024651157374236500303400ustar00rootroot00000000000000/* XPM */ static char * ecb_function_protected_static_xpm[] = { "16 14 60 1", " c None", ". c #040404", "+ c #F2F2F2", "@ c #474747", "# c #434343", "$ c #626C7D", "% c #FFFFFF", "& c #FEE99F", "* c #FEF0B7", "= c #FEDF8B", "- c #8E2E00", "; c #F6E8C6", "> c #C27F58", ", c #FDC760", "' c #FCBD4F", ") c #C04C00", "! c #FEFBE5", "~ c #4F2721", "{ c #1B0D0B", "] c #E0CFB0", "^ c #B16238", "/ c #FDD378", "( c #B84900", "_ c #E5A684", ": c #915532", "< c #F7E4C2", "[ c #C36D3D", "} c #532923", "| c #963400", "1 c #E7CBBC", "2 c #C07B57", "3 c #EAD6B7", "4 c #CE7644", "5 c #D48E67", "6 c #E2B7A1", "7 c #CA713E", "8 c #B67553", "9 c #F7E2C6", "0 c #C37344", "a c #DF966D", "b c #CB733F", "c c #995A35", "d c #EAD7C1", "e c #D07C4D", "f c #DEAC90", "g c #DB8958", "h c #F8E5D1", "i c #C6794E", "j c #EEC1AA", "k c #EBDACB", "l c #D18255", "m c #4A2A26", "n c #ECDBCF", "o c #A85D35", "p c #887371", "q c #EDE0D8", "r c #D58F67", "s c #73605E", "t c #796563", "u c #90807F", " ", " .....+ ", " @#$+ .%&*&=-%", " #;>% .&,.,')!", " ~{]^+ .=',/,(%", " ._:<[}++..'|(% ", "._12345}+%.,(% ", ".67890_~% .')! ", ".abcdef}+ .,/)% ", ".bg:hij~% ./)! ", "+.5ckl~% +|! ", " +}mno% ! ", " +pqr+ ", " stu% "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-function-protected.xpm000066400000000000000000000014561157374236500270520ustar00rootroot00000000000000/* XPM */ static char * ecb_function_protected_xpm[] = { "16 14 28 1", " c None", ". c #040404", "+ c #F2F2F2", "@ c #FFFFFF", "# c #FEE99F", "$ c #FEF0B7", "% c #FEDF8B", "& c #8E2E00", "* c #FDC760", "= c #FCBD4F", "- c #C04C00", "; c #FEFBE5", "> c #FDD378", ", c #B84900", "' c #E5A684", ") c #E2B7A1", "! c #DF966D", "~ c #CB7441", "{ c #532923", "] c #963400", "^ c #CA713E", "/ c #DB8958", "( c #D48E67", "_ c #4F2721", ": c #CB733F", "< c #DB8757", "[ c #DEAC90", "} c #EEC1AA", " ", " .....+ ", " .@#$#%&@", " .#*.*=-;", " ....+ .%=*>*,@", " .')!~{++..=],@ ", ".')^~/({+@.*,@ ", ".)^~/('_@ .=-; ", ".!:<('[{+ .*>-@ ", ".:/('[}_@ .>-; ", "+.('[}_@ +]; ", " +{_{_@ ; ", " +@+@ ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-function-public-static.xpm000066400000000000000000000022421157374236500276160ustar00rootroot00000000000000/* XPM */ static char * ecb_function_public_static_xpm[] = { "16 14 51 1", " c None", ". c #005D00", "+ c #F2F2F2", "@ c #474747", "# c #434343", "$ c #626C7D", "% c #3CBA00", "& c #FFFFFF", "* c #F6E8C6", "= c #C27F58", "- c #4F2721", "; c #1B0D0B", "> c #E0CFB0", ", c #B16238", "' c #040404", ") c #E5A684", "! c #915532", "~ c #F7E4C2", "{ c #C36D3D", "] c #532923", "^ c #E7CBBC", "/ c #C07B57", "( c #EAD6B7", "_ c #CE7644", ": c #D48E67", "< c #E2B7A1", "[ c #CA713E", "} c #B67553", "| c #F7E2C6", "1 c #C37344", "2 c #DF966D", "3 c #CB733F", "4 c #995A35", "5 c #EAD7C1", "6 c #D07C4D", "7 c #DEAC90", "8 c #DB8958", "9 c #F8E5D1", "0 c #C6794E", "a c #EEC1AA", "b c #EBDACB", "c c #D18255", "d c #4A2A26", "e c #ECDBCF", "f c #A85D35", "g c #887371", "h c #EDE0D8", "i c #D58F67", "j c #73605E", "k c #796563", "l c #90807F", " ", " ...+ ", " @#$+.%&%.+ ", " #*=&.& +.& ", " -;>,+ .....+ ", " ')!~{]+ ..%..& ", "')^/(_:]+.%&%.+ ", "'<[}|1)-&..%..& ", "'234567]+.....+ ", "'38!90a-&+&+&+& ", "+':4bc-& ", " +]def& ", " +ghi+ ", " jkl& "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-function-public.xpm000066400000000000000000000012331157374236500263300ustar00rootroot00000000000000/* XPM */ static char * ecb_function_public_xpm[] = { "16 14 19 1", " c None", ". c #005D00", "+ c #F2F2F2", "@ c #3CBA00", "# c #FFFFFF", "$ c #040404", "% c #E5A684", "& c #E2B7A1", "* c #DF966D", "= c #CB7441", "- c #532923", "; c #CA713E", "> c #DB8958", ", c #D48E67", "' c #4F2721", ") c #CB733F", "! c #DB8757", "~ c #DEAC90", "{ c #EEC1AA", " ", " ...+ ", " .@#@.+ ", " .# +.# ", " $$$$++ .....+ ", " $%&*=-+ ..@..# ", "$%&;=>,-+.@#@.+ ", "$&;=>,%'#..@..# ", "$*)!,%~-+.....+ ", "$)>,%~{'#+#+#+# ", "+$,%~{'# ", " +-'-'# ", " +#+# ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-function-unknown-static.xpm000066400000000000000000000021331157374236500300360ustar00rootroot00000000000000/* XPM */ static char * ecb_function_unknown_static_xpm[] = { "12 14 50 1", " c None", ". c #474747", "+ c #434343", "@ c #626C7D", "# c #F2F2F2", "$ c #F6E8C6", "% c #C27F58", "& c #FFFFFF", "* c #4F2721", "= c #1B0D0B", "- c #E0CFB0", "; c #B16238", "> c #040404", ", c #E5A684", "' c #915532", ") c #F7E4C2", "! c #C36D3D", "~ c #532923", "{ c #E7CBBC", "] c #C07B57", "^ c #EAD6B7", "/ c #CE7644", "( c #D48E67", "_ c #A5A5C6", ": c #E2B7A1", "< c #CA713E", "[ c #B67553", "} c #F7E2C6", "| c #C37344", "1 c #DF966D", "2 c #CB733F", "3 c #995A35", "4 c #EAD7C1", "5 c #D07C4D", "6 c #DEAC90", "7 c #DB8958", "8 c #F8E5D1", "9 c #C6794E", "0 c #EEC1AA", "a c #EBDACB", "b c #D18255", "c c #4A2A26", "d c #ECDBCF", "e c #A85D35", "f c #887371", "g c #EDE0D8", "h c #D58F67", "i c #73605E", "j c #796563", "k c #90807F", " ", " ", " .+@# ", " +$%& ", " *=-;# ", " >,')!~# ", " >,{]^/(~# ", "_>:<[}|,*& ", " >123456~# ", " >27'890*& ", " #>(3ab*& ", " #~cde& ", " #fgh# ", " ijk& "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-function-unknown.xpm000066400000000000000000000011241157374236500265500ustar00rootroot00000000000000/* XPM */ static char * ecb_function_unknown_xpm[] = { "12 14 18 1", " c None", ". c #040404", "+ c #F2F2F2", "@ c #E5A684", "# c #E2B7A1", "$ c #DF966D", "% c #CB7441", "& c #532923", "* c #CA713E", "= c #DB8958", "- c #D48E67", "; c #A5A5C6", "> c #4F2721", ", c #FFFFFF", "' c #CB733F", ") c #DB8757", "! c #DEAC90", "~ c #EEC1AA", " ", " ", " ", " ", " ....+ ", " .@#$%&+ ", " .@#*%=-&+ ", ";.#*%=-@>, ", " .$')-@!&+ ", " .'=-@!~>, ", " +.-@!~>, ", " +&>&>, ", " +,+, ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-parent-bucket.xpm000066400000000000000000000072741157374236500260060ustar00rootroot00000000000000/* XPM */ static char * parents_xpm[] = { "16 14 188 2", " c None", ". c #F3F3F3", "+ c #BCBCBC", "@ c #BABABA", "# c #EBEBEB", "$ c #EBE1CE", "% c #D1B37B", "& c #D5B67F", "* c #CCAB6E", "= c #E0D6C3", "- c #C0C0C0", "; c #555555", "> c #7E7E7E", ", c #7B7B7B", "' c #4F4F4F", ") c #9E9E9E", "! c #F7F4EC", "~ c #C29542", "{ c #DEB66E", "] c #E7C893", "^ c #DCBA7D", "/ c #B0842F", "( c #DCD8D2", "_ c #DEDEDE", ": c #3F3F3F", "< c #5C5C5C", "[ c #818181", "} c #7F7E7E", "| c #53403C", "1 c #27211E", "2 c #CFCFCF", "3 c #E1CCA4", "4 c #C38D2A", "5 c #CB973C", "6 c #D79D44", "7 c #DC9839", "8 c #C28829", "9 c #A99875", "0 c #757575", "a c #424242", "b c #414141", "c c #734122", "d c #AC551F", "e c #DE7529", "f c #CC7226", "g c #99897A", "h c #E1BD84", "i c #FEB953", "j c #FABB55", "k c #FFBE58", "l c #FFB953", "m c #FDB14B", "n c #A48B61", "o c #373737", "p c #343434", "q c #4D3522", "r c #EC862D", "s c #F69131", "t c #F48F30", "u c #E8822B", "v c #926D52", "w c #DCB57B", "x c #FFAE48", "y c #FFB24C", "z c #FDA640", "A c #9C8A6A", "B c #292929", "C c #242424", "D c #623517", "E c #D16B24", "F c #D77126", "G c #D67025", "H c #CC6622", "I c #876553", "J c #D7BE95", "K c #FEA13B", "L c #FFA43E", "M c #FFA13B", "N c #DB8B2B", "O c #ABA8A2", "P c #626262", "Q c #121212", "R c #3E1E0F", "S c #B54F1B", "T c #BA541C", "U c #B9531C", "V c #A44114", "W c #93817C", "X c #EBEAE1", "Y c #CE8827", "Z c #F4942E", "` c #E78D28", " . c #917244", ".. c #E5E5E5", "+. c #444444", "@. c #0D0D10", "#. c #4B1908", "$. c #9D3712", "%. c #993311", "&. c #692926", "*. c #86A18A", "=. c #66B366", "-. c #699957", ";. c #BF914A", ">. c #C08A38", ",. c #758234", "'. c #6A9569", "). c #C3CCE5", "!. c #3C5CBA", "~. c #4A3C78", "{. c #7A3F4F", "]. c #7A5A7E", "^. c #4264CA", "/. c #376CB1", "(. c #6CC47F", "_. c #7CBD80", ":. c #F0F8FF", "<. c #C0DBD2", "[. c #5DB760", "}. c #57BD57", "|. c #7CA97C", "1. c #E8EDF8", "2. c #4765DF", "3. c #6782FD", "4. c #527AE6", "5. c #81B3F2", "6. c #9DD0FF", "7. c #537CE2", "8. c #6078FC", "9. c #4180A5", "0. c #5CB25E", "a. c #E9FBF8", "b. c #5FAF60", "c. c #6FD06F", "d. c #54C354", "e. c #2B972B", "f. c #D2D5D2", "g. c #8BA2DC", "h. c #425BEC", "i. c #5C72FD", "j. c #6A85FD", "k. c #4D77DD", "l. c #A8DAFB", "m. c #466AE3", "n. c #576BFB", "o. c #3068AF", "p. c #45B145", "q. c #5FAA6B", "r. c #59C359", "s. c #53C353", "t. c #3DB83D", "u. c #1D9D1D", "v. c #9AA99A", "w. c #748FD5", "x. c #2B4ED6", "y. c #465EF0", "z. c #586CFC", "A. c #576EF8", "B. c #4070CF", "C. c #475FEE", "D. c #3251D5", "E. c #385B7C", "F. c #4C8B4C", "G. c #2E7B2E", "H. c #378D37", "I. c #328B32", "J. c #2A832A", "K. c #397639", "L. c #C5C6C5", "M. c #D5DBEA", "N. c #556DAD", "O. c #3D59AB", "P. c #4059AD", "Q. c #435BAE", "R. c #465D9F", "S. c #5F709C", "T. c #959AA7", "U. c #DFDFDF", "V. c #F4F4F4", "W. c #E8E8E8", "X. c #DCDCDC", "Y. c #DBDBDB", "Z. c #ECECEC", "`. c #F9F9F9", " + c #F1F1F1", ".+ c #F0F0F0", "++ c #FAFAFA", "@+ c #FFFFFF", " . + @ # $ % & * = ", " - ; > , ' ) ! ~ { ] ^ / ( ", "_ : < [ } | 1 2 3 4 5 6 7 8 9 ", "0 a b c d e f g h i j k l m n ", "o p q r s t u v w x y y x z A ", "B C D E F G H I J K L L M N O ", "P Q R S T U V W X Y Z Z ` ... ", "..+.@.#.$.%.&.*.=.-.;.>.,.'. ", " ).!.~.{.].^./.(._.:.<.[.}.|. ", "1.2.3.4.5.6.7.8.9.0.a.b.c.d.e.f.", "g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.", "w.x.y.z.A.B.C.D.E.F.G.H.I.J.K.L.", "M.N.O.P.Q.R.S.T.U.V.W.X.Y.X.Z. ", " `. +.+.+V.++@+ "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-parent-private.xpm000066400000000000000000000046331157374236500261770ustar00rootroot00000000000000/* XPM */ static char * ecb_variable_private_xpm[] = { "16 14 110 2", " c None", ". c #F3F3F3", "+ c #BCBCBC", "@ c #BABABA", "# c #EBEBEB", "$ c #C0C0C0", "% c #555555", "& c #7E7E7E", "* c #7B7B7B", "= c #4F4F4F", "- c #9E9E9E", "; c #BA0000", "> c #F2F2F2", ", c #DEDEDE", "' c #3F3F3F", ") c #5C5C5C", "! c #818181", "~ c #7F7E7E", "{ c #53403C", "] c #27211E", "^ c #CFCFCF", "/ c #FF9090", "( c #FFFFFF", "_ c #757575", ": c #424242", "< c #414141", "[ c #734122", "} c #AC551F", "| c #DE7529", "1 c #CC7226", "2 c #99897A", "3 c #373737", "4 c #343434", "5 c #4D3522", "6 c #EC862D", "7 c #F69131", "8 c #F48F30", "9 c #E8822B", "0 c #926D52", "a c #292929", "b c #242424", "c c #623517", "d c #D16B24", "e c #D77126", "f c #D67025", "g c #CC6622", "h c #876553", "i c #FF2424", "j c #626262", "k c #121212", "l c #3E1E0F", "m c #B54F1B", "n c #BA541C", "o c #B9531C", "p c #A44114", "q c #93817C", "r c #A5A5C6", "s c #444444", "t c #0D0D10", "u c #4B1908", "v c #9D3712", "w c #993311", "x c #692926", "y c #C3CCE5", "z c #3C5CBA", "A c #4A3C78", "B c #7A3F4F", "C c #7A5A7E", "D c #4264CA", "E c #376CB1", "F c #E8EDF8", "G c #4765DF", "H c #6782FD", "I c #527AE6", "J c #81B3F2", "K c #9DD0FF", "L c #537CE2", "M c #6078FC", "N c #4180A5", "O c #8BA2DC", "P c #425BEC", "Q c #5C72FD", "R c #6A85FD", "S c #4D77DD", "T c #A8DAFB", "U c #466AE3", "V c #576BFB", "W c #3068AF", "X c #748FD5", "Y c #2B4ED6", "Z c #465EF0", "` c #586CFC", " . c #576EF8", ".. c #4070CF", "+. c #475FEE", "@. c #3251D5", "#. c #385B7C", "$. c #D5DBEA", "%. c #556DAD", "&. c #3D59AB", "*. c #4059AD", "=. c #435BAE", "-. c #465D9F", ";. c #5F709C", ">. c #959AA7", ",. c #DFDFDF", "'. c #F1F1F1", "). c #F0F0F0", "!. c #F4F4F4", "~. c #FAFAFA", " . + @ # ", " $ % & * = - ; ; ; > ", ", ' ) ! ~ { ] ^ ; / ( / ; > ", "_ : < [ } | 1 2 ; ( > ; ( ", "3 4 5 6 7 8 9 0 ; ; ; ; ; > ", "a b c d e f g h ; ; i ; ; ( ", "j k l m n o p q ; i ( i ; > ", "r s t u v w x ^ ; ; i ; ; ( ", " y z A B C D E ; ; ; ; ; > ", "F G H I J K L M N > ( > ( > ( ", "O P Q R S T U V W ", "X Y Z ` ...+.@.#. ", "$.%.&.*.=.-.;.>.,. ", " '.).).!.~. "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-parent-protected.xpm000066400000000000000000000050661157374236500265170ustar00rootroot00000000000000/* XPM */ static char * ecb_variable_protected_xpm[] = { "16 14 119 2", " c None", ". c #F3F3F3", "+ c #BCBCBC", "@ c #BABABA", "# c #EBEBEB", "$ c #C0C0C0", "% c #555555", "& c #7E7E7E", "* c #7B7B7B", "= c #4F4F4F", "- c #9E9E9E", "; c #040404", "> c #F2F2F2", ", c #DEDEDE", "' c #3F3F3F", ") c #5C5C5C", "! c #818181", "~ c #7F7E7E", "{ c #53403C", "] c #27211E", "^ c #CFCFCF", "/ c #FFFFFF", "( c #FEE99F", "_ c #FEF0B7", ": c #FEDF8B", "< c #8E2E00", "[ c #757575", "} c #424242", "| c #414141", "1 c #734122", "2 c #AC551F", "3 c #DE7529", "4 c #CC7226", "5 c #99897A", "6 c #FDC760", "7 c #FCBD4F", "8 c #C04C00", "9 c #FEFBE5", "0 c #373737", "a c #343434", "b c #4D3522", "c c #EC862D", "d c #F69131", "e c #F48F30", "f c #E8822B", "g c #926D52", "h c #FDD378", "i c #B84900", "j c #292929", "k c #242424", "l c #623517", "m c #D16B24", "n c #D77126", "o c #D67025", "p c #CC6622", "q c #876553", "r c #963400", "s c #626262", "t c #121212", "u c #3E1E0F", "v c #B54F1B", "w c #BA541C", "x c #B9531C", "y c #A44114", "z c #93817C", "A c #A5A5C6", "B c #444444", "C c #0D0D10", "D c #4B1908", "E c #9D3712", "F c #993311", "G c #692926", "H c #C3CCE5", "I c #3C5CBA", "J c #4A3C78", "K c #7A3F4F", "L c #7A5A7E", "M c #4264CA", "N c #376CB1", "O c #E8EDF8", "P c #4765DF", "Q c #6782FD", "R c #527AE6", "S c #81B3F2", "T c #9DD0FF", "U c #537CE2", "V c #6078FC", "W c #4180A5", "X c #8BA2DC", "Y c #425BEC", "Z c #5C72FD", "` c #6A85FD", " . c #4D77DD", ".. c #A8DAFB", "+. c #466AE3", "@. c #576BFB", "#. c #3068AF", "$. c #748FD5", "%. c #2B4ED6", "&. c #465EF0", "*. c #586CFC", "=. c #576EF8", "-. c #4070CF", ";. c #475FEE", ">. c #3251D5", ",. c #385B7C", "'. c #D5DBEA", "). c #556DAD", "!. c #3D59AB", "~. c #4059AD", "{. c #435BAE", "]. c #465D9F", "^. c #5F709C", "/. c #959AA7", "(. c #DFDFDF", "_. c #F1F1F1", ":. c #F0F0F0", "<. c #F4F4F4", "[. c #FAFAFA", " . + @ # ", " $ % & * = - ; ; ; ; ; > ", ", ' ) ! ~ { ] ^ ; / ( _ ( : < / ", "[ } | 1 2 3 4 5 ; ( 6 ; 6 7 8 9 ", "0 a b c d e f g ; : 7 6 h 6 i / ", "j k l m n o p q / ; ; 7 r i / ", "s t u v w x y z / ; 6 i / ", "A B C D E F G ^ ; 7 8 9 ", " H I J K L M N ; 6 h 8 / ", "O P Q R S T U V W ; h 8 9 ", "X Y Z ` ...+.@.#. r 9 ", "$.%.&.*.=.-.;.>.,. 9 ", "'.).!.~.{.].^./.(. ", " _.:.:.<.[. "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-parent-public.xpm000066400000000000000000000046111157374236500257770ustar00rootroot00000000000000/* XPM */ static char * ecb_variable_public_xpm[] = { "16 14 109 2", " c None", ". c #F3F3F3", "+ c #BCBCBC", "@ c #BABABA", "# c #EBEBEB", "$ c #C0C0C0", "% c #555555", "& c #7E7E7E", "* c #7B7B7B", "= c #4F4F4F", "- c #9E9E9E", "; c #005D00", "> c #F2F2F2", ", c #DEDEDE", "' c #3F3F3F", ") c #5C5C5C", "! c #818181", "~ c #7F7E7E", "{ c #53403C", "] c #27211E", "^ c #CFCFCF", "/ c #3CBA00", "( c #FFFFFF", "_ c #757575", ": c #424242", "< c #414141", "[ c #734122", "} c #AC551F", "| c #DE7529", "1 c #CC7226", "2 c #99897A", "3 c #373737", "4 c #343434", "5 c #4D3522", "6 c #EC862D", "7 c #F69131", "8 c #F48F30", "9 c #E8822B", "0 c #926D52", "a c #292929", "b c #242424", "c c #623517", "d c #D16B24", "e c #D77126", "f c #D67025", "g c #CC6622", "h c #876553", "i c #626262", "j c #121212", "k c #3E1E0F", "l c #B54F1B", "m c #BA541C", "n c #B9531C", "o c #A44114", "p c #93817C", "q c #A5A5C6", "r c #444444", "s c #0D0D10", "t c #4B1908", "u c #9D3712", "v c #993311", "w c #692926", "x c #C3CCE5", "y c #3C5CBA", "z c #4A3C78", "A c #7A3F4F", "B c #7A5A7E", "C c #4264CA", "D c #376CB1", "E c #E8EDF8", "F c #4765DF", "G c #6782FD", "H c #527AE6", "I c #81B3F2", "J c #9DD0FF", "K c #537CE2", "L c #6078FC", "M c #4180A5", "N c #8BA2DC", "O c #425BEC", "P c #5C72FD", "Q c #6A85FD", "R c #4D77DD", "S c #A8DAFB", "T c #466AE3", "U c #576BFB", "V c #3068AF", "W c #748FD5", "X c #2B4ED6", "Y c #465EF0", "Z c #586CFC", "` c #576EF8", " . c #4070CF", ".. c #475FEE", "+. c #3251D5", "@. c #385B7C", "#. c #D5DBEA", "$. c #556DAD", "%. c #3D59AB", "&. c #4059AD", "*. c #435BAE", "=. c #465D9F", "-. c #5F709C", ";. c #959AA7", ">. c #DFDFDF", ",. c #F1F1F1", "'. c #F0F0F0", "). c #F4F4F4", "!. c #FAFAFA", " . + @ # ", " $ % & * = - ; ; ; > ", ", ' ) ! ~ { ] ^ ; / ( / ; > ", "_ : < [ } | 1 2 ; ( > ; ( ", "3 4 5 6 7 8 9 0 ; ; ; ; ; > ", "a b c d e f g h ; ; / ; ; ( ", "i j k l m n o p ; / ( / ; > ", "q r s t u v w ^ ; ; / ; ; ( ", " x y z A B C D ; ; ; ; ; > ", "E F G H I J K L M > ( > ( > ( ", "N O P Q R S T U V ", "W X Y Z ` ...+.@. ", "#.$.%.&.*.=.-.;.>. ", " ,.'.'.).!. "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-parent-unknown.xpm000066400000000000000000000043261157374236500262230ustar00rootroot00000000000000/* XPM */ static char * ecb_variable_unknown_xpm[] = { "12 14 105 2", " c None", ". c #F3F3F3", "+ c #BCBCBC", "@ c #BABABA", "# c #EBEBEB", "$ c #C0C0C0", "% c #555555", "& c #7E7E7E", "* c #7B7B7B", "= c #4F4F4F", "- c #9E9E9E", "; c #DEDEDE", "> c #3F3F3F", ", c #5C5C5C", "' c #818181", ") c #7F7E7E", "! c #53403C", "~ c #27211E", "{ c #CFCFCF", "] c #757575", "^ c #424242", "/ c #414141", "( c #734122", "_ c #AC551F", ": c #DE7529", "< c #CC7226", "[ c #99897A", "} c #373737", "| c #343434", "1 c #4D3522", "2 c #EC862D", "3 c #F69131", "4 c #F48F30", "5 c #E8822B", "6 c #926D52", "7 c #292929", "8 c #242424", "9 c #623517", "0 c #D16B24", "a c #D77126", "b c #D67025", "c c #CC6622", "d c #876553", "e c #626262", "f c #121212", "g c #3E1E0F", "h c #B54F1B", "i c #BA541C", "j c #B9531C", "k c #A44114", "l c #93817C", "m c #A5A5C6", "n c #444444", "o c #0D0D10", "p c #4B1908", "q c #9D3712", "r c #993311", "s c #692926", "t c #C3CCE5", "u c #3C5CBA", "v c #4A3C78", "w c #7A3F4F", "x c #7A5A7E", "y c #4264CA", "z c #376CB1", "A c #E8EDF8", "B c #4765DF", "C c #6782FD", "D c #527AE6", "E c #81B3F2", "F c #9DD0FF", "G c #537CE2", "H c #6078FC", "I c #4180A5", "J c #8BA2DC", "K c #425BEC", "L c #5C72FD", "M c #6A85FD", "N c #4D77DD", "O c #A8DAFB", "P c #466AE3", "Q c #576BFB", "R c #3068AF", "S c #748FD5", "T c #2B4ED6", "U c #465EF0", "V c #586CFC", "W c #576EF8", "X c #4070CF", "Y c #475FEE", "Z c #3251D5", "` c #385B7C", " . c #D5DBEA", ".. c #556DAD", "+. c #3D59AB", "@. c #4059AD", "#. c #435BAE", "$. c #465D9F", "%. c #5F709C", "&. c #959AA7", "*. c #DFDFDF", "=. c #F1F1F1", "-. c #F0F0F0", ";. c #F4F4F4", ">. c #FAFAFA", " . + @ # ", " $ % & * = - ", " ; > , ' ) ! ~ { ", " ] ^ / ( _ : < [ ", " } | 1 2 3 4 5 6 ", " 7 8 9 0 a b c d ", " e f g h i j k l ", "m m n o p q r s { ", " t u v w x y z ", " A B C D E F G H I ", " J K L M N O P Q R ", " S T U V W X Y Z ` ", " ...+.@.#.$.%.&.*. ", " =.-.-.;.>. "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-variable-bucket.xpm000066400000000000000000000047661157374236500263050ustar00rootroot00000000000000/* XPM */ static char * Variables_xpm[] = { "16 14 116 2", " c None", ". c #000000", "+ c #C2CBDF", "@ c #8AAAEA", "# c #83A1DE", "$ c #6F8FD3", "% c #FFFFFF", "& c #B2C5EB", "* c #5B79BF", "= c #688AD5", "- c #6180C3", "; c #7193DC", "> c #6B89C9", ", c #4F648E", "' c #848484", ") c #8B8B8B", "! c #616161", "~ c #3B3B3B", "{ c #A0B1D4", "] c #6789D6", "^ c #617FC3", "/ c #7091DA", "( c #6988C8", "_ c #7B9CE2", ": c #475A80", "< c #D1D1D1", "[ c #C6C6C6", "} c #545454", "| c #6B6A6A", "1 c #617EC3", "2 c #6F91DA", "3 c #6987C7", "4 c #7A9CE1", "5 c #7390CD", "6 c #717070", "7 c #F2F2F2", "8 c #5E5E5E", "9 c #5B5B5B", "0 c #626262", "a c #444444", "b c #696D76", "c c #5F687B", "d c #5A6273", "e c #626B7C", "f c #5D6574", "g c #656D7E", "h c #535761", "i c #4C4C4C", "j c #6F6F6F", "k c #BCBCBC", "l c #C6C5C6", "m c #737373", "n c #D5DFF3", "o c #A7B7D9", "p c #B6C7EB", "q c #ACBBDB", "r c #BACBEE", "s c #AFBEDC", "t c #9EA9BF", "u c #6B6B6B", "v c #696969", "w c #C5C5C5", "x c #BBBBBB", "y c #787879", "z c #B2C2DF", "A c #A0ABC1", "B c #969FB3", "C c #9FAAC0", "D c #949EB2", "E c #9EA9BE", "F c #939DB1", "G c #717171", "H c #EEEDED", "I c #F9F9F9", "J c #EBEBEA", "K c #F6F7F7", "L c #E9E9E9", "M c #F3F4F3", "N c #E6E6E6", "O c #F1F0F1", "P c #C2C2C2", "Q c #B7B8B7", "R c #F5F5F5", "S c #E7E8E8", "T c #E5E5E5", "U c #EFF0F0", "V c #E2E2E2", "W c #ECEDED", "X c #DFDFDF", "Y c #B7B7B8", "Z c #C0C1C1", "` c #D6D6D6", " . c #E0E0E0", ".. c #D4D4D4", "+. c #DFDEDE", "@. c #D3D3D3", "#. c #DDDDDD", "$. c #D1D2D1", "%. c #DCDCDC", "&. c #C7C7C7", "*. c #BDBDBD", "=. c #484847", "-. c #C1C1C0", ";. c #F1F1F0", ">. c #E3E3E3", ",. c #EBEBEB", "'. c #DEDEDE", "). c #E8E9E8", "!. c #DCDBDB", "~. c #EDEDEE", "{. c #EAEBEB", "]. c #E9E8E9", "^. c #DCDCDB", "/. c #E7E7E6", "(. c #646464", "_. c #040404", " _._._._._._._._. ", " _.+ @ # @ # @ $ % ", " _.& * = - ; > , ' ) ! ~ ", " ' _.{ ] ^ / ( _ : < [ } | % ", " ! < _.& 1 2 3 4 5 , [ } [ 6 7 ", "8 9 0 a b c d e f g h i [ < | % ", "j k l m n o p q r s t u < [ 6 7 ", "v w x y z A B C D E F G [ < | % ", "j x w H I J K L M N O u < [ 6 7 ", "v P Q R S 7 T U V W X G [ < | % ", "j Y Z ` ...+.@.#.$.%.u &.*.=.7 ", "v -.` ;.>.H .,.'.).!.G [ 0 7 ", "j ` 7 >.~. .{.'.].^./.u 0 7 ", "v j v j v j v j v j v (.7 "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-variable-private-static.xpm000066400000000000000000000023431157374236500277540ustar00rootroot00000000000000/* XPM */ static char * ecb_variable_private_static_xpm[] = { "16 14 55 1", " c None", ". c #BA0000", "+ c #F2F2F2", "@ c #474747", "# c #434343", "$ c #626C7D", "% c #FF9090", "& c #FFFFFF", "* c #6E7683", "= c #E7EBD8", "- c #8296BD", "; c #040404", "> c #2D3544", ", c #CBCEBD", "' c #5C729A", ") c #C2CBDF", "! c #8AAAEA", "~ c #57688C", "{ c #E1E8DD", "] c #5C7099", "^ c #6F8FD3", "/ c #FF2424", "( c #B2C5EB", "_ c #6080C9", ": c #50648B", "< c #D3DAD4", "[ c #6176A1", "} c #7190D4", "| c #4F648E", "1 c #A9BBDF", "2 c #6789D6", "3 c #4D6085", "4 c #DFE5E2", "5 c #7B9CE2", "6 c #4B5F87", "7 c #6685CD", "8 c #53668D", "9 c #D4DADA", "0 c #7998D8", "a c #6E8FD9", "b c #506287", "c c #DFE7E9", "d c #83A4E6", "e c #6D8CD1", "f c #56698F", "g c #D5DBE1", "h c #809EDC", "i c #83A1DE", "j c #44536D", "k c #DCE2E9", "l c #838B9A", "m c #DEE3E9", "n c #92A8D0", "o c #727E95", "p c #8690A1", " ", " ...+ ", " @#$+ .%&%.+ ", " *=-& .& +.& ", ";;;>,';; .....+ ", ";)!~{]!^&../..& ", ";(_:<[}|+./&/.+ ", ";1234]56&../..& ", ";(789[0|+.....+ ", ";1abc]d6&+&+&+& ", ";(efg[h|+ ", ";i|jk]|6& ", " &+lmn+&+ ", " *op& "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-variable-private.xpm000066400000000000000000000017341157374236500264720ustar00rootroot00000000000000/* XPM */ static char * ecb_variable_private_xpm[] = { "16 14 39 1", " c None", ". c #BA0000", "+ c #F2F2F2", "@ c #FF9090", "# c #FFFFFF", "$ c #040404", "% c #C2CBDF", "& c #8AAAEA", "* c #83A1DE", "= c #6F8FD3", "- c #FF2424", "; c #B2C5EB", "> c #6080C9", ", c #688AD5", "' c #6687CD", ") c #7193DC", "! c #7190D4", "~ c #4F648E", "{ c #A9BBDF", "] c #6789D6", "^ c #6686CD", "/ c #7091DA", "( c #7B9CE2", "_ c #4B5F87", ": c #6685CD", "< c #6F91DA", "[ c #6F8ED2", "} c #7A9CE1", "| c #7998D8", "1 c #6E8FD9", "2 c #6D8DD2", "3 c #799AE0", "4 c #7897D7", "5 c #83A4E6", "6 c #6D8CD1", "7 c #7899DF", "8 c #7896D7", "9 c #83A3E6", "0 c #809EDC", " ", " ...+ ", " .@#@.+ ", " .# +.# ", "$$$$$$$$ .....+ ", "$%&*&*&=#..-..# ", "$;>,')!~+.-#-.+ ", "${]^/=(_#..-..# ", "$;:<[}|~+.....+ ", "${12345_#+#+#+# ", "$;67890~+ ", "$*~_~_~_# ", " #+#+#+#+ ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-variable-protected-static.xpm000066400000000000000000000025451157374236500302770ustar00rootroot00000000000000/* XPM */ static char * ecb_variable_protected_static_xpm[] = { "16 14 63 1", " c None", ". c #040404", "+ c #F2F2F2", "@ c #474747", "# c #434343", "$ c #626C7D", "% c #FFFFFF", "& c #FEE99F", "* c #FEF0B7", "= c #FEDF8B", "- c #8E2E00", "; c #6E7683", "> c #E7EBD8", ", c #8296BD", "' c #FDC760", ") c #FCBD4F", "! c #C04C00", "~ c #FEFBE5", "{ c #2D3544", "] c #CBCEBD", "^ c #5C729A", "/ c #FDD378", "( c #B84900", "_ c #C2CBDF", ": c #8AAAEA", "< c #57688C", "[ c #E1E8DD", "} c #5C7099", "| c #6F8FD3", "1 c #963400", "2 c #B2C5EB", "3 c #6080C9", "4 c #50648B", "5 c #D3DAD4", "6 c #6176A1", "7 c #7190D4", "8 c #4F648E", "9 c #A9BBDF", "0 c #6789D6", "a c #4D6085", "b c #DFE5E2", "c c #7B9CE2", "d c #4B5F87", "e c #6685CD", "f c #53668D", "g c #D4DADA", "h c #7998D8", "i c #6E8FD9", "j c #506287", "k c #DFE7E9", "l c #83A4E6", "m c #6D8CD1", "n c #56698F", "o c #D5DBE1", "p c #809EDC", "q c #83A1DE", "r c #44536D", "s c #DCE2E9", "t c #838B9A", "u c #DEE3E9", "v c #92A8D0", "w c #727E95", "x c #8690A1", " ", " .....+ ", " @#$+ .%&*&=-%", " ;>,% .&'.')!~", "...{]^...=)'/'(%", "._:<[}:|%..)1(% ", ".2345678+%.'(% ", ".90ab}cd% .)!~ ", ".2efg6h8+ .'/!% ", ".9ijk}ld% ./!~ ", ".2mno6p8+ 1~ ", ".q8rs}8d% ~ ", " %+tuv+%+ ", " ;wx% "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-variable-protected.xpm000066400000000000000000000021361157374236500270060ustar00rootroot00000000000000/* XPM */ static char * ecb_variable_protected_xpm[] = { "16 14 47 1", " c None", ". c #040404", "+ c #F2F2F2", "@ c #FFFFFF", "# c #FEE99F", "$ c #FEF0B7", "% c #FEDF8B", "& c #8E2E00", "* c #FDC760", "= c #FCBD4F", "- c #C04C00", "; c #FEFBE5", "> c #FDD378", ", c #B84900", "' c #C2CBDF", ") c #8AAAEA", "! c #83A1DE", "~ c #6F8FD3", "{ c #963400", "] c #B2C5EB", "^ c #6080C9", "/ c #688AD5", "( c #6687CD", "_ c #7193DC", ": c #7190D4", "< c #4F648E", "[ c #A9BBDF", "} c #6789D6", "| c #6686CD", "1 c #7091DA", "2 c #7B9CE2", "3 c #4B5F87", "4 c #6685CD", "5 c #6F91DA", "6 c #6F8ED2", "7 c #7A9CE1", "8 c #7998D8", "9 c #6E8FD9", "0 c #6D8DD2", "a c #799AE0", "b c #7897D7", "c c #83A4E6", "d c #6D8CD1", "e c #7899DF", "f c #7896D7", "g c #83A3E6", "h c #809EDC", " ", " .....+ ", " .@#$#%&@", " .#*.*=-;", ".........%=*>*,@", ".')!)!)~@..={,@ ", ".]^/(_:<+@.*,@ ", ".[}|1~23@ .=-; ", ".]45678<+ .*>-@ ", ".[90abc3@ .>-; ", ".]defgh<+ {; ", ".!<3<3<3@ ; ", " @+@+@+@+ ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-variable-public-static.xpm000066400000000000000000000023421157374236500275570ustar00rootroot00000000000000/* XPM */ static char * ecb_variable_public_static_xpm[] = { "16 14 55 1", " c None", ". c #005D00", "+ c #F2F2F2", "@ c #474747", "# c #434343", "$ c #626C7D", "% c #3CBA00", "& c #FFFFFF", "* c #6E7683", "= c #E7EBD8", "- c #8296BD", "; c #040404", "> c #2D3544", ", c #CBCEBD", "' c #5C729A", ") c #000000", "! c #C2CBDF", "~ c #8AAAEA", "{ c #57688C", "] c #E1E8DD", "^ c #5C7099", "/ c #6F8FD3", "( c #B2C5EB", "_ c #6080C9", ": c #50648B", "< c #D3DAD4", "[ c #6176A1", "} c #7190D4", "| c #4F648E", "1 c #A9BBDF", "2 c #6789D6", "3 c #4D6085", "4 c #DFE5E2", "5 c #7B9CE2", "6 c #4B5F87", "7 c #6685CD", "8 c #53668D", "9 c #D4DADA", "0 c #7998D8", "a c #6E8FD9", "b c #506287", "c c #DFE7E9", "d c #83A4E6", "e c #6D8CD1", "f c #56698F", "g c #D5DBE1", "h c #809EDC", "i c #83A1DE", "j c #44536D", "k c #DCE2E9", "l c #838B9A", "m c #DEE3E9", "n c #92A8D0", "o c #727E95", "p c #8690A1", " ", " ...+ ", " @#$+.%&%.+ ", " *=-&.& +.& ", ";;;>,';) .....+ ", ";!~{]^~/&..%..& ", ";(_:<[}|+.%&%.+ ", ";1234^56&..%..& ", ";(789[0|+.....+ ", ";1abc^d6&+&+&+& ", ";(efg[h|+ ", ";i|jk^|6& ", " &+lmn+&+ ", " *op& "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-variable-public.xpm000066400000000000000000000017331157374236500262750ustar00rootroot00000000000000/* XPM */ static char * ecb_variable_public_xpm[] = { "16 14 39 1", " c None", ". c #005D00", "+ c #F2F2F2", "@ c #3CBA00", "# c #FFFFFF", "$ c #040404", "% c #000000", "& c #C2CBDF", "* c #8AAAEA", "= c #83A1DE", "- c #6F8FD3", "; c #B2C5EB", "> c #6080C9", ", c #688AD5", "' c #6687CD", ") c #7193DC", "! c #7190D4", "~ c #4F648E", "{ c #A9BBDF", "] c #6789D6", "^ c #6686CD", "/ c #7091DA", "( c #7B9CE2", "_ c #4B5F87", ": c #6685CD", "< c #6F91DA", "[ c #6F8ED2", "} c #7A9CE1", "| c #7998D8", "1 c #6E8FD9", "2 c #6D8DD2", "3 c #799AE0", "4 c #7897D7", "5 c #83A4E6", "6 c #6D8CD1", "7 c #7899DF", "8 c #7896D7", "9 c #83A3E6", "0 c #809EDC", " ", " ...+ ", " .@#@.+ ", " .# +.# ", "$$$$$$$% .....+ ", "$&*=*=*-#..@..# ", "$;>,')!~+.@#@.+ ", "${]^/-(_#..@..# ", "$;:<[}|~+.....+ ", "${12345_#+#+#+# ", "$;67890~+ ", "$=~_~_~_# ", " #+#+#+#+ ", " "}; ecb-2.40+cvs20110608/ecb-images/methods/height-14_to_21/ecb-variable-unknown-static.xpm000066400000000000000000000022131157374236500277750ustar00rootroot00000000000000/* XPM */ static char * ecb_variable_unknown_static_xpm[] = { "12 14 53 1", " c None", ". c #474747", "+ c #434343", "@ c #626C7D", "# c #F2F2F2", "$ c #6E7683", "% c #E7EBD8", "& c #8296BD", "* c #FFFFFF", "= c #040404", "- c #2D3544", "; c #CBCEBD", "> c #5C729A", ", c #C2CBDF", "' c #8AAAEA", ") c #57688C", "! c #E1E8DD", "~ c #5C7099", "{ c #6F8FD3", "] c #B2C5EB", "^ c #6080C9", "/ c #50648B", "( c #D3DAD4", "_ c #6176A1", ": c #7190D4", "< c #4F648E", "[ c #A5A5C6", "} c #A9BBDF", "| c #6789D6", "1 c #4D6085", "2 c #DFE5E2", "3 c #7B9CE2", "4 c #4B5F87", "5 c #6685CD", "6 c #53668D", "7 c #D4DADA", "8 c #7998D8", "9 c #6E8FD9", "0 c #506287", "a c #DFE7E9", "b c #83A4E6", "c c #6D8CD1", "d c #56698F", "e c #D5DBE1", "f c #809EDC", "g c #83A1DE", "h c #44536D", "i c #DCE2E9", "j c #838B9A", "k c #DEE3E9", "l c #92A8D0", "m c #727E95", "n c #8690A1", " ", " ", " .+@# ", " $%&* ", " ===-;>== ", " =,')!~'{* ", " =]^/(_:<# ", "[=}|12~34* ", " =]567_8<# ", " =}90a~b4* ", " =]cde_f<# ", " =g c #7190D4", ", c #4F648E", "' c #F2F2F2", ") c #A5A5C6", "! c #A9BBDF", "~ c #6789D6", "{ c #6686CD", "] c #7091DA", "^ c #7B9CE2", "/ c #4B5F87", "( c #6685CD", "_ c #6F91DA", ": c #6F8ED2", "< c #7A9CE1", "[ c #7998D8", "} c #6E8FD9", "| c #6D8DD2", "1 c #799AE0", "2 c #7897D7", "3 c #83A4E6", "4 c #6D8CD1", "5 c #7899DF", "6 c #7896D7", "7 c #83A3E6", "8 c #809EDC", " ", " ", " ", " ", " ........ ", " .+@#@#@$% ", " .&*=-;>,' ", ").!~{]$^/% ", " .&(_:<[,' ", " .!}|123/% ", " .&45678,' ", " .#,/,/,/% ", " %'%'%'%' ", " "}; ecb-2.40+cvs20110608/ecb-images/sources/000077500000000000000000000000001157374236500172755ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/sources/height-14_to_21/000077500000000000000000000000001157374236500217735ustar00rootroot00000000000000ecb-2.40+cvs20110608/ecb-images/sources/height-14_to_21/ecb-leaf.xpm000066400000000000000000000112071157374236500241600ustar00rootroot00000000000000/* XPM */ static char *leaf[] = { /* width height num_colors chars_per_pixel */ " 16 14 256 2", /* colors */ "`` c #000000", "`. c #424242", "`# c #848484", "`a c #949494", "`b c #9c9c9c", "`c c #a5a5a5", "`d c #adadad", "`e c #b5b5b5", "`f c #bdbdbd", "`g c #c6c6c6", "`h c None", "`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 */ "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h", "`.`.`.`.`.`.`.`h`h`h`h`h`h`h`h`h", "`.`a`a`b`b`c`.`.`h`h`h`h`h`h`h`h", "`.`a`b`b`c`c`.`d`.`h`h`h`h`h`h`h", "`.`b`b`c`c`c`.`.`.`.`h`h`h`h`h`h", "`.`b`#`#`#`a`#`d`e`.`h`h`h`h`h`h", "`.`c`c`c`d`d`d`e`e`.`h`h`h`h`h`h", "`.`c`#`a`#`#`#`e`f`.`h`h`h`h`h`h", "`.`c`d`d`d`e`e`f`f`.`h`h`h`h`h`h", "`.`d`#`#`a`#`#`f`f`.`h`h`h`h`h`h", "`.`d`d`e`e`f`f`f`f`.`h`h`h`h`h`h", "`.`d`e`e`f`f`f`f`f`.`h`h`h`h`h`h", "`.`.`.`.`.`.`.`.`.`.`h`h`h`h`h`h", "`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h" }; ecb-2.40+cvs20110608/ecb-images/sources/height-14_to_21/ecb-vc-added.xpm000066400000000000000000000010061157374236500247140ustar00rootroot00000000000000/* XPM */ static char * ecb_leaf_added_xpm[] = { "16 14 10 1", " c None", ". c #424242", "+ c #949494", "@ c #9C9C9C", "# c #A5A5A5", "$ c #ADADAD", "% c #848484", "& c #B5B5B5", "* c #FE9832", "= c #FFFFFF", " ", "....... ", ".++@@#.. ", ".+@@##.$. ", ".@@###.... ", ".@%%%+%$&. ", ".###$$**** ", ".#%+%**==** ", ".#$$***==*** ", ".$%%*======* ", ".$$&*======* ", ".$&&***==*** ", ".....**==** ", " **** "}; ecb-2.40+cvs20110608/ecb-images/sources/height-14_to_21/ecb-vc-edited.xpm000066400000000000000000000010111157374236500251050ustar00rootroot00000000000000/* XPM */ static char * ecb_leaf_modified_xpm[] = { "16 14 10 1", " c None", ". c #424242", "+ c #949494", "@ c #9C9C9C", "# c #A5A5A5", "$ c #ADADAD", "% c #848484", "& c #B5B5B5", "* c #FF9933", "= c #FFFFFF", " ", "....... ", ".++@@#.. ", ".+@@##.$. ", ".@@###.... ", ".@%%%+%$&. ", ".###$$**** ", ".#%+%**==** ", ".#$$**=**=** ", ".$%%*=****=* ", ".$$&*=****=* ", ".$&&**=**=** ", ".....**==** ", " **** "}; ecb-2.40+cvs20110608/ecb-images/sources/height-14_to_21/ecb-vc-ignored.xpm000066400000000000000000000010171157374236500253040ustar00rootroot00000000000000/* XPM */ static char * ecb_leaf_ignored_by_cvs_xpm[] = { "16 14 10 1", " c None", ". c #424242", "+ c #949494", "@ c #9C9C9C", "# c #A5A5A5", "$ c #ADADAD", "% c #848484", "& c #B5B5B5", "* c #B2B2B2", "= c #FFFFFF", " ", "....... ", ".++@@#.. ", ".+@@##.$. ", ".@@###.... ", ".@%%%+%$&. ", ".###$$**** ", ".#%+%****** ", ".#$$**=**=** ", ".$%%***==*** ", ".$$&***==*** ", ".$&&**=**=** ", ".....****** ", " **** "}; ecb-2.40+cvs20110608/ecb-images/sources/height-14_to_21/ecb-vc-needs-merge.xpm000066400000000000000000000010141157374236500260450ustar00rootroot00000000000000/* XPM */ static char * ecb_leaf_needs_merge_xpm[] = { "16 14 10 1", " c None", ". c #424242", "+ c #949494", "@ c #9C9C9C", "# c #A5A5A5", "$ c #ADADAD", "% c #848484", "& c #B5B5B5", "* c #FE3201", "= c #FFFFFF", " ", "....... ", ".++@@#.. ", ".+@@##.$. ", ".@@###.... ", ".@%%%+%$&. ", ".###$$**** ", ".#%+%**==** ", ".#$$***==*** ", ".$%%***==*** ", ".$$&***==*** ", ".$&&******** ", ".....**==** ", " **** "}; ecb-2.40+cvs20110608/ecb-images/sources/height-14_to_21/ecb-vc-needs-patch.xpm000066400000000000000000000007671157374236500260630ustar00rootroot00000000000000/* XPM */ static char * ecbvcneedspatch_xpm[] = { "16 14 11 1", " c None", "! c black", "# c #424242", "$ c #949494", "% c #9C9C9C", "& c #A5A5A5", "' c #ADADAD", "( c #848484", ") c #B5B5B5", "* c #FF9933", "+ c white", " ", "####### ", "#$$%%&## ", "#$%%&&#'# ", "#%%&&&#### ", "#%((($(')# ", "#&&&''**** ", "#&($(**++** ", "#&''***++*** ", "#'((***++*** ", "#'')***++*** ", "#'))******** ", "#####**++** ", " **** "};ecb-2.40+cvs20110608/ecb-images/sources/height-14_to_21/ecb-vc-unknown.xpm000066400000000000000000000010131157374236500253500ustar00rootroot00000000000000/* XPM */ static char * ecb_leaf_not_in_cvs_xpm[] = { "16 14 10 1", " c None", ". c #424242", "+ c #949494", "@ c #9C9C9C", "# c #A5A5A5", "$ c #ADADAD", "% c #848484", "& c #B5B5B5", "* c #0066CC", "= c #FFFFFF", " ", "....... ", ".++@@#.. ", ".+@@##.$. ", ".@@###.... ", ".@%%%+%$&. ", ".###$$**** ", ".#%+%**==** ", ".#$$**=**=** ", ".$%%*****=** ", ".$$&***==*** ", ".$&&******** ", ".....**==** ", " **** "}; ecb-2.40+cvs20110608/ecb-images/sources/height-14_to_21/ecb-vc-up-to-date.xpm000066400000000000000000000010071157374236500256330ustar00rootroot00000000000000/* XPM */ static char * ecb_leaf_in_cvs_xpm[] = { "16 14 10 1", " c None", ". c #424242", "+ c #949494", "@ c #9C9C9C", "# c #A5A5A5", "$ c #ADADAD", "% c #848484", "& c #B5B5B5", "* c #009900", "= c #FFFFFF", " ", "....... ", ".++@@#.. ", ".+@@##.$. ", ".@@###.... ", ".@%%%+%$&. ", ".###$$**** ", ".#%+%****** ", ".#$$******** ", ".$%%******=* ", ".$$&*=***=** ", ".$&&**=*=*** ", ".....**=*** ", " **** "}; ecb-2.40+cvs20110608/ecb-jde.el000066400000000000000000000155271157374236500154430ustar00rootroot00000000000000;;; ecb-jde.el --- ECB JDE integrations ;; Copyright (C) 2000 - 2005 Jesper Nordenberg, ;; Klaus Berndl, ;; Kevin A. Burton, ;; Free Software Foundation, Inc. ;; Author: Jesper Nordenberg ;; Klaus Berndl ;; Kevin A. Burton ;; Maintainer: Klaus Berndl ;; 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: ecb-jde.el,v 1.19 2009/05/10 16:41:42 berndl Exp $ ;;; Commentary: ;; ;; ;; Contains code for JDEE integrations into ECB or vice versa ;; JDEE is available at http://jdee.sunsite.dk/ ;;; 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 jde-show-class-source) (silentcomp-defvar jde-open-class-at-point-find-file-function) (silentcomp-defun jde-open-functions-exist) (silentcomp-defun jde-parse-java-variable-at-point) (silentcomp-defun jde-open-get-class-to-open) (silentcomp-defun jde-open-get-path-prefix-list) (silentcomp-defun jde-open-find-java-file-name) (silentcomp-defun jde-gen-class-buffer) (silentcomp-defvar jde-sourcepath) (require 'ecb-util) (require 'ecb-layout) (require 'ecb-file-browser) (require 'ecb-method-browser) (defgroup ecb-jde-integration nil "Settings for the JDEE-integration in the Emacs code browser." :group 'ecb :prefix "ecb-jde-") (defcustom ecb-jde-set-directories-buffer-to-jde-sourcepath nil "*THIS FEATURE IS NOT YET FINISHED" :group 'ecb-jde-integration :type '(radio (const :tag "No" :value nil) (const :tag "Add" :value add) (const :tag "Replace" :value replace))) (defun ecb-jde-display-class-at-point () "Displays in the ECB-methods-buffer contents of class under point. This means displays the contents \(methods, attributes etc...) of the class which contains the definition of the \"thing\" under point \(this can be a variablename, classname, methodname, attributename). This function needs the same requirements to work as the method-completion feature of JDE \(see `jde-complete-at-point')!. The source-file is searched first in `jde-sourcepath', then in `jde-global-classpath', then in $CLASSPATH, then in current-directory. Works only for classes where the source-code \(i.e. the *.java-file) is available." (interactive) (when (and ecb-minor-mode (ecb-point-in-edit-window-number) (equal major-mode 'jde-mode)) (if (jde-open-functions-exist) (let* ( (thing-of-interest (ecb-thing-at-point 'symbol)) (pair (save-excursion (ecb-end-of-thing 'symbol) (jde-parse-java-variable-at-point))) (class-to-open (jde-open-get-class-to-open pair thing-of-interest)) (source-path-prefix-list (jde-open-get-path-prefix-list)) (java-file-name nil) ) (if (and class-to-open (stringp class-to-open)) (progn (setq java-file-name (jde-open-find-java-file-name class-to-open source-path-prefix-list)) (if (not java-file-name) (ecb-error "Can not find the sourcecode-file for \"%s\"" thing-of-interest) ;; TODO: Klaus Berndl : ;; The following two lines of code are the only difference ;; between this function and `jde-open-class-at-point'. ;; Therefore it would be nice if the whole stuff necessary ;; for finding the source-file of `thing-of-interest' would ;; be extracted in an own function of JDE. ;; we have found the java-sourcefile. So let´s display its ;; contents in the method-buffer of ECB - we must select the ;; methods-window before because otherwise our automatically ;; buffer-sync would resync with current java-source-file. (if (ecb-window-select ecb-methods-buffer-name) (ecb-set-selected-source java-file-name nil t)))) (ecb-error "Can not parse the thing at point!"))) (message "You need JDE >= 2.2.6 and Senator for using this feature!")))) (defun ecb-jde-show-class-source (external-tag) "Calls `jde-show-class-source' for th tag-name of EXTERNAL-TAG. Returns t if the tag is found and no error occurs otherwise nil. This function is for usage with `ecb-find-external-tag-functions'." (when (eq major-mode 'jde-mode) (condition-case nil (progn (jde-show-class-source (ecb--semantic-tag-name external-tag)) t) (error nil)))) (defun ecb-jde-gen-class-buffer (dir filename) "Calls `jde-gen-class-buffer' for the file FILENAME in DIR. If this function is not available then `find-file' is called." (let ((file (concat dir "/" filename))) (if (fboundp 'jde-gen-class-buffer) (jde-gen-class-buffer file) (find-file file)))) (defun ecb-jde-get-source-path () (mapcar 'jde-normalize-path jde-sourcepath)) (defun ecb-jde-update-ecb-source-paths () (interactive) (case ecb-jde-set-directories-buffer-to-jde-sourcepath (add (add-hook 'ecb-source-path-functions 'ecb-jde-get-source-path)) (replace (setq ecb-source-path (ecb-jde-get-source-path))) (otherwise (remove-hook 'ecb-source-path-functions 'ecb-jde-get-source-path))) (ecb-update-directories-buffer)) (when (locate-library "efc") (require 'efc) (if (boundp 'efc-dialog-show-before-hook) (add-hook 'efc-dialog-show-before-hook (function (lambda () (ecb-toggle-compile-window -1))))) (if (boundp 'efc-dialog-close-after-hook) (add-hook 'efc-dialog-close-after-hook (function (lambda () (ecb-toggle-compile-window 1)))))) (silentcomp-provide 'ecb-jde) ;;; ecb-jde.el ends here ecb-2.40+cvs20110608/ecb-layout-defs.el000066400000000000000000001334171157374236500171340ustar00rootroot00000000000000;;; ecb-layout-defs.el --- layout definitions for ECB ;; Copyright (C) 2000 - 2005 Jesper Nordenberg, ;; Klaus Berndl, ;; Kevin A. Burton, ;; Free Software Foundation, Inc. ;; Author: Klaus Berndl ;; Maintainer: Klaus Berndl ;; 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: ecb-layout-defs.el,v 1.22 2009/04/15 14:22:35 berndl Exp $ ;;; Commentary: ;; ;; Contains all layout definitions for ECB ;; ;; This file is part of the ECB package which can be found at: ;; http://ecb.sourceforge.net ;;; 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-util) (require 'ecb-layout) ;; ========= Current available layouts =============================== ;; Here come all the index layout-functions: ;; Layout left1 ----------------------------------------------------- (ecb-layout-define "left1" left "This function creates the following layout: ------------------------------------------------------- | | | | Directories | | | | | | | | | | | |--------------| | | | | | | Sour | Hist | Edit | | | | | | | | | |--------------| | | | | | Methods | | | | | | | | ------------------------------------------------------- | | | 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." (ecb-set-directories-buffer) (ecb-split-ver 0.3) (ecb-set-sources-buffer) (ecb-split-ver 0.5) (ecb-set-methods-buffer) (select-window (previous-window)) (ecb-split-hor 0.5) (ecb-set-history-buffer) (select-window (next-window (next-window)))) ;; Layout left2 ----------------------------------------------------- (ecb-layout-define "left2" left "This function creates the following layout: ------------------------------------------------------- | | | | | | | | | | Directories | | | | | | | | | | | |--------------| Edit | | | | | | | | | | | Sources | | | | | | | | | | | ------------------------------------------------------- | | | 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." (ecb-set-directories-buffer) (ecb-split-ver 0.5) (ecb-set-sources-buffer) (select-window (next-window))) ;; Layout left3 ----------------------------------------------------- (ecb-layout-define "left3" left "This function creates the following layout: ------------------------------------------------------- | | | | Directories | | | | | | | | | | | |--------------| | | | | | Sources | Edit | | | | | | | |--------------| | | | | | Methods | | | | | | | | ------------------------------------------------------- | | | 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." (ecb-set-directories-buffer) (ecb-split-ver 0.3) (ecb-set-sources-buffer) (ecb-split-ver 0.5) (ecb-set-methods-buffer) (select-window (next-window))) ;; Layout left4 ----------------------------------------------------- (ecb-layout-define "left4" left "This function creates the following layout: ------------------------------------------------------- | | | | | | | | | | Directories | | | | | | | | | | | |--------------| Edit | | | | | | | | | | | | | | Sour | Hist | | | | | | | | | | | | | | ------------------------------------------------------- | | | 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." (ecb-set-directories-buffer) (ecb-split-ver 0.5) (ecb-set-sources-buffer) (ecb-split-hor 0.5) (ecb-set-history-buffer) (select-window (next-window))) ;; Layout left5 ----------------------------------------------------- (ecb-layout-define "left5" left "This function creates the following layout: ------------------------------------------------------- | | | | Directories | | | | | | | | | | | |--------------| | | | | | Sources | Edit | | | | | | | |--------------| | | | | | History | | | | | | | | ------------------------------------------------------- | | | 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." (ecb-set-directories-buffer) (ecb-split-ver 0.3) (ecb-set-sources-buffer) (ecb-split-ver 0.5) (ecb-set-history-buffer) (select-window (next-window))) ;; Layout right1 ----------------------------------------------------- (ecb-layout-define "right1" right "This function creates the following layout: ------------------------------------------------------- | | | | | Directories | | | | | | | | |--------------| | | | | | | | Edit | Sources | | | | | | | | |--------------| | | | | | Methods | | | | | | | ------------------------------------------------------- | | | 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." (let ((edit-win (previous-window (selected-window) 0))) (ecb-set-directories-buffer) (ecb-split-ver 0.3) (ecb-set-sources-buffer) (ecb-split-ver 0.5) (ecb-set-methods-buffer) (select-window edit-win))) ;; Layout right2 ----------------------------------------------------- (ecb-layout-define "right2" right "This function creates the following layout: ------------------------------------------------------- | | | | | | | | | | | Directories | | | | | | | | | | | Edit |--------------| | | | | | | | | | | | Methods | | | | | | | | | | ------------------------------------------------------- | | | 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." (let ((edit-win (previous-window (selected-window) 0))) (ecb-set-directories-buffer) (ecb-split-ver 0.5) (ecb-set-methods-buffer) (select-window edit-win))) ;; Layout left6 ----------------------------------------------------- (ecb-layout-define "left6" left "This function creates the following layout: ------------------------------------------------------- | Sources | | |--------------| | | | | | | | | | | | Methods | Edit | | | | | | | | | | |--------------| | | History | | ------------------------------------------------------- | | | 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." (ecb-set-sources-buffer) (ecb-split-ver 0.2) (ecb-set-methods-buffer) (ecb-split-ver 0.75) (ecb-set-history-buffer) (select-window (next-window))) ;; Layout top1 ----------------------------------------------------- (ecb-layout-define "top1" top "This function creates the following layout: ------------------------------------------------------- | | | | | | | | | Directories | Sources | Methods | | | | | | | | | |-----------------------------------------------------| | | | | | | | | | 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." (ecb-set-directories-buffer) (ecb-split-hor 0.5) (ecb-set-sources-buffer) (ecb-split-hor 0.5) (ecb-set-methods-buffer) (select-window (next-window))) ;; Layout left7 ----------------------------------------------------- (ecb-layout-define "left7" left "This function creates the following layout: ------------------------------------------------------- | | | | Directories | | | | | | | | | | | | | | | | | |--------------| Edit | | | | | History | | | | | |--------------| | | | | | Methods | | | | | ------------------------------------------------------- | | | 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. This layout works best if it is contained in `ecb-show-sources-in-directories-buffer'!" (ecb-set-directories-buffer) (ecb-split-ver 0.6) (ecb-set-history-buffer) (ecb-split-ver 0.4) (ecb-set-methods-buffer) (select-window (next-window))) ;; Layout left8 ----------------------------------------------------- (ecb-layout-define "left8" left "This function creates the following layout: ------------------------------------------------------- | | | | Directories | | | | | |--------------| | | | | | Sources | | | | | |--------------| Edit | | | | | Methods | | | | | | | | |--------------| | | History | | | | | ------------------------------------------------------- | | | 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." (ecb-set-directories-buffer) (ecb-split-ver 0.3) (ecb-set-sources-buffer) (ecb-split-ver 0.35) (ecb-set-methods-buffer) (ecb-split-ver 0.65) (ecb-set-history-buffer) (select-window (next-window))) ;; Layout top2 ----------------------------------------------------- (ecb-layout-define "top2" top "This function creates the following layout: ------------------------------------------------------- | | | | | Methods | | | | | |-----------------------------------------------------| | | | | | | | | | 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." (ecb-set-methods-buffer) (select-window (next-window))) ;; Layout left9 ----------------------------------------------------- (ecb-layout-define "left9" left "This function creates the following layout: ------------------------------------------------------- | | | | | | | | | | | | | | | | | | | | | | Methods | 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." (ecb-set-methods-buffer) (select-window (next-window))) ;; Layout left10 ----------------------------------------------------- (ecb-layout-define "left10" left "This function creates the following layout: ------------------------------------------------------- | | | | | | | | | | Methods | Edit | | | | | | | | | | | | | | | | |--------------| | | Sou | Hist | | ------------------------------------------------------- | | | 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." (ecb-set-methods-buffer) (ecb-split-ver 0.75) (ecb-set-sources-buffer) (ecb-split-hor 0.5) (ecb-set-history-buffer) (select-window (next-window))) ;; Layout left11 ----------------------------------------------------- (ecb-layout-define "left11" left "This function creates the following layout: ------------------------------------------------------- | | | | | | | | | | Methods | Edit | | | | | | | | | | | | | | | | |--------------| | | Hist | | ------------------------------------------------------- | | | 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." (ecb-set-methods-buffer) (ecb-split-ver 0.75) (ecb-set-history-buffer) (select-window (next-window))) ;; Layout left12 ----------------------------------------------------- (ecb-layout-define "left12" left "This function creates the following layout: ------------------------------------------------------- | | | | | | | | | | | | | | | | | | | | | | History | 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." (ecb-set-history-buffer) (select-window (next-window))) ;; Layout left13 ----------------------------------------------------- (ecb-layout-define "left13" left "This function creates the following layout: ------------------------------------------------------- | | | | | | | | | | | | | | | | | | | | | | Directories | 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. This layout works best if it is contained in `ecb-show-sources-in-directories-buffer'!" (ecb-set-directories-buffer) (select-window (next-window))) ;; Layout left14 ----------------------------------------------------- (ecb-layout-define "left14" left "This function creates the following layout: ------------------------------------------------------- | | | | | | | | | | Directories | Edit | | | | | | | | | | | | | | | | |--------------| | | Hist | | ------------------------------------------------------- | | | 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. This layout works best if it is contained in `ecb-show-sources-in-directories-buffer'!" (ecb-set-directories-buffer) (ecb-split-ver 0.75) (ecb-set-history-buffer) (select-window (next-window))) ;; Layout left15 ----------------------------------------------------- (ecb-layout-define "left15" left "This function creates the following layout: ------------------------------------------------------- | | | | Directories | | | | | | | | | | | | | | | | | |--------------| Edit | | | | | | | | | | | Methods | | | | | | | | | | | ------------------------------------------------------- | | | 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. This layout works best if it is contained in `ecb-show-sources-in-directories-buffer'!" (ecb-set-directories-buffer) (ecb-split-ver 0.5) (ecb-set-methods-buffer) (select-window (next-window))) ;; Layout leftright1 ----------------------------------------------------- (ecb-layout-define "leftright1" left-right "This function creates the following layout: -------------------------------------------------------------- | | | | | Directories | | Methods | | | | | | | | | | | | | | | | | | | | | |--------------| Edit | | | | | | | Sources | | | | | | | |--------------| | | | | | | | History | | | | | | | -------------------------------------------------------------- | | | 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." (ecb-set-directories-buffer) (ecb-split-ver 0.4) (ecb-set-sources-buffer) (ecb-split-ver 0.5) (ecb-set-history-buffer) (select-window (next-window (next-window))) (ecb-set-methods-buffer) (select-window (previous-window (selected-window) 0))) ;; Layout leftright2 ----------------------------------------------------- (ecb-layout-define "leftright2" left-right "This function creates the following layout: -------------------------------------------------------------- | | | | | Directories | | Methods | | | | | | | | | | | | | | | | | | | | | |--------------| Edit |-------------| | | | | | Sources | | History | | | | | | | | | | | | | | | | | | | | | -------------------------------------------------------------- | | | 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." (ecb-set-directories-buffer) (ecb-split-ver 0.66) (ecb-set-sources-buffer) (select-window (next-window (next-window))) (ecb-set-methods-buffer) (ecb-split-ver 0.66) (ecb-set-history-buffer) (select-window (previous-window (previous-window (selected-window) 0) 0))) ;; Layout leftright3 ----------------------------------------------------- (ecb-layout-define "leftright3" left-right "This function creates the following layout: -------------------------------------------------------------- | | | | | Directories | | Methods | | | | | | | | | | | | | | | | | | | | | | | 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." (ecb-set-directories-buffer) (select-window (next-window (next-window))) (ecb-set-methods-buffer) (select-window (previous-window (selected-window) 0))) (ecb-layout-define "left-dir-plus-speedbar" left "This function creates the following layout: ------------------------------------------------------- | | | | Directories | | | | | | | | | | | | | | | | | |--------------| Edit | | | | | | | | | | | Speedbar | | | | | | | | | | | ------------------------------------------------------- | | | 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. This layout works best if it is contained in `ecb-show-sources-in-directories-buffer'!" (ecb-set-directories-buffer) (ecb-split-ver 0.5) (ecb-set-speedbar-buffer) (select-window (next-window))) (ecb-layout-define "left-analyse" left "This function creates the following layout: ------------------------------------------------------- | | | | Directories | | | | | |--------------| | | | | | Sources | | | | | |--------------| Edit | | | | | Methods | | | | | |--------------| | | | | | Analyse | | | | | ------------------------------------------------------- | | | 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." (ecb-set-directories-buffer) (ecb-split-ver 0.3) (ecb-set-sources-buffer) (ecb-split-ver 0.35) (ecb-set-methods-buffer) (ecb-split-ver 0.5) (ecb-set-analyse-buffer) (select-window (next-window))) (ecb-layout-define "leftright-analyse" left-right "This function creates the following layout: -------------------------------------------------------------- | | | | | Directories | | Methods | | | | | | | | | | | | | | | | | | | | | |--------------| Edit |-------------| | | | | | Sources | | | | | | | |--------------| | Analyse | | | | | | History | | | | | | | -------------------------------------------------------------- | | | 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." (ecb-set-directories-buffer) (ecb-split-ver 0.4) (ecb-set-sources-buffer) (ecb-split-ver 0.5) (ecb-set-history-buffer) (select-window (next-window (next-window))) (ecb-set-methods-buffer) (ecb-split-ver 0.5) (ecb-set-analyse-buffer) (select-window (previous-window (previous-window (selected-window) 0) 0))) (ecb-layout-define "left-symboldef" left "This function creates the following layout: ------------------------------------------------------- | | | | Directories | | | | | |--------------| | | | | | Sources | | | | | |--------------| Edit | | | | | Methods | | | | | |--------------| | | | | | Symbol-defs | | | | | ------------------------------------------------------- | | | 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." (ecb-set-directories-buffer) (ecb-split-ver 0.3) (ecb-set-sources-buffer) (ecb-split-ver 0.35) (ecb-set-methods-buffer) (ecb-split-ver 0.5) (ecb-set-symboldef-buffer) (select-window (next-window))) (defconst ecb-buildin-layouts (ecb-copy-list ecb-available-layouts) "All layouts defined until now.") (silentcomp-provide 'ecb-layout-defs) ;;; ecb-layout-defs.el ends hereecb-2.40+cvs20110608/ecb-layout.el000066400000000000000000011625531157374236500162210ustar00rootroot00000000000000;;; ecb-layout.el --- layout for ECB ;; Copyright (C) 2000 - 2005 Jesper Nordenberg, ;; Klaus Berndl, ;; Kevin A. Burton, ;; Free Software Foundation, Inc. ;; Author: Jesper Nordenberg ;; Klaus Berndl ;; Kevin A. Burton ;; Maintainer: Klaus Berndl ;; Keywords: browser, code, programming, tools ;; Created: 2000 ;; 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: ecb-layout.el,v 1.290 2010/03/02 12:02:28 berndl Exp $ ;;; Commentary: ;; ;; Contains functions for settings the ECB layout. ;; ;; This file is part of the ECB package which can be found at: ;; http://ecb.sourceforge.net ;; This file has been re-implemented by Klaus Berndl . ;; What has been done: ;; Completely rewritten the layout mechanism for better customizing, adding ;; new layouts, better redrawing and more straightforward code. ;; 1. Now all user-layouting is done by customizing the new option ;; `ecb-layout-name' or by the command `ecb-change-layout'. The function ;; `ecb-redraw-layout' (formally known as 'ecb-set-layout) can still be ;; called interactively. But it just redraws the layout specified in ;; `ecb-layout-name'. All changes to the layout must be made by customizing ;; this new option. Please read the very detailed comment of ;; `ecb-layout-name'! ;; 2. Adding new layouts is now much easier and more straightforward: We have ;; now a main core-layout function (`ecb-redraw-layout-full') which is the ;; "environment" for the specific "layout-functions". The core function ;; does first some layout independent actions, then calls the ;; "layout-function" for the name which has been set in `ecb-layout-name' ;; and after that it does some layout independent actions again (see the ;; comments in this function). See the macro `ecb-layout-define' and the ;; command `ecb-create-new-layout'! ;; ;; Background-info: For each layout-type (ecb-windows left, right, top and ;; left-right) there is one function: ;; 'ecb-delete-window-ecb-windows-[left|right|top|leftright]'. ;; These functions follow these guide-lines: ;; - Preconditions for these functions: ;; + the edit-area is splitted - at least in two edit-windows ;; + The function gets two arguments: The window to delete (if nil then the ;; current window has to be deleted) and the list of all current ;; edit-windows. ;; + These functions are always(!) called with deactivated advices of ;; `delete-window' function. ;; + These functions can only use `delete-window' of the set of maybe ;; adviced window functions, because of a bug in advice.el only one ;; function´s advice can be deactivated within a advice itself! ;; - What must they do: Doing the appropriate action (e.g. ;; `ecb-delete-window-ecb-windows-left' must delete the window. This action ;; must be done appropriate for the current ECB-layout type (see ;; postconditions) ;; - Postcondition of these functions: ;; + The named edit-window must be deleted and all ecb-windows in the ;; ecb-frame must have the layout like before the delete. ;; + If the current window has been deleted then point must reside after ;; deletion in the next edit-window in a circular meaning (i.e. if the ;; last edit-window has been deleted, point must stay afterwards in the ;; first edit-window). If a window unequal the current window has been ;; deleted point must stay in the window before deletion at the same ;; place. ;; ;; New adviced intelligent window-functions as replacement for these originals: ;; - `other-window' ;; - `delete-window' ;; - `delete-other-windows' ;; - `delete-windows-on' ;; - `split-window-horizontally' ;; - `split-window-vertically' ;; - `split-window' ;; - `display-buffer' ;; - `switch-to-buffer' ;; - `switch-to-buffer-other-window' ;; - `other-window-for-scrolling' ;; - `balance-windows' ;; The behavior of the adviced functions is: ;; - All these function behaves exactly like their corresponding original ;; functions but they always act as if the edit-window(s) of ECB would be the ;; only window(s) of the ECB-frame. So the edit-window(s) of ECB seems to be ;; a normal Emacs-frame to the user. ;; - If a persistent compile-window is used all buffers for which ;; `ecb-compilation-buffer-p' returns not nil are handled in the ;; compile-window! ;; ;;; 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-util) (require 'ecb-common-browser) ;;(require 'ecb-speedbar) (require 'ecb-compilation) (require 'ecb-create-layout) (require 'ecb-navigate) ;; XEmacs (silentcomp-defvar scrollbars-visible-p) (silentcomp-defun window-displayed-height) (silentcomp-defvar pre-display-buffer-function) (silentcomp-defvar split-width-threshold) (silentcomp-defvar split-width-threshold) (silentcomp-defun popup-menu-and-execute-in-window) (silentcomp-defvar modeline-map) (silentcomp-defun modeline-menu) ;; for the display-buffer stuff of XEmacs (silentcomp-defun last-nonminibuf-frame) (silentcomp-defun check-argument-type) (silentcomp-defun buffer-dedicated-frame) (silentcomp-defun display-buffer-1) (silentcomp-defun frame-property) (silentcomp-defun window-leftmost-p) (silentcomp-defun window-rightmost-p) (silentcomp-defun window-parent) (silentcomp-defun window-previous-child) (silentcomp-defun window-next-child) (silentcomp-defun window-pixel-edges) (silentcomp-defun window-pixel-height) (silentcomp-defun record-buffer) (silentcomp-defun push-window-configuration) (silentcomp-defun set-frame-property) (silentcomp-defvar temp-buffer-shrink-to-fit) ;; Emacs (silentcomp-defvar scroll-bar-mode) ;; only Emacs 21 has this (silentcomp-defvar window-size-fixed) ;;(silentcomp-defun fit-window-to-buffer) (silentcomp-defvar temp-buffer-resize-mode) (silentcomp-defun temp-buffer-resize-mode) (silentcomp-defun modify-frame-parameters) ;; Emacs 21 (silentcomp-defvar grep-window-height) (eval-when-compile ;; to avoid compiler grips (require 'cl)) (defvar ecb-layouts-reload-needed t) (defun ecb-load-layouts () "Load all defined layouts" (when ecb-layouts-reload-needed (require 'ecb-layout-defs) (if (file-readable-p ecb-create-layout-file) (load-file ecb-create-layout-file)) (setq ecb-layouts-reload-needed nil))) (defgroup ecb-layout nil "Settings for the screen-layout of the Emacs code browser." :group 'ecb :prefix "ecb-") (defgroup ecb-compilation nil "Settings for the compile window of ECB." :group 'ecb-layout :prefix "ecb-") (defconst ecb-layout-option-set-function (function (lambda (symbol value) (set symbol value) ;; we must check this because otherwise the layout would be drawn ;; if we have changed the initial value regardless if ECB is ;; activated or not. (when (and (boundp 'ecb-minor-mode) ecb-minor-mode (frame-live-p ecb-frame)) (let ((curr-frame (selected-frame))) (unwind-protect (progn (select-frame ecb-frame) (ecb-redraw-layout-full)) (select-frame curr-frame))))))) (defcustom ecb-select-edit-window-on-redraw nil "*Select the first edit window on `ecb-redraw-layout'." :group 'ecb-layout :type 'boolean) (defcustom ecb-new-ecb-frame nil "*Create a new frame at activation time of ECB." :group 'ecb-layout :group 'ecb-most-important :type 'boolean) (defcustom ecb-activate-before-new-frame-created-hook nil "*Hook run before the new ECB-frame is created. This has only an effect if `ecb-new-ecb-frame' is not nil \(otherwise this hook is not evaluated)." :group 'ecb-layout :type 'hook) (defvar ecb-last-selected-layout nil "Name of that layout which was current direct before switching to another layout.") ;; TODO: Klaus Berndl : UPDATE the layout-list in the docstring... (defcustom ecb-layout-name "left8" "*Select a window layout of ECB. Value is any arbitrary string. There are four different types of layouts: left, right, top and left-right, which means the location of the ECB-tree-windows in the ECB-frame. Currently there are 20 predefined layouts; names see below. You can savely try out any of them by changing this value and saving it only for the current session. If you are sure which layout you want you can save it for future sessions. To get a picture of the layout for name call `ecb-show-layout-help'. Currently available layouts: + Left layouts: left1 left2 left3 left4 left5 left6 left7 left8 left9 left10 left11 left12 left13 left14 left15 + Right layouts: right1 + Top layouts: top1 top2 + Left-right layouts: leftright1 leftright2 leftright3 Regardless of the settings you define here: If you have destroyed or changed the ECB-screen-layout by any action you can always go back to this layout with `ecb-redraw-layout'" :group 'ecb-layout :group 'ecb-most-important :initialize 'custom-initialize-default :set (function (lambda (symbol value) (ecb-load-layouts) (if (fboundp (intern (format "ecb-layout-function-%s" value))) (progn (setq ecb-last-selected-layout ecb-layout-name) (funcall ecb-layout-option-set-function symbol value)) (ecb-error "There is no layout with name %s available!" value)))) :type 'string) (defun ecb-enable-temp-buffer-shrink-to-fit (arg) "Enables `temp-buffer-resize-mode' \(GNU Emacs) rsp. `temp-buffer-shrink-to-fit' \(XEmacs) when a comile-window is used. When the compile-window is disabled or when ECB is deactivated then the old state of these modes/variables is restored." (if arg (progn ;; store old value if not already done (or (get 'ecb-enable-temp-buffer-shrink-to-fit 'ecb-old-temp-buffer-shrink-to-fit) (put 'ecb-enable-temp-buffer-shrink-to-fit 'ecb-old-temp-buffer-shrink-to-fit (cons 'stored (if ecb-running-xemacs temp-buffer-shrink-to-fit temp-buffer-resize-mode)))) ;; now we activate temp-buffer-shrinking (if ecb-running-xemacs (setq temp-buffer-shrink-to-fit t) (temp-buffer-resize-mode 1)) ) ;; reset to the original value (and (get 'ecb-enable-temp-buffer-shrink-to-fit 'ecb-old-temp-buffer-shrink-to-fit) (if ecb-running-xemacs (setq temp-buffer-shrink-to-fit (cdr (get 'ecb-enable-temp-buffer-shrink-to-fit 'ecb-old-temp-buffer-shrink-to-fit))) (temp-buffer-resize-mode (if (cdr (get 'ecb-enable-temp-buffer-shrink-to-fit 'ecb-old-temp-buffer-shrink-to-fit)) 1 -1)))) (put 'ecb-enable-temp-buffer-shrink-to-fit 'ecb-old-temp-buffer-shrink-to-fit nil))) (defcustom ecb-compile-window-height nil "*Height of the persistent compilation-window of ECB. If you want a compilation window shown at the bottom of the ECB-layout then set here the height of it \(Default is a height of 5). If you redraw the current layout with `ecb-redraw-layout' then the compilation window (if any) has the height you set here. If the number is less than 1.0 the height is a fraction of the frame height. If you do not set a persistent compilation window then doing a compilation or displaying temp-buffers \(e.g. *Help*-buffers) splits temporally the edit window vertically if the edit window is not splitted already or uses another edit window temporally for compilation output if the edit window is already splitted. This is the recommended value for this option because this is the standard-behavior of Emacs. Beware: If you set a persistent compilation window then ECB displays all buffers for which `ecb-compilation-buffer-p' returns not nil in that persistent compilation window. If a buffer which should being displayed there is not displayed there then try to modify the options `ecb-compilation-buffer-names', `ecb-compilation-major-modes' or `ecb-compilation-predicates' \(in this sequence). See also the options `ecb-compile-window-temporally-enlarge' and `ecb-enlarged-compilation-window-max-height' and also the command `ecb-toggle-compile-window-height'! ECB offers the functionality of such a persistent compile-window regardless if the special ECB-windows are visible or not \(see the command `ecb-toggle-ecb-windows'). Regardless of the settings you define here: If you have destroyed or changed the ECB-screen-layout by any action you can always go back to this layout with `ecb-redraw-layout'" :group 'ecb-compilation :group 'ecb-most-important :initialize 'custom-initialize-default ;; we can not use here `ecb-layout-option-set-function' because here we ;; must call `ecb-redraw-layout-full' with NO-ECB-WINDOWS depending on the ;; value of `ecb-windows-hidden-state'! Same for `ecb-compile-window-width'. If ;; this is necessary for other options too then we should ;; `ecb-layout-option-set-function' to a function with an additional ;; parameter which decides if ecb-window-hidden should be used for ;; NO-ECB-WINDOWS or not. :set (function (lambda (symbol value) ;; Emacs < 22 has some bugs concerning `windows-size-fixed' ;; so we must disable window-fixing. (and (not ecb-running-gnu-emacs-version-22) (ecb-set-window-size-fixed nil)) (set symbol value) ;; we must check this because otherwise the layout would be ;; drawn if we have changed the initial value regardless if ;; ECB is activated or not. (when (and (boundp 'ecb-minor-mode) ecb-minor-mode (frame-live-p ecb-frame)) (ecb-enable-temp-buffer-shrink-to-fit value) (let ((curr-frame (selected-frame))) (unwind-protect (progn (select-frame ecb-frame) (ecb-redraw-layout-full nil nil nil ecb-windows-hidden-state)) (select-frame curr-frame)))))) :type '(radio (const :tag "No compilation window" nil) (number :tag "Window height" :value 6))) (defcustom ecb-compile-window-width 'frame "*Width of the compile-window. Possible values are 'frame and 'edit-window. With 'frame the compile-window looks like: ------------------------------------------------------- | | | | Directories | | | | | |--------------| edit-window(s) | | | | | Methods | | | | | ------------------------------------------------------- | | | Compilation | | | ------------------------------------------------------- With 'edit-window the compile-window looks like: ------------------------------------------------------- | | | | Directories | | | | | |--------------| edit-window(s) | | | | | Methods | | | | | | |--------------------------------------- | | | | | Compilation | | | | ------------------------------------------------------- This option takes only effect if `ecb-compile-window-height' is not nil!" :group 'ecb-compilation :group 'ecb-most-important :initialize 'custom-initialize-default :set (function (lambda (symbol value) ;; Emacs < 22 has some bugs concerning `windows-size-fixed' ;; so we must disable window-fixing. (and (not ecb-running-gnu-emacs-version-22) (ecb-set-window-size-fixed nil)) (set symbol value) ;; we must check this because otherwise the layout would be ;; drawn if we have changed the initial value regardless if ;; ECB is activated or not. (when (and (boundp 'ecb-minor-mode) ecb-minor-mode (frame-live-p ecb-frame)) (let ((curr-frame (selected-frame))) (unwind-protect (progn (select-frame ecb-frame) (ecb-redraw-layout-full nil nil nil ecb-windows-hidden-state)) (select-frame curr-frame)))))) :type '(radio (const :tag "Width of ECB-frame" :value frame) (const :tag "Width of edit-window" :value edit-window))) (defcustom ecb-change-layout-preserves-compwin-state t "*Changing the layout preserves the state of the compile-window. This is for example useful if the user toggles between several layouts \(see `ecb-toggle-layout') and wants to preserve the hidden-state of the compile-window." :group 'ecb-compilation :type 'boolean) (defcustom ecb-compile-window-temporally-enlarge 'after-display "*Let Emacs temporally enlarge the compile-window of the ECB-layout. This option has only an effect if `ecb-compile-window-height' is not nil! The following values are possible: - 'after-display: After displaying a \"compilation-buffer\" \(in the sense of `ecb-compilation-buffer-p'!) in the compile-window of ECB. For the max. height of the enlarged compile-window see the option `ecb-enlarged-compilation-window-max-height'. - 'after-selection: selecting the `ecb-compile-window' auto. enlarges it and de-selecting \(means leaving `ecb-compile-window') auto. shrinks it. Enlarging and shrinking the `ecb-compile-window' is done with `ecb-toggle-compile-window-height'. See also the documentation of this function! - 'both: The combination of 'after-display and 'after-selection. - nil: ECB fixes always the height of the `ecb-compile-window' at the value of `ecb-compile-window-height'. To restore the ECB-layout after such a buffer-enlarge just call `ecb-toggle-compile-window-height' or `ecb-redraw-layout'." :group 'ecb-compilation :type '(radio (const :tag "After displaying a buffer in the compile-window" :value after-display) (const :tag "After selecting the compile window" :value after-selection) (const :tag "Both of them" :value both) (const :tag "Never" :value nil))) (defcustom ecb-maximize-ecb-window-after-selection nil "*If not nil maximize current tree-window after selection. When selecting another not-tree-window after such an automatic maximizing all tree-windows of current layout are displayed again. But a tree-window is not maximized if either a node has been selected via primary- oder secondarc mouse-button or the popup-menu of that tree-buffer has been opened." :group 'ecb-layout :type 'boolean) (defcustom ecb-maximize-next-after-maximized-select nil "*Maximizes the next logical tree-window after a maximized node-selection. Selecting a node in a maximized tree-window is handled very smart by ECB: If a tree-buffer-name is not contained in this option then selecting a node in this maximized tree-buffer automatically \"minimizes\" that tree-window \(i.e. displays all windows of the current layout) so the user can perform the next logical step \(e.g. the next logical step after selecting a directory in the directories-buffer is to select a source-file - therefore the sources-buffer of current layout has to be displayed - if the current layout contains one; the next logical step of selecting a source-file is probably to jump to a certain tag via the methods-buffer). If a tree-buffer-name is contained in this option then selecting a node in this tree-buffer automatically maximizes the next logical tree-window \(e.g. directories --> sources, sources/history --> methods). But if the current maximized tree-buffer is also contained in the option `ecb-tree-do-not-leave-window-after-select' \(see also the tree-buffer-command `ecb-toggle-do-not-leave-window-after-select' which is bound to `C-t' in each tree-buffer) then ECB does *not* maximize the next logical tree-window but point stays in the currently maximized tree-buffer so for example the user can select more than one node \(e.g. more than one source-file from the sources-buffer. The tree-buffer-name can either be defined as plain string or with a symbol which contains the buffer-name as value. The latter one is recommended for the builtin ECB-tree-buffers because then simply the related option-symbol can be used \(e.g. `ecb-directories-buffer-name', `ecb-sources-buffer-name' or `ecb-history-buffer-name'). In future versions this option will probably also allow to define the next logical tree-buffer for a tree-buffer - currently this is hard-coded as follows: - directories --next-logical--> sources - sources --next-logical--> methods - history --next-logical--> methods." :group 'ecb-layout :type '(repeat (choice :menu-tag "Buffer-name" (string :tag "Buffer-name as string") (symbol :tag "Symbol holding buffer-name")))) ;; A value of never makes no sense because it is not much effort to prevent ;; all interactive shrinking commands (incl. mouse-commands) from shrinking it ;; below ecb-compile-window-height and it is also not worth. IMHO preventing ;; in non-interactive calls and allowing interactively is the best choice. ;; Allowing always is also possible and easy to implement. (defcustom ecb-compile-window-prevent-shrink-below-height t "*Allow the compile-window to be shrunken below its height. A non nil value means ECB prevents the compile-window from being shrunken below the threshold of `ecb-compile-window-height' by displaying temp-buffers \(e.g. *Help* etc.) or after running compilations or greps. But interactively it is always allowed to shrink it to every height! If nil then ECB does nothing to prevent being shrunken below the value of `ecb-compile-window-height'. Default is t." :group 'ecb-compilation :type 'boolean) (defcustom ecb-enlarged-compilation-window-max-height 'best "*The max height of the compile-window after enlarging it. The max height of the compilation window after enlarged by `ecb-toggle-compile-window-height'. The following values are allowed: 'best: ECB fits the height of the compile-window exactly to the size of its current contents but never shrinks below the value of `ecb-compile-window-height' or enlarges over the half of the frame-height of the ECB-frame. The values of the options `compilation-window-height' and `temp-buffer-max-height' are taken into account dependent of the current `major-mode' of the buffer in the compile-window: If `compilation-mode' then `compilation-window-height' is used otherwise `temp-buffer-max-height'. 'half: 1/2 the frame-height of the ECB-frame Any number: Max height in lines. If the number is less than 1.0 the height is a fraction of the frame height \(e.g. 0.33 results in a max-height of 1/3 the frame-height)." :group 'ecb-compilation :type '(radio (const :tag "Compute best height" :value best) (const :tag "1/2 the frame height)" :value half) (number :tag "Height" :value 0.3))) (defcustom ecb-scroll-other-window-scrolls-compile-window nil "*`scroll-other-window' scrolls always the compile-window. For all details about the scroll-behavior of `scroll-other-window' see the advice documentation of `other-window-for-scrolling'." :group 'ecb-compilation :type 'boolean) (defcustom ecb-ignore-special-display 'compile-window "*Ignore special-display-handling. This means, that all values of `special-display-function', `special-display-buffer-names' and `special-display-regexps' are ignored - only when persistent compile window is used - i.e. if `ecb-compile-window-height' is not nil - this is the default value. - always when ECB is active - that means no special-display-handling of buffers when ECB is active - never, i.e. special-dislay-handling depends on the values of the options `special-display-function', `special-display-buffer-names' and `special-display-regexps'." :group 'ecb-layout :type '(radio (const :tag "When a persistent compile-window is used" :value compile-window) (const :tag "Always" :value always) (const :tag "Never" nil))) (defsubst ecb-ignore-special-display () (or (equal ecb-ignore-special-display 'always) (and (equal ecb-ignore-special-display 'compile-window) ecb-compile-window-height))) (defcustom ecb-ignore-pop-up-frames 'compile-window "*Ignore setting of option `pop-up-frames'. This means, that a value of not nil for `pop-up-frames' is ignored - only when persistent compile window is used - i.e. if `ecb-compile-window-height' is not nil - this is the default value. - always when ECB is active - that means no pop-up-frames when ECB is active - never, i.e. pop-up-frames is fully active when set." :group 'ecb-layout :type '(radio (const :tag "When a persistent compile-window is used" :value compile-window) (const :tag "Always" :value always) (const :tag "Never" nil))) (defsubst ecb-ignore-pop-up-frames () (or (equal ecb-ignore-pop-up-frames 'always) (and (equal ecb-ignore-pop-up-frames 'compile-window) ecb-compile-window-height))) (defcustom ecb-ignore-display-buffer-function 'always "*Adviced `display-buffer' ignores `display-buffer-function'. This means, that the adviced version of `display-buffer' ignores the value of `display-buffer-function' when called for the `ecb-frame'. If this variable should not be ignored then the function of `display-buffer-function' is completely responsible which window is used for the buffer to display - no smart ECB-logic will help to deal best with the ECB-window-layout! You can define if and when `display-buffer-function' should be ignored: - only when persistent compile window is used - i.e. if `ecb-compile-window-height' is not nil - always when ECB is active - that means ignore when ECB is active otherwise not - this is the default value - never, the adviced version of `display-buffer' always uses the value of `display-buffer-function' if the value is a function." :group 'ecb-layout :type '(radio (const :tag "When a persistent compile-window is used" :value compile-window) (const :tag "Always" :value always) (const :tag "Never" nil))) (defsubst ecb-ignore-display-buffer-function () (or (equal ecb-ignore-display-buffer-function 'always) (and (equal ecb-ignore-display-buffer-function 'compile-window) ecb-compile-window-height))) (defcustom ecb-split-edit-window-after-start 'before-deactivation "*Sets how and if the edit window should be splitted after ECB-start. But be aware: This option determines only if and how the edit-window should be splitted at start-time of ECB. There are five different values allowed for this option: - nil: Do not split the edit-area of ECB after activation, i.e. there will be only one edit-window after starting ECB. - 'horizontal: Split the edit-area in 2 edit-windows side by side. - 'vertical: Split the edit-area in 2 edit-windows, one above the other. - 'before-activation: Split the edit-area as before the ECB-start, i.e. the edit-area will have after start a window-layout as the whole frame had before the start of ECB. - 'before-deactivation: Split the edit-area into a window-layout ECB had in its edit-area direct before the ECB-deactivation. This value preserves the full state between activations of ECB, i.e. the visibility of the ECB-windows, the visibility of a compile-window and also the full split-state of the edit-area. But this can only be done if important layout-options have not been changed in the meanwhile. These are the options `ecb-layout-name', `ecb-compile-window-height', `ecb-compile-window-width', `ecb-windows-width' and `ecb-windows-height'. Default value is 'before-deactivation. Some remarks to the value 'before-activation: If this value has been set then ECB needs four permanent adivces even when ECB is deactivated: `split-window', `delete-window', `delete-other-windows' and `set-window-configuration'. But these advices do not change any behavior of these functions but only storing in an internal ECB-variable the facts that a window has been splitted or deleted etc. In addition to this these advices are 100% error-save, means the functionality of the original functions will be performed in every\(!) case even if within the advice an error occurs \(but normally there can no errors occur in these advices because they are very simple). Conclusion: If you want really all ECB-advices being disabled after deactivating ECB then you have to set this option to other values then 'before-activation. But setting this variable to this value is really completely save." :group 'ecb-layout :type '(radio (const :tag "Split as before ECB-start" :value before-activation) (const :tag "Split as before last ECB-deactivation" :value before-deactivation) (const :tag "Split horizontally" :value horizontal) (const :tag "Split vertically" :value vertical) (const :tag "Do not split" :value nil))) (defcustom ecb-windows-width 0.33 "*The width of the ECB windows in columns for left- and right layouts. If the number is less than 1.0 the width is a fraction of the frame width." :group 'ecb-layout :initialize 'custom-initialize-default :set ecb-layout-option-set-function :type 'number) (defcustom ecb-windows-height 0.33 "*The height of the ECB windows in lines for top layouts. If the number is less than 1.0 the width is a fraction of the frame height." :group 'ecb-layout :initialize 'custom-initialize-default :set ecb-layout-option-set-function :type 'number) (defcustom ecb-fix-window-size nil "*Fix size of the ECB-windows/buffers even after frame-resizing. The fix type \(valid values are nil, t, width and height) can either be set on a layout-basis \(means a different value for each layout) or one value can be set for all layouts. For the latter case there is an additional value 'auto which choose autom. the senseful fix-type depending on the current layout-type: For top-layouts the fix-type 'height and for all other layout-types the fix-type 'width. For a detailed description of the valid values see documentation of `window-size-fixed' which is newly introduced in GNU Emacs 21 and is only available there. Therefore this option takes only effect with GNU Emacs >= 21. This option has no effect with XEmacs because it does not support the feature `window-size-fixed'. Note1: Manually resizing the ECB-windows via `enlarge-window', `shrink-window', `mouse-drag-vertical-line' and `mouse-drag-mode-line' is still possible even if the window-sizes are fixed for frame-resizing! Note2: The description of `window-size-fixed' in the elisp-info-manual is more detailed than the description offered by \[C-h v]! Note3: With Emacs < 22 there seems to be no distinction between 'width, 'height and t. Therefore this option takes no effect \(means all ecb-windows have always unfixed sizes) with Emacs < 22 if `ecb-compile-window-height' is not nil. Per default no window-size fixing has been done." :group 'ecb-directories :initialize 'custom-initialize-default :set (function (lambda (sym value) (set sym value) (ecb-set-window-size-fixed (ecb-get-window-fix-type ecb-layout-name)))) :type '(radio (choice :tag "Fix type for all layouts" :menu-tag "Fix type for all layouts" (const :tag "Automatic" :value auto) (const :tag "Fix only width" :value width) (const :tag "Fix only height" :value height) (const :tag "Fix both" :value t) (const :tag "No fixing" :value nil)) (repeat :tag "With these layouts" (cons (string :tag "Layout name") (choice :tag "Fix type" :menu-tag "Fix type for all layouts" (const :tag "Fix only width" :value width) (const :tag "Fix only height" :value height) (const :tag "Fix both" :value t) (const :tag "No fixing" :value nil)))))) (defun ecb-get-window-fix-type (layout-name) "Determine which value of `window-size-fixed' we must set in all ecb-buffers of layout LAYOUT-NAME." (if (symbolp ecb-fix-window-size) (if (equal ecb-fix-window-size 'auto) (if (equal (ecb-get-layout-type ecb-layout-name) 'top) 'height 'width) ecb-fix-window-size) (cdr (assoc layout-name ecb-fix-window-size)))) (defun ecb-set-window-size-fixed (fix) "Set the buffer-local value of `window-size-fixed' in each visible ecb-window to FIX. For Emacs < 22: If `ecb-compile-window-height' is not nil then set always nil!" (unless ecb-running-xemacs (let ((l (ecb-canonical-ecb-windows-list))) (dolist (w l) (with-current-buffer (window-buffer w) (setq window-size-fixed (if (and (not ecb-running-gnu-emacs-version-22) ecb-compile-window-height) nil fix))))))) (defmacro ecb-do-with-unfixed-ecb-buffers (&rest body) "Evaluate BODY with unfixed size of all current-visible ecb-buffers and ensure that at the end \(either after finishing of BODY or after an error occurs during BODY) all now current visible ecb-buffers get the value of their buffer-local `window-size-fixed' from the setting in `ecb-fix-window-size'." `(unwind-protect (progn (ecb-set-window-size-fixed nil) ,@body) (ecb-set-window-size-fixed (ecb-get-window-fix-type ecb-layout-name)))) (defmacro ecb-do-with-fixed-ecb-buffers (&rest body) "Evaluate BODY with fixed size of all current-visible ecb-buffers and ensure that at the end \(either after finishing of BODY or after an error occurs during BODY) all now current visible ecb-buffers get the value of their buffer-local `window-size-fixed' from the setting in `ecb-fix-window-size'." `(unwind-protect (progn (ecb-set-window-size-fixed t) ,@body) (ecb-set-window-size-fixed (ecb-get-window-fix-type ecb-layout-name)))) (defcustom ecb-other-window-behavior 'smart "*The behavior of ECB concerning getting an \"other window\". The following settings are possible: 'all: ECB will cycle through all windows of the ECB-frame or scroll simply the next window in the ECB-frame, means it behaves like the original `other-window' rsp. the original `other-window-for-scrolling'. 'only-edit: ECB will only cycle through the edit-windows of ECB or only scroll another edit-window. If the selected window is not an edit-window then it behaves like with value 'all. 'edit-and-compile: Like 'only-edit plus the compile window if any. If the selected window is neither an edit-window nor the compile-window then it behaves like with value 'all. 'smart: With this setting ECB tries to choose the `other-window'-destination or the \"other window\" to scroll in a smart and intuitive way: If point is in one of the edit-windows and if the edit-area is splitted then always the \"next\" edit-window is choosen \(whereas the next edit-window of the last edit-window is the first edit-window)- if the edit-area is unsplitted then the compile-window is used if there is one. In the context of an `other-window'-call the ARG of `other-window' will be taken into account. If one of the special ecb-windows is selected then always the \"next\" ecb-window is choosen \(whereas the next ecb-window of the last ecb-window is the first ecb-window). In the context of an `other-window'-call the ARG of `other-window' will be taken into account. If there is only one ecb-window then ECB considers also the edit-windows! If the compile-window is selected then always the last selected edit-window will be used unless `other-window' has been called with a prefix-argument unequal 1. If there is an active minibuffer: Regardless of the allowed values above ECB handles the situation of an active minibuffer during a call to `other-window' or `scroll-other-window' like follows: If the minibuffer-window is selected then ECB always chooses the window `minibuffer-scroll-window' points to \(when this variable is set, otherwise the compile-window or the last selected edit-window is choosen) when the called command is called to choose the 1. next window \(always true for scrolling another window or true when `other-window' called without prefix-arg or with prefix-arg equal 1). Otherwise the window ARG steps away is choosen \(in case of `other-window). If there is an active minibuffer but the minibuffer-window is not selected then `other-window' and `scroll-other-window' behave like the original version. In addition to the allowed values above the value of this option can also be a function: This function gets seven arguments: 1. A canonical list of all currently visible windows of the `ecb-frame' 2. A canonical list of all currently visible edit-windows 3. A canonical list of all currently visible ecb-windows 4. The window-object of the compile-window if there is any. 5. The minibuffer-window of the ECB-frame if there is an active minibuffer. 5. The result of the function `ecb-where-is-point' - see the documentation of this function for details. 6. An integer which indicates how many steps away from the current selected window the \"other-window\ is. Is nil when this function is called in another context then for `other-window'. The function has to return a window-object which is then used as \"other window\" for the command `other-window' or for scrolling another window \(e.g. with `scroll-other-window'). This function has to handle all properly situations for itself. `ecb-get-other-window-smart' is an example for such a function." :group 'ecb-layout :group 'ecb-most-important :type '(radio (const :tag "Smart" :value smart) (const :tag "All windows" all) (const :tag "Only edit windows" only-edit) (const :tag "Edit + compile window" edit-and-compile) (function :tag "User defined" :value ignore))) (defcustom ecb-advice-window-functions-signal-error nil "*Signal an error if an adviced function can not do its job. If not nil then an error is signaled if one of the adviced functions can not do its job. So for example if the user tries to split the compile-window or an ecb-tree-window or if one tries to switch to another buffer in one of the ecb-tree-windows. For details see the documentation of each of the adviced functions to get info when an error is signaled. If this option is nil then no error is signaled but the called adviced function does simply nothing. Default is nil but it can also be useful to signal errors - so you see when call a function in a situation which is not supported by this function." :group 'ecb-layout :type 'boolean) (defcustom ecb-layout-always-operate-in-edit-window '(switch-to-buffer) "*Adviced window functions work always in the edit-window. If we are in an ECB special buffer (methods, directories, etc), and any of the adviced windowing functions is called interactively, we will select first an edit-window according to the value of `ecb-mouse-click-destination'. This is useful if you have any functions that use such functions and you don't want them to fail with an error complaining that the current buffer can not be split, or something similar. Because this may not be desirable in all situations and for all adviced functions this can be enabled separately for function where it is senseful. If the symbol of an adviced function is contained in the value of this option, then the edit-window is first selected otherwise either an error is reported or some other special reaction (depends on `ecb-advice-window-functions-signal-error'); see the documentation of the adviced functions for this. Per default this is only enabled for `switch-to-buffer'." :group 'ecb-layout :type '(set (const :tag "delete-window" :value delete-window) (const :tag "delete-other-windows" :value delete-other-windows) (const :tag "split-window-horizontally" :value split-window-horizontally) (const :tag "split-window-vertically" :value split-window-vertically) (const :tag "split-window" :value split-window) (const :tag "display-buffer" :value display-buffer) (const :tag "switch-to-buffer" :value switch-to-buffer))) (defcustom ecb-layout-window-sizes nil "*Specifies the sizes of the ECB windows for each layout. The easiest way \(and also the very strongly recommended way) to set this option is to change the window sizes by dragging the window borders using the mouse and then store the window sizes by calling the command `ecb-store-window-sizes'. Next time the layout is redrawn the values stored in this option will be used. If `ecb-store-window-sizes' is used then the windows sizes are stored per default as fractions of current frame-width and -height of the ecb-frame, so the stored values will \"work\" for other frame sizes too. But if you call `ecb-store-window-sizes' with a prefix-argument then the fixed values of current width and height are stored! If this option is set \"by hand\" \(i.e. not by `ecb-store-window-sizes') then the following is important: - Use always `customize-option', never `setq'! - It is recommended to use fractions of frame-width and -height!. - It is also recommended to use buffer-name-symbols instead of plain buffer-names \(e.g. ecb-history-buffer-name instead of \" *ECB History*\") - There must be an entry for each special ecb-buffer of that layout for which the sizes are stored. - The order of the sequence of the inserted window sizes doesn't matter because each size-pair is assigned to a buffer-name the sizes belong to." :group 'ecb-layout :initialize 'custom-initialize-default :set ecb-layout-option-set-function :type '(repeat (cons :tag "Window layout" (string :tag "Layout name") (repeat :tag "Window sizes" (cons (choice :tag "Buffer-name" :menu-tag "Buffer-name" (string :tag "Buffer-name as string") (symbol :tag "Symbol containing buffer-name")) (cons (choice :tag "Width" :menu-tag "Width" (const :tag "Default value" :value nil) (number :tag "Custom size")) (choice :tag "Height" :menu-tag "Height" (const :tag "Default value" :value nil) (number :tag "Custom size")))))))) (defcustom ecb-redraw-layout-quickly nil "If non-nil, we will attempt to redraw the layout quickly. Please read also carefully the documentation of `ecb-redraw-layout'." :type 'boolean :group 'ecb-layout) (defcustom ecb-major-modes-show-or-hide (cons nil nil) "*List of major-modes which show or hide the ecb-windows. The value is a cons-cell where the car contains all major-mode-symbols which should show the special ecb-windows and the cdr contains all major-mode-symbols which should hide the special ecb-windows. If the symbol of a major-mode is neither contained in the car-\"show-list\" nor in the cdr-\"hide-list\" then the visibility-state of the ecb-windows does not change." :group 'ecb-layout :group 'ecb-most-important :type '(cons (repeat :tag "Modes for visible ecb-windows" (symbol :tag "Major-mode")) (repeat :tag "Modes for invisible ecb-windows" (symbol :tag "Major-mode")))) (defcustom ecb-toggle-layout-sequence '("left9" "left14") "*Toggle sequence for layout toggling with `ecb-toggle-layout'. Every element of this list has to be a valid layout-name \(a string) i.e. either one of the predefined layouts or one of the user-defined layouts \(see `ecb-create-new-layout'). You can add here as many layouts as you want but to use this option most effective you should not add more than 2 or 3 layouts so every layout can be accessed very fast by toggling with `ecb-toggle-layout'. It is also senseful to add layouts which have the same principal outline, i.e. all their tree-buffers are on the same side of the frame and the tree-buffer-\"column\" \(or -\"row\") has identical size for the layouts. Recommended values are for example: - \(\"left10\" \"left15\"), toggles between methods and directories/history - \(\"left10\" \"left13\"), toggles between methods and directories - \(\"left10\" \"left14\"), toggles between methods and history - \(\"left10\" \"left13\" \"left14\"), toggles between methods, history and directories See also option `ecb-show-sources-in-directories-buffer'. This option makes only sense if the value is a list with more than 1 element!" :group 'ecb-layout :type '(repeat (string :tag "Layout name.")) :initialize 'custom-initialize-default :set (function (lambda (symbol value) (ecb-load-layouts) (dolist (name value) (if (and (boundp 'ecb-minor-mode) ecb-minor-mode (not (fboundp (intern (format "ecb-layout-function-%s" name))))) (ecb-error "There is no layout available with name %s!" name))) (set symbol value)))) (defcustom ecb-left-right-layout-hide-sequence '(left-side all right-side none) "*" :group 'ecb-layout :type '(repeat (choice :tag "Hidden windows" :menu-tag "Hidden windows" (const :tag "Only left side ecb-windows hidden" :value left-side) (const :tag "Only right side ecb-windows hidden" :value right-side) (const :tag "All ecb-windows hidden" :value all) (const :tag "No ecb-window hidden (ie. all displayed)" :value none)))) (defcustom ecb-hide-ecb-windows-before-hook nil "*Hook run direct before the ECB windows will be hidden. Hiding is done either by `ecb-toggle-ecb-windows' or `ecb-hide-ecb-windows'. This means that at runtime of this hook all the ECB-tree-windows of current layout are visible. IMPORTANT: Showing the hidden ECB-windows is internally done by calling `ecb-redraw-layout' and therefore also the hooks `ecb-redraw-layout-before-hook' and `ecb-redraw-layout-after-hook' are evaluated. The hook-sequence is analogous to that described in `ecb-show-ecb-windows-before-hook'." :group 'ecb-layout :type 'hook) (defcustom ecb-hide-ecb-windows-after-hook nil "*Hooks run direct after the ECB windows have been hidden. Hiding was done either by `ecb-toggle-ecb-windows' or `ecb-hide-ecb-windows'. IMPORTANT: Showing the hidden ECB-windows is internally done by calling `ecb-redraw-layout' and therefore also the hooks `ecb-redraw-layout-before-hook' and `ecb-redraw-layout-after-hook' are evaluated. The hook-sequence is analogous to that described in `ecb-show-ecb-windows-after-hook'." :group 'ecb-layout :type 'hook) (defcustom ecb-show-ecb-windows-before-hook nil "*Hooks run direct before the ECB windows will be shown. Showing is done either by `ecb-toggle-ecb-windows' or `ecb-show-ecb-windows'. This means that at runtime of this hook the ECB-windows are still hidden. IMPORTANT: Showing the hidden ECB-windows is internally done by calling `ecb-redraw-layout' and therefore also the hooks `ecb-redraw-layout-before-hook' and `ecb-redraw-layout-after-hook' are evaluated. So there is the following sequence of hooks during the process of showing the hidden ECB-windows: 1. `ecb-show-ecb-windows-before-hook' 2. `ecb-redraw-layout-before-hook' 3.