summaryrefslogtreecommitdiffstats
path: root/tde-i18n-es/docs/tdevelop
diff options
context:
space:
mode:
Diffstat (limited to 'tde-i18n-es/docs/tdevelop')
-rw-r--r--tde-i18n-es/docs/tdevelop/Makefile.am4
-rw-r--r--tde-i18n-es/docs/tdevelop/Makefile.in613
-rw-r--r--tde-i18n-es/docs/tdevelop/api/Architecture.pngbin0 -> 69751 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/api/Development.pngbin0 -> 34678 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/api/Makefile.am4
-rw-r--r--tde-i18n-es/docs/tdevelop/api/Makefile.in613
-rw-r--r--tde-i18n-es/docs/tdevelop/api/propeditor1.pngbin0 -> 6507 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/api/propeditor2.pngbin0 -> 5243 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kde_app_devel/Makefile.am4
-rw-r--r--tde-i18n-es/docs/tdevelop/kde_app_devel/Makefile.in635
-rw-r--r--tde-i18n-es/docs/tdevelop/kde_app_devel/appwizard.pngbin0 -> 62317 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kde_app_devel/index.cache.bz2bin0 -> 23507 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kde_app_devel/index.docbook1876
-rw-r--r--tde-i18n-es/docs/tdevelop/kde_app_devel/kscribblefiles.pngbin0 -> 4203 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/Makefile.am4
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/Makefile.in635
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/affine-general.pngbin0 -> 2308 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/affine-rotate.pngbin0 -> 1140 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/affine-scale.pngbin0 -> 1017 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/affine-shear.pngbin0 -> 1024 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/affine-translate.pngbin0 -> 1031 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/brushstyles.pngbin0 -> 3957 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/canvas.pngbin0 -> 24348 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/capflat.pngbin0 -> 230 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/capround.pngbin0 -> 242 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/capsquare.pngbin0 -> 148 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/index.cache.bz2bin0 -> 30698 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/index.docbook3684
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/joinbevel.pngbin0 -> 331 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/joinmiter.pngbin0 -> 356 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/joinround.pngbin0 -> 361 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/konqi-mirrored.pngbin0 -> 27355 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/konqi-normal.pngbin0 -> 27447 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/konqi-rotated.pngbin0 -> 28687 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/konqi-sheared.pngbin0 -> 25383 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/kview-menu.pngbin0 -> 3037 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/opengl.pngbin0 -> 3271 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/penstyles.pngbin0 -> 1350 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/kdearch/whatsthis.pngbin0 -> 3529 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/Makefile.am4
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/Makefile.in613
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/SF-general.pngbin0 -> 29759 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/SF-indent.pngbin0 -> 26776 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/SF-other.pngbin0 -> 20198 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/adv-build-management.docbook174
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/app-changelog.docbook85
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/app-menu.docbook72
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/app-misc-info.docbook28
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/app-uimodes-examples.docbook174
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/applicationwizard.docbook1386
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/automake-file-popup.pngbin0 -> 28848 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/automake-manager.pngbin0 -> 33176 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/automake-subproject-popup.pngbin0 -> 17172 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/automake-target-popup.pngbin0 -> 38761 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/automakemanager.pngbin0 -> 33176 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/class-browsers.docbook89
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/classview.pngbin0 -> 46463 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/commands.docbook3000
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/configure-adddialog-baselibs.pngbin0 -> 20405 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/configure-doctree-textsearch.pngbin0 -> 24056 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-chm.pngbin0 -> 50915 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-custom.pngbin0 -> 44807 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-devhelp.pngbin0 -> 52459 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-dox.pngbin0 -> 44372 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-edit.pngbin0 -> 15085 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-general.pngbin0 -> 44346 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-toc.pngbin0 -> 44404 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/configure-editor.pngbin0 -> 10252 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/configure-file-selector.pngbin0 -> 38611 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/configure-general.pngbin0 -> 33519 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/configure-select.pngbin0 -> 13533 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/configure-snippets.pngbin0 -> 9454 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/create-new-project-cvs.pngbin0 -> 32604 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/createnewproject.pngbin0 -> 87804 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/credits.docbook40
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/cvs.docbook131
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/doctreeview.pngbin0 -> 51425 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/documentation.docbook73
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/documents-contents.pngbin0 -> 28756 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/editing.docbook608
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/empty-ide.pngbin0 -> 40106 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/file-browsers.docbook67
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/file-selector.pngbin0 -> 26354 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/filetree.pngbin0 -> 29588 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/folded-tabs.pngbin0 -> 7725 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/getting-started.docbook695
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/nutshell.docbook370
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/project-advanced.docbook111
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/project-management.docbook1259
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/select-user-interface-0.pngbin0 -> 33963 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/select-user-interface.pngbin0 -> 75499 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/survey-manual.docbook329
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-ideal-mode-0.pngbin0 -> 86950 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-ideal-mode.pngbin0 -> 134005 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-install.docbook1290
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-mdi-mode.pngbin0 -> 59781 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-scripting.docbook74
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-survey.docbook778
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-tabbed-mode.pngbin0 -> 59065 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-toplevel-mode.pngbin0 -> 94356 bytes
-rw-r--r--tde-i18n-es/docs/tdevelop/tdevelop/unixdev.docbook643
-rw-r--r--tde-i18n-es/docs/tdevelop/tip.database30
102 files changed, 20195 insertions, 0 deletions
diff --git a/tde-i18n-es/docs/tdevelop/Makefile.am b/tde-i18n-es/docs/tdevelop/Makefile.am
new file mode 100644
index 00000000000..2d733d1b104
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/Makefile.am
@@ -0,0 +1,4 @@
+KDE_LANG = es
+SUBDIRS = $(AUTODIRS)
+KDE_DOCS = AUTO
+KDE_MANS = AUTO
diff --git a/tde-i18n-es/docs/tdevelop/Makefile.in b/tde-i18n-es/docs/tdevelop/Makefile.in
new file mode 100644
index 00000000000..9f9cd9b6b6b
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/Makefile.in
@@ -0,0 +1,613 @@
+# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# KDE tags expanded automatically by am_edit - $Revision: 483858 $
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+subdir = docs/tdevelop
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+#>- html-recursive info-recursive install-data-recursive \
+#>- install-dvi-recursive install-exec-recursive \
+#>- install-html-recursive install-info-recursive \
+#>- install-pdf-recursive install-ps-recursive install-recursive \
+#>- installcheck-recursive installdirs-recursive pdf-recursive \
+#>- ps-recursive uninstall-recursive
+#>+ 7
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+#>+ 1
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+ARTSCCONFIG = @ARTSCCONFIG@
+AUTOCONF = @AUTOCONF@
+AUTODIRS = @AUTODIRS@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CONF_FILES = @CONF_FILES@
+CYGPATH_W = @CYGPATH_W@
+DCOPIDL = @DCOPIDL@
+DCOPIDL2CPP = @DCOPIDL2CPP@
+DCOPIDLNG = @DCOPIDLNG@
+DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
+DEFS = @DEFS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+GMSGFMT = @GMSGFMT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@
+KCONFIG_COMPILER = @KCONFIG_COMPILER@
+KDECONFIG = @KDECONFIG@
+KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@
+KDE_RPATH = @KDE_RPATH@
+KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAKEKDEWIDGETS = @MAKEKDEWIDGETS@
+MCOPIDL = @MCOPIDL@
+MEINPROC = @MEINPROC@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TOPSUBDIRS = @TOPSUBDIRS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XMLLINT = @XMLLINT@
+X_RPATH = @X_RPATH@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+#>- bindir = @bindir@
+#>+ 2
+DEPDIR = .deps
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kde_appsdir = @kde_appsdir@
+kde_bindir = @kde_bindir@
+kde_confdir = @kde_confdir@
+kde_datadir = @kde_datadir@
+kde_htmldir = @kde_htmldir@
+kde_icondir = @kde_icondir@
+kde_kcfgdir = @kde_kcfgdir@
+kde_libs_htmldir = @kde_libs_htmldir@
+kde_libs_prefix = @kde_libs_prefix@
+kde_locale = @kde_locale@
+kde_mimedir = @kde_mimedir@
+kde_moduledir = @kde_moduledir@
+kde_servicesdir = @kde_servicesdir@
+kde_servicetypesdir = @kde_servicetypesdir@
+kde_sounddir = @kde_sounddir@
+kde_styledir = @kde_styledir@
+kde_templatesdir = @kde_templatesdir@
+kde_wallpaperdir = @kde_wallpaperdir@
+kde_widgetdir = @kde_widgetdir@
+tdeinitdir = @tdeinitdir@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+xdg_appsdir = @xdg_appsdir@
+xdg_directorydir = @xdg_directorydir@
+xdg_menudir = @xdg_menudir@
+KDE_LANG = es
+#>- SUBDIRS = $(AUTODIRS)
+#>+ 1
+SUBDIRS =. api kde_app_devel tdevelop kdearch
+KDE_DOCS = AUTO
+KDE_MANS = AUTO
+#>- all: all-recursive
+#>+ 1
+all: docs-am all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+#>- @for dep in $?; do \
+#>- case '$(am__configure_deps)' in \
+#>- *$$dep*) \
+#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+#>- && exit 0; \
+#>- exit 1;; \
+#>- esac; \
+#>- done; \
+#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/Makefile'; \
+#>- cd $(top_srcdir) && \
+#>- $(AUTOMAKE) --gnu docs/tdevelop/Makefile
+#>+ 12
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu docs/tdevelop/Makefile
+ cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdevelop/Makefile.in
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+#>- distdir: $(DISTFILES)
+#>+ 1
+distdir: distdir-nls $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+#>- uninstall: uninstall-recursive
+#>+ 1
+uninstall: uninstall-nls uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+#>- clean: clean-recursive
+#>+ 1
+clean: kde-rpo-clean clean-recursive
+
+#>- clean-am: clean-generic mostlyclean-am
+#>+ 1
+clean-am: clean-bcheck clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+#>- install-data-am:
+#>+ 1
+install-data-am: install-nls
+
+install-dvi: install-dvi-recursive
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
+ install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic ctags \
+ ctags-recursive distclean distclean-generic distclean-tags \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
+ tags-recursive uninstall uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
+
+#>+ 2
+KDE_DIST=Makefile.in tip.database Makefile.am
+
+#>+ 2
+docs-am: tip.database
+
+#>+ 13
+install-nls:
+ $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/tdevelop
+ @for base in tip.database ; do \
+ echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/tdevelop/$$base ;\
+ $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/tdevelop/$$base ;\
+ done
+
+uninstall-nls:
+ for base in tip.database ; do \
+ rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/tdevelop/$$base ;\
+ done
+
+
+#>+ 5
+distdir-nls:
+ for file in tip.database ; do \
+ cp $(srcdir)/$$file $(distdir); \
+ done
+
+#>+ 15
+force-reedit:
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu docs/tdevelop/Makefile
+ cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdevelop/Makefile.in
+
+
+#>+ 21
+clean-bcheck:
+ rm -f *.bchecktest.cc *.bchecktest.cc.class a.out
+
+bcheck: bcheck-recursive
+
+bcheck-am:
+ @for i in ; do \
+ if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \
+ echo "int main() {return 0;}" > $$i.bchecktest.cc ; \
+ echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \
+ echo "$$i"; \
+ if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \
+ rm -f $$i.bchecktest.cc; exit 1; \
+ fi ; \
+ echo "" >> $$i.bchecktest.cc.class; \
+ perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \
+ rm -f a.out; \
+ fi ; \
+ done
+
+
+#>+ 3
+final:
+ $(MAKE) all-am
+
+#>+ 3
+final-install:
+ $(MAKE) install-am
+
+#>+ 3
+no-final:
+ $(MAKE) all-am
+
+#>+ 3
+no-final-install:
+ $(MAKE) install-am
+
+#>+ 3
+kde-rpo-clean:
+ -rm -f *.rpo
+
+#>+ 3
+nmcheck:
+nmcheck-am: nmcheck
diff --git a/tde-i18n-es/docs/tdevelop/api/Architecture.png b/tde-i18n-es/docs/tdevelop/api/Architecture.png
new file mode 100644
index 00000000000..1b73523b010
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/api/Architecture.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/api/Development.png b/tde-i18n-es/docs/tdevelop/api/Development.png
new file mode 100644
index 00000000000..67ddd3baa81
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/api/Development.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/api/Makefile.am b/tde-i18n-es/docs/tdevelop/api/Makefile.am
new file mode 100644
index 00000000000..2d733d1b104
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/api/Makefile.am
@@ -0,0 +1,4 @@
+KDE_LANG = es
+SUBDIRS = $(AUTODIRS)
+KDE_DOCS = AUTO
+KDE_MANS = AUTO
diff --git a/tde-i18n-es/docs/tdevelop/api/Makefile.in b/tde-i18n-es/docs/tdevelop/api/Makefile.in
new file mode 100644
index 00000000000..ecd92b8067f
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/api/Makefile.in
@@ -0,0 +1,613 @@
+# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# KDE tags expanded automatically by am_edit - $Revision: 483858 $
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+subdir = docs/tdevelop/api
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+#>- html-recursive info-recursive install-data-recursive \
+#>- install-dvi-recursive install-exec-recursive \
+#>- install-html-recursive install-info-recursive \
+#>- install-pdf-recursive install-ps-recursive install-recursive \
+#>- installcheck-recursive installdirs-recursive pdf-recursive \
+#>- ps-recursive uninstall-recursive
+#>+ 7
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+#>+ 1
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+ARTSCCONFIG = @ARTSCCONFIG@
+AUTOCONF = @AUTOCONF@
+AUTODIRS = @AUTODIRS@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CONF_FILES = @CONF_FILES@
+CYGPATH_W = @CYGPATH_W@
+DCOPIDL = @DCOPIDL@
+DCOPIDL2CPP = @DCOPIDL2CPP@
+DCOPIDLNG = @DCOPIDLNG@
+DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
+DEFS = @DEFS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+GMSGFMT = @GMSGFMT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@
+KCONFIG_COMPILER = @KCONFIG_COMPILER@
+KDECONFIG = @KDECONFIG@
+KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@
+KDE_RPATH = @KDE_RPATH@
+KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAKEKDEWIDGETS = @MAKEKDEWIDGETS@
+MCOPIDL = @MCOPIDL@
+MEINPROC = @MEINPROC@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TOPSUBDIRS = @TOPSUBDIRS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XMLLINT = @XMLLINT@
+X_RPATH = @X_RPATH@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+#>- bindir = @bindir@
+#>+ 2
+DEPDIR = .deps
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kde_appsdir = @kde_appsdir@
+kde_bindir = @kde_bindir@
+kde_confdir = @kde_confdir@
+kde_datadir = @kde_datadir@
+kde_htmldir = @kde_htmldir@
+kde_icondir = @kde_icondir@
+kde_kcfgdir = @kde_kcfgdir@
+kde_libs_htmldir = @kde_libs_htmldir@
+kde_libs_prefix = @kde_libs_prefix@
+kde_locale = @kde_locale@
+kde_mimedir = @kde_mimedir@
+kde_moduledir = @kde_moduledir@
+kde_servicesdir = @kde_servicesdir@
+kde_servicetypesdir = @kde_servicetypesdir@
+kde_sounddir = @kde_sounddir@
+kde_styledir = @kde_styledir@
+kde_templatesdir = @kde_templatesdir@
+kde_wallpaperdir = @kde_wallpaperdir@
+kde_widgetdir = @kde_widgetdir@
+tdeinitdir = @tdeinitdir@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+xdg_appsdir = @xdg_appsdir@
+xdg_directorydir = @xdg_directorydir@
+xdg_menudir = @xdg_menudir@
+KDE_LANG = es
+#>- SUBDIRS = $(AUTODIRS)
+#>+ 1
+SUBDIRS =.
+KDE_DOCS = AUTO
+KDE_MANS = AUTO
+#>- all: all-recursive
+#>+ 1
+all: docs-am all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+#>- @for dep in $?; do \
+#>- case '$(am__configure_deps)' in \
+#>- *$$dep*) \
+#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+#>- && exit 0; \
+#>- exit 1;; \
+#>- esac; \
+#>- done; \
+#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/api/Makefile'; \
+#>- cd $(top_srcdir) && \
+#>- $(AUTOMAKE) --gnu docs/tdevelop/api/Makefile
+#>+ 12
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/api/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu docs/tdevelop/api/Makefile
+ cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdevelop/api/Makefile.in
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+#>- distdir: $(DISTFILES)
+#>+ 1
+distdir: distdir-nls $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+#>- uninstall: uninstall-recursive
+#>+ 1
+uninstall: uninstall-nls uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+#>- clean: clean-recursive
+#>+ 1
+clean: kde-rpo-clean clean-recursive
+
+#>- clean-am: clean-generic mostlyclean-am
+#>+ 1
+clean-am: clean-bcheck clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+#>- install-data-am:
+#>+ 1
+install-data-am: install-nls
+
+install-dvi: install-dvi-recursive
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
+ install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic ctags \
+ ctags-recursive distclean distclean-generic distclean-tags \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
+ tags-recursive uninstall uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
+
+#>+ 2
+KDE_DIST=Architecture.png propeditor1.png Makefile.in Makefile.am Development.png propeditor2.png
+
+#>+ 2
+docs-am: propeditor2.png Development.png propeditor1.png Architecture.png
+
+#>+ 13
+install-nls:
+ $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/api
+ @for base in propeditor2.png Development.png propeditor1.png Architecture.png ; do \
+ echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/api/$$base ;\
+ $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/api/$$base ;\
+ done
+
+uninstall-nls:
+ for base in propeditor2.png Development.png propeditor1.png Architecture.png ; do \
+ rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/api/$$base ;\
+ done
+
+
+#>+ 5
+distdir-nls:
+ for file in propeditor2.png Development.png propeditor1.png Architecture.png ; do \
+ cp $(srcdir)/$$file $(distdir); \
+ done
+
+#>+ 15
+force-reedit:
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/api/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu docs/tdevelop/api/Makefile
+ cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdevelop/api/Makefile.in
+
+
+#>+ 21
+clean-bcheck:
+ rm -f *.bchecktest.cc *.bchecktest.cc.class a.out
+
+bcheck: bcheck-recursive
+
+bcheck-am:
+ @for i in ; do \
+ if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \
+ echo "int main() {return 0;}" > $$i.bchecktest.cc ; \
+ echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \
+ echo "$$i"; \
+ if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \
+ rm -f $$i.bchecktest.cc; exit 1; \
+ fi ; \
+ echo "" >> $$i.bchecktest.cc.class; \
+ perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \
+ rm -f a.out; \
+ fi ; \
+ done
+
+
+#>+ 3
+final:
+ $(MAKE) all-am
+
+#>+ 3
+final-install:
+ $(MAKE) install-am
+
+#>+ 3
+no-final:
+ $(MAKE) all-am
+
+#>+ 3
+no-final-install:
+ $(MAKE) install-am
+
+#>+ 3
+kde-rpo-clean:
+ -rm -f *.rpo
+
+#>+ 3
+nmcheck:
+nmcheck-am: nmcheck
diff --git a/tde-i18n-es/docs/tdevelop/api/propeditor1.png b/tde-i18n-es/docs/tdevelop/api/propeditor1.png
new file mode 100644
index 00000000000..b67e0d3b9b5
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/api/propeditor1.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/api/propeditor2.png b/tde-i18n-es/docs/tdevelop/api/propeditor2.png
new file mode 100644
index 00000000000..0b5393fdd3d
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/api/propeditor2.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kde_app_devel/Makefile.am b/tde-i18n-es/docs/tdevelop/kde_app_devel/Makefile.am
new file mode 100644
index 00000000000..2d733d1b104
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kde_app_devel/Makefile.am
@@ -0,0 +1,4 @@
+KDE_LANG = es
+SUBDIRS = $(AUTODIRS)
+KDE_DOCS = AUTO
+KDE_MANS = AUTO
diff --git a/tde-i18n-es/docs/tdevelop/kde_app_devel/Makefile.in b/tde-i18n-es/docs/tdevelop/kde_app_devel/Makefile.in
new file mode 100644
index 00000000000..09c0c22f61d
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kde_app_devel/Makefile.in
@@ -0,0 +1,635 @@
+# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# KDE tags expanded automatically by am_edit - $Revision: 483858 $
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+subdir = docs/tdevelop/kde_app_devel
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+#>- html-recursive info-recursive install-data-recursive \
+#>- install-dvi-recursive install-exec-recursive \
+#>- install-html-recursive install-info-recursive \
+#>- install-pdf-recursive install-ps-recursive install-recursive \
+#>- installcheck-recursive installdirs-recursive pdf-recursive \
+#>- ps-recursive uninstall-recursive
+#>+ 7
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+#>+ 1
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+ARTSCCONFIG = @ARTSCCONFIG@
+AUTOCONF = @AUTOCONF@
+AUTODIRS = @AUTODIRS@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CONF_FILES = @CONF_FILES@
+CYGPATH_W = @CYGPATH_W@
+DCOPIDL = @DCOPIDL@
+DCOPIDL2CPP = @DCOPIDL2CPP@
+DCOPIDLNG = @DCOPIDLNG@
+DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
+DEFS = @DEFS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+GMSGFMT = @GMSGFMT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@
+KCONFIG_COMPILER = @KCONFIG_COMPILER@
+KDECONFIG = @KDECONFIG@
+KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@
+KDE_RPATH = @KDE_RPATH@
+KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAKEKDEWIDGETS = @MAKEKDEWIDGETS@
+MCOPIDL = @MCOPIDL@
+MEINPROC = @MEINPROC@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TOPSUBDIRS = @TOPSUBDIRS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XMLLINT = @XMLLINT@
+X_RPATH = @X_RPATH@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+#>- bindir = @bindir@
+#>+ 2
+DEPDIR = .deps
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kde_appsdir = @kde_appsdir@
+kde_bindir = @kde_bindir@
+kde_confdir = @kde_confdir@
+kde_datadir = @kde_datadir@
+kde_htmldir = @kde_htmldir@
+kde_icondir = @kde_icondir@
+kde_kcfgdir = @kde_kcfgdir@
+kde_libs_htmldir = @kde_libs_htmldir@
+kde_libs_prefix = @kde_libs_prefix@
+kde_locale = @kde_locale@
+kde_mimedir = @kde_mimedir@
+kde_moduledir = @kde_moduledir@
+kde_servicesdir = @kde_servicesdir@
+kde_servicetypesdir = @kde_servicetypesdir@
+kde_sounddir = @kde_sounddir@
+kde_styledir = @kde_styledir@
+kde_templatesdir = @kde_templatesdir@
+kde_wallpaperdir = @kde_wallpaperdir@
+kde_widgetdir = @kde_widgetdir@
+tdeinitdir = @tdeinitdir@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+xdg_appsdir = @xdg_appsdir@
+xdg_directorydir = @xdg_directorydir@
+xdg_menudir = @xdg_menudir@
+KDE_LANG = es
+#>- SUBDIRS = $(AUTODIRS)
+#>+ 1
+SUBDIRS =.
+KDE_DOCS = AUTO
+KDE_MANS = AUTO
+#>- all: all-recursive
+#>+ 1
+all: docs-am all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+#>- @for dep in $?; do \
+#>- case '$(am__configure_deps)' in \
+#>- *$$dep*) \
+#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+#>- && exit 0; \
+#>- exit 1;; \
+#>- esac; \
+#>- done; \
+#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/kde_app_devel/Makefile'; \
+#>- cd $(top_srcdir) && \
+#>- $(AUTOMAKE) --gnu docs/tdevelop/kde_app_devel/Makefile
+#>+ 12
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/kde_app_devel/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu docs/tdevelop/kde_app_devel/Makefile
+ cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdevelop/kde_app_devel/Makefile.in
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+#>- distdir: $(DISTFILES)
+#>+ 1
+distdir: distdir-nls $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+#>- uninstall: uninstall-recursive
+#>+ 1
+uninstall: uninstall-docs uninstall-nls uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+#>- clean: clean-recursive
+#>+ 1
+clean: kde-rpo-clean clean-recursive
+
+#>- clean-am: clean-generic mostlyclean-am
+#>+ 1
+clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+#>- install-data-am:
+#>+ 1
+install-data-am: install-docs install-nls
+
+install-dvi: install-dvi-recursive
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
+ install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic ctags \
+ ctags-recursive distclean distclean-generic distclean-tags \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
+ tags-recursive uninstall uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
+
+#>+ 2
+KDE_DIST=appwizard.png index.docbook index.cache.bz2 kscribblefiles.png Makefile.in Makefile.am
+
+#>+ 24
+index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) appwizard.png index.docbook kscribblefiles.png
+ @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi
+
+docs-am: index.cache.bz2
+
+install-docs: docs-am install-nls
+ $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kde_app_devel
+ @if test -f index.cache.bz2; then \
+ echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kde_app_devel/; \
+ $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kde_app_devel/; \
+ elif test -f $(srcdir)/index.cache.bz2; then \
+ echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kde_app_devel/; \
+ $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kde_app_devel/; \
+ fi
+ -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kde_app_devel/common
+ $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kde_app_devel/common
+
+uninstall-docs:
+ -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kde_app_devel
+
+clean-docs:
+ -rm -f index.cache.bz2
+
+
+#>+ 13
+install-nls:
+ $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kde_app_devel
+ @for base in appwizard.png index.docbook kscribblefiles.png ; do \
+ echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kde_app_devel/$$base ;\
+ $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kde_app_devel/$$base ;\
+ done
+
+uninstall-nls:
+ for base in appwizard.png index.docbook kscribblefiles.png ; do \
+ rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kde_app_devel/$$base ;\
+ done
+
+
+#>+ 5
+distdir-nls:
+ for file in appwizard.png index.docbook kscribblefiles.png ; do \
+ cp $(srcdir)/$$file $(distdir); \
+ done
+
+#>+ 15
+force-reedit:
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/kde_app_devel/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu docs/tdevelop/kde_app_devel/Makefile
+ cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdevelop/kde_app_devel/Makefile.in
+
+
+#>+ 21
+clean-bcheck:
+ rm -f *.bchecktest.cc *.bchecktest.cc.class a.out
+
+bcheck: bcheck-recursive
+
+bcheck-am:
+ @for i in ; do \
+ if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \
+ echo "int main() {return 0;}" > $$i.bchecktest.cc ; \
+ echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \
+ echo "$$i"; \
+ if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \
+ rm -f $$i.bchecktest.cc; exit 1; \
+ fi ; \
+ echo "" >> $$i.bchecktest.cc.class; \
+ perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \
+ rm -f a.out; \
+ fi ; \
+ done
+
+
+#>+ 3
+final:
+ $(MAKE) all-am
+
+#>+ 3
+final-install:
+ $(MAKE) install-am
+
+#>+ 3
+no-final:
+ $(MAKE) all-am
+
+#>+ 3
+no-final-install:
+ $(MAKE) install-am
+
+#>+ 3
+kde-rpo-clean:
+ -rm -f *.rpo
+
+#>+ 3
+nmcheck:
+nmcheck-am: nmcheck
diff --git a/tde-i18n-es/docs/tdevelop/kde_app_devel/appwizard.png b/tde-i18n-es/docs/tdevelop/kde_app_devel/appwizard.png
new file mode 100644
index 00000000000..2384cc5c2f3
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kde_app_devel/appwizard.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kde_app_devel/index.cache.bz2 b/tde-i18n-es/docs/tdevelop/kde_app_devel/index.cache.bz2
new file mode 100644
index 00000000000..29eddbc1da9
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kde_app_devel/index.cache.bz2
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kde_app_devel/index.docbook b/tde-i18n-es/docs/tdevelop/kde_app_devel/index.docbook
new file mode 100644
index 00000000000..c79b3115279
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kde_app_devel/index.docbook
@@ -0,0 +1,1876 @@
+<?xml version="1.0" ?>
+<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
+ <!ENTITY tdevelop "<application
+>KDevelop</application
+>">
+ <!ENTITY kappname "&tdevelop;">
+ <!ENTITY % addindex "INCLUDE">
+ <!ENTITY % Spanish "INCLUDE"
+> <!-- change language only here -->
+]>
+
+<book lang="&language;">
+
+<bookinfo>
+<title
+>El manual de programación de &tdevelop;</title>
+
+<date
+>2002-12-05</date>
+<releaseinfo
+>2.0</releaseinfo>
+
+<authorgroup>
+<author
+><firstname
+>Ralf</firstname
+> <surname
+>Nolden</surname
+> <affiliation
+><address
+><email
+>Ralf.Nolden@post.rwth-aachen.de</email
+></address
+></affiliation>
+</author>
+<author
+><firstname
+>Caleb</firstname
+> <surname
+>Tennis</surname
+> <affiliation
+><address
+><email
+>caleb@aei-tech.com</email
+></address
+></affiliation>
+</author>
+</authorgroup>
+
+<copyright>
+<year
+>1999</year>
+<holder
+>Ralf Nolden</holder>
+</copyright>
+<copyright>
+<year
+>2002</year>
+<holder
+>Caleb Tennis</holder>
+</copyright>
+
+<!-- ROLES_OF_TRANSLATORS -->
+
+<legalnotice
+>&FDLNotice;</legalnotice>
+
+<abstract>
+<para
+>La guía de usuario de diseño de aplicaciones C++ para el entorno de escritorio K (KDE) con el IDE &tdevelop;</para>
+</abstract>
+
+<keywordset>
+<keyword
+>KDE</keyword>
+<keyword
+>KDevelop</keyword>
+<keyword
+>IDE</keyword>
+<keyword
+>desarrollo</keyword>
+<keyword
+>programación</keyword>
+</keywordset>
+
+</bookinfo>
+
+<chapter id="chapter1">
+<title
+>Introducción</title>
+<para
+>A medida que los sistemas Unix se van haciendo más populares (incluso para los principiantes que trabajan con ordenadores) debido a sus ventajas relacionadas con la estabilidad y con la funcionalidad, muchas personas se quejan de que las aplicaciones diseñadas para ellos no poseen un aspecto consistente, y que algunas se comportan de un modo diferente al de otras. Con KDE, los desarrolladores disponen de una forma casi perfecta de crear aplicaciones de primera clase para que los sistemas de escritorio Unix consigan una amplia comunidad de usuarios por la mera razón de la calidad que sus aplicaciones pueden ofrecer. De este modo, KDE se va haciendo cada vez más popular como base de diseño de programación, y los desarrolladores pueden aprovechar las posibilidades que este sistema ofrece. </para>
+
+<sect1 id="c1s1">
+<title
+>Qué debería saber previamente</title>
+<para
+>Para aprovechar al máximo este manual de programación, se asume que usted posee conocimientos del lenguaje de programación C++. En caso contrario, debería familiarizarse con él en primer lugar. Puede obtener información sobre C++ a través de varias fuentes, tanto impresas, en sus librerías locales, como en forma de manuales, que puede encontrar en Internet. No se requiere tener conocimientos sobre el diseño de interfaces gráficas, ya que este manual trata de cubrir el diseño de aplicaciones para KDE, que también incluye una introducción a las bibliotecas Qt y KDE, y el diseño de interfaces gráficas. También debería de sentirse cómodo con &tdevelop;, para lo que puede leer el «Manual de usuario de &tdevelop;», que contiene una revisión descriptiva de las funcionalidades proporcionadas por el IDE. </para>
+</sect1>
+
+<sect1 id="c1s2">
+<title
+>Sobre este manual</title>
+<para
+>Este manual ha sido escrito para proporcionar a los desarrolladores una introducción al desarrollo de aplicaciones de KDE usando el entorno de desarrollo integrado KDevelop. </para>
+<para
+>Por lo tanto, los siguientes capítulos le proporcionan una introducción sobre cómo crear proyectos, explican el código fuente generado y muestran cómo extender dicho código para diversos temas, como barras de herramientas, menús y áreas de vistas. </para>
+<para
+>Luego se discute en detalle el editor de diálogos, explicando cómo se crean los widgets y cubriendo la modificación de sus propiedades. </para>
+<para
+>Finalmente, aprenderá algunas cosas que completarán su conocimiento sobre el diseño de proyectos y que le ayudarán a trabajar en cuestiones adicionales a la programación, como añadir documentación de API y ampliar los manuales en línea. </para>
+<sect2 id="c1s2s1">
+<title
+>En el siguiente capítulo</title>
+<para
+>Echaremos un vistazo a las bibliotecas Qt y KDE, mostrando sus conceptos básicos y por qué las cosas son como son. También discutiremos cómo crear las aplicaciones que proporciona el tutorial de la biblioteca Qt usando &tdevelop;, de modo que los principiantes puedan comprobar el resultado de sus primeros pasos, y también aprenderemos cómo hacer uso de algunas de las mejores características de &tdevelop;. </para>
+</sect2>
+
+<sect2 id="c1s2s2">
+<title
+>En los capítulos siguientes</title>
+<para
+>Aprenderá cómo: <itemizedlist>
+<listitem
+><para
+>Crear una aplicación con el KAppWizard</para
+></listitem>
+<listitem
+><para
+>Qué proporciona el esqueleto de un proyecto</para
+></listitem>
+<listitem
+><para
+>Qué significa el código generado</para
+></listitem>
+<listitem
+><para
+>Cómo crear sus propias vistas</para
+></listitem>
+<listitem
+><para
+>Cómo extender la funcionalidad de su aplicación mediante diálogos, barras de menú y barras de herramientas</para
+></listitem>
+<listitem
+><para
+>Cómo hacer que su aplicación sea amigable proporcionando funciones de ayuda</para
+></listitem>
+<listitem
+><para
+>Cómo escribir documentación en línea</para
+></listitem>
+</itemizedlist>
+</para>
+</sect2>
+
+</sect1>
+
+<sect1 id="c1s3">
+<title
+>Información adicional</title>
+<para
+>Puede obtener información adicional sobre la programación Qt/KDE a través de diferentes fuentes: <itemizedlist>
+<listitem
+><para
+>«Programación con Qt», por Matthias Kalle Dalheimer</para
+></listitem>
+<listitem
+><para
+><ulink url="www.tdevelop.org"
+>El manual de usuario de KDevelop, proporcionado con el IDE KDevelop</ulink
+></para
+></listitem>
+<listitem
+><para
+><ulink url="doc.trolltech.com"
+>La referencia en línea de la biblioteca Qt</ulink
+></para
+></listitem>
+<listitem
+><para
+><ulink url="developer.kde.org"
+>El sitio web de «KDE Developer»</ulink
+></para
+></listitem>
+</itemizedlist>
+</para>
+<para
+>Adicionalmente, puede buscar ayuda suscribiéndose a múltiples listas de correo, cuyas direcciones están disponibles en las páginas web mencionadas, y en los grupos de noticias de Usenet dedicados a los usuarios de KDE y de los sistemas Unix, y también al lenguaje de programación C++. </para>
+<para
+>Para obtener ayuda sobre el entorno integrado de KDevelop, debe enviar sus peticiones a nuestra lista de correo en la dirección <email
+>tdevelop@tdevelop.org</email
+>. Recuerde que el equipo de KDevelop se dedica a proporcionarle los medios para que pueda programar aplicaciones, por lo que no debería entender que se dedica a dar soporte técnico en el caso de que las aplicaciones que esté desarrollando no funcionen debido a errores de implementación o a una mala configuración de su sistema operativo. Con esto queremos animar a que los usuarios aprovechen las listas de correo en el caso de que tengan problemas con el uso del propio IDE, y también para informar de errores y hacer sugerencias para mejorar la funcionalidad de este entorno de desarrollo. </para>
+</sect1>
+
+</chapter>
+
+<chapter id="chapter2">
+<title
+>Las bibliotecas KDE y Qt</title>
+<para
+>La compañía noruega TrollTech (<ulink url="http://www.trolltech.com"
+>http://www.trolltech.com</ulink
+>) proporciona lo que se conoce como un conjunto de herramientas GUI, llamado Qt. GUI significa «interfaz gráfica de usuario», por lo que las aplicaciones basadas en Qt utilizan botones, ventanas, etc., que permiten la interacción con el usuario visualizando las funciones que proporciona una aplicación. Estos conjuntos de herramientas son necesarios para desarrollar aplicaciones gráficas que se ejecuten sobre la interfaz X-Window de los sistemas Unix, ya que X no contiene por sí mismo ninguna interfaz de usuario predefinida. Aunque también dispone de otros conjuntos de herramientas para crear interfaces de usuario, Qt ofrece diversas ventajas técnicas que hacen que el diseño de aplicaciones sea muy fácil. Adicionalmente, las herramientas de Qt también están disponibles para los sistemas de Microsoft Windows, lo que permite a los desarrolladores ofrecer sus aplicaciones para ambas plataformas. </para>
+<para
+>El equipo de KDE (<ulink url="http://www.kde.org"
+>http://www.kde.org</ulink
+>) se ha unido al esfuerzo de hacer que el uso de los sistemas Unix sea más amistoso, y ha decidido usar el conjunto de herramientas de Qt para el desarrollo de un gestor de ventanas sobre X-Window, además de la gran variedad de herramientas que se incluyen en los paquetes de distribución de KDE. El «entorno de escritorio K» contiene, pues, el gestor de ventanas «kwm», el gestor de archivos «kfm» y el panel de ejecución «kpanel» como componentes principales, además de gran cantidad de utilidades y aplicaciones de primera clase. Cuando apareció KDE, muchos desarrolladores se sintieron atraídos por el nuevo entorno y por lo que les ofrecía. Las bibliotecas de KDE proporcionan métodos esenciales y clases que hacen que todas las aplicaciones diseñadas con ellas se comporten de un modo similar y consistente, de modo que el usuario tenga la gran ventaja de tener que familiarizarse solo con el uso de una aplicación, no con el manejo de diálogos o de botones. Además, los programas de KDE se integran en el escritorio y son capaces de interactuar con el gestor de archivos mediante el mecanismo de «arrastrar y soltar», proporcionar gestión de sesiones y mucho más, si se usan todas las características ofrecidas por las bibliotecas de KDE. Tanto las herramientas de Qt como las bibliotecas de KDE están implementadas usando el lenguaje de programación C++, por lo que las aplicaciones que las usan también están escritas en C++. En el capítulo siguiente daremos un rápido repaso a estas bibliotecas para comprobar lo que proporcionan y tener una idea general sobre cómo crear aplicaciones Qt y KDE. </para>
+<para
+>Tanto la biblioteca del juego de herramientas Qt como la de KDE están construidas en el lenguaje de programación C++, por lo que las aplicaciones que las usan también están escritas principalmente en C++. En el siguiente capítulo haremos un corto viaje a través de estas bibliotecas para ver qué proporcionan y cómo se crean las aplicaciones de Qt y KDE, en general. </para>
+
+<sect1 id="c2s1">
+<title
+>El juego de herramientas gráficas Qt</title>
+<para
+>Como se ha dicho, la biblioteca Qt es un juego de herramientas que ofrece elementos gráficos que se usan para crear aplicaciones gráficas que son necesarias en la programación X-Window. Adicionalmente, este juego de herramientas ofrece: <itemizedlist>
+<listitem
+><para
+>Un completo juego de clases y métodos listos para usar incluso para cuestiones de programación no gráfica</para
+></listitem>
+<listitem
+><para
+>Una buena solución en materia de interacción con el usuario mediante el uso de métodos virtuales y el mecanismo señal/contenedor</para
+></listitem>
+<listitem
+><para
+>Un juego de elementos gráficos predefinidos, llamados «widgets», que pueden ser fácilmente usados para crear los elementos visibles</para
+></listitem>
+<listitem
+><para
+>Diálogos adicionales completamente predefinidos que son usados a menudo en las aplicaciones, como los diálogos de progreso y de archivos</para
+></listitem>
+</itemizedlist>
+</para>
+<para
+>Por ello, el conocimiento de las clases Qt es esencial, incluso si solo va a programar aplicaciones KDE. Para comprender el concepto básico de cómo se construyen y compilan las aplicaciones gráficas, echaremos un vistazo a un programa de ejemplo que solo usa Qt, y que más adelante convertiremos en un programa de KDE. </para>
+
+<sect2 id="c2s1s1">
+<title
+>La primera aplicación Qt</title>
+<para
+>Como era de esperar, los programas en C++ tienen que contener una función <function
+>main()</function
+>, que constituye el punto de inicio para la ejecución de la aplicación. Como queremos que se muestren en forma de ventanas gráficas y ofrezcan interacción, tendremos que saber primero cómo se muestran al usuario. Como ejemplo, consultaremos el primer manual que se incluye en la documentación de referencia en línea de Qt, y explicaremos los pasos básicos de la ejecución, además de por qué y cómo aparece la ventana de la aplicación. <programlisting
+>#include &lt;qapplication.h>
+#include &lt;qpushbutton.h>
+
+int main( int argc, char **argv )
+{
+QApplication a( argc, argv );
+
+QPushButton hello( "¡Hola mundo!", 0 );
+hello.resize( 100, 30 );
+
+a.setMainWidget( &amp;hello );
+hello.show();
+return a.exec();
+}
+</programlisting>
+</para>
+<para
+>Lo único que hace esta aplicación es dibujar una ventana que contiene un botón con el texto «Hola mundo». Como para todas las aplicaciones basadas en Qt, en primer lugar tiene que crear una instancia de la clase <classname
+>QApplication</classname
+>, representada por la variable «a». </para>
+<para
+>A continuación, el programa crea una instancia de la clase <classname
+>QPushButton</classname
+> llamada «hello», que será el botón. El constructor de «hello» tiene como parámetro una cadena de texto, que es el texto del widget que será visible como etiqueta del botón. </para>
+<para
+>Luego, el botón «hello» llama al método <methodname
+>resize()</methodname
+>, que cambia el tamaño predeterminado que tiene el widget (que es, en este caso, <classname
+>QPushButton</classname
+>) cuando es creado a 100 píxels de ancho y 30 de alto. Finalmente, «a» llama al método <methodname
+>setMainWidget()</methodname
+>, y «hello» llama al método <methodname
+>show()</methodname
+>. La QApplication se ejecuta finalmente mediante <methodname
+>a.exec()</methodname
+>, entra en el bucle de eventos principal y espera hasta que deba devolver un valor entero al sistema operativo anfitrión para indicarle que la aplicación ha terminado. </para>
+</sect2>
+
+<sect2 id="c2s1s2">
+<title
+>La documentación de referencia de Qt</title>
+<para
+>Ahora, echemos un rápido vistazo a la documentación de referencia de la biblioteca Qt. Para ello, inicie &tdevelop; y seleccione «Qt» en el árbol de la pestaña de documentación. Se abrirá el navegador de la documentación y le mostrará la página inicial de la referencia de Qt. Este será el lugar principal donde obtener información sobre Qt, sus clases y las funciones que proporciona. Además, el programa anterior es el primero que se incluye en la sección de manuales. Para acceder a las clases que queremos consultar, <classname
+>QApplication</classname
+> y <classname
+>QPushButton</classname
+>, seleccione «Listado alfabético de clases» y busque los correspondientes nombres. Siga cualquiera de ellos para ver la documentación de su clase. </para>
+<para
+>De modo alternativo, puede usar la documentación en línea existente en la <ulink url="doc.trolltech.com"
+>Documentación de Qt</ulink
+> de Trolltech. </para>
+<para
+>Para la clase <classname
+>QApplication</classname
+>, verá el constructor y el resto de métodos que proporciona. Si sigue un enlace podrá obtener más información sobre el uso y significado del método, lo que resulta muy útil cuando a veces no es posible intuir su correcto uso o cuando se quiere ver un ejemplo. Esto también vale para la documentación de la biblioteca de KDE, que utiliza una estructura similar. Y esto es casi todo cuanto necesita saber sobre el uso de las referencias de las clases en el navegador de documentación. </para>
+<sect3 id="c2s1s2s1">
+<title
+>Interpretación del ejemplo</title>
+<para
+>Comenzando por <classname
+>QApplication</classname
+>, encontrará todos los métodos utilizados en nuestro primer ejemplo: <itemizedlist>
+<listitem
+><para
+>el constructor <methodname
+>QApplication()</methodname
+></para
+></listitem>
+<listitem
+><para
+>el método <methodname
+>setMainWidget()</methodname
+></para
+></listitem>
+<listitem
+><para
+>el método <methodname
+>exec()</methodname
+></para
+></listitem>
+</itemizedlist>
+</para>
+<para
+>La interpretación sobre por qué utilizamos estos métodos es muy simple: <orderedlist>
+<listitem
+><para
+>Crear una instancia de la clase <classname
+>QApplication</classname
+> con el constructor, de modo que podamos usar los elementos de la interfaz gráfica que proporciona Qt</para
+></listitem>
+<listitem
+><para
+>Crear un widget que será el contenido de la ventana de nuestro programa</para
+></listitem>
+<listitem
+><para
+>Establecer el widget principal de «a»</para
+></listitem>
+<listitem
+><para
+>Ejecutar la instancia de «a» de <classname
+>QApplication</classname
+></para
+></listitem>
+</orderedlist
+>
+</para>
+<para
+>El segundo objeto de nuestro programa es el botón pulsable, una instancia de la clase <classname
+>QPushButton</classname
+>. Hemos usado el segundo de los dos constructores que se nos ofrecen para crear una instancia de este objeto. Este constructor acepta como parámetro un texto, que será la etiqueta que mostrará el botón (aquí es la cadena «¡Hola mundo!»). Luego hemos llamado al método <methodname
+>resize()</methodname
+> para cambiar el tamaño del botón en relación a su contenido (el botón debe ser más ancho para que la cadena aparezca completamente). </para>
+<para
+>Pero, ¿qué hay del método <methodname
+>show()</methodname
+>? Ahora veremos que, al igual que la mayor parte de de widgetds, <classname
+>QPushButton</classname
+> se basa en la herencia simple. La documentación dice que esta clase hereda de <classname
+>QButton</classname
+>. Siga el enlace de la clase <classname
+>QButton</classname
+> y verá más widgets que han sido heredados por <classname
+>QPushButton</classname
+> (y que usaremos más adelante para explicar el mecanismo señal/slot). No obstante, el método <methodname
+>show()</methodname
+> no aparece listado, por lo que también tiene que haber sido proporcionado mediante herencia. La clase de la que hereda <classname
+>QButton</classname
+> es <classname
+>QWidget</classname
+>. Vuelva a seguir el enlace y verá el gran número de métodos que proporciona <classname
+>QWidget</classname
+>, incluido el método <methodname
+>show()</methodname
+>. Ahora entendemos lo que se ha hecho con el botón en el ejemplo: <orderedlist>
+<listitem
+><para
+>Crear una instancia de <classname
+>QPushButton</classname
+>, usar el segundo constructor para establecer el texto del botón</para
+></listitem>
+<listitem
+><para
+>Modificar el tamaño del widget según su contenido</para
+></listitem>
+<listitem
+><para
+>Establecer el widget como widget principal de la instancia «a» de <classname
+>QApplication</classname
+></para
+></listitem>
+<listitem
+><para
+>Indicarle al widget que se muestre a sí mismo en la pantalla llamando a <methodname
+>show()</methodname
+>, un método heredado de <classname
+>QWidget</classname
+></para
+></listitem>
+</orderedlist>
+</para>
+<para
+>Tras llamar al método <methodname
+>exec()</methodname
+> la aplicación se hace visible al usuario, mostrando una ventana con el botón, que muestra el texto «¡Hola mundo!». Tenga en cuenta que los programas gráficos se comportan de un modo algo distinto al de las aplicaciones basadas en procedimientos. El punto principal es que aquí la aplicación entra en lo que se denomina un «bucle principal de eventos». Esto significa que el programa debe esperar las acciones del usuario y luego reaccionar a ellas. Además, para una aplicación Qt, el programa tiene que estar en el bucle principal de eventos para comenzar a manejar los eventos. La siguiente sección le enseñará brevemente lo que significa esto para el programador y qué ofrece Qt para procesar los eventos del usuario. </para>
+<note
+><para
+>Para los usuarios avanzados: El botón no tiene un padre declarado en el constructor, por lo que es un widget aislado de nivel superior que se ejecuta en un bucle de eventos locales que no necesita esperar al bucle de eventos principal. Consulte la documentación de la clase QWidget y la «Guía de referencia de la biblioteca KDE».</para>
+</note
+>
+
+</sect3>
+</sect2>
+
+<sect2 id="c2s1s3">
+<title
+>Interacción con el usuario</title>
+<para
+>Tras leer las últimas secciones, ya debería saber: <itemizedlist>
+<listitem
+><para
+>Qué proporciona la biblioteca Qt en términos de aplicaciones gráficas</para
+></listitem>
+<listitem
+><para
+>Cómo se crea un programa que utilice Qt, y</para
+></listitem>
+<listitem
+><para
+>Dónde y cómo encontrar información sobre las clases que desea utilizar con el navegador de documentación</para
+></listitem>
+</itemizedlist
+>
+</para>
+<para
+>Ahora le daremos «vida» a la aplicación procesando los eventos del usuario. Generalmente, el usuario tiene dos formas de interactuar con un programa: el ratón y el teclado. Para ambas, una interfaz gráfica de usuario debe proporcionar métodos que detecten acciones y métodos que hagan algo como respuesta a estas acciones. </para
+>
+<para
+>Para ello, el sistema de ventanas envía todos los eventos de interacción a la aplicación correspondiente. El objeto <classname
+>QApplication</classname
+> los envía luego a la ventana activa como objetos <classname
+>QEvent</classname
+>, y los widgets deben decidir por sí mismos qué hacer con ellos. Cuando un widget recibe el evento, procesa el método <methodname
+>QWidget::event(QEvent*)</methodname
+>, que se encarga de decidir qué evento ha sido ejecutado y cómo reaccionar a él. Por lo tanto, <methodname
+>event()</methodname
+> es el manejador principal de eventos. A continuación, el método <methodname
+>event()</methodname
+> pasa el evento a los llamados «filtros de eventos» para determinar qué ha ocurrido y qué se debe hacer con el evento. Si no existe ningún filtro que se haga responsable para dicho evento, se llama a los manejadores de eventos especializados. Mediante ellos podemos decidir entre: <itemizedlist>
+<listitem
+><para
+>Eventos del teclado -- Teclas «Tabulador» y «Mayúsculas-Tabulador»:</para>
+<itemizedlist>
+<listitem
+><para
+><methodname
+>virtual void focusInEvent(QFocusEvent *)</methodname
+></para
+></listitem>
+<listitem
+><para
+><methodname
+>virtual void focusOutEvent(QFocusEvent *)</methodname
+></para
+></listitem>
+</itemizedlist>
+</listitem>
+
+<listitem
+><para
+>El resto de entradas del teclado:</para>
+<itemizedlist>
+<listitem
+><para
+><methodname
+>virtual void keyPressEvent(QKeyEvent *)</methodname
+></para
+></listitem>
+<listitem
+><para
+><methodname
+>virtual void keyReleaseEvent(QKeyEvent *)</methodname
+></para
+></listitem>
+</itemizedlist>
+</listitem>
+
+<listitem
+><para
+>Los movimientos del ratón:</para>
+<itemizedlist>
+<listitem
+><para
+><methodname
+>virtual void mouseMoveEvent(QMouseEvent *)</methodname
+></para
+></listitem>
+<listitem
+><para
+><methodname
+>virtual void enterEvent(QEvent *)</methodname
+></para
+></listitem>
+<listitem
+><para
+><methodname
+>virtual void leaveEvent(QEvent *)</methodname
+></para
+></listitem>
+</itemizedlist>
+</listitem>
+
+<listitem
+><para
+>Acciones de los botones del ratón</para>
+<itemizedlist>
+<listitem
+><para
+><methodname
+>virtual void mousePressEvent(QMouseEvent *)</methodname
+></para
+></listitem>
+<listitem
+><para
+><methodname
+>virtual void mouseReleaseEvent(QMouseEvent *)</methodname
+></para
+></listitem>
+<listitem
+><para
+><methodname
+>virtual void mouseDoubleClickEvent(QMouseEvent *)</methodname
+></para
+></listitem>
+</itemizedlist>
+</listitem>
+
+<listitem
+><para
+>Eventos de la ventana que contiene el widget</para>
+<itemizedlist>
+<listitem
+><para
+><methodname
+>virtual void moveEvent(QMoveEvent *)</methodname
+></para
+></listitem>
+<listitem
+><para
+><methodname
+>virtual void resizeEvent(QResizeEvent *)</methodname
+></para
+></listitem>
+<listitem
+><para
+><methodname
+>virtual void closeEvent(QCloseEvent *)</methodname
+></para
+></listitem>
+</itemizedlist>
+</listitem>
+
+</itemizedlist>
+</para>
+<para
+>Note que todas las funciones de eventos son virtuales y protegidas, por lo que puede reimplementar los métodos encargados de manejar eventos que necesite en sus propios widgets y especificar cómo deben reaccionar. <classname
+>QWidget</classname
+> también contiene varios métodos virtuales más que pueden resultar de utilidad en sus programas. De ahí que sea recomendable conocer bien la clase <classname
+>QWidget</classname
+>. </para>
+</sect2>
+<sect2 id="c1s2s4">
+<title
+>Interacción entre objetos mediantes señales y slots</title>
+<para
+>Estamos llegando a una de las ventajas más obvias del juego de herramientas Qt: el mecanismo señal/objeto, que ofrece una solución útil y provechosa para la interacción de objetos (que normalmente se resuelve mediante funciones «callback» de las herramientas del sistema X-Window). Como esta comunicación requiere una programación estricta y a menudo dificulta la creación de interfaces de usuario (como se dice en la documentación de Qt y se explica en «Programando con Qt», de K. Dalheimer), Trolltech creó un nuevo sistema en el que los objetos pueden emitir señales que se pueden conectar a métodos declarados como «slots». Desde el punto de vista del programador de C++, solo es necesario saber ciertas cosas sobre este mecanismo: <itemizedlist>
+<listitem
+><para
+>la declaración de una clase que use señales y slots debe contener la macro Q_OBJECT al principio (sin punto y coma); también debe derivar de la clase <classname
+>QObject</classname
+> </para
+></listitem>
+<listitem
+><para
+>se puede emitir una señal mediante la palabra clave «emit»; por ejemplo, «emit señal(parámetros);», desde dentro de cualquier función miembro de una clase que permita señales y slots </para
+></listitem>
+
+<listitem
+><para
+>todas las señales usadas por las clases que no sean heredadas deben ser añadidas a la declaración de la clase mediante una sección «signals» </para
+></listitem>
+<listitem
+><para
+>todos los métodos que puedan ser conectados con una señal se declaran en secciones con la palabra clave «slot»; por ejemplo, «public slots:» dentro de la declaración de la clase </para
+></listitem>
+<listitem
+><para
+>el compilador de metaobjetos «moc» debe ejecutarse con el archivo de cabecera para expandir las macros y generar la implementación (que no es necesario conocer). Los archivos de salida de «moc» también son compilados por el compilador de C++. </para
+></listitem>
+</itemizedlist>
+</para>
+<para
+>Otra forma de usar señales sin derivar de <classname
+>QObject</classname
+> consiste en usar la clase <classname
+>QSignal</classname
+> (consulte la documentación de referencia para obtener más información y un ejemplo de uso). En lo sucesivo asumiremos que está derivando de <classname
+>QObject</classname
+>. </para>
+<para
+>De este modo, su clase será capaz de enviar señales a cualquier otro sitio y de proporcionar «slots» a los que se puedan conectar señales. Gracias al uso de estas señales no tendrá que preocuparse de quién va a recibirlas: solo tiene que emitir la señal, y cualquier «slot» al que quiera conectarla reaccionará a la emisión. Los «slots» también pueden ser usados como métodos normales en la implementación. </para>
+<para
+>Ahora, para conectar una señal a un «slot», tendrá que usar los métodos <methodname
+>connect()</methodname
+> proporcionados por la clase <classname
+>QObject</classname
+> o, cuando estén disponibles, otros métodos especiales proporcionados por diversos objetos para establecer la conexión con ciertas señales. </para>
+
+<sect3 id="c1s2s4s1">
+<title
+>Ejemplo de uso</title>
+<para
+>Para explicar el modo en que establecemos la interacción entre objetos, tomaremos nuestro primer ejemplo y lo extenderemos con una conexión sencilla: <programlisting
+>#include &lt;qapplication.h>
+#include &lt;qpushbutton.h>
+
+int main( int argc, char **argv )
+{
+QApplication a( argc, argv );
+
+QPushButton hello( "¡Hola mundo!" , 0);
+hello.resize( 100, 30 );
+
+a.setMainWidget( &amp;hello );
+
+QObject::connect(&amp;hello, SIGNAL( clicked() ), &amp;a, SLOT( quit() ));
+
+hello.show();
+return a.exec();
+}
+</programlisting>
+</para>
+<para
+>Como puede comprobar, la única adición para dar más interacción al botón consiste en usar un método <methodname
+>connect()</methodname
+>: <methodname
+>connect(&amp;hello, SIGNAL( clicked() ), &amp;a, SLOT( quit() ));</methodname
+> es todo cuanto tiene que añadir. ¿Cuál es su significado? La declaración de la clase QObject dice lo siguiente sobre el método <methodname
+>connect()</methodname
+>: </para>
+<para
+><methodname
+>bool connect ( const QObject * emisor, const char * señal, const QObject * receptor, const char * miembro ) </methodname
+></para>
+<para
+>Esto significa que debe especificar como primer parámetro un puntero de una instancia de la clase <classname
+>QObject</classname
+>, que es el emisor de la señal (lo que significa que puede emitir esta señal); a continuación debe especificar la señal que desea conectar. Los dos últimos parámetros son, en primer lugar, el objeto receptor que proporciona un «slot», y, finalmente, la función miembro de dicho objeto que va a actuar como «slot» (y que será ejecutada tras la emisión de la señal). </para>
+<para
+>Mediante el uso de señales y «slots», los objetos de su programa pueden interactuar con otros fácilmente sin depender explícitamente del tipo de objeto receptor. Aprenderá más sobre el uso de este mecanismo para usos productivos en sucesivas secciones de este manual. También puede encontrar más información sobre el mecanismo de señales y «slots» en la <ulink url="developer.kde.org/documentation/library/libraryref.html"
+>Guía de referencia de la biblioteca KDE</ulink
+> y la <ulink url="doc.trolltech.com"
+>referencia en línea de Qt</ulink
+>. </para>
+</sect3>
+</sect2>
+</sect1>
+
+<sect1 id="c2s3">
+<title
+>Qué proporciona KDE</title>
+<sect2 id="c2s3s1">
+<title
+>Las bibliotecas KDE 3.x</title>
+<para
+>Las principales bibliotecas de KDE que usará para crear sus propias aplicaciones para KDE son: <itemizedlist>
+<listitem
+><para
+>la biblioteca «tdecore», que contiene todas las clases que no son elementos visibles y que proporcionan funcionalidad a las aplicaciones </para
+></listitem>
+<listitem
+><para
+>la biblioteca «tdeui», que contiene los elementos de la interfaz del usuario, como barras de menú, barras de herramientas, etc. </para
+></listitem>
+<listitem
+><para
+>la biblioteca «kfile», que contiene diálogos de selección de archivos </para
+></listitem>
+</itemizedlist>
+</para>
+<para
+>Adicionalmente, KDE ofrece las siguientes bibliotecas para soluciones específicas: <itemizedlist>
+<listitem
+><para
+>la biblioteca «tdefx», que contiene mapas de píxels, efectos de imagen y la extensión KStyle de QStyle </para
+></listitem>
+<listitem
+><para
+>la biblioteca «khtml», que contiene el componente «html» de KDE </para
+></listitem>
+<listitem
+><para
+>la biblioteca «kjs», que contiene el soporte Javascript para KDE </para
+></listitem>
+<listitem
+><para
+>la biblioteca «kio», que contiene el acceso a bajo nivel a los archivos de la red </para
+></listitem>
+<listitem
+><para
+>la biblioteca «kparts», que contiene soporte para aplicaciones reutilizables, incrustables y extensibles </para
+></listitem>
+</itemizedlist>
+</para>
+<para
+>A continuación veremos qué se necesita para convertir su primera aplicación Qt en una aplicación KDE. </para>
+</sect2>
+<sect2 id="c2s3s2">
+<title
+>Ejemplo de aplicación KDE</title>
+<para
+>A continuación comprobará que escribir una aplicación para KDE no es más difícil que escribir una aplicación Qt. Para usar algunas características de KDE tendrá que utilizar otras clases, y eso es casi todo. Como ejemplo, veamos la versión modificada del ejemplo Qt anterior: <programlisting
+>#include &lt;kapplication.h>
+#include &lt;qpushbutton.h>
+
+int main( int argc, char **argv )
+{
+KApplication a( argc, argv );
+
+QPushButton hello( "¡Hola mundo!", 0 );
+hello.resize( 100, 30 );
+
+a.setTopWidget( &amp;hello );
+
+QObject::connect(&amp;hello, SIGNAL( clicked() ), &amp;a, SLOT( quit() ));
+
+hello.show();
+return a.exec();
+}
+</programlisting>
+</para
+>
+<para
+>Vea que en primer lugar hemos cambiado de <classname
+>QApplication</classname
+> a <classname
+>KApplication </classname
+>. Además, hemos tenido que cambiar elmétodo <methodname
+>setMainWidget()</methodname
+> anteriormente usado por <methodname
+>setTopWidget</methodname
+>, que utiliza <classname
+>KApplication</classname
+> para establecer el «widget» principal. ¡Y ya está! Su primera aplicación de KDE ya está terminada. Ahora solo le falta indicarle al compilador la ruta de inclusión de KDE, y al enlazador que utilice la biblioteca tdecore mediante el parámetro -ltdecore. </para>
+<para
+>Como ahora ya sabe qué suele proporcionar como mínimo la función <function
+>main()</function
+>, cómo se hace visible una aplicación y cómo permite la interacción entre usuario y objetos, seguiremos con el siguiente capítulo, donde nuestra primera aplicación se construirá con &tdevelop;. Ahí tambień podrá probar todo lo que se ha dicho hasta ahora y comprobar sus efectos. </para>
+<para
+>Adicionalmente, hasta ahora ha consultado la documentación de referencia de Qt, especialmente las clases <classname
+>QApplication</classname
+>, <classname
+>QWidget</classname
+> y <classname
+>QObject</classname
+>, y la documentación de la biblioteca «tdecore» sobre la clase <classname
+>KApplication</classname
+>. El <ulink url="developer.kde.org/documentation/library/libraryref.html"
+> Manual d referencia de la biblioteca KDE</ulink
+> también contiene una completa descripción sobre cómo llamar a los constructores de <classname
+>QApplication</classname
+> y de <classname
+>KApplication</classname
+>, incluido el procesamiento de los argumentos pasados como parámetros en la línea de comando. </para>
+</sect2>
+</sect1>
+
+</chapter>
+
+<chapter id="chapter3">
+<title
+>Creación de aplicaciones nuevas</title>
+
+<sect1 id="c3s1">
+<title
+>El asistente para aplicaciones</title>
+<para
+>El asistente para aplicaciones de &tdevelop; ha sido concebido para permitirle comenzar a trabajar en nuevos proyectos con &tdevelop;. Para ello, todos los proyectos nuevos serán creados primero por el asistente, y luego podrá comenzar a construirlos y a extender lo que se le ha proporcionado en un esqueleto de código fuente. Puede elegir entre varios tipos de proyecto según sus necesidades: <itemizedlist>
+<listitem
+><para
+>Infraestructura de aplicación KDE: incluye código fuente para la infraestructura de una aplicación estándar de KDE. </para
+></listitem>
+<listitem
+><para
+>Proyecto QMake: crea una infraestructura de aplicación basada en el sistema de configuración QMake de Trolltech. </para
+></listitem>
+<listitem
+><para
+>Sencillo programa «Hola mundo»: crea un programa en C++ basado en la terminal sin soporte de interfaz gráfica. </para
+></listitem>
+<listitem
+><para
+>Una multitud de esqueletos para otros programas </para
+></listitem>
+</itemizedlist>
+</para>
+<para
+>En este capítulo veremos cómo se llama al asistente para aplicaciones y qué se debe hacer para generar un proyecto de aplicación para KDE. Este es también el primer paso de nuestro objetivo, en el que crearemos la versión inicial de un proyecto de ejemplo. Para el resto de tipos de proyectos, los pasos suelen ser idénticos, aunque es posible que no disponga de tantas opciones. </para>
+</sect1>
+
+<sect1 id="c3s2">
+<title
+>Llamar al asistente para aplicaciones y generación del proyecto</title>
+<sect2 id="c3s2s1">
+<title
+>Iniciar el asistente para aplicaciones y su primera página</title>
+<para
+>Para comenzar con su aplicación para KDE, abra &tdevelop;. En el menú «Proyecto» seleccione «Nuevo proyecto». Se iniciará el asistente para aplicaciones, en cuya primera página verá un árbol de selección que contiene los tipos de proyectos que se pueden crear. Seleccione el elemento «C++», y luego «KDE», y finalice con «Infraestructura de aplicación». </para>
+<para
+>Para nuestro proyecto de ejemplo vamos a crear la aplicación KScribble. Introduzca esto como nombre de la aplicación y cambie cualquier otra información de la parte inferior de esta pantalla que considere necesario. Luego, pulse sobre «Adelante». <screenshot
+><mediaobject
+><imageobject>
+<imagedata fileref="appwizard.png" format="PNG"/>
+</imageobject
+><textobject
+><phrase
+>Asistente para aplicaciones</phrase
+></textobject>
+</mediaobject
+></screenshot>
+</para>
+</sect2>
+<sect2 id="c3s2s2">
+<title
+>Información sobre control de versiones</title>
+<para
+>En esta pantalla tendrá la opción de decidir si su proyecto usará un sistema de control de versiones como CVS. Para nuestro proyecto de ejemplo no usaremos ningún control del código fuente, así que nos aseguraremos de que esté marcada la opción «Ninguno» y pulsaremos sobre «Adelante». </para>
+</sect2>
+<sect2 id="c3s2s3">
+<title
+>Plantillas de cabecera y código fuente</title>
+<para
+>Las dos siguientes páginas muestran cabeceras de ejemplo que se incluirán en la parte superior de todos los archivos de cabecera y de código fuente que cree usando &tdevelop;. Por ahora, deje esto tal y como está y seleccione «Adelante», y luego «Finalizar». Si el botón «Finalizar» no está activado se debe a que no habrá rellenado correctamente alguna opción. En este caso, utilice el botón «Atrás» para volver a las páginas anteriores y corregir cualquier posible error. </para>
+</sect2>
+<sect2 id="c3s2s4">
+<title
+>Terminando</title>
+<para
+>Tras finalizar, el asistente para aplicaciones debe cerrarse y aparecerá la ventana de mensajes mostrando información sobre las tareas que está realizando &tdevelop;. Al final debería ver el mensaje «*** conseguido ***», que indica que todo ha terminado correctamente. </para>
+</sect2>
+</sect1>
+
+<sect1 id="c3s3">
+<title
+>La primera construcción</title>
+<para
+>Tras generar nuestro proyecto, realizaremos una excursión a través de su código fuente para hacernos una idea de cómo es una infraestructura de aplicación. Esto no solo nos ayudará a comenzar, sino que nos enseñará dónde tendremos que cambiar ciertas cosas en los pasos siguientes. </para>
+<para
+>En este capítulo se asume que ya conoce la navegación básica con &tdevelop;. Consulte el «Manual del usuario de KDevelop» si necesita más información. </para>
+<para
+>El gestor de «automake» muestra los archivos del proyecto del modo siguiente: <screenshot
+><mediaobject
+><imageobject>
+<imagedata fileref="kscribblefiles.png" format="PNG"/>
+</imageobject
+><textobject
+><phrase
+>Los archivos de nuestro proyecto</phrase
+></textobject>
+</mediaobject
+></screenshot>
+</para>
+<para
+>Antes de sumergirnos en el código fuente, dejaremos que &tdevelop; construya y ejecute nuestra nueva aplicación. Para ello, seleccione «Construir proyecto» en el menú «Construir», o pulse F8. La ventana de salida se abrirá y mostrará mensajes de salida durante la fase de compilación. <programlisting
+>1 cd /home/caleb/kscribble &amp;&amp; WANT_AUTOCONF_2_5=1 WANT_AUTOMAKE_1_6=1 gmake k
+2 gmake all-recursive
+3 gmake[1]: Entering directory `/home/caleb/kscribble'
+4 Making all in doc
+5 gmake[2]: Entering directory `/home/caleb/kscribble/doc'
+6 Making all in .
+7 gmake[3]: Entering directory `/home/caleb/kscribble/doc'
+8 gmake[3]: Nothing to be done for `all-am'.
+9 gmake[3]: Leaving directory `/home/caleb/kscribble/doc'
+10 Making all in en
+11 gmake[3]: Entering directory `/home/caleb/kscribble/doc/en'
+12 /usr/local/kde3/bin/meinproc --check --cache index.cache.bz2 /home/caleb/kscribble/doc/en/index.docbook
+13 gmake[3]: Leaving directory `/home/caleb/kscribble/doc/en'
+14 gmake[2]: Leaving directory `/home/caleb/kscribble/doc'
+15 Making all in po
+16 gmake[2]: Entering directory `/home/caleb/kscribble/po'
+17 gmake[2]: Nothing to be done for `all'.
+18 gmake[2]: Leaving directory `/home/caleb/kscribble/po'
+19 Making all in src
+20 gmake[2]: Entering directory `/home/caleb/kscribble/src'
+21 source='main.cpp' object='main.o' libtool=no \
+22 depfile='.deps/main.Po' tmpdepfile='.deps/main.TPo' \
+23 depmode=gcc3 /bin/sh /home/caleb/kscribble/admin/depcomp \
+24 g++ -DHAVE_CONFIG_H -I. -I/home/caleb/kscribble/src -I.. -I/usr/local/kde3/include
+ -I/usr/lib/qt/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor
+ -Wno-long-long -Wundef -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings
+ -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new
+ -c -o main.o `test -f 'main.cpp' || echo '/home/caleb/kscribble/src/'`main.cpp
+25 /usr/lib/qt/bin/moc /home/caleb/kscribble/src/kscribble.h -o kscribble.moc
+26 source='kscribble.cpp' object='kscribble.o' libtool=no \
+27 depfile='.deps/kscribble.Po' tmpdepfile='.deps/kscribble.TPo' \
+28 depmode=gcc3 /bin/sh /home/caleb/kscribble/admin/depcomp \
+29 g++ -DHAVE_CONFIG_H -I. -I/home/caleb/kscribble/src -I.. -I/usr/local/kde3/include
+ -I/usr/lib/qt/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor
+ -Wno-long-long -Wundef -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings
+ -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new
+ -c -o kscribble.o `test -f 'kscribble.cpp' || echo '/home/caleb/kscribble/src/'`kscribble.cpp
+30 kscribble.cpp: In member function `void KScribble::setupActions()'
+31 kscribble.cpp:107: warning: unused variable `KAction*custom'
+32 /usr/lib/qt/bin/moc /home/caleb/kscribble/src/kscribbleview.h -o kscribbleview.moc
+33 source='kscribbleview.cpp' object='kscribbleview.o' libtool=no \
+34 depfile='.deps/kscribbleview.Po' tmpdepfile='.deps/kscribbleview.TPo' \
+35 depmode=gcc3 /bin/sh /home/caleb/kscribble/admin/depcomp \
+36 g++ -DHAVE_CONFIG_H -I. -I/home/caleb/kscribble/src -I.. -I/usr/local/kde3/include
+ -I/usr/lib/qt/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor
+ -Wno-long-long -Wundef -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -ansi
+ -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new -c
+ -o kscribbleview.o `test -f 'kscribbleview.cpp' || echo '/home/caleb/kscribble/src/'`kscribbleview.cpp
+37 kscribbleview.cpp: In member function `void KScribbleView::print(QPainter*,
+38 int, int)':
+39 kscribbleview.cpp:79: warning: unused parameter `QPainter*p'
+40 kscribbleview.cpp:79: warning: unused parameter `int height'
+41 kscribbleview.cpp:79: warning: unused parameter `int width'
+42 /usr/lib/qt/bin/moc /home/caleb/kscribble/src/pref.h -o pref.moc
+43 source='pref.cpp' object='pref.o' libtool=no \
+44 depfile='.deps/pref.Po' tmpdepfile='.deps/pref.TPo' \
+45 depmode=gcc3 /bin/sh /home/caleb/kscribble/admin/depcomp \
+46 g++ -DHAVE_CONFIG_H -I. -I/home/caleb/kscribble/src -I.. -I/usr/local/kde3/include
+ -I/usr/lib/qt/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor
+ -Wno-long-long -Wundef -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings
+ -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new
+ -c -o pref.o `test -f 'pref.cpp' || echo '/home/caleb/kscribble/src/'`pref.cpp
+47 /usr/local/kde3/bin/dcopidl /home/caleb/kscribble/src/kscribbleiface.h
+> kscribbleiface.kidl ||
+ ( rm -f kscribbleiface.kidl ; /bin/false )
+48 /usr/local/kde3/bin/dcopidl2cpp --c++-suffix cpp --no-signals --no-stub kscribbleiface.kidl
+49 source='kscribbleiface_skel.cpp' object='kscribbleiface_skel.o' libtool=no \
+50 depfile='.deps/kscribbleiface_skel.Po' tmpdepfile='.deps/kscribbleiface_skel.TPo' \
+51 depmode=gcc3 /bin/sh /home/caleb/kscribble/admin/depcomp \
+52 g++ -DHAVE_CONFIG_H -I. -I/home/caleb/kscribble/src -I.. -I/usr/local/kde3/include
+ -I/usr/lib/qt/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor
+ -Wno-long-long -Wundef -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings
+ -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new
+ -c -o kscribbleiface_skel.o `test -f 'kscribbleiface_skel.cpp' ||
+ echo '/home/caleb/kscribble/src/'`kscribbleiface_skel.cpp
+53 /bin/sh ../libtool --silent --mode=link --tag=CXX g++ -Wnon-virtual-dtor -Wno-long-long -Wundef -Wall
+ -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -ansi -D_XOPEN_SOURCE=500
+ -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new -o kscribble -R
+ /usr/local/kde3/lib -R /usr/lib/qt/lib -R /usr/X11R6/lib -L/usr/X11R6/lib -L/usr/lib/qt/lib
+ -L/usr/local/kde3/lib main.o kscribble.o kscribbleview.o pref.o kscribbleiface_skel.o -lkio
+54 source='kscribble_client.cpp' object='kscribble_client.o' libtool=no \
+55 depfile='.deps/kscribble_client.Po' tmpdepfile='.deps/kscribble_client.TPo' \
+56 depmode=gcc3 /bin/sh /home/caleb/kscribble/admin/depcomp \
+57 g++ -DHAVE_CONFIG_H -I. -I/home/caleb/kscribble/src -I.. -I/usr/local/kde3/include
+ -I/usr/lib/qt/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor
+ -Wno-long-long -Wundef -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings
+ -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new
+ -c -o kscribble_client.o `test -f 'kscribble_client.cpp' || echo
+ '/home/caleb/kscribble/src/'`kscribble_client.cpp
+58 /bin/sh ../libtool --silent --mode=link --tag=CXX g++ -Wnon-virtual-dtor -Wno-long-long -Wundef
+ -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -ansi -D_XOPEN_SOURCE=500
+ -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new -o kscribble_client -R
+ /usr/local/kde3/lib -R /usr/lib/qt/lib -R /usr/X11R6/lib -L/usr/X11R6/lib -L/usr/lib/qt/lib
+ -L/usr/local/kde3/lib kscribble_client.o -ltdecore
+59 gmake[2]: Leaving directory `/home/caleb/kscribble/src'
+60 gmake[2]: Entering directory `/home/caleb/kscribble'
+61 gmake[2]: Nothing to be done for `all-am'.
+62 gmake[2]: Leaving directory `/home/caleb/kscribble'
+63 gmake[1]: Leaving directory `/home/caleb/kscribble'
+64 *** conseguido ***
+</programlisting>
+</para>
+<para
+>Como puede ver, hemos colocado números al comienzo de cada línea que no aparecerán cuando realice este proceso; aquí nos ayudarán a describir qué está ocurriendo durante el proceso de construcción. En primer lugar, «gmake» trabaja recursivamente. Esto significa que comienza en la carpeta donde fue llamado y entra primero en las subcarpetas, de una en una, y luego vuelve a la carpeta en la que se inició, la procesa, y luego finaliza su ejecución. </para>
+<para
+>La primera línea de interés es la 24. Vea que «g++» (que se refiere a nuestro compilador de C++) ha sido llamado por «make» para compilar el primer archivo de código fuente de nuestro proyecto (en este caso, «main.cpp»). En la línea de comando del compilador «g++» se usan muchas opciones extra, algunas de ellas de forma predeterminada y otras configuradas mediante &tdevelop;. </para>
+<para
+>Antes de compilar el siguiente archivo («kscribble.cpp», en la línea 29), el compilador de metaobjetos «moc» se llama por primera vez sobre «kscribble.h» (línea 25). Esto se debe a que las clases de KScribble usan señales y slots, de modo que la macro Q_OBJECT debe ser expandida antes de ser usada, y esto es lo que «moc» hace por nosotros. El archivo resultante («kscribble.moc»), se usa en «kscribble.cpp» mediante una sentencia #include dentro de él. </para>
+</sect1>
+
+<sect1 id="c3s4">
+<title
+>El esqueleto del código fuente</title>
+<para
+>Para tener un concepto de cómo funciona una aplicación de KDE, echaremos en primer lugar un vistazo al esqueleto de código fuente proporcionado por el asistente para aplicaciones. Como ya hemos visto, tenemos un conjunto de archivos de cabecera y de código fuente para generar el código inicial de nuestra aplicación y dejarla preparada para ser ejecutada. De ahí que el modo más fácil de explicar lo que hace el código fuente consista en seguir la implementación línea a línea a medida que se procesan durante la ejecución del programa hasta que se entra en el bucle principal de eventos y se está preparado para recibir entradas del usuario. A continuación veremos la funcionalidad que permite la interacción del usuario y cómo funcionan ciertas cosas. Probablemente esta es la mejor forma de entender la infraestructura, que es similar a la del resto de aplicaciones para KDE, y también le permitirá comprender el código fuente de otros proyectos. Adicionalmente, sabrá dónde cambiar ciertas partes del código para hacer que su aplicación se comporte del modo en que ha sido diseñada. </para>
+
+<sect2 id="c3s4s1">
+<title
+>La función main()</title>
+<para
+>Como la aplicación comienza su ejecución entrando en la función <function
+>main()</function
+>, este será nuestro punto de partida para examinar nuestro código fuente. La función <function
+>main()</function
+> de KScribble está implementada en el archivo «main.cpp». También se puede localizar usando el navegador de clases, seleccionando la carpeta «Funciones globales». <programlisting
+>1 int main(int argc, char **argv)
+2 {
+3 KAboutData about("kscribble", I18N_NOOP("KScribble"), version, description,
+4 KAboutData::License_GPL, "(C) 2002 Su nombre", 0, 0, "you@you.com");
+5 about.addAuthor( "Your Name", 0, "you@you.com" );
+6 KCmdLineArgs::init(argc, argv, &amp;about);
+7 KCmdLineArgs::addCmdLineOptions(options);
+8 KApplication app;
+9
+10 // registrarnos como cliente dcop
+11 app.dcopClient()->registerAs(app.name(), false);
+12
+13 // comprobar si estamos iniciando la gestión de la sesión
+14 if (app.isRestored())
+15 RESTORE(KScribble)
+16 else
+17 {
+18 // sin sesión... comenzar de modo normal
+19 KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+20 if (args->count() == 0)
+21 {
+22 KScribble *widget = new KScribble;
+23 widget->show();
+24 }
+25 else
+26 {
+27 int i = 0;
+28 for (; i &lt; args->count(); i++)
+29 {
+30 KScribble *widget = new KScribble;
+31 widget->show();
+32 widget->load(args->url(i));
+33 }
+34 }
+35 args->clear();
+36 }
+37
+38 return app.exec();
+39 }
+</programlisting>
+</para
+>
+<para
+>Ahora, lo que ocurre en primer lugar es la creación de un objeto <classname
+>KApplication</classname
+>, pero hemos añadido algunos métodos de KDE para configurar la información sobre el programa y sobre el autor de esta aplicación. </para>
+</sect2>
+<sect2>
+<title
+>Inicio de la aplicación del usuario</title>
+
+<para
+>... (pendiente de escribir)</para>
+
+</sect2>
+<sect2>
+<title
+>El constructor</title>
+<para
+>Veamos el constructor y cómo se llama a esta instancia <programlisting
+>1 KScribble::KScribble()
+2 : KMainWindow( 0, "KScribble" ),
+3 m_view(new KScribbleView(this)),
+4 m_printer(0)
+5 {
+6 // aceptar dnd
+7 setAcceptDrops(true);
+8
+9 // comunicar a KMainWindow que este es el widget principal
+10 setCentralWidget(m_view);
+11
+12 // a continuación, preparar nuestras acciones
+13 setupActions();
+14
+15 // y una barra de estado
+16 statusBar()->show();
+17
+18 // permitir que la vista pueda cambiar la barra de estado y el título
+19 connect(m_view, SIGNAL(signalChangeStatusbar(const QString&amp;)),
+20 this, SLOT(changeStatusbar(const QString&amp;)));
+21 connect(m_view, SIGNAL(signalChangeCaption(const QString&amp;)),
+22 this, SLOT(changeCaption(const QString&amp;)));
+23
+24 }
+</programlisting>
+</para>
+<para
+>Note que <classname
+>KScribble</classname
+> hereda la clase <classname
+>KMainWindow</classname
+> (una clases base muy utilizada en las aplicaciones de KDE). Inicializamos una clase llamada <classname
+>KScribbleView</classname
+> como nuestro widget central, creamos una <classname
+>KStatusBar</classname
+> mediante el método <methodname
+>statusBar()</methodname
+> (línea 16), y conectamos algunas señales y slots. </para>
+</sect2>
+</sect1>
+</chapter>
+
+
+<chapter id="chapter4">
+<title
+>Diseño de vistas de la aplicación</title>
+<sect1 id="c4s1">
+<title
+>Introducción</title>
+<para
+>Cuando se desarrola una aplicación con una interfaz gráfica de usuario, el trabajo principal consiste en proporcionar lo que se denomina una «vista» para la aplicación. Una vista generalmente es un widget que muestra los datos de un documento y proporciona métodos para manipular su contenido. El usuario realiza todo esto mediante los eventos que emite al usar el teclado o el ratón. Otras operaciones más complejas se procesan a menudo por las barras de herramientas y los menús, que interactúan con la vista y el documento. La barra de estado proporciona información sobre el documento, la vista o el estado de la aplicación. Como ejemplo, podemos ver cómo se construye un editor y dónde se encuentra cada cosa. </para>
+<para
+>Se supone que un editor debe proporcionar una interfaz para que un usuario pueda ver y/o modificar el contenido de un documento de texto. Si inicia «Kate», verá la interfaz visual siguiente: <itemizedlist>
+<listitem
+><para
+>La barra del menú: proporciona operaciones complejas, como abrir, guardar y cerrar archivos, y salir de la aplicación. </para
+></listitem>
+<listitem
+><para
+>La barra de herramientas: ofrece iconos que permiten un rápido acceso a las funciones más utilizadas. </para
+></listitem>
+<listitem
+><para
+>La barra de estado: muestra el estado de la posición del cursor (su fila y columna actuales). </para
+></listitem>
+<listitem
+><para
+>La vista en la parte central de la ventana, que muestra el documento y ofrece un cursor conectado al teclado y al ratón que permite operar con los datos. </para
+></listitem>
+</itemizedlist>
+</para>
+<para
+>Ahora es fácil entender que la vista es casi la única parte integrante de la aplicación, y que el diseño de la vista incide sobre la usabilidad y aceptabilidad de una aplicación. Esto significa que uno de los primeros pasos del desarrollo consiste en determinar el propósito de nuestra aplicación y qué tipo de vista se ajustará mejor para permitir que el usuario trabaje con la aplicación con un mínimo de esfuerzo para aprender a manejer la interfaz de usuario. </para>
+<para
+>Para algunos propósitos como la edición de texto y la visualización de archivos HTML, las vistas son proporcionadas por las bibliotecas de Qt y de KDE (discutiremos algunas observaciones sobre estos widgets de alto nivel en la siguiente sección). Pero la mayor parte de las aplicaciones se deben diseñar e implementar nuevos widgets. Esto es lo que hace que un programador también sea un diseñador y donde se demuestran sus capacidades de creatividad: debe buscar la intuición en primer lugar. Recuerde que un gran número de usuarios no aceptará una aplicación que no sea: <itemizedlist>
+<listitem
+><para
+>gráficamente atractiva </para
+></listitem>
+<listitem
+><para
+>rica en características </para
+></listitem>
+<listitem
+><para
+>fácil de manejar: </para
+></listitem>
+<listitem
+><para
+>fácil de aprender a usar </para
+></listitem>
+</itemizedlist>
+</para>
+<para
+>Tampoco es necesario decir que la estabilidad es uno de los principales objetivos del diseño. Nadie puede evitar los errores, pero se puede conseguir bastante mediante objetivos diseñados inteligentemente y el amplio uso de diseños orientados a objetos. C++ hace que la programación sea un juego si sabe cómo explotar sus capacidades: herencia, ocultación de información y reusabilidad del código existente. </para>
+<para
+>Cuando cree un proyecto KDE o Qt, siempre tendrá una vista que herede de QWidget, ya sea por herencia directa o porque el widget de la biblioteca que desea usar hereda de QWidget. De ahí que el asistente para aplicaciones haya construido una vista que es una instancia de una clase «aplicaciónView», que hereda de QWidget. </para>
+<para
+>Este capítulo describe cómo usar widgets de bibliotecas para crear vistas para aplicaciones de KDE o Qt que han sido generadas con &tdevelop;. Luego veremos las bibliotecas y qué tipo de vistas nos ofrecen. </para>
+</sect1>
+<sect1 id="c4s2">
+<title
+>Uso de bibliotecas de vistas</title>
+<para
+>Cuando haya ajustado el diseño de su aplicación, debería buscar en primer lugar código ya existente que haga su vida más fácil. Una parte de esta búsqueda consiste en encontrar un widget que pueda ser usado como vista, o al menos como una parte de ella, ya sea directamente o mediante herencia. Las bibliotecas de KDE y de Qt contienen un conjunto de widgets que se pueden usar para este propósito. Dispone de dos opciones para usarlos: <orderedlist>
+<listitem
+><para
+>Eliminar la clase de la nueva vista y crear una instancia de un widget de biblioteca, y luego establecerlo como vista. </para
+></listitem>
+<listitem
+><para
+>Cambiar la herencia de la clase de vista proporcionada a la clase del widget de la biblioteca que va a usar. </para
+></listitem>
+</orderedlist>
+</para>
+<para
+>De cualquier modo, es importante saber que si la infraestructura de la aplicación no está enlazada actualmente con la biblioteca que contiene el widget, el enlazador fallará. Una vez que haya decidido usar cierto widget, busque la biblioteca que debe enlazar; luego abra «Proyecto» -> «Opciones» en el menú de &tdevelop; y vaya a la página «Opciones del enlazador» y busque las marcas que indican las bibliotecas que se están usando en la actualidad. Si la biblioteca que contiene su widget ya está marcada, puede dejar sin tocar las opciones del proyecto. En caso contrario, y si las opciones del enlazador le permiten marcar la biblioteca para añadirla, márquela y pulse «Aceptar» para salir de las opciones del proyecto. En cualquier otro caso, añada la biblioteca en el campo de edición que más abajo con la opción «-l». Para las bibliotecas que su aplicación debe buscar, antes de preparar los Makefiles con el guión «configure» en el sistema del usuario final, añada la correspondiente macro de búsqueda en el archivo «configure.in» situado en la carpeta principal de su proyecto, y añada la macro a la línea de edición. Recuerde que debe ejecutar «Construir» -> «Autoconf y automake», y luego «Construir» -> «Configure» antes de que los Makefiles contengan la expansión correcta para la macro de la biblioteca. </para>
+<para
+>Además, si los archivos de cabecera de la biblioteca a añadir no están en la ruta de inclusión actual (que se puede ver con las opciones «-l» en la ventana de salida de «make»), debe añadir su ruta en el diálogo de opciones del proyecto, en la página «Opciones del compilador», con la opción «-l» o la macro de automake correspondiente en la línea de edición de las «Opciones adicionales». </para>
+<sect2 id="c4s3s1">
+<title
+>Vistas de Qt</title>
+<para
+>Si observa la primera página de la documentación en línea de Qt encontrará un enlace a «capturas de pantalla de los widgets», donde podrá ver cómo son los widgets que contiene Qt. Estos widgets están listos para usar y pueden ser combinados entre sí para formar widgets más complicados que le permitirán crear vistas y diálogos para su aplicación. A continuación describiremos algunos de estos widgets que le resultarán de utilidad para crear vistas de aplicaciones, pero recuerde que las bibliotecas de KDE suelen contener otros widgets para el mismo propósito. Veremos esto en la próxima sección. </para>
+<para
+>A continuación le damos una lista de pistas sobre para qué propósito puede usar cada componente de Qt: <orderedlist>
+<listitem
+><para
+>Si el área de su vista no es lo suficientemente amplia para mostrar todos sus datos, el usuario debería poder desplazarse por el documento con barras situadas a la derecha y en la parte inferior de la vista. Para ello, Qt proporciona la clase <classname
+>QScrollView</classname
+>, que ofrece un área hija que se puede desplazar. Como se ha explicado, puede derivar su propio widget de la clase <classname
+>QScrollView</classname
+> o usar una instancia de ella para gestionar el widget que contendrá la vista de su documento. </para
+></listitem
+>
+<listitem
+><para
+>Para crear una vista propia que se pueda deslazar, derive su widget de vista de la clase <classname
+>QWidget</classname
+> y añada un <classname
+>QScrollBar</classname
+> horizontal y otro vertical (esto es lo que hace, por ejemplo, el widget KHTMLView de KDE). </para
+></listitem
+>
+<listitem
+><para
+>Para procesar texto, utilice <classname
+>QTextEdit</classname
+>. Esta clase proporciona un widget con un completo editor de texto que es capaz de cortar, copiar y pegar texto, y está gestionado por una vista que se puede desplazar. </para
+></listitem
+>
+<listitem
+><para
+>Use <classname
+>QTable</classname
+> para mostrar datos organizados en forma de tabla. Como <classname
+>QTable</classname
+> también está dotada de barras de desplazamiento, ofrece una buena solución para aplicaciones de cálculo de tablas. </para
+></listitem
+>
+<listitem
+><para
+>Para mostrar dos widgets diferentes o dos instancias del mismo widget a la vez, utilice <classname
+>QSplitter</classname
+>. Esta clase le permite distribuir las vistas mediante divisores horizontales o verticales. KMail es un buen ejemplo de la apariencia de esta clase (la vista principal está dividida verticalmente por un «splitter» o divisor, y la ventana de la derecha también está dividida horizontalmente). </para
+></listitem
+>
+<listitem
+><para
+><classname
+>QListView</classname
+> muestra información en forma de lista o de árbol. Resulta útil para crear árboles de archivos, por ejemplo, o para mostrar cualquier tipo de información jerárquica con la que desee interactuar. </para
+></listitem
+>
+</orderedlist>
+</para>
+<para
+>Como ve, Qt solo ya ofrece un completo conjunto de widgets listos para usar, de modo que no será necesario que invente nuevas soluciones si alguno de ellos se ajusta a sus necesidades. Un efecto adicional de usar widgets estándares consiste en que los usuarios ya saben cómo manejarlos y solo necesitan concentrarse en los datos mostrados. </para>
+</sect2>
+<sect2 id="c4s3s2">
+<title
+>Vistas de KDE</title>
+<para
+>Las bibliotecas de KDE fueron creadas para hacer más fácil el diseño de aplicaciones para KDE, y además disponen de más funcionalidad de la que ofrece Qt. La biblioteca «tdeui» ofrece: <orderedlist>
+<listitem
+><para
+>KListView: una versión más potente de <classname
+>QListView</classname
+> </para
+></listitem>
+<listitem
+><para
+>KIconView: un visor gráfico de archivos de icono </para
+></listitem>
+</orderedlist>
+</para>
+<para
+>La biblioteca «khtml», por otra parte, ofrece un completo widget de interpretación HTML listo para usar. Ya contiene barras de desplazamiento, así que no tendrá que preocuparse por ello. Un posible uso puede ser el de integrarlo como parte de un widget editor de HTML para previsualizar el resultado. Este widget se usa en aplicaciones como Konqueror para mostrar archivos HTML. </para>
+</sect2>
+</sect1>
+<sect1 id="c4s4">
+<title
+>Creación de sus propias vistas</title>
+<para
+>... (pendiente de escribir) </para>
+</sect1>
+</chapter>
+
+<chapter id="chapter5">
+<title
+>Configuración de menús y de barras de herramientas</title>
+<sect1 id="c5s1">
+<title
+>Introducción</title>
+<para
+>Las barras de menú y de herramientas son unas de las partes más importantes de una aplicación para proporcionar métodos para trabajar con la estructura de un documento. Como regla general, todas las funciones deben residir en la barra de menú, y todos los métodos que no deban estar disponibles en el estado actual de la aplicación deberían aparecer desactivados. </para>
+<para
+>Aún más, una aplicación solo puede contener una barra de menú, aunque puede tener varias barras de herramientas. Por otra parte, las barras de herramientas deben contener solo los comandos usados más frecuentemente, representados por iconos, o proporcionar métodos de acceso rápido, como listas desplegables para seleccionar valores. </para>
+</sect1>
+<sect1 id="c5s2">
+<title
+>¿Cómo funciona?</title>
+<para
+>Nuestra aplicación hereda la clase <classname
+>KMainWindow</classname
+>, que maneja de forma automática la creación de una barra de menú y de barras de herramientas. En el método <methodname
+>KScribble::setupActions()</methodname
+> se realiza una llamada a <methodname
+>KMainWindow::createGUI()</methodname
+>. Este método carga un archivo de recursos (en nuestro caso, «kscribbleui.rc») para inicializar los menús durante el inicio. Observe que «kscribbleui.rc» se lista como uno de los archivos del proyecto en el «Gestor de automake». Si abre este archivo verá lo siguiente: <programlisting
+>1 &lt;!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
+2 &lt;kpartgui name="kscribble" version="1">
+3 &lt;MenuBar>
+4 &lt;Menu name="custom"
+>&lt;text
+>P&amp;ersonalizar&lt;/text>
+5 &lt;Action name="custom_action" />
+6 &lt;/Menu>
+7 &lt;/MenuBar>
+8 &lt;/kpartgui
+>
+</programlisting>
+</para>
+<para
+>Explicación... </para>
+<para
+>Otro modo de modificar el contenido del menú y de las barras de herramientas consiste en manipularlos directamente mediante los métodos que proporcionan sus respectivas clases. Por ejemplo, el método <methodname
+>menuBar()</methodname
+> devuelve el widget <classname
+>KMenuBar</classname
+> de contiene la barra de menú de nuestro programa. Si consulta la documentación de <classname
+>KMenuBar</classname
+> y de su clase heredada, <classname
+>QMenuBar</classname
+>, encontrará un gran número de métodos <methodname
+>insertItem();</methodname
+> que le permiten añadir elementos a la barra de menú. </para>
+<para
+>Los métodos <methodname
+>statusBar()</methodname
+> y <methodname
+>toolBar()</methodname
+> de <classname
+>KMainWindow</classname
+> también le proporcionan widgets aplicables. </para>
+</sect1>
+<sect1 id="c5s3">
+<title
+>Configuración de los accesos rápidos de teclado</title>
+<para
+>Los accesos rápidos de teclado son algo muy profesional que siempre debería añadir a sus aplicaciones. Son usados principalmente por usuarios avanzados que desean trabajar más rápido con sus aplicaciones. Para implementarlos, las bibliotecas de KDE ofrecen la clase <classname
+>KAction</classname
+>, que proporciona las teclas de acceso rápido y también brinda acceso a los aceleradores de teclado estándares configurados globalmente. </para>
+<para
+>De forma predeterminada, las aplicaciones generadas con &tdevelop; solo utilizan accesos rápidos de teclado estándares, como «F1» para acceder a la ayuda en línea, «Ctrl+N» para «Nuevo archivo», etc. </para>
+<para
+>Si su aplicación contiene gran número de aceleradores, debería hacer que se pudieran configurar desde el menú de «Opciones», ya sea combinados con la configuración de otras aplicaciones en un QWidget o bien de modo aislado. La biblioteca de KDE proporciona una clase <classname
+>KKeyChooser</classname
+> para usar en diálogos que contienen pestañas, para los que <classname
+>KKeyDialog</classname
+> proporciona un diálogo de configuración de teclas listo para usar. </para>
+
+</sect1>
+</chapter>
+
+<!--
+<chapter id="chapter6">
+<title
+>Other Features</title>
+</chapter>
+
+<chapter id="chapter7">
+<title
+>Printing Support</title>
+</chapter>
+-->
+<chapter id="chapter8">
+<title
+>Funciones de ayuda</title>
+<sect1 id="c8s1">
+<title
+>Introducción</title>
+<para
+>Una parte muy importante del proceso de desarrollo consiste en proporcionar funcionalidades de ayuda al usuario siempre que sea posible. Muchos desarrolladores tienden a dejar esto para otro momento, pero debería recordar que un usuario normal no es necesariamente un experto en Unix. Es posible que provenga del «lado oscuro» del uso del software informático proporcionando todas las golosinas que un usuario pueda necesitar para trabajar usando una aplicación incluso sin haber tocado nunca un manual. Por ello, las bibliotecas Qt y KDE ofrecen todos los métodos que usualmente se consideran profesionales en una aplicación a los ojos de un usuario, como funciones de ayuda listas para usar. En una aplicación, son:</para>
+<itemizedlist>
+<listitem
+><para
+>Ayudas emergentes</para
+></listitem>
+<listitem
+><para
+>Ayuda de la barra de estado</para
+></listitem>
+<listitem
+><para
+>Botones «¿Qué es esto?»</para
+></listitem>
+</itemizedlist>
+<para
+>Además, la aplicación debe proporcionar algún modo de acceder directamente al manual en línea basado en HTML usando la tecla estándar de ayuda, «F1». Este sistema de ayuda basado en contextos se proporciona automáticamente por la clase <classname
+>KMainWindow</classname
+>, aunque el autor debe proporcionar el contenido de la ayuda. </para>
+<para
+>Del mismo modo que &tdevelop; ofrece todos los tipos de ayuda, nuestra infraestructura de aplicación para KDE generada por el asistente para aplicaciones también contiene soporte para ellos. Este capítulo le ayudará a determinar dónde y cuándo añadir funcionalidades de ayuda. </para>
+<para
+>Durante el desarrollo de su aplicación debería tratar de ser consistente con lo que está haciendo. Para ello debería de dar los pasos necesarios mientras amplía el código. Esto le evitará tener que sumergirse en el código fuente de nuevo y tratar de imaginarse lo que hace su aplicación o qué quiso hacer en ciertas partes del código. </para>
+</sect1>
+
+<sect1 id="c8s2">
+<title
+>Ayudas emergentes</title>
+<para
+>Un modo bastante fácil de proporcionar ayuda son las «ayudas emergentes», que son pequeños mensajes con texto explicativo que aparecen cuando el usuario sitúa el puntero del ratón sobre un widget, y que desaparecen cuando el ratón se mueve a otro lugar. El uso más popular de las ayudas emergentes se realiza en las barras de herramientas, donde el texto de ayuda se debe mantener lo más corto que sea posible debido a que la barra de herramientas se puede configurar para mostrar su contenido de varias formas (mostrando botones, botones con texto a la derecha, botones con texto debajo, o solo texto). El usuario debería poder configurar estas posibilidades, aunque no es estrictamente necesario. El texto se muestra como ayuda emergente y la barra de herramientas suele constar de botones y de otros widgets, como líneas de edición y listas desplegables. Para una referencia más completa, consulte la clase <classname
+>KToolBar</classname
+> que proporciona la biblioteca «tdeui». </para>
+<para
+>Como ejemplo, veamos el botón «Archivo nuevo» de una aplicación genérica: </para>
+<para
+>Aquí, la parte «i18n("Archivo nuevo")» proporciona un mensaje de ayuda emergente. Está encerrado en el interior de una macro «i18n()» (ofrecida por «kapp.h») que permite traducir el texto del mensaje al idioma actualmente seleccionado en el sistema del usuario. </para>
+<para
+>Las ayudas emergentes también se pueden añadir a cualquier widget personalizado usando la clase <classname
+>QToolTip</classname
+> proporcionada por Qt. Un ejemplo de esto sería: </para>
+</sect1>
+<sect1 id="c8s3">
+<title
+>Extendiendo la barra de estado</title>
+<para
+>Como las aplicaciones que heredan de <classname
+>KMainWindow</classname
+> también contienen una barra de estado, se ofrece un conjunto de mensajes de estado para todos los elementos del menú y de las barras de herramientas. Un mensaje de estado consiste en un texto corto que extiende el significado de una ayuda emergente; y también se puede considerar como un sustituto de las ayudas emergentes para los elementos del menú. Como su nombre indica, se muestra en la barra de estado cuando el usuario despliega un menú y sitúa el ratón sobre una de sus entradas. </para>
+</sect1>
+<sect1 id="c8s4">
+<title
+>El botón <guibutton
+>¿Qué es esto?</guibutton
+></title>
+<para
+>El botón <guibutton
+>¿Qué es esto?</guibutton
+> proporciona ventanas de ayuda con la idea de que el usuario necesita ayuda sobre cierto widget de la vista activa o de un elemento de una barra de herramientas. Se suele colocar en la misma barra de herramientas y se activa cuando el usuario pulsa su botón. El cursor cambia a una flecha con un signo de interrogación (con el mismo aspecto que muestra el botón). A partir de ese momento, el usuario puede pulsar sobre cualquier widget visible y obtener una ventana de ayuda. Como ejercicio, pruebe el comportamiento del botón <guibutton
+>¿Qué es esto?</guibutton
+> de &tdevelop;. </para>
+<para
+>Para añadir ayudas «¿Qué es esto?» a cualquiera de sus widgets, utilice el método estático <methodname
+>QWhatsThis::add(QWidget *widget, const QString &amp;texto)</methodname
+> </para>
+</sect1>
+</chapter>
+
+<chapter id="chapter9">
+<title
+>Documentación</title>
+<sect1 id="c9s1">
+<title
+>Introducción</title>
+<para
+>Debido al hecho de que los proyectos suelen carecer a menudo de documentación para el usuario, todos los proyectos que crea &tdevelop; contienen un manual previamente construido que puede ser fácilmente adaptado a sus necesidades. De este modo se satisface otro de los objetivos de KDE: proporcionar la suficiente ayuda en línea para los usuarios que no están familiarizados con el uso de una aplicación. Este capítulo le enseñará cómo extender la plantilla de documentación proporcionada y qué hacer para que el usuario disponga de ella. </para>
+</sect1>
+<sect1 id="c9s2">
+<title
+>Documentación del usuario</title>
+<para
+>La documentación de su proyecto reside en la carpeta «proyecto/doc/en», o tal vez en otra carpeta si el inglés no es su idioma nativo. Ahí existe un archivo («index.docbook») en el que se almacena la documentación. La forma de editar este archivo se explica en <ulink url="http://i18n.kde.org/doc/markup/"
+>la web de documentación de KDE</ulink
+>. </para>
+</sect1>
+<sect1 id="c9s3">
+<title
+>Documentación del programador</title>
+<para
+>Otra parte importante de la documentación consiste en incluir ayuda descriptiva para las interfaces de las clases que implementa su programa. Esto le ayudará a usted y a otros programadores a usar sus clases leyendo la documentacióń HTML de las clases que se puede crear con KDoc. &tdevelop; soporta el uso de KDoc completamente creando la documentación de la biblioteca KDE. Del mismo modo, su infraestructura de aplicación ya está documentada. Antes de trabajar en el código proporcionado, sería interesante que leyera la documentación incluida en línea. A continuación se describe qué hacer para obtener la documentación del API, dónde le ayuda &tdevelop; a añadirla y qué tipos de etiquetas especiales proporciona KDoc. </para>
+</sect1>
+</chapter>
+
+<chapter id="chapter10">
+<title
+>Internacionalización</title>
+<sect1 id="c10s1">
+<title
+>Introducción</title>
+<para
+>i18n es un sistema de internacionalización que se usa para ofrecer versiones multilingües de una aplicación o proyecto. La dificultad de escribir aplicaciones reside en que solo soportan el idioma para el que han sido programadas. Esto se observa visualmente en las etiquetas, entradas de menú, y demás. El objetivo de la internacionalización es dotar de funciones a las aplicaciones y a las bibliotecas en el idioma del usuario, permitiendo a los que no dominan el idioma en el que fueron hechas que puedan utilizar su funcionalidad y sentirse más cómodos. </para>
+</sect1>
+<!--
+<sect1 id="c10s2">
+<title
+>How KDE support Internationalization</title>
+
+</sect1
+> -->
+</chapter>
+<!--
+<chapter id="chapter11">
+<title
+>Finding Errors</title>
+</chapter>
+
+<chapter id="chapter12">
+<title
+>Licensing</title>
+</chapter>
+
+<chapter id="chapter13">
+<title
+>References</title>
+</chapter>
+-->
+<chapter id="credits">
+<title
+>Créditos</title>
+
+<para
+>(... pendiente de escribir ...) </para>
+
+<!--CREDITS_FOR_TRANSLATORS-->
+
+</chapter
+> <!-- credits -->
+
+<appendix id="bibliography">
+<title
+>Bibliografía</title>
+<bibliography>
+
+<biblioentry>
+<title
+><ulink url="info://make/Top"
+>Manual de GNU Make</ulink
+></title>
+<authorgroup>
+<author
+><firstname
+>Richard M.</firstname
+><surname
+>Stallman</surname
+></author>
+<author
+><firstname
+>Roland</firstname
+><surname
+>McGrath</surname
+></author>
+</authorgroup>
+</biblioentry>
+
+<biblioentry>
+<title
+><ulink url="info://automake/Top"
+>GNU Automake</ulink
+></title>
+<authorgroup>
+<author
+><firstname
+>David</firstname
+><surname
+>MacKenzie</surname
+></author>
+<author
+><firstname
+>Tom</firstname
+><surname
+>Tromey</surname
+></author>
+</authorgroup>
+</biblioentry>
+
+<biblioentry>
+<title
+><ulink url="info://autoconf/Top"
+>GNU Autoconf</ulink
+></title>
+<authorgroup>
+<author
+><firstname
+>David</firstname
+><surname
+>MacKenzie</surname
+></author>
+<author
+><firstname
+>Ben</firstname
+><surname
+>Elliston</surname
+></author>
+</authorgroup>
+</biblioentry>
+
+<biblioentry>
+<title
+><ulink url="info://gcc/Top"
+>Uso de la colección del compilador GNU</ulink
+></title>
+<author
+><firstname
+>Richard M.</firstname
+><surname
+>Stallman</surname
+></author>
+</biblioentry>
+
+<biblioentry>
+<title
+><ulink url="info://libtool/Top"
+>GNU Libtool</ulink
+></title>
+<authorgroup>
+<author
+><firstname
+>Gordon</firstname
+><surname
+>Matzigkeit</surname
+></author>
+<author
+><firstname
+>Alexandre</firstname
+><surname
+>Oliva</surname
+></author>
+<author
+><firstname
+>Thomas</firstname
+><surname
+>Tanner</surname
+></author>
+<author
+><firstname
+>Gary V.</firstname
+><surname
+>Vaughan</surname
+></author>
+</authorgroup>
+</biblioentry>
+
+<biblioentry>
+<title
+>GNU Autoconf, Automake y Libtool</title>
+<edition
+>1st edition</edition>
+<pubdate
+>October 2000</pubdate>
+<authorgroup>
+<author
+><firstname
+>Gary V.</firstname
+><surname
+>Vaughan</surname
+></author>
+<author
+><firstname
+>Ben</firstname
+><surname
+>Elliston</surname
+></author>
+<author
+><firstname
+>Tom</firstname
+><surname
+>Tromey</surname
+></author>
+<author
+><firstname
+>Ian Lance</firstname
+><surname
+>Taylor</surname
+></author>
+</authorgroup>
+<publisher
+><publishername
+>New Riders Publishing</publishername
+></publisher>
+<isbn
+>ISBN 1578701902</isbn>
+</biblioentry>
+
+
+<biblioentry>
+<title
+>Programación avanzada en el entorno UNIX(R)</title>
+<edition
+>1st edition</edition>
+<pubdate
+>June 1992</pubdate>
+<author
+><firstname
+>W. Richard</firstname
+><surname
+>Stevens</surname
+></author>
+<publisher
+><publishername
+>Addison-Wesley Pub Co</publishername
+></publisher>
+<isbn
+>ISBN 0201563177</isbn>
+</biblioentry>
+
+<biblioentry>
+<title
+>Pensando en C++, volumen 1: Introducción al C++ estándar</title>
+<edition
+>2nd Edition</edition>
+<pubdate
+>April 15, 2000</pubdate>
+<author
+><firstname
+>Bruce</firstname
+><surname
+>Eckel</surname
+></author>
+<publisher
+><publishername
+>Prentice Hall</publishername
+></publisher>
+<isbn
+>ISBN 0139798099</isbn>
+</biblioentry>
+
+<biblioentry>
+<title
+>Desarrollo de código abierto con CVS</title>
+<edition
+>2nd Edition</edition>
+<pubdate
+>October 12, 2001</pubdate>
+<authorgroup>
+<author
+><firstname
+>Karl</firstname
+><surname
+>Fogel</surname
+></author>
+<author
+><firstname
+>Moshe</firstname
+><surname
+>Bar</surname
+></author>
+</authorgroup>
+<publisher
+><publishername
+>The Coriolis Group</publishername
+></publisher>
+<isbn
+>ISBN 158880173X</isbn>
+</biblioentry>
+
+<biblioentry>
+<title
+>Programación en PHP</title>
+<edition
+>1st edition</edition>
+<pubdate
+>March 2002</pubdate>
+<authorgroup>
+<author
+><firstname
+>Rasmus</firstname
+><surname
+>Lerdorf</surname
+></author>
+<author
+><firstname
+>Kevin</firstname
+><surname
+>Tatroe</surname
+></author>
+</authorgroup>
+<publisher
+><publishername
+>O'Reilly &amp; Associates</publishername
+></publisher>
+<isbn
+>ISBN 1565926102</isbn>
+</biblioentry>
+
+<biblioentry>
+<title
+>Programación en Python</title>
+<edition
+>2nd Edition</edition>
+<pubdate
+>March 2001</pubdate>
+<author
+><firstname
+>Mark</firstname
+><surname
+>Lutz</surname
+></author>
+<publisher
+><publishername
+>O'Reilly &amp; Associates</publishername
+></publisher>
+<isbn
+>ISBN 0596000855</isbn>
+</biblioentry>
+
+<biblioentry>
+<title
+>Programación GUI con Python: Uso del toolkit Qt</title>
+<edition
+>Bk&amp;Cd-r edition</edition>
+<pubdate
+>January 2002</pubdate>
+<author
+><firstname
+>Boudewijn</firstname
+><surname
+>Rempt</surname
+></author>
+<publisher
+><publishername
+>Opendocs Llc</publishername
+></publisher>
+<isbn
+>ISBN 0970033044</isbn>
+</biblioentry>
+
+<biblioentry>
+<title
+>Programación en Perl</title>
+<subtitle
+>El libro del camello</subtitle>
+<edition
+>3rd Edition</edition>
+<pubdate
+>July 2000</pubdate>
+<authorgroup>
+<author
+><firstname
+>Larry</firstname
+><surname
+>Wall</surname
+></author>
+<author
+><firstname
+>Tom</firstname
+><surname
+>Christiansen</surname
+></author>
+<author
+><firstname
+>Jon</firstname
+><surname
+>Orwant</surname
+></author>
+</authorgroup>
+<publisher
+><publishername
+>O'Reilly &amp; Associates</publishername
+></publisher>
+<isbn
+>ISBN 0596000278</isbn>
+</biblioentry>
+
+<biblioentry>
+<title
+>Aprenda Perl</title>
+<subtitle
+>El libro del lama</subtitle>
+<edition
+>3rd Edition</edition>
+<pubdate
+>July 15, 2001</pubdate>
+<authorgroup>
+<author
+><firstname
+>Randal L.</firstname
+><surname
+>Schwartz</surname
+></author>
+<author
+><firstname
+>Tom</firstname
+><surname
+>Phoenix</surname
+></author>
+</authorgroup>
+<publisher
+><publishername
+>O'Reilly &amp; Associates</publishername
+></publisher>
+<isbn
+>ISBN 0596001320</isbn>
+</biblioentry>
+
+</bibliography>
+
+&underFDL;
+
+
+</appendix>
+
+</book>
diff --git a/tde-i18n-es/docs/tdevelop/kde_app_devel/kscribblefiles.png b/tde-i18n-es/docs/tdevelop/kde_app_devel/kscribblefiles.png
new file mode 100644
index 00000000000..d06fdd4fed1
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kde_app_devel/kscribblefiles.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/Makefile.am b/tde-i18n-es/docs/tdevelop/kdearch/Makefile.am
new file mode 100644
index 00000000000..2d733d1b104
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/Makefile.am
@@ -0,0 +1,4 @@
+KDE_LANG = es
+SUBDIRS = $(AUTODIRS)
+KDE_DOCS = AUTO
+KDE_MANS = AUTO
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/Makefile.in b/tde-i18n-es/docs/tdevelop/kdearch/Makefile.in
new file mode 100644
index 00000000000..61f5050105f
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/Makefile.in
@@ -0,0 +1,635 @@
+# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# KDE tags expanded automatically by am_edit - $Revision: 483858 $
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+subdir = docs/tdevelop/kdearch
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+#>- html-recursive info-recursive install-data-recursive \
+#>- install-dvi-recursive install-exec-recursive \
+#>- install-html-recursive install-info-recursive \
+#>- install-pdf-recursive install-ps-recursive install-recursive \
+#>- installcheck-recursive installdirs-recursive pdf-recursive \
+#>- ps-recursive uninstall-recursive
+#>+ 7
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+#>+ 1
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+ARTSCCONFIG = @ARTSCCONFIG@
+AUTOCONF = @AUTOCONF@
+AUTODIRS = @AUTODIRS@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CONF_FILES = @CONF_FILES@
+CYGPATH_W = @CYGPATH_W@
+DCOPIDL = @DCOPIDL@
+DCOPIDL2CPP = @DCOPIDL2CPP@
+DCOPIDLNG = @DCOPIDLNG@
+DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
+DEFS = @DEFS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+GMSGFMT = @GMSGFMT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@
+KCONFIG_COMPILER = @KCONFIG_COMPILER@
+KDECONFIG = @KDECONFIG@
+KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@
+KDE_RPATH = @KDE_RPATH@
+KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAKEKDEWIDGETS = @MAKEKDEWIDGETS@
+MCOPIDL = @MCOPIDL@
+MEINPROC = @MEINPROC@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TOPSUBDIRS = @TOPSUBDIRS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XMLLINT = @XMLLINT@
+X_RPATH = @X_RPATH@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+#>- bindir = @bindir@
+#>+ 2
+DEPDIR = .deps
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kde_appsdir = @kde_appsdir@
+kde_bindir = @kde_bindir@
+kde_confdir = @kde_confdir@
+kde_datadir = @kde_datadir@
+kde_htmldir = @kde_htmldir@
+kde_icondir = @kde_icondir@
+kde_kcfgdir = @kde_kcfgdir@
+kde_libs_htmldir = @kde_libs_htmldir@
+kde_libs_prefix = @kde_libs_prefix@
+kde_locale = @kde_locale@
+kde_mimedir = @kde_mimedir@
+kde_moduledir = @kde_moduledir@
+kde_servicesdir = @kde_servicesdir@
+kde_servicetypesdir = @kde_servicetypesdir@
+kde_sounddir = @kde_sounddir@
+kde_styledir = @kde_styledir@
+kde_templatesdir = @kde_templatesdir@
+kde_wallpaperdir = @kde_wallpaperdir@
+kde_widgetdir = @kde_widgetdir@
+tdeinitdir = @tdeinitdir@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+xdg_appsdir = @xdg_appsdir@
+xdg_directorydir = @xdg_directorydir@
+xdg_menudir = @xdg_menudir@
+KDE_LANG = es
+#>- SUBDIRS = $(AUTODIRS)
+#>+ 1
+SUBDIRS =.
+KDE_DOCS = AUTO
+KDE_MANS = AUTO
+#>- all: all-recursive
+#>+ 1
+all: docs-am all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+#>- @for dep in $?; do \
+#>- case '$(am__configure_deps)' in \
+#>- *$$dep*) \
+#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+#>- && exit 0; \
+#>- exit 1;; \
+#>- esac; \
+#>- done; \
+#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/kdearch/Makefile'; \
+#>- cd $(top_srcdir) && \
+#>- $(AUTOMAKE) --gnu docs/tdevelop/kdearch/Makefile
+#>+ 12
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/kdearch/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu docs/tdevelop/kdearch/Makefile
+ cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdevelop/kdearch/Makefile.in
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+#>- distdir: $(DISTFILES)
+#>+ 1
+distdir: distdir-nls $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+#>- uninstall: uninstall-recursive
+#>+ 1
+uninstall: uninstall-docs uninstall-nls uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+#>- clean: clean-recursive
+#>+ 1
+clean: kde-rpo-clean clean-recursive
+
+#>- clean-am: clean-generic mostlyclean-am
+#>+ 1
+clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+#>- install-data-am:
+#>+ 1
+install-data-am: install-docs install-nls
+
+install-dvi: install-dvi-recursive
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
+ install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic ctags \
+ ctags-recursive distclean distclean-generic distclean-tags \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
+ tags-recursive uninstall uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
+
+#>+ 2
+KDE_DIST=affine-translate.png index.docbook affine-general.png opengl.png konqi-normal.png joinmiter.png kview-menu.png capflat.png capround.png index.cache.bz2 konqi-rotated.png affine-rotate.png konqi-sheared.png capsquare.png affine-shear.png whatsthis.png penstyles.png konqi-mirrored.png canvas.png Makefile.in brushstyles.png joinround.png joinbevel.png affine-scale.png Makefile.am
+
+#>+ 24
+index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) canvas.png affine-translate.png konqi-normal.png opengl.png capsquare.png index.docbook affine-shear.png joinbevel.png konqi-rotated.png capround.png whatsthis.png brushstyles.png penstyles.png joinmiter.png affine-scale.png kview-menu.png capflat.png konqi-mirrored.png affine-rotate.png konqi-sheared.png affine-general.png joinround.png
+ @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi
+
+docs-am: index.cache.bz2
+
+install-docs: docs-am install-nls
+ $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdearch
+ @if test -f index.cache.bz2; then \
+ echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdearch/; \
+ $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdearch/; \
+ elif test -f $(srcdir)/index.cache.bz2; then \
+ echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdearch/; \
+ $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdearch/; \
+ fi
+ -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdearch/common
+ $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdearch/common
+
+uninstall-docs:
+ -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdearch
+
+clean-docs:
+ -rm -f index.cache.bz2
+
+
+#>+ 13
+install-nls:
+ $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdearch
+ @for base in canvas.png affine-translate.png konqi-normal.png opengl.png capsquare.png index.docbook affine-shear.png joinbevel.png konqi-rotated.png capround.png whatsthis.png brushstyles.png penstyles.png joinmiter.png affine-scale.png kview-menu.png capflat.png konqi-mirrored.png affine-rotate.png konqi-sheared.png affine-general.png joinround.png ; do \
+ echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdearch/$$base ;\
+ $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdearch/$$base ;\
+ done
+
+uninstall-nls:
+ for base in canvas.png affine-translate.png konqi-normal.png opengl.png capsquare.png index.docbook affine-shear.png joinbevel.png konqi-rotated.png capround.png whatsthis.png brushstyles.png penstyles.png joinmiter.png affine-scale.png kview-menu.png capflat.png konqi-mirrored.png affine-rotate.png konqi-sheared.png affine-general.png joinround.png ; do \
+ rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdearch/$$base ;\
+ done
+
+
+#>+ 5
+distdir-nls:
+ for file in canvas.png affine-translate.png konqi-normal.png opengl.png capsquare.png index.docbook affine-shear.png joinbevel.png konqi-rotated.png capround.png whatsthis.png brushstyles.png penstyles.png joinmiter.png affine-scale.png kview-menu.png capflat.png konqi-mirrored.png affine-rotate.png konqi-sheared.png affine-general.png joinround.png ; do \
+ cp $(srcdir)/$$file $(distdir); \
+ done
+
+#>+ 15
+force-reedit:
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/kdearch/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu docs/tdevelop/kdearch/Makefile
+ cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdevelop/kdearch/Makefile.in
+
+
+#>+ 21
+clean-bcheck:
+ rm -f *.bchecktest.cc *.bchecktest.cc.class a.out
+
+bcheck: bcheck-recursive
+
+bcheck-am:
+ @for i in ; do \
+ if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \
+ echo "int main() {return 0;}" > $$i.bchecktest.cc ; \
+ echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \
+ echo "$$i"; \
+ if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \
+ rm -f $$i.bchecktest.cc; exit 1; \
+ fi ; \
+ echo "" >> $$i.bchecktest.cc.class; \
+ perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \
+ rm -f a.out; \
+ fi ; \
+ done
+
+
+#>+ 3
+final:
+ $(MAKE) all-am
+
+#>+ 3
+final-install:
+ $(MAKE) install-am
+
+#>+ 3
+no-final:
+ $(MAKE) all-am
+
+#>+ 3
+no-final-install:
+ $(MAKE) install-am
+
+#>+ 3
+kde-rpo-clean:
+ -rm -f *.rpo
+
+#>+ 3
+nmcheck:
+nmcheck-am: nmcheck
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/affine-general.png b/tde-i18n-es/docs/tdevelop/kdearch/affine-general.png
new file mode 100644
index 00000000000..970b0c6a622
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/affine-general.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/affine-rotate.png b/tde-i18n-es/docs/tdevelop/kdearch/affine-rotate.png
new file mode 100644
index 00000000000..3931634d051
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/affine-rotate.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/affine-scale.png b/tde-i18n-es/docs/tdevelop/kdearch/affine-scale.png
new file mode 100644
index 00000000000..0566bb84a10
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/affine-scale.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/affine-shear.png b/tde-i18n-es/docs/tdevelop/kdearch/affine-shear.png
new file mode 100644
index 00000000000..61e293091d1
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/affine-shear.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/affine-translate.png b/tde-i18n-es/docs/tdevelop/kdearch/affine-translate.png
new file mode 100644
index 00000000000..06a0f674558
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/affine-translate.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/brushstyles.png b/tde-i18n-es/docs/tdevelop/kdearch/brushstyles.png
new file mode 100644
index 00000000000..5b28a263fb2
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/brushstyles.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/canvas.png b/tde-i18n-es/docs/tdevelop/kdearch/canvas.png
new file mode 100644
index 00000000000..3f0fcf9e8e7
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/canvas.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/capflat.png b/tde-i18n-es/docs/tdevelop/kdearch/capflat.png
new file mode 100644
index 00000000000..419b0898d29
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/capflat.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/capround.png b/tde-i18n-es/docs/tdevelop/kdearch/capround.png
new file mode 100644
index 00000000000..ee2d7cb0c44
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/capround.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/capsquare.png b/tde-i18n-es/docs/tdevelop/kdearch/capsquare.png
new file mode 100644
index 00000000000..9234d942da1
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/capsquare.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/index.cache.bz2 b/tde-i18n-es/docs/tdevelop/kdearch/index.cache.bz2
new file mode 100644
index 00000000000..cbae8e11598
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/index.cache.bz2
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/index.docbook b/tde-i18n-es/docs/tdevelop/kdearch/index.docbook
new file mode 100644
index 00000000000..f9548c5cb42
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/index.docbook
@@ -0,0 +1,3684 @@
+<?xml version="1.0" ?>
+<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
+ <!ENTITY % addindex "INCLUDE">
+ <!ENTITY % Spanish "INCLUDE"
+> <!-- change language only here -->
+]>
+
+<book lang="&language;">
+
+<bookinfo>
+<title
+>Introducción a la arquitectura de KDE</title>
+
+<date
+></date>
+<releaseinfo
+></releaseinfo>
+
+<authorgroup>
+<author
+><firstname
+>Bernd</firstname
+> <surname
+>Gehrmann</surname
+> <affiliation
+><address
+><email
+>bernd@tdevelop.org</email
+></address
+></affiliation>
+</author>
+</authorgroup>
+
+<copyright>
+<year
+>2001</year>
+<year
+>2002</year>
+<holder
+>Bernd Gehrmann</holder>
+</copyright>
+
+<legalnotice
+>&FDLNotice;</legalnotice>
+
+<abstract>
+<para
+>Esta documentación es una introducción a la plataforma de desarrollo de KDE</para>
+</abstract>
+
+<keywordset>
+<keyword
+>KDE</keyword>
+<keyword
+>arquitectura</keyword>
+<keyword
+>desarrollo</keyword>
+<keyword
+>programación</keyword>
+</keywordset>
+
+</bookinfo>
+
+<chapter id="structure">
+<title
+>Estructura de bibliotecas</title>
+
+<simplesect id="structure-byname">
+<title
+>Bibliotecas por nombre</title>
+
+<variablelist>
+
+<varlistentry>
+<term
+><ulink url="kdeapi:tdecore/index.html"
+>tdecore</ulink
+></term>
+<listitem
+><para
+>La biblioteca tdecore es el marco de trabajo de aplicación básico para cualquier programa basado en KDE. Proporciona acceso al sistema de configuración, a la gestión de la línea de órdenes, a la carga y manipulación de iconos, a algunos tipos especiales de comunicación entre procesos, al manejo de archivos y a otras utilidades varias. </para
+></listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><ulink url="kdeapi:tdeui/index.html"
+>tdeui</ulink
+></term>
+<listitem
+><para
+>La biblioteca <literal
+>tdeui</literal
+> proporciona muchos widgets y diálogos estándar que Qt no incluye o proporciona de forma menos completa. También incluye varios componentes que son subclases de otros de Qt y están mejor integrados en el entorno KDE al respetar las preferencias de los usuarios. </para
+></listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><ulink url="kdeapi:kio/index.html"
+>kio</ulink
+></term>
+<listitem
+><para
+>La biblioteca <literal
+>kio</literal
+> contiene facilidades para la E/S transparente y asíncrona de red, así como acceso al manejo de tipos MIME. También proporciona el diálogo de archivos de KDE y sus clases auxiliares. </para
+></listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><ulink url="kdeapi:kjs/index.html"
+>kjs</ulink
+></term>
+<listitem
+><para
+>La biblioteca <literal
+>kjs</literal
+> proporciona una implementación de JavaScript. </para
+></listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><ulink url="kdeapi:khtml/index.html"
+>khtml</ulink
+></term>
+<listitem
+><para
+>La biblioteca <literal
+>khtml</literal
+> contiene el módulo KHTML, un widget de navegación HTML, el API y un procesador de DOM, incluyendo interfaces para Java y JavaScript. </para
+></listitem>
+</varlistentry>
+
+</variablelist>
+
+</simplesect>
+
+
+<simplesect id="structure-grouped">
+<title
+>Clases agrupadas</title>
+
+<para
+>Esquema principal de una aplicación - clases que son necesarias en casi cualquier aplicación. </para>
+
+<itemizedlist>
+
+<listitem
+><formalpara>
+<title
+><ulink url="kdeapi:tdecore/KApplication"
+>KApplication</ulink
+></title>
+<para
+>Inicia y controla una aplicación de KDE. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara>
+<title
+><ulink url="kdeapi:tdecore/KUniqueApplication"
+>KUniqueApplication</ulink
+></title>
+<para
+>Se asegura de que solo se ejecuta una sesión de la aplicación en cada momento. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KAboutData"
+>KAboutData</ulink
+></title>
+<para
+>Contiene la información de la ventana «Acerca de». </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KCmdLineArgs"
+>KCmdLineArgs</ulink
+></title>
+<para
+>Procesamiento de argumentos de la línea de órdenes. </para>
+</formalpara
+></listitem>
+
+</itemizedlist>
+
+<para
+>Preferencias de configuración - acceso a la base de datos de configuración jerárquica de KDE, a las preferencias globales y a los recursos de la aplicación. </para>
+
+<itemizedlist>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KConfig"
+>KConfig</ulink
+></title>
+<para
+>Proporciona acceso a la base de datos de configuración de KDE. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KSimpleConfig"
+>KSimpleConfig</ulink
+></title>
+<para
+>Acceso a archivos de configuración simples y no jerárquicos. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KDesktopFile"
+>KDesktopFile</ulink
+></title>
+<para
+>Acceso a los archivo <literal
+>.desktop</literal
+>. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KGlobalSettings"
+>KGlobalSettings</ulink
+></title>
+<para
+>Acceso cómodo a las preferencias que no son específicas de la aplicación. </para>
+</formalpara
+></listitem>
+
+</itemizedlist>
+
+<para
+>Manejo de archivos y URLs - descodificación de URLs, archivos temporales, etc. </para>
+
+<itemizedlist>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KURL"
+>KURL</ulink
+></title>
+<para
+>Representa y procesa URLs. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KTempFile"
+>KTempFile</ulink
+></title>
+<para
+>Crea archivos de nombre único para almacenamiento temporal. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KSaveFile"
+>KSaveFile</ulink
+></title>
+<para
+>Permite guardar archivos en segmentos. </para>
+</formalpara
+></listitem>
+
+</itemizedlist>
+
+<para
+>Comunicación entre procesos - clases auxiliares para DCOP e invocación de subprocesos. </para>
+
+<itemizedlist>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KProcess"
+>KProcess</ulink
+></title>
+<para
+>Invoca y controla procesos hijo. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KShellProcess"
+>KShellProcess</ulink
+></title>
+<para
+>Invoca procesos hijo a través de un intérprete de comandos. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdesu/PtyProcess"
+>PtyProcess</ulink
+></title>
+<para
+>Comunicación con procesos hijo a través de una pseudo terminal. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KIPC"
+>KIPC</ulink
+></title>
+<para
+>Comunicación entre procesos simple utilizando ClientMessages de X11. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:dcop/DCOPClient"
+>DCOPClient</ulink
+></title>
+<para
+>Mensajería DCOP. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KDCOPPropertyProxy"
+>KDCOPPropertyProxy</ulink
+></title>
+<para
+>Una clase proxy que publica las propiedades de Qt a través de DCOP. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KDCOPActionProxy"
+>KDCOPActionProxy</ulink
+></title>
+<para
+>Una clase proxy que publica un interfaz DCOP para realizar acciones. </para>
+</formalpara
+></listitem>
+
+</itemizedlist>
+
+<para
+>Clases de utilidades - gestión de memoria, expresiones regulares, manipulación de cadenas, números aleatorios </para>
+
+<itemizedlist>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KRegExp"
+>KRegExp</ulink
+></title>
+<para
+>Tratamiento de expresiones regulares según POSIX. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KStringHandler"
+>KStringHandler</ulink
+></title>
+<para
+>Una extravagante interfaz para la manipulación de cadenas. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KZoneAllocator"
+>KZoneAllocator</ulink
+></title>
+<para
+>Localización eficiente de memoria para grandes grupos de pequeños objetos. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KRandomSequence"
+>KRandomSequence</ulink
+></title>
+<para
+>Generador de números pseudo aleatorios. </para>
+</formalpara
+></listitem>
+
+</itemizedlist>
+
+<para
+>Aceleradores de teclado - clases de ayuda para el establecimiento de atajos de teclado consistentes con el escritorio. </para>
+
+<itemizedlist>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KAccel"
+>KAccel</ulink
+></title>
+<para
+>Collección de atajos de teclado. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KStdAccel"
+>KStdAccel</ulink
+></title>
+<para
+>Acceso sencillo a los atajos de teclado más comunes. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KGlobalAccel"
+></ulink
+></title>
+<para
+>Colección de atajos de teclado que afectan a todo el sistema. </para>
+</formalpara
+></listitem>
+
+</itemizedlist>
+
+<para
+>Procesamiento de imágenes - carga y manipulación de iconos. </para>
+
+<itemizedlist>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KIconLoader"
+>KIconLoader</ulink
+></title>
+<para
+>Carga iconos de una forma consistente con los temas de escritorio. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KIconTheme"
+>KIconTheme</ulink
+></title>
+<para
+>Clases de ayuda para KIconLoader. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KPixmap"
+>KPixmap</ulink
+></title>
+<para
+>Una clase de mapa de pixels con posibilidades extendidas de optimización de colores. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KPixmapEffect"
+>KPixmapEffect</ulink
+></title>
+<para
+>Efectos de mapas de píxels como gradientes y patrones. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KPixmapIO"
+>KPixmapIO</ulink
+></title>
+<para
+>Conversión rápida de <classname
+>QImage</classname
+> a <classname
+>QPixmap</classname
+>. </para>
+</formalpara
+></listitem>
+
+</itemizedlist>
+
+<para
+>Arrastrar y soltar - objetos de arrastre para colores y URLs. </para>
+
+<itemizedlist>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KURLDrag"
+>KURLDrag</ulink
+></title>
+<para
+>Un objeto de arrastre para URLs. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KColorDrag"
+>KColorDrag</ulink
+></title>
+<para
+>Un objeto de arrastre para colores. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KMultipleDrag"
+>KMultipleDrag</ulink
+></title>
+<para
+>Permite construir objetos de arrastre a partir varios otros. </para>
+</formalpara
+></listitem>
+
+</itemizedlist>
+
+<para
+>Autocompletado </para>
+
+<itemizedlist>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KCompletion"
+>KCompletion</ulink
+></title>
+<para
+>Autocompletado de cadenas genérico. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:kio/KURLCompletion"
+>KURLCompletion</ulink
+></title>
+<para
+>Autocompletado de URLs. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:kio/KShellCompletion"
+>KShellCompletion</ulink
+></title>
+<para
+>Autocompletado de ejecutables. </para>
+</formalpara
+></listitem>
+
+</itemizedlist>
+
+<para
+>Widgets - clases de widgets para vistas de lista, reglas, selección de colores, etc. </para>
+
+<itemizedlist>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KListView"
+>KListView</ulink
+></title>
+<para
+>Una variante de <classname
+>QListView</classname
+> que se ajusta a las preferencias globales del sistema KDE. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KListView"
+>KListBox</ulink
+></title>
+<para
+>Una variante de <classname
+>QListBox</classname
+> que se ajusta a las preferencias globales del sistema KDE. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KListView"
+>KIconView</ulink
+></title>
+<para
+>Una variante de <classname
+>QIconView</classname
+> que se ajusta a las preferencias globales del sistema KDE. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KListView"
+>KLineEdit</ulink
+></title>
+<para
+>Una variante de <classname
+>QLineEdit</classname
+> con soporte para autocompletado. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KComboBox"
+>KComboBox</ulink
+></title>
+<para
+>Una variante de <classname
+>QComboBox</classname
+> con soporte para autocompletado. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KFontCombo"
+>KFontCombo</ulink
+></title>
+<para
+>Una lista desplegable para la selección de fuentes. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KColorCombo"
+>KColorCombo</ulink
+></title>
+<para
+>Una lista desplegable para la selección de colores. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KColorButton"
+>KColorButton</ulink
+></title>
+<para
+>Un botón para la selección de colores. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KURLCombo"
+>KURLCombo</ulink
+></title>
+<para
+>Una lista desplegable para la selección de nombres de archivos y URLs. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:kfile/KURLRequester"
+>KURLRequester</ulink
+></title>
+<para
+>Una línea de edición para seleccionar nombres de archivos y URLs. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KRuler"
+>KRuler</ulink
+></title>
+<para
+>Un widget de una regla. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink
+url="kdeapi:tdeui/KAnimWidget"
+>KAnimWidget</ulink
+></title>
+<para
+>animaciones. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KNumInput"
+>KNumInput</ulink
+></title>
+<para
+>Un widget para la entrada de números. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KPasswordEdit"
+>KPasswordEdit</ulink
+></title>
+<para
+>Un widget para la entrada de contraseñas. </para>
+</formalpara
+></listitem>
+
+</itemizedlist>
+
+<para
+>Diálogos - díalogos completos para la selección de archivos, colores y fuentes. </para>
+
+<itemizedlist>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:kfile/KFileDialog"
+>KFileDialog</ulink
+></title>
+<para
+>Un diálogo de selección de archivos. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KColorDialog"
+>KColorDialog</ulink
+></title>
+<para
+>Un diálogo de selección de colores. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KFontDialog"
+>KFontDialog</ulink
+></title>
+<para
+>Un diálogo para la selección de fuentes. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:kfile/KIconDialog"
+>KIconDialog</ulink
+></title>
+<para
+>Un diálogo para la selección de iconos. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KKeyDialog"
+>KKeyDialog</ulink
+></title>
+<para
+>Un diálogo para la edición de atajos de teclado. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KEditToolBar"
+>KEditToolBar</ulink
+></title>
+<para
+>Un diálogo para la edición de barras de herramientas. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KTipDialog"
+>KTipDialog</ulink
+></title>
+<para
+>Un diálogo para mostrar consejos. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KAboutDialog"
+>KAboutDialog</ulink
+></title>
+<para
+>Un diálogo de información de la aplicación. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KLineEditDlg"
+>KLineEditDlg</ulink
+></title>
+<para
+>Un diálogo simple para la entrada de texto. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:kfile/KURLRequesterDlg"
+>KURLRequesterDlg</ulink
+></title>
+<para
+>Un diálogo simple para la entrada de URLs. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KMessageBox"
+>KMessageBox</ulink
+></title>
+<para
+>Un diálogo para indicar errores y advertencias. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KPasswordDialog"
+>KPasswordDialog</ulink
+></title>
+<para
+>Un diálogo para la entrada de contraseñas. </para>
+</formalpara
+></listitem>
+
+</itemizedlist>
+
+<para
+>Acciones y entorno gráfico XML </para>
+
+<itemizedlist>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KAction"
+>KAction</ulink
+></title>
+<para
+>Abstracción de una acción que puede ser conectada a barras de menús y barras de herramientas. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KActionCollection"
+>KActionCollection</ulink
+></title>
+<para
+>Un conjunto de acciones. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdeui/KXMLGUIClient"
+>KXMLGUIClient</ulink
+></title>
+<para
+>Un fragmento de entorno gráfico que contiene una colección de acciones y un árbol DOM que representa su ubicación en el entorno gráfico. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:kparts/KPartManager"
+>KPartManager</ulink
+></title>
+<para
+>Gestiona la activación de cliente de entorno gráfico XML. </para>
+</formalpara
+></listitem>
+
+</itemizedlist>
+
+<para
+>Extensiones y componentes </para>
+
+<itemizedlist>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KLibrary"
+>KLibrary</ulink
+></title>
+<para
+>Representa una biblioteca de carga dinámica. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KLibrary"
+>KLibLoader</ulink
+></title>
+<para
+>Carga de bibliotecas compartidas. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:tdecore/KLibFactory"
+>KLibFactory</ulink
+></title>
+<para
+>Factoría de objetos en las extensiones. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:kio/KServiceType"
+>KServiceType</ulink
+></title>
+<para
+>Representa un tipo de servicio. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:kio/KService"
+>KService</ulink
+></title>
+<para
+>Representa un servicio. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:kio/KMimeType"
+>KMimeType</ulink
+></title>
+<para
+>Representa un tipo MIME. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:kio/KServiceTypeProfile"
+>KServiceTypeProfile</ulink
+></title>
+<para
+>Preferencias del usuario para asignación de tipos MIME. </para>
+</formalpara
+></listitem>
+
+<listitem
+><formalpara
+><title
+><ulink url="kdeapi:kio/KServiceTypeProfile"
+>KTrader</ulink
+></title>
+<para
+>Consultas para servicios. </para>
+</formalpara
+></listitem>
+
+</itemizedlist>
+
+</simplesect>
+
+</chapter>
+
+
+
+<chapter id="graphics">
+<title
+>Gráficos</title>
+
+<sect1 id="graphics-qpainter">
+<title
+>Gráficos de bajo nivel con QPainter</title>
+
+<simplesect id="qpainter-rendering">
+<title
+>Procesado con QPainter</title>
+
+<para
+>El model de gráficos de bajo nivel de Qt se basa en las capacidades proporcionadas por X11 y otros sitemas de ventanas para los que existen versiones de Qt. Pero también extiende las opciones mencionadas implementando características adicionales como transformaciones de tamaño arbitrario para textos y mapas de pixels. </para>
+
+<para
+>La clase central para la realización de gráficos 2D en Qt es <ulink url="kdeapi:qt/QPainter"
+>QPainter</ulink
+>. Puede dibujar en un <ulink url="kdeapi:qt/QPaintDevice"
+>QPaintDevice</ulink
+>. Hay implementados tres dispositivos de pintura posibles: uno es <ulink url="kdeapi:qt/QWidget"
+>QWidget</ulink
+>, que representa un widget de la pantalla. El segundo es <ulink url="kdeapi:qt/QPrinter"
+>QPrinter</ulink
+> que representa una impresora y produce salida PostScript. El tercero es la clase <ulink url="kdeapi:qt/QPicture"
+>QPicture</ulink
+>, que almacena comandos de dibujo y puede guardarlos en el disco para reproducirlos posteriormente. Un formato de almacenamiento posible para los comandos de dibujo es el estándar de W3C denominado SVG. </para>
+
+<para
+>Por lo tanto, es posible reutilizar el código de procesado que se utiliza para mostrar un widget en su impresión posterior, con las mismas características soportadas. Obviamente, en la práctica, el código se utiliza en un contexto ligeramente distinto. El dibujo en un widget se realiza casi exclusivamente en el método paintEvent() de la clase del widget. </para>
+
+<programlisting
+>void FooWidget::paintEvent()
+{
+ QPainter p(esto);
+ // Configurar sistema de dibujo
+ // Utilizar sistema de dibujo
+}
+</programlisting>
+
+<para
+>Al dibujar en la impresora, hay que asegurarse de utilizar QPrinter::newPage() para terminar una página y comenzar la siguiente - algo que, naturalmente, no resulta relevante al dibujar en los widgets. Además, al imprimir, puede ser interesante utilizar la <ulink url="kdeapi:qt/QPaintDeviceMetrics"
+>métrica del dispositivo</ulink
+> para computar las coordenadas. </para>
+
+</simplesect>
+
+
+<simplesect id="qpainter-transformations">
+<title
+>Transformaciones</title>
+
+<para
+>De forma predeterminada, al utilizar QPainter, este dibuja en el sistema de coordenadas natural del dispositivo utilizado. Esto significa, si usted dibuja una línea a lo largo del eje horizontal con una longitud de 10 unidades, que aparecerá como una línea horizontal con una longitud de 10 píxeles en la pantalla. Sin embargo, QPainter puede aplicar transformaciones de tamaño arbitrario antes de dibujar físicamente las formas y las curvas. Una transformación de tamaño asigna las coordenadas x e y de forma lineal a x' e y' de acuerdo con </para>
+
+<mediaobject>
+<imageobject
+><imagedata fileref="affine-general.png"/></imageobject>
+</mediaobject>
+
+<para
+>La matriz 3x3 de esta ecuación se puede establecer con QPainter::setWorldMatrix() y es de tipo <ulink url="kdeapi:qt/QWMatrix"
+>QWMatrix</ulink
+>. Normalmente, esta es la matriz de identidad, es decir, m11 y m22 son uno, y el resto de parámetros son cero. Básicamente hay tres grupos diferentes de transformaciones: </para>
+
+<itemizedlist>
+
+<listitem
+><formalpara>
+<title
+>Desplazamientos</title>
+<para
+>Mueven todos los puntos de un objeto una cantidad determinada en alguna dirección. Una matriz de desplazamiento se puede obtener invocando el método m.translate(dx, dy) de una QWMatrix. Esto corresponde a la matriz </para>
+</formalpara>
+
+<mediaobject>
+<imageobject
+><imagedata fileref="affine-translate.png"/></imageobject>
+</mediaobject>
+
+</listitem>
+
+<listitem
+><formalpara>
+<title
+>Escalado</title>
+<para
+>Amplian o reducen las coordenadas de un objeto para hacerlo mayor o menor evitando la distorsión. Una transformación de escalado se puede aplicar a una QWMatrix invocando m.scale(sx, sy). Esto corresponde a la matriz </para>
+</formalpara>
+
+<mediaobject>
+<imageobject
+><imagedata fileref="affine-scale.png"/></imageobject>
+</mediaobject>
+
+<para
+>Si se establece uno de los parámetros a un valor negativo, se puede conseguir una visión simétrica del sistema de coordenadas. </para>
+
+</listitem>
+
+<listitem
+><formalpara>
+<title
+>Corte</title>
+<para
+>Una distorsión del sistema de coordenadas con dos parámetros. Una transformación de corte se puede aplicar invocanza m.shear(sh, sv), correspondiente a la matriz </para>
+</formalpara>
+
+<mediaobject>
+ <imageobject
+><imagedata fileref="affine-shear.png"/></imageobject>
+</mediaobject>
+
+</listitem>
+
+<listitem
+><formalpara>
+<title
+>Giro</title>
+<para
+>Gira un objeto. Una transformación de giro se puede aplicar invocando m.rotate(alpha). Tenga en cuenta que el ángulo debe ser expresado en grados, y no como un ángulo matemático. La matriz correspondiente es </para>
+</formalpara>
+
+<mediaobject>
+<imageobject
+><imagedata fileref="affine-rotate.png"/></imageobject>
+</mediaobject>
+
+<para
+>Fíjese en que un giro es equivalente a una combinación de escalado y corte. </para>
+
+</listitem>
+
+</itemizedlist>
+
+<para
+>Aquí se muestran algunas imágenes que muestran el efecto de transformaciones elementales sobre nuestra mascota: </para>
+
+<informaltable frame="none">
+<tgroup cols="3">
+<tbody>
+<row>
+<entry
+><mediaobject>
+ <imageobject
+><imagedata fileref="konqi-normal.png"/></imageobject>
+</mediaobject
+></entry>
+<entry
+><mediaobject>
+ <imageobject
+><imagedata fileref="konqi-rotated.png"/></imageobject>
+</mediaobject
+></entry>
+<entry
+><mediaobject>
+ <imageobject
+><imagedata fileref="konqi-sheared.png"/></imageobject>
+</mediaobject
+></entry>
+<entry
+><mediaobject>
+ <imageobject
+><imagedata fileref="konqi-mirrored.png"/></imageobject>
+</mediaobject
+></entry>
+</row>
+<row>
+<entry
+>a) Normal</entry>
+<entry
+>b) Girado 30 grados</entry>
+<entry
+>c) Corte a 0.4</entry>
+<entry
+>d) Simétrico</entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
+
+<para
+>Es posible combinar las transformaciones multiplicando matrices elementales. Tenga en cuenta que las operaciones entre matrices normalmente no son conmutables, y por lo tanto el efecto combinado de una concatenación depende del orden en el que las matrices hayan sido multiplicadas. </para>
+
+</simplesect>
+
+
+<simplesect id="qpainter-strokeattributes">
+<title
+>Establecimiento de atributos de ajuste</title>
+
+<para
+>Es posible modificar el procesado de líneas, curvas y bordes de polígonos estableciendo un pincel especial con QPainter::setPen(). El argumento de esta función es un objeto <ulink url="kdeapi:qt/QPen"
+>QPen</ulink
+>. Las propiedades que almacena son estilo, color, estilo de unión y estilo de tope. </para>
+
+<para
+>El estilo de pincel es un miembro de la enumeración <ulink url="kdeapi:qt/Qt#PenStyle-enum"
+>Qt::PenStyle</ulink
+>. Puede tomar uno de los siguientes valores: </para>
+
+<mediaobject>
+ <imageobject
+><imagedata fileref="penstyles.png"/></imageobject>
+</mediaobject>
+
+<para
+>El estilo de unión es un miembro de la enumeración <ulink url="kdeapi:qt/Qt#PenJoinStyle-enum"
+>Qt::PenJoinStyle</ulink
+>. Especifica cómo se debe dibujar la unión entre múltiples líneas que están conectadas unas con otras. Puede tomar uno de los siguientes valores: </para>
+
+<informaltable frame="none">
+<tgroup cols="3">
+<tbody>
+<row>
+<entry
+><mediaobject>
+ <imageobject
+><imagedata fileref="joinmiter.png"/></imageobject>
+</mediaobject
+></entry>
+<entry
+><mediaobject>
+ <imageobject
+><imagedata fileref="joinbevel.png"/></imageobject>
+</mediaobject
+></entry>
+<entry
+><mediaobject>
+ <imageobject
+><imagedata fileref="joinround.png"/></imageobject>
+</mediaobject
+></entry>
+</row>
+<row>
+<entry
+>a) MiterJoin</entry>
+<entry
+>c) BevelJoin</entry>
+<entry
+>b) RoundJoin</entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
+
+<para
+>El estilo de tope es un miembro de la enumeración <ulink url="kdeapi:qt/Qt#PenCapStyle-enum"
+>Qt::PenCapStyle</ulink
+>, y especifica cómo se deben dibujar los puntos finales de las líneas. Toma uno de los valores de la siguiente tabla: </para>
+
+<informaltable frame="none">
+<tgroup cols="3">
+<tbody>
+<row>
+<entry
+><mediaobject>
+ <imageobject
+><imagedata fileref="capflat.png"/></imageobject>
+</mediaobject
+></entry>
+<entry
+><mediaobject>
+ <imageobject
+><imagedata fileref="capsquare.png"/></imageobject>
+</mediaobject
+></entry>
+<entry
+><mediaobject>
+ <imageobject
+><imagedata fileref="capround.png"/></imageobject>
+</mediaobject
+></entry>
+</row>
+<row>
+<entry
+>a) FlatCap</entry>
+<entry
+>b) SquareCap</entry>
+<entry
+>c) RoundCap</entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
+
+</simplesect>
+
+
+<simplesect id="qpainter-fillattributes">
+<title
+>Establecimiento de atributos de relleno</title>
+
+<para
+>El estilo de relleno de los polígonos, círculos o rectángulos se puede modificar especificanto un tipo especial de brocha con QPainter::setBrush(). Esta función tiene un objeto <ulink url="kdeapi:qt/QBrush"
+>QBrush</ulink
+> como argumento. Las brochas se pueden construir de cuatro maneras diferentes: </para>
+
+<itemizedlist>
+<listitem>
+<para
+>QBrush::QBrush() - Crea una brocha que no rellena las figuras.</para>
+</listitem>
+<listitem>
+<para
+>QBrush::QBrush(BrushStyle) - Crea una brocha negra con uno de los siguientes patrones mostrados a continuación.</para>
+</listitem>
+<listitem>
+<para
+>QBrush::QBrush(const QColor &amp;, BrushStyle) - Crea una brocha de color con uno de los patrones mostrados a continuación.</para>
+</listitem>
+<listitem>
+<para
+>QBrush::QBrush(const QColor &amp;, const QPixmap) - Crea una brocha de color con el patrón personalizado que se proporcione como segundo parámetro.</para>
+</listitem>
+</itemizedlist>
+
+<para
+>Un estilo de brocha predeterminado se obtiene de la enumeración <ulink url="kdeapi:qt/Qt#BrushStyle-enum"
+>Qt::BrushStyle</ulink
+>. Esta es una muestra de todos los patrones predefinidos: </para>
+
+<mediaobject>
+ <imageobject
+><imagedata fileref="brushstyles.png"/></imageobject>
+</mediaobject>
+
+<para
+>Una forma más avanzada de personalizar el comportamiento de la brocha es mediante la función QPainter::setBrushOrigin(). </para>
+
+</simplesect>
+
+
+<simplesect id="qpainter-color">
+<title
+>Color</title>
+
+<para
+>Los colores juegan un papel tanto al ajustar curvas como al rellenar figuras. En Qt, los colores están representados por la clase <ulink url="kdeapi:qt/QColor"
+>QColor</ulink
+>. Qt no soporta características gráficas avanzadas como perfiles de color ICC y corrección de color. Los colores se construyen normalmente especificando sus componentes rojo, verde y azul, siguiendo el modelo RGB que utilizan los monitores para dibujar los pixels. </para>
+
+<para
+>También es posible utilizar tono, saturación y valor. Esta representación (HSV) es la que se utiliza en el diálogo de color de Gtk, por ejemplo en GIMP. En este caso, el tono corresponde al ángulo en la rueda de color, mientras que la saturación corresponde a la distancia desde el centro de círuclo. El valor se puede elegir con un selector independiente. </para>
+
+</simplesect>
+
+
+<simplesect id="qpainter-paintsettings">
+<title
+>Otros parámetros</title>
+
+<para
+>Normalmente, al pintar en un dispositivo de pintura, los pixels que se dibujan reemplazan a los existentes anteriormente. Esto significa que si usted pinta ciertas regiones de uno color rojo y después pinta las mismas zonas con un color azul, únicamente será visible el color azul. El modelo de dibujo de Qt no soporta la transparencia, es decir, una forma de mezclar los colores principal y de fondo de un dibujo. Sin embargo, hay un método muy sencillo para combinar el primer plano y el fondo a través de operadores booleanos. El método QPainter::setRasterOp() establece el operador utilizado, que viene de la enumeración <ulink url="kdeapi:qt/Qt#RasterOp-enum"
+>RasterOp</ulink
+>. </para>
+
+<para
+>El predeterminado es CopyROP, que ignora el color de fondo. Otra elección popular es XorROP. Si dibuja una línea negra con este operador sobre una imagen en color, el área cubierta aparecerá invertida. Este efecto se utiliza, por ejemplo, para crear el borde de los cuadros de selección de los programas de manipulación de imágenes, y que se conoce como "ejército de hormigas". </para>
+
+</simplesect>
+
+
+<simplesect id="qpainter-primitives">
+<title
+>Primitivas de dibujo</title>
+
+<para
+>A continuación se muestra una lista de los elementos gráficos básicos soportados por QPainter. La mayoría van acompañados de versiones sobrecargadas que admiten un diferente número de argumentos. Por ejemplo, los métodos relacionados con rectácngulos normalmente admiten como argumentos un <ulink url="kdeapi:qt/QRect"
+>QRect</ulink
+> o un conjunto de cuatro enteros. </para>
+
+<itemizedlist>
+<listitem>
+<para
+>Dibujo de un único punto - drawPoint().</para>
+</listitem>
+<listitem>
+<para
+>Dibujo de líneas - drawLine(), drawLineSegments() y drawPolyLine().</para>
+</listitem>
+<listitem>
+<para
+>Dibujo y relleno de rectángulos - drawRect(), drawRoundRect(), fillRect() y eraseRect().</para>
+</listitem>
+<listitem>
+<para
+>Dibujo y relleno de círculos, elipses o parte de ellos - drawEllipse(), drawArc(), drawPie y drawChord().</para>
+</listitem>
+<listitem>
+<para
+>Dibujo y relleno de polígonos generales - drawPolygon().</para>
+</listitem>
+<listitem>
+<para
+>Dibujo de curvas bezier - drawQuadBezier() [drawCubicBezier en Qt 3.0].</para>
+</listitem>
+</itemizedlist>
+
+</simplesect>
+
+
+<simplesect id="qpainter-pixmaps">
+<title
+>Dibujo de mapas de pixels e imágenes</title>
+
+<para
+>Qt proporciona dos clases muy diferentes para la representación de imágenes. </para>
+
+<para
+><ulink url="kdeapi:qt/QPixmap"
+>QPixmap</ulink
+> corresponde directamente a los objetos de mapas de pixels de X11. Los mapas de pixels son objetos del lado del servidor y pueden (en la mayoría de las tarjetas gráficas modernas) ser almacenadas directamente en la memoria de la tarjeta. Esto hace que sean <emphasis
+>muy</emphasis
+> eficientes para tranferir mapas de pixels a la pantalla. Los mapas de pixels también funcionan como los equivales de fuera de la pantalla de los widgets; la clase QPixmap es una subclase de QPaintDevice, por lo que es posible dibujarla con un QPainter. Las operaciones elementales de dibujo normalmente se ven aceleradas por los adaptadores gráficos modernos. Por lo tanto, una conducta muy habitual es la de utilizar mapas de pixels para trabajar con doble buffer. Esto significa, en vez de dibujar directamente sobre un widget, que sea crea un objeto de mapa de pixels temporal y se utiliza la función <ulink url="kdeapi:qt/QPaintDevice#bitBlt-1"
+>bitBlt</ulink
+> para tranferir el mapa de pixels al widget. En casos de redibujados complejos, esto ayuda a evitar el efecto de parpadeo. </para>
+
+<para
+>Por contra, el objeto <ulink url="kdeapi:qt/QImage"
+>QImage</ulink
+> permanece en el lado del cliente. Su ventaja está en que proporciona acceso directo a los pixels de la imagen. Esto lo hace útil para la manipulación de imágenes, y operaciones como la carga y almacenamiento en disco (el método load() de QPixmap utiliza QImage en un paso intermedio). Por otro lado, dibujar una imagen en un widget es una operación con un consumo de recursos relativamente alto, ya que implica una transferencia al servidor X, lo que puede llevar algún tiempo, especialmente en imágenes grandes y servidores remotos. Dependiendo de la profundidad de color, la conversión de QImage a QPixmap puede requerir también un proceso de reducción del número de colores. </para>
+
+</simplesect>
+
+
+<simplesect id="qpainter-drawingtext">
+<title
+>Dibujo de texto</title>
+
+<para
+>Es posible dibujar texto con una de las variantes sobrecargadas del método QPainter::drawText(). De esta forma se dibuja una QString en un punto o en un rectángulo dado, utilizando la fuente establecida por QPainter::setFont(). También hay un parámetro que admite una combinación OR de algunos parámetros obtenidos de las enumeraciones <ulink url="kdeapi:qt/Qt#AlignmentFlags-enum"
+>Qt::AlignmentFlags</ulink
+> y <ulink url="kdeapi:qt/Qt#TextFlags-enum"
+>Qt::TextFlags</ulink
+> </para>
+
+<para
+>A partir de la versión 3.0, Qt se encarga completamente de la disposición del texto incluso en los idiomas escritos de derecha a izquierda. </para>
+
+<para
+>Una forma más avanzada de mostrar texto con formato es la clase <ulink url="kdeapi:qt/QSimpleRichText"
+>QSimpleRichText</ulink
+>. Los objetos de esta clase se pueden construir a partir de un texto que utilice un subconjunto de etiquetas HTML, lo cual mejora el aspecto y puede proporcionar incluso tablas. El estilo del texto se puede personalizar utilizando un <ulink url="kdeapi/qt/QStyleSheet"
+>QStyleSheet</ulink
+> (también se puede encontrar aquí la documentación de las etiquetas). Una vez que se ha construido el objeto de texto enriquecido, se puede dibujar sobre un widget u otro dispositivo de dibujo utilizando el método QSimpleRichText::draw(). </para>
+
+</simplesect>
+
+</sect1>
+
+
+<sect1 id="graphics-qcanvas">
+<title
+>Gráficos estructurados con QCanvas</title>
+
+<para
+>QPainter ofrece un potente modelo de dibujo para realizar representaciones sobre widgets y mapas de pixels. Sin embargo, puede ser complicado de utilizar. Cada vez que un widget recibe un evento de dibujo, tiene que analizar la QPaintEvent::region() o la QPaintEvent::rect() que debe ser redibujada. También tiene que configurar un QPainter y dibujar todos los objetos que se superponen con ese área. Por ejemplo, imagine un programa de gráficos vectoriales que permite arrastrar y mover objetos como polígonos, círculos o grupos de ellos. Cada vez que uno de esos objetos se mueve un poco, el evento de movimiento del ratón de widget dispara un evento de dibujo para toda la zona cubierta por los objetos de las posiciones antigua y nueva. Calcular las operaciones de redibujado necesarias y realizarlas de forma eficientes puede resultar difícil, y también podría entrar en conflicto con las estructura orientada a objetos del código fuente del programa. </para>
+
+<para
+>Como alternativa, Qt contiene la clase <ulink url="kdeapi:qt/QCanvas"
+>QCanvas</ulink
+> en la que es posible colocar objetos gráficos como polígonos, texto y mapas de pixels. También es posible incluir elementos adicionales a través de una subclase de <ulink url="kdeapi:qt/QCanvasItem"
+>QCanvasItem</ulink
+> o de una de sus subclases más especializadas. Un espacio de dibujo puede ser mostrado en la pantalla por uno o más widgets de la clase <ulink url="kdeapi:qt/QCanvas"
+>QCanvasView</ulink
+> de la que hay que derivar subclases para manejar la interacción con el usuario. Qt se encarga de todas las operaciones de redibujado de los objetos en la vista, ya sean estas causadas por el widget mostrado, por nuevos objetos creados o modificados u otras razones. Al utilizar un doble búfer, estas operaciones se realizan con eficiencia y evitando el efecto parpadeo. </para>
+
+<para
+>Los espacios de dibujo se pueden superponer. Este este caso, el que resultará visible depende el orden en el eje z al que hayan sido asignados mediante QCanvasItem::setZ(). Los elementos también pueden ser visibles o invisibles. También puede proporcionar un fondo para que sea dibujado "detrás" de todos los demás elementos. Para asociar eventos del ratón a los objetos del espacio de dibujo, existe el método QCanvas::collisions(), de devuelve una lista de elementos superpuestos en un punto dado. Aquí mostramos una instantánea de una vista de espacio de dibujo en acción: </para>
+
+<mediaobject>
+<imageobject
+><imagedata fileref="canvas.png"/></imageobject>
+</mediaobject>
+
+<para
+>En este caso, la malla está dibujada en el fondo. Además hay un elemento QCanvasText y un QCanvasPolygon violeta. La mariposa es un QCanvasPixmap. Tiene zonas transparentes, por lo que se pueden ver los demás objetos a través de ella. </para>
+
+<para
+>Se puede encontrar un tutorial para el uso de QCanvas en el desarrollo de juegos basados en sprites <ulink url="http://zez.org/article/articleview/2/1/"
+>aquí</ulink
+>. </para>
+
+</sect1>
+
+
+<sect1 id="graphics-qglwidget">
+<title
+>Gráficos 3D con OpenGL</title>
+
+<simplesect id="qglwidget-lowlevel">
+<title
+>Interfaz de bajo nivel</title>
+
+<para
+>El estándar de facto actual para la realización de gráficos 3D es <ulink url="http://www.opengl.org"
+>OpenGL</ulink
+>. Se encuentran implementaciones de esta especificación en Microsoft Windows, Mac OS X y XFree86 y normalmente también está soportado en la aceleración por hardware de las tarjetas gráficas modernas. OpenGL en sí únicamente se ocupa del procesado en un área de un framebuffer a través de un <emphasis
+>contexto GL</emphasis
+> y no tiene ningún tipo de interacción con el entorno de desarrollo. </para>
+
+<para
+>Qt ofrece el widget <ulink url="kdeapi:qt/QGLWidget"
+>QGL Widget</ulink
+> que encapsula una ventana con un contexto GL asociado. Básicamente se utiliza realizando subclases y reimplementando algunos métodos. </para>
+
+<itemizedlist>
+
+<listitem
+><para
+>En vez de reimplementar paintEvent() y utilizar QPainter para dibujar el contenido de un widget, es mejor utilizar paintGL() y emplear comandos GL para procesar una escena. QLWidget se encargará de hacer que su contexto GL sea el activo antes de que se llame a paintGL(), y posteriormente volcará toda la información. </para
+></listitem>
+
+<listitem
+><para
+>El método virtual initializeGL() se llama una vez antes de las primera invocaciones de resizeGL() o paintGL(). Esto se utiliza para la construcción de listas visuales para objetos y para iniciar el entorno. </para
+></listitem>
+
+<listitem
+><para
+>En ver se reimplementar resizeEvent(), se utiliza resizeGL(). Sirve para establacer el modo vista de forma correcta. </para
+></listitem>
+
+<listitem
+><para
+>En vez de llamar a update() cuando el estado de la escena haya cambiado (por ejemplo, si se realiza animación con un temporizador), debería llamar a updateGL(). Esto provocará el redibujado. </para
+></listitem>
+
+</itemizedlist>
+
+<para
+>En general, QGLWidget se comporta como cualquier otro widget, es decir, los eventos del ratón se procesan normalmente, se puede redimensionar el widget y combinarlo con otros en una vista. </para>
+
+<mediaobject>
+<imageobject
+><imagedata fileref="opengl.png"/></imageobject>
+</mediaobject>
+
+<para
+>Qt contiene algunos ejemplos del uso de QGLWidget en su ejemplo <literal
+>demo</literal
+>. Se puede encontrar una colección de tutoriales <ulink url="http://www.libsdl.org/opengl/intro.html"
+>aquí</ulink
+>, y más información junto a una referencia de OpenGL está disponible en la <ulink url="http://www.opengl.org"
+>página web de OpenGL</ulink
+>. </para>
+
+</simplesect>
+
+
+<simplesect id="qglwidget-highlevel">
+<title
+>Interfaces de alto nivel</title>
+
+<para
+>OpenGL es un interfaz de relativo bajo nivel para el trazado de gráficos en 3D. De la misma forma que QCanvas proporciona al programador un interfaz de alto nivel para tratar con detalle los objetos y sus propiedades, también hay interfaces de alto nivel para los gráficos en 3D. Uno de los más populares es Open Inventor. Una tecnología desarrolladoa originalmente por SGI, que hoy en día tiene una implementación de código abierto llamada <ulink url="http://www.coin3d.org"
+>Coin</ulink
+>, complementada por un entorno de desarrollo para Qt llamado SoQt. </para>
+
+<para
+>El concepto básico de Open Inventor es la <emphasis
+>escena</emphasis
+>. Es posible cargar una escena del disco y guardarla en un formato especial muy unido a <ulink url="http://www.vrml.org"
+>VRML</ulink
+>. Una escena consta de una colección de objetos llamados <emphasis
+>nodos</emphasis
+>. Inventor proporciona una interesante colección de nodos reutilizables, como cubos, cilindros y mallas, además de fuentes de luz, materiales, cámaras, etc. Los nodos están representados por clases de C++ y pueden ser combinados y tratados como subclases. </para>
+
+<para
+>Puede encontrar una introducción a Inventor <ulink url="http://www.motifzone.com/tmd/articles/OpenInventor/OpenInventor.html"
+>aquí</ulink
+> (por regla general, es posible sustituir los métodos de SoXt descritos en el artículo por los de SoQt). </para>
+
+</simplesect>
+
+</sect1>
+
+</chapter>
+
+
+
+<chapter id="userinterface">
+<title
+>Interfaz de usuario</title>
+
+<sect1 id="userinterface-actionpattern">
+<title
+>El patrón de acción</title>
+
+<para
+></para>
+
+</sect1>
+
+
+<sect1 id="userinterface-xmlgui">
+<title
+>Definición de menús y barras de herramientas en XML</title>
+
+<simplesect id="xmlgui-intro">
+<title
+>Introducción</title>
+
+<para
+>Mientras que el <link linkend="userinterface-actionpattern"
+>patrón de acción</link
+> permite encapsular acciones disparadas por el usuario en un objeto que puede ser "conectado" en cualquier punto de las barrás de menú o de herramientas, no resuelve por sí mismo el problema de construir los propios menús. En particular, es necesario construir los menús desplegables en el código C++ e insertar explícitamente las acciones en un cierto orden, teniendo en consideración la guía de estilo de las acciones estándar. Esto hace muy difícil que es usuario pueda personalizar los menús o modificar los accesos directos a su gusto, ya que debería modificar el código fuente. </para>
+
+<para
+>Este problema se resuelve por medio de un conjunto de clases llamado <literal
+>XMLGUI</literal
+>. Básicamente separa las acciones (programadas en C++) de su aspecto en las barras de menú y herramientas (programadas en XML). Sin tener que modificar el código fuente, es posible personalizar los menús ajustando un archivo XML. Además, esto ayuda a asegurar que las acciones estándar (como <menuchoice
+><guimenu
+>Archivo</guimenu
+><guimenuitem
+>Abrir</guimenuitem
+></menuchoice
+> o <menuchoice
+><guimenu
+>Ayuda</guimenu
+><guimenuitem
+>Acerca de...</guimenuitem
+></menuchoice
+>) aparezcan en las ubicaciones sugeridas por la guía de estilo. XMLGUI es especialmente importante en los programas modulares, donde los elementos que aparecen en las barras de menú pueden varias en función de las extensiones instaladas. </para>
+
+<para
+>La clase de KDE para las ventanas de primer nivel, <ulink url="kdeapi:tdeui/KMainWindow.html"
+>KMainWindow</ulink
+> es heredera de <ulink url="kdeapi:tdeui/KXMLGUIClient.html"
+>KXMLGUIClient</ulink
+> y, por lo tanto, soporta XMLGUI directamente. Todas las acciones creadas dentro deben tener como superior jerárquico un <literal
+>actionCollection()</literal
+> del cliente. Una llamada a <literal
+>createGUI()</literal
+> construirá el conjunto completo de menús y barras de herramientas definidos en el archivo XML de la aplicación (normalmente con el sufijo <literal
+>ui.rc</literal
+>). </para>
+
+</simplesect>
+
+
+<simplesect id="xmlgui-kviewexample">
+<title
+>Un ejemplo: el menú de KView</title>
+
+<para
+>A continuación tomamos como ejemplo el visor de imágenes de KDE <application
+>KView</application
+>. Tiene un archivo <literal
+>ui.rc</literal
+> llamado <filename
+>kviewui.rc</filename
+> que es instalado por orden de <filename
+>Makefile.am</filename
+> </para>
+
+<programlisting
+>rcdir = $(kde_datadir)/kview
+rc_DATA = kviewui.rc
+</programlisting>
+
+<para
+>Esto es un extracto de <filename
+>kviewui.rc</filename
+>. Para simplificar el ejemplo, mostramos únicamente la definición del menú <guimenu
+>Ver</guimenu
+>. </para>
+
+<programlisting
+>&lt;!DOCTYPE kpartgui&gt;
+&lt;kpartgui name="kview"&gt;
+ &lt;MenuBar&gt;
+ &lt;Menu name="view" &gt;
+ &lt;Action name="zoom50" /&gt;
+ &lt;Action name="zoom100" /&gt;
+ &lt;Action name="zoom200" /&gt;
+ &lt;Action name="zoomMaxpect" /&gt;
+ &lt;Separator/&gt;
+ &lt;Action name="fullscreen" /&gt;
+ &lt;/Menu&gt;
+ &lt;/MenuBar&gt;
+&lt;/kpartgui&gt;
+</programlisting>
+
+<para
+>La parte de código correspondiente en C++ es: </para>
+
+<programlisting
+>KStdAction::zoomIn ( this, SLOT(slotZoomIn()), actionCollection() );
+ KStdAction::zoomOut ( this, SLOT(slotZoomOut()), actionCollection() );
+ KStdAction::zoom ( this, SLOT(slotZoom()), actionCollection() );
+ new KAction ( i18n("&amp;Half size"), ALT+Key_0,
+ this, SLOT(slotHalfSize()),
+ actionCollection(), "zoom50" );
+ new KAction ( i18n("&amp;Normal size"), ALT+Key_1,
+ this, SLOT(slotDoubleSize()),
+ actionCollection(), "zoom100" );
+ new KAction ( i18n("&amp;Double size"), ALT+Key_2,
+ this, SLOT(slotDoubleSize()),
+ actionCollection(), "zoom200" );
+ new KAction ( i18n("&amp;Fill Screen"), ALT+Key_3,
+ this, SLOT(slotFillScreen()),
+ actionCollection(), "zoomMaxpect" );
+ new KAction ( i18n("Fullscreen &amp;Mode"), CTRL+SHIFT+Key_F,
+ this, SLOT(slotFullScreen()),
+ actionCollection(), "fullscreen" );
+</programlisting>
+
+<para
+>El menú <guimenu
+>Ver</guimenu
+> que aparece en el entorno gráfico resultante tiene este aspecto: </para>
+
+<mediaobject>
+<imageobject
+><imagedata fileref="kview-menu.png"/></imageobject>
+</mediaobject>
+
+<para
+>El archivo XML comienza con una declaración del tipo de documento. La DTD para kpartgui se puede encontrar en el código fuente de kdelib, en el archivo <filename
+>tdeui/kpartgui.dtd</filename
+>. El elemento más externo del archivo contiene el nombre de la instancia de la aplicación como atributo. También puede contener un número de versión con el formato "version=2". Esto le puede resultar útil cuando crea nuevas versiones de una aplicación con una estructura de menú distinta (por ejemplo, con más características). Si incrementa el número de versión del archivo <literal
+>ui.rc</literal
+>, KDE se asegura de que cualquier versión personalizada del archivo sea desechada y se use en su lugar el nuevo archivo. </para>
+
+<para
+>La siguiente línea, <literal
+>&lt;MenuBar&gt;</literal
+>, contiene una declaración de una barra de menú. También puede insertar cualquier número de declaraciones <literal
+>&lt;ToolBar&gt;</literal
+> para crear algunas barras de herramientas. El menú contiene un submenú con el nombre «view». Este nombre ya está predefinido, por lo que verá una versión traducida de la palabra «View» en la captura de pantalla. Si declara sus propios submenús, tendrá que añadir su título explícitamente. Por ejemplo, <application
+>KView</application
+> tiene un submenú con el título «Image», que está declarado del siguiente modo: </para>
+
+<programlisting
+>&lt;Menu name="image" &gt;
+ &lt;text&gt;&amp;amp;Image&lt;/text&gt;
+ ...
+&lt;/Menu&gt;
+</programlisting>
+
+<para
+>En la infraestructura automake de KDE, estos títulos se extraen automáticamente y se ponen en el archivo <ulink url="tde-i18n-howto.html"
+><literal
+>.po</literal
+></ulink
+>, de modo que puedan ser tenidos en cuenta por los traductores. Tenga en cuenta que deberá escribir la marca de acceso rápido «&amp;» en modo compatible con XML (en la forma «&amp;amp;»). </para>
+
+<para
+>Volvamos al ejemplo. El menú <guimenu
+>View</guimenu
+> de <application
+>KView</application
+> contiene varias acciones personalizadas: <literal
+>zoom50</literal
+>, <literal
+>zoom100</literal
+>, <literal
+>zoom200</literal
+>, <literal
+>zoomMaxpect</literal
+> y <literal
+>fullscreen</literal
+>, declarados mediante un elemento <literal
+>&lt;Action&gt;</literal
+>. El separador de las capturas de pantalla corresponde al elemento <literal
+>&lt;Separator&gt;</literal
+>. </para>
+
+<para
+>Notará que algunos elementos del menú no poseen su correspondiente entrada en el archivo XML. Se trata de las <emphasis
+>acciones estándar</emphasis
+>. Las acciones estándar son creadas por la clase <ulink url="kdeapi:tdeui/KStdAction.html"
+>KStdAction</ulink
+>. Cuando cree estas acciones en su aplicación (como las del anterior ejemplo en C++ ), se insertarán de forma automática en una posición preestablecida, y posiblemente con un icono y un acceso rápido. Puede buscar estas posiciones en el archivo <filename
+>tdeui/ui_standards.rc</filename
+> en el código fuente de tdelibs. </para>
+
+</simplesect>
+
+
+<simplesect id="xmlgui-konqexample">
+<title
+>Un ejemplo: las barras de herramientas de Konqueror</title>
+
+<para
+>Para ilustrar la discusión sobre las barras de herramientas, veremos la definición de la interfaz gráfica de <application
+>Konqueror</application
+>. Este trozo de código define la barra de dirección, que contiene el campo de entrada para introducir una URL. </para>
+
+<programlisting
+>&lt;ToolBar name="locationToolBar" fullWidth="true" newline="true" &gt;
+ &lt;text&gt;Location Toolbar&lt;/text&gt;
+ &lt;Action name="clear_location" /&gt;
+ &lt;Action name="location_label" /&gt;
+ &lt;Action name="toolbar_url_combo" /&gt;
+ &lt;Action name="go_url" /&gt;
+&lt;/ToolBar&gt;
+</programlisting>
+
+<para
+>Lo primero que notamos es que hay muchos más atributos que para las barras de menú, como: </para>
+
+<itemizedlist>
+
+<listitem
+><para
+><literal
+>fullWidth</literal
+>: Comunica a XMLGUI que la barra de herramientas tiene el mismo ancho que la ventana de nivel superior. Si tiene el valor «false», la barra de herramientas solo ocupará el espacio que necesite, y el resto de barras de herramientas se colocará en la misma fila. </para
+></listitem>
+
+<listitem
+><para
+><literal
+>newline</literal
+>: Esto está relacionado con la opción anterior. Si «newline» es «true», la barra de herramientas se coloca al comienzo de una nueva fila. En caso contrario podrá ser colocada en la misma fila que la barra de herramientas previa. </para
+></listitem>
+
+<listitem
+><para
+><literal
+>noEdit</literal
+>: Normalmente, el usuario puede personalizar las barras de herramientas, por ejemplo en <menuchoice
+><guimenu
+>Preferencias</guimenu
+><guimenuitem
+>Configurar barras de herramientas</guimenuitem
+></menuchoice
+> en <application
+>Konqueror</application
+>. Si se cambia el valor de esta opción a «true», la barra de herramientas será marcada como no editable. Esto es importante para las barras de herramientas que se rellenan con elementos en tiempo de ejecución, como la barra de marcadores de <application
+>Konqueror</application
+>. </para
+></listitem>
+
+<listitem
+><para
+><literal
+>iconText</literal
+>: Hace que la interfaz gráfica XML muestre el texto de la acción junto al icono. Normalmente, el texto solo se muestra como ayuda emergente cuando el cursor del ratón permanece sobre el icono durante un corto espacio de tiempo. Los valores posibles para este atributo son «iconolny» (muestra solo el icono), «textonly» (muestra solo el texto), «icontextright» (muestra el texto a la derecha del icono) e «icontextbottom» (muestra el texto debajo del icono). </para
+></listitem>
+
+
+<listitem
+><para
+><literal
+>hidden</literal
+>: Si vale «true», la barra de herramientas no será visible inicialmente y tendrá que ser activada mediante algún elemento del menú. </para
+></listitem>
+
+
+<listitem
+><para
+><literal
+>position</literal
+>: El valor predeterminado para este atributo es «top», y significa que la barra de herramientas será posicionada bajo la barra de menú. Para los programas con muchas herramientas, como los programas de gráficos, puede ser interesante sustituir este valor por «left», «right» o «bottom». </para
+></listitem>
+
+</itemizedlist>
+
+</simplesect>
+
+
+<simplesect id="xmlgui-dynamical">
+<title
+>Menús dinámicos</title>
+
+<para
+>Obviamente, un archivo XML solo puede contener una descripción estática de una interfaz de usuario. A menudo, existen menús que se modifican en tiempo real. Por ejemplo, el menú <guimenu
+>Dirección</guimenu
+> de <application
+>Konqueror</application
+> contiene un conjunto de elementos <guimenuitem
+>Abrir con X</guimenuitem
+> con las aplicaciones capaces de cargar un archivo con un tipo MIME concreto. Cada vez que cambia el documento mostrado, se modifica la lista de estos elementos del menú. XMLGUI está preparado para manejar estos casos mediante el uso de <emphasis
+>listas de acciones</emphasis
+>. Una lista de acciones se declara como un único elemento en el archivo XML, pero consta de varias acciones que se conectan al menú en tiempo de ejecución. El ejemplo anterior se implementa con la siguiente declaración en el archivo XML de <application
+>Konqueror</application
+>: </para>
+
+<programlisting
+>&lt;Menu name="file"&gt;
+ &lt;text&gt;&amp;amp;Location&lt;/text&gt;
+ ...
+ &lt;ActionList name="openwith"&gt;
+ ...
+&lt;/Menu&gt;
+</programlisting>
+
+<para
+>La función <function
+>KXMLGUIClient::plugActionList()</function
+> se usará para añadir acciones a ser mostradas, mientras que la función <function
+>KXMLGuiClient::unplugActionList()</function
+> eliminará todas las acciones conectadas. La rutina responsable de la actualización es semejante a la siguiente: </para>
+
+<programlisting
+>void MainWindow::updateOpenWithActions()
+{
+ unplugActionList("openwith");
+ openWithActions.clear();
+ for ( /* repetir sobre los servicios importantes */ ) {
+ KAction *action = new KAction( ...);
+ openWithActions.append(action);
+ }
+ plugActionList("openwith", openWithActions);
+}
+</programlisting>
+
+<para
+>Tenga en cuenta que, al contrario que las acciones estáticas, las que se crean aquí <emphasis
+>no</emphasis
+> están construidas con la colección de acciones como objeto padre, por lo que usted será el responsable de eliminarlas. El modo más sencillo de realizar esto consiste en usar <literal
+>openWithActions.setAutoDelete(true)</literal
+>, como en el ejemplo anterior. </para>
+
+</simplesect>
+
+
+<simplesect id="xmlgui-contextmenus">
+<title
+>Menús de contexto</title>
+
+<para
+>Los ejemplos anteriores solo trataban de casos en los que se creaba una barra de menú y barras de herramientas para la ventana principal. En estos casos, los procesos que construyen estos contenedores están completamente ocultos en la llamada a <function
+>createGUI()</function
+> (excepto cuando hay que crear contenedores personalizados). De todos modos, existen casos en los que se necesita construir otros contenedores y llenarlos con definiciones de interfaz gráfica procedentes de un archivo XML. Uno de estos ejemplos son los menús de contexto. Para obtener un puntero a un menú de contexto, necesitará pedírselo a la «fábrica» del cliente: </para>
+
+<programlisting
+>void MainWindow::popupRequested()
+{
+ QWidget *w = factory()->container("context_popup", this);
+ QPopupMenu *popup = static_cast&lt;QPopupMenu *&gt;(w);
+ popup->exec(QCursor::pos());
+}
+</programlisting>
+
+<para
+>El método <function
+>KXMLGUIFactory::container()</function
+> usado arriba comprueba si puede encontrar un contenedor con un nombre dado en el archivo XML. De este modo, una posible definición podría ser: </para>
+
+<programlisting
+>...
+&lt;Menu name="context_popup"&gt;
+ &lt;Action name="file_add"/&gt;
+ &lt;Action name="file_remove"/&gt;
+&lt;/Menu&gt;
+...
+</programlisting>
+
+</simplesect>
+
+</sect1>
+
+
+<sect1 id="help">
+<title
+>Proporcionando ayuda en línea</title>
+
+<para
+>Hacer que un programa sea fácil e intuitivo de manejar requiere de un amplio abanico de utilidades que normalmente se denominan ayuda en línea. La ayuda en línea tiene varios objetivos (a veces conflictivos): por un lado, debe proporcionar al usuario respuestas a la pregunta «¿Cómo puedo hacer una determinada tarea?», y por otro, debe ayudar al usuario a explorar la aplicación y a encontrar características que aún no conocía. Es importante reconocer que esto solo se puede conseguir ofreciendo diversos niveles de ayuda: </para>
+
+<itemizedlist>
+
+<listitem
+><para
+>Las ayudas emergentes son pequeñas etiquetas que aparecen sobre los elementos de la interfaz de usuario cuando el cursor del ratón permanece sobre ellos durante un corto espacio de tiempo. Son especialmente importantes para las barras de herramientas, donde un icono no siempre resulta suficiente para explicar el propósito de un botón. </para
+></listitem>
+
+<listitem
+><para
+>La ayuda «¿Qué es esto?» consiste normalmente en una larga y rica explicación sobre un «widget» o sobre un elemento del menú. También es algo más lenta de usar. En los diálogos, se puede invocar de dos formas: bien pulsando <keycombo
+><keycap
+>Mayúsculas</keycap
+><keycap
+>F1</keycap
+></keycombo
+>, o pulsando con el ratón sobre el símbolo de interrogación en la barra de título (aunque esto depende de la configuración del gestor de ventanas que esté usando). El puntero del ratón cambia entonces a una flecha con un signo de interrogación, y la ventana de ayuda aparecerá cuando el usuario pulse sobre algún elemento de la interfaz. En los elementos de los menús, la ayuda «¿Qué es esto?» se activa normalmente mediante un botón de la barra de herramientas que contiene una flecha y un signo de interrogación. </para
+></listitem>
+
+<listitem
+><para
+>El problema de esta aproximación es que el usuario no puede ver cuándo un «widget» proporciona ayuda o no. Si un usuario activa el botón con el signo de interrogación y no obtiene ninguna ventana de ayuda al pulsar sobre un elemento de la interfaz de usuario, probablemente se sentirá frustrado. </para>
+
+<para
+>La ventaja de las ventanas de ayuda «¿Qué es esto?» tal y como las proporcionan Qt y KDE consiste en que pueden contener <ulink url="kdeapi:qt/QStyleSheet"
+>texto enriquecido</ulink
+>, es decir, que pueden contener diferentes tipos de letra, negrita, cursiva, e incluso imágenes y tablas. </para>
+
+<para
+>Un ejemplo de la ayuda «¿Qué es esto?»: </para>
+
+<mediaobject>
+<imageobject
+><imagedata fileref="whatsthis.png"/></imageobject>
+</mediaobject>
+
+</listitem>
+
+<listitem
+><para
+>Finalmente, cada programa debe tener un manual. El manual se visualiza normalmente en <application
+>KHelpCenter</application
+> tras activar la opción correspondiente del menú <guimenu
+>Ayuda</guimenu
+>. Esto significa que aparecerá una aplicación completa adicional que distraerá al usuario de su trabajo. Como consecuencia, consultar el manual solo debería ser necesario si otras facilidades, como las ayudas emergentes y las ayudas «¿Qué es esto?», no resultan suficientes. Por supuesto, un manual tiene la ventaja de que no explica aspectos aislados de la interfaz de usuario. En cambio, puede explicar aspectos de la aplicación en un contexto más amplio. Los manuales para KDE están escritos mediante el uso del lenguaje de etiquetas <ulink url="http://i18n.kde.org"
+>DocBook</ulink
+>. </para
+></listitem>
+
+</itemizedlist>
+
+<para
+>Desde el punto de vista del programador, Qt proporciona una API para ayuda en línea fácil de usar. Para asignar una ayuda emergente a un widget, utilice la clase <ulink url="kdeapi:qt/QToolTip"
+>QToolTip</ulink
+>. </para>
+
+<programlisting
+>QToolTip::add(w, i18n("Este widget realiza alguna acción."))
+</programlisting>
+
+<para
+>Si las barras de menú y de herramientas han sido creadas usando el <ulink url="actionpattern.html"
+>patrón de acciones</ulink
+>, la cadena usada como ayuda emergente procede el primer argumento del constructor de <ulink url="kdeapi:tdeui/KAction.html"
+>KAction</ulink
+>: </para>
+
+<programlisting
+>action = new KAction(i18n("&amp;Delete"), "editdelete",
+ SHIFT+Key_Delete, actionCollection(), "del")
+</programlisting>
+
+<para
+>Aquí también es posible asignar un texto para que se muestre en la barra de estado cuando se seleccione el correspondiente elemento del menú. </para>
+
+<programlisting
+>action->setStatusText(i18n("Deletes the marked file"))
+</programlisting>
+
+<para
+>La API para la ayuda «¿Qué es esto?» es muy similar. En los diálogos, utilice el siguiente código: </para>
+
+<programlisting
+>QWhatsThis::add(w, i18n("&lt;qt&gt;This demonstrates &lt;b&gt;Qt&lt;/b&gt;'s"
+ " rich text engine.&lt;ul&gt;"
+ "&lt;li&gt;Foo&lt;/li&gt;"
+ "&lt;li&gt;Bar&lt;/li&gt;"
+ "&lt;/ul&gt;&lt;/qt&gt;"))
+</programlisting>
+
+<para
+>Para los elementos del menú, utilice </para>
+
+<programlisting
+>action->setWhatsThis(i18n("Deletes the marked file"))
+</programlisting>
+
+<para
+>La invocación de <application
+>KHelpCenter</application
+> está encapsulada en la clase <ulink url="kdeapi:tdecore/KApplication"
+>KApplication</ulink
+>. Para mostrar el manual de su aplicación, use </para>
+
+<programlisting
+>kapp->invokeHelp()
+</programlisting>
+
+<para
+>Esto muestra la primera página con la tabla de contenidos. Cuando solo quiera mostrar cierta sección del manual, puede proporcionar un argumento adicional a la función <function
+>invokeHelp()</function
+> con la etiqueta a la que debe saltar el navegador. </para>
+
+</sect1>
+
+</chapter>
+
+
+
+<chapter id="components">
+<title
+>Componentes y servicios</title>
+
+<sect1 id="components-services">
+<title
+>Servicios de KDE</title>
+
+<simplesect id="services-whatarekdeservices">
+<title
+>¿Qué son los servicios de KDE?</title>
+
+<para
+>La noción de <emphasis
+>servicio</emphasis
+> es un concepto central de la arquitectura modular de KDE. No existe una implementación técnica estricta conectada a este término (los servicios pueden ser extensiones en la forma de bibliotecas compartidas, o programas controlados mediante <ulink url="dcop.html"
+>DCOP</ulink
+>. Al ser declarado de cierto <emphasis
+>tipo de servicio</emphasis
+>, promete implementar ciertos APi o características. En términos de C++, se puede pensar que un tipo de servicio es una clase abstracta, y que un servicio es una implementación de esta interfaz. </para>
+
+<para
+>La ventaja de esta separación es clara. Una aplicación que utilice un tipo de servicio no tiene que conocer nada sobre sus posibles implementaciones. Solo tiene que usar el API asociado al tipo de servicio. De este modo, el servicio usado se puede cambiar sin afectar a la aplicación. Además, el usuario puede configurar qué servicios prefiere para ciertas características. </para>
+
+<para
+>Algunos ejemplos: </para>
+
+<itemizedlist>
+
+<listitem
+><para
+>El motor de visualización HTML usado en <application
+>Konqueror</application
+> es un componente que se puede integrar y que implementa los tipos de servicio <literal
+>KParts/ReadOnlyPart</literal
+> y <literal
+>Browser/View</literal
+>. </para
+></listitem>
+<listitem
+><para
+>En la rama HEAD de <application
+>KDevelop</application
+>, una gran parte de la funcionalidad está empaquetada en extensiones con el tipo de servicio <literal
+>KDevelop/Part</literal
+>. Durante el inicio se cargan todos los servicios de este tipo, de modo que pueda extender el IDE de una manera muy flexible. </para
+></listitem>
+<listitem
+><para
+>En la vista de iconos, <application
+>Konqueror</application
+> muestra (si están activadas) miniaturas de los archivos de imágenes, páginas HTML, PDF y texto. Esta característica se puede extender. Si desea mostrar previsualizaciones de sus propios archivos de datos mediante algún tipo MIME, puede implementar un servicio con el tipo de servicio <classname
+>ThumbCreator</classname
+>. </para
+></listitem>
+
+</itemizedlist>
+
+<para
+>Obviamente, un servicio no se caracteriza únicamente por los tipos de servicio que implementa, sino también por algunas <emphasis
+>propiedades</emphasis
+>. Por ejemplo, ThumCreator no solo implementa la clase C++ con el tipo <classname
+>ThumbCreator</classname
+>, sino que también posee una lista de tipos MIME de los que es responsable. De modo similar, las partes de KDevelop tienen como propiedad el lenguaje de programación que soportan. Cuando una aplicación solicita un tipo de servicio, también puede listar restricciones de las propiedades del servicio. En el ejemplo anterior, cuando KDevelop carga las extensiones para un proyecto Java, solicita únicamente las extensiones que tienen Java como propiedad de lenguaje de programación. Para este propósito, KDE contiene un <emphasis
+>trader</emphasis
+> semejante a CORBA con un complejo lenguaje de consultas. </para>
+
+</simplesect>
+
+
+<simplesect id="services-definingservicetypes">
+<title
+>Definición de tipos de servicios</title>
+
+<para
+>Los nuevos tipos de servicio se añaden instalando una descripción en la carpeta <filename
+>KDEDIR/share/servicetypes</filename
+>. En un entorno automake, esto se puede realizar con el siguiente fragmento de <filename
+>Makefile.am</filename
+>: </para>
+
+<programlisting
+>kde_servicetypesdir_DATA = tdeveloppart.desktop
+EXTRA_DIST = $(kde_servicetypesdir_DATA)
+</programlisting>
+
+<para
+>La definición <filename
+>tdeveloppart.desktop</filename
+> de una parte <application
+>KDevelop</application
+> es similar a lo siguiente: </para>
+
+<programlisting
+>[Desktop Entry]
+Type=ServiceType
+X-KDE-ServiceType=KDevelop/Part
+Name=KDevelop Part
+
+[PropertyDef::X-KDevelop-Scope]
+Type=QString
+
+[PropertyDef::X-KDevelop-ProgrammingLanguages]
+Type=QStringList
+
+[PropertyDef::X-KDevelop-Args]
+Type=QString
+</programlisting>
+
+<para
+>Además de las entradas usuales, este ejemplo demuestra cómo declarar que un servicio posee algunas propiedades. Cada definición de propiedad corresponde a un grupo <literal
+>[PropertyDef::name]</literal
+> en el archivo de configuración. En este grupo, la entrada <literal
+>Type</literal
+> declara el tipo de la propiedad. Los tipos posibles son cualquier cosa que se pueda almacenar en un <ulink url="kdeapi:qt/QVariant"
+>QVariant</ulink
+>. </para>
+
+</simplesect>
+
+
+<simplesect id="services-defininglibraryservices">
+<title
+>Definición de servicios de bibliotecas compartidas</title>
+
+<para
+>Las definiciones de servicios se guardan en la carpeta <filename
+>KDEDIR/share/services</filename
+>: </para>
+
+<programlisting
+>kde_servicesdir_DATA = kdevdoxygen.desktop
+EXTRA_DIST = $(kde_servicesdir_DATA)
+</programlisting>
+
+<para
+>El contenido del siguiente archivo de ejemplo <filename
+>kdevdoxygen.desktop</filename
+> define la extensión <literal
+>KDevDoxygen</literal
+> con el tipo de servicio <literal
+>KDevelop/Part</literal
+>: </para>
+
+<programlisting
+>[Desktop Entry]
+Type=Service
+Comment=Doxygen
+Name=KDevDoxygen
+ServiceTypes=KDevelop/Part
+X-KDE-Library=libkdevdoxygen
+X-KDevelop-ProgrammingLanguages=C,C++,Java
+X-KDevelop-Scope=Project
+</programlisting>
+
+<para
+>Aparte de las declaraciones usuales, una entrada importante es <literal
+>X-KDE-Library</literal
+>. Contiene el nombre de la biblioteca «libtool» (sin la extensión <literal
+>.la</literal
+>). También fija (mediante el prefijo <literal
+>init_</literal
+>) el nombre de los símbolos exportados en la biblioteca que devuelven una «fábrica de objetos». En el ejemplo anterior, la biblioteca debe contener la siguiente función: </para>
+
+<programlisting
+>extern "C" {
+ void *init_libkdevdoxygen()
+ {
+ return new DoxygenFactory;
+ }
+};
+</programlisting>
+
+<para
+>El tipo de la clase fábrica <classname
+>DoxygenFactory</classname
+> depende del tipo de servicio específico que implementa el servicio. En nuestro ejemplo de una extensión para KDevelop, la fábrica debe ser del tipo <classname
+>KDevFactory</classname
+> (que deriva de <classname
+>KLibFactory</classname
+>). Otros ejemplos más comunes son <ulink url="kdeapi:kparts/KParts::Factory"
+>KParts::Factory</ulink
+> que debe producir objetos <ulink url="kdeapi:kparts/KParts::ReadOnlyPart"
+>KParts::ReadOnlyPart</ulink
+>, o, en muchos casos, <ulink url="kdeapi:tdecore/KLibFactory"
+>KLibFactory</ulink
+>. </para>
+
+</simplesect>
+
+
+<simplesect id="services-usinglibraryservices">
+<title
+>Uso de servicios de bibliotecas compartidas</title>
+
+<para
+>Para poder usar un servicio de biblioteca compartida en una aplicación, necesita obtener un objeto <ulink url="kdeapi:kio/KService.html"
+>KService</ulink
+> que lo represente. Esto se discute en la <ulink url="mime.html"
+>sección sobre tipos MIME</ulink
+> (y en una sección sobre el «trader» pendiente de escribir). </para>
+
+<para
+>Una vez que disponga de un objeto <classname
+>KService</classname
+>, solo necesita cargar la biblioteca y obtener un puntero a su objeto fábrica: </para>
+
+<programlisting
+>KService *service = ...
+QString libName = QFile::encodeName(service->library());
+KLibFactory *factory = KLibLoader::self()->factory(libName);
+if (!factory) {
+ QString name = service->name();
+ QString errorMessage = KLibLoader::self()->lastErrorMessage();
+ KMessageBox::error(0, i18n("There was an error loading service %1.\n"
+ "The diagnostics from libtool is:\n%2")
+ .arg(name).arg(errorMessage);
+}
+</programlisting>
+
+<para
+>A partir de este momento, el procedimiento a seguir depende de nuevo del tipo de servicio. Para las extensiones genéricas, puede crear objetos con el método <ulink url="kdeapi:tdecore/KLibFactory.html#ref3"
+>KLibFactory::create()</ulink
+>. Para KParts, debe moldear el puntero de la fábrica al tipo más específico KParts::Factory y usar su método create(): </para>
+
+<programlisting
+>if (factory->inherits("KParts::Factory")) {
+ KParts::Factory *partFactory = static_cast&lt;KParts::Factory*&gt;(factory);
+ QObject *obj = partFactory->createPart(parentWidget, widgetName,
+ parent, name, "KParts::ReadOnlyPart");
+ ...
+} else {
+ cout &lt;&lt; "El servicio no implementa la fábrica correcta" &lt;&lt; endl;
+}
+</programlisting>
+
+</simplesect>
+
+
+<simplesect id="services-definingdcopservices">
+<title
+>Definición de servicios DCOP</title>
+
+<para
+>Un servicio DCOP se implementa normalmente como un programa que se arranca cuando es necesario y que luego entra en un bucle para escuchar conexiones DCOP. El programa puede ser interactivo, pero también puede funcionar completa o parcialmente como un «demonio» en segundo plano sin que el usuario lo note. Un ejemplo de este tipo de «demonio» es <literal
+>kio_uiserver</literal
+>, que implementa la interacción del usuario como un diálogo de progreso en la biblioteca KIO. La ventaja de este tipo de «demonio» centralizado en este contexto radica en que, por ejemplo, los progresos de descarga de varios archivos distintos se pueden mostrar en una única ventana, incluso si todas las descargas se iniciaron desde aplicaciones diferentes. </para>
+
+<para
+>Un servicio DCOP se define de un modo distinto a como se hace con un servicio de biblioteca compartida. Por supuesto, no especifica una biblioteca, sino un ejecutable. Además, los servicios DCOP no contienen una línea <literal
+>ServiceType</literal
+>, debido a que suelen ser iniciados por su nombre. También contienen las dos líneas siguientes como propiedades adicionales: </para>
+
+<para
+><literal
+>X-DCOP-ServiceType</literal
+> especifica el modo en que se inicia el servicio. El valor <literal
+>Unique</literal
+> indica que el servicio no se debe iniciar más de una vez. Esto significa que si trata de iniciar este servicio, por ejemplo mediante <ulink url="kdeapi:tdecore/KApplication.html#startServiceByName"
+>KApplication::startServiceByName()</ulink
+>, KDE comprueba si ya estaba registrado en DCOP. En caso afirmativo, usa el servicio que está en ejecución. Si todavía no estaba registrado, KDE lo iniciará y esperará hasta que esté registrado. De este modo puede enviar llamadas DCOP al servicio inmediatamente. En tal caso, el servicio debe implementarse como <ulink url="kdeapi:tdecore/KUniqueApplication.html"
+>KUniqueApplication</ulink
+>. </para>
+
+<para
+>El valor <literal
+>Multi</literal
+> para <literal
+>X-DCOP-ServiceType</literal
+> indica que pueden coexistir múltiples instancias del servicio, de modo que cada intento de iniciar el servicio creará un nuevo proceso. Como última posibilidad, también puede usar el valor <literal
+>None</literal
+>. En este caso, el inicio del servicio no esperará a estar registrado en DCOP. </para>
+
+<para
+><literal
+>X-KDE-StartupNotify</literal
+> debe ser establecido normalmente como <literal
+>false</literal
+>. En caso contrario, cuando se inicie el programa, la barra de tareas mostrará una notificiación de lanzamiento o, dependiendo de las preferencias del usuario, se modificará el cursor. </para>
+
+<para
+>Esta es la definición de <literal
+>kio_uiserver</literal
+>: </para>
+
+<programlisting
+>[Desktop Entry]
+Type=Service
+Name=kio_uiserver
+Exec=kio_uiserver
+X-DCOP-ServiceType=Unique
+X-KDE-StartupNotify=false
+</programlisting>
+
+</simplesect>
+
+
+<simplesect id="services-usingdcopservices">
+<title
+>Uso de servicios DCOP</title>
+
+<para
+>Un servicio DCOP comienza con uno de entre varios métodos en la clase KApplication: </para>
+
+<programlisting
+>DCOPClient *client = kapp->dcopClient();
+client->attach();
+if (!client->isApplicationRegistered("kio_uiserver")) {
+ QString error;
+ if (KApplication::startServiceByName("kio_uiserver", QStringList(), &amp;error))
+ cout &lt;&lt; "El inicio de kioserver ha fallado con el mensaje " &lt;&lt; error &lt;&lt; endl;
+}
+...
+QByteArray data, replyData;
+QCString replyType;
+QDataStream arg(data, IO_WriteOnly);
+arg &lt;&lt; true;
+if (!client->call("kio_uiserver", "UIServer", "setListMode(bool)",
+ data, replyType, replyData))
+ cout &lt;&lt; "Ha fallado la llamada a kio_uiserver" &lt;&lt; endl;
+...
+</programlisting>
+
+<para
+>Tenga en cuenta que el ejemplo de llamada DCOP que se proporciona aquí usa ordenación de argumentos. A menudo deseará usar una plantilla generada por «dcopidl2cpp» en su lugar, porque es mucho más simple y menos propensa a errores. </para>
+
+<para
+>En el ejemplo propuesto, el servicio se inició «por nombre»; es decir, el primer argumento de <function
+>KApplication::startServiceByName()</function
+> es el nombre que aparece en la línea <literal
+>Name</literal
+> del archivo «desktop». Una alternativa consiste en usar <function
+>KApplication::startServiceByDesktopName()</function
+>, que toma el nombre del archivo «desktop» como argumento (en este caso, <literal
+>«kio_uiserver.desktop»</literal
+>). </para>
+
+<para
+>Todas estas llamadas tienen una lista de URL como segundo parámetro, que se proporciona al servicio en la línea de comando. El tercer argumento es un puntero a una clase <classname
+>QString</classname
+>. Si el inicio del servicio falla, este argumento contendrá un mensaje de error traducido. </para>
+
+</simplesect>
+
+</sect1>
+
+
+<sect1 id="components-mime">
+<title
+>Tipos MIME</title>
+
+<simplesect id="mime-whataremimetypes">
+<title
+>¿Qué son los tipos MIME?</title>
+
+<para
+>Los tipos MIME se utilizan para describir el tipo de contenido de los archivos o de segmentos de datos. Al principio fueron introducidos para permitir el envío de archivos de imágenes, sonidos, etc., por correo electrónico (MIME significa «Multipurpose Internet Mail Extensions», «extensiones de correo Internet multipropósito» en español). Más tarde, este sistema también fue utilizado por los navegadores web para determinar cómo presentar los datos enviados al usuario por un servidor web. Por ejemplo, una página HTML posee el tipo MIME «text/html», y un archivo postscript, «application/postscript». En KDE, este concepto se usa en varios lugares: </para>
+
+<itemizedlist>
+
+<listitem
+><para
+>En la vista de iconos de <application
+>Konqueror</application
+>, los archivos se representan por iconos. Cada tipo MIME tiene asociado su propio icono. </para
+></listitem>
+
+<listitem
+><para
+>Cuando pulse sobre un icono de archivo o sobre su nombre en <application
+>Konqueror</application
+>, el archivo será mostrado en una vista empotrada, o se abrirá una aplicación asociada con su tipo de archivo. </para
+></listitem>
+
+<listitem
+><para
+>Cuando arrastra y suelta varios datos de una aplicación a otra (o dentro de la misma aplicación), el objetivo donde se sueltan puede decidir aceptar solo ciertos tipos de datos. Aún más, manejará datos de imágenes de un modo distinto a como maneja datos de texto. </para
+></listitem>
+
+<listitem
+><para
+>Los datos del Portapapeles poseen un tipo MIME. Tradicionalmente, los programas de X solo manejan mapas de píxeles y textos, pero con Qt no existen restricciones sobre los tipos de datos. </para
+></listitem>
+
+</itemizedlist>
+
+<para
+>De los ejemplos anteriores se deduce que la manipulación de tipos MIME es algo complejo. En primer lugar, es necesario establecer una correspondencia entre los nombres de archivo y los tipos MIME. KDE va un paso más lejos al permitir correspondencias incluso entre contenido de archivos y tipos MIME para aquellos casos en los que no se dispone de un nombre de archivo. En segundo lugar, es necesario establecer una correspondencia entre tipos MIME y aplicaciones y bibliotecas que puedan visualizar o editar un archivo de cierto tipo, o crear una imagen en miniatura para él. </para>
+
+<para
+>Existen diversas API para deducir el tipo MIME de datos o archivos. En general, existe una cierta compensación entre velocidad y fiabilidad que debe realizar. Puede encontrar el tipo de un archivo examinando solo su nombre de archivo (es decir, su extensión, en la mayoría de los casos). Por ejemplo, un archivo <filename
+>nombre.jpg</filename
+> es normalmente de tipo «image/jpeg». Pero no es fiable en los casos en los que se ha eliminado la extensión, donde tendrá que examinar el contenido del archivo. Por supuesto, se trata de un proceso más lento, especialmente para los archivos que tienen que ser descargados vía HTTP en primer lugar. Este método dependiente del contenido está basado en el archivo <filename
+>KDEDIR/share/mimelnk/magic</filename
+>, por lo que resulta difícil de extender. Pero, en general, la información de tipo MIME se puede facilitar al sistema de forma rápida instalando un archivo <literal
+>.desktop</literal
+>, con lo que estará disponible de forma eficiente y conveniente para todas las bibliotecas de KDE. </para>
+
+</simplesect>
+
+
+<simplesect id="mime-definingmimetypes">
+<title
+>Definición de tipos MIME</title>
+
+<para
+>Definamos un tipo MIME <literal
+>«application/x-foo»</literal
+> para nuestro programa <application
+>foobar</application
+>. Para este fin, deberá escribir un archivo <filename
+>foo.desktop</filename
+> e instalarlo en <filename
+>KDEDIR/share/mimelnk/application</filename
+> (que es su ubicación usual, aunque puede diferir entre distribuciones). Esto se consigue añadiendo lo siguiente al archivo <filename
+>Makefile.am</filename
+>: </para>
+
+<programlisting
+>mimedir = $(kde_mimedir)/application
+mime_DATA = foo.desktop
+EXTRA_DIST = $(mime_DATA)
+</programlisting>
+
+<para
+>El archivo <filename
+>foo.desktop</filename
+> debería ser similar al siguiente: </para>
+
+<programlisting
+>[Desktop Entry]
+Type=MimeType
+MimeType=application/x-foo
+Icon=fooicon
+Patterns=*.foo;
+DefaultApp=foobar
+Comment=Foo Data File
+Comment[es]=Archivo de datos de ejemplo
+</programlisting>
+
+<para
+>La entrada <literal
+>Comment</literal
+> debe ser traducida. Como el archivo <filename
+>.desktop</filename
+> especifica un icono, también debe instalar un icono <filename
+>fooicon.png</filename
+> que represente al archivo, por ejemplo, en <application
+>Konqueror</application
+>. </para>
+
+<para
+>En las bibliotecas de KDE, este tipo de definición se mapea a una instancia de la clase <ulink url="kdeapi:kio/KMimeType.html"
+>KMimeType</ulink
+>. Use esto como en el siguiente ejemplo: </para>
+
+<programlisting
+>KMimeType::Ptr type = KMimeType::mimeType("application/x-foo");
+cout &lt;&lt; "Tipo: " &lt;&lt; type->name() &lt; endl;
+cout &lt;&lt; "Icono: " &lt;&lt; type->icon() &lt; endl;
+cout &lt;&lt; "Comentario: " &lt;&lt; type->icon() &lt; endl;
+QStringList patterns = type->patterns();
+QStringList::ConstIterator it;
+for (it = patterns.begin(); it != patterns.end(); ++it)
+ cout &lt;&lt; "Patrón: " &lt;&lt; (*it) &lt;&lt; endl;
+</programlisting>
+
+</simplesect>
+
+
+<simplesect id="mime-determiningmimetypes">
+<title
+>Determinación del tipo MIME de los datos</title>
+
+<para
+>El método más rápido para determinar el tipo MIME de un archivo es usar la función <function
+>KMimeType::findByURL()</function
+>, que busca en la cadena de la URL y determina, en la mayoría de casos, el tipo MIME a partir de la extensión. Este mecanismo no se usa con ciertos protocolos (como http, man o info). Por ejemplo, los guiones CGI de un servidor web escritos en Perl suelen tener la extensión <literal
+>.pl</literal
+>, lo que indica un tipo MIME <literal
+>«text/x-perl»</literal
+>. No obstante, el archivo entregado por el servidor es la salida de este guión, que normalmente es de tipo HTML. En este caso, <function
+>KMimeType::findByURL()</function
+> devuelve el tipo MIME <literal
+>«application/octet-stream»</literal
+> (disponible mediante <function
+>KMimeType::defaultMimeType()</function
+>), que indica un fallo al encontrar el tipo MIME. </para>
+
+<programlisting
+>KMimeType::Ptr type = KMimeType::findByURL("/home/bernd/foobar.jpg");
+if (type->name() == KMimeType::defaultMimeType())
+ cout &lt;&lt; "No se puede encontrar el tipo" &lt;&lt; endl;
+else
+ cout &lt;&lt; "Tipo: " &lt;&lt; type->name() &lt;&lt; endl;
+</programlisting>
+
+<para
+>(Este método posee algunos argumentos más, pero no están documentados, así que puede olvidarse de ellos sin más). </para>
+
+<para
+>Es posible que quiera encontrar un tipo MIME a partir del contenido de un archivo en lugar de a partir de su nombre. Esto es mucho más eficaz, pero también más lento, ya que necesita leer una parte del archivo. Esto se hace con la clase <ulink url="kdeapi:kio/KMimeMagic.html"
+>KMimeMagic</ulink
+>, que posee un manejo de errores distinto: </para>
+
+<programlisting
+>KMimeMagicResult *result = KMimeMagic::self()->findFileType("/home/bernd/foobar.jpg");
+if (!result || !result->isValid())
+ cout &lt;&lt; "No se puede encontrar el tipo" &lt;&lt; endl;
+else
+ cout &lt;&lt; "Tipo: " &lt;&lt; result->mimeType() &lt;&lt; endl;
+</programlisting>
+
+<para
+>Como variante de esta función, también puede determinar el tipo de un segmento de memoria. Esto se usa, por ejemplo, en <application
+>Kate</application
+> para encontrar el modo de resaltado adecuado: </para>
+
+<programlisting
+>QByteArray array;
+...
+KMimeMagicResult *result = KMimeMagic::self()->findBufferType(array);
+if (!result || !result->isValid())
+ cout &lt;&lt; "No se puede encontrar el tipo" &lt;&lt; endl;
+else
+ cout &lt;&lt; "Tipo: " &lt;&lt; result->mimeType() &lt;&lt; endl;
+</programlisting>
+
+<para
+>Por supuesto, incluso KMimeMagic sólo es capaz de determinar un tipo de archivo a partir del contenido de un archivo local. Para los archivos remotos existe otra posibilidad adicional: </para>
+
+<programlisting
+>KURL url("http://developer.kde.org/favicon.ico");
+QString type = KIO::NetAccess::mimetype(url);
+if (type == KMimeType::defaultMimeType())
+ cout &lt;&lt; "No se puede encontrar el tipo" &lt;&lt; endl;
+else
+ cout &lt;&lt; "Tipo: " &lt;&lt; type &lt;&lt; endl;
+</programlisting>
+
+<para
+>Esto comienza una tarea KIO para descargar una parte del archivo y comprobar su tipo MIME. Tenga en cuenta que esta función puede resultar bastante lenta y bloquear el programa. Normalmente solo querrá usar esto si <function
+>KMimeType::findByURL()</function
+> ha devuelto <literal
+>«application/octect-stream»</literal
+>. </para>
+
+<para
+>Por otra parte, si no desea bloquear su aplicación, también puede iniciar la tarea KIO explícitamente y conectarse a algunas de sus señales: </para>
+
+<programlisting
+>void FooClass::findType()
+{
+ KURL url("http://developer.kde.org/favicon.ico");
+ KIO::MimetypeJob *job = KIO::mimetype(url);
+ connect( job, SIGNAL(result(KIO::Job*)),
+ this, SLOT(mimeResult(KIO::Job*)) );
+}
+
+void FooClass::mimeResult(KIO::Job *job)
+{
+ if (job->error())
+ job->showErrorDialog();
+ else
+ cout &lt;&lt; "Tipo MIME: " &lt;&lt; ((KIO::MimetypeJob *)job)->mimetype() &lt;&lt; endl;
+}
+</programlisting>
+
+</simplesect>
+
+
+<simplesect id="mime-mappingmimetypes">
+<title
+>Mapear un tipo MIME a una aplicación o a un servicio</title>
+
+<para
+>Cuando se instala una aplicación, se copia un archivo <literal
+>.desktop</literal
+> que contiene una lista de tipos MIME que esta aplicación puede cargar. De modo similar, los componentes como KParts hacen que esta información esté disponible por sus archivos <literal
+>.desktop</literal
+> de servicio. De modo que, en general, existen varios programas y componentes que pueden procesar un tipo MIME dado. Puede obtener una lista de ellos usando la clase <classname
+>KServiceTypeProfile</classname
+>: </para>
+
+<programlisting
+>KService::OfferList offers = KServiceTypeProfile::offers("text/html", "Application");
+KService::OfferList::ConstIterator it;
+for (it = offers.begin(); it != offers.end(); ++it) {
+ KService::Ptr service = (*it);
+ cout &lt;&lt; "Nombre: " &lt;&lt; service->name() &lt;&lt; endl;
+}
+</programlisting>
+
+<para
+>El valor devuelto por esta función es una lista de ofertas de servicio. Un objeto <classname
+>KServiceOffer</classname
+> empaqueta un KService::Ptr junto a un número de preferencia. La lista devuelta por <function
+>KServiceTypeProfile::offers()</function
+> está ordenada según la preferencia del usuario. El usuario puede cambiarla llamando a <command
+>keditfiletype text/html</command
+> o seleccionando <guimenuitem
+>Editar tipo de archivo</guimenuitem
+> en el menú de contexto de <application
+>Konqueror</application
+> sobre un archivo HTML. </para>
+
+<para
+>En el ejemplo anterior, se solicitó una lista de las aplicaciones que ofrecen soporte para <literal
+>text/html</literal
+>. Entre otros, esta lista contendrá editores HTML, como <application
+>Quanta Plus</application
+>. También puede sustituir el segundo argumento <literal
+>"Application"</literal
+> por <literal
+>"KParts::ReadOnlyPart"</literal
+>. En este caso, obtendrá una lista de componentes integrables para visualizar HTML, como KHTML. </para>
+
+<para
+>En la mayor parte de los casos no estará interesado en la lista de todos los servicios ofrecidos por una combinación de tipo MIME y tipo de servicio. Existe una función más conveniente que le proporciona solo el servicio ofrecido con la preferencia más alta: </para>
+
+<programlisting
+>KService::Ptr offer = KServiceTypeProfile::preferredService("text/html", "Application");
+if (offer)
+ cout &lt;&lt; "Nombre: " &lt;&lt; service->name() &lt;&lt; endl;
+else
+ cout &lt;&lt; "No se ha encontrado un servicio apropiado" &lt;&lt; endl;
+</programlisting>
+
+<para
+>Para solicitudes aún más complejas existe un <ulink url="kdeapi:kio/KTrader.html"
+>«trader»</ulink
+> desarrollado de modo similar a CORBA. </para>
+
+<para
+>Para ejecutar una aplicación de servicio con algunas URLs, use <ulink url="kdeapi:kio/KRun.html"
+>KRun</ulink
+>: </para>
+
+<programlisting
+>KURL::List urlList;
+urlList &lt;&lt; "http://www.ietf.org/rfc/rfc1341.txt?number=1341";
+urlList &lt;&lt; "http://www.ietf.org/rfc/rfc2046.txt?number=2046";
+KRun::run(offer.service(), urlList);
+</programlisting>
+
+</simplesect>
+
+
+<simplesect id="mime-misc">
+<title
+>Otros</title>
+
+<para
+>En esta sección listaremos algunas APIs directamente relacionadas con las de la sección anterior. </para>
+
+<para
+>Obtener un icono para una URL. Esto busca el tipo de URL y devuelve el icono asociado. </para>
+
+<programlisting
+>KURL url("ftp://ftp.kde.org/pub/incoming/wibble.c");
+QString icon = KMimeType::iconForURL(url);
+</programlisting>
+
+<para
+>Ejecutar una URL. Esto busca el tipo de URL y ejecuta el programa preferente del usuario que está asociado a este tipo. </para>
+
+<programlisting
+>KURL url("http://dot.kde.org");
+new KRun(url);
+</programlisting>
+
+</simplesect>
+
+</sect1>
+
+
+<sect1 id="nettransparency">
+<title
+>Transparencia de red</title>
+
+<simplesect id="nettransparency-intro">
+<title
+>Introducción</title>
+
+<para
+>En la era de la Web resulta de capital importancia que las aplicaciones de escritorio puedan acceder a recursos situados en Internet: deben ser capaces de descargar archivos de un servidor web, escribir archivos en un servidor ftp o leer mensajes de correo en un servidor web. Esta capacidad de acceder a archivos sin que importe su ubicación se suele denominar <emphasis
+>transparencia de red</emphasis
+>. </para>
+
+<para
+>En el pasado se implementaron diferentes aproximaciones para conseguir este objetivo. El viejo sistema de archivos NFS es un intento de implementar transparencia de red en el nivel de la API POSIX. Aunque esta aproximación funciona bastante bien en redes locales, estrechamente unidas, no es adecuada para recursos cuyo acceso no es fiable o es posiblemente lento. En este caso, el <emphasis
+>asincronismo</emphasis
+> es importante. Mientras usted espera que su navegador web descargue una página, la interfaz de usuario no debería estar bloqueada. Además, la visualización de la página no debería comenzar cuando la página esté completamente disponible, sino que debe actualizarse a medida que los datos vayan llegando. </para>
+
+<para
+>En las bibliotecas de KDE, la transparencia de red está implementada en la API KIO. El concepto central de esta arquitectura es una <emphasis
+>tarea</emphasis
+> de entrada/salida. Una tarea puede copiar o borrar archivos o cosas similares. Una vez que una tarea ha comenzado, funcionará en segundo plano y no bloqueará la aplicación. Cualquier comunicación de vuelta entre la tarea y la aplicación (como la entrega de datos o de información de progreso) se realiza de forma integrada en el bucle de eventos de Qt. </para>
+
+<para
+>La operación en segundo plano se realiza mediante el inicio de <emphasis
+>ioslaves</emphasis
+> para realizar ciertas tareas. Los «ioslaves» se inician como procesos independientes y se comunica con ellos mediante «sockets» de dominio UNIX. De este modo no es necesaria la programación multihilo, y los esclavos inestables no pueden bloquear la aplicación que los usa. </para>
+
+<para
+>Las ubicaciones de los archivos se expresan mediante las ampliamente usadas URL. Pero, en KDE, las URL no solo expanden el alcance de los archivos direccionables más allá del sistema de archivos local, sino que también van en el sentido contrario: por ejemplo, puede navegar por el interior de archivos «tar». Esto se consigue anidando URL. Por ejemplo, un archivo que resida dentro de un archivo comprimido «tar» en un servidor web, tendría la URL </para>
+
+<programlisting
+>http://www-com.physik.hu-berlin.de/~bernd/article.tgz#tar:/paper.tex
+</programlisting>
+
+</simplesect>
+
+
+<simplesect id="nettransparency-usingkio">
+<title
+>Uso de KIO</title>
+
+<para
+>En muchos casos, las tareas se crean llamando a funciones del nombre de espacios KIO. Estas funciones tienen una o dos URL como argumento, además de otros parámetros posiblemente necesarios. Cuando la tarea termina, emite la señal <literal
+>result(KIO::Job*)</literal
+>. Tras emitir esta señal, la tarea se borra a sí misma. De este modo, un caso de uso típico podría ser: </para>
+
+<programlisting
+>void FooClass::makeDirectory()
+{
+ SimpleJob *job = KIO::mkdir(KURL("file:/home/bernd/kiodir"));
+ connect( job, SIGNAL(result(KIO::Job*)),
+ this, SLOT(mkdirResult(KIO::Job*)) );
+}
+
+void FooClass::mkdirResult(KIO::Job *job)
+{
+ if (job->error())
+ job->showErrorDialog();
+ else
+ cout &lt;&lt; "mkdir funcionó bien" &lt;&lt; endl;
+}
+</programlisting>
+
+<para
+>Dependiendo del tipo de tarea, también podrá conectarla a otras señales. </para>
+
+<para
+>Lo que sigue es una introducción a las posibles funciones: </para>
+
+<variablelist>
+
+<varlistentry
+><term
+>KIO::mkdir(const KURL &amp;url, int permission)</term>
+<listitem
+><para
+>Crea un directorio, opcionalmente con ciertos permisos. </para
+></listitem>
+</varlistentry>
+
+<varlistentry
+><term
+>KIO::rmdir(const KURL &amp;url)</term>
+<listitem
+><para
+>Elimina un directorio. </para
+></listitem>
+</varlistentry>
+
+<varlistentry
+><term
+>KIO::chmod(const KURL &amp;url, int permissions)</term>
+<listitem
+><para
+>Cambia los permisos de un archivo. </para
+></listitem>
+</varlistentry>
+
+<varlistentry
+><term
+>KIO::rename(const KURL &amp;src, const KURL &amp;dest, bool overwrite)</term>
+<listitem
+><para
+>Renombra un archivo. </para
+></listitem>
+</varlistentry>
+
+<varlistentry
+><term
+>KIO::symlink(const QString &amp;target, const KURL &amp;dest, bool overwrite, bool showProgressInfo)</term>
+<listitem
+><para
+>Crea un enlace simbólico. </para
+></listitem>
+</varlistentry>
+
+<varlistentry
+><term
+>KIO::stat(const KURL &amp;url, bool showProgressInfo)</term>
+<listitem
+><para
+>Obtiene cierta información sobre el archivo, como su tamaño, hora de modificación y permisos. La información puede obtenerse de KIO::StatJob::statResult() una vez que el trabajo haya finalizado. </para
+></listitem>
+</varlistentry>
+
+<varlistentry
+><term
+>KIO::get(const KURL &amp;url, bool reload, bool showProgressInfo)</term>
+<listitem
+><para
+>Transfiere datos desde un URL. </para
+></listitem>
+</varlistentry>
+
+<varlistentry
+><term
+>KIO::put(const KURL &amp;url, int permissions, bool overwrite, bool resume, bool showProgressInfo)</term>
+<listitem
+><para
+>Transfiere datos a un URL. </para
+></listitem>
+</varlistentry>
+
+<varlistentry
+><term
+>KIO::http_post(const KURL &amp;url, const QByteArray &amp;data, bool showProgressInfo)</term>
+<listitem
+><para
+>Envía datos. Específica de HTTP. </para
+></listitem>
+</varlistentry>
+
+<varlistentry
+><term
+>KIO::mimetype(const KURL &amp;url, bool showProgressInfo)</term>
+<listitem
+><para
+>Intenta encontrar el tipo MIME de un URL. El tipo se puede obtener de KIO::MimetypeJob::mimetype() una vez que el trabajo haya finalizado. </para
+></listitem>
+</varlistentry>
+
+<varlistentry
+><term
+>KIO::file_copy(const KURL &amp;src, const KURL &amp;dest, int permissions, bool overwrite, bool resume, bool showProgressInfo)</term>
+<listitem
+><para
+>Copia un único archivo. </para
+></listitem>
+</varlistentry>
+
+<varlistentry
+><term
+>KIO::file_move(const KURL &amp;src, const KURL &amp;dest, int permissions, bool overwrite, bool resume, bool showProgressInfo)</term>
+<listitem
+><para
+>Renombra o mueve un único archivo. </para
+></listitem>
+</varlistentry>
+
+<varlistentry
+><term
+>KIO::file_delete(const KURL &amp;url, bool showProgressInfo)</term>
+<listitem
+><para
+>Elimina un único archivo. </para
+></listitem>
+</varlistentry>
+
+<varlistentry
+><term
+>KIO::listDir(const KURL &amp;url, bool showProgressInfo)</term>
+<listitem
+><para
+>Lista el contenido de un directorio. Cada vez que se conozcan nuevas entradas será emitida la señal KIO::ListJob::entries(). </para
+></listitem>
+</varlistentry>
+
+<varlistentry
+><term
+>KIO::listRecursive(const KURL &amp;url, bool showProgressInfo)</term>
+<listitem
+><para
+>Similar a la función listDir(), aunque esta es recursiva. </para
+></listitem>
+</varlistentry>
+
+<varlistentry
+><term
+>KIO::copy(const KURL &amp;src, const KURL &amp;dest, bool showProgressInfo)</term>
+<listitem
+><para
+>Copia un archivo o un directorio. Los directorios se copian recursivamente. </para
+></listitem>
+</varlistentry>
+
+<varlistentry
+><term
+>KIO::move(const KURL &amp;src, const KURL &amp;dest, bool showProgressInfo)</term>
+<listitem
+><para
+>Mueve o renombra un archivo o un directorio. </para
+></listitem>
+</varlistentry>
+
+<varlistentry
+><term
+>KIO::del(const KURL &amp;src, bool shred, bool showProgressInfo)</term>
+<listitem
+><para
+>Elimina un archivo o un directorio. </para
+></listitem>
+</varlistentry>
+
+</variablelist>
+
+</simplesect>
+
+
+<simplesect id="nettransparency-direntries">
+<title
+>Entradas de directorio</title>
+
+<para
+>La tarea KIO::stat() y la tarea KIO::listDir() devuelven un resultado de tipo UDSEntry y UDSEntryList, respectivamente. Esta última está definida como QValueList&lt;UDSEntry&gt;. El acrónimo de UDS significa «servicio de directorio universal», en inglés. El principio subyacente consiste en que una entrada de directorio solo contiene la información que puede proporcionar un «ioslave», pero no más. Por ejemplo, el esclavo http no proporciona ninguna información sobre permisos de acceso o propietarios del archivo. En lugar de ello, una USDEntry consiste en una lista de UDSAtoms, cada uno de los cuales proporciona una pieza de información específica (que consiste en un tipo almacenado en «m_uds», y en un valor entero en «m_long» o en una cadena de texto en «m_str», dependiendo del tipo). </para>
+
+<para
+>Actualmente están definidos los siguientes tipos: </para>
+
+<itemizedlist>
+
+<listitem
+><para
+>UDS_SIZE (integer) - Tamaño del archivo. </para
+></listitem>
+
+<listitem
+><para
+>UDS_USER (string) - Usuario al que pertenece el archivo. </para
+></listitem>
+
+<listitem
+><para
+>UDS_GROUP (string) - Grupo al que pertenece el archivo. </para
+></listitem>
+
+<listitem
+><para
+>UDS_NAME (string) - Nombre del archivo. </para
+></listitem>
+
+<listitem
+><para
+>UDS_ACCESS (integer) - Permisos del archivo, tal y como se almacenan, por ejemplo, en el campo st_mode usando la función stat() de libc. </para
+></listitem>
+
+<listitem
+><para
+>UDS_FILE_TYPE (integer) - El tipo de archivo, del mismo modo que se proporciona, por ejemplo, por stat() en el campo st_mode. Por lo tanto, puede usar las típicas macros de libc (como S_ISDIR) para comprobar este valor. Tenga en cuenta que los datos proporcionados por los «ioslaves» corresponden a los de stat(), no a los de lstat(). Es decir, en el caso de los enlaces simbólicos, el tipo de archivo será el tipo del archivo apuntado por el enlace, no el del enlace en sí mismo. </para
+></listitem>
+
+<listitem
+><para
+>UDS_LINK_DEST (string) - En caso de un enlace simbólico, el nombre del archivo al que apunta. </para
+></listitem>
+
+<listitem
+><para
+>UDS_MODIFICATION_TIME (integer) - La fecha y hora (del tipo time_t) de la última vez que se modificó el archivo, como se guarda, por ejemplo, en el campo st_mtime de stat(). </para
+></listitem>
+
+<listitem
+><para
+>UDS_ACCESS_TIME (integer) - La fecha y hora de la última vez que se accedió al archivo, como se guarda, por ejemplo, en el campo st_atime de stat(). </para
+></listitem>
+
+<listitem
+><para
+>UDS_CREATION_TIME (integer) - La fecha y hora de creación del archivo, como se guarda, por ejemplo, en el campo st_ctime de stat(). </para
+></listitem>
+
+<listitem
+><para
+>UDS_URL (string) - Proporciona una URL de un archivo. No consiste simplemente en la suma de la URL del directorio y del nombre del archivo. </para
+></listitem>
+
+<listitem
+><para
+>UDS_MIME_TYPE (string) - Tipo MIME del archivo. </para
+></listitem>
+
+<listitem
+><para
+>UDS_GUESSED_MIME_TYPE (string) - El tipo MIME del archivo deducido por el esclavo. La diferencia con el tipo anterior reside en que este no se debe tomar como fiable (debido a que su determinación de una forma fiable resultaría muy costosa). Por ejemplo, la clase KRun comprueba explícitamente el tipo MIME si no posee información fiable sobre él. </para
+></listitem>
+
+</itemizedlist>
+
+<para
+>Aunque la forma de almacenar información sobre los archivos en una <classname
+>UDSEntry</classname
+> es flexible y práctica desde el punto de vista del «ioslave», resulta confusa para el programador de la aplicación. Por ejemplo, para encontrar el tipo MIME de un archivo, deberá recorrer todos los átomos y comprobar si <literal
+>m_uds</literal
+> contiene el valor <literal
+>UDS_MIME_TYPE</literal
+>. Afortunadamente, existe una API que es mucho más fácil de usar: la clase <classname
+>KFileItem</classname
+>. </para>
+
+</simplesect>
+
+
+<simplesect id="nettransparency-syncuse">
+<title
+>Utilización síncrona</title>
+
+<para
+>A menudo, la API asíncrona de KIO resulta demasiado compleja de usar, por lo que la implementación de asincronismo total no es una prioridad. Por ejemplo, en un programa que solo puede manejar un archivo de documento a la vez, realmente hay pocas cosas que se puedan hacer mientras el programa descarga el archivo. Para estos casos simples, existe una API mucho más simple bajo la forma de funciones estáticas en KIO::NetAccess. Por ejemplo, para copiar un archivo, utilice </para>
+
+<programlisting
+>KURL origen, destino;
+origen = ...;
+destino = ...
+KIO::NetAccess::copy(origen, destino);
+</programlisting>
+
+<para
+>La función retornará cuando haya finalizado el proceso de copia completamente. Además, este método proporciona un diálogo de proceso y se asegura de que la aplicación procesa los eventos de actualización gráfica. </para>
+
+<para
+>Existe una combinación de funciones particularmente interesante: <function
+>download()</function
+> junto a <function
+>removeTempFile()</function
+>. La primera descarga un archivo de una determinada URL y lo almacena en un archivo temporal con un nombre único (este nombre se guarda en el segundo argumento). <emphasis
+>Si</emphasis
+> la URL es local, el archivo no se descarga, sino que se utiliza el segundo argumento como nombre para el archivo local. La función <function
+>removeTempFile()</function
+> borra el archivo proporcionado como argumento si este archivo fue el resultado de una descarga previa. En caso contrario, no hace nada. De este modo, el siguiente fragmento de código proporciona una manera muy fácil de descargar archivos independientemente de su ubicación: </para>
+
+<programlisting
+>KURL url;
+url = ...;
+QString tempFile;
+if (KIO::NetAccess::download(url, tempFile) {
+ // cargar el archivo de nombre tempFile
+ KIO::NetAccess::removeTempFile(tempFile);
+}
+</programlisting>
+
+</simplesect>
+
+
+<simplesect id="nettransparency-metadata">
+<title
+>Metadatos</title>
+
+<para
+>Como se ha visto anteriormente, la interfaz para tareas de entrada/salida es bastante abstracta y no considera los intercambios de información entre la aplicación y el esclavo de entrada/salida que sean específicos del protocolo. Esto no siempre resulta apropiado. Por ejemplo, puede proporcionar ciertos parámetros al esclavo HTTP para controlar el comportamiento de su caché o para enviar varias «cookies» con la petición. Para esta necesidad se introdujo el concepto de metadatos. Cuando se crea una tarea, puede configurarla añadiéndole metadatos. Cada elemento de metadatos consiste en una pareja clave/valor. Por ejemplo, para evitar que el esclavo HTTP descargue una página web de su caché, puede usar: </para>
+
+<programlisting
+>void FooClass::reloadPage()
+{
+ KURL url("http://www.tdevelop.org/index.html");
+ KIO::TransferJob *job = KIO::get(url, true, false);
+ job->addMetaData("cache", "reload");
+ ...
+}
+</programlisting>
+
+<para
+>La misma técnica se puede usar en el sentido contrario, o sea, para la comunicación del esclavo hacia la aplicación. El método <function
+>Job::queryMetaData()</function
+> pregunta por el valor de cierta clave entregada por el esclavo. Para el esclavo HTTP, un ejemplo sería la clave <literal
+>«modified»</literal
+>, que contiene la fecha (representada en forma de cadena de texto) de cuando la página web fue modificada por última vez. Por ejemplo: </para>
+
+<programlisting
+>void FooClass::printModifiedDate()
+{
+ KURL url("http://developer.kde.org/documentation/kde2arch/index.html");
+ KIO::TransferJob *job = KIO::get(url, true, false);
+ connect( job, SIGNAL(result(KIO::Job*)),
+ this, SLOT(transferResult(KIO::Job*)) );
+}
+
+void FooClass::transferResult(KIO::Job *job)
+{
+ QString mimetype;
+ if (job->error())
+ job->showErrorDialog();
+ else {
+ KIO::TransferJob *transferJob = (KIO::TransferJob*) job;
+ QString modified = transferJob->queryMetaData("modified");
+ cout &lt;&lt; "Última modificación: " &lt;&lt; modified &lt;&lt; endl;
+}
+</programlisting>
+
+</simplesect>
+
+
+<simplesect id="nettransparency-scheduling">
+<title
+>Programación</title>
+
+<para
+>Cuando use la API KIO no tendrá que preocuparse normalmente de los detalles de iniciar esclavos de entrada/salida y comunicarse con ellos. El uso normal consiste en comenzar una tarea con algunos parámetros y manejar las señales que emita esta tarea. </para>
+
+<para
+>Pero detrás del telón, el escenario es bastante más complejo. Cuando crea una tarea, ésta va a parar a una cola. Cuando la aplicación retorna al bucle de eventos, KIO asigna procesos esclavos para las tareas que hay en esta cola. Para las primeras tareas iniciadas, resulta obvio: se inicia un esclavo de entrada/salida para el protocolo apropiado. No obstante, una vez que la tarea (por ejemplo, una descarga de un servidor web) haya terminado, no se elimina inmediatamente. En lugar de ello, se coloca en un almacén de tareas inactivas y se elimina tras cierto tiempo de inactividad (3 minutos en la actualidad). Si durante este tiempo se produce una nueva petición para el mismo protocolo y servidor, se vuelve a reutilizar el esclavo. La ventaja obvia consiste en que, para una serie de tareas con el mismo servidor, se ahorra el costo de tener que crear nuevos procesos y posiblemente de repetir acciones de autenticación. </para>
+
+<para
+>Por supuesto, esta reutilización solo es posible cuando el esclavo existente ya ha terminado su anterior tarea. Si llega una nueva petición mientras un proceso esclavo existente todavía está en funcionamiento, se debe iniciar y usar un nuevo proceso. En el uso de la API de los ejemplos anteriores no existe ninguna limitación para la creación de nuevos procesos esclavos: si inicia una serie de descargas consecutivas para 20 archivos distintos, KIO iniciará 20 procesos esclavos. Este esquema de asignación de esclavos a las tareas se denomina <emphasis
+>directo</emphasis
+>. No siempre es el esquema más adecuado, ya que puede necesitar mucha memoria y sobrecargar tanto a la máquina cliente como a la servidora. </para>
+
+<para
+>Por lo tanto, existe una manera diferente: puede <emphasis
+>programar</emphasis
+> tareas. Si hace esto, solo podrá crear un limitado número (actualmente 3) de procesos esclavos para un protocolo determinado. Si crea más tareas, se colocarán en una cola y serán procesadas cuando un proceso esclavo quede inactivo. Esto se hace como sigue: </para>
+
+<programlisting
+>KURL url("http://developer.kde.org/documentation/kde2arch/index.html");
+KIO::TransferJob *job = KIO::get(url, true, false);
+KIO::Scheduler::scheduleJob(job);
+</programlisting>
+
+<para
+>Existe una tercera posibilidad <emphasis
+>orientada a conexiones</emphasis
+>. Por ejemplo, para el esclavo IMAP, no tiene sentido iniciar múltiples procesos para el mismo servidor: solo se debe forzar una conexión IMAP a la vez. En este caso, la aplicación debe tratar explícitamente con la noción de esclavo. Debe desasignar un esclavo de cierta conexión y luego asignar todas las tareas que pueda realizar la misma conexión con el mismo esclavo. De nuevo, esto se puede conseguir fácilmente usando KIO::Scheduler: </para>
+
+<programlisting
+>KURL baseUrl("imap://bernd@albert.physik.hu-berlin.de");
+KIO::Slave *slave = KIO::Scheduler::getConnectedSlave(baseUrl);
+
+KIO::TransferJob *job1 = KIO::get(KURL(baseUrl, "/INBOX;UID=79374"));
+KIO::Scheduler::assignJobToSlave(slave, job1);
+
+KIO::TransferJob *job2 = KIO::get(KURL(baseUrl, "/INBOX;UID=86793"));
+KIO::Scheduler::assignJobToSlave(slave, job2);
+
+...
+
+KIO::Scheduler::disconnectSlave(slave);
+</programlisting>
+
+<para
+>Solo debe desconectar el esclavo una vez que se garantice que han finalizado todos los trabajos que le hayan sido asignados. </para>
+
+</simplesect>
+
+
+<simplesect id="nettransparency-definingslaves">
+<title
+>Definición de un ioslave</title>
+
+<para
+>A continuación discutiremos cómo añadir un nuevo «ioslave» al sistema. Del mismo modo que ocurre con los servicios, los nuevos «ioslaves» se notifican al sistema mediante la instalación de un pequeño archivo de configuración. El siguiente fragmento de archivo «Makefile.am» instala el protocolo ftp: </para>
+
+<programlisting
+>protocoldir = $(kde_servicesdir)
+protocol_DATA = ftp.protocol
+EXTRA_DIST = $(mime_DATA)
+</programlisting>
+
+<para
+>El contenido del archivo ftp.protocol sería el siguiente: </para>
+
+<programlisting
+>[Protocol]
+exec=kio_ftp
+protocol=ftp
+input=none
+output=filesystem
+listing=Name,Type,Size,Date,Access,Owner,Group,Link,
+reading=true
+writing=true
+makedir=true
+deleting=true
+Icon=ftp
+</programlisting>
+
+<para
+>La entrada <literal
+>«protocol»</literal
+> define de qué protocolo se hace responsable este esclavo. La entrada <literal
+>«exec»</literal
+> es (al contrario de lo que hubiera esperado) el nombre de la biblioteca que implementa el esclavo. Cuando deba iniciarse el esclavo, se ejecuta el comando <command
+>«tdeinit»</command
+>, que es el encargado de cargar la biblioteca en su espacio de direcciones. Así que, en la práctica, puede pensar que un esclavo en funcionamiento es un proceso independiente, aunque esté implementado en una biblioteca. La ventaja de este mecanismo reside en que así se ahorra gran cantidad de memoria y se reduce el tiempo que necesita el enlazador en tiempo de ejecución. </para>
+
+<para
+>Las líneas «input» y «output» no se usan actualmente. </para>
+
+<para
+>Las restantes líneas del archivo <literal
+>.protocol</literal
+> definen qué propiedades tiene el esclavo. En general, las características que debe implementar un esclavo son más simples que las que proporciona la API KIO para la aplicación. La razón para esto reside en que las tareas complejas se programan en un conjunto de subtareas. Por ejemplo, para listar un directorio recursivamente se iniciará una tarea para el directorio de nivel superior, y luego una adicional para cada subdirectorio que contenga. Un programador interno de KIO se asegura de que no estén activas demasiadas tareas al mismo tiempo. De forma similar, para copiar un archivo con un protocolo que no proporciona copias directamente (como el protocolo <literal
+>ftp:</literal
+>), KIO puede leer el archivo de origen y luego escribir los datos en el archivo de destino. Para que esto funcione, el archivo <literal
+>.protocol</literal
+> debe notificar las acciones que proporciona su esclavo. </para>
+
+<para
+>Debido a que los esclavos se cargan como bibliotecas compartidas, aunque constituyen programas independientes, su infraestructura de código parece algo distinta a la de las extensiones para bibliotecas compartidas normales. La función que se llama para iniciar el esclavo se denomina <function
+>kdemain()</function
+>. Esta función realiza algún tipo de inicialización y luego entra en un bucle de eventos a la espera de peticiones por parte de la aplicación que la usa. El siguiente fragmento ilustra el proceso: </para>
+
+<programlisting
+>extern "C" { int kdemain(int argc, char **argv); }
+
+int kdemain(int argc, char **argv)
+{
+ KLocale::setMainCatalogue("tdelibs");
+ KInstance instance("kio_ftp");
+ (void) KGlobal::locale();
+
+ if (argc != 4) {
+ fprintf(stderr, "Uso: kio_ftp protocol "
+ "domain-socket1 domain-socket2\n");
+ exit(-1);
+ }
+
+ FtpSlave slave(argv[2], argv[3]);
+ slave.dispatchLoop();
+ return 0;
+}
+</programlisting>
+
+</simplesect>
+
+
+<simplesect id="nettransparency-implementingslaves">
+<title
+>Implementación de un ioslave</title>
+
+<para
+>Los esclavos se implementan como subclases de <classname
+>KIO::SlaveBase</classname
+> (FtpSlave en el ejemplo anterior). De este modo, las acciones que se listan en el archivo <literal
+>.protocol</literal
+> corresponden a ciertas funciones virtuales de <classname
+>KIO::SlaveBase</classname
+> que la implementación del esclavo debe reimplementar. Estas son algunas de las posibles acciones y sus correspondientes funciones virtuales: </para>
+
+<variablelist>
+
+<varlistentry
+><term
+>reading - Lee datos desde una URL</term>
+<listitem
+><para
+>void get(const KURL &amp;url)</para
+></listitem
+></varlistentry>
+
+<varlistentry
+><term
+>writing - Escribe datos en una URL y crea el archivo de destino si no existe.</term>
+<listitem
+><para
+>void put(const KURL &amp;url, int permissions, bool overwrite, bool resume)</para
+></listitem
+></varlistentry>
+
+<varlistentry
+><term
+>moving - Renombra un archivo.</term>
+<listitem
+><para
+>void rename(const KURL &amp;src, const KURL &amp;dest, bool overwrite)</para
+></listitem
+></varlistentry>
+
+<varlistentry
+><term
+>deleting - Borra un archivo o directorio.</term>
+<listitem
+><para
+>void del(const KURL &amp;url, bool isFile)</para
+></listitem
+></varlistentry>
+
+<varlistentry
+><term
+>listing - Lista el contenido de un directorio.</term>
+<listitem
+><para
+>void listDir(const KURL &amp;url)</para
+></listitem
+></varlistentry>
+
+<varlistentry
+><term
+>makedir - Crea un directorio.</term>
+<listitem
+><para
+>void mkdir(const KURL &amp;url, int permissions)</para
+></listitem
+></varlistentry>
+
+</variablelist>
+
+<para
+>Adicionalmente, existen funciones reimplementables que no están listadas en el archivo <literal
+>.protocol</literal
+>. Para estas operaciones, KIO determina automáticamente si están soportadas o no (es decir, la implementación por defecto devuelve un error). </para>
+
+<variablelist>
+
+<varlistentry
+><term
+>Entrega información sobre el archivo, similar a la función stat() de C.</term>
+<listitem
+><para
+>void stat(const KURL &amp;url)</para
+></listitem
+></varlistentry>
+
+<varlistentry
+><term
+>Cambia los permisos de acceso de un archivo.</term>
+<listitem
+><para
+>void chmod(const KURL &amp;url, int permissions)</para
+></listitem
+></varlistentry>
+
+<varlistentry
+><term
+>Determina el tipo MIME de un archivo.</term>
+<listitem
+><para
+>void mimetype(const KURL &amp;url)</para
+></listitem
+></varlistentry>
+
+<varlistentry
+><term
+>Copia un archivo.</term>
+<listitem
+><para
+>copy(const KURL &amp;url, const KURL &amp;dest, int permissions, bool overwrite)</para
+></listitem
+></varlistentry>
+
+<varlistentry
+><term
+>Crea un enlace simbólico.</term>
+<listitem
+><para
+>void symlink(const QString &amp;target, const KURL &amp;dest, bool overwrite)</para
+></listitem
+></varlistentry>
+
+</variablelist>
+
+<para
+>Todas estas implementaciones deben finalizar con una de estas dos llamadas: si la operación fue exitosa, se debería llamar a <literal
+>finished()</literal
+>; si ocurrió un error, <literal
+>error()</literal
+> debería ser llamada con un código de error como primer argumento y una cadena de texto como segundo. Los códigos de error posibles se listan como enumeraciones de tipo <type
+>KIO::Error</type
+>. El segundo argumento suele ser la URL en cuestión. Se usa, por ejemplo, en la función <function
+>KIO::Kob::showErrorDialgog()</function
+> para parametizar el mensaje de error legible por el usuario. </para>
+
+<para
+>En el caso de los esclavos que se corresponden con protocolos de red, resulta interesante reimplementar el método <function
+>SlaveBase::setHost()</function
+>. Este método se llama para comunicar al proceso esclavo información sobre el servidor, el puerto a usar, el nombre de usuario y su contraseña para iniciar la sesión. En general, los metadatos ajustados por la aplicación se pueden solicitar mediante <function
+>SlaveBase::metaData()</function
+>. Puede comprobar la existencia de metadatos para cualquier clave con la función <function
+>SlaveBase::hasMetaData()</function
+>. </para>
+
+</simplesect>
+
+
+<simplesect id="nettransparency-communication">
+<title
+>Devolviendo datos a la aplicación</title>
+
+<para
+>Varias acciones implementadas en un proceso esclavo necesitan algún modo de devolver datos a la aplicación que está usando dicho proceso esclavo: </para>
+
+<itemizedlist>
+
+<listitem
+><para
+><function
+>get()</function
+> envía bloques de datos. Esto se lleva a cabo con <function
+>data()</function
+>, que tiene como argumento un <classname
+>QByteArray</classname
+>. Por supuesto, no es necesario que envíe todos los datos al mismo tiempo. Si tiene que enviar un archivo grande, llame a <function
+>data()</function
+> con bloques más pequeños de datos, de modo que la aplicación pueda procesarlos. Llame a <function
+>finished()</function
+> cuando la transferencia haya terminado. </para
+></listitem>
+
+<listitem
+><para
+><function
+>listDir()</function
+> devuelve información sobre las entradas de un directorio. Para este propósito, llame a <function
+>listEntries()</function
+> con una <classname
+>KIO::UDSEntryList</classname
+> como argumento. Del mismo modo que ocurría con <function
+>data()</function
+>, puede llamar a esta función varias veces. Cuando haya terminado, llame a <function
+>listEntry()</function
+> con «true» como segundo parámetro. También puede llamar a <function
+>totalSize()</function
+> para devolver el número total de entradas de directorio, si es conocido. </para
+></listitem>
+
+<listitem
+><para
+><function
+>stat()</function
+> devuelve información sobre el archivo, como su tamaño, tipo MIME, etc. Esta información está empaquetada en una <classname
+>KIO::UDSEntry</classname
+>, que se describirá más adelante. Use <function
+>statEntry()</function
+> para enviar este tipo de elementos a la aplicación. </para
+></listitem>
+
+<listitem
+><para
+><function
+>mimetype()</function
+> llama a <function
+>mimeType()</function
+> con un argumento de cadena. </para
+></listitem>
+
+<listitem
+><para
+><function
+>get()</function
+> y <function
+>copy()</function
+> pueden necesitar proporcionar información de progreso. Esto se lleva a cabo con los métodos <function
+>totalSize()</function
+>, <function
+>processedSize()</function
+> y <function
+>speed()</function
+>. El tamaño total y el procesado se devuelven en bytes, y la velocidad en bytes por segundo. </para
+></listitem>
+
+<listitem
+><para
+>Puede enviar pares clave/valor de metadatos arbitrarios con <function
+>setMetaData()</function
+>. </para
+></listitem>
+
+</itemizedlist>
+
+</simplesect>
+
+
+<simplesect id="nettransparency-interacting">
+<title
+>Interacción con el usuario</title>
+
+<para
+>A veces, un proceso esclavo debe interacturar con el usuario. Como ejemplos se pueden incluir los mensajes de información, los diálogos de autenticación y los de confirmación cuando se va a sobrescribir un archivo. </para>
+
+<itemizedlist>
+
+<listitem
+><para
+><function
+>infoMessage()</function
+> - Se usa para propósitos informativos, tales como el mensaje «Obteniendo datos de &lt;host&gt;» del esclavo http, que se muestra a menudo en la barra de estado del programa. En el lado de la aplicación, este método se corresponde a la señal <function
+>KIO::Job::infoMessage()</function
+>. </para
+></listitem>
+
+<listitem
+><para
+><function
+>warning()</function
+> - Muestra un aviso en una caja de mensaje con <function
+>KMessageBox::information()</function
+>. No ocurre nada si ya hubiera otra caja de mensaje abierta como consecuencia de una llamada anterior a warning() desde el mismo proceso esclavo. </para
+></listitem>
+
+<listitem
+><para
+><function
+>messageBox()</function
+> - Este método es más rico que el anterior, ya que permite abrir una caja de mensaje con texto, título y algunos botones. Vea el tipo enum <type
+>SlaveBase::MessageBoxType</type
+> como referencia. </para
+></listitem>
+
+<listitem
+><para
+><function
+>openPassDlg()</function
+> - Abre un diálogo para introducir el nombre de usuario y la contraseña. </para
+></listitem>
+
+</itemizedlist>
+
+</simplesect>
+
+</sect1>
+
+</chapter>
+
+
+
+<appendix id="misc">
+<title
+>Licencias</title>
+
+&underFDL;
+&underGPL;
+
+</appendix>
+
+</book>
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/joinbevel.png b/tde-i18n-es/docs/tdevelop/kdearch/joinbevel.png
new file mode 100644
index 00000000000..4155aa35133
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/joinbevel.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/joinmiter.png b/tde-i18n-es/docs/tdevelop/kdearch/joinmiter.png
new file mode 100644
index 00000000000..bc690db4f80
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/joinmiter.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/joinround.png b/tde-i18n-es/docs/tdevelop/kdearch/joinround.png
new file mode 100644
index 00000000000..a44f906dc71
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/joinround.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/konqi-mirrored.png b/tde-i18n-es/docs/tdevelop/kdearch/konqi-mirrored.png
new file mode 100644
index 00000000000..89f4fc6ab52
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/konqi-mirrored.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/konqi-normal.png b/tde-i18n-es/docs/tdevelop/kdearch/konqi-normal.png
new file mode 100644
index 00000000000..efdc1dbd531
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/konqi-normal.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/konqi-rotated.png b/tde-i18n-es/docs/tdevelop/kdearch/konqi-rotated.png
new file mode 100644
index 00000000000..7504fe7b8d0
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/konqi-rotated.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/konqi-sheared.png b/tde-i18n-es/docs/tdevelop/kdearch/konqi-sheared.png
new file mode 100644
index 00000000000..0648ea5be20
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/konqi-sheared.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/kview-menu.png b/tde-i18n-es/docs/tdevelop/kdearch/kview-menu.png
new file mode 100644
index 00000000000..30933c2f373
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/kview-menu.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/opengl.png b/tde-i18n-es/docs/tdevelop/kdearch/opengl.png
new file mode 100644
index 00000000000..4a9ae03ec61
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/opengl.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/penstyles.png b/tde-i18n-es/docs/tdevelop/kdearch/penstyles.png
new file mode 100644
index 00000000000..7660deedaff
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/penstyles.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/kdearch/whatsthis.png b/tde-i18n-es/docs/tdevelop/kdearch/whatsthis.png
new file mode 100644
index 00000000000..109b3673f20
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/kdearch/whatsthis.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/Makefile.am b/tde-i18n-es/docs/tdevelop/tdevelop/Makefile.am
new file mode 100644
index 00000000000..2d733d1b104
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/Makefile.am
@@ -0,0 +1,4 @@
+KDE_LANG = es
+SUBDIRS = $(AUTODIRS)
+KDE_DOCS = AUTO
+KDE_MANS = AUTO
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/Makefile.in b/tde-i18n-es/docs/tdevelop/tdevelop/Makefile.in
new file mode 100644
index 00000000000..d15f211a851
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/Makefile.in
@@ -0,0 +1,613 @@
+# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# KDE tags expanded automatically by am_edit - $Revision: 483858 $
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+subdir = docs/tdevelop/tdevelop
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+#>- html-recursive info-recursive install-data-recursive \
+#>- install-dvi-recursive install-exec-recursive \
+#>- install-html-recursive install-info-recursive \
+#>- install-pdf-recursive install-ps-recursive install-recursive \
+#>- installcheck-recursive installdirs-recursive pdf-recursive \
+#>- ps-recursive uninstall-recursive
+#>+ 7
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+#>+ 1
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+ARTSCCONFIG = @ARTSCCONFIG@
+AUTOCONF = @AUTOCONF@
+AUTODIRS = @AUTODIRS@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CONF_FILES = @CONF_FILES@
+CYGPATH_W = @CYGPATH_W@
+DCOPIDL = @DCOPIDL@
+DCOPIDL2CPP = @DCOPIDL2CPP@
+DCOPIDLNG = @DCOPIDLNG@
+DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
+DEFS = @DEFS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+GMSGFMT = @GMSGFMT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@
+KCONFIG_COMPILER = @KCONFIG_COMPILER@
+KDECONFIG = @KDECONFIG@
+KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@
+KDE_RPATH = @KDE_RPATH@
+KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAKEKDEWIDGETS = @MAKEKDEWIDGETS@
+MCOPIDL = @MCOPIDL@
+MEINPROC = @MEINPROC@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TOPSUBDIRS = @TOPSUBDIRS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XMLLINT = @XMLLINT@
+X_RPATH = @X_RPATH@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+#>- bindir = @bindir@
+#>+ 2
+DEPDIR = .deps
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kde_appsdir = @kde_appsdir@
+kde_bindir = @kde_bindir@
+kde_confdir = @kde_confdir@
+kde_datadir = @kde_datadir@
+kde_htmldir = @kde_htmldir@
+kde_icondir = @kde_icondir@
+kde_kcfgdir = @kde_kcfgdir@
+kde_libs_htmldir = @kde_libs_htmldir@
+kde_libs_prefix = @kde_libs_prefix@
+kde_locale = @kde_locale@
+kde_mimedir = @kde_mimedir@
+kde_moduledir = @kde_moduledir@
+kde_servicesdir = @kde_servicesdir@
+kde_servicetypesdir = @kde_servicetypesdir@
+kde_sounddir = @kde_sounddir@
+kde_styledir = @kde_styledir@
+kde_templatesdir = @kde_templatesdir@
+kde_wallpaperdir = @kde_wallpaperdir@
+kde_widgetdir = @kde_widgetdir@
+tdeinitdir = @tdeinitdir@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+xdg_appsdir = @xdg_appsdir@
+xdg_directorydir = @xdg_directorydir@
+xdg_menudir = @xdg_menudir@
+KDE_LANG = es
+#>- SUBDIRS = $(AUTODIRS)
+#>+ 1
+SUBDIRS =.
+KDE_DOCS = AUTO
+KDE_MANS = AUTO
+#>- all: all-recursive
+#>+ 1
+all: docs-am all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+#>- @for dep in $?; do \
+#>- case '$(am__configure_deps)' in \
+#>- *$$dep*) \
+#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+#>- && exit 0; \
+#>- exit 1;; \
+#>- esac; \
+#>- done; \
+#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/tdevelop/Makefile'; \
+#>- cd $(top_srcdir) && \
+#>- $(AUTOMAKE) --gnu docs/tdevelop/tdevelop/Makefile
+#>+ 12
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/tdevelop/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu docs/tdevelop/tdevelop/Makefile
+ cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdevelop/tdevelop/Makefile.in
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+#>- distdir: $(DISTFILES)
+#>+ 1
+distdir: distdir-nls $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+#>- uninstall: uninstall-recursive
+#>+ 1
+uninstall: uninstall-nls uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+#>- clean: clean-recursive
+#>+ 1
+clean: kde-rpo-clean clean-recursive
+
+#>- clean-am: clean-generic mostlyclean-am
+#>+ 1
+clean-am: clean-bcheck clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+#>- install-data-am:
+#>+ 1
+install-data-am: install-nls
+
+install-dvi: install-dvi-recursive
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
+ install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic ctags \
+ ctags-recursive distclean distclean-generic distclean-tags \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
+ tags-recursive uninstall uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
+
+#>+ 2
+KDE_DIST=configure-docu-general.png SF-other.png unixdev.docbook tdevelop-install.docbook tdevelop-ideal-mode-0.png file-browsers.docbook create-new-project-cvs.png configure-select.png createnewproject.png tdevelop-mdi-mode.png applicationwizard.docbook getting-started.docbook empty-ide.png project-management.docbook configure-general.png tdevelop-toplevel-mode.png documents-contents.png tdevelop-scripting.docbook cvs.docbook credits.docbook configure-docu-toc.png automake-manager.png tdevelop-ideal-mode.png documentation.docbook automakemanager.png commands.docbook configure-docu-edit.png app-uimodes-examples.docbook configure-editor.png folded-tabs.png configure-docu-dox.png configure-docu-devhelp.png tdevelop-tabbed-mode.png configure-doctree-textsearch.png app-menu.docbook SF-indent.png select-user-interface.png configure-snippets.png configure-docu-chm.png survey-manual.docbook editing.docbook app-misc-info.docbook doctreeview.png app-changelog.docbook nutshell.docbook SF-general.png project-advanced.docbook adv-build-management.docbook automake-target-popup.png configure-file-selector.png filetree.png automake-file-popup.png Makefile.in class-browsers.docbook classview.png configure-docu-custom.png file-selector.png select-user-interface-0.png automake-subproject-popup.png tdevelop-survey.docbook Makefile.am configure-adddialog-baselibs.png
+
+#>+ 2
+docs-am: configure-general.png app-uimodes-examples.docbook editing.docbook SF-indent.png automake-target-popup.png configure-select.png automake-file-popup.png commands.docbook documentation.docbook tdevelop-mdi-mode.png create-new-project-cvs.png configure-docu-toc.png file-browsers.docbook tdevelop-tabbed-mode.png tdevelop-install.docbook folded-tabs.png select-user-interface-0.png filetree.png configure-docu-edit.png select-user-interface.png applicationwizard.docbook configure-doctree-textsearch.png tdevelop-ideal-mode-0.png createnewproject.png configure-editor.png app-menu.docbook project-management.docbook SF-other.png cvs.docbook adv-build-management.docbook credits.docbook tdevelop-survey.docbook empty-ide.png tdevelop-ideal-mode.png configure-snippets.png configure-adddialog-baselibs.png configure-docu-custom.png tdevelop-scripting.docbook configure-docu-chm.png unixdev.docbook configure-docu-devhelp.png configure-docu-general.png survey-manual.docbook SF-general.png configure-file-selector.png classview.png nutshell.docbook project-advanced.docbook class-browsers.docbook app-changelog.docbook getting-started.docbook tdevelop-toplevel-mode.png automake-manager.png app-misc-info.docbook file-selector.png automakemanager.png configure-docu-dox.png documents-contents.png automake-subproject-popup.png doctreeview.png
+
+#>+ 13
+install-nls:
+ $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/tdevelop
+ @for base in configure-general.png app-uimodes-examples.docbook editing.docbook SF-indent.png automake-target-popup.png configure-select.png automake-file-popup.png commands.docbook documentation.docbook tdevelop-mdi-mode.png create-new-project-cvs.png configure-docu-toc.png file-browsers.docbook tdevelop-tabbed-mode.png tdevelop-install.docbook folded-tabs.png select-user-interface-0.png filetree.png configure-docu-edit.png select-user-interface.png applicationwizard.docbook configure-doctree-textsearch.png tdevelop-ideal-mode-0.png createnewproject.png configure-editor.png app-menu.docbook project-management.docbook SF-other.png cvs.docbook adv-build-management.docbook credits.docbook tdevelop-survey.docbook empty-ide.png tdevelop-ideal-mode.png configure-snippets.png configure-adddialog-baselibs.png configure-docu-custom.png tdevelop-scripting.docbook configure-docu-chm.png unixdev.docbook configure-docu-devhelp.png configure-docu-general.png survey-manual.docbook SF-general.png configure-file-selector.png classview.png nutshell.docbook project-advanced.docbook class-browsers.docbook app-changelog.docbook getting-started.docbook tdevelop-toplevel-mode.png automake-manager.png app-misc-info.docbook file-selector.png automakemanager.png configure-docu-dox.png documents-contents.png automake-subproject-popup.png doctreeview.png ; do \
+ echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/tdevelop/$$base ;\
+ $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/tdevelop/$$base ;\
+ done
+
+uninstall-nls:
+ for base in configure-general.png app-uimodes-examples.docbook editing.docbook SF-indent.png automake-target-popup.png configure-select.png automake-file-popup.png commands.docbook documentation.docbook tdevelop-mdi-mode.png create-new-project-cvs.png configure-docu-toc.png file-browsers.docbook tdevelop-tabbed-mode.png tdevelop-install.docbook folded-tabs.png select-user-interface-0.png filetree.png configure-docu-edit.png select-user-interface.png applicationwizard.docbook configure-doctree-textsearch.png tdevelop-ideal-mode-0.png createnewproject.png configure-editor.png app-menu.docbook project-management.docbook SF-other.png cvs.docbook adv-build-management.docbook credits.docbook tdevelop-survey.docbook empty-ide.png tdevelop-ideal-mode.png configure-snippets.png configure-adddialog-baselibs.png configure-docu-custom.png tdevelop-scripting.docbook configure-docu-chm.png unixdev.docbook configure-docu-devhelp.png configure-docu-general.png survey-manual.docbook SF-general.png configure-file-selector.png classview.png nutshell.docbook project-advanced.docbook class-browsers.docbook app-changelog.docbook getting-started.docbook tdevelop-toplevel-mode.png automake-manager.png app-misc-info.docbook file-selector.png automakemanager.png configure-docu-dox.png documents-contents.png automake-subproject-popup.png doctreeview.png ; do \
+ rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/tdevelop/$$base ;\
+ done
+
+
+#>+ 5
+distdir-nls:
+ for file in configure-general.png app-uimodes-examples.docbook editing.docbook SF-indent.png automake-target-popup.png configure-select.png automake-file-popup.png commands.docbook documentation.docbook tdevelop-mdi-mode.png create-new-project-cvs.png configure-docu-toc.png file-browsers.docbook tdevelop-tabbed-mode.png tdevelop-install.docbook folded-tabs.png select-user-interface-0.png filetree.png configure-docu-edit.png select-user-interface.png applicationwizard.docbook configure-doctree-textsearch.png tdevelop-ideal-mode-0.png createnewproject.png configure-editor.png app-menu.docbook project-management.docbook SF-other.png cvs.docbook adv-build-management.docbook credits.docbook tdevelop-survey.docbook empty-ide.png tdevelop-ideal-mode.png configure-snippets.png configure-adddialog-baselibs.png configure-docu-custom.png tdevelop-scripting.docbook configure-docu-chm.png unixdev.docbook configure-docu-devhelp.png configure-docu-general.png survey-manual.docbook SF-general.png configure-file-selector.png classview.png nutshell.docbook project-advanced.docbook class-browsers.docbook app-changelog.docbook getting-started.docbook tdevelop-toplevel-mode.png automake-manager.png app-misc-info.docbook file-selector.png automakemanager.png configure-docu-dox.png documents-contents.png automake-subproject-popup.png doctreeview.png ; do \
+ cp $(srcdir)/$$file $(distdir); \
+ done
+
+#>+ 15
+force-reedit:
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdevelop/tdevelop/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu docs/tdevelop/tdevelop/Makefile
+ cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdevelop/tdevelop/Makefile.in
+
+
+#>+ 21
+clean-bcheck:
+ rm -f *.bchecktest.cc *.bchecktest.cc.class a.out
+
+bcheck: bcheck-recursive
+
+bcheck-am:
+ @for i in ; do \
+ if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \
+ echo "int main() {return 0;}" > $$i.bchecktest.cc ; \
+ echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \
+ echo "$$i"; \
+ if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \
+ rm -f $$i.bchecktest.cc; exit 1; \
+ fi ; \
+ echo "" >> $$i.bchecktest.cc.class; \
+ perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \
+ rm -f a.out; \
+ fi ; \
+ done
+
+
+#>+ 3
+final:
+ $(MAKE) all-am
+
+#>+ 3
+final-install:
+ $(MAKE) install-am
+
+#>+ 3
+no-final:
+ $(MAKE) all-am
+
+#>+ 3
+no-final-install:
+ $(MAKE) install-am
+
+#>+ 3
+kde-rpo-clean:
+ -rm -f *.rpo
+
+#>+ 3
+nmcheck:
+nmcheck-am: nmcheck
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/SF-general.png b/tde-i18n-es/docs/tdevelop/tdevelop/SF-general.png
new file mode 100644
index 00000000000..c767e11c276
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/SF-general.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/SF-indent.png b/tde-i18n-es/docs/tdevelop/tdevelop/SF-indent.png
new file mode 100644
index 00000000000..7c948439084
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/SF-indent.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/SF-other.png b/tde-i18n-es/docs/tdevelop/tdevelop/SF-other.png
new file mode 100644
index 00000000000..b3befae916d
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/SF-other.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/adv-build-management.docbook b/tde-i18n-es/docs/tdevelop/tdevelop/adv-build-management.docbook
new file mode 100644
index 00000000000..08858bb4ad1
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/adv-build-management.docbook
@@ -0,0 +1,174 @@
+<chapter id="adv-build-management">
+<title
+>Gestión de compilación avanzada</title>
+<indexterm zone="adv-build-management"
+><primary
+>&automake;</primary
+></indexterm>
+
+<sect1 id="buildconfigurations">
+<title
+>Configuraciones de construcción múltiple</title>
+<indexterm zone="buildconfigurations"
+><primary
+>configuraciones de construcción</primary
+><secondary
+>múltiple</secondary
+></indexterm>
+
+<para
+>(... pendiente de escribir ...) </para>
+
+</sect1
+> <!-- buildconfigurations -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="crosscompiling">
+<title
+>Compilación multiplataforma</title>
+<indexterm zone="crosscompiling"
+><primary
+>compilación multiplataforma</primary
+></indexterm>
+<indexterm zone="crosscompiling"
+><primary
+>compilación</primary
+><secondary
+>multiplataforma</secondary
+></indexterm>
+<indexterm zone="crosscompiling"
+><primary
+><option
+>--host</option
+></primary
+></indexterm>
+
+<para
+>Cuando dispone de compiladores multiplataforma adecuados, puede compilar sus programas para procesadores y sistemas operativos diferentes a los del sistema donde de ejecutan &tdevelop; y el compilador. La colección de compiladores &gcc; de &GNU; se puede configurar y compilar como compilador multiplataforma, siempre que la compile usted mismo . Consulte las <ulink url="info://gcc/Cross-Compiler"
+>páginas info de GCC</ulink
+> para más información. Algunas distribuciones &Linux; también proporcionan paquetes binarios. </para>
+
+<para
+>Un paquete basado en <application
+>automake</application
+> se puede compilar fácilmente para múltiples plataformas especificando la opción <option
+>--host</option
+> en el guión «configure» y estableciendo las variables de entorno <envar
+>CC</envar
+> y <envar
+>CXX</envar
+> para que apunten a los respectivos binarios de compilación multiplataforma. A menudo deseará alternar entre una versión multiplataforma de su aplicación y otra compilada para su sistema de desarrollo. Para ello, resulta ventajoso usar la capacidad que tiene &tdevelop; para crear múltiples configuraciones de construcción, como se explica en <xref linkend="buildconfigurations"/>. Una vez que haya creado una nueva configuración de construcción para compilación multiplataforma en el diálogo <menuchoice
+><guimenu
+>Proyecto</guimenu
+><guimenuitem
+>Opciones del proyecto...</guimenuitem
+></menuchoice
+>, añada la opción </para>
+
+<screen
+><option
+>--host=</option
+><replaceable
+>plataforma</replaceable
+></screen>
+
+<para
+>a las opciones de configuración. El nombre <replaceable
+>plataforma</replaceable
+> puede constar de los elementos </para>
+
+<programlisting
+>cpu-fabricante-sistema_operativo</programlisting>
+<para
+>o</para>
+<programlisting
+>cpu-fabricante-kernel-sistema_operativo</programlisting>
+
+<para
+>Para muchas combinaciones puede usar una forma corta, como por ejemplo <wordasword
+>i386-linux</wordasword
+> o <wordasword
+>arm-elf</wordasword
+>. </para>
+
+</sect1
+> <!-- crosscompiling -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="qtembedded">
+<title
+>Qt/Embedded</title>
+<indexterm zone="qtembedded"
+><primary
+>empotrado</primary
+><secondary
+>Qt</secondary
+></indexterm>
+<indexterm zone="qtembedded"
+><primary
+>Qt/Embedded</primary
+></indexterm>
+<indexterm zone="qtembedded"
+><primary
+>Qtopia</primary
+></indexterm>
+<indexterm zone="qtembedded"
+><primary
+>framebuffer</primary
+></indexterm>
+
+<para
+>&qte; es una versión de la biblioteca &Qt; que no usa el sistema X-Window, sino que dibuja directamente en el framebuffer de los sistemas &Linux;. Por lo tanto es interesante para sistemas empotrados que poseen rígidas limitaciones en lo que se refiere a uso de la memoria total del sistema. Su &API; es completamente compatible con la de la versión X11. </para>
+
+<para
+>Desarrollar una aplicación para &qte; con &tdevelop; no es muy diferente a desarrollar un programa para la versión X11 de &Qt;. De hecho, puede usar la misma base de código para ambas versiones. Si usa la gestión de proyectos automática, puede cambiar a la versión empotrada pasando el argumento <option
+>--enable-embedded</option
+> al guión «configure». Puede configurar esto en el diálogo <menuchoice
+><guimenu
+>Proyecto</guimenu
+> <guimenuitem
+>Opciones del proyecto...</guimenuitem
+></menuchoice
+>, en el apartado <guilabel
+>Opciones de configure</guilabel
+>. Puede especificar el directorio donde está instalado &qte; con la opción <option
+>--with-qt-dir=DIR</option
+>. </para>
+
+<para
+>Tras configurar y compilar su aplicación con estas opciones, será enlazada con la biblioteca <filename
+>libqpe.so</filename
+>. Esta versión de su aplicación no funcionará correctamente si usa X11. Para probarla, ejecútela bajo control del programa <application
+>qvfb</application
+> (&Qt; Virtual Frame Buffer). Para ello, inicie <application
+>qvfb</application
+> y ejecute luego su aplicación con </para>
+
+<screen
+><command
+>app <option
+>-qws</option
+> <option
+>-display QVFb:0</option
+></command
+></screen>
+
+<para
+>Naturalmente, cuando tiene una versión funcional de su aplicación, deseará probarla con el procesador de destino. Para ello, probablemente será conveniente crear múltiples configuraciones de construcción, como se ha explicado anteriormente, de modo que pueda cambiar rápidamente entre la versión que se ejecuta en su sistema de desarrollo y la versión que se ejecuta en el sistema de destino. </para>
+
+<para
+>Las aplicaciones para &qte; funcionan normalmente como aplicaciones únicas en el dispositivo para el que están diseñadas. Trolltech también soporta Qtopia, que es una colección de aplicaciones para PIM, navegación web y otras tareas que funcionan conjuntamente de una manera consistente. Este es, por ejemplo, el entorno estándar de Sharp Zaurus. Puede escribir aplicaciones que se integren en este entorno usando el SDK de Qtopia. Esto implica que la clase de su aplicación debe ser una subclase de <classname
+>QPEApplication</classname
+>, y que debe enlazarla con la biblioteca <filename
+>libqpe.so</filename
+>. Si desarrolla su aplicación usando la gestión de proyectos automática, deberá añadir <option
+>--enable-qtopia</option
+> a las opciones de «configure». </para>
+
+</sect1
+> <!-- qtembedded -->
+
+</chapter
+> <!-- adv-build-management -->
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/app-changelog.docbook b/tde-i18n-es/docs/tdevelop/tdevelop/app-changelog.docbook
new file mode 100644
index 00000000000..9f28328cd4b
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/app-changelog.docbook
@@ -0,0 +1,85 @@
+<appendix id="app-changelog">
+<title
+>Cambios</title>
+<sect1 id="changes">
+<title
+>Cambios de este documento</title>
+
+<itemizedlist>
+ <listitem>
+ <para
+>2003-01-03 Bernd Gehrmann, Caleb Tennis <itemizedlist>
+ <listitem>
+ <para
+>diseño inicial del manual</para>
+ </listitem>
+ <listitem>
+ <para
+>borrador del contenido de varios capítulos</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+
+
+ <listitem>
+ <para
+>2004-08-01 Bernd Pol, Ian Wadham <itemizedlist>
+ <listitem>
+ <para
+>ligera reorganización del manual</para>
+ </listitem>
+ <listitem>
+ <para
+>escritura de algunos capítulos pendientes</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para
+>2005-05-02 Volker Paul &mdash; Numerosos cambios, incluyendo: <itemizedlist>
+ <listitem>
+ <para
+>división de cada capítulo/apéndice en un archivo</para>
+ </listitem>
+ <listitem>
+ <para
+>creación de la referencia de comandos ordenada por menú (descripciones aún no completadas)</para>
+ </listitem>
+ <listitem>
+ <para
+>manual del «Asistente de aplicaciones» en el documento «getting-started.docbook»</para>
+ </listitem>
+ <listitem>
+ <para
+>reorganización de capítulos, basada en el manual de Konqueror</para>
+ </listitem>
+ <listitem>
+ <para
+>cambio de los capítulos «Instalación», «Desarrollo Unix» y «Principios básicos» al apéndice</para>
+ </listitem>
+ <listitem>
+ <para
+>reescritura del apéndice de extensiones, incluido el generador de listas de extensiones «listplugins.sh»</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para
+>Todavía muy lejos de estar completo, aunque es un pequeño paso adelante.</para>
+ </listitem>
+
+ <listitem>
+ <para
+>2006-05-20 Bernd Pol &mdash; Redacción de muchos «pendiente de escribir»:</para>
+ </listitem>
+
+</itemizedlist>
+
+</sect1
+> <!-- changes -->
+</appendix
+> <!-- app-changelog -->
+
+<!-- ====================================================================== -->
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/app-menu.docbook b/tde-i18n-es/docs/tdevelop/tdevelop/app-menu.docbook
new file mode 100644
index 00000000000..1900d6d20ae
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/app-menu.docbook
@@ -0,0 +1,72 @@
+<appendix id="app-menus">
+
+<appendixinfo>
+ <authorgroup>
+ <author
+><firstname
+>Bernd</firstname
+><surname
+>Pol</surname
+></author>
+ <!-- ROLES_OF_TRANSLATORS -->
+ </authorgroup>
+</appendixinfo>
+
+<title
+>Sobre los menús y barras de herramientas</title>
+
+<para
+>(... pendiente de ser escrito ...) </para>
+
+<sect1 id="app-menus-menu">
+<title
+>Menús</title>
+
+<para
+>(... pendiente de ser escrito ...) </para>
+
+<sect2 id="app-menus-menu-common">
+<title
+>Menús comúnmente disponibles</title>
+
+<para
+>(... pendiente de ser escrito ...) </para>
+
+</sect2
+> <!-- app-menus-menu-common -->
+
+<sect2 id="app-menus-menu-project">
+<title
+>Menús específicos del proyecto</title>
+
+<para
+>(... pendiente de ser escrito ...) </para>
+
+</sect2
+> <!-- app-menus-menu-project -->
+
+<sect2 id="app-menus-menu-specific">
+<title
+>Menús específicos de las herramientas de conectores</title>
+
+<para
+>(... pendiente de ser escrito ...) </para>
+
+</sect2
+> <!-- app-menus-menu-specific -->
+
+</sect1
+> <!-- app-menus-menu -->
+
+<sect1 id="app-menus-tool">
+<title
+>Barras de herramientas</title>
+
+<para
+>(... pendiente de ser escrito ...) </para>
+
+</sect1
+> <!-- app-menus-tool -->
+
+</appendix
+> <!-- app-menus -->
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/app-misc-info.docbook b/tde-i18n-es/docs/tdevelop/tdevelop/app-misc-info.docbook
new file mode 100644
index 00000000000..2a3c57328c7
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/app-misc-info.docbook
@@ -0,0 +1,28 @@
+<appendix id="app-misc-info">
+<title
+>Más información</title>
+<sect1 id="gettinginformation">
+<title
+>Obtención de información</title>
+<para
+>(... pendiente de escribir ...) </para>
+</sect1
+> <!-- gettinginformation -->
+
+<sect1 id="app-reporting-bugs">
+<title
+>Informe de fallos</title>
+<para
+>(... pendiente de escribir ...) </para>
+</sect1
+> <!-- app-reporting-bugs -->
+
+<sect1 id="app-licensing">
+<title
+>Licencia</title>
+&underFDL; &underGPL; </sect1
+> <!-- app-licensing -->
+</appendix
+> <!-- app-misc-info -->
+
+<!-- ====================================================================== -->
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/app-uimodes-examples.docbook b/tde-i18n-es/docs/tdevelop/tdevelop/app-uimodes-examples.docbook
new file mode 100644
index 00000000000..c1072135536
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/app-uimodes-examples.docbook
@@ -0,0 +1,174 @@
+<appendix id="app-uimodes-examples">
+<title
+>Ejemplos del modo de interfaz de usuario de &tdevelop;</title>
+
+<sect1 id="ideal-desc">
+<title
+>Modo IDEAl</title>
+
+<para
+>Pulse <link linkend="uimodes-survey"
+>aquí</link
+> para volver a la introducción sobre los modos. </para>
+
+<screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="tdevelop-ideal-mode.png" format="PNG"/>
+ </imageobject>
+ <textobject
+><phrase
+>Captura de pantalla</phrase
+></textobject>
+ <caption
+><para
+>Modo IDEAl de &tdevelop;</para
+></caption>
+ </mediaobject>
+</screenshot>
+
+<para
+>Pulse <link linkend="uimodes-survey"
+>aquí</link
+> para volver a la introducción sobre los modos. </para>
+
+<screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="tdevelop-ideal-mode-0.png" format="PNG"/>
+ </imageobject>
+ <textobject
+><phrase
+>Captura de pantalla</phrase
+></textobject>
+ <caption
+><para
+>Modo IDEAl de &tdevelop;, con las pestañas cerradas</para
+></caption>
+ </mediaobject>
+</screenshot>
+
+<para
+>Esta captura de pantalla de ejemplo muestra una de las principales virtudes del modo IDEAl. El espacio de trabajo disponible es el máximo existente. Aún así, cualquier vista de herramientas está disponible rápidamente al pulsar sobre la pestaña correspondiente. </para>
+<para
+>Tal vez necesite algún tiempo para acostumbrarse a los iconos de la barra de pestañas. Si se encuentra perdido, solo tiene que situar el cursor del ratón sobre una pestaña y esperar unos segundos hasta que aparezca una breve descripción de la herramienta. En esta captura de pantalla se muestra la ayuda contextual del <quote
+>Gestor de automake</quote
+> a modo de ejemplo. Describe la pestaña inferior de la barra de pestañas de la derecha. </para>
+
+<para
+>Pulse <link linkend="uimodes-survey"
+>aquí</link
+> para volver a la introducción sobre los modos. </para>
+
+</sect1
+> <!-- ideal-desc -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="mdi-desc">
+<title
+>Modo de ventanas de marco hijas</title>
+
+<para
+>Pulse <link linkend="uimodes-survey"
+>aquí</link
+> para volver a la introducción sobre los modos. </para>
+
+<screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="tdevelop-mdi-mode.png" format="PNG"/>
+ </imageobject>
+ <textobject
+><phrase
+>Captura de pantalla</phrase
+></textobject>
+ <caption
+><para
+>Modo de ventanas de marco hijas de &tdevelop;</para
+></caption>
+ </mediaobject>
+</screenshot>
+
+<para
+>Pulse <link linkend="uimodes-survey"
+>aquí</link
+> para volver a la introducción sobre los modos. </para>
+
+</sect1
+> <!-- mdi-desc -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="tabbed-desc">
+<title
+>Modo de páginas solapadas</title>
+
+<para
+>Pulse <link linkend="uimodes-survey"
+>aquí</link
+> para volver a la introducción sobre los modos. </para>
+
+<screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="tdevelop-tabbed-mode.png" format="PNG"/>
+ </imageobject>
+ <textobject
+><phrase
+>Captura de pantalla</phrase
+></textobject>
+ <caption
+><para
+>Modo de páginas solapadas de &tdevelop;</para
+></caption>
+ </mediaobject>
+</screenshot>
+
+<para
+>Pulse <link linkend="uimodes-survey"
+>aquí</link
+> para volver a la introducción sobre los modos. </para>
+
+</sect1
+> <!-- tabbed-desc -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="toplevel-desc">
+<title
+>Modo de ventanas de nivel superior</title>
+
+<para
+>Pulse <link linkend="uimodes-survey"
+>aquí</link
+> para volver a la introducción sobre los modos. </para>
+
+<screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="tdevelop-toplevel-mode.png" format="PNG"/>
+ </imageobject>
+ <textobject
+><phrase
+>Captura de pantalla</phrase
+></textobject>
+ <caption
+><para
+>Modo de ventanas de nivel superior de &tdevelop;</para
+></caption>
+ </mediaobject>
+</screenshot>
+
+<para
+>Pulse <link linkend="uimodes-survey"
+>aquí</link
+> para volver a la introducción sobre los modos. </para>
+
+</sect1
+> <!-- toplevel-desc -->
+
+</appendix
+> <!-- app-uimodes-examples -->
+
+<!-- ====================================================================== -->
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/applicationwizard.docbook b/tde-i18n-es/docs/tdevelop/tdevelop/applicationwizard.docbook
new file mode 100644
index 00000000000..69518df67c9
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/applicationwizard.docbook
@@ -0,0 +1,1386 @@
+<chapter id="applicationwizard">
+
+<chapterinfo>
+ <authorgroup>
+ <author
+><firstname
+>Bernd</firstname
+><surname
+>Pol</surname
+></author>
+ <!-- ROLES_OF_TRANSLATORS -->
+ </authorgroup>
+</chapterinfo>
+
+<title
+>Primeros pasos &mdash; el &appwizard;</title>
+<!-- FIXME (bp, 2006-06-18) This is a misnomer. It should be something like -->
+<!-- Working With Projects -->
+<!-- featuring the application manager as part of the New Projects section. -->
+
+<indexterm zone="applicationwizard">
+ <primary
+>&appwizard;</primary
+></indexterm>
+
+<para
+>En &tdevelop; el trabajo de desarrollo de software se organiza en <emphasis
+>proyectos</emphasis
+>. Estos proyectos guardan junto todo lo que pertenece a una completa tarea de programación: archivos de código fuente, archivos de datos adicionales, cualquier utilidad de gestión realmente necesaria (como el sistema de construcción), así como el acceso a todos los componentes y cualquier herramienta adicional necesaria para generar la aplicación y para ejecutarla. </para>
+<para
+>La organización de todas las tareas de desarrollo en proyectos le permite cambiar fácilmente entre diferentes tareas globales. Esto es bastante útil si, &eg;, trabaja en varias aplicaciones al mismo tiempo, como suele suceder a menudo. Dígale a &tdevelop; que abra el proyecto en el que quiere trabajar y podrá continuar en su entorno tal y como lo había dejado la última vez. </para>
+
+<sect1 id="new-projects">
+<title
+>Nuevos proyectos</title>
+
+<!-- TODO (bp, 2006-06-18) This whole section must be completely rewritten. -->
+<!-- There is no need for a tutorial habit anymore. -->
+
+<indexterm zone="new-projects">
+ <primary
+>proyecto</primary>
+ <secondary
+>nuevo</secondary
+></indexterm>
+
+<para
+>Cada vez que desee iniciar un nuevo proyecto de programación necesitará realizar bastantes procesos de configuración. Deberá establecer una estructura de carpetas inicial, proporcionar archivos de cabecera y de código fuente iniciales, inicializar el sistema de construcción, &etc; </para>
+<para
+>&tdevelop; le proporciona un modo fácil de iniciar un nuevo proyecto de programación: el <emphasis
+>&appwizard;</emphasis
+>. Encontrará el &appwizard; en la opción del menú <menuchoice
+><guimenu
+>Proyecto</guimenu
+> <guimenuitem
+>Nuevo proyecto</guimenuitem
+></menuchoice
+>. </para>
+<para
+>Si usa el &appwizard;, solo necesitará realizar una corta serie de pasos para comenzar un nuevo proyecto de programación: </para>
+<orderedlist>
+ <listitem
+><para
+><link linkend="new-projects-start-type"
+>Seleccionar el lenguaje de programación</link
+> que desea usar y el tipo de aplicación que desea generar a partir de un juego de plantillas predefinidas. </para
+></listitem>
+ <listitem
+><para
+><link linkend="new-projects-start-general"
+>Proporcionar alguna información general</link
+> como el nombre de la aplicación, la carpeta donde deberá ser generada, &etc; </para
+></listitem>
+ <listitem
+><para
+>Decidir si desea utilizar un <link linkend="new-projects-start-cvs"
+>sistema de control de versiones</link
+>, como &eg; CVS, y proporcionar los datos que fueran necesarios. </para
+></listitem>
+ <listitem
+><para
+>Configurar algunas plantillas para <link linkend="new-projects-start-templates"
+>los archivos iniciales de cabecera y de código fuente</link
+> (si es necesario). </para
+></listitem>
+ <listitem
+><para
+>Finalmente, dígale al &appwizard; que <link linkend="new-projects-start-build"
+>genere todo lo necesario</link
+>, la estructura de carpetas, las plantillas iniciales para archivos de cabecera y código fuente, los archivos de las herramientas de gestión (como, &eg;, un esqueleto make inicial), &etc; </para
+></listitem>
+</orderedlist>
+<para
+>¡Y ya está! Eso es todo. &appwizard; le proporcionará un juego de archivos de programación con funcionalidades primarias con los que podrá comenzar a trabajar inmediatamente. </para>
+<para
+>Veamos ahora todo esto más detalladamente... </para>
+
+<sect2 id="new-projects-start">
+<title
+>Pasos iniciales</title>
+
+<indexterm zone="new-projects-start">
+ <primary
+>diálogo</primary>
+ <secondary
+>crear nuevo proyecto</secondary
+></indexterm>
+<indexterm zone="new-projects-start">
+ <primary
+>proyecto</primary>
+ <secondary
+>crear nuevo proyecto</secondary>
+ <tertiary
+>diálogo</tertiary
+></indexterm>
+<indexterm zone="new-projects-start">
+ <primary
+>proyecto</primary>
+ <secondary
+>plantillas</secondary
+></indexterm>
+<indexterm zone="new-projects-start">
+ <primary
+>plantillas</primary>
+ <secondary
+>proyecto</secondary
+></indexterm>
+
+<para
+>Para crear un nuevo proyecto en &tdevelop;, seleccione <guimenuitem
+>Nuevo proyecto</guimenuitem
+> en el menú <guimenu
+>Proyecto</guimenu
+>. El diálogo <guilabel
+>Crear nuevo proyecto</guilabel
+> se mostrará con una página <guilabel
+>General</guilabel
+> inicial: </para>
+
+<screenshot id="screenshot-newprojectwizard">
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="create-new-project.png" format="PNG"/>
+ </imageobject>
+ <caption
+><para
+>Diálogo inicial para configurar un nuevo proyecto </para
+></caption>
+ </mediaobject>
+</screenshot>
+
+<para
+>Como puede ver, este diálogo está dividido en dos partes: en la superior puede decidir el lenguaje de programación y el tipo de aplicación; la parte inferior guarda alguna información general. </para>
+
+<sect3 id="new-projects-start-type">
+<title
+>Selección del lenguaje de programación y tipo de aplicación</title>
+
+<indexterm zone="new-projects-start-type">
+ <primary
+>proyecto</primary>
+ <secondary
+>tipo de aplicación</secondary
+></indexterm>
+<indexterm zone="new-projects-start-type">
+ <primary
+>proyecto</primary>
+ <secondary
+>lenguaje de programación</secondary
+></indexterm>
+<indexterm zone="new-projects-start-type">
+ <primary
+>proyecto</primary>
+ <secondary
+>lenguaje</secondary
+></indexterm>
+<indexterm zone="new-projects-start-type">
+ <primary
+>lenguaje</primary
+></indexterm>
+<indexterm zone="new-projects-start-type">
+ <primary
+>lenguaje de programación</primary
+></indexterm>
+<indexterm zone="new-projects-start-type">
+ <primary
+>aplicación</primary>
+ <secondary
+>tipo</secondary
+></indexterm>
+
+<para
+>En el lado izquierdo de la parte superior de este diálogo podrá realizar la selección de su trabajo. En él encontrará una lista de carpetas, cada una etiquetada con el nombre de un lenguaje de programación, como estos: </para>
+
+<itemizedlist>
+ <listitem
+><para
+>Ada <indexterm>
+ <primary
+>Ada</primary>
+ <secondary
+>nuevo proyecto</secondary
+></indexterm>
+ </para
+></listitem>
+ <listitem
+><para
+>C <indexterm>
+ <primary
+>C</primary>
+ <secondary
+>nuevo proyecto</secondary
+></indexterm>
+ </para
+></listitem>
+ <listitem
+><para
+>C++ <indexterm>
+ <primary
+>C++</primary>
+ <secondary
+>nuevo proyecto</secondary
+></indexterm>
+ </para
+></listitem>
+ <listitem
+><para
+>Base de datos (proyectos SQL) <indexterm>
+ <primary
+>SQL</primary>
+ <secondary
+>nuevo proyecto</secondary
+></indexterm>
+ <indexterm>
+ <primary
+>Base de datos</primary>
+ <secondary
+>nuevo proyecto</secondary
+></indexterm>
+ </para
+></listitem>
+ <listitem
+><para
+>Fortran <indexterm>
+ <primary
+>Fortran</primary>
+ <secondary
+>nuevo proyecto</secondary
+></indexterm>
+ </para
+></listitem>
+ <listitem
+><para
+>Haskell <indexterm>
+ <primary
+>Haskell</primary>
+ <secondary
+>nuevo proyecto</secondary
+></indexterm>
+ </para
+></listitem>
+ <listitem
+><para
+>Java <indexterm>
+ <primary
+>Java</primary>
+ <secondary
+>nuevo proyecto</secondary
+></indexterm>
+ </para
+></listitem>
+ <listitem
+><para
+>PHP <indexterm>
+ <primary
+>PHP</primary>
+ <secondary
+>nuevo proyecto</secondary
+></indexterm>
+ </para
+></listitem>
+ <listitem
+><para
+>Pascal <indexterm>
+ <primary
+>Pascal</primary>
+ <secondary
+>nuevo proyecto</secondary
+></indexterm>
+ </para
+></listitem>
+ <listitem
+><para
+>Perl <indexterm>
+ <primary
+>Perl</primary>
+ <secondary
+>nuevo proyecto</secondary
+></indexterm>
+ </para
+></listitem>
+ <listitem
+><para
+>Python <indexterm>
+ <primary
+>Python</primary>
+ <secondary
+>nuevo proyecto</secondary
+></indexterm>
+ </para
+></listitem>
+ <listitem
+><para
+>Ruby <indexterm>
+ <primary
+>Ruby</primary>
+ <secondary
+>nuevo proyecto</secondary
+></indexterm>
+ </para
+></listitem>
+ <listitem
+><para
+>Shell (guiones para el intérprete Bash) <indexterm>
+ <primary
+>Bash</primary>
+ <secondary
+>nuevo proyecto</secondary
+></indexterm>
+ <indexterm>
+ <primary
+>shell</primary>
+ <secondary
+>nuevo proyecto</secondary
+></indexterm>
+ </para
+></listitem>
+</itemizedlist>
+
+<para
+>Para ser precisos, estas carpetas no contienen realmente herramientas de programación, sino que conducen a <emphasis
+>plantillas</emphasis
+> predefinidas que puede utilizar como punto de partida para desarrollos en dichos lenguajes. Para hacerse una idea de lo que se le proporciona, abra las diferentes carpetas. Encontrará varias subcarpetas en algunas de ellas, mientras que en otras solo habrá una o más entradas simples. Estas subcarpetas sirven para organizar las plantillas disponibles según algunas tareas; las entradas simples se refieren a las plantillas que puede seleccionar. </para>
+<para
+>No podemos entrar aquí en detalles sobre qué tarea proporciona cada plantilla, pero es fácil hacerse una idea. Cada vez que seleccione una entrada de plantilla se mostrará distinta información en los campos de la derecha. En el campo inferior encontrará una <emphasis
+>corta descripción</emphasis
+> de lo que se supone que hace la plantilla. En el campo inmediatamente superior se mostrará una imagen (si está disponible) sobre el aspecto de la aplicación que producirá dicha plantilla si la compila y ejecuta sin modificaciones. Normalmente se trata de una <emphasis
+>captura de pantalla</emphasis
+> de la ventana principal que muestra la aplicación. </para>
+<para
+>Para empezar, seleccione la plantilla que se adapte mejor a los objetivos de su aplicación. Luego, introduzca la información de las propiedades generales en los campos inferiores tal y como se muestra en el siguiente capítulo. </para>
+
+<formalpara>
+<title
+>Selección de un sistema de gestión del proyecto</title>
+<para
+>Cada plantilla está ligada a un <link linkend="makesystems"
+>sistema degestión de proyecto</link
+> específico. Actualmente no existe un medio directo para seleccionar libremente este sistema de gestión del proyecto. Deberá encontrar una plantilla que se adapte a sus necesidades o alterar su proyecto apropiadamente tras su creación. </para>
+</formalpara>
+
+</sect3
+> <!-- new-projects-start-type -->
+
+<sect3 id="new-projects-start-general">
+<title
+>Proporcionar información general</title>
+
+<indexterm zone="new-projects-start-general">
+ <primary
+>proyecto</primary>
+ <secondary
+>propiedades</secondary
+></indexterm>
+<indexterm zone="new-projects-start-general">
+ <primary
+>propiedades</primary
+></indexterm>
+<indexterm zone="new-projects-start-general">
+ <primary
+>aplicación</primary>
+ <secondary
+>nombre</secondary
+></indexterm>
+<indexterm zone="new-projects-start-general">
+ <primary
+>nombre</primary>
+ <secondary
+>aplicación</secondary
+></indexterm>
+<indexterm zone="new-projects-start-general">
+ <primary
+>proyecto</primary>
+ <secondary
+>carpeta</secondary
+></indexterm>
+<indexterm zone="new-projects-start-general">
+ <primary
+>carpeta</primary>
+ <secondary
+>proyecto</secondary
+></indexterm>
+<indexterm zone="new-projects-start-general">
+ <primary
+>ruta</primary>
+ <secondary
+>nuevo proyecto</secondary
+></indexterm>
+<indexterm zone="new-projects-start-general">
+ <primary
+>proyecto</primary>
+ <secondary
+>autor</secondary
+></indexterm>
+<indexterm zone="new-projects-start-general">
+ <primary
+>proyecto</primary>
+ <secondary
+>correo electrónico</secondary
+></indexterm>
+<indexterm zone="new-projects-start-general">
+ <primary
+>autor</primary
+></indexterm>
+<indexterm zone="new-projects-start-general">
+ <primary
+>correo electrónico</primary
+></indexterm>
+<indexterm zone="new-projects-start-general">
+ <primary
+>proyecto</primary>
+ <secondary
+>main.cpp</secondary
+></indexterm>
+<indexterm zone="new-projects-start-general">
+ <primary
+>main.cpp</primary
+></indexterm>
+<indexterm zone="new-projects-start-general">
+ <primary
+>proyecto</primary>
+ <secondary
+>licencia</secondary
+></indexterm>
+<indexterm zone="new-projects-start-general">
+ <primary
+>licencia</primary
+></indexterm>
+
+<para
+>La parte inferior del diálogo <guilabel
+>Crear nuevo proyecto</guilabel
+>, en la página <guilabel
+>General</guilabel
+>, consiste en un cuadro con la etiqueta <guilabel
+>Propiedades</guilabel
+>. Aquí debe proporcionar alguna información general sobre su proyecto para que el &appwizard; sepa cómo generar la estructura inicial. </para>
+<formalpara>
+<title
+>Nombre de la aplicación</title>
+<para
+>Por supuesto, su aplicación necesita un nombre. Introdúzcalo en el campo superior de las <guilabel
+>Propiedades</guilabel
+>, llamado <guilabel
+>Nombre de la aplicación</guilabel
+>. Usaremos <quote
+>MiAplicacion</quote
+> como ejemplo. </para>
+</formalpara>
+<para
+>Es posible que cuando lo haga note que el &appwizard; se niega a aceptar algunos caracteres especiales. Los únicos caracteres aceptados son: <itemizedlist>
+ <listitem
+><para
+>caracteres en mayúsculas y minúsculas (sin acentos)</para
+></listitem>
+ <listitem
+><para
+>números</para
+></listitem>
+ <listitem
+><para
+>el carácter de subrayado</para
+></listitem>
+</itemizedlist>
+</para>
+<para
+>La principal causa de esta restricción es que el &appwizard; usará el nombre de la aplicación como <emphasis
+>base para algunos nombres de clases</emphasis
+> que generará al crear un proyecto inicial. De este modo, el nombre de la aplicación debe ajustarse a las reglas del lenguaje de programación que va a utilizar. </para>
+<formalpara>
+<title
+>La carpeta del proyecto</title>
+<para
+>La otra causa importante para esta restricción puede verla en la línea inferior del área <guilabel
+>Propiedades</guilabel
+>, etiquetada <guilabel
+>Ubicación final</guilabel
+>, y que muestra la carpeta donde el &appwizard; generará su aplicación. </para>
+</formalpara>
+<para
+>Mientras escribe el nombre de la aplicación notará que &appwizard; repite los caracteres introducidos al final de la línea etiquetada <guilabel
+>Ubicación final</guilabel
+>, utilizando únicamente caracteres en minúsculas. </para>
+<para
+>Por lo tanto, debe seleccionar el nombre de su aplicación con cuidado. Si ha escrito el nombre de una carpeta existente, el &appwizard; no le permitirá continuar con el siguiente paso, manteniendo desactivado el botón <guibutton
+>Adelante &gt;</guibutton
+>. Además, le <emphasis
+>avisará</emphasis
+> en este caso añadiendo <quote
+>(carpeta/archivo existente)</quote
+> en la línea <guilabel
+>Ubicación final</guilabel
+>. </para>
+
+<formalpara>
+<title
+>La ruta inicial</title>
+<para
+>Existen dos modos de seleccionar otra ruta para su nueva aplicación. Una consiste en seleccionar otro nombre. Aún así, esto no es siempre factible (&eg;, puede estar preparando otra versión de una aplicación ya existente). Como alternativa, puede seleccionar otra ruta para la carpeta de la aplicación. </para>
+</formalpara>
+<para
+>Puede hacer esto en la segunda línea de <guilabel
+>Propiedades</guilabel
+>, etiquetada <guilabel
+>Ubicación</guilabel
+>. Lo que debe introducir aquí es la <emphasis
+>ruta inicial</emphasis
+> de la carpeta de desarrollo de la nueva aplicación. El &appwizard; añade el nombre de la aplicación a esta ruta cuando inicializa el nuevo proyecto. El resultado se muestra en la línea <guilabel
+>Ubicación final</guilabel
+> para proporcionarle un mejor control sobre lo que está ocurriendo. </para>
+<para
+>El &appwizard; copiará un <emphasis
+>valor inicial</emphasis
+> en el campo <guilabel
+>Ubicación</guilabel
+> al comienzo, que se toma de lo que ha introducido en el campo <guilabel
+>Carpeta predeterminada para los proyectos</guilabel
+> durante los <link linkend="setup-general"
+>pasos de configuración general</link
+>. En nuestro caso, hemos indicado a &tdevelop; que utilice <filename class="directory"
+>/home/devel/projects/</filename
+> como ruta inicial para nuestros proyectos. </para>
+<para
+>Modifique el contenido del campo <guilabel
+>Ubicación</guilabel
+> de modo que la carpeta de desarrollo para su aplicación mostrada en la línea <guilabel
+>Ubicación final</guilabel
+> sea única. </para>
+<!--TODO add tab description Project Options -->
+<note
+><para
+>Tenga cuidado de que la ruta que introduzca en el campo <guilabel
+>Ubicación</guilabel
+> ya exista. En caso contrario, no podrá continuar con el siguiente paso. El &appwizard; le <emphasis
+>avisará</emphasis
+> si no existe la ruta añadiendo <quote
+>(no válida)</quote
+> a la línea <guilabel
+>Ubicación final</guilabel
+>. </para
+></note>
+
+<screenshot id="screenshot-createnewprojectoptions">
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="createnewprojectoptions.png" format="PNG"/>
+ </imageobject>
+ <caption
+><para
+>Preparar el nuevo proyecto para CVS </para
+></caption>
+ </mediaobject>
+</screenshot>
+
+<formalpara>
+<title
+>Información personal</title>
+<para
+>Los siguientes campos no son tan críticos. Solo tiene que proporcionar su nombre (&ie;, el nombre de la persona que es responsable de la aplicación) en el campo <guilabel
+>Autor</guilabel
+>, y una dirección de correo electrónico válida en el campo <guilabel
+>Correo electrónico</guilabel
+>. De este modo, los usuarios de su aplicación podrán ponerse en contacto con el autor. </para>
+</formalpara>
+
+<note>
+<orderedlist>
+ <listitem
+><para
+>El &appwizard; rellena estos campos con algunos valores por omisión, tomados de los datos establecidos en el &kcontrolcenter;. Si los valores por omisión que ve en los campos <guilabel
+>Autor</guilabel
+> y <guilabel
+>Correo electrónico</guilabel
+> del diálogo <guilabel
+>Crear nuevo proyecto</guilabel
+> no son correctos, debería revisar su configuración de correo electrónico en el &kcontrolcenter;. </para
+></listitem>
+ <listitem
+><para
+>El &appwizard; integrará esta información en las plantillas de comienzo del programa, si es necesario. En los programas en C++ de &kde;, por ejemplo, encontrará estos datos cerca del comienzo del archivo de código fuente <filename
+>main.cpp</filename
+>. </para
+></listitem>
+ <listitem
+><para
+>De todos estos campos, el <guilabel
+>Correo electrónico</guilabel
+> es <emphasis
+>opcional</emphasis
+>, teniendo en cuenta que no todos los programadores pueden tener acceso a Internet. Puede dejar este campo en blanco si así lo desea y continuar sin problemas. </para
+></listitem>
+</orderedlist>
+</note>
+
+<formalpara>
+<title
+>Información sobre la versión y la licencia</title>
+<para
+>Finalmente, introduzca un número inicial de versión para su nueva aplicación en el campo <guilabel
+>Versión</guilabel
+>, y seleccione la licencia bajo la que desea que esté su aplicación en la pestaña <guilabel
+>Licencia</guilabel
+>. </para>
+</formalpara>
+
+<para
+>Si ha seleccionado un tipo de aplicación para el que el &appwizard; proporciona textos de plantilla de código fuente comunes (&eg;, C/C++), verá el texto de notificación de la licencia en la tercera página de este diálogo <guilabel
+>Crear nuevo proyecto</guilabel
+> (vea más adelante el capítulo <link linkend="new-projects-start-templates"
+>Proporcionar plantillas para las cabeceras y el código fuente</link
+>). </para>
+<para
+>Si selecciona <quote
+>Personalizada</quote
+> en la pestaña <guilabel
+>Licencia</guilabel
+>, deberá proporcionar un texto propio para la licencia. </para>
+
+<note
+><para
+>Tanto la versión como la información sobre la licencia serán también integradas en las plantillas de comienzo de un modo adecuado que proporciona el tipo de aplicación que ha seleccionado. </para
+></note>
+
+<para
+>Una vez que haya introducido correctamente toda esta información, pulse el botón <guibutton
+>Adelante &gt;</guibutton
+> para proceder como se muestra en los siguientes capítulos. </para>
+</sect3
+> <!-- new-projects-start-general -->
+
+</sect2
+> <!-- new-projects-start -->
+
+<sect2 id="new-projects-start-cvs">
+<title
+>Proporcionar información sobre el sistema de versiones</title>
+
+<indexterm zone="new-projects-start-cvs">
+ <primary
+>CVS</primary>
+ <secondary
+>nuevo proyecto</secondary
+></indexterm>
+<indexterm zone="new-projects-start-cvs">
+ <primary
+>proyecto</primary>
+ <secondary
+>CVS</secondary
+></indexterm>
+<indexterm zone="new-projects-start-cvs">
+ <primary
+>base de datos</primary>
+ <secondary
+>CVS</secondary
+></indexterm>
+<indexterm zone="new-projects-start-cvs">
+ <primary
+>versión</primary>
+ <secondary
+>base de datos</secondary
+></indexterm>
+<indexterm zone="new-projects-start-cvs">
+ <primary
+>versión</primary>
+ <secondary
+>CVS</secondary
+></indexterm>
+
+<para
+>En un segundo paso, el &appwizard; le llevará a la página del <guilabel
+>Sistema de control de versiones</guilabel
+>, donde puede decidir qué sistema de control de versiones desea utilizar. </para>
+
+<note
+><para
+>Esta discusión se concentra solo en las necesidades de la creación del proyecto. Para más información sobre &CVS;, vea más adelante el capítulo <link linkend="cvs"
+>Uso de &CVS;</link
+>. </para
+></note>
+
+<formalpara>
+<title
+>No se desea usar un sistema de control de versiones</title>
+<para
+>Inicialmente estará seleccionado <quote
+>Ninguno</quote
+> en la pestaña <guilabel
+>Sistema de control de versiones</guilabel
+>, y el resto de la página estará en blanco. Si no desea utilizar un sistema de control de versiones, pulse el botón <guibutton
+>Adelante &gt;</guibutton
+> para continuar. </para>
+</formalpara>
+
+<formalpara>
+<title
+>Uso de &CVS;</title>
+<para
+>En cualquier otro caso, deberá seleccionar el sistema de control de versiones que desea utilizar en la pestaña <guilabel
+>Sistema de control de versiones</guilabel
+>. Usaremos <quote
+>&cvs;</quote
+> en nuestro ejemplo. Si lo selecciona, el &appwizard; volverá a visualizar la página, mostrándole una serie de campos que debe rellenar. </para>
+</formalpara>
+
+<screenshot id="screenshot-newproject-cvs">
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="create-new-project-cvs.png" format="PNG"/>
+ </imageobject>
+ <caption
+><para
+>Preparar el nuevo proyecto para CVS </para
+></caption>
+ </mediaobject>
+</screenshot>
+
+<para
+>Un sistema de control de versiones como &CVS; (que significa <quote
+>Sistema de versiones concurrentes</quote
+>) almacena copias de los archivos seleccionados del proyecto en algún tipo de base de datos. Si utiliza &CVS;, podrá, entre otras cosas, subir (<quote
+>commit</quote
+>) estos archivos o descargarlos en la carpeta de su proyecto (<quote
+>checkout</quote
+>, o <quote
+>update</quote
+>). Lo que este sistema tiene de especial es que los archivos existentes en la base de datos de versiones se almacenan de un modo estructurado que le permite recuperar en cualquier momento un estado de desarrollo anterior, si lo necesita. Y &CVS; permite que varios programadores colaboren de un modo bastante fácil en un gran proyecto (como &tdevelop;) sin interferir en el trabajo de los demás. </para>
+
+<indexterm zone="new-projects-start-cvs-root">
+ <primary
+>CVS</primary>
+ <secondary
+>raíz</secondary
+></indexterm>
+<indexterm zone="new-projects-start-cvs-root">
+ <primary
+>raíz</primary>
+ <secondary
+>CVS</secondary
+></indexterm>
+<indexterm zone="new-projects-start-cvs-root">
+ <primary
+>CVS</primary>
+ <secondary
+>local</secondary
+></indexterm>
+<indexterm zone="new-projects-start-cvs-root">
+ <primary
+>CVS</primary>
+ <secondary
+>remoto</secondary
+></indexterm>
+<indexterm zone="new-projects-start-cvs-root">
+ <primary
+>CVS local</primary
+></indexterm>
+<indexterm zone="new-projects-start-cvs-root">
+ <primary
+>:local:</primary
+></indexterm>
+<indexterm zone="new-projects-start-cvs-root">
+ <primary
+>CVS</primary>
+ <secondary
+>:local:</secondary
+></indexterm>
+
+<formalpara id="new-projects-start-cvs-root">
+<title
+>Raíz &CVS;</title>
+<para
+>&CVS; necesita <emphasis
+>gestionar</emphasis
+> la base de datos de versiones que mantiene de sus archivos del proyecto. Para realizar esta tarea, mantiene cierta información especial de la base de datos en una carpeta propia, llamada <emphasis
+>raíz &CVS;</emphasis
+>. El primer paso para acomodar su nuevo proyecto a &CVS; consiste, pues, en indicarle a &tdevelop; dónde está ubicada esta raíz. </para>
+</formalpara>
+
+<para
+><emphasis
+>Raíz &CVS; local.</emphasis
+> Existen dos posibilidades básicas: usar una base de datos &CVS; <emphasis
+>local</emphasis
+>, o bien usar una base de datos situada en un <emphasis
+>servidor remoto</emphasis
+>. Si está desarrollando para usted mismo, tal vez prefiera usar la base de datos de &CVS; como si se tratara de un sistema de copias de seguridad en su propio sistema. Habitualmente establecerá esta raíz en su carpeta personal, dándole el nombre <filename
+>cvsroot</filename
+>, tal y como se muestra a continuación: </para>
+<para
+><userinput
+><filename class="directory"
+>/home/devel/cvsroot</filename
+></userinput
+> (donde <filename
+>devel</filename
+> se refiere al usuario <quote
+>programador</quote
+>, solo a título de ejemplo) </para>
+
+<note
+><para
+>De hecho, esta es una forma abreviada. Exactamente, la raíz &CVS; local debe ser referida usando el prefijo <computeroutput
+>:local:</computeroutput
+>. La forma abreviada solo está permitida en los casos en que el nombre de archivo comience con una barra (<computeroutput
+>/</computeroutput
+>). El nombre completo para nuestro ejemplo de raíz &CVS; local sería: <filename class="directory"
+>:local:/home/devel/cvsroot</filename
+> </para
+></note>
+
+<para
+>Introduzca el nombre de la carpeta raíz de &CVS; que ha sido establecida en su sistema en el campo <guilabel
+>Raíz CVS</guilabel
+>. En principio, puede seleccionar cualquier nombre, e incluso usar múltiples bases de datos &CVS;, pero es recomendable que se atenga a la raíz &CVS; una vez establecida. </para>
+<para
+><emphasis
+>Inicializar una nueva raíz &CVS;.</emphasis
+> Si todavía no existe una raíz &CVS;, &tdevelop; puede ordenar al sistema &CVS; que cree una por usted en la carpeta indicada. Solo tiene que marcar la casilla <guilabel
+>Iniciar raíz</guilabel
+> que hay debajo del campo <guilabel
+>Raíz CVS</guilabel
+>. </para>
+<note
+><para
+>Como se ha dicho, &tdevelop; solo <emphasis
+>ordena</emphasis
+> al sistema &CVS; que inicialice una nueva raíz &CVS;, pero no hace nada por sí mismo en esta carpeta. Por fortuna, &CVS; es lo suficientemente inteligente como para comprobar si ya existe la carpeta raíz &CVS;. De ahí que no sea peligroso que marque <guilabel
+>Iniciar raíz</guilabel
+> sin tener en cuenta que ya pueda existir una carpeta raíz &CVS;. </para
+></note>
+
+<para
+><emphasis
+>Raíz &CVS; remota.</emphasis
+> Existen ocasiones en las que la base de datos &CVS; se mantiene un un servidor remoto, especialmente cuando varios programadores trabajan en el mismo proyecto. En este caso, debe introducir el &URL; de la raíz &CVS; de este servidor en el campo <guilabel
+>Raíz CVS</guilabel
+>. Por ejemplo, si desea acceder al servidor &CVS; de &kde;: </para>
+<para
+><userinput
+><filename class="directory"
+>:pserver:<replaceable
+>mi_login</replaceable
+>@cvs.kde.org:/home/kde</filename
+></userinput
+> (donde <replaceable
+>mi_login</replaceable
+> se refiere al nombre de usuario establecido para su cuenta &CVS; de &kde;) </para>
+
+<indexterm zone="new-projects-start-cvs-remote">
+ <primary
+>CVS remoto</primary
+></indexterm>
+<indexterm zone="new-projects-start-cvs-remote">
+ <primary
+>:pserver:</primary
+></indexterm>
+<indexterm zone="new-projects-start-cvs-remote">
+ <primary
+>:ext:</primary
+></indexterm>
+<indexterm zone="new-projects-start-cvs-remote">
+ <primary
+>CVS</primary>
+ <secondary
+>:local:</secondary
+></indexterm>
+<indexterm zone="new-projects-start-cvs-remote">
+ <primary
+>CVS</primary>
+ <secondary
+>:pserver:</secondary
+></indexterm>
+<indexterm zone="new-projects-start-cvs-remote">
+ <primary
+>CVS</primary>
+ <secondary
+>:ext:</secondary
+></indexterm>
+
+<formalpara id="new-projects-start-cvs-remote">
+<title
+>Tipos de servidores remotos de &CVS;</title>
+<para
+>Básicamente existen dos tipos de servidores de &CVS; remotos ampliamente usados: el <emphasis
+>pserver</emphasis
+>, que utiliza un protocolo no cifrado asegurado por una contraseña, y el servidor <emphasis
+>ext</emphasis
+>, que utiliza transferencias de datos cifrados con rsh o ssh. Se distinguen por el prefijo de &URL; que utilizan: </para>
+</formalpara>
+<para>
+<filename
+>:pserver:</filename>
+</para>
+<para
+>para el tipo de <quote
+>servidor protegido por contraseña</quote
+>, y </para>
+<para>
+<filename
+>:ext:</filename>
+</para>
+<para
+>para el tipo de servidor que usa rsh o ssh. Por ejemplo </para>
+<para>
+<userinput
+><filename class="directory"
+>:ext:<replaceable
+>mi_login</replaceable
+>@cvs.cervisia.sourceforge.net:/cvsroot/cervisia</filename
+></userinput>
+</para>
+<para
+>accede a la raíz &CVS; de la ampliamente usada herramienta de gestión <application
+>Cervisia</application
+> en el servidor de SourceForge. </para>
+<para
+>Si desea utilizar un servidor de &CVS; que soporte acceso cifrado con rsh o ssh, debe indicarle a &tdevelop; el protocolo de cifrado que debe usar. Solo tiene que introducir <userinput
+>rsh</userinput
+> o <userinput
+>ssh</userinput
+> en el campo <guilabel
+>CVS_RSH</guilabel
+> de la página <guilabel
+>Sistema de control de versiones</guilabel
+> del diálogo <guilabel
+>Crear nuevo proyecto</guilabel
+>. </para>
+
+<note
+><para
+>Debe tener en cuenta ciertos aspectos si usa un servidor cifrado para &CVS; con &tdevelop;. Vea el capítulo <link linkend="cvs"
+>Uso de &CVS;</link
+> para más detalles. </para
+></note>
+
+<indexterm zone="new-projects-start-cvs-repository">
+ <primary
+>CVS</primary>
+ <secondary
+>repositorio</secondary
+></indexterm>
+<indexterm zone="new-projects-start-cvs-repository">
+ <primary
+>repositorio</primary>
+ <secondary
+>CVS</secondary
+></indexterm>
+
+<formalpara id="new-projects-start-cvs-repository">
+<title
+>El repositorio &CVS;</title>
+<para
+>Hasta ahora solo le ha indicado a &tdevelop; dónde reside la raíz de &CVS; para manejar la base de datos de versiones y cómo acceder a ella. Ahora necesita indicarle a &tdevelop; con qué nombre desea que el &CVS; guarde los archivos de su proyecto en dicha base de datos. Este lugar que contendrá los archivos de su proyecto en el &CVS; se denomina <emphasis
+>repositorio</emphasis
+>. </para>
+</formalpara>
+<para
+>En principio, puede usar cualquier nombre para el repositorio &CVS; de los archivos de su proyecto, siempre que siga la especificación para nombrar archivos. Aún más, la mayor parte de los programadores usan simplemente el nombre de la misma aplicación. &CVS; creará una carpeta con este nombre en la raíz del &CVS;, de aquí que sea más fácil encontrarlo si mantiene el nombre de la aplicación para este propósito. </para>
+<para
+>Solo debe introducir el nombre del repositorio que desea usar en el campo <guilabel
+>Repositorio CVS</guilabel
+> de la página <guilabel
+>Sistema de control de versiones</guilabel
+> del diálogo <guilabel
+>Crear nuevo proyecto</guilabel
+>. En nuestro ejemplo es: <userinput
+>MiAplicacion</userinput
+> </para>
+
+<warning
+><para
+><emphasis
+>Tenga cuidado de no utilizar un repositorio existente.</emphasis
+> El sistema &CVS; no avisa sobre archivos duplicados, sino que aceptará cualquier cosa que no genere un conflicto formal. Si no tiene cuidado, acabará mezclándolo todo. </para
+></warning>
+
+<formalpara>
+<title
+>Los campos restantes</title>
+<para
+>No queda demasiado trabajo por hacer. El &appwizard; ya habrá rellenado el resto de campos por usted. Con más detalle: </para>
+</formalpara>
+<para
+>El campo <guilabel
+>Proveedor</guilabel
+> se usa solo por razones de compatibilidad. Puede aceptar el <quote
+>proveedor</quote
+> predeterminado que el &appwizard; ha colocado en él. </para>
+<para
+>El campo <guilabel
+>Mensaje</guilabel
+> le permite comentar el contenido inicial del &CVS;. Puede usar el texto que desee o dejar el texto <quote
+>nuevo proyecto</quote
+> que el &appwizard; ha colocado en él de forma predeterminada. </para>
+<para
+>La <guilabel
+>Etiqueta de publicación</guilabel
+> contiene el nombre que va a etiquetar el estado inicial de su proyecto. Esta <emphasis
+>etiqueta</emphasis
+> denomina un cierto punto dentro del repositorio &CVS; por el que puede acceder más tarde a este estado de su desarrollo. Vea más detalles en el capítulo <link linkend="cvs"
+>Uso de &CVS;</link
+>. </para>
+<para
+>El &appwizard; ha colocado una etiqueta <quote
+>inicio</quote
+> por omisión en este campo, lo que constituye una buena propuesta. Puede aceptarla sin más. </para>
+
+<note>
+<para
+>Cuando cualquier información contenida en estos campos sea incorrecta, &tdevelop; no se dará cuenta normalmente hasta el momento en que construya su proyecto. Es el sistema &CVS; el que informará de estos errores cuando trate de construir el repositorio. Por ello, debería revisar la ventana de <guilabel
+>Mensajes</guilabel
+> de &tdevelop; cuando sea creado el proyecto durante el último paso. Si existe algún error relacionado con el &CVS;, en la mayoría de los casos observará un mensaje de error como este: </para>
+
+<screen
+><computeroutput>
+* cd '/home/devel/test' &amp;&amp; cvs -d '/home/devel/cvsroot' \
+ import -m 'nuevo proyecto' '' 'proveedor' 'inicio' &amp;&amp;\
+ sh /opt/kde3/share/apps/kdevcvs/buildcvs.sh . '' \
+ '/home/devel/cvsroot'
+* cvs [importación abortada]: /home/devel/cvsroot/CVSROOT: No existe el
+ archivo o el directorio
+* *** Terminado con estado: 1 ***
+</computeroutput
+></screen>
+
+<para
+>Si ocurre esto, deberá configurar el &CVS; manualmente (&tdevelop; habrá inicializado correctamente los archivos de su proyecto en este momento), o bien eliminar la carpeta del proyecto y comenzar de nuevo con la opción <guimenuitem
+>Nuevo proyecto</guimenuitem
+> del menú <guimenu
+>Proyecto</guimenu
+>. </para>
+</note>
+
+<para
+>Una vez que haya introducido toda la información relacionada con &CVS;, pulse el botón <guibutton
+>Adelante &gt;</guibutton
+> para continuar. </para>
+
+<note
+><para
+>Si desea corregir algún error de la página anterior del diálogo <guilabel
+>Crear nuevo proyecto</guilabel
+>, pulse el botón <guibutton
+>&lt; Atrás</guibutton
+>. El &appwizard; recordará sus preferencias de la página actual, de modo que pueda continuar cuando vuelva a ella. </para
+></note>
+
+</sect2
+> <!-- new-projects-start-cvs -->
+
+<sect2 id="new-projects-start-templates">
+<title
+>Proporcionar plantillas para cabeceras y código fuente</title>
+
+<para
+>El siguiente paso le muestra una serie de páginas donde puede indicar cierta información que desee incluir en sus archivos de código fuente y de cabecera, si la tarea que seleccionada lo permite. </para>
+<para
+>Tanto la plantilla de la cabecera como la del código fuente se proporcionan para las aplicaciones C y C++, cada una en su propia página. Para otros lenguajes es posible que solo exista la plantilla para el código fuente. Y en algunos casos incluso encontrará vacía esta página de plantilla. </para>
+<para
+>Si se usa esta página, &appwizard; rellenará algunos comentarios comunes de cabeceras, que para una aplicación basada en C++ pueden aparecer como: </para>
+
+<screen
+><computeroutput
+><literal>
+/***************************************************************************
+ * Copyright (C) 2003 by Su nombre *
+ * usted@usted.com *
+ * *
+ * 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 *
+ * (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 this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+</literal
+></computeroutput
+></screen>
+
+<para
+>Otras plantillas proporcionarán información similar en un formato acorde a las definiciones del lenguaje de programación que desee utilizar. </para>
+<para
+>Como habrá observado, el gestor de aplicaciones ha rellenado rápidamente la información que usted ha introducido en la primera página <guilabel
+>General</guilabel
+> del diálogo <guilabel
+>Crear nuevo proyecto</guilabel
+>, como el contenido de los campos <guilabel
+>Autor</guilabel
+> y <guilabel
+>Correo electrónico</guilabel
+>. También se ha insertado información sobre la licencia correcta que haya seleccionado en la pestaña <guilabel
+>Licencia</guilabel
+>. </para>
+
+<sect3 id="new-projects-start-templates-edit">
+<title
+>Cómo editar las plantillas</title>
+
+<indexterm zone="new-projects-start-templates-edit">
+ <primary
+>plantillas</primary>
+ <secondary
+>proyecto</secondary>
+ <tertiary
+>editar</tertiary
+></indexterm>
+<indexterm zone="new-projects-start-templates-edit">
+ <primary
+>proyecto</primary>
+ <secondary
+>plantillas</secondary>
+ <tertiary
+>editar</tertiary
+></indexterm>
+
+<para
+>Las plantillas que ha preparado en el diálogo <guilabel
+>Crear nuevo proyecto</guilabel
+> serán procesadas posteriormente cada vez que le ordene a &tdevelop; que cree un nuevo archivo de código fuente o de cabecera. La información que ha proporcionado aquí será incluida al comienzo de cada archivo como una cabecera de documentación, antes del inicio de las partes que contienen el código. </para>
+<para
+>No está obligado a usar texto plano en ningún caso. &tdevelop; conoce el contenido de algunas variables que le permiten incluir información real en el archivo. El &appwizard; usa de hecho algunas de estas variables para insertar información sobre el <guilabel
+>Autor</guilabel
+>, su <guilabel
+>Correo electrónico</guilabel
+> y la <guilabel
+>Licencia</guilabel
+> en el texto inicial de la plantilla. </para>
+
+<variablelist>
+<varlistentry>
+<term
+>Incluir información &doxygen; en los archivos</term>
+<listitem>
+<para
+>Si, por ejemplo, desea que &doxygen; genere documentación de su &API; para mostrar más información sobre el contenido de los archivos en su lista de nombres de archivos, debe incluir las siguientes líneas en la plantilla del archivo de código fuente: </para>
+<screen
+><computeroutput>
+/**
+ * \file $MODULE$.cpp
+ * \brief (ponga aquí una descripción corta).
+ **/
+</computeroutput
+></screen>
+<para
+>Cada vez que cree un nuevo archivo de código fuente, &tdevelop; sustituirá la variable <varname
+>$MODULE$</varname
+> por nombre del cuerpo del archivo recién creado. Por ejemplo, si ha creado una nueva clase de C++ llamada <classname
+>UnaSencillaPrueba</classname
+>, verá las siguientes líneas en el archivo <filename
+>unasencillaprueba.cpp</filename
+>: </para>
+<screen
+><computeroutput>
+/**
+ * \file unasencillaprueba.cpp
+ * \brief (ponga aquí una descripción corta).
+ **/
+</computeroutput
+></screen>
+<para
+>Todavía tendrá que proporcionar la descripción corta tras la palabra clave <quote
+>\brief</quote
+>, pero parte del trabajo será relizado por usted de forma automática. </para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+>El archivo con el texto de licencia</term>
+<listitem>
+<para
+>Como otro ejemplo, puede incluir una referencia explícita al texto de licencia que desea utilizar en la plantilla. Use la variable <varname
+>$LICENSEFILE$</varname
+> para este propósito e incluya, por ejemplo, esta línea: </para>
+
+<screen
+><computeroutput>
+// Vea $LICENSEFILE$ para el texto completo de la licencia.
+</computeroutput
+></screen>
+<para
+>El &appwizard; reemplazará la variable <varname
+>$LICENSEFILE$</varname
+> con el nombre del archivo donde se puede encontrar el texto completo de la licencia, como por ejemplo: </para>
+<screen
+><computeroutput>
+// Vea COPYING para el texto completo de la licencia.
+</computeroutput
+></screen>
+<para
+>para la licencia <acronym
+>GPL</acronym
+>, o </para>
+<screen
+><computeroutput>
+// Vea LICENSE.BSD para el texto completo de la licencia.
+</computeroutput
+></screen>
+<para
+>si desea poner su aplicación bajo la licencia <acronym
+>BSD</acronym
+>. </para>
+<para
+>Existen, por supuesto, más variables que &tdevelop; conoce. Vea la sección <link linkend="newfiles-edittemplates"
+>Edición de plantillas</link
+> en el capítulo <link linkend="editing"
+>Herramientas de edición</link
+> para ver una lista de las posibles variables que puede usar. </para>
+</listitem>
+</varlistentry>
+</variablelist>
+
+<note
+><para
+>Las plantillas que ha definido aquí tendrán efecto únicamente después de que el &appwizard; haya creado el nuevo proyecto. Encontrará esta información al principio de los archivos que cree usted mismo durante el proceso de desarrollo. Al crear los archivos iniciales, el &appwizard; usará algunas plantillas estándar predefinidas. Deberá adaptar manualmente estos archivos iniciales según sus propias necesidades. </para
+></note>
+
+</sect3
+> <!-- new-projects-start-templates-edit -->
+</sect2
+> <!-- new-projects-start-templates -->
+
+<sect2 id="new-projects-start-build">
+<title
+>Construir los archivos iniciales del proyecto</title>
+
+<indexterm zone="new-projects-start-build">
+ <primary
+>proyecto</primary>
+ <secondary
+>nuevo</secondary>
+ <tertiary
+>construir</tertiary
+></indexterm>
+<indexterm zone="new-projects-start-build">
+ <primary
+>proyecto</primary>
+ <secondary
+>construcción inicial</secondary
+></indexterm>
+
+<para
+>Casi todo está terminado en este momento. En la última página de plantillas, el botón <guibutton
+>Adelante &gt;</guibutton
+> habrá cambiado ahora a <guibutton
+>Finalizar</guibutton
+>. </para>
+<para
+><emphasis
+>Piense dos veces antes de pulsarlo.</emphasis
+> Todavía tiene la oportunidad de revisar todo repetidamente usando el botón <guibutton
+>&lt; Atrás</guibutton
+>. Como el &appwizard; recuerda toda la información que ha introducido, sería recomendable que se tomara algo de tiempo en revisar todo una vez más. En caso de que utilice un &CVS; local, no se olvide de comprobar el nombre del <emphasis
+>repositorio &CVS;</emphasis
+> (no debe de existir una subcarpeta con ese nombre en la carpeta raíz del &CVS;; y, si existe, pruebe con otro nombre de repositorio). </para>
+<para
+>Si no desea generar el nuevo proyecto, cancele el diálogo <guilabel
+>Crear nuevo proyecto</guilabel
+> con el botón <guibutton
+>Cancelar</guibutton
+>. En caso contrario, pulse el botón <guibutton
+>Finalizar</guibutton
+> y observe en la ventana de <guilabel
+>Mensajes</guilabel
+> cómo inicia el proyecto el &appwizard;. </para>
+<para
+>Si desea utilizar un sistema de versiones (&CVS;), se realizarán realmente dos procesos. Primero, el &appwizard; generará las carpetas del proyecto y sus archivos, y luego llamará al programa &CVS;, que reinicia la ventana <guilabel
+>Mensajes</guilabel
+> con su propia salida. Si ocurre un error en cualquiera de estos pasos, el proceso se detendrá mostrándole un mensaje de error adecuado en la ventana. </para>
+
+<note
+><para
+>En muchos casos, cuando su nuevo proyecto haya sido generado de este modo, &tdevelop; cargará automáticamente uno o más archivos de código fuente de los módulos básicamente más importantes para que pueda comenzar a trabajar con ellos inmediatamente. No obstante, dependiendo de la plantilla inicialmente seleccionada en el &appwizard;, se mostrarán unos u otros módulos (o ninguno). </para
+></note>
+
+<para
+>No olvide comprobar inicialmente todo lo que ha generado el &appwizard;. Por ejemplo, puede querer cambiar la información inicial de las cabeceras según sus propias plantillas. Normalmente las encontrará en una subcarpeta llamada <filename class="directory"
+>templates</filename
+> dentro de la carpeta de su proyecto. Unas sencillas operaciones de copia de archivos bastarán para modificarlas. </para>
+<para
+>Luego sería recomendable que <emphasis
+>compilara el proyecto inicial</emphasis
+> antes de comenzar a cambiar el código. En la mayor parte de los casos, será posible realizar esta compilación inicial. De este modo, podrá asegurarse de que el proyecto ha sido generado realmente de acuerdo con sus necesidades. Si no fue así, solo tiene que eliminar la carpeta del proyecto (también en la raíz de su &CVS; local, si está usando uno) y comenzar de nuevo. </para>
+
+<warning id="defaultbuild-warning"
+> <!-- ### remove this when "default" works again -->
+
+ <indexterm zone="defaultbuild-warning">
+ <primary
+>configuración de construcción predeterminada</primary>
+ <secondary
+>aviso</secondary
+></indexterm>
+ <indexterm zone="defaultbuild-warning">
+ <primary
+>configuraciones de construcción</primary>
+ <secondary
+>aviso de construcción predeterminada</secondary
+></indexterm>
+ <indexterm zone="defaultbuild-warning">
+ <primary
+>aviso</primary>
+ <secondary
+>configuración de construcción predeterminada</secondary
+></indexterm>
+
+ <para
+>Antes de compilar su nuevo proyecto por primera vez, eche un vistazo a <menuchoice
+><guimenu
+>Proyecto</guimenu
+> <guimenuitem
+>Configuración de construcción</guimenuitem
+></menuchoice
+>. Si existen tres secciones mostradas como: <guimenuitem
+>predeterminada</guimenuitem
+>, <guimenuitem
+>optimizada</guimenuitem
+> y <guimenuitem
+>depuración</guimenuitem
+>, estando seleccionada <guimenuitem
+>depuración</guimenuitem
+>, utilice esta opción, o use <guimenuitem
+>optimizada</guimenuitem
+> en su lugar. </para>
+ <para
+>Debido a algunas limitaciones en la configuración de autoconf y automake, no debería <emphasis
+>bajo ningún concepto</emphasis
+> construir su proyecto con la configuración <guimenuitem
+>predeterminada</guimenuitem
+>. Esto ocasionaría que se perdieran ciertas preferencias internas de carpetas, haciendo que el comando <command
+>configure</command
+> genere errores cuando intente usarlo más adelante con las configuraciones de construcción <guimenuitem
+>optimizada</guimenuitem
+> o <guimenuitem
+>depuración</guimenuitem
+>. </para>
+ <para
+>Esto se aplica solo a estas posibilidades de selección múltiple. Si el tipo de aplicación que ha seleccionado proporciona solo una configuración de construcción <guimenuitem
+>predeterminada</guimenuitem
+>, deberá, por supuesto, usar esta opción. </para>
+</warning>
+
+</sect2
+> <!-- new-projects-start-build -->
+
+</sect1
+> <!-- new-projects -->
+
+<sect1 id="projects-configure">
+<title
+>Configuración de proyectos</title>
+
+<para
+>(... pendiente de escribir ...)</para>
+
+</sect1>
+
+</chapter
+> <!-- applicationwizard -->
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/automake-file-popup.png b/tde-i18n-es/docs/tdevelop/tdevelop/automake-file-popup.png
new file mode 100644
index 00000000000..6de2260ba65
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/automake-file-popup.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/automake-manager.png b/tde-i18n-es/docs/tdevelop/tdevelop/automake-manager.png
new file mode 100644
index 00000000000..65086e5d307
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/automake-manager.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/automake-subproject-popup.png b/tde-i18n-es/docs/tdevelop/tdevelop/automake-subproject-popup.png
new file mode 100644
index 00000000000..04cfae016c9
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/automake-subproject-popup.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/automake-target-popup.png b/tde-i18n-es/docs/tdevelop/tdevelop/automake-target-popup.png
new file mode 100644
index 00000000000..0b0b10ff751
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/automake-target-popup.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/automakemanager.png b/tde-i18n-es/docs/tdevelop/tdevelop/automakemanager.png
new file mode 100644
index 00000000000..65086e5d307
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/automakemanager.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/class-browsers.docbook b/tde-i18n-es/docs/tdevelop/tdevelop/class-browsers.docbook
new file mode 100644
index 00000000000..e01d71972b4
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/class-browsers.docbook
@@ -0,0 +1,89 @@
+<chapter id="class-browsers">
+<title
+>Los navegadores de clases</title>
+<indexterm zone="class-browsers"
+><primary
+>navegador de clases</primary
+></indexterm>
+
+<para
+>Cuando esté trabajando en un proyecto con un lenguaje orientado a objetos, su atención no estará centrada en los archivos de código fuente y en sus nombres, sino en las clases y en sus relaciones. Para ayudarle a navegar por el espacio de las clases y símbolos definidos, &tdevelop; incluye varios navegadores de clases que visualizan su estructura de diferentes modos. </para>
+
+<sect1 id="classview">
+<title
+>Vista de clases</title>
+
+<para
+>Esta vista se muestra a la izquierda de la ventana principal y contiene una lista lineal de todas las clases, variables y funciones de su proyecto. Ha sido diseñada como una vista en árbol. Si abre el nodo de una clase pulsando sobre él, se mostrará una lista con todos los métodos y atributos de dicha clase. </para>
+
+<figure id="screenshot-classview" float="1">
+<title
+>Una captura de la vista de clases</title>
+<mediaobject>
+<imageobject
+><imagedata fileref="classview.png"/></imageobject>
+</mediaobject>
+</figure>
+
+<para
+>La vista de clases funciona en dos modos distintos. De manera predeterminada, todos los símbolos están agrupados en <quote
+>clases</quote
+>, <quote
+>estructuras</quote
+>, <quote
+>funciones</quote
+>, <quote
+>variables</quote
+> y <quote
+>espacios de nombres</quote
+>. En el menú de contexto de la vista puede seleccionar <guimenuitem
+>Listar por espacios de nombres</guimenuitem
+>. En este modo se muestra la jerarquía de espacios de nombres, y los símbolos están agrupados bajo los espacios de nombres en los que están definidos. Esto puede ser más útil en proyectos que hacen un uso extensivo de espacios de nombres (anidados). No será tan útil en los proyectos que no manejan espacios de nombres. </para>
+
+<para
+>También puede cambiar el modo en el que se muestran los nombres de las clases. Normalmente, se muestran sin el espacio de nombres en el que están definidas. Esto significa que no podrá distinguir inmediatamente entre clases que tengan el mismo nombre en diferentes espacios de nombres. Si deja unos segundos el cursor del ratón sobre un elemento de la lista de clases, se mostrará el nombre completo de la clase (incluyendo su alcance) como ayuda emergente. Puede optar por mostrar siempre este nombre completo seleccionando en el menú <guimenuitem
+>Alcances de identificadores completos</guimenuitem
+>. </para>
+
+<para
+>Al pulsar sobre una clases o sobre uno de sus métodos se muestra su definición. También puede saltar a la declaración de un método seleccionando <guimenuitem
+>Ir a declaración</guimenuitem
+> en el menú de contexto. En el menú de contexto de las clases también encontrará <guimenuitem
+>Añadir método...</guimenuitem
+> y <guimenuitem
+>Añadir atributo...</guimenuitem
+>. Estas opciones abren diálogos donde puede generar nuevos métodos y declarar variables en la clase respectiva, junto a una implementación vacía. </para>
+
+</sect1
+> <!-- classview -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="classtools">
+<title
+>Herramientas de clases</title>
+
+<para
+>El diálogo de herramientas de clases se activa al pulsar sobre una clase de la vista de clases con el botón derecho del ratón y seleccionando la opción <guimenuitem
+>Herramienta de clases...</guimenuitem
+> </para>
+
+</sect1
+> <!-- classtools -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="classhierarchy">
+<title
+>Jerarquía de clases</title>
+
+<para
+>(... pendiente de escribir ...) </para>
+
+</sect1
+> <!-- classhierarchy -->
+
+</chapter
+> <!-- class-browsers -->
+
+<!-- ====================================================================== -->
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/classview.png b/tde-i18n-es/docs/tdevelop/tdevelop/classview.png
new file mode 100644
index 00000000000..a59cdef1b92
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/classview.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/commands.docbook b/tde-i18n-es/docs/tdevelop/tdevelop/commands.docbook
new file mode 100644
index 00000000000..92acbcaa62f
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/commands.docbook
@@ -0,0 +1,3000 @@
+<chapter id="commands">
+
+<!-- TODO
+- CAUTION: Check everything against actual KDevelp behaviour. Do not rely on tool tips etc.
+- Summarize menu entries, like in getting-started.
+- Complete descriptions, e.g. from What's This.
+- Link to more detailed description, e.g. in plugin chapter.
+-->
+
+<chapterinfo>
+ <authorgroup>
+ <author
+><firstname
+>Volker</firstname
+> <surname
+>Paul</surname
+></author>
+ <othercredit role="translator"
+><firstname
+>Eloy</firstname
+> <surname
+>Cuadra</surname
+> <affiliation
+><address
+><email
+>ecuadra@eloihr.net</email
+></address
+></affiliation
+> <contrib
+>Traductor</contrib
+></othercredit
+>
+ </authorgroup>
+
+ <date
+>2005-04-03</date>
+</chapterinfo>
+
+<title
+>Referencia de comandos</title>
+
+<note
+><para
+>Las combinaciones de teclas para los accesos rápidos mostradas en este capítulo son las predeterminadas, pero pueden ser modificadas por el usuario. </para
+></note>
+
+
+
+<sect1 id="menubar">
+<title
+>La barra de menú</title
+> <para
+>Tenga en cuenta que algunas entradas del menú solo aparecen cuando son aplicables. Especialmente, algunas entradas están ligadas a la funcionalidad de ciertas <link linkend="plugins-tools"
+>extensiones</link
+>, por lo que únicamente estarán disponibles cuando la extensión esté activada.</para>
+
+
+
+
+
+
+<!-- ======================= F I L E ============================= -->
+
+<sect2 id="menu-file">
+<title
+>El menú <guimenu
+>Archivo</guimenu
+></title>
+
+<variablelist>
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>N</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Archivo</guimenu
+> <guimenuitem
+>Nuevo</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Crea un archivo nuevo. Se le pedirá al usuario que seleccione una carpeta (que por omisión es la de código fuente del proyecto actual) y que introduzca un nombre para el archivo. El tipo de archivo se puede seleccionar mediante una lista. El usuario también puede decidir si se debe añadir el archivo al proyecto. A continuación, el gestor de automake preguntará a qué objetivo se debe añadir el nuevo archivo. </para
+></listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>O</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Archivo</guimenu
+> <guimenuitem
+>Abrir</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Abre un archivo existente mediante un diálogo de selección.</para
+></listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>O</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Archivo</guimenu
+> <guimenuitem
+>Abrir reciente</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Muestra un submenú con los archivo recientemente abiertos. Si selecciona uno de ellos, KDevelop lo abrirá. </para
+></listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Alt;&Ctrl;<keycap
+>O</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Archivo</guimenu
+> <guimenuitem
+>Apertura rápida</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Muestra una lista de los archivos de la carpeta de código fuente del proyecto actual. El usuario puede seleccionar un archivo en esta lista o escribir un nombre de archivo. Este archivo será abierto. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>S</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Archivo</guimenu
+> <guimenuitem
+>Guardar</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Guarda el archivo actual.</para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>S</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Archivo</guimenu
+> <guimenuitem
+>Guardar como...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Usa el diálogo <guilabel
+>Guardar como...</guilabel
+> para permitirle guardar una copia del archivo actual con otro nombre.</para
+></listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Archivo</guimenu
+> <guimenuitem
+>Guardar todo</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Guarda todos los archivos abiertos.</para
+></listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+><keycap
+>F5</keycap
+></shortcut
+> <guimenu
+>Archivo</guimenu
+> <guimenuitem
+>Recargar</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Vuelve a cargar el archivo actual para que refleje los cambios hechos por otros programas. (Tenga en cuenta que dichos cambios se detectan de forma automática, y se le pregunta al usuario cuándo se debe volver a cargar el archivo).</para
+></listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Archivo</guimenu
+> <guimenuitem
+>Revertir todo</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Revierte todos los cambios en los archivos abiertos. Pregunta si se deben guardar los cambios, de modo que la reversión pueda ser cancelada en cada archivo modificado. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>P</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Archivo</guimenu
+> <guimenuitem
+>Imprimir...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Imprime el archivo actual.</para
+></listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Archivo</guimenu
+> <guimenuitem
+>Exportar</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Exporta el archivo actual. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>F4</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Archivo</guimenu
+> <guimenuitem
+>Cerrar</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Cierra el archivo actual. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Archivo</guimenu
+> <guimenuitem
+>Cerrar todo</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Cierra todos los archivos abiertos. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Archivo</guimenu
+> <guimenuitem
+>Cerrar todos los otros</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Cierra todos los archivos abiertos excepto el actual. Es muy útil si ha abierto muchos archivos y solo desea concentrarse en el actual. Sin esta opción, tendría que cerrar todos los archivos y volver a abrir el actual. </para>
+<para
+>Tenga en cuenta que existe un comando similar en el menú de la ventana. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>Q</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Archivo</guimenu
+> <guimenuitem
+>Salir</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Cierra KDevelop.</para
+></listitem>
+</varlistentry>
+
+</variablelist>
+
+</sect2>
+
+
+
+<!-- ======================= E D I T ============================= -->
+
+
+<sect2 id="menu-edit">
+<title
+>El menú <guimenu
+>Editar</guimenu
+></title>
+
+
+<variablelist>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>Z</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Editar</guimenu
+> <guimenuitem
+>Deshacer</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Deshacer </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;&Shift;<keycap
+>Z</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Editar</guimenu
+> <guimenuitem
+>Rehacer</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Rehacer </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>X</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Editar</guimenu
+> <guimenuitem
+>Cortar</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Cortar </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>C</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Editar</guimenu
+> <guimenuitem
+>Copiar</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Copiar </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>V</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Editar</guimenu
+> <guimenuitem
+>Pegar</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Pegar </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>A</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Editar</guimenu
+> <guimenuitem
+>Seleccionar todo</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Seleccionar todo </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;&Shift;<keycap
+>A</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Editar</guimenu
+> <guimenuitem
+>Deseleccionar</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Quitar la selección actual </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;&Shift;<keycap
+>B</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Editar</guimenu
+> <guimenuitem
+>Modo de selección de bloque</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Modo de selección de bloques de texto </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+><keycap
+>Insert</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Editar</guimenu
+> <guimenuitem
+>Modo de sobrescritura</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Modo de sobrescritura </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>F</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Editar</guimenu
+> <guimenuitem
+>Buscar</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Buscar un texto </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+><keycap
+>F3</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Editar</guimenu
+> <guimenuitem
+>Buscar siguiente</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Buscar la siguiente coincidencia de un texto </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Shift;<keycap
+>F3</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Editar</guimenu
+> <guimenuitem
+>Buscar anterior</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Buscar la anterior coincidencia de un texto </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>R</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Editar</guimenu
+> <guimenuitem
+>Reemplazar</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Reemplazar un texto por otro </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>G</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Editar</guimenu
+> <guimenuitem
+>Ir a línea</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Ir a una línea de texto determinada </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Alt;&Ctrl;<keycap
+>F</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Editar</guimenu
+> <guimenuitem
+>Buscar en archivos</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Buscar un texto en varios archivos </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Shift;<keycap
+>R</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Editar</guimenu
+> <guimenuitem
+>Buscar-seleccionar-reemplazar</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Buscar, seleccionar y reemplazar </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Editar</guimenu
+> <guimenuitem
+>Reformatear fuente</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Reformatear código fuente </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>J</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Editar</guimenu
+> <guimenuitem
+>Expandir texto</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Expandir texto </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>L</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Editar</guimenu
+> <guimenuitem
+>Expandir abreviatura</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Expandir abreviatura </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>Space</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Editar</guimenu
+> <guimenuitem
+>Completar texto</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Completar texto </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+><keycap
+>F2</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Editar</guimenu
+> <guimenuitem
+>Crear miembro</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Crear miembro </para
+></listitem>
+</varlistentry>
+
+
+</variablelist>
+
+</sect2>
+
+
+
+<!-- ======================= V I E W ============================= -->
+
+
+<sect2 id="menu-view">
+
+<title
+>El menú <guimenu
+>Ver</guimenu
+></title>
+
+<variablelist>
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Ver</guimenu
+> <guimenuitem
+>Atrás</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Atrás </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Ver</guimenu
+> <guimenuitem
+>Adelante</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Adelante </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>/</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Ver</guimenu
+> <guimenuitem
+>Cambiar a...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Cambiar a... </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Alt;<keycap
+>C</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Ver</guimenu
+> <guimenuitem
+>Mostrar editor</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Mostrar editor </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+><keycap
+>F4</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Ver</guimenu
+> <guimenuitem
+>Siguiente error</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Siguiente error </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Shift;<keycap
+>F4</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Ver</guimenu
+> <guimenuitem
+>Anterior error</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Anterior error </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Shift;<keycap
+>F</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Ver</guimenu
+> <guimenuitem
+>Modo de pantalla completa</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Modo de pantalla completa </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>F12</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Ver</guimenu
+> <guimenuitem
+>Cambia a la cabecera/implementación</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Cambia a la cabecera/implementación </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Ver</guimenu
+> <guimenuitem
+>Vistas de herramientas</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Vistas de herramientas </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Ver</guimenu
+> <guimenuitem
+>Bloques de herramientas</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Bloques de herramientas </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+><keycap
+>F7</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Ver</guimenu
+> <guimenuitem
+>Cambiar a línea de comando</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Cambiar a la línea de comando </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Ver</guimenu
+> <guimenuitem
+>Esquema</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Esquema </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+><keycap
+>F10</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Ver</guimenu
+> <guimenuitem
+>Ajuste de línea dinámico</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Ajuste de línea dinámico </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Ver</guimenu
+> <guimenuitem
+>Indicadores de ajuste de línea dinámico</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Indicadores de ajuste de línea automático </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Ver</guimenu
+> <guimenuitem
+>Mostrar/ocultar marcador de ajuste de línea estático</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Mostrar/ocultar marcador de ajuste de línea estático </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+><keycap
+>F6</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Ver</guimenu
+> <guimenuitem
+>Mostrar/ocultar borde de iconos</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Mostrar/ocultar borde de iconos </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+><keycap
+>F11</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Ver</guimenu
+> <guimenuitem
+>Mostrar/ocultar números de línea</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Mostrar/ocultar números de línea </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Ver</guimenu
+> <guimenuitem
+>Mostrar/ocultar marcas de barras de desplazamiento</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Mostrar/ocultar marcas de barras de desplazamiento </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+><keycap
+>F9</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Ver</guimenu
+> <guimenuitem
+>Mostrar/ocultar marcas de pliegue</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Mostrar/ocultar marcas de pliegue </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Ver</guimenu
+> <guimenuitem
+>Plegado de código</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Plegado de código. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Ver</guimenu
+> <guimenuitem
+>Establecer codificación</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Establece la codificación. </para
+></listitem>
+</varlistentry>
+
+
+
+</variablelist>
+
+</sect2>
+
+
+
+
+<!-- ======================= P R O J E C T ============================= -->
+
+
+<sect2 id="menu-project">
+<title
+>El menú <guimenu
+>Proyecto</guimenu
+></title>
+
+<variablelist>
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Proyecto</guimenu
+> <guimenuitem
+>Nuevo proyecto...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Nuevo proyecto... </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Proyecto</guimenu
+> <guimenuitem
+>Abrir proyecto...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Abrir proyecto... </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Proyecto</guimenu
+> <guimenuitem
+>Abrir proyecto reciente</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Abrir proyecto reciente </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Proyecto</guimenu
+> <guimenuitem
+>Lenguaje activo</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Lenguaje activo </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Proyecto</guimenu
+> <guimenuitem
+>Importar proyecto existente...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Importar un proyecto existente... </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Proyecto</guimenu
+> <guimenuitem
+>Nueva clase...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Nueva clase... </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Proyecto</guimenu
+> <guimenuitem
+>Diagrama de herencias</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Diagrama de herencia de clases </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Proyecto</guimenu
+> <guimenuitem
+>Añadir nueva traducción...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Añadir traducción... </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Proyecto</guimenu
+> <guimenuitem
+>Configuración de construcción</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Configuración de construcción. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Proyecto</guimenu
+> <guimenuitem
+>Distribución y publicación del proyecto</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Distribución y publicación del proyecto. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Proyecto</guimenu
+> <guimenuitem
+>Opciones del proyecto...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Opciones del proyecto... </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Proyecto</guimenu
+> <guimenuitem
+>Cerrar proyecto</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Cerrar proyecto </para
+></listitem>
+</varlistentry>
+
+
+
+
+</variablelist>
+
+</sect2>
+
+
+<!-- ======================= B U I L D ============================= -->
+
+
+<sect2 id="menu-build">
+<title
+>El menú <guimenu
+>Proyecto</guimenu
+></title>
+
+<variablelist>
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+><keycap
+>F8</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Construir</guimenu
+> <guimenuitem
+>Construir proyecto</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Construir el proyecto </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+><keycap
+>F7</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Construir</guimenu
+> <guimenuitem
+>Construir objetivo activo</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Construir el objetivo activo </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Construir</guimenu
+> <guimenuitem
+>Compilar archivo</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Compilar archivo </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Construir</guimenu
+> <guimenuitem
+>Ejecutar configure</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Ejecutar «configure» </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Construir</guimenu
+> <guimenuitem
+>Ejecutar automake y compañía</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Ejecutar «automake» y demás comandos relacionados </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Construir</guimenu
+> <guimenuitem
+>Instalar</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Instalar </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Construir</guimenu
+> <guimenuitem
+>Instalar (como usuario root)</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Instalar (como usuario «root») </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Construir</guimenu
+> <guimenuitem
+>Limpiar proyecto</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Limpiar el proyecto. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Construir</guimenu
+> <guimenuitem
+>Limpiar todo</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Limpiar todo </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Shift;<keycap
+>F9</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Construir</guimenu
+> <guimenuitem
+>Crear mensajes y combinar</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Crear mensajes y combinar. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Construir</guimenu
+> <guimenuitem
+>Ejecutar programa</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Ejecutar programa </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Construir</guimenu
+> <guimenuitem
+>Construir documentación de la API</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Construir la documentación de la API </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Construir</guimenu
+> <guimenuitem
+>Limpiar documentación de la API</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Limpiar documentación de la API </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+><keycap
+>Esc</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Construir</guimenu
+> <guimenuitem
+>Detener</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Detener </para
+></listitem>
+</varlistentry>
+
+
+
+
+</variablelist>
+
+</sect2>
+
+
+
+<!-- ======================= D E B U G ============================= -->
+
+
+<sect2 id="menu-debug">
+<title
+>El menú <guimenu
+>Proyecto</guimenu
+></title>
+
+<variablelist>
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Depurar</guimenu
+> <guimenuitem
+>Iniciar</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Inicia la depuración. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Depurar</guimenu
+> <guimenuitem
+>Parar</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Detener </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Depurar</guimenu
+> <guimenuitem
+>Pausar</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Pausar </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Depurar</guimenu
+> <guimenuitem
+>Ejecutar hasta el cursor</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Ejecuta hasta la posición del cursor. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Depurar</guimenu
+> <guimenuitem
+>Paso a paso por funciones</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Paso a paso por funciones </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Depurar</guimenu
+> <guimenuitem
+>Paso a paso por instrucciones</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Paso a paso por instrucciones </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Depurar</guimenu
+> <guimenuitem
+>Saltar a función</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Saltar a función </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Depurar</guimenu
+> <guimenuitem
+>Saltar a instrucción</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Saltar a instrucción </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Depurar</guimenu
+> <guimenuitem
+>Saltar hasta fin de función</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Saltar hasta fin de función </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Depurar</guimenu
+> <guimenuitem
+>Cambiar punto de interrupción</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Cambiar punto de interrupción </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Depurar</guimenu
+> <guimenuitem
+>Visores</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Visores </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Depurar</guimenu
+> <guimenuitem
+>Examinar archivo core...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Examinar archivo core... </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Depurar</guimenu
+> <guimenuitem
+>Adjuntar a proceso</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Adjuntar a proceso </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Depurar</guimenu
+> <guimenuitem
+>Comprobar pérdidas de memoria con Valgrind</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Comprobar pérdidas de memoria con Valgrind </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Depurar</guimenu
+> <guimenuitem
+>Perfilar con KCachegrind</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Perfilar con KCachegrind </para
+></listitem>
+</varlistentry>
+
+
+
+
+</variablelist>
+
+</sect2>
+
+
+
+
+
+<!-- ======================= B O O K M A R K S ============================= -->
+
+
+
+<sect2 id="menu-bookmarks">
+<title
+>El menú <guimenu
+>Marcadores</guimenu
+></title>
+
+<variablelist>
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>B</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Marcadores</guimenu
+> <guimenuitem
+>Fijar marcador</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Añadir la selección actual a su lista de marcadores.</para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Marcadores</guimenu
+> <guimenuitem
+>Borrar todos los marcadores</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Elimina todos los marcadores.</para
+></listitem>
+</varlistentry>
+</variablelist>
+
+</sect2>
+
+
+
+
+<!-- ======================= W I N D O W ============================= -->
+
+
+<sect2 id="menu-window">
+<title
+>El menú <guimenu
+>Ventana</guimenu
+></title>
+
+<variablelist>
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Alt;<keycap
+>W</keycap
+></keycombo
+></shortcut
+> <guimenu
+>Ventana</guimenu
+> <guimenuitem
+>Cerrar ventanas seleccionadas...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Cierra las ventanas seleccionadas...</para
+></listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>F4</keycap
+></keycombo
+></shortcut
+> <guimenu
+>Ventana</guimenu
+> <guimenuitem
+>Cerrar</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Cierra la ventana actual</para
+></listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Ventana</guimenu
+> <guimenuitem
+>Cerrar todo</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Cierra todas las ventanas</para
+></listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Ventanas</guimenu
+> <guimenuitem
+>Cerrar las otras</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Cerrar el resto de ventanas</para
+></listitem>
+</varlistentry>
+
+
+</variablelist>
+
+</sect2>
+
+
+
+
+
+
+<!-- ======================= T O O L S ============================= -->
+
+
+<sect2 id="menu-tools">
+<title
+>El menú <guimenu
+>Herramientas</guimenu
+></title>
+
+<variablelist>
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Modo de solo lectura</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Modo de solo lectura. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Tipo de archivo</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Tipo de archivo </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Resaltado</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Modo de resaltado. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Fin de línea</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Fin de línea </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Ortografía</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Ortografía </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>I</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Sangrar</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Sangrado. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;&Shift;<keycap
+>I</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Sangrado inverso</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Sangrado inverso. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Borrar sangrado</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Borra el sangrado. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>Tab</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Alinear</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Alineación. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>D</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Comentar</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Comenta. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;&Shift;<keycap
+>D</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Descomentar</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Descomenta. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>U</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Mayúsculas</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Mayúsculas. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;&Shift;<keycap
+>U</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Minúsculas</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Minúsculas. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Alt;&Ctrl;<keycap
+>U</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Capitalizar</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Pone la primera letra de cada palabra en mayúsculas. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>J</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Unir líneas</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Une líneas. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Ajustar líneas del documento</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Ajustar las líneas del documento </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>
+>Visor de diferencias...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Visor de diferencias... </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Ejecutar comando...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Ejecutar comando... </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Filtrar selección a través de comando...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Filtra la selección mediante un comando externo que usa la <link linkend="KDevFilter"
+>extensión de filtro</link
+>. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Depurar expresión regular...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Depurar expresión regular... </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Explorador de Parts</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Explorador de Parts </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Alt;&Ctrl;<keycap
+>C</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Apertura rápida de clase...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Apertura rápida de clase... </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Alt;&Ctrl;<keycap
+>M</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Apertura rápida de método...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Apertura rápida de método... </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Alt;&Ctrl;<keycap
+>P</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Vista preliminar de la salida de Doxygen</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Vista preliminar de la salida de Doxygen </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;&Shift;<keycap
+>S</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Documentar la función actual</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Documentar la función actual </para
+></listitem>
+</varlistentry>
+
+
+
+</variablelist>
+
+</sect2>
+
+
+
+
+<!-- ======================= S E T T I N G S ============================= -->
+
+
+<sect2 id="menu-settings">
+<title
+>El menú <guimenu
+>Preferencias</guimenu
+></title>
+
+
+<variablelist>
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Ctrl;<keycap
+>M</keycap
+></keycombo
+></shortcut
+> <guimenu
+>Preferencias</guimenu
+> <guimenuitem
+>Mostrar/ocultar la barra de menú</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Muestra/oculta la barra de menú.</para
+></listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Preferencias</guimenu
+> <guimenuitem
+>Barras de herramientas</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Abre un submenú en el que puede seleccionar que se muestren o que se oculten diversas barras de herramientas.</para
+></listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Preferencias</guimenu
+> <guimenuitem
+>Mostrar la barra de estado</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Muestra la barra de estado.</para
+></listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Preferencias</guimenu
+> <guimenuitem
+>Configurar accesos rápidos...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Configurar los accesos rápidos... </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Herramientas</guimenu
+> <guimenuitem
+>Configurar barras de herramientas...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Configurar las barras de herramientas... </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Preferencias</guimenu
+> <guimenuitem
+>Configurar notificaciones...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Configurar las notificaciones... </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Preferencias</guimenu
+> <guimenuitem
+>Configurar editor...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Configurar el editor... </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Preferencias</guimenu
+> <guimenuitem
+>Configurar KDevelop...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Configurar KDevelop... </para
+></listitem>
+</varlistentry>
+
+
+
+
+</variablelist>
+
+</sect2>
+
+
+<!-- ======================= H E L P ============================= -->
+
+
+<sect2 id="menu-help">
+<title
+>El menú <guimenu
+>Ayuda</guimenu
+></title>
+
+<variablelist>
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Ayuda</guimenu
+> <guimenuitem
+>Manual de KDevelop</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Ver este documento.</para
+></listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Shift;<keycap
+>F1</keycap
+></keycombo
+></shortcut
+> <guimenu
+>Ayuda</guimenu
+> <guimenuitem
+>¿Qué es esto?</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Cambia el cursor por un signo de interrogación. Al pulsar el botón izquierdo del ratón sobre cualquier elemento de una ventana, como el botón <guiicon
+>Detener</guiicon
+>, se mostrará una breve explicación sobre él. </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Ayuda</guimenu
+> <guimenuitem
+>Sugerencia del día</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Muestra la sugerencia del día </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Alt;&Ctrl;<keycap
+>I</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Ayuda</guimenu
+> <guimenuitem
+>Buscar en el índice de la documentación...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Buscar en el índice de la documentación... </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><shortcut
+> <keycombo action="simul"
+>&Alt;&Ctrl;<keycap
+>S</keycap
+></keycombo
+> </shortcut
+> <guimenu
+>Ayuda</guimenu
+> <guimenuitem
+>Buscar en ladocumentación...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Buscar en la documentación... </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Ayuda</guimenu
+> <guimenuitem
+>Página de manual...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Página «man» (de manual)... </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Ayuda</guimenu
+> <guimenuitem
+>Página info...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Página «info» (de información)... </para
+></listitem>
+</varlistentry>
+
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Ayuda</guimenu
+> <guimenuitem
+>Informar de fallo...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Muestra un informe de fallo para rellenar.</para
+></listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Ayuda</guimenu
+> <guimenuitem
+>Acerca de KDevelop...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Muestra información breve sobre la versión de KDevelop, sus autores y el contrato de licencia.</para
+></listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><menuchoice
+><guimenu
+>Ayuda</guimenu
+> <guimenuitem
+>Acerca de KDE...</guimenuitem
+> </menuchoice
+></term>
+<listitem
+><para
+>Muestra información sobre la versión de &kde; que está utilizando.</para
+></listitem>
+</varlistentry>
+
+</variablelist>
+
+</sect2>
+
+
+
+</sect1>
+
+
+
+
+</chapter>
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/configure-adddialog-baselibs.png b/tde-i18n-es/docs/tdevelop/tdevelop/configure-adddialog-baselibs.png
new file mode 100644
index 00000000000..a599fc11e13
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/configure-adddialog-baselibs.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/configure-doctree-textsearch.png b/tde-i18n-es/docs/tdevelop/tdevelop/configure-doctree-textsearch.png
new file mode 100644
index 00000000000..49f7f12a0ae
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/configure-doctree-textsearch.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-chm.png b/tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-chm.png
new file mode 100644
index 00000000000..6b901e7f4bb
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-chm.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-custom.png b/tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-custom.png
new file mode 100644
index 00000000000..7d9d1e9719e
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-custom.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-devhelp.png b/tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-devhelp.png
new file mode 100644
index 00000000000..f80dc415b05
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-devhelp.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-dox.png b/tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-dox.png
new file mode 100644
index 00000000000..80795f71dd1
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-dox.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-edit.png b/tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-edit.png
new file mode 100644
index 00000000000..1340500d00e
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-edit.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-general.png b/tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-general.png
new file mode 100644
index 00000000000..75256998ae6
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-general.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-toc.png b/tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-toc.png
new file mode 100644
index 00000000000..559468a29aa
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/configure-docu-toc.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/configure-editor.png b/tde-i18n-es/docs/tdevelop/tdevelop/configure-editor.png
new file mode 100644
index 00000000000..f861f0a6f07
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/configure-editor.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/configure-file-selector.png b/tde-i18n-es/docs/tdevelop/tdevelop/configure-file-selector.png
new file mode 100644
index 00000000000..84ac71a6671
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/configure-file-selector.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/configure-general.png b/tde-i18n-es/docs/tdevelop/tdevelop/configure-general.png
new file mode 100644
index 00000000000..43f12f38e6d
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/configure-general.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/configure-select.png b/tde-i18n-es/docs/tdevelop/tdevelop/configure-select.png
new file mode 100644
index 00000000000..f9ef06e2f43
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/configure-select.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/configure-snippets.png b/tde-i18n-es/docs/tdevelop/tdevelop/configure-snippets.png
new file mode 100644
index 00000000000..ab3797baab0
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/configure-snippets.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/create-new-project-cvs.png b/tde-i18n-es/docs/tdevelop/tdevelop/create-new-project-cvs.png
new file mode 100644
index 00000000000..c26ddbdd25a
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/create-new-project-cvs.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/createnewproject.png b/tde-i18n-es/docs/tdevelop/tdevelop/createnewproject.png
new file mode 100644
index 00000000000..55610b46ca7
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/createnewproject.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/credits.docbook b/tde-i18n-es/docs/tdevelop/tdevelop/credits.docbook
new file mode 100644
index 00000000000..ff35193069e
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/credits.docbook
@@ -0,0 +1,40 @@
+<chapter id="credits">
+<title
+>Créditos</title>
+
+<sect1 id="credits-contributions">
+<title
+>Contribuciones</title>
+
+<para>
+<itemizedlist>
+ <listitem
+><para
+>El contenido inicial de este manual fue escrito por Bernd Gehrmann <email
+>bernd@tdevelop.org</email
+> y Caleb Tennis <email
+>caleb@aei-tech.com</email
+>. </para
+></listitem>
+ <listitem
+><para
+>El <link linkend="automake-manager-summary"
+>sumario de &automanag;</link
+> y los capítulos sobre <link linkend="automake-manager-operation"
+>operación del gestor de automake</link
+> fueron escritos por Ian Wadham, <email
+>ianw@netspace.net.au</email
+>). </para
+></listitem>
+</itemizedlist>
+</para>
+
+</sect1
+> <!-- credits-contributions -->
+
+<!--CREDITS_FOR_TRANSLATORS-->
+
+</chapter
+> <!-- credits -->
+
+<!-- ====================================================================== -->
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/cvs.docbook b/tde-i18n-es/docs/tdevelop/tdevelop/cvs.docbook
new file mode 100644
index 00000000000..96b909c8281
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/cvs.docbook
@@ -0,0 +1,131 @@
+<chapter id="cvs">
+<title
+>Uso de &CVS;</title>
+<indexterm zone="cvs"
+><primary
+>CVS</primary
+></indexterm>
+<indexterm zone="cvs"
+><primary
+>control de revisiones</primary
+></indexterm>
+
+<sect1 id="cvs-basics">
+<title
+>Conceptos básicos de &CVS;</title>
+
+<para
+>&CVS; es el sistema de control de revisiones que usan muchos proyectos de código abierto (incluido &kde;). Almacena todo el código fuente en un lugar centralizado, llamado <emphasis
+>repositorio</emphasis
+>. A partir del repositorio, los desarrolladores pueden extraer una versión actual del proyecto o porciones de él en distintos puntos de su desarrollo. En contraste con otros sistemas de control de revisiones, no es necesario <emphasis
+>bloquear</emphasis
+> los archivos sobre los que alguien desea trabajar. Así, el desarrollo puede ser altamente paralelizado. </para>
+
+<para
+>Cada vez que un desarrollador ha terminado una tarea, <emphasis
+>envía</emphasis
+> su código (acompañado de un mensaje de registro). &CVS; realiza el trabajo de mezclar los cambios realizados por varios desarrolladores. Por supuesto, puede ocurrir que los desarrolladores trabajen en el mismo trozo de código, lo que generará un conjunto de cambios conflictivos (en la práctica esto ocurre raramente, y a menudo es un síntoma de una falta de comunicación). En este caso, &CVS; rechaza el envío; solo cuando se hayan resuelto todos los conflictos se podrá enviar el archivo. </para>
+
+<para
+>Hasta aquí hemos descrito las características básicas de &CVS; con las que se trabaja normalmente. Pero &CVS; puede proporcionar mucho más. Es posible mantener distintas ramas de un proyecto (&eg;, &kde; 1.1.2 y &kde; 2 fueron ramas en el árbol de desarrollo de &kde;), mezclar los cambios de una rama en otra, consultar las diferencias entre revisiones, el histórico de la revisión de archivos, &etc; </para>
+
+<para
+>&CVS; se implementa como un sistema cliente-servidor. Como usuario, toda comunicación con el repositorio se realiza mediante el comando &cvs;. También puede usar una interfaz de usuario de más alto nivel como &cervisia; (<ulink url="http://cervisia.sf.net"
+></ulink
+>) o <application
+>TkCVS</application
+> (<ulink url="http://tkcvs.sf.net"
+></ulink
+>). En &tdevelop;, solo podrá usar directamente una pequeña parte de las funcionalidades de &cvs; que son importantes para su trabajo diario. </para>
+
+<para
+>Se asume que posee un conocimiento básico de &CVS;. En particular, debería saber cómo descargar un determinado proyecto del repositorio. Recomendamos la lectura del libro <quote
+>Desarrollo de código abierto con &CVS;</quote
+>, por Karl Fogel, que se distribuye gratuitamente (a excepción de los capítulos no técnicos). Vea <ulink url="http://cvsbook.red-bean.com/cvsbook.html"
+></ulink
+>. </para>
+
+</sect1
+> <!-- cvs-basics -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="cvs-commands">
+<title
+>Comandos &CVS; de &tdevelop;</title>
+
+<para
+>En las vistas de archivos se dispone de las siguientes opciones en el menú de contexto: </para>
+
+<variablelist>
+<varlistentry>
+<term
+>Añadir al repositorio</term>
+<listitem>
+<para
+>Prepara los archivos marcados para ser añadidos al repositorio. Los archivos se transfieren al repositorio al repositorio cuando los envíe (o cuando envíe el directorio que los contiene) la próxima vez. </para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+>Eliminar del repositorio</term>
+<listitem>
+<para
+>Prepara un archivo para ser eliminado del repositorio. Esto también elimina el archivo del sistema de archivos local, así que use esta característica con cuidado. </para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+>Actualizar</term>
+<listitem>
+<para
+>Ejecuta <command
+>cvs update</command
+> para mezclar cualquier cambio realizado por otros usuarios en su directorio de trabajo. Cuando use esta opción del menú sobre un directorio, la actualización se realiza de forma recursiva, excepto si ha desactivado esta característica en el archivo de configuración <filename
+>.cvsrc</filename
+>. </para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+>Enviar</term>
+<listitem>
+<para
+>Ejecuta <command
+>cvs commit</command
+> para enviar cualquier cambio local al repositorio. Tenga en cuenta que debe actualizar su copia antes de hacer esto. De otro modo, si otro usuario ha enviado sus propios cambios antes, &CVS; puede mostrarle un mensaje de error. </para>
+</listitem>
+</varlistentry>
+</variablelist>
+
+<para
+>Todos estos comandos son invocados como subprocesos por &tdevelop; sin ninguna opción más de la línea de comandos ni variables de entorno. Esto puede ser un problema cuando la conexión con el servidor de &CVS; se realiza mediante &ssh; y se le solicita que introduzca su contraseña cada vez que envía o actualiza. Esto es necesario, por ejemplo, cuando su proyecto se almacena en <filename
+>sourceforge.net</filename
+>. Las posibles soluciones para este problema se describen en las «preguntas frecuentes» de &CVS;/SSH, que puede encontrar en la documentación de SourceForge. </para>
+
+</sect1
+> <!-- cvs-basics -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="cvs-behind">
+<title
+>Detrás del telón</title>
+
+<sect2 id="cvs-behind-workdir">
+<title
+>Qué guarda &CVS; en el directorio de trabajo</title>
+
+<para
+>(... pendiente de escribir ...) </para>
+</sect2
+> <!-- cvs-behind-workdir -->
+
+</sect1
+> <!-- cvs-behind -->
+
+</chapter
+> <!-- cvs -->
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/doctreeview.png b/tde-i18n-es/docs/tdevelop/tdevelop/doctreeview.png
new file mode 100644
index 00000000000..52edfd921f4
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/doctreeview.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/documentation.docbook b/tde-i18n-es/docs/tdevelop/tdevelop/documentation.docbook
new file mode 100644
index 00000000000..5d0b3b367a2
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/documentation.docbook
@@ -0,0 +1,73 @@
+<chapter id="documentation">
+<title
+>Documentación</title>
+
+<para
+>La documentación, desafortunadamente, es una de las cuestiones menos tenidas en cuenta en programación. Aún así, una vez configurada y bien mantenida, la documentación tanto interna como externa proporciona una ayuda inestimable. </para>
+
+<para
+>La documentación posee múltiples aspectos. Existe <itemizedlist>
+ <listitem
+><para
+><emphasis
+>documentación interna del proyecto</emphasis
+>, consistente principalmente en <itemizedlist>
+ <listitem
+><para
+><emphasis
+>comentarios</emphasis
+> en archivos de cabecera y de código fuente </para
+></listitem>
+ <listitem
+><para
+><emphasis
+>documentación de la &API; interna</emphasis
+> de su proyecto generada a partir de los archivos de código fuente de su programa por herramientas especiales, como &doxygen; </para
+></listitem>
+ </itemizedlist>
+ </para
+></listitem>
+ <listitem
+><para
+><emphasis
+>documentación externa del proyecto</emphasis
+>, que comprende, entre otros, <itemizedlist>
+ <listitem
+><para
+><emphasis
+>documentación de la &API; externa</emphasis
+> de, &eg;, bibliotecas comunes del sistema (&kde;, &Qt;, &etc;) </para
+></listitem>
+ <listitem
+><para
+>cualquier otra documentación (manuales de lenguajes de programación, información general del sistema, artículos «cómo», y similares) </para
+></listitem>
+ </itemizedlist>
+ </para
+></listitem>
+</itemizedlist>
+</para>
+<para
+>Toda esta documentación debe ser fácil de mantener y estar disponible rápidamente cada vez que la necesite. &tdevelop; proporciona precisamente eso. </para>
+
+<!-- ### doc browser, notes on internal documentation, how to profit from Doxygen -->
+
+<sect1 id="docbrowser">
+<title
+>El navegador de la documentación</title>
+
+
+<figure id="screenshot-doctreeview" float="1">
+<title
+>Una captura del árbol de la documentación</title>
+<mediaobject>
+<imageobject
+><imagedata fileref="doctreeview.png"/></imageobject>
+</mediaobject>
+</figure>
+
+</sect1
+> <!-- docbrowser -->
+
+</chapter
+> <!-- documentation -->
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/documents-contents.png b/tde-i18n-es/docs/tdevelop/tdevelop/documents-contents.png
new file mode 100644
index 00000000000..45341b38a04
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/documents-contents.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/editing.docbook b/tde-i18n-es/docs/tdevelop/tdevelop/editing.docbook
new file mode 100644
index 00000000000..c53be2a81f2
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/editing.docbook
@@ -0,0 +1,608 @@
+<chapter id="editing">
+<title
+>Herramientas de edición</title>
+
+<sect1 id="editing-snippets">
+<title
+>Fragmentos de código</title>
+
+<itemizedlist>
+ <title
+>Características (visión general)</title>
+ <listitem
+><para
+>SnippetPart añade una vista de herramientas que se ancla a la derecha de forma predeterminada </para
+></listitem>
+ <listitem
+><para
+>Es posible añadir, editar y eliminar fragmentos de código mediante un menú desplegable </para
+></listitem>
+ <listitem
+><para
+>Si hace doble clic sobre un fragmento de la lista, se inserta en la vista activa, en la posición actual del cursor </para
+></listitem>
+ <listitem
+><para
+>Las ayudas emergentes muestran el contenido del fragmento de código </para
+></listitem>
+ <listitem
+><para
+>Los fragmentos de código se almacenan en la carpeta del usuario, de modo que cada usuario puede tener sus propios fragmentos </para
+></listitem>
+ <listitem
+><para
+>Los fragmentos de código pueden contener variables con el formato $<varname
+>NOMBREDEVARIABLE</varname
+>$. Al usar el fragmento se le solicita al usuario que introduzca el valor de las variables </para
+></listitem>
+</itemizedlist>
+</sect1
+> <!-- editing-snippets -->
+
+<sect1 id="keyboardmapping">
+<title
+>Mapa del teclado</title>
+<indexterm zone="keyboardmapping"
+><primary
+>accesos rápidos</primary
+></indexterm>
+
+<para
+>A continuación listaremos los accesos rápidos de teclado predeterminados para el editor predeterminado. Los puede configurar según sus preferencias (¿cómo?) </para>
+
+<informaltable>
+<tgroup cols="2">
+<tbody>
+
+<row
+><entry
+><para
+><keycap
+>Izquierda </keycap
+></para
+></entry>
+<entry
+><para
+>Mueve un carácter a la izquierda </para
+></entry
+></row>
+
+<row
+><entry
+><para
+><keycap
+>Derecha </keycap
+></para
+></entry>
+<entry
+><para
+>Mueve un carácter a la derecha </para
+></entry
+></row>
+
+<row
+><entry
+><para
+><keycombo
+>&Ctrl;<keycap
+> Izquierda </keycap
+></keycombo
+></para
+></entry>
+<entry
+><para
+>Mueve una palabra a la izquierda </para
+></entry
+></row>
+
+<row
+><entry
+><para
+><keycombo
+>&Ctrl;<keycap
+> Derecha </keycap
+></keycombo
+></para
+></entry>
+<entry
+><para
+>Mueve una palabra a la derecha </para
+></entry
+></row>
+
+<row
+><entry
+><para
+><keycap
+>Arriba </keycap
+></para
+></entry>
+<entry
+><para
+>Mueve una línea hacia arriba </para
+></entry
+></row>
+
+<row
+><entry
+><para
+><keycap
+>Abajo </keycap
+></para
+></entry>
+<entry
+><para
+>Mueve una línea hacia abajo </para
+></entry
+></row>
+
+<row
+><entry
+><para
+><keycap
+>RePág </keycap
+></para
+></entry>
+<entry
+><para
+>Retrocede una página </para
+></entry
+></row>
+
+<row
+><entry
+><para
+><keycap
+>AvPág </keycap
+></para
+></entry>
+<entry
+><para
+>Avanza una página </para
+></entry
+></row>
+
+<row
+><entry
+><para
+><keycombo
+>&Ctrl;<keycap
+> RePág </keycap
+></keycombo
+></para
+></entry>
+<entry
+><para
+>Salta al principio del archivo </para
+></entry
+></row>
+
+<row
+><entry
+><para
+><keycombo
+>&Ctrl; <keycap
+> AvPág </keycap
+></keycombo
+></para
+></entry>
+<entry
+><para
+>Salta al final del archivo </para
+></entry
+></row>
+
+<row
+><entry
+><para
+><keycap
+>Inicio </keycap
+></para
+></entry>
+<entry
+><para
+>Salta al inicio de la línea </para
+></entry
+></row>
+
+<row
+><entry
+><para
+><keycap
+>Fin </keycap
+></para
+></entry>
+<entry
+><para
+>Salta al final de la línea </para
+></entry
+></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+
+<para
+>Se puede pulsar la tecla &Shift; junto con cualquiera de las teclas anteriores para marcar desde la posición actual del cursor hasta un punto posterior. </para>
+
+<informaltable>
+<tgroup cols="2">
+<tbody>
+
+<row
+><entry
+><para
+><keycap
+>Retroceso </keycap
+></para
+></entry>
+<entry
+><para
+>Elimina el carácter situado a la izquierda </para
+></entry
+></row>
+
+<row
+><entry
+><para
+><keycap
+>Supr </keycap
+></para
+></entry>
+<entry
+><para
+>Elimina el carácter bajo el cursor </para
+></entry
+></row>
+
+<row
+><entry
+><para
+><keycombo
+>&Ctrl; <keycap
+> C </keycap
+></keycombo
+></para
+></entry>
+<entry
+><para
+>Copia el texto seleccionado en el portapapeles </para
+></entry
+></row>
+
+<row
+><entry
+><para
+><keycombo
+>&Ctrl;<keycap
+> V </keycap
+></keycombo
+></para
+></entry>
+<entry
+><para
+>Pega el texto del portapapeles </para
+></entry
+></row>
+
+<row
+><entry
+><para
+><keycombo
+>&Ctrl;<keycap
+> X </keycap
+></keycombo
+></para
+></entry>
+<entry
+><para
+>Elimina el texto seleccionado y lo pone en el portapapeles </para
+></entry
+></row>
+
+<row
+><entry
+><para
+><keycombo
+>&Ctrl;<keycap
+> Z </keycap
+></keycombo
+></para
+></entry>
+<entry
+><para
+>Deshacer </para
+></entry
+></row>
+
+<row
+><entry
+><para
+><keycombo
+>&Shift;&Ctrl;<keycap
+> Z </keycap
+></keycombo
+></para
+></entry>
+<entry
+><para
+>Rehacer </para
+></entry
+></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+
+</sect1
+> <!-- keyboardmapping -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="editing-reporter">
+<title
+>El informador de fallos</title>
+
+<para
+>(... pendiente de escribir ...) </para>
+</sect1
+> <!-- editing-reporter -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="searchinggrepping">
+<title
+>Búsqueda y uso de la herramienta «grep»</title>
+<indexterm zone="searchinggrepping"
+><primary
+>buscar</primary
+></indexterm>
+<indexterm zone="searchinggrepping"
+><primary
+>encontrar</primary
+></indexterm>
+
+<sect2 id="searching">
+<title
+>Búsqueda de texto</title>
+
+<para
+><keycombo
+>&Ctrl;<keycap
+>F</keycap
+></keycombo
+>- Buscar <keycombo
+>&Ctrl;<keycap
+>R</keycap
+></keycombo
+>- Reemplazar </para>
+
+</sect2
+> <!-- searching -->
+
+
+<sect2 id="isearch">
+<title
+>ISearch</title>
+<indexterm zone="isearch"
+><primary
+>isearch</primary
+></indexterm>
+<indexterm zone="isearch"
+><primary
+>búsqueda incremental</primary
+></indexterm>
+<indexterm zone="isearch"
+><primary
+>buscar</primary
+><secondary
+>incremental</secondary
+></indexterm>
+
+<para
+>La búsqueda convencional con <menuchoice
+><guimenu
+>Editar</guimenu
+> <guimenuitem
+>Buscar</guimenuitem
+></menuchoice
+> requiere que especifique el término completo a buscar antes de comenzar. La mayoría de veces resulta mucho más rápido buscar incrementalmente. Si pulsa sobre el campo de edición etiquetado <guilabel
+>ISearch</guilabel
+> que hay en la barra de herramientas, la búsqueda se realiza mientras escribe. A menudo encontrará el término deseado tras escribir 3 ó 4 letras. </para>
+
+</sect2
+> <!-- isearch -->
+
+
+<sect2 id="grep">
+<title
+>Grep</title>
+<indexterm zone="grep"
+><primary
+>buscar</primary
+><secondary
+>en archivos</secondary
+></indexterm>
+
+<para
+>Los dos mecanismos de búsqueda descritos se limitan a buscar dentro de un único archivo de texto. Pero dispone de una herramienta adicional que le permite buscar en un conjunto (posiblemente grande) de archivos en la opción <guimenuitem
+>Buscar en archivos...</guimenuitem
+> del menú <guimenu
+>Editar</guimenu
+>. Consiste básicamente en una interfaz para el programa &grep;(1). </para>
+
+<para
+>En el diálogo, puede especificar en qué archivos se va a buscar. Dispone de cierto número de patrones de comodines en una lista desplegable. De este modo puede restringir fácilmente el mecanismo de búsqueda, por ejemplo, a archivos de cabecera. También puede especificar una carpeta donde iniciar la búsqueda. Si marca la opción <guibutton
+>Recursivo</guibutton
+>, la búsqueda se realiza en toda la jerarquía de carpetas que existe bajo la de inicio. </para>
+
+<para
+>El término a buscar es generalmente una expresión regular que sigue la sintaxis POSIX. Por ejemplo, puede usar el término <literal
+>"\&lt;K.*"</literal
+> si quiere encontrar todas las palabras que comiencen con la letra «K». Los siguientes caracteres se interpretan de un modo especial: </para>
+
+<informaltable>
+<tgroup cols="2">
+<tbody>
+
+<row
+><entry>
+ <literal
+>.</literal>
+</entry
+><entry
+>Representa cualquier carácter </entry
+></row>
+<row
+><entry>
+ <literal
+>^</literal>
+</entry
+><entry
+>Representa el inicio de una línea </entry
+></row>
+<row
+><entry>
+ <literal
+>$</literal>
+</entry
+><entry
+>Representa el final de una línea </entry
+></row>
+<row
+><entry>
+ <literal
+>\&lt;</literal>
+</entry
+><entry
+>Representa el principio de una palabra </entry
+></row>
+<row
+><entry>
+ <literal
+>\&gt;</literal>
+</entry
+><entry
+>Representa el final de una palabra </entry
+></row>
+<row
+><entry>
+ <literal
+>?</literal>
+</entry
+><entry
+>El elemento anterior representa menor que una vez </entry
+></row>
+<row
+><entry>
+ <literal
+>*</literal>
+</entry
+><entry
+>El elemento anterior representa cero o más veces </entry
+></row>
+<row
+><entry>
+ <literal
+>+</literal>
+</entry
+><entry
+>El elemento anterior representa una o más veces </entry
+></row>
+<row
+><entry>
+ <literal
+>{n}</literal>
+</entry
+><entry
+>El elemento anterior representa exactamente «n» veces </entry
+></row>
+<row
+><entry>
+ <literal
+>{n,}</literal>
+</entry
+><entry
+>El elemento anterior representa «n» o más veces </entry
+></row>
+<row
+><entry>
+ <literal
+>{,n}</literal>
+</entry
+><entry
+>El elemento anterior representa menos de «n» veces </entry
+></row>
+<row
+><entry>
+ <literal
+>{n,m}</literal>
+</entry
+><entry
+>El elemento anterior representa al menos <literal
+>n</literal
+> veces, pero menos de <literal
+>m</literal
+> veces </entry
+></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+
+<para
+>Las referencias a subexpresiones entre paréntesis también se pueden realizar mediante la notación <literal
+>\n</literal
+>. </para>
+
+<para
+>Como añadido especial, los programadores de C++ disponen de varias plantillas de búsqueda de patrones típicos, que le permiten buscar, por ejemplo, todas las llamadas a funciones miembro de un objeto determinado. </para>
+
+<para
+>Una vez que ha comenzado la búsqueda tras pulsar el botón <guibutton
+>Buscar</guibutton
+>, esta se llevará a cabo por un proceso externo asíncrono. Todos los elementos encontrados aparecerán en la vista denominada <guilabel
+>Grep</guilabel
+>. A continuación podrá ir a un elemento encontrado pulsando sobre él. Tenga en cuenta que «grep» procesa los archivos tal y como los almacena el sistema de archivos. Si tiene versiones modificadas de ellos en su editor, cabe la posibilidad de que el número de línea sea erróneo, o de que algunos elementos encontrados sean incorrectos. Puede evitar esta situación si guarda previamente todos los archivos abiertos. </para>
+
+</sect2
+> <!-- grep -->
+
+</sect1
+> <!-- searchinggrepping -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="code-completion">
+<title
+>Terminación de código</title>
+
+<para
+>(... pendiente de escribir ...) </para>
+</sect1
+> <!-- code-completion -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="newfiles">
+<title
+>Creación de archivos y clases nuevas</title>
+
+<para
+>(... pendiente de escribir ...) </para>
+
+<sect2 id="newfiles-edittemplates">
+<title
+>Edición de las plantillas</title>
+
+<para
+>(... pendiente de escribir ...) </para>
+</sect2
+> <!-- newfiles-edittemplates -->
+
+</sect1
+> <!-- newfiles -->
+
+</chapter
+> <!-- editing -->
+<!-- ====================================================================== -->
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/empty-ide.png b/tde-i18n-es/docs/tdevelop/tdevelop/empty-ide.png
new file mode 100644
index 00000000000..c0bc1533196
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/empty-ide.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/file-browsers.docbook b/tde-i18n-es/docs/tdevelop/tdevelop/file-browsers.docbook
new file mode 100644
index 00000000000..a4983e73690
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/file-browsers.docbook
@@ -0,0 +1,67 @@
+<chapter id="file-browsers">
+<title
+>Los navegadores de archivos</title>
+
+<para
+>En la parte izquierda de la ventana principal, &tdevelop; puede mostrar varios tipos de listas y árboles para la selección de archivos: </para>
+
+<variablelist>
+<varlistentry>
+<term
+>Árbol de archivos</term>
+<listitem>
+<para
+>Esto muestra una vista de árbol para la jerarquía de carpetas del proyecto. Si pulsa sobre un archivo, se abre en el editor. Si el archivo no contiene texto, &tdevelop; inicia una aplicación que puede manejar su correspondiente tipo MIME. </para>
+
+<para
+>El árbol de archivos se actualiza normalmente cada vez que se modifica algo en el sistema. Por ejemplo, si crea nuevos archivos o carpetas (incluso desde fuera de &tdevelop;), los cambios se reflejan inmediatamente en la lista de archivos. En &Linux;, esta característica hace uso de la biblioteca FAM. En otros sistemas operativos o sobre NFS, las carpetas mostradas se sondean cada poco tiempo. </para>
+
+<para
+>El árbol de archivos oculta los archivos que normalmente no son interesantes, como los de código objeto. En las <guimenuitem
+>Opciones del proyecto</guimenuitem
+>, bajo <guibutton
+>Vistas de archivos</guibutton
+>, puede configurar los patrones que se usan para filtrar archivos irrelevantes (como una lista de comodines separados por comas). </para>
+
+<para
+>Aún más, puede decidir restringir el árbol de archivos para que solo muestre los archivos que pertenecen al proyecto actualmente cargado. Esto se puede modificar pulsando el botón derecho del ratón sobre el elemento raíz del árbol. </para>
+
+<figure id="screenshot-filetree" float="1">
+<title
+>Una captura del árbol de archivos</title>
+<mediaobject>
+<imageobject
+><imagedata fileref="filetree.png"/></imageobject>
+<textobject
+><phrase
+>Una captura del árbol de archivos</phrase
+></textobject>
+</mediaobject>
+</figure>
+
+</listitem>
+</varlistentry>
+<varlistentry>
+<term
+>Grupos de archivos</term>
+<listitem>
+<para
+>Esto muestra los archivos que pertenecen al proyecto, agrupados por su extensión. Como en el árbol de archivos, puede editar un archivo pulsando sobre él con el &LMB;. </para>
+
+<para
+>Los grupos mostrados en esta vista se pueden configurar con <guibutton
+>Vistas de archivos</guibutton
+>, en el diálogo de <guimenuitem
+>Opciones del proyecto</guimenuitem
+>. Para personalizar la vista según sus necesidades, es útil saber cómo se distribuyen los archivos en los grupos. Para cada archivo, &tdevelop; recorre todos los grupos desde arriba hasta abajo. En cada grupo, busca si el nombre satisface uno de los patrones. Si coincide, el archivo se muestra en este grupo y se cancela la búsqueda. Por este motivo, los patrones más genéricos deberían encontrarse por encima de los más específicos. Por ejemplo, un asterisco para el grupo <guilabel
+>Otros</guilabel
+> debería ser el último patrón. </para>
+
+</listitem>
+</varlistentry>
+</variablelist>
+
+</chapter
+> <!-- file-browsers -->
+
+<!-- ====================================================================== -->
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/file-selector.png b/tde-i18n-es/docs/tdevelop/tdevelop/file-selector.png
new file mode 100644
index 00000000000..5e5491d1598
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/file-selector.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/filetree.png b/tde-i18n-es/docs/tdevelop/tdevelop/filetree.png
new file mode 100644
index 00000000000..88ba300c5e1
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/filetree.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/folded-tabs.png b/tde-i18n-es/docs/tdevelop/tdevelop/folded-tabs.png
new file mode 100644
index 00000000000..ccefac8be3d
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/folded-tabs.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/getting-started.docbook b/tde-i18n-es/docs/tdevelop/tdevelop/getting-started.docbook
new file mode 100644
index 00000000000..b9b8b934b0d
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/getting-started.docbook
@@ -0,0 +1,695 @@
+<chapter id="getting-started">
+
+<!-- ToDo:
+Put the AppWizard section at the beginning.
+Before anything else, let the user generate
+a hello program like this:
+- assumes KDevelop is properly installed,
+ e.g. from a good Linux distribution
+ (list those that include KDevelop?)
+- start KDevelop
+- if settings are needed, accept default ones
+- Project - New Project
+- C++ - KDE - Simple KDE application
+- name: hello, location: default (/home/user). Next
+- Project Options: Leave as default. Next
+- .h Template: Leave as default. Next
+- .cpp Template: Leave as default. Finish
+- Build - Execute Program (Yes to run automake & friends)
+- Messages window appears. Wait until program is compiled.
+- Finally, program pops up, saying "Hello World".
+
+After this, explore the KDevelop functionality
+with the hello program as an example.
+
+Also: Links to detailed descriptions in the main part.
+Volker Paul
+-->
+
+<chapterinfo>
+ <authorgroup>
+ <author
+><firstname
+>Bernd</firstname
+><surname
+>Pol</surname
+></author>
+ <!-- ROLES_OF_TRANSLATORS -->
+ </authorgroup>
+</chapterinfo>
+
+<title
+>Primeros pasos con &tdevelop; &mdash; Un paseo guiado</title>
+
+<para
+>Ahora que ha instalado su entorno de desarrollo integrado &tdevelop;, ¿cómo va a utilizarlo de forma correcta? Como se trata de una aplicación compleja, la curva de aprendizaje puede ser un poco larga, especialmente si no está acostumbrado a este tipo de entorno de desarrollo integrado. </para>
+<para
+>Trataremos de suavizar un poco esta curva de aprendizaje mediante la creación de una sencilla aplicación en C++ para KDE. De este modo, veremos (de forma superficial): </para>
+<simplelist>
+ <member
+><link linkend="gettingstarted-overview"
+>Cómo es la apariencia exterior del IDE &tdevelop;.</link
+></member>
+<!-- <member
+><link linkend="gettingstarted-configure"
+>Some initial configuration steps.</link
+></member
+> -->
+ <member
+><link linkend="gettingstarted-new"
+>Cómo crear un nuevo proyecto.</link
+></member>
+<!--
+ <member
+><link linkend="gettingstarted-edit"
+>How to work with documents.</link
+></member>
+ <member
+><link linkend="gettingstarted-compile"
+>How to compile the application in this project.</link
+></member>
+ <member
+><link linkend="gettingstarted-extend"
+>How to add classes and other detail to your project.</link
+></member>
+ <member
+><link linkend="gettingstarted-debug"
+>What to do to debug the application.</link
+></member>
+ <member
+><link linkend="gettingstarted-doc"
+>Some basic tools to build program or user documentation.</link
+></member>
+-->
+</simplelist>
+
+<sect1 id="gettingstarted-overview">
+<title
+>El primer encuentro con &tdevelop;</title>
+
+<sect2 id="gettingstarted-overview-basic">
+<title
+>Apariencia exterior</title>
+
+<para
+>Cuando inicie &tdevelop; por primera vez verá una ventana similar a esta: </para>
+
+<screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="empty-ide.png" format="PNG"/>
+ </imageobject>
+ <caption
+><para
+>Disposición inicial de &tdevelop; </para
+></caption>
+ </mediaobject>
+</screenshot>
+
+<formalpara>
+<title
+>Área de trabajo y pestañas de vistas de herramientas</title>
+<para
+>En esta disposición inicial, &tdevelop; utiliza lo que se denomina <link linkend="uimodes-survey"
+>modo de interfaz de usuario IDEAl</link
+>, un área de trabajo del máximo tamaño posible rodeada por la izquierda, por la derecha y por la parte inferior de una serie de botones que funcionan de un modo similar a las pestañas de una ventana con separadores de pestaña. Si pulsa sobre una de estas pestañas se mostrará lo que se denomina <emphasis
+>ventana de vista de herramientas</emphasis
+>, que le permitirá trabajar sobre una tarea específica. </para>
+</formalpara>
+
+<formalpara>
+<title
+>El menú y las barras de herramientas</title>
+<para
+>En la parte superior está la típica barra de menú, seguida por varias filas de barras de herramientas, alguna de las cuales puede estar inicialmente vacía. Tendrán contenido una vez que exista un proyecto abierto sobre el que trabajar. </para>
+</formalpara>
+
+<formalpara>
+<title
+>La barra de estado</title>
+<para
+>Finalmente, existe una barra de estado en la parte inferior de la ventana, donde se muestran cortas informaciones sobre varias tareas. </para>
+</formalpara>
+</sect2
+> <!-- gettingstarted-overview-basic -->
+
+<sect2 id="gettingstarted-overview-help">
+<title
+>Cómo obtener ayuda</title>
+
+<para
+>Además del menú <guimenu
+>Ayuda</guimenu
+>, que le ofrece respuestas a cuestiones específicas, la barra de estado y dos clases de ayudas emergentes le proporcionarán una rápida información. </para>
+
+<formalpara>
+<title
+>¿Qué hace esta entrada del menú?</title>
+<para
+>Normalmente, cuando sitúa el cursor del ratón sobre una entrada del menú, se mostrará algún tipo de información corta en la barra de estado. Mientras que en la mayor parte de los casos solo se repite el nombre de la selección, algunas veces proporcionará información adicional sobre el propósito del comando del menú.</para>
+</formalpara>
+
+<formalpara>
+<title
+>¿Cuál es el nombre de este elemento?</title>
+<para
+>Si sitúa el cursor durante algunos segundos sobre la mayoría de los elementos, se mostrará una ayuda emergente con el nombre corto de su función. Esto es útil para orientarse rápidamente en las barras de herramientas o en las pestañas de vistas de herramientas del modo IDEAl, cuando el IDE ha sido configurado para que solo muestre iconos en estos botones..</para>
+</formalpara>
+
+<formalpara>
+<title
+>¿Qué hace este elemento?</title>
+<para
+>Dispone de más información mediante las ayudas emergentes expandidas que existen en muchos elementos del IDE. Seleccione <menuchoice
+><guimenu
+>Ayuda</guimenu
+> <guimenuitem
+>¿Qué es esto?</guimenuitem
+></menuchoice
+> o pulse <keycombo
+><keycap
+>&Shift;</keycap
+><keycap
+>F1</keycap
+></keycombo
+>, con lo que el cursor cambiará a un signo de interrogación con el que puede seleccionar el elemento sobre el que desea saber más. También puede abrir cualquier menú de este modo y pulsar sobre cualquiera de sus entradas (tanto activas como desactivadas) para ver si se dispone de más información sobre ella.</para>
+</formalpara>
+
+</sect2
+> <!-- gettingstarted-overview-help -->
+
+<sect2 id="gettingstarted-overview-menu">
+<title
+>¿Qué hay en los menús?</title>
+
+<para
+>Existen diez menús seleccionables en la barra de menú. Muchos de ellos solo dispondrán de todas sus opciones una vez que haya abierto un proyecto sobre el que trabajar, mientras que otros necesitan al menos un documento abierto. Brevemente, le permitirán los siguientes tipos de acciones. </para>
+
+<para
+>Tenga en cuenta que esto es solo una primera aproximación. Para un listado detallado de los menús y de sus elementos, vea la <link linkend="commands"
+>referencia de comandos</link
+>.</para>
+
+<variablelist>
+ <varlistentry>
+ <term
+><guimenu
+>Archivo</guimenu
+></term>
+ <listitem>
+ <formalpara
+><title
+>Acciones comunes</title>
+ <para
+>Es bastante estándar. Le permite crear, abrir, guardar, imprimir y cerrar archivos de documentos, así como salir de la forma usual de la aplicación &tdevelop;.</para
+></formalpara>
+ <formalpara
+><title
+>Revertir cambios</title>
+ <para
+>Adicionalmente, le permite deshacer todas las modificaciones volviendo a cargar el contenido del archivo previamente guardado.</para
+></formalpara>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term
+><guimenu
+>Editar</guimenu
+></term>
+ <listitem>
+ <para
+>Este menú solo es útil si tiene abierto algún documento.</para>
+ <formalpara
+><title
+>Acciones comunes</title>
+ <para
+>Proporciona las típicas acciones deshacer/rehacer y cortar/copiar/pegar. Además, le permite seleccionar bloques de texto de varias maneras.</para
+></formalpara>
+ <formalpara
+><title
+>Buscar y reemplazar</title>
+ <para
+>Existe una función de búsqueda realmente potente en el menú <guimenu
+>Editar</guimenu
+>. Además de las típicas acciones de búsqueda y sustitución limitadas al documento actual, también puede realizar acciones de búsqueda y sustitución globales, que le permiten trabajar simultáneamente sobre todos los archivos del proyecto.</para
+></formalpara>
+ <formalpara
+><title
+>Edición de texto avanzada</title>
+ <para
+>Existen opciones para reformatear el documento actual y para completar de forma automática el texto parcialmente tecleado de varios modos.</para
+></formalpara>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term
+><guimenu
+>Ver</guimenu
+></term>
+ <listitem>
+ <para
+>Del mismo modo que el menú <guimenu
+>Editar</guimenu
+>, este menú es útil solo si hay un proyecto abierto. En este caso, dispondrá de las siguientes acciones (entre otras):</para>
+ <formalpara
+><title
+>Historial de navegación</title>
+ <para
+>Desplazarse atrás y adelante entre los documentos, &etc;, que haya visitado.</para>
+ </formalpara>
+ <formalpara
+><title
+>Seguimiento de errores</title>
+ <para
+>Navegar hasta las líneas de código que contienen los errores encontrados durante el último proceso de compilación o construcción.</para>
+ </formalpara>
+ <formalpara
+><title
+>Administrar la vista de herramientas</title>
+ <para
+>Mostrar y ocultar ventanas de vistas de herramientas o puntos de anclaje de vistas de herramientas.</para>
+ </formalpara>
+ <formalpara
+><title
+>Acciones relacionadas con el editor</title>
+ <para
+>Algunas entradas del menú <guimenu
+>Ver</guimenu
+> controlan el aspecto del editor que está usando. En caso de sea el componente de &kate; (Editor de texto avanzado empotrable), dispondrá de los siguientes controles:</para>
+ </formalpara>
+ <itemizedlist>
+ <listitem
+><para
+>Controlar el comportamiento del ajuste de línea en la ventana del documento.</para
+></listitem>
+ <listitem
+><para
+>Mostrar u ocultar algunas marcas en el borde de las ventanas de documento: números de línea, iconos y diversos tipos de marcadores.</para
+></listitem>
+ <listitem
+><para
+>Controlar cómo se muestran las secciones de código fuente plegado (temporalmente oculto).</para
+></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term
+><guimenu
+>Proyecto</guimenu
+></term>
+ <listitem>
+ <para
+>Todo el trabajo de &tdevelop; se basa en <emphasis
+>proyectos</emphasis
+>, que básicamente son una colección de archivos de código fuente, archivos de administración de la compilación y otro tipo de información residente en una carpeta de proyecto. En este menú puede controlar qué proyecto usar y qué propiedades tiene, además de otras acciones de administración. En particular:</para>
+ <formalpara
+><title
+>Abrir un proyecto</title>
+ <para
+>Permite crear nuevos proyectos, abrir proyectos existentes e importar proyectos de otros entornos.</para>
+ </formalpara>
+ <formalpara
+><title
+>Opciones del proyecto</title>
+ <para
+>Permite definir una buena cantidad de propiedades de un proyecto.</para>
+ </formalpara>
+ <formalpara
+><title
+>Administración de clases</title>
+ <para
+>Añade nuevas clases a un proyecto y traza el árbol de herencia de una clase.</para>
+ </formalpara>
+ <formalpara
+><title
+>Distribuir el proyecto</title>
+ <para
+>Ayuda a construir paquetes para la distribución del proyecto.</para
+></formalpara>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term
+><guimenu
+>Construir</guimenu
+></term>
+ <listitem>
+ <para
+>Este menú está destinado a compilar y documentar el proyecto, por lo que solo tiene utilidad cuando hay uno abierto. En este caso proporciona las siguientes acciones:</para>
+ <formalpara
+><title
+>Compilar, enlazar y ejecutar</title>
+ <para
+>Permite compilar y enlazar todo el proyecto o partes del mismo, así como ejecutar la aplicación desde el IDE.</para>
+ </formalpara>
+ <formalpara
+><title
+>Preparar operaciones de construcción</title>
+ <para
+>Esto depende realmente del sistema «make» que esté utilizando en su proyecto. En el caso de proyectos «automake» permite ejecutar los archivos <filename
+>Makefile.cvs</filename
+> y <filename
+>configure</filename
+> por sí mismos. También existen acciones para eliminar archivos de traducción del proyecto en varios grados de intensidad.</para>
+ </formalpara>
+ <formalpara
+><title
+>Instalar la aplicación</title>
+ <para
+>Permite instalar la aplicación en carpetas locales o en las del sistema (solo accesibles al usuario «root»).</para>
+ </formalpara>
+ <formalpara
+><title
+>Documentación de la API</title>
+ <para
+>Construir o eliminar del proyecto la documentación de la API basada en «doxygen» definida en las opciones del proyecto.</para>
+ </formalpara>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term
+><guimenu
+>Depurar</guimenu
+></term>
+ <listitem>
+ <para
+>Aunque este menú solo está disponible cuando hay un proyecto activo, solo resulta útil si el proyecto actual ha sido compilado previamente con información de depuración (lo que se puede configurar básicamente en el menú <menuchoice
+><guimenu
+>Proyecto</guimenu
+> <guimenuitem
+>Opciones del proyecto</guimenuitem
+></menuchoice
+>). En tal caso dispondrá de las siguientes acciones:</para>
+ <formalpara
+><title
+>Acciones típicas de depuración</title>
+ <para
+>La primera sección del menú <guimenu
+>Depurar</guimenu
+> proporciona una interfaz gráfica para el depurador simbólico GDB de &GNU;. Le permite iniciar y detener su aplicación en el depurador, y avanzar por ella de varios modos.</para>
+ </formalpara>
+ <formalpara
+><title
+>Puntos de interrupción</title>
+ <para
+>&tdevelop; proporciona algunos métodos para establecer puntos de interrupción en el código fuente de su aplicación. Uno de ellos consiste en usar la entrada del menú <guimenuitem
+>Cambiar punto de interrupción</guimenuitem
+>.</para>
+ </formalpara>
+ <formalpara
+><title
+>Depuración avanzada</title>
+ <para
+>Otras entradas del menú <guimenu
+>Depurar</guimenu
+> permiten un análisis más sofisticado del programa. Utilice <keycombo
+><keycap
+>&Shift;</keycap
+><keycap
+>F1</keycap
+></keycombo
+> paraobtener más información sobre su propósito.</para>
+ </formalpara>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term
+><guimenu
+>Ventana</guimenu
+></term>
+ <listitem>
+ <para
+>Es un menú bastante estándar. Aquí puede seleccionar la ventana de cualquier documento abierto, así como cerrar una o más ventanas de documentos. También puede seleccionar un conjunto de ventanas de documentos para ser cerradas de una vez.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term
+><guimenu
+>Herramientas</guimenu
+></term>
+ <listitem>
+ <para
+>&tdevelop; es altamente configurable. Puede seleccionar su editor favorito para sus documentos así como proporcionar herramientas externas para extender las capacidades básicas del IDE. El menú <guimenu
+>Herramientas</guimenu
+> refleja gran parte de esta configuración.</para>
+ <formalpara
+><title
+>Edición avanzada</title>
+ <para
+>El conjunto superior de las entradas del menú <guimenu
+>Herramientas</guimenu
+> será proporcionado por la extensión del editor que esté usando. Puede seleccionar su editor favorito en <menuchoice
+><guimenu
+>Preferencias</guimenu
+> <guimenuitem
+>Configurar KDevelop...</guimenuitem
+> <guilabel
+>Editor</guilabel
+></menuchoice
+>. Tras seleccionar un archivo editable, la parte superior del menú <guimenu
+>Herramientas</guimenu
+> proporcionará comandos de edición avanzados específicos de su editor.</para>
+ </formalpara>
+ <formalpara
+><title
+>Manejo de documentos web</title>
+ <para
+>En caso de que la ventana del documento activo contenga una página HTML (&eg; mostrada a partir de una selección de <guilabel
+>Documentación</guilabel
+>), el menú <guimenu
+>Herramientas</guimenu
+> mostrará entradas adicionales que le proporcionarán varios métodos para manejar páginas web.</para>
+ </formalpara>
+ <formalpara
+><title
+>Otras herramientas</title>
+ <para
+>Normalmente existirá un buen número de otras entradas según las herramientas disponibles en cada momento. Utilice <keycombo
+><keycap
+>&Shift;</keycap
+><keycap
+>F1</keycap
+></keycombo
+> para obtener más información sobre su propósito.</para>
+ </formalpara>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term
+><guimenu
+>Preferencias</guimenu
+></term>
+ <listitem>
+ <para
+>Este menú le permite mostrar y ocultar la barra del menú, las barras de herramientas y la barra de estado. Además, puede configurar los accesos rápidos de teclado, las barras de herramientas, las notificaciones, el editor y el comportamiento general de KDevelop.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term
+><guimenu
+>Ayuda</guimenu
+></term>
+ <listitem>
+ <para
+>Aquí podrá abrir este manual de KDevelop, leer la documentación de Qt, abrir páginas «man» (el formato tradicional de manuales de UNIX) y páginas «info» (el formato de manual GNU), informar de fallos y obtener información sobre su versión de KDevelop y sus autores.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+</sect2
+> <!--gettingstarted-overview-menu-->
+
+</sect1
+> <!-- gettingstarted-overview -->
+
+<!--
+This is covered elsewhere, so unless someone convinces me that
+it is useful to have it here as well, I will eventually delete it. Volker Paul.
+
+<sect1 id="gettingstarted-configure">
+<title
+>A Bit of Configuration</title>
+
+<para
+>(- to be written -)</para>
+
+</sect1
+>
+
+ -->
+
+<sect1 id="gettingstarted-new">
+<title
+>Cómo comenzar un nuevo proyecto: el &appwizard;</title>
+
+<para
+>Trata de mostrarle lo fácil que es hacer que KDevelop cree un programa funcional.</para>
+
+<para
+>El <link linkend="applicationwizard"
+>&appwizard;</link
+> puede crear rápidamente un proyecto a partir de una lista de plantillas de proyectos predefinidos. Todo lo que tiene que hacer es seleccionar el tipo de proyecto que desea, nombrarlo y decidir en qué lugar de su disco situarlo. </para>
+
+<para
+>Seleccione Proyecto -> Nuevo proyecto. Aparecerá la ventana para crear un nuevo proyecto. Asumamos que desea crear un proyecto típico para KDE, de modo que deberá seleccionar: C++ - KDE - Aplicación de KDE sencilla. Introduzca el nombre, por ejemplo, «holamundo». La ubicación por omisión será /home/usuario/holamundo. Pulse «Adelante» cuando haya terminado con esta ventana. En la siguiente ventana puede establecer algunas opciones que han sido prefijadas a sus valores predeterminados. Pulse «Adelante». Se le mostrarán las plantillas para los archivos .h y .cpp. Puede dejarlas tal y como están y pulsar el botón «Finalizar». Verá el mensaje de que su programa ha sido creado. </para>
+
+<para
+>Para ejecutar su programa, seleccione Construir -> Ejecutar programa. Se mostrará un mensaje informando de que «automake» y sus programas relacionados deben ejecutarse en primer lugar. Pulse «Aceptar». Su programa será construido y ejecutado, con lo que verá aparecer la ventana de su nuevo programa con un mensaje que dice «Hola mundo». Ahora puede editar su programa y añadirle alguna funcionalidad más útil. </para>
+
+</sect1
+> <!-- gettingstarted-new -->
+
+<!--
+Again, this will be deleted, if nobody complains.
+
+<sect1 id="gettingstarted-edit">
+<title
+>Working With Documents</title>
+
+<para
+>(- to be written -)</para>
+
+<sect2 id="gettingstarted-edit-codecompletion">
+<title
+>How to Automate Some Typing Tasks</title>
+
+<para
+>(- to be written -)</para>
+
+</sect2
+>
+
+</sect1
+>
+
+
+<sect1 id="gettingstarted-compile">
+<title
+>How to Compile a Project</title>
+
+<para
+>(- to be written -)</para>
+
+<sect2 id="gettingstarted-compile-messages">
+<title
+>What the Messages Tell</title>
+
+<para
+>(- to be written -)</para>
+
+</sect2
+>
+
+</sect1
+>
+
+
+<sect1 id="gettingstarted-extend">
+<title
+>How to Extend a Project &mdash; the &automanag;</title>
+
+<para
+>(- to be written -)</para>
+
+<sect2 id="gettingstarted-extend-automake">
+<title
+>A Short Look at the Automake Machinery</title>
+
+<para
+>(- to be written -)</para>
+
+</sect2
+>
+
+<sect2 id="gettingstarted-extend-pics">
+<title
+>How to Place Icons in a Separate Directory</title>
+
+<para
+>(- to be written -)</para>
+
+</sect2
+>
+
+<sect2 id="gettingstarted-extend-class">
+<title
+>How to Add New Classes</title>
+
+<para
+>(- to be written -)</para>
+
+<caution
+><para>
+Be careful when you select your class file names. It is extremely difficult to change them later.
+</para
+></caution>
+
+</sect2
+>
+
+<sect2 id="gettingstarted-extend-subproject">
+<title
+>What is in a Subproject?</title>
+
+<para
+>(- to be written -)</para>
+
+<sect3 id="gettingstarted-extend-subproject-active">
+<title
+>Concentrate on Your Work &mdash; the Active Target</title>
+
+<para
+>(- to be written -)</para>
+
+</sect3
+>
+
+</sect2
+>
+
+<sect2 id="gettingstarted-extend-restructure">
+<title
+>Some Steps to Restructure a Project</title>
+
+<para
+>(- to be written -)</para>
+
+</sect2
+>
+
+
+</sect1
+>
+
+
+
+<sect1 id="gettingstarted-debug">
+<title
+>How to Debug</title>
+
+<para
+>(- to be written -)</para>
+
+</sect1>
+
+
+<sect1 id="gettingstarted-doc">
+<title
+>A Note on Documentation</title>
+
+<para
+>(- to be written -)</para>
+
+</sect1>
+-->
+</chapter>
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/nutshell.docbook b/tde-i18n-es/docs/tdevelop/tdevelop/nutshell.docbook
new file mode 100644
index 00000000000..6747f8ae87c
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/nutshell.docbook
@@ -0,0 +1,370 @@
+<appendix id="nutshell">
+<title
+>Principios básicos &mdash; Consejos y trucos</title>
+
+<!-- Traditionally, most of this stuff will have been put into a FAQ section. It is more useful, however, to put it at the very start of a manual, as this is the place the (inexperienced) user first looks for.
+
+I disagree. What is useful for a quick start, should go in "Getting started".
+Troubleshooting hints go in the appendix or a FAQ. Volker Paul.
+
+This chapter is meant to provide short hints and tips together with (mandatory) navigation links.
+There should be an additional FAQ section near the end nevertheless which contains more general stuff not directly related to navigating the manual. -->
+
+<para
+>La información de este capítulo ha sido concebida como una referencia rápida de comienzo o por si ha olvidado algún concepto básico momentáneamente. También contiene ayudas breves para solucionar algunos problemas comunes al trabajar con &tdevelop;. </para>
+<para
+>Si necesita más información sobre un tema, solo tiene que seguir el enlace del título al inicio de dicho consejo. </para>
+<para
+>Se dispone de información sobre estos temas: </para>
+<simplelist>
+ <member
+><link linkend="nutshellitem-look-and-feel"
+>Aspecto visual</link
+></member>
+ <member
+><link linkend="nutshellitem-projects"
+>Proyectos</link
+></member>
+ <member
+><link linkend="nutshellitem-compilation"
+>Compilación</link
+></member>
+ <member
+><link linkend="nutshellitem-automake"
+>&automanag;</link
+></member>
+ <member
+><link linkend="nutshellitem-compilemake"
+>Problemas de compilación y de make</link
+></member>
+ <member
+><link linkend="nutshellitem-others"
+>Otros temas</link
+></member>
+</simplelist>
+
+<variablelist id="nutshellitem-look-and-feel">
+<title
+>Aspecto visual</title>
+
+<varlistentry>
+<term id="nutshell-ideal-tabs"
+><link linkend="setup-ui-toolview"
+>Forzar pestañas de vistas de herramientas más pequeñas en el modo IDEAl</link
+></term>
+<listitem>
+<para
+>&tdevelop; se inicia de forma predeterminada con grandes pestañas basadas en texto para las herramientas alrededor del área de trabajo. Puede modificar este aspecto para, &eg;, ahorrar espacio en el diálogo de configuración de &tdevelop; (<menuchoice
+><guimenu
+>Preferencias</guimenu
+> <guimenuitem
+>Configurar KDevelop...</guimenuitem
+> <guimenuitem
+>Interfaz de usuario</guimenuitem
+></menuchoice
+>).</para>
+<para
+>Es posible que este diálogo de configuración no esté disponible si está usando una versión 3 antigua de &tdevelop;. Para modificar el modo en que se muestran las pestañas de herramientas de forma manual, ponga una entrada <option
+>MDIStyle</option
+> bajo la etiqueta <option
+>[UI]</option
+> en el archivo de configuración <filename
+>$KDEHOME/share/config/tdeveloprc</filename
+> del siguiente modo:</para>
+
+<simplelist>
+<member
+><option
+>MDIStyle=0</option
+>: solo iconos</member>
+<member
+><option
+>MDIStyle=1</option
+>: solo texto (predeterminado)</member>
+<!--<member
+><computeroutput
+>MDIStyle=2</computeroutput
+>: icons only on smaller tabs (not very useful)</member
+>-->
+<member
+><option
+>MDIStyle=3</option
+>: iconos y texto</member>
+</simplelist>
+</listitem>
+</varlistentry>
+
+<varlistentry
+> <!-- ### remove this entry when the bug is repaired -->
+<term id="nutshell-weird-style"
+>Caracteres mal coloreados y/o estilo de visualización incorrecto</term>
+<listitem>
+<para
+>Si nota letras aleatorias de color en algún lugar (&ie; en pestañas, en barras de herramientas, etc.) y la ventana de &tdevelop; parece utilizar un modo de visualización incorrecto, esto puede servirle de ayuda:</para>
+
+<itemizedlist>
+<listitem
+><para
+>Busque en su archivo de configuración <filename
+>$<envar
+>KDEHOME</envar
+>/share/config/tdeveloprc</filename
+> la línea que contiene <quote
+><computeroutput
+>Style=Checked</computeroutput
+></quote
+> y elimínela. Luego, reinicie &tdevelop;. </para>
+</listitem>
+</itemizedlist>
+<para
+>(Este comportamiento ocurre a veces cuando deja marcado un archivo .ui en uno de los navegadores de archivos y &tdevelop; carga <application
+>KUIViewer</application
+> para mostrar la &GUI; producida por dicho archivo).</para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term id="nutshell-full-screen"
+><link linkend="maximize-workspace"
+>Modo de pantalla completa</link
+></term>
+<listitem>
+<para
+>Seleccione <menuchoice
+><guimenu
+>Ver</guimenu
+><guimenuitem
+>Modo de pantalla completa</guimenuitem
+></menuchoice
+> en el menú o pulse <keycombo
+>&Ctrl;&Shift;<keycap
+>F</keycap
+></keycombo
+>.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term id="nutshell-hide-menu"
+><link linkend="maximize-workspace"
+>Ocultar/mostrar la barra de menú</link
+></term>
+<listitem>
+<para
+>Para ocultar la barra de menú seleccione <menuchoice
+><guimenu
+>Preferencias</guimenu
+><guimenuitem
+>Mostrar la barra de menú</guimenuitem
+></menuchoice
+> en el menú o pulse <keycombo
+>&Ctrl;<keycap
+>M</keycap
+></keycombo
+>. Para volver a mostrar la barra de menú solo dispone de <keycombo
+>&Ctrl;<keycap
+>M</keycap
+> </keycombo
+>.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+
+<variablelist>
+<title id="nutshellitem-projects"
+>Proyectos</title>
+<varlistentry>
+<term
+><link linkend="new-projects"
+>Crear un proyecto nuevo</link
+></term>
+<listitem>
+<para
+><menuchoice
+><guimenu
+>Proyecto</guimenu
+><guimenuitem
+>Nuevo proyecto...</guimenuitem
+></menuchoice
+> iniciará el <link linkend="applicationwizard"
+>&appwizard;</link
+>.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term id="nutshell-new-custom-project"
+>Crear un proyecto personalizado</term>
+<listitem>
+<para
+>No existe un modo de crear un proyecto personalizado (&ie;, un proyecto que no use sus propios «makefiles»). Utilice <menuchoice
+><guimenu
+>Proyecto</guimenu
+> <guimenuitem
+>Importar proyecto existente</guimenuitem
+></menuchoice
+> en su lugar. Recuerde establecer el <guilabel
+>Tipo de proyecto</guilabel
+> adecuado, etiquetado por un <quote
+>(«Makefiles» personalizados)</quote
+> adicional, en el diálogo.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term id="nutshell-project-options"
+>Use las opciones del proyecto cuanto antes</term>
+<listitem>
+<para
+>Cuando inicie un nuevo proyecto no olvide usar la opción del menú <menuchoice
+><guimenu
+>Proyecto</guimenu
+> <guimenuitem
+>Opciones del proyecto...</guimenuitem
+></menuchoice
+> según sus necesidades.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+
+<variablelist id="nutshellitem-compilation">
+<title
+>Compilación</title>
+<varlistentry>
+<term id="nutshell-compilemsg-detail"
+><link
+linkend="setup-main-compile"
+>Pérdida de detalles en los mensajes de compilación</link
+></term>
+<listitem>
+<para
+>Si durante las compilaciones nota que está perdiendo alguna información valiosa en la ventana de <guilabel
+>vista de la salida de mensajes</guilabel
+>, es posible que el nivel de detalle de mensajes sea demasiado bajo. Pulse con el &RMB; en la ventana y seleccione otro nivel de detalle en el menú de contexto. </para>
+</listitem>
+</varlistentry>
+</variablelist>
+
+<variablelist id="nutshellitem-automake">
+<title
+><link linkend="automake-manager"
+>&automanag;</link
+></title>
+
+<varlistentry>
+<term
+>Crear nuevos archivos en un proyecto</term>
+<listitem>
+<para
+>Seleccione el subproyecto en la parte superior del &automanag;, luego pulse con el &RMB; en la parte inferior sobre título de los grupos al que quiere añadir los archivos y seleccione <guimenuitem
+>Crear nuevo archivo...</guimenuitem
+></para>
+</listitem>
+</varlistentry>
+
+<varlistentry id="nutshell-add-project-file">
+<term
+>Añadir archivos existentes a un proyecto</term>
+<listitem>
+<para
+>Seleccione el subproyecto en la parte superior del &automanag;, luego pulse el &RMB; en la parte inferior sobre el título de los grupos al que quiere añadir los archivos y seleccione <guimenuitem
+>Añadir archivos existentes...</guimenuitem
+></para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+>Eliminar un archivo de un proyecto</term>
+<listitem>
+<para
+>Seleccione el subproyecto en la parte superior del &automanag;; luego, en la parte inferior, abra la lista de grupos de la que quiere eliminar el archivo y pulse el &RMB; sobre el archivo deseado y seleccione <guimenuitem
+>Eliminar</guimenuitem
+>.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+
+<variablelist id="nutshellitem-compilemake">
+<title
+>Problemas de compilación y de make</title>
+<varlistentry>
+<term id="nutshell-builddirproblems"
+><link
+linkend="defaultbuild-warning"
+>El proyecto no vuelve a construirse tras modificar el objetivo predeterminado</link
+></term>
+<listitem>
+<para
+>Existe un problema con el sistema &automake;/&autoconf;. <menuchoice
+> <guimenu
+>Proyecto</guimenu
+> <guimenuitem
+>Configuración de construcción</guimenuitem
+></menuchoice
+> proporciona la selección de tres directorios de construcción (<guimenuitem
+>predeterminado</guimenuitem
+>, <guimenuitem
+>optimizado</guimenuitem
+> y <guimenuitem
+>depuración</guimenuitem
+>), de cualquier modo fijado <emphasis
+>bien</emphasis
+> en el objetivo predeterminado <emphasis
+>o bien</emphasis
+> en los objetivos optimizado/depuración.</para>
+<itemizedlist>
+<listitem>
+<para
+>Una vez que haya configurado su proyecto con el modo predeterminado, no volverá a poder construirlo con los modos optimizado y depuración.</para>
+</listitem>
+<listitem>
+<para
+>Una vez que haya configurado su proyecto con el modo predeterminado o con el modo de depuración, no volverá a poder construirlo con el modo predeterminado.</para>
+</listitem>
+</itemizedlist>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term id="nutshell-autoconf-problem"
+>Error <quote
+>Versión de <command
+>autoconf</command
+> incorrecta</quote
+>, &etc;</term>
+<listitem>
+<para
+>Existen algunos mensajes de error relacionados con versiones muy antiguas de <application
+>autoconf</application
+>, &etc;, que impiden que <command
+>configure</command
+> funcione bien. Ejecute <command
+>autoreconf</command
+> en el árbol de directorios donde residen los archivos <filename
+>configure.in</filename
+> en cuestión. Este comando tratará de actualizar la información en los archivos del sistema de construcción &GNU;. Vea <command
+>man autoreconf</command
+> para obtener más información.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+
+<variablelist id="nutshellitem-others">
+<title
+>Otros temas</title>
+<varlistentry>
+<term id="nutshell-others-files"
+><link linkend="app-files"
+>Archivos de configuración usados por &tdevelop;</link
+></term>
+<listitem>
+<para
+>Normalmente no deberían preocuparle, pero es bastante útil conocerlos en caso de que algo vaya mal con su instalación.</para>
+</listitem
+>
+</varlistentry>
+</variablelist>
+
+</appendix
+> <!-- nutshell -->
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/project-advanced.docbook b/tde-i18n-es/docs/tdevelop/tdevelop/project-advanced.docbook
new file mode 100644
index 00000000000..ad15a7e4dc3
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/project-advanced.docbook
@@ -0,0 +1,111 @@
+<chapter id="projects-advanced">
+
+<chapterinfo>
+ <authorgroup>
+ <author
+><firstname
+>Bernd</firstname
+><surname
+>Pol</surname
+></author>
+ <!-- ROLES_OF_TRANSLATORS -->
+ </authorgroup>
+</chapterinfo>
+
+<title
+>Administración avanzada de proyectos</title>
+
+<sect1 id="oldprojects">
+<title
+>Carga de proyectos</title>
+
+<sect2 id="loading-recent-project">
+<title
+>Carga de proyectos usados recientemente</title>
+
+<para
+>(... pendiente de escribir ...) </para>
+
+<screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="open-recent-project.png" format="PNG"/>
+ </imageobject>
+ <caption
+><para
+>Cómo abrir un proyecto reciente </para
+></caption>
+ </mediaobject>
+</screenshot>
+
+
+</sect2
+> <!-- loading-recent-project -->
+
+<sect2 id="loading-project">
+<title
+>Carga de un proyecto existente</title>
+
+<para
+>(... pendiente de escribir ...) </para>
+</sect2
+> <!-- loading-project -->
+
+<sect2 id="converting-projects">
+<title
+>Conversión de archivos antiguos de proyectos de KDevelop</title>
+
+<para
+>&tdevelop; le permite abrir archivos de antiguos proyectos de KDevelop 2.x y convertirlos en archivos de &tdevelop;. Para ello, use la opción del menú <guimenuitem
+>Abrir proyecto...</guimenuitem
+> y seleccione <guilabel
+>Archivos de proyecto de KDevelop 2</guilabel
+> en el <guilabel
+>Filtro:</guilabel
+>. Seleccione luego el archivo de proyecto que desea abrir. El proyecto se convierte al formato de &tdevelop; y se guarda como <guilabel
+>archivo de proyecto de &tdevelop;</guilabel
+>. </para>
+
+</sect2
+> <!-- converting-projects -->
+
+<sect2 id="importing-projects">
+<title
+>Importar un proyecto existente</title>
+
+<para
+>Para importar una carpeta existente en &tdevelop; seleccione <guimenuitem
+>Importar carpeta existente</guimenuitem
+> en el menú <guimenu
+>Proyecto</guimenu
+>. Debería ver el asistente de importación de carpetas mostrado a continuación: </para>
+
+<figure id="screenshot-importdirectory" float="1">
+<title
+>El diálogo para importar una carpeta</title>
+<mediaobject>
+<imageobject
+><imagedata fileref="importdirectory.png"/></imageobject>
+</mediaobject>
+</figure>
+
+</sect2
+> <!-- importing-projects -->
+
+</sect1
+> <!-- oldprojects -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="project-options">
+<title
+>Adaptando el proyecto &mdash; Opciones del proyecto</title>
+
+<para
+>(... pendiente de escribir ...) </para>
+
+</sect1
+> <!-- project-options -->
+
+</chapter
+> <!-- projects-advanced -->
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/project-management.docbook b/tde-i18n-es/docs/tdevelop/tdevelop/project-management.docbook
new file mode 100644
index 00000000000..4bb1c7c79b3
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/project-management.docbook
@@ -0,0 +1,1259 @@
+<chapter id="project-management">
+
+<chapterinfo>
+ <authorgroup>
+ <author
+><firstname
+>Bernd</firstname
+><surname
+>Pol</surname
+></author>
+ <author
+><firstname
+>Ian</firstname
+><surname
+>Wadham</surname
+></author>
+ <!-- ROLES_OF_TRANSLATORS -->
+ </authorgroup>
+</chapterinfo>
+
+<title
+>Compilación y gestión de proyectos</title>
+
+<para
+>Este capítulo trata solo de proyectos compilados, como los de C++, &Java; o Fortran. Los proyectos para lenguajes de guiones, como Python y PHP, funcionan de un modo muy diferente. </para>
+
+<para
+>Aquí encontrará la siguiente información:</para>
+<itemizedlist>
+ <listitem
+><para
+><link linkend="automake-manager-summary"
+>Sumario de &automanag;</link
+>, que contiene una introducción a &automanag;, </para
+></listitem>
+ <listitem
+><para
+><link linkend="automake-manager-operation"
+>Funcionamiento del gestor de automake</link
+>, que describe de forma básica cómo trabajar con &automanag;, </para
+></listitem>
+</itemizedlist>
+
+<sect1 id="automake-manager-summary">
+<title
+>Sumario de &automanag;</title>
+
+<para
+>En el capítulo sobre <link linkend="unixdev-buildsystems"
+>sistemas de construcción</link
+> vimos una breve introducción sobre los sistemas de construcción más usados en los entornos &UNIX;. En las siguientes secciones veremos esto con más detalle. </para>
+<para
+>Existe cierta confusión sobre cómo denominar esto. &GNU; los llama «sistemas de construcción» cuando describen Automake, Autoconf y Libtool. QMake se refiere a sí mismo como «una herramienta para escribir Makefiles para diferentes compiladores y plataformas». En &kde; se usa a menudo el término «sistemas de gestión de proyectos». Nosotros usaremos este término en un sentido más amplio para describir los entornos integrados que &tdevelop; utilizará para organizar y construir sus proyectos. De todos modos, en el contexto de esta sección, hablaremos principalmente sobre «sistemas de construcción automatizados». </para>
+
+<sect2 id="automake-manager-summary-buildsys">
+<title
+>La necesidad de un sistema de construcción automatizado</title>
+
+<para
+>Si tiene un sencillo programa «Hola mundo» escrito en C, puede compilarlo y enlazarlo usando &gcc; <parameter
+>-o hola hola.c</parameter
+> y ejecutarlo usando el comando <command
+>./hola</command
+>, por lo que no necesitará un archivo <filename
+>Makefile</filename
+>. </para>
+<para
+>Si tiene una aplicación en C con varios módulos y archivos de cabecera y solo pretende ejecutarla en su propia máquina (&ie;, se trata de una aplicación doméstica), solo necesitará un sencillo <filename
+>Makefile</filename
+>, que es bastante fácil de escribir a mano (use <userinput
+>info make</userinput
+> para ver cómo hacerlo). </para>
+<para
+>Los problemas empiezan cuando: </para>
+<itemizedlist>
+ <listitem
+><para
+>Su código fuente, documentación, gráficos, sonidos, traducciones, archivos de datos, &etc;, se encuentran situados en más de una carpeta, </para
+></listitem>
+ <listitem
+><para
+>Tiene una jerarquía de carpetas y subcarpetas, </para
+></listitem>
+ <listitem
+><para
+>Está usando bibliotecas que no son parte del juego tradicional de &UNIX;, como la biblioteca de código objeto de &Qt; o las bibliotecas del escritorio &kde;, </para
+></listitem>
+ <listitem
+><para
+>Está usando un preprocesador para generar parte de su código fuente, como el precompilador MOC de Qt, </para
+></listitem>
+ <listitem
+><para
+>Pretende distribuir su aplicación a todo el mundo, a personas que puede que no tengan el mismo sistema &UNIX;/&Linux;, software o hardware que usted, </para
+></listitem>
+ <listitem
+><para
+>Necesita una utilidad de instalación y desinstalación automática, </para
+></listitem>
+ <listitem
+><para
+>Pretende que su aplicación sea parte del escritorio &kde;. </para
+></listitem>
+</itemizedlist>
+
+<para
+>Si se encuentra en una o varias de las situaciones anteriores, probablemente necesite un <emphasis
+>sistema de construcción</emphasis
+>. En el ejemplo anterior hemos usado &gcc; para compilar y construir el programa «Hola mundo», pero no todos los compiladores de C se llaman «&gcc;». De modo que si distribuye su aplicación a alguien que utilice otro compilador de C distinto, su Makefile debe usar de algún modo el nombre del compilador de esta persona, o en caso contrario su aplicación no podrá ser compilada (y esto solo es un sencillo ejemplo de lo que puede ir mal). </para>
+<para
+>Un sistema de construcción se encargará de allanar estas diferencias por usted. </para>
+<itemizedlist>
+ <listitem
+><para
+>Comprobará que las bibliotecas que necesita estén presentes en cada máquina de destino, </para
+></listitem>
+ <listitem
+><para
+>recorrerá automáticamente todas las carpetas de su aplicación en busca de archivos para preprocesar, compilar o instalar, y </para
+></listitem>
+ <listitem
+><para
+>también instalará los componentes de su aplicación en las carpetas de destino correctas, asegurándose de que </para
+></listitem>
+ <listitem
+><para
+>las carpetas sean creadas en la máquina de destino cuando sea necesario. </para
+></listitem>
+</itemizedlist>
+
+<para
+>En breve, un sistema de construcción ofrece métodos seguros para que su aplicación pueda ser compilada e instalada correctamente en cualquier máquina de destino. Como hemos mostrado anteriormente en la sección <link linkend="makesystems"
+>Sistemas de gestión de proyectos</link
+>, &tdevelop; ofrece tres sistemas de construcción automatizados y la posibilidad de crear su propio Makefile (pulse sobre los nombres de proyecto para obtener más información): </para>
+<itemizedlist>
+ <listitem
+><para
+><link linkend="automake-project"
+>Proyectos automake</link
+> que utilizan las herramientas de desarrollo estándar de &GNU;. </para
+></listitem>
+ <listitem
+><para
+><link linkend="qmake-project"
+>Proyectos QMake</link
+> que utilizan el gestor de proyectos QMake de Trolltech. </para
+></listitem>
+ <listitem
+><para
+><link linkend="ant-project"
+>Proyectos ANT</link
+> que utilizan el gestor de proyectos ANT de Apache para desarrollos en &Java;. </para
+></listitem>
+ <listitem
+><para
+><link linkend="custom-project"
+>Proyectos personalizados</link
+> que necesitan que usted mantenga sus propios <filename
+>Makefiles</filename
+>. </para
+></listitem>
+</itemizedlist>
+
+<important>
+<para
+>Debe seleccionar una de estas cuatro alternativas cuando cree un proyecto, pero <emphasis
+>esta elección es difícil de cambiar después</emphasis
+>, por lo que debería tenerlo en cuenta antes de comenzar. </para>
+</important>
+
+</sect2
+> <!-- automake-manager-summary-buildsys -->
+
+<sect2 id="automake-references">
+<title
+>Manuales sobre Autoconf/Automake/Libtool</title>
+<para
+>Existen varios manuales disponibles sobre el sistema de construcción de &GNU; (<command
+>Autoconf</command
+>, <command
+>Automake</command
+> y <command
+>Libtool</command
+>) que utiliza &automanag;. </para>
+<itemizedlist>
+ <listitem
+><para
+>Un corto <ulink url="http://www.tdevelop.org/index.html?filename=tutorial_autoconf.html"
+>manual de autoconf</ulink
+> escrito por Christopher W. Curtis se encuentra disponible en la página web de &tdevelop;. Se concentra en algunos pasos básicos para modificar un <filename
+>Makefile</filename
+>. </para
+></listitem>
+ <listitem
+><para
+>Un manual más detallado se puede encontrar en la extensa colección de manuales existente en <ulink url="http://www.amath.washington.edu/~lf/tutorials/autoconf/toolsmanual_toc.html"
+>«Desarrollo de software con GNU»</ulink
+>. </para
+></listitem>
+ <listitem
+><para
+>Y también existe el famoso <ulink url="http://sources.redhat.com/autobook"
+>«libro para novatos»</ulink
+> titulado «Autoconf, Automake, y Libtool». Se trata de una introducción concisa y fácil de leer sobre todos los puntos principales de las herramientas &GNU;. </para
+></listitem>
+</itemizedlist>
+
+</sect2
+> <!-- automake-references -->
+
+<sect2 id="automake-manager-basics">
+<title
+>¿Qué hace &automanag;?</title>
+
+<para
+>El <link linkend="applicationwizard"
+>&appwizard;</link
+> habrá preparado algunos archivos <filename
+>Makefile.am</filename
+> iniciales tras crear un <guilabel
+>Nuevo proyecto</guilabel
+> que utilice el sistema de construcción de &GNU;, como <menuchoice
+><guimenuitem
+>C++</guimenuitem
+> <guimenuitem
+>KDE</guimenuitem
+> <guimenuitem
+>Infraestructura de aplicación</guimenuitem
+></menuchoice
+>. Durante el desarrollo, &automanag; crea el resto de archivos <filename
+>Makefile.am</filename
+> en los proyectos que usan el sistema de construcción de &GNU;, y los mantiene de modo parecido a como los creó el &appwizard; y &automanag;. </para>
+<para
+>Solo habrá un <filename
+>Makefile.am</filename
+> en cada carpeta de su proyecto, y contendrá los archivos que se van a compilar o a instalar. También contendrá sus opciones de compilación, creación e instalación de archivos, y una referencia a cualquier subcarpeta que también contenga otro <filename
+>Makefile.am</filename
+> y, posiblemente, más archivos para compilar, construir e instalar. </para>
+
+<note
+><para
+>Las carpetas de su proyecto y los archivos de código fuente pueden estar contenidos en una estructura de cualquier profundidad, o tal vez prefiera una estructura de proyecto plana, con todas las subcarpetas en el nivel superior. </para
+></note>
+
+<para
+>El propósito del sistema de construcción de &GNU; es la generación de estructuras de archivos de código fuente que puedan ser compilados, construidos e instalados en cualquier sistema &UNIX; o &Linux; mediante el uso de los sencillos comandos: </para>
+
+<screen
+>./configure
+make
+make install # normalmente como «root».
+</screen>
+
+<para
+>y que puedan ser desinstalados posteriormente mediante el uso del comando <command
+>make uninstall</command
+> (normalmente como «root»). </para>
+
+<para
+>¿Cómo funciona esto? Bien, <command
+>configure</command
+> es un guión que <itemizedlist>
+ <listitem
+><para
+>decide los detalles de cualquier sistema en el que se ejecuta, como qué compilador y bibliotecas se deben usar y dónde están situados, y luego </para
+></listitem>
+ <listitem
+><para
+>crea archivos <filename
+>Makefile</filename
+> recursivos rellenando los campos a sustituir en los correspondientes archivos <filename
+>Makefile.in</filename
+>. </para
+></listitem>
+</itemizedlist>
+</para>
+<para
+>Los <filename
+>Makefile.in</filename
+> son archivos de «entrada» (plantillas que proporcionan información básica para los <filename
+>Makefile</filename
+>s que se deben obtener de ellos rellenando cierta información dependiente del sistema). Son generados por la utilidad <command
+>automake</command
+> a partir de los archivos <filename
+>Makefile.am</filename
+>. </para>
+<para
+>El proceso de ir desde <filename
+>Makefile.am</filename
+> (<filename
+>.am</filename
+> indica que se trata de archivos de plantilla para «automake») hasta los archivos <filename
+>Makefile</filename
+> se gestiona automáticamente por el &promanag; de &tdevelop;, usando la utilidad <command
+>autoconf</command
+>, macros <command
+>M4</command
+> y otros procesos arcanos que no necesitamos conocer aquí. </para>
+<para
+>De modo que, cuando se ejecuta <command
+>make</command
+>, se recogen automáticamente las piezas necesarias del entorno actual, como compiladores y bibliotecas. Del mismo modo, <command
+>make install</command
+> sitúa los componentes de su aplicación (como ejecutables, documentación y archivos de datos) en los lugares correctos de ese entorno. </para>
+
+<para
+>Si distribuye su aplicación como un «tarball» (un único archivo comprimido que &tdevelop; puede crear por usted), se incluirán los archivos <filename
+>Makefile.in</filename
+> y el guión <filename
+>configure</filename
+>, de modo que el receptor pueda compilar, construir e instalar su aplicación sin necesidad de tener <command
+>automake</command
+>, <command
+>autoconf</command
+> ni &tdevelop; en su máquina. Los archivos <filename
+>Makefile.am</filename
+> también se incluyen, pero solo para el caso de que el receptor necesite realizar alguna modificación en el código fuente. </para>
+<note
+><para
+>Las reglas son algo distintas si decide distribuir su código fuente mediante un repositorio basado en la web, como &cvs;. </para
+></note>
+
+</sect2
+> <!-- automake-manager-basics -->
+
+<sect2 id="automake-manager-basics-summary">
+<title
+>Sumario de lo que hace el gestor Automake</title>
+
+<itemizedlist>
+ <listitem
+><para
+>Genera archivos <filename
+>Makefile.am</filename
+> en subcarpetas que se conocen como «subproyectos». </para
+></listitem>
+ <listitem
+><para
+>Actualiza los archivos <filename
+>Makefile.am</filename
+> cuando cambia la estructura del proyecto. </para
+></listitem>
+ <listitem
+><para
+>Actualiza los archivos <filename
+>Makefile.am</filename
+> cuando se añaden o eliminan archivos del proyecto. </para
+></listitem>
+ <listitem
+><para
+>Acepta definiciones sobre cómo se deben construir o instalar los diferentes archivos y modifica los archivos <filename
+>Makefile.am</filename
+> de acuerdo con esta información. </para
+></listitem>
+ <listitem
+><para
+>Acepta parámetros usados durante la construcción o instalación (&eg;, nombres de bibliotecas), y se asegura de que sean usados durante los procesos de compilación y construcción. </para
+></listitem>
+</itemizedlist>
+
+</sect2
+> <!-- automake-manager-basics-summary -->
+
+<sect2 id="automake-file-contents">
+<title
+>Contenido de los archivos de automake</title>
+
+<para
+>Un archivo <filename
+>Makefile.am</filename
+> contiene líneas con nombres de variables seguidas por un signo de igualdad y una lista de archivos o parámetros. Los nombres de las «variables» constan de dos partes, como <varname
+>bin_PROGRAMS</varname
+>, <varname
+>myapp_SOURCES</varname
+> o <varname
+>kdelnk_DATA</varname
+>. La segunda parte es la <emphasis
+>principal</emphasis
+>, y representa algo de donde se debe construir o instalar. La primera parte se conoce como <emphasis
+>prefijo</emphasis
+> y representa: </para>
+<itemizedlist>
+ <listitem
+><para
+>Una <emphasis
+>carpeta</emphasis
+> donde realizar la instalación (&eg;, <filename
+>bin</filename
+>), </para
+></listitem>
+ <listitem
+><para
+>Un <emphasis
+>calificador</emphasis
+> primario (&eg;, <varname
+>myapp</varname
+>, para <varname
+>SOURCES</varname
+>, que indica que los archivos de código fuente listados a continuación de <varname
+>myapp_SOURCES</varname
+> sirven para construir <filename
+>myapp</filename
+>), </para
+></listitem>
+ <listitem
+><para
+>Un <emphasis
+>prefijo</emphasis
+> especial <varname
+>noinst</varname
+> (de «no instalar»), que se usa normalmente para listar los archivos de cabecera del programa (<filename
+>.h</filename
+>), </para
+></listitem>
+ <listitem
+><para
+>O el prefijo especial <varname
+>EXTRA</varname
+>, para cosas <emphasis
+>dependientes de la configuración</emphasis
+>. </para
+></listitem>
+</itemizedlist>
+
+<para
+>Para más información sobre <command
+>Automake</command
+> y los archivos <filename
+>Makefile.am</filename
+>, consulte <userinput
+>info Automake</userinput
+>. </para>
+<para
+>Básicamente, &automanag; crea y actualiza los nombres de variable y las listas de archivos y de parámetros. Observe el siguiente ejemplo de un <filename
+>Makefile.am</filename
+> de una aplicación típica, llamada <filename
+>myapp</filename
+>. </para>
+
+<screen
+>## Makefile.am para myapp
+
+# este es el programa que se instala; su nombre se usa en las variables
+# del resto de archivos Makefile.am
+bin_PROGRAMS = myapp
+
+# ruta de inclusión para X, qt y KDE
+INCLUDES = $(all_includes)
+
+# ruta donde buscar las bibliotecas
+myapp_LDFLAGS = $(KDE_RPATH) $(all_libraries)
+
+# las bibliotecas con las que enlazar
+myapp_LDADD = $(LIB_KFILE) $(LIB_TDEPRINT)
+
+# archivos de código fuente que se van a compilar para myapp
+myapp_SOURCES = main.cpp myapp.cpp myappview.cpp
+
+# estas son las cabeceras de su proyecto
+noinst_HEADERS = myapp.h myappview.h
+
+# dejar que automoc se haga cargo de los archivos de metadatos (moc)
+METASOURCES = AUTO
+
+KDE_ICON = myapp
+
+# aquí es donde irá el archivo de enlace para KDE
+kdelnkdir = $(kde_appsdir)/Utilities
+kdelnk_DATA = myapp.desktop
+
+# aquí es donde irá el archivo de recursos XML para la interfaz gráfica
+rcdir = $(kde_datadir)/myapp
+rc_DATA = myappui.rc
+
+AM_CXXFLAGS = -DMY_C++_PREPROCESSOR_OPTION
+</screen>
+
+<para
+>Como puede ver, muchos de los elementos de la parte de la derecha son símbolos con el formato <varname
+>$(xxx)</varname
+>. Se trata de <emphasis
+>variables de entorno</emphasis
+> que están definidas en el entorno real de &kde; y que se sustituyen por sus valores reales cuando <command
+>./configure</command
+> genera los archivos <filename
+>Makefile</filename
+> finales en la máquina de destino. </para>
+
+<para
+>Además, tras trabajar durante algún tiempo con &tdevelop;, es una buena idea ejecutar el comando <command
+>./configure --help</command
+>, que le mostrará la cantidad de cosas que puede cambiar durante los procesos de construcción e instalación, como para disponer de un entorno de pruebas. En particular, el comando: <screen>
+./configure --prefix=/donde/usted/quiera
+</screen
+> hará que toda la instalación se realice en una estructura de carpetas de su elección, cambiando para ello la variable interna <varname
+>$(prefix)</varname
+> al valor <filename class="directory"
+>/donde/usted/quiera</filename
+>. </para>
+
+</sect2
+> <!-- automake-file-contents -->
+
+</sect1
+> <!-- automake-manager-summary -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="automake-manager-operation">
+<title
+>Operación del gestor de Automake</title>
+
+<para
+>En este capítulo encontrará una descripción básica sobre los elementos de &automanag; y sobre cómo usarlos. Esto cubre: <itemizedlist>
+ <listitem
+><para
+><link linkend="automake-manager-operation-window"
+>La ventana de &automanag;</link
+> describe la estructura básica de la ventana principal de &automanag;. </para
+></listitem>
+ <listitem
+><para
+><link linkend="automake-manager-operation-survey-window"
+>La ventana de vista general</link
+> describe los elementos de la ventana de la parte superior. </para
+></listitem>
+ <listitem
+><para
+><link linkend="automake-manager-operation-detail-window"
+>La ventana de vista detallada</link
+> describe los elementos de la ventana de la parte inferior. </para
+></listitem>
+ <listitem
+><para
+><link linkend="automake-manager-operation-navigate"
+>Navegación a través de &automanag;</link
+> lista algunas operaciones básicas que puede realizar en el &automanag;. </para
+></listitem>
+ <listitem
+><para
+><link linkend="automake-manager-operation-popups"
+>Menús desplegables del &automanag;</link
+> describe las ventanas que aparecerán cuando seleccione una acción en el &automanag;. </para
+></listitem>
+</itemizedlist>
+</para>
+
+<sect2 id="automake-manager-operation-window">
+<title
+>La ventana de &automanag;</title>
+
+<informaltable frame="none">
+<tgroup cols="2"
+><tbody
+><row>
+ <entry
+><inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="automakemanager.png" format="PNG"/>
+ </imageobject>
+ </inlinemediaobject
+></entry>
+ <entry valign="top"
+><itemizedlist>
+ <listitem
+><para
+>&automanag; se ejecuta en una ventana dividida en dos partes: la parte superior se llama <emphasis
+>vista general</emphasis
+>, y la inferior <emphasis
+>vista detallada</emphasis
+>. Entre ambas existe una estrecha barra que se puede arrastrar con el ratón para ajustar el tamaño de las vistas. En el modo IDEAl también puede arrastrar el borde de la ventana para ajustar su anchura. </para
+></listitem>
+ <listitem
+><para
+>En la parte superior de cada vista existe una <emphasis
+>barra de herramientas</emphasis
+>, los botones que se activarán cuando seleccione un elemento de su vista. Esto proporciona un modo de acceder a las acciones ofrecidas para dicho elemento de la vista. El resto son los menús de contexto, que aparecerán cuando pulse con el botón derecho del ratón, como se describirá a continuación. </para
+></listitem>
+ <listitem
+><para
+>En el modo IDEAl existen dos pequeños botones adicionales en la parte izquierda de la barra de título de la ventana de &automanag;: una flecha hacia la derecha de forma triangular y un botón en forma de punto. El botón de la flecha se usa para <emphasis
+>cerrar la ventana</emphasis
+>. El botón del punto, por el contrario, <emphasis
+>mantendrá la ventana abierta</emphasis
+> incluso si se selecciona otra ventana de &tdevelop; (de otro modo, la ventana de &automanag; se cerrará automáticamente cuando otra ventana pase al primer plano). </para
+></listitem>
+ </itemizedlist
+></entry>
+</row
+></tbody
+></tgroup>
+</informaltable>
+
+</sect2
+> <!-- automake-manager-operation-window -->
+
+<sect2 id="automake-manager-operation-survey-window">
+<title
+>La ventana de vista general</title>
+
+<para
+>La ventana de vista general contiene una lista en forma de árbol con todas las carpetas de su proyecto que contengan archivos del programa, documentación o datos. Cada subcarpeta contiene un archivo <filename
+>Makefile.am</filename
+> y se conoce en &automanag; como un <emphasis
+>subproyecto</emphasis
+>. Típicamente existen tres subproyectos en un proyecto de &kde;, como se muestra en la ilustración: </para>
+
+<itemizedlist>
+ <listitem
+><para
+><filename
+>src</filename
+> &ndash; los archivos de código fuente de su aplicación, </para
+></listitem>
+ <listitem
+><para
+><filename
+>doc</filename
+> &ndash; su manual de usuario, </para
+></listitem>
+ <listitem
+><para
+><filename
+>po</filename
+> &ndash; las cadenas de texto de su código fuente que necesitan traducción a otros idiomas (&eg;, títulos de ventanas, opciones de menú, etiquetas de botones, textos de diálogos y mensajes de varios tipos). </para
+></listitem>
+</itemizedlist>
+
+<para
+>Observe que el subproyecto <filename
+>doc</filename
+> siempre contiene un subproyecto <filename
+>en</filename
+>, que podrá ver si pulsa sobre el símbolo <symbol
+>+</symbol
+> que hay junto a la palabra <filename
+>doc</filename
+>. Esto se debe a que el idioma básico para toda la documentación de &kde; es el inglés de los Estados Unidos («en»). Si su aplicación se convierte en parte de &kde;, los equipos de traducción de &kde; podrán traducir su documentación en inglés de los Estados Unidos a otros idiomas, que acabarán residiendo en otros subproyectos, como <filename
+>es</filename
+> (para el español) o <filename
+>fr</filename
+> (para el francés). Las cadenas de texto del subproyecto <filename
+>po</filename
+> permiten que su aplicación pueda ser manejada por personas que no conozcan el idioma inglés. </para>
+
+<note
+><para
+>Los subproyectos <filename
+>doc</filename
+> y <filename
+>po</filename
+> sirven para diferentes propósitos: <filename
+>doc</filename
+> contiene <emphasis
+>documentación</emphasis
+> (como el manual del usuario), mientras que <filename
+>po</filename
+> contiene cadenas de texto para traducir procedentes de la <emphasis
+>interfaz de usuario</emphasis
+>, que está integrada en el código fuente de la aplicación. </para
+></note>
+
+<para
+>La ventana de vista general sirve (entre otras cosas) como herramienta de navegación. Si selecciona un subproyecto en la ventana de vista general, se mostrarán sus detalles correspondienes en la ventana de vista detallada. </para>
+
+</sect2
+> <!-- automake-manager-operation-survey-window -->
+
+<sect2 id="automake-manager-operation-detail-window">
+<title
+>La ventana de vista detallada</title>
+
+<para
+>La vista detallada contiene una lista en forma de árbol de todos los archivos del subproyecto actualmente seleccionado en la ventana de vista general, además de las reglas de compilación, construcción e instalación para este subproyecto. De este modo, ambas vistas le proporcionan acceso a todos los componentes de su aplicación y a toda la información sobre cómo compilarla, construirla e instalarla. </para>
+
+<sect3>
+<title
+>Objetivos</title>
+
+<para
+>La lista de árbol de la ventana detallada posee dos niveles. El nivel superior contiene lo que se denomina <emphasis
+>objetivos</emphasis
+> de &automanag;, y el siguiente nivel contiene listas de archivos que definen cada objetivo. </para>
+
+<para
+>Este concepto de un objetivo en &automanag; difiere algo de lo que se entiende por un objetivo en un <filename
+>Makefile</filename
+>. En breve:</para>
+<itemizedlist>
+ <listitem
+><para
+>La definición sobre cómo un conjunto de archivos se debe compilar, construir o instalar se conoce como <emphasis
+>objetivo</emphasis
+> en &automanag;, aunque en <command
+>automake</command
+> se denomina <emphasis
+>variable</emphasis
+>. </para
+></listitem>
+ <listitem
+><para
+>Un <emphasis
+>objetivo</emphasis
+> de <command
+>make</command
+> es normalmente algo bastante distinto, como por ejemplo el parámetro de un comando <command
+>make</command
+> (por ejemplo, <userinput
+>make install</userinput
+> o <userinput
+>make clean</userinput
+>). </para>
+ <para
+>No obstante, algunas variables de <filename
+>Makefile.am</filename
+> representan a un <emphasis
+>subobjetivo</emphasis
+> subyacente en <command
+>make</command
+>. </para
+></listitem>
+</itemizedlist>
+
+</sect3>
+</sect2
+> <!-- automake-manager-operation-detail-window -->
+
+<sect2 id="automake-manager-operation-navigate">
+<title
+>Navegación en &automanag;</title>
+
+<para
+>Tanto en la ventana de vista general como en la detallada, puede pulsar sobre los símbolos <symbol
+>+</symbol
+> o <symbol
+>-</symbol
+> que hay junto al nombre de un subproyecto o de un objetivo para desplegar o plegar su vista en árbol. Si hace esto con un <emphasis
+>subproyecto</emphasis
+> en la ventana de vista general, se mostrarán u ocultarán los subproyectos del siguiente nivel (si existen). Si lo hace sobre un <emphasis
+>objetivo</emphasis
+> en la vista detallada, se mostrará u ocultará la lista de archivos de dicho objetivo. </para>
+
+<variablelist>
+<varlistentry>
+<term
+>Abrir un archivo para editarlo</term>
+<listitem>
+<para
+>Si <emphasis
+>pulsa con el botón izquierdo del ratón</emphasis
+> sobre el nombre de un archivo en la vista detallada, se abrirá su correspondiente archivo en la ventana de edición de &tdevelop;.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+>Activación de los botones de la barra de herramientas de &automanag;</term>
+<listitem>
+<para
+>Si <emphasis
+>pulsa con el botón izquierdo del ratón</emphasis
+> sobre el nombre de un subproyecto en la ventana de vista general, se resaltará su nombre y se activarán algunos botones en la barra de herramientas que hay en la parte superior de la vista.</para>
+
+<note>
+ <para
+>Se le recomienda que utilice el <emphasis
+>botón derecho del ratón y los menús de contexto</emphasis
+> en lugar de los botones de la barra de herramientas, ya que así le resultará mucho más fácil ver y comprender lo que está haciendo. </para>
+ <para
+>Las operaciones realizadas sobre los subproyectos y sobre los objetivos producen efectos sobre la estructura, compilación, construcción e instalación de su aplicación. </para>
+</note>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+>Selección de acciones/menús desplegables</term>
+<listitem>
+<para
+>Si <emphasis
+>pulsa con el botón derecho del ratón</emphasis
+> sobre el nombre de un subproyecto, objetivo o archivo, se le mostrará un menú desplegable donde podrá seleccionar las acciones a realizar sobre el subproyecto, objetivo o archivo, como añadir un objetivo al subproyecto, añadir un archivo al objetivo, o eliminar el archivo seleccionado de su objetivo. </para>
+</listitem>
+</varlistentry>
+</variablelist>
+
+</sect2
+> <!-- automake-manager-operation-navigate -->
+
+<sect2 id="automake-manager-operation-popups">
+<title
+>Menús desplegables de &automanag;</title>
+
+<para
+>Las siguientes secciones explican brevemente qué operaciones permiten los menús que se mostrarán al pulsar con el botón derecho en la ventana del &automanag;. Se refieren únicamente a la ventana de vista general. Encontrará descripciones más detalladas de la mayor parte de las operaciones posibles en un capítulo posterior. </para>
+<!-- ### add a link to this chapter when ready -->
+
+<sect3 id="automake-manager-operation-popups-file">
+<title
+>El menú desplegable para un archivo</title>
+
+<para
+>Cuando pulse con el botón derecho del ratón sobre un <emphasis
+>nombre de archivo</emphasis
+> en la vista detallada se le mostrará el siguiente menú, que le permitirá seleccionar una de entre varias operaciones a realizar sobre dicho archivo. En la ilustración inferior el icono del archivo <filename
+>hi-16app-myapp.png</filename
+> ha sido seleccionado en el objetivo <guilabel
+>Datos de icono de myapp</guilabel
+> perteneciente al subproyecto <guilabel
+>myapp/src</guilabel
+>. </para>
+
+<informaltable frame="none">
+<tgroup cols="2"
+><tbody
+><row>
+ <entry
+><inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="automake-file-popup.png" format="PNG"/>
+ </imageobject>
+ </inlinemediaobject
+></entry>
+ <entry valign="bottom"
+><itemizedlist>
+ <listitem
+><para
+>El principal elemento del menú desplegable para este archivo es <guimenuitem
+>Eliminar</guimenuitem
+> el archivo de su objetivo (es decir, que no vuelva a utilizarse para compilar, construir o instalar su objetivo). </para
+></listitem>
+ <listitem
+><para
+>El elemento <guimenuitem
+>CVS</guimenuitem
+> ofrece varias operaciones CVS sobre el archivo. </para
+></listitem>
+ <listitem
+><para
+>El elemento <guimenuitem
+>Abrir con</guimenuitem
+> le permite abrir el archivo con una variedad de editores o con cualquier otra aplicación (por ejemplo, puede abrir el archivo de icono de nuestro ejemplo con <application
+>KIcon</application
+>). </para
+></listitem>
+ <listitem
+><para
+>El elemento <guimenuitem
+>Perforce</guimenuitem
+> se utiliza para operaciones similares a las de CVS, pero utilizando en su lugar el sistema de control de versiones comercial «<application
+>Perforce</application
+>». </para
+></listitem>
+ </itemizedlist
+></entry>
+</row
+></tbody
+></tgroup>
+</informaltable>
+
+</sect3
+> <!-- automake-manager-operation-popups-file -->
+
+<sect3 id="automake-manager-operation-popups-target">
+<title
+>El menú desplegable para un objetivo</title>
+
+<para
+>Cuando pulse con el botón derecho sobre un <emphasis
+>objetivo</emphasis
+> de la vista detallada se le mostrará el siguiente menú emergente, que le permite seleccionar una de entre varias operaciones a realizar sobre él. En la imagen inferior se ha seleccionado el objetivo <guilabel
+>myapp (Programa en bin)</guilabel
+> del subproyecto <guilabel
+>myapp/src</guilabel
+>. </para>
+
+<informaltable frame="none">
+<tgroup cols="2"
+><tbody
+><row>
+ <entry
+><inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="automake-target-popup.png" format="PNG"/>
+ </imageobject>
+ </inlinemediaobject
+></entry>
+ <entry valign="bottom"
+><itemizedlist>
+ <listitem
+><para
+>El elemento <guimenuitem
+>Opciones</guimenuitem
+> de un objetivo sólo es aplicable a los archivos de código fuente. El el diálogo correspondiente puede especificar los modificadores para el enlazador, las rutas donde encontrar bibliotecas e incluso proporcionar una lista de las bibliotecas reales que se deben enlazar con su aplicación. </para
+></listitem>
+ <listitem
+><para
+>El elemento <guimenuitem
+>Crear nuevo archivo</guimenuitem
+> muestra un diálogo en el que puede introducir el nombre del archivo que se generará y su tipo (de entre los disponibles en una lista desplegable). </para
+></listitem>
+ <listitem
+><para
+>El elemento <guimenuitem
+>Añadir archivos existentes</guimenuitem
+> muestra un diálogo mediante el que puede añadir un archivo existente a este objetivo. </para
+></listitem>
+ <listitem
+><para
+>El elemento <guimenuitem
+>Eliminar</guimenuitem
+> de un objetivo le permite eliminar de manera virtual dicho objetivo y todos sus archivos de la estructura del proyecto. </para
+></listitem>
+ <listitem
+><para
+>El elemento <guimenuitem
+>Convertir en objetivo activo</guimenuitem
+> sólo es aplicable a los objetivos que contengan archivos de código fuente. Los archivos nuevos siempre se añadirán al objetivo activo. </para
+></listitem>
+ <listitem
+><para
+>El elemento <guimenuitem
+>Construir objetivo</guimenuitem
+> se encarga de llamar a todas las operaciones de compilación necesarias para construir el código del objetivo seleccionado. </para
+></listitem>
+ </itemizedlist
+></entry>
+</row
+></tbody
+></tgroup>
+</informaltable>
+
+</sect3
+> <!-- automake-manager-operation-popups-target -->
+
+<sect3 id="automake-manager-operation-popups-subproject">
+<title
+>El menú desplegable para un subproyecto</title>
+
+<para
+>Cuando pulsa con el &RMB; sobre un <emphasis
+>subproyecto</emphasis
+> en la ventana de vista general se le muestra el siguiente menú, que le permite realizar cambios importantes en la estructura de su proyecto y en el modo en que se compila, construye o instala. Puede utilizarlo para expandir o modificar la estructura básica de proyecto que ha creado el &appwizard;. </para>
+
+
+<informaltable frame="none">
+<tgroup cols="2"
+><tbody
+><row>
+ <entry
+><inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="automake-subproject-popup.png" format="PNG"/>
+ </imageobject>
+ </inlinemediaobject
+></entry>
+ <entry valign="bottom"
+><itemizedlist>
+ <listitem
+><para
+>Para un subproyecto, el elemento <guimenuitem
+>Opciones</guimenuitem
+> controla el modo en que dicho subproyecto será compilado, construido e instalado. El diálogo que se muestra contiene las pestañas: «Compilador», «Inclusiones», «Prefijos» y «Orden de construcción». </para
+></listitem>
+ <listitem
+><para
+>El elemento <guimenuitem
+>Añadir subproyecto</guimenuitem
+> crea una nueva carpeta y el archivo de esqueleto Makefile.am. </para
+></listitem>
+ <listitem
+><para
+>El elemento <guimenuitem
+>Añadir objetivo</guimenuitem
+> muestra un diálogo en el que puede establecer las reglas de compilación, construcción e instalación para un grupo de archivos pertenecientes a su subproyecto. </para
+></listitem>
+ <listitem
+><para
+><guimenuitem
+>Añadir servicio</guimenuitem
+> (pendiente de escribir...) </para
+></listitem>
+ <listitem
+><para
+><guimenuitem
+>Añadir aplicación</guimenuitem
+> (pendiente de escribir...) </para
+></listitem>
+ <listitem
+><para
+><guimenuitem
+>Añadir subproyectos existentes</guimenuitem
+> (pendiente de escribir...) </para
+></listitem>
+ <listitem
+><para
+>El elemento <guimenuitem
+>Eliminar subproyecto</guimenuitem
+> del menú desplegable de un subproyecto es el modo adecuado para eliminar dicho subproyecto, ya que ajustará los archivos <filename
+>Makefile.am</filename
+> automáticamente. También se le ofrecerá la opción de eliminar todos los archivos (o enlaces a ellos) existentes en la subcarperta correspondiente. Obviamente, esta característica se debe usar con precaución. </para
+></listitem>
+ <listitem
+><para
+>El elemento <guimenuitem
+>Construir</guimenuitem
+> llama a las operaciones necesarias de compilación para construir el código del subproyecto seleccionado. </para
+></listitem>
+ <listitem
+><para
+><guimenuitem
+>Forzar reedición</guimenuitem
+> (pendiente de escribir...) </para
+></listitem>
+ <listitem
+><para
+><guimenuitem
+>Limpiar</guimenuitem
+> (pendiente de escribir...) </para
+></listitem>
+ <listitem
+><para
+><guimenuitem
+>Instalar</guimenuitem
+> (pendiente de escribir...) </para
+></listitem>
+ <listitem
+><para
+><guimenuitem
+>Instalar (como usuario «root»)</guimenuitem
+> (pendiente de escribir...) </para
+></listitem>
+ </itemizedlist
+></entry>
+</row
+></tbody
+></tgroup>
+</informaltable>
+
+</sect3
+> <!-- automake-manager-operation-popups-subproject -->
+
+</sect2
+> <!-- automake-manager-operation-popups -->
+
+</sect1
+> <!-- automake-manager-operation -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="autoproject">
+<title
+>Proyectos automake</title>
+<indexterm zone="autoproject"
+><primary
+><command
+>autoproyecto</command
+></primary
+></indexterm>
+<indexterm zone="autoproject"
+><primary
+>&automake;</primary
+></indexterm>
+<indexterm zone="autoproject"
+><primary
+>&autoconf;</primary
+></indexterm>
+<indexterm zone="autoproject"
+><primary
+>&libtool;</primary
+></indexterm>
+
+<para
+>(... pendiente de escribir ...) </para>
+
+
+<sect2 id="autoconf">
+<title
+>Autoconf</title>
+<indexterm zone="autoconf"
+><primary
+>El guión <filename
+>configure</filename
+></primary
+></indexterm>
+<indexterm zone="autoconf"
+><primary
+>El guión <filename
+>config.status</filename
+></primary
+></indexterm>
+<indexterm zone="autoconf"
+><primary
+><filename
+>Makefile.in</filename
+></primary
+></indexterm>
+<indexterm zone="autoconf"
+><primary
+><filename
+>config.h.in</filename
+></primary
+></indexterm>
+
+<para
+><filename
+>Makefile.in</filename
+> en <filename
+>Makefile</filename
+> </para>
+
+<programlisting
+>prefix = @prefix@
+INSTALL = @INSTALL@
+build_triplet = @build@
+CXX = @CXX@
+</programlisting>
+
+<programlisting
+>prefix = /home/bernd/kde3
+INSTALL = /usr/bin/ginstall -c -p
+build_triplet = i686-pc-linux-gnu
+CXX = g++
+</programlisting>
+
+<para
+><filename
+>config.h.in</filename
+> en <filename
+>config.h</filename
+> </para>
+
+<programlisting
+>/* Definir si tiene instalado libz */
+#undef HAVE_LIBZ
+/* El tamaño de un número entero, calculado por sizeof */
+#undef SIZEOF_INT
+</programlisting>
+
+<programlisting
+>/* Definir si tiene instalado libz */
+#define HAVE_LIBZ 1
+/* El tamaño de un número entero, calculado por sizeof */
+#define SIZEOF_INT 4
+</programlisting>
+
+</sect2
+> <!-- autoconf -->
+
+
+<sect2 id="automake">
+<title
+>Automake</title>
+
+<para
+>(... pendiente de escribir ...) </para>
+
+</sect2
+> <!--automake -->
+
+
+<sect2 id="automake-manager">
+<title
+>&automanag; de &tdevelop;</title>
+
+<figure id="screenshot-automake-manager" float="1">
+<title
+>Una captura de pantalla del gestor de automake</title>
+<mediaobject>
+<imageobject
+><imagedata fileref="automake-manager.png"/></imageobject>
+</mediaobject>
+</figure>
+
+</sect2
+> <!-- automake-manager -->
+
+
+<sect2 id="automakelibrary">
+<title
+>Construir e instalar bibliotecas</title>
+
+<para>
+<itemizedlist>
+<listitem
+><para
+>-rpath </para
+></listitem>
+<listitem
+><para
+>PIC </para
+></listitem>
+<listitem
+><para
+>static </para
+></listitem>
+<listitem
+><para
+>plugins: no-undefined </para
+></listitem>
+</itemizedlist>
+</para>
+
+</sect2
+> <!-- automakelibrary -->
+
+</sect1
+> <!-- autoproject -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="customproject">
+<title
+>Makefiles personalizados y guiones de construcción</title>
+<indexterm zone="customproject"
+><primary
+><filename
+>Makefile</filename
+></primary
+></indexterm>
+<indexterm zone="customproject"
+><primary
+><filename
+>build.xml</filename
+></primary
+></indexterm>
+
+<para
+>(... pendiente de escribir ...) </para>
+
+</sect1
+> <!-- customproject -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="compileroptions">
+<title
+>Opciones del compilador</title>
+
+<para
+>(... pendiente de escribir ...) </para>
+
+</sect1
+> <!-- compileroptions -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="makeoptions">
+<title
+>Opciones de make</title>
+
+<para
+>(... pendiente de escribir ...) </para>
+
+</sect1
+> <!-- makeoptions -->
+
+</chapter
+> <!-- project-management -->
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/select-user-interface-0.png b/tde-i18n-es/docs/tdevelop/tdevelop/select-user-interface-0.png
new file mode 100644
index 00000000000..10f46cb2034
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/select-user-interface-0.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/select-user-interface.png b/tde-i18n-es/docs/tdevelop/tdevelop/select-user-interface.png
new file mode 100644
index 00000000000..1693e404865
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/select-user-interface.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/survey-manual.docbook b/tde-i18n-es/docs/tdevelop/tdevelop/survey-manual.docbook
new file mode 100644
index 00000000000..09b4605a252
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/survey-manual.docbook
@@ -0,0 +1,329 @@
+<chapter id="survey-manual">
+<title
+>Qué contiene este manual</title>
+
+<para
+>Este manual de usuario trata de describir el contenido y el uso del entorno de desarrollo integrado (IDE) de &tdevelop; &kdevrelease; desde el punto de vista del usuario. No es un manual de programación, ni describe el proceso de desarrollo en detalle. Su única pretensión es guiarle en el manejo del IDE. </para>
+<para
+>Aquí encontrará información sobre los siguientes temas: </para>
+<variablelist>
+<varlistentry>
+<term
+><link linkend="getting-started"
+>Primeros pasos con &tdevelop; &mdash; Un paseo guiado</link
+> </term>
+<listitem>
+<para
+>Le proporciona un rápido comienzo en el uso de este &IDE;, introduciendo los pasos básicos sobre cómo trabajar con un proyecto.</para
+></listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><link linkend="tdevelop-survey"
+>Un vistazo a las características de &tdevelop;</link
+></term>
+<listitem>
+<para
+>Extiende la visita guiada del primer capítulo dando una visión general de lo que se proporciona con &tdevelop; y le familiariza con el aspecto y el uso de este &IDE;.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><link linkend="setup"
+>Configuración de &tdevelop;</link
+></term>
+<listitem>
+<para
+>Le enseña cómo adaptar el &IDE; a sus necesidades.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><link linkend="applicationwizard"
+>Primeros pasos: el &appwizard;</link
+></term>
+<listitem>
+<para
+>Describe los principios básicos sobre cómo iniciar un nuevo proyecto en &tdevelop; usando el &appwizard; incluido.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><link linkend="editing"
+>Herramientas de edición</link
+></term>
+<listitem>
+<para
+>Todo lo que necesita para escribir sus archivos de código fuente: uso del editor, búsqueda de texto (tanto local como a nivel del proyecto), e integración de nuevos archivos y clases en el proyecto.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><link linkend="file-browsers"
+>Los navegadores de archivos</link
+></term>
+<listitem>
+<para
+>Muestra varias herramientas para observar la estructura de su proyecto y cómo acceder a los archivos con los que desee trabajar.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><link linkend="class-browsers"
+>Los navegadores de clases</link
+></term>
+<listitem>
+<para
+>Describe una de las herramientas más poderosas de &tdevelop;, que le deja navegar a través de las dependencias de las clases y le permite crear y acceder fácilmente a las clases y métodos que necesite. </para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><link linkend="documentation"
+>Documentación</link
+></term>
+<listitem>
+<para
+>Muestra cómo acceder a la abundante documentación incluida con &tdevelop;, y le enseña a crear documentación de la &API; de su proyecto de una forma concisa y poderosa, proporcionándole una visión genérica de todo el código fuente de su proyecto, así como documentación de usuario basada en el formato «docbook».</para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><link linkend="project-management"
+>Compilación y gestión de proyectos</link
+></term>
+<listitem>
+<para
+>Trata de la creación y gestión de su proyecto, describiendo los aspectos más básicos de «autoconf» y de «automake», enseñándole también a inicializar archivos «make» personalizados y cómo usar las opciones del compilador y de «make» para adaptar así su aplicación a sus necesidades.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><link linkend="adv-build-management"
+>Gestión de compilación avanzada</link
+></term>
+<listitem>
+<para
+>Contempla el modo de mantener múltiples configuraciones de compilación, compilar para distintas plataformas, o crear un sistema empotrado usando la biblioteca <application
+>Qt/embedded</application
+>.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><link linkend="debugger"
+>La interfaz de depuración</link
+></term>
+<listitem>
+<para
+>Describe cómo usar la interfaz del depurador integrado <application
+>gdb</application
+> de modo que pueda identificar los errores de su programa sin salir de &tdevelop;.</para>
+</listitem>
+</varlistentry>
+
+<!-- ### Currently disabled. Probably too specialized programming stuff. Check later again.
+ <listitem
+><para>
+ <link linkend="python"
+>Python</link
+> &mdash; an overview of how to create Python-based applications in &tdevelop;.
+ </para
+></listitem>
+ <listitem
+><para>
+ <link linkend="php"
+>PHP</link
+> &mdash; an overview of how to create PHP-based HTML applications in &tdevelop;.
+ </para
+></listitem
+>//-->
+
+<varlistentry>
+<term
+><link linkend="cvs"
+>Uso de CVS</link
+></term>
+<listitem>
+<para
+>Le enseña cómo mantener su proyecto usando el sistema de versiones CVS; algo muy necesario, especialmente si muchos desarrolladores trabajan en el mismo proyecto.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+
+<!--
+ <listitem
+><para>
+ <link linkend="tdevelop-scripting"
+>Scripting &tdevelop;</link
+> &mdash; describes how to add scripts to automate &tdevelop;.
+ </para
+></listitem>
+
+
+ <listitem
+><para>
+ Some commonly used information has been put into the <emphasis
+>appendix</emphasis
+>. Amongst others this consists of:
+-->
+<para
+>En el <emphasis
+>apéndice</emphasis
+> se ha incluido alguna información usada comúnmente. Entre otra: </para>
+
+<variablelist>
+<varlistentry>
+<term
+><link linkend="tdevelop-install"
+>Instalación de &tdevelop;</link
+></term>
+<listitem>
+<para
+>Le muestra dónde obtener &tdevelop;, cómo instalarlo y cómo ponerlo en marcha.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+
+<variablelist>
+<varlistentry>
+<term
+><link linkend="nutshell"
+>Principios básicos &mdash; Consejos y trucos</link
+></term>
+<listitem>
+<para
+>Una rápida referencia a algunos comandos y acciones comunes. Y una corta guía para resolver problemas comunes cuando se trabaja con &tdevelop;.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+><link linkend="unixdev"
+>Desarrollo en &UNIX;</link
+></term>
+<listitem>
+<para
+>Una visión histórica sobre el desarrollo de programas en &UNIX;, las principales herramientas necesarias y sobre por qué necesita un &IDE;.</para>
+</listitem>
+</varlistentry>
+
+<!--
+ <listitem
+><para>
+ <link linkend="app-menus"
+>Menus and Toolbars Overview</link
+> &mdash; provides you with a short overall view of the menu and toolbar selections available.
+ </para
+></listitem>
+
+ <listitem
+><para>
+ <link linkend="app-shortcuts"
+>Shortcut Keys</link
+> &mdash; the keys you can use to work with &tdevelop; without resorting to the mouse.
+ </para
+></listitem>
+-->
+
+<varlistentry>
+<term
+><link linkend="app-files"
+>Archivos de configuración usados por &tdevelop;</link
+></term>
+<listitem
+><para
+>Lista los archivos que &tdevelop; usa para guardar su información interna. Le puede resultar particularmente útil en caso de que algo vaya mal durante la instalación.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry
+><term>
+<link linkend="plugin-tools"
+>Herramientas de extensiones</link>
+</term
+><listitem
+><para
+>Lista las herramientas que puede conectar para adaptar las capacidades de &tdevelop; a sus propias necesidades. </para
+></listitem
+></varlistentry>
+
+<!--
+ <listitem
+><para>
+ <link linkend="plugin-tools"
+>Plugin tools</link
+> &mdash; provides you with an overview of the parts which make up &tdevelop; and how you can tailor it to suit your needs by only loading the parts that are necessary, both IDE and project-wide.
+ </para
+></listitem>
+-->
+<varlistentry
+><term
+>
+<link linkend="app-uimodes-examples"
+>Ejemplos del modo de interfaz de usuario de KDevelop </link>
+</term
+><listitem
+><para
+>Muestra los modos de interfaz de usuario. </para
+></listitem
+></varlistentry>
+
+<varlistentry
+><term>
+<link linkend="app-misc-info"
+>Más información </link
+> </term
+><listitem
+><para
+>Obtención de información, informes de errores, etc. </para
+></listitem
+></varlistentry>
+
+<varlistentry
+><term>
+<link linkend="app-changelog"
+>Registro de cambios </link>
+</term
+><listitem
+><para
+>Muestra el histórico de esta documentación. </para
+></listitem
+></varlistentry>
+
+<varlistentry
+><term>
+<link linkend="app-bibliography"
+>Bibliografía </link
+>
+</term
+><listitem
+><para
+>Bibliografía </para
+></listitem
+></varlistentry>
+
+</variablelist
+>
+ <!--
+ <listitem
+><para>
+ <link linkend="documentation-index"
+>Index </link
+> &mdash;
+ </para
+></listitem>
+-->
+
+
+</chapter>
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-ideal-mode-0.png b/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-ideal-mode-0.png
new file mode 100644
index 00000000000..263f223783b
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-ideal-mode-0.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-ideal-mode.png b/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-ideal-mode.png
new file mode 100644
index 00000000000..a65aa1416dd
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-ideal-mode.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-install.docbook b/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-install.docbook
new file mode 100644
index 00000000000..518c43ea3a5
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-install.docbook
@@ -0,0 +1,1290 @@
+<appendix id="tdevelop-install">
+
+<appendixinfo>
+ <authorgroup>
+ <author
+><firstname
+>Bernd</firstname
+><surname
+>Pol</surname
+></author>
+ <author
+><firstname
+>Anne-Marie</firstname
+><surname
+>Mahfouf</surname
+></author>
+ <!-- ROLES_OF_TRANSLATORS -->
+ </authorgroup>
+</appendixinfo>
+
+<title
+>Instalación de &tdevelop;</title>
+
+<indexterm zone="tdevelop-install">
+ <primary
+>instalación</primary
+></indexterm>
+
+<para
+>En este capítulo se discutirán los pasos necesarios para compilar e instalar el IDE &tdevelop;: <itemizedlist>
+ <listitem
+><para
+><link linkend="tdevelop-install-howto"
+>Cómo obtener &tdevelop;</link
+> se concentra principalmente en la descarga del código fuente más reciente de &tdevelop; desde su repositorio svn. </para
+></listitem>
+ <listitem
+><para
+><link linkend="requirements"
+>Requisitos de &tdevelop;</link
+> lista los programas y bibliotecas que necesitará tener instalados para compilar el IDE con éxito. </para
+></listitem>
+ <listitem
+><para
+><link linkend="compile-and-install"
+>Compilación e instalación de &tdevelop;</link
+> le guía a través del proceso de compilación e instalación de la aplicación. </para
+></listitem>
+ <listitem
+><para
+><link linkend="make-api"
+>Cómo obtener la documentación de la API de &tdevelop;</link
+> le enseña qué es una API y cómo obtener esta útil herramienta para navegar a través del código fuente de &tdevelop;. </para
+></listitem>
+</itemizedlist>
+</para>
+
+<sect1 id="tdevelop-install-howto">
+<title
+>Cómo obtener &tdevelop;</title>
+
+<indexterm zone="tdevelop-install-howto">
+ <primary
+>obtener &tdevelop;</primary
+></indexterm>
+<indexterm zone="tdevelop-install-howto">
+ <primary
+>&tdevelop;</primary>
+ <secondary
+>obtener</secondary
+></indexterm>
+
+<para
+>El binario de &tdevelop; está disponible en muchas distribuciones de &Linux;, como SuSE, RedHat y otras. Estos binarios están empaquetados en algún formato adecuado (principalmente RPM) para que su instalación sea fácil. Para instalarlo, siga las instrucciones genéricas que le proporcione su distribución. </para>
+<para
+>Tabién puede obtener el código fuente de &tdevelop;, compilarlo e instalarlo usted mismo. Este código fuente se puede encontrar en la página del proyecto, <ulink url="http://www.tdevelop.org"
+> http://www.tdevelop.org</ulink
+>, o en el <ulink url="http://download.kde.org"
+>servidor ftp de &kde;</ulink
+>. </para>
+
+<sect2 id="howto-svn">
+<title
+>Obtener versiones diarias de &tdevelop; a partir del svn</title>
+
+<indexterm zone="howto-svn">
+ <primary
+>svn</primary
+></indexterm>
+
+<para
+>Si desea estar al día del desarrollo actual, dispone de versiones descargadas anónimamente del repositorio svn.</para>
+<para
+>El nombre del módulo es <emphasis
+>tdevelop</emphasis
+> en <filename class="directory"
+>svn co svn://anonsvn.kde.org/home/kde/branches/KDE/3.5/tdevelop</filename
+>. </para>
+
+<sect3 id="howto-svn-co">
+<title
+>Descarga inicial del svn</title>
+
+<indexterm zone="howto-svn-co">
+ <primary
+>checkout</primary
+></indexterm>
+<indexterm zone="howto-svn-co">
+ <primary
+>&tdevelop;</primary>
+ <secondary
+>svn</secondary>
+ <tertiary
+>checkout</tertiary
+></indexterm>
+
+<para
+>Para obtener una versión inicial de &tdevelop;, debe descargarla de un svn anónimo. Para realizar esta operación (llamada<emphasis
+>checkout</emphasis
+>) siga los siguientes pasos. </para>
+
+<note
+><para
+>Asumiremos que quiere tener su copia de &tdevelop; en la subcarpeta <filename class="directory"
+>kde3src</filename
+> de su carpeta personal (<filename class="directory"
+>~</filename
+>). </para
+></note>
+
+<informalexample
+><simplelist>
+ <member
+># Crear la carpeta de destino, si es necesario: </member>
+ <member
+><prompt
+>~&gt; </prompt
+> <userinput
+>mkdir kde3src</userinput
+> </member>
+ <member
+><prompt
+>~&gt; </prompt
+> <userinput
+>cd kde3src</userinput
+> </member>
+ <member
+><prompt
+>~/kde3src&gt; </prompt
+> <userinput
+>svn co svn://anonsvn.kde.org/home/kde/branches/KDE/3.5/tdevelop</userinput
+> </member>
+ <member
+><prompt
+>~/kde3src&gt; </prompt
+> <userinput
+>cd tdevelop</userinput
+> </member>
+</simplelist
+></informalexample>
+
+<note
+><para
+>Tras descargar con éxito su copia de &tdevelop; puede mantenerla al día de los cambios realizados en ella usando el procedimiento de actualización que se muestra en la siguiente sección. </para
+></note>
+
+<important
+><para
+>No sobrecargue el servidor. <emphasis
+>Por favor, no haga un «checkout» cada vez que quiera actualizar su &tdevelop;.</emphasis
+> Use el comando «svn update» para este propósito. </para
+></important>
+
+<para
+>Ahora debe compilar su versión de &tdevelop; como se muestra en la sección <link linkend="compile-and-install"
+>Compilación e instalación de &tdevelop;</link
+>. </para>
+
+</sect3
+> <!-- howto-svn-co -->
+
+<sect3 id="howto-svn-up">
+<title
+>Actualización de su copia del svn</title>
+
+<indexterm zone="howto-svn-up">
+ <primary
+>actualizar</primary
+></indexterm>
+<indexterm zone="howto-svn-up">
+ <primary
+>&tdevelop;</primary>
+ <secondary
+>svn</secondary>
+ <tertiary
+>actualizar</tertiary
+></indexterm>
+
+<para
+>Tras descargar por primera vez (y compilar con éxito) &tdevelop; del repositorio tal y como se ha mostrado, tal vez quiera mantener su copia al día para obtener todos los parches que vayan siendo añadidos. Para ello siga los pasos siguientes (de nuevo asumiremos que tiene su copia de &tdevelop; en la carpeta <filename class="directory"
+>kde3src</filename
+>). </para>
+<para
+>Note el uso del comando <command
+>up</command
+> (o <emphasis
+>update</emphasis
+>) en lugar de <command
+>co</command
+> (que significa <emphasis
+>checkout</emphasis
+>). </para>
+
+<informalexample
+><simplelist>
+ <member
+><prompt
+>~&gt; </prompt
+> <userinput
+>cd kde3src</userinput
+> </member>
+ <member
+><prompt
+>~/kde3src&gt; </prompt
+> <userinput
+>cd tdevelop</userinput
+> </member>
+ <member
+><prompt
+>~/kde3src&gt; </prompt
+> <userinput
+>svn up</userinput
+> </member>
+</simplelist
+></informalexample>
+
+<note
+><para
+>Eche un vistazo a los mensajes que genera svn durante el proceso de actualización. Los pasos exactos durante la secuencia de compilación dependerán de ello. </para
+></note>
+
+<para
+>Ahora puede compilar una nueva versión de &tdevelop; como se muestra en el capítulo <link linkend="compile-and-install-make-svn"
+>Consideraciones sobre la compilación especial de svn</link
+>. </para>
+</sect3
+> <!-- howto-svn-up -->
+
+</sect2
+> <!-- howto-svn -->
+
+</sect1
+> <!-- howto -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="requirements">
+<title
+>Requisitos de &tdevelop;</title>
+
+<indexterm zone="requirements">
+ <primary
+>requisitos</primary
+></indexterm>
+<indexterm zone="requirements">
+ <primary
+>&tdevelop;</primary>
+ <secondary
+>requisitos</secondary
+></indexterm>
+<indexterm zone="requirements">
+ <primary
+>GNU</primary>
+ <secondary
+>requisitos</secondary
+></indexterm>
+
+<para
+>Para poder compilar y usar con éxito &tdevelop; necesita los siguientes programas y bibliotecas. Están disponibles como paquetes de su distribución en la mayoría de las plataformas, por lo que se pueden instalar fácilmente. </para>
+
+<itemizedlist>
+<title
+>Necesario:</title>
+ <listitem>
+ <para
+><application
+>gcc/g++</application
+> &ge; 2.95.3 (o compatible) <indexterm>
+ <primary
+>gcc</primary>
+ <secondary
+>requisitos</secondary
+></indexterm>
+ <indexterm>
+ <primary
+>g++</primary>
+ <secondary
+>requisitos</secondary
+></indexterm>
+ </para>
+ <para
+>Disponible en <ulink url="gcc.gnu.org"
+>gcc.gnu.org</ulink
+> </para>
+ </listitem>
+ <listitem>
+ <para
+><application
+>&GNU; make</application
+> (o compatible) <indexterm>
+ <primary
+>make</primary>
+ <secondary
+>requisitos</secondary
+></indexterm>
+ </para>
+ <para
+>Disponible en <ulink url="www.gnu.org/software/make"
+>www.gnu.org/software/make</ulink
+> </para>
+ </listitem>
+ <listitem>
+ <para
+>&perl; 5.004 (o superior) <indexterm>
+ <primary
+>Perl</primary>
+ <secondary
+>requisitos</secondary
+></indexterm>
+ </para>
+ <para
+>Disponible en <ulink url="www.perl.com"
+>www.perl.com</ulink
+> </para>
+ </listitem>
+ <listitem>
+ <para
+><application
+>autoconf</application
+> &ge; 2.52 (o superior) <indexterm>
+ <primary
+>autoconf</primary>
+ <secondary
+>requisitos</secondary
+></indexterm>
+ </para>
+ <para
+>Disponible en <ulink url="www.gnu.org/software/autoconf"
+>www.gnu.org/software/autoconf</ulink
+> </para>
+ </listitem>
+ <listitem>
+ <para
+><application
+>automake</application
+> &ge; 1.6 (o superior) <indexterm>
+ <primary
+>automake</primary>
+ <secondary
+>requisitos</secondary
+></indexterm>
+ </para>
+ <para
+>Disponible en <ulink url="www.gnu.org/software/automake"
+>www.gnu.org/software/automake</ulink
+> </para>
+ </listitem>
+ <listitem>
+ <para
+><application
+>flex</application
+> 2.5.4 (o superior) <indexterm>
+ <primary
+>flex</primary>
+ <secondary
+>requisitos</secondary
+></indexterm>
+ </para>
+ <para
+>Disponible en <ulink url="www.gnu.org/software/flex"
+>www.gnu.org/software/flex</ulink
+> </para>
+ </listitem>
+ <listitem>
+ <para
+>&Qt; &ge; 3.3.0 (o superior) <indexterm>
+ <primary
+>Qt</primary>
+ <secondary
+>requisitos</secondary
+></indexterm>
+ </para>
+ <para
+>Disponible en <ulink url="www.trolltech.com/products/qt"
+>www.trolltech.com/products/qt</ulink
+> </para>
+ </listitem>
+ <listitem>
+ <para
+><application
+>KDE</application
+> &ge; 3.4.0 (o superior) <indexterm>
+ <primary
+>KDE</primary>
+ <secondary
+>requisitos</secondary
+></indexterm>
+ </para>
+ <para
+>Disponible en <ulink url="www.kde.org"
+>www.kde.org</ulink
+> </para>
+ </listitem>
+</itemizedlist>
+
+<itemizedlist>
+<title
+>Opcional:</title>
+ <listitem
+><para
+>La herramienta de navegación a través del código fuente <emphasis
+><application
+>ctags</application
+></emphasis
+>, disponible en <ulink url="http://ctags.sourceforge.net"
+>http://ctags.sourceforge.net</ulink
+>, que le permite acceder de forma rápida a las declaraciones y definiciones mediante varios clics de ratón sobre sus nombres en la ventana del editor. <indexterm
+><primary
+>ctags</primary
+></indexterm>
+ </para
+></listitem>
+ <listitem
+><para
+><emphasis
+><application
+>dot</application
+></emphasis
+>, un compilador de lenguaje de gráficos, disponible en <ulink url="http://www.graphviz.org"
+>http:/www.graphviz.org</ulink
+>. Necesita esta herramienta junto a &doxygen; si quiere mostrar gráficamente la relación existente entre sus clases (lo que es muy recomendable). <indexterm
+><primary
+>dot</primary
+></indexterm>
+ </para
+></listitem>
+ <listitem
+><para
+>La herramienta de documentación <emphasis
+>&doxygen;</emphasis
+>, disponible en <ulink url="http://www.doxygen.org"
+>http://www.doxygen.org</ulink
+>, si quiere generar documentación consisa y potente del API de su proyecto. <indexterm
+><primary
+>doxygen</primary
+></indexterm>
+ </para
+></listitem>
+ <listitem
+><para
+><emphasis
+><application
+>valgrind</application
+></emphasis
+> disponible en <ulink url="http://developer.kde.org/~sewardj/"
+>http://developer.kde.org/~sewardj/</ulink
+> le ayuda a encontrar problemas de gestión de memoria en sus aplicaciones. <indexterm
+><primary
+>valgrind</primary
+></indexterm>
+ </para
+></listitem>
+ <listitem
+><para
+><emphasis
+><application
+>svn</application
+></emphasis
+>, disponible en <ulink url="http://subversion.tigris.org"
+>http://subversion.tigris.org</ulink
+>, si quiere usar el sistema de versiones svn. <indexterm>
+ <primary
+>svn</primary>
+ <secondary
+>requisitos</secondary
+></indexterm>
+ </para
+></listitem>
+ <listitem
+><para
+>Cualquier otro compilador o herramienta necesaria para programar en otro lenguaje o plataforma distinto de C++ y &kde;, o para algún fin especial. </para
+></listitem>
+</itemizedlist>
+
+<note>
+<orderedlist>
+ <listitem>
+ <para
+>Hasta cierto punto, puede eludir la necesidad de tener &autoconf; &ge; 2.52 y &automake; &ge; 1.6. Para ello, elimine la carpeta <filename class="directory"
+>admin</filename
+> en la carpeta de instalación de &tdevelop; y escriba <indexterm>
+ <primary
+>autoconf</primary>
+ <secondary
+>circumvent version need</secondary
+></indexterm>
+ <indexterm>
+ <primary
+>automake</primary>
+ <secondary
+>circumvent version need</secondary
+></indexterm>
+ <indexterm>
+ <primary
+>version need</primary>
+ <secondary
+>circumvent for autoconf/automake</secondary
+></indexterm>
+ </para>
+ <informalexample
+><simplelist>
+ <member
+><prompt
+>(su carpeta de tdevelop)&gt; </prompt
+> <userinput
+>ln -s $KDEDIR/share/apps/tdelibs/admin admin</userinput
+></member>
+ </simplelist
+></informalexample>
+ <para
+>en la consola. Esto hace que &tdevelop; use las preferencias generales de la carpeta <filename class="directory"
+>admin</filename
+> de &kde;. </para>
+ </listitem>
+ <listitem>
+ <para
+>Tenga cuidado de <emphasis
+>no mezclar distintas versiones de &Qt;</emphasis
+>. Enlace siempre &tdevelop; con la misma versión de &Qt; con que haya sido compilada su biblioteca &kde;. En caso contrario es muy probable que experimente comportamientos <emphasis
+>muy extraños</emphasis
+>. </para>
+ </listitem>
+</orderedlist>
+</note>
+
+</sect1
+> <!-- requirements -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="compile-and-install">
+<title
+>Compilación e instalación de &tdevelop;</title>
+
+<indexterm zone="compile-and-install">
+ <primary
+>&tdevelop;</primary>
+ <secondary
+>compilación</secondary
+></indexterm>
+<indexterm zone="compile-and-install">
+ <primary
+>&tdevelop;</primary>
+ <secondary
+>instalación</secondary
+></indexterm>
+
+<para
+>Una vez que haya complido todos los requisitos, estará listo para compilar e instalar &tdevelop;. Este apéndice trata de los pasos necesarios para conseguirlo. </para>
+<itemizedlist>
+ <listitem
+><para
+><link linkend="compile-and-install-preliminaries"
+>Pasos preliminares</link
+> le enseña a configurar un entorno correcto. </para
+></listitem>
+ <listitem
+><para
+><link linkend="compile-and-install-make"
+>Compilación de &tdevelop;</link
+> trata sobre cómo obtener el código fuente de &tdevelop; del svn, cómo prepararlo para el proceso de instalación, y finalmente muestra los pasos necesarios para compilar e instalar &tdevelop;. </para
+></listitem>
+ <listitem
+><para
+><link linkend="compile-and-install-options"
+>Algunas notas sobre las opciones deconfigure</link
+> le enseña a ejecutar &tdevelop; si ha sido instalado en una carpeta distinta a la de &kde;. </para
+></listitem>
+</itemizedlist>
+
+<sect2 id="compile-and-install-preliminaries">
+<title
+>Pasos preliminares</title>
+
+<indexterm zone="compile-and-install-preliminaries">
+ <primary
+>preliminares</primary>
+ <secondary
+>Instalación de &tdevelop;</secondary
+></indexterm>
+<indexterm zone="compile-and-install-preliminaries">
+ <primary
+>KDEDIR</primary
+></indexterm>
+<indexterm zone="compile-and-install-preliminaries">
+ <primary
+>QTDIR</primary
+></indexterm>
+<indexterm zone="compile-and-install-preliminaries">
+ <primary
+>LD_LIBRARY_PATH</primary
+></indexterm>
+<indexterm zone="compile-and-install-preliminaries">
+ <primary
+>LIBRARY_PATH</primary
+></indexterm>
+<indexterm zone="compile-and-install-preliminaries">
+ <primary
+>PATH</primary
+></indexterm>
+
+<para
+>Antes de iniciar la secuencia de compilación debe asegurarse de que el sistema «make» puede acceder a todas las bibliotecas y herramientas necesarias. Para ello debe ajustar correctamente algunas variables de entorno. Los pasos reales a realizar dependerán del intérprete de comandos que esté usando. </para>
+
+<note
+><para
+>Para evitar el tener que teclear cada vez todas las sentencias que hacen falta para ajustar las variables de entorno necesarias cuando quiera compilar, debería colocarlas en su archivo <filename
+>.bashrc</filename
+> o <filename
+>.cshrc</filename
+>. De este modo, las variables de entorno se ajustarán correctamente cada vez que inicie el intérprete de comandos. </para
+></note>
+
+<sect3 id="compile-and-install-preliminaries-bash">
+<title
+>Configuración del entorno para el intérprete bash</title>
+
+<para
+>Si usa el intérprete bash, añada las siguientes líneas: </para>
+
+<informalexample
+><simplelist>
+ <member
+><userinput
+>export KDEDIR=</userinput
+>(ruta a su instalación de KDE)</member>
+ <member
+><userinput
+>export QTDIR=</userinput
+>(ruta a su biblioteca Qt)</member>
+ <member
+><userinput
+>export LD_LIBRARY_PATH=$QTDIR/lib:$KDEDIR/lib:$LD_LIBRARY_PATH</userinput
+></member>
+ <member
+><userinput
+>export LIBRARY_PATH=$QTDIR/lib:$KDEDIR/lib:$LIBRARY_PATH</userinput
+></member>
+ <member
+><userinput
+>export PATH=$QTDIR/bin:$KDEDIR/bin:$PATH</userinput
+></member>
+</simplelist
+></informalexample>
+<para
+></para>
+
+</sect3
+> <!-- compile-and-install-preliminaries-bash -->
+
+<sect3 id="compile-and-install-preliminaries-tcsh">
+<title
+>Configuración del entorno para el intérprete tcsh</title>
+
+<para
+>Si está usando el intérprete tcsh, añada las siguientes líneas: </para>
+<para>
+<informalexample
+><simplelist>
+ <member
+><userinput
+>setenv KDEDIR </userinput
+>(ruta a su instalación de KDE)</member>
+ <member
+><userinput
+>setenv QTDIR </userinput
+>(ruta a su biblioteca Qt)</member>
+ <member
+><userinput
+>setenv LD_LIBRARY_PATH=$QTDIR/lib:$KDEDIR/lib:$LD_LIBRARY_PATH</userinput
+></member>
+ <member
+><userinput
+>setenv LIBRARY_PATH $QTDIR/lib:$KDEDIR/lib:$LIBRARY_PATH</userinput
+></member>
+ <member
+><userinput
+>setenv PATH $QTDIR/bin:$KDEDIR/bin:$PATH</userinput
+></member>
+</simplelist
+></informalexample>
+</para>
+
+</sect3
+> <!-- compile-and-install-preliminaries-tcs -->
+
+</sect2
+> <!-- compile-and-install-preliminaries -->
+
+<sect2 id="compile-and-install-make">
+<title
+>Compilar &tdevelop;</title>
+
+<indexterm zone="compile-and-install-make">
+ <primary
+>make</primary>
+ <secondary
+>Instalación de &tdevelop;</secondary
+></indexterm>
+<indexterm zone="compile-and-install-make">
+ <primary
+>compilación</primary>
+ <secondary
+>&tdevelop;</secondary
+></indexterm>
+
+<note
+><para
+>En la siguiente sección supondremos que ha colocado el código fuente de &tdevelop; en la carpeta <filename class="directory"
+>~/kde3src/tdevelop</filename
+>. </para
+></note>
+
+<sect3 id="compile-and-install-make-svn">
+<title
+>Consideraciones especiales sobre la compilación de svn</title>
+
+<para
+>En el caso de que utilice una versión de &tdevelop; descargada directamente del repositorio svn, los pasos iniciales para su compilación dependen de si realizó un «checkout» completo y de si solo actualizó el código fuente. </para>
+
+<variablelist>
+<varlistentry>
+<term id="compile-and-install-make-svn-co"
+>Tras hacer un «checkout» del svn</term>
+<listitem>
+<para
+>Debe <emphasis
+>inicializar el sistema «make»</emphasis
+> tras realizar un «checkout». Esto también será de aplicación cada vez que necesite empezar desde cero. Escriba: </para>
+
+<informalexample
+><simplelist
+><member
+><prompt
+>~/kde3src/tdevelop&gt; </prompt
+> <userinput
+>make -f admin/Makefile.common svn-clean</userinput
+> </member
+></simplelist
+></informalexample>
+<para
+>y luego <emphasis
+>siga el resto de pasos siguientes</emphasis
+>. </para>
+<note
+><para
+>Necesita tener acceso al repositorio svn para la limpieza si hace falta reconstruir algunos archivos dañados o que no existan en su copia local. </para
+></note>
+<important
+><para
+>El comando <command
+>svn-clean</command
+> <emphasis
+>eliminará cada archivo</emphasis
+> de la carpeta que no esté en el svn. Asegúrese de hacer una copia de seguridad de cualquier información valiosa antes de ejecutar este comando de limpieza. </para
+></important>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term id="compile-and-install-make-svn-up"
+>Tras una actualización svn</term>
+<listitem>
+<para
+>El siguiente paso depende de la salida de la secuencia de actualización svn. Si ha obtenido como resultado (puede existir una «U» o una «P» como marca en la columna de la izquierda, ambas indicando que el archivo ha sido modificado) algo como esto: </para>
+
+<screen
+>U /ruta_a_alguna_carpeta/Makefile.am
+</screen>
+<para
+>o si realizó un «checkout» completo, debe introducir: </para>
+<informalexample
+><simplelist
+><member
+><prompt
+>~/kde3src/tdevelop&gt; </prompt
+> <userinput
+>make -f Makefile.svn</userinput
+> </member
+></simplelist
+></informalexample>
+<para
+>antes de proceder con <emphasis
+>todos los pasos siguientes</emphasis
+>. </para>
+</listitem>
+</varlistentry>
+</variablelist>
+</sect3
+> <!-- compile-and-install-make-svn -->
+
+<sect3 id="compile-and-install-make-basic">
+<title
+>Secuencia de comandos <command
+>make</command
+> básica</title>
+
+<para
+>Una vez que el sistema «make» básico haya sido ajustado, debe decidir qué tipo de sistema &tdevelop; quiere usar. Esto se hace en el siguiente paso de configuración, que construye los <filename
+>Makefile</filename
+>s reales que usará el comando <command
+>make</command
+>. </para>
+
+<note
+><para
+>Puede omitir la opción <option
+>--prefix</option
+> en las siguientes líneas de comando para <command
+>configure</command
+> si quiere que &tdevelop; se instale en la carpeta predeterminada de &kde;. Consulte el capítulo <link linkend="compile-and-install-options"
+>Algunas notas sobre las opciones de «configure»</link
+>. </para
+></note>
+
+<variablelist>
+<varlistentry>
+<term
+>Una versión compilada para ser depurada</term>
+<listitem>
+<para
+>Si quiere seguir el rastro de lo que hace su aplicación &tdevelop; cuando esté en ejecución, debe construir una versión compilada para ser depurada. Ejecute el siguiente comando <command
+>configure</command
+> para ello: </para>
+
+<informalexample
+><simplelist
+><member
+><prompt
+>~/kde3src/tdevelop&gt; </prompt
+> <userinput
+>./configure --enable-debug=full --prefix=</userinput
+>(donde está su kde3) </member
+></simplelist
+></informalexample>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+>Una versión compilada para ser liberada</term>
+<listitem>
+<para
+>Si solo quiere usar &tdevelop; por sí mismo, bastará con una versión compilada para ser liberada (que es más pequeña y se ejecuta más rápidamente). El comando <command
+>configure</command
+> hace esto de forma predeterminada.</para>
+
+<informalexample
+><simplelist
+><member
+><prompt
+>~/kde3src/tdevelop&gt; </prompt
+> <userinput
+>./configure --prefix=</userinput
+>(donde está su kde3) </member
+></simplelist
+></informalexample>
+
+<note>
+<para
+>Si quiere construir su propia <link linkend="make-api"
+>documentación del API</link
+> de &tdevelop;, debería incluir una opción adicional en el comando <command
+>configure</command
+>: </para>
+<informalexample
+><simplelist>
+ <member
+><prompt
+>~/kde3src/tdevelop&gt; </prompt
+> <userinput
+>./configure --</userinput
+>(opciones como las anteriores) <userinput
+>\</userinput
+></member
+> <member
+><userinput
+>--with-tdelibsdoxy-dir=$KDEDIR/share/doc/HTML/en/tdelibs-apidocs</userinput
+></member>
+</simplelist
+></informalexample>
+</note>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+>Make e instalación de &tdevelop;</term>
+<listitem>
+<para
+><command
+>configure</command
+> comprobará el sistema y creará algunos archivos <filename
+>Makefile</filename
+> según lo que encuentre. El comando <command
+>make</command
+> usará el <filename
+>Makefile</filename
+> principal de forma predeterminada. De este modo </para>
+
+<informalexample
+><simplelist
+><member
+><prompt
+>~/kde3src/tdevelop&gt; </prompt
+> <userinput
+>make</userinput
+> </member
+></simplelist
+></informalexample>
+<para
+>es suficiente. Si es necesario, obtenga ahora privilegios de usuario root con el comando </para>
+<informalexample
+><simplelist
+><member
+><prompt
+>~/kde3src/tdevelop&gt; </prompt
+> <userinput
+>su</userinput
+> </member
+></simplelist
+></informalexample>
+<para
+>e introduzca la contraseña del usuario root. Luego, instale la aplicación: </para>
+<informalexample
+><simplelist
+><member
+><prompt
+>~/kde3src/tdevelop&gt; </prompt
+> <userinput
+>make install</userinput
+> </member
+></simplelist
+></informalexample>
+<para
+>Eso es todo. Si ha instalado &tdevelop; en la carpeta predeterminada de &kde; podrá ejecutar ahora el IDE. En caso contrario, necesitará algunos pasos adicionales como se muestra más adelante en la sección <link linkend="compile-and-install-options-dir"
+>Carpeta de instalación no predeterminada</link
+>. </para>
+
+<note>
+ <para
+>De hecho, normalmente habrá tres aplicaciones instaladas basadas en &tdevelop;: </para>
+ <itemizedlist>
+ <listitem
+><para
+>El IDE de &tdevelop; &mdash; el lugar donde normalmente trabajará.</para
+></listitem>
+ <listitem
+><para
+>El navegador de documentación independiente del Asistente de &tdevelop; &mdash; aisla todas las potentes utilidades de documentación del IDE &tdevelop; en una herramienta separada. Esto resulta útil cuando necesita buscar determinada documentación sobre programación pero no quiere iniciar todo el IDE.</para
+></listitem>
+ <listitem
+><para
+>El Diseñador de &tdevelop; &mdash; Amplía el «Diseñador de interfaces de usuario de &Qt;» con elementos específicos de &kde; y se integra perfectamente en el IDE de &tdevelop;.</para
+></listitem>
+ </itemizedlist>
+</note>
+</listitem>
+</varlistentry>
+</variablelist>
+
+
+</sect3
+> <!-- compile-and-install-make-basic -->
+</sect2
+> <!-- compile-and-install-make -->
+
+
+<sect2 id="compile-and-install-options">
+<title
+>Algunas notas sobre las opciones de <command
+>configure</command
+></title>
+
+<sect3 id="compile-and-install-options-dir">
+<title
+>Carpeta de instalación no predeterminada</title>
+
+<indexterm zone="compile-and-install-options-dir">
+ <primary
+>&tdevelop;</primary>
+ <secondary
+>instalación</secondary>
+ <tertiary
+>carpeta no predeterminada</tertiary
+></indexterm>
+<indexterm zone="compile-and-install-options-dir">
+ <primary
+>carpeta no predeterminada</primary
+></indexterm>
+<indexterm zone="compile-and-install-options-dir">
+ <primary
+>KDEDIRS</primary
+></indexterm>
+<indexterm zone="compile-and-install-options-dir">
+ <primary
+>kbuildsycoca</primary
+></indexterm>
+
+<para
+>Por defecto, <command
+>configure</command
+> prepara el IDE para que se instale en la carpeta predeterminada de &kde;. Esto es necesario porque &tdevelop; asume que puede acceder directamente a ciertas herramientas y partes que residen ahí. Si quiere usar su propia carpeta de instalación, debe indicárselo a <command
+>configure</command
+> con la opción <option
+>--prefix</option
+>. </para>
+<informalexample
+><simplelist
+><member
+><prompt
+>~/kde3src/tdevelop&gt; </prompt
+> <userinput
+>./configure --prefix=</userinput
+>(donde está su kde3) </member
+></simplelist
+></informalexample>
+<para
+>Existe un inconveniente si hace esto: debe proporcionar a &tdevelop; un medio para acceder a las herramientas y partes necesarias existentes en la carpeta de &kde; cuando esté funcionando (puede usar el IDE sin hacer esto, pero no dispondrá de todas sus capacidades). </para>
+<para
+>Inicie un intérprete de comandos y ejecute lo siguiente antes de iniciar &tdevelop; en la línea de introducción de comandos: </para>
+
+<note
+><para
+><emphasis
+>Tenga cuidado en usar la forma plural:</emphasis
+> es <quote
+><envar
+>KDEDIRS</envar
+></quote
+>, no <quote
+><envar
+>KDEDIR</envar
+></quote
+>) </para
+></note>
+
+<informalexample
+><simplelist>
+ <member
+><prompt
+>~&gt; </prompt
+> <userinput
+>export KDEDIRS=/usr/local/kde:/opt/kde3</userinput
+> </member>
+ <member
+><prompt
+>~&gt; </prompt
+> <userinput
+>kbuildsycoca</userinput
+> </member>
+ <member
+>(Ahora puede iniciar &tdevelop;) </member>
+ <member
+><prompt
+>~&gt; </prompt
+> <userinput
+>tdevelop</userinput
+> </member>
+</simplelist
+></informalexample>
+
+<note
+><simplelist>
+ <member
+>La variable de entorno <envar
+>KDEDIRS</envar
+> debe estar asignada a la <emphasis
+>lista de carpetas del &kde; activo</emphasis
+> de su sistema. Usamos</member>
+ <member
+><filename class="directory"
+>/usr/local/kde</filename
+>:<filename class="directory"
+>/opt/kde3</filename
+></member>
+ <member
+>solo como ejemplo.</member>
+ <member
+>La carpeta <filename class="directory"
+>/usr/local/kde</filename
+> puede contener, por ejemplo, una versión incompleta de &kde; que haya compilado para propósitos de depuración, y la carpeta <filename class="directory"
+>/opt/kde3</filename
+> puede contener, adicionalmente, la versión estándar de&kde; que proporciona su distribución y que usa en el trabajo diario.</member>
+</simplelist
+></note>
+
+<para
+>En un intérprete tcsh debe establecer las variables de entorno usando: </para>
+<informalexample
+><simplelist
+><member
+><prompt
+>~&gt; </prompt
+> <userinput
+>setenv KDEDIRS /usr/local/kde:/opt/kde3</userinput
+> </member
+></simplelist
+></informalexample>
+<para
+>El comando <command
+>kbuildsycoca</command
+> (<quote
+>construir la caché de control del sistema</quote
+>) busca bibliotecas y cachés, sus ubicaciones y versiones, de modo que &tdevelop; pueda encontrarlas. El inconveniente es que tarda cierto tiempo en ejecutarse (y que necesita ejecutarse cada vez que llama al intérprete de comandos para iniciar &tdevelop; desde una carpeta no predeterminada). Es posible que quiera añadir los comandos anteriores a un guión del intérprete de comandos para eliminar la necesidad de tener que escribirlos una y otra vez. </para>
+<para
+>También puede poner esas líneas en su archivo <filename
+>.bashrc</filename
+> o <filename
+>.cshrc</filename
+>, pero esto no es recomendable, ya que <command
+>kbuildsycoca</command
+> se ejecutará cada vez que inicie el intérprete de comandos. </para>
+
+<note
+><para
+>El comando <command
+>kbuildsycoca</command
+> no se ejecuta como usuario «root». Debe llamarlo como usuario normal (pero tampoco <emphasis
+>es una idea muy buena</emphasis
+> realizar el desarrollo de software como «root»). </para
+></note>
+</sect3
+> <!-- compile-and-install-options-dir -->
+
+<!-- ### put a sect3 with other configuration options here -->
+
+</sect2
+> <!-- compile-and-install-options -->
+
+</sect1
+> <!-- compile-and-install -->
+
+<sect1 id="make-api">
+<title
+>Cómo obtener la documentación del API de &tdevelop;</title>
+
+<indexterm zone="make-api">
+ <primary
+>API</primary>
+ <secondary
+>&tdevelop;</secondary
+></indexterm>
+<indexterm zone="make-api">
+ <primary
+>&tdevelop;</primary>
+ <secondary
+>API</secondary
+></indexterm>
+<indexterm zone="make-api">
+ <primary
+>compilación</primary>
+ <secondary
+>&tdevelop;</secondary>
+ <tertiary
+>API</tertiary
+></indexterm>
+<indexterm zone="make-api">
+ <primary
+>configurar</primary>
+ <secondary
+>API de &tdevelop;</secondary
+></indexterm>
+
+<para
+>API significa <quote
+>interfaz del programa de aplicación</quote
+>. Relmente el API contiene una serie de descripciones (como convenciones de llamada) mediante las que un programa de aplicación puede acceder al sistema operativo y a otros servicios. En nuestro contexto se ha adoptado una definición más amplia: el API de una aplicación &Qt; o de &kde; es un extracto de las interfaces de las clases y de los métodos, una sinopsis para usar como un diccionario para navegar a través del código fuente. </para>
+<para
+>Existe una versión del API más reciente disponible en la <ulink url="http://www.tdevelop.org/HEAD/doc/api/html/index.html"
+>web de KDevelop</ulink
+>. Se actualiza automáticamente cada 24 horas, de modo que siempre esté al día. </para>
+<para
+>Esta versión se usa mejor en modo de solo lectura a través de Internet. Si no dispone de acceso permanente a Internet también puede construir su propia documentación del API a partir del código fuente de &tdevelop;. Para ello debe de indicar al sistema «automake» dónde encontrar el API de KDELIBS en su sistema. Esto se consigue con la opción especial <option
+>--with-tdelibsdoxy-dir</option
+> en el comando <command
+>configure</command
+> cuando prepare la compilación del código fuente de &tdevelop;: </para>
+
+<informalexample
+><simplelist>
+ <member
+><prompt
+>~/kde3src/tdevelop&gt; </prompt
+> <userinput
+>./configure --</userinput
+>(opciones usuales)<userinput
+> \</userinput
+> </member>
+ <member>
+ <userinput
+>--with-tdelibsdoxy-dir=$KDEDIR/share/doc/HTML/en/tdelibs-apidocs</userinput>
+ </member>
+</simplelist
+></informalexample>
+
+<para
+>(<command
+>make</command
+> sustituirá la variable global <varname
+>$KDEDIR</varname
+> por la dirección de la carpeta real de &kde; guardada en ella). Ejecute luego el comando <command
+>make</command
+> <link linkend="compile-and-install-make-basic"
+>como siempre</link
+>. Una vez construido el IDE &tdevelop; también tendrá la oportunidad de construir su API. Para ello debe ejecutar </para>
+<informalexample
+><simplelist
+><member
+><prompt
+>~/kde3src/tdevelop&gt; </prompt
+> <userinput
+>make apidocs</userinput
+> </member
+></simplelist
+></informalexample>
+
+<para
+>Esto creará un archivo <filename
+>Doxyfile</filename
+> en la carpeta principal de &tdevelop; que luego será procesado por la aplicación <application
+>Doxygen</application
+> para generar un buen número de archivos <filename
+>.html</filename
+> con la documentación del API. Cuando este a menudo largo proceso (puede durar más de una hora en un sistema lento) llegue a su fin, tendrá que instalar la documentación del API del mismo modo que tiene que instalar el IDE &tdevelop;. Si es necesario, obtenga permisos de superusuario con </para>
+
+<informalexample
+><simplelist
+><member
+><prompt
+>~/kde3src/tdevelop&gt; </prompt
+> <userinput
+>su</userinput
+> </member
+></simplelist
+></informalexample>
+
+<para
+>e introduzca la contraseña del usuario root. Luego, instale los archivos del API: </para>
+
+<informalexample
+><simplelist
+><member
+><prompt
+>~/kde3src/tdevelop&gt; </prompt
+> <userinput
+>make install-apidox</userinput
+> </member
+></simplelist
+></informalexample>
+
+<para
+>Cuando haya terminado <command
+>make</command
+> le informará de la carpeta donde encontrará el contenido de la documentación del API. Apunte esa dirección, ya que podrá usarla desde &konqueror; al igual que desde &tdevelop;, en el caso de que haya configurado el código fuente de &tdevelop; como un proyecto sobre el que trabajar. </para>
+
+<note
+><para
+>Es muy probable que vea un buen número de mensajes de aviso y/o de error mientras <application
+>Doxygen</application
+> genera la documentación del API. Puede ignorarlos, ya que solo tienen interés para los desarrolladores de &tdevelop;. Si la generación de la documentación del API termina con éxito, podrá utilizar los archivos <filename
+>.html</filename
+> que la contienen. </para
+></note>
+
+</sect1
+> <!-- make-api -->
+
+</appendix
+> <!-- tdevelop-install -->
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-mdi-mode.png b/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-mdi-mode.png
new file mode 100644
index 00000000000..eaa1d3d631c
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-mdi-mode.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-scripting.docbook b/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-scripting.docbook
new file mode 100644
index 00000000000..91317d194ff
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-scripting.docbook
@@ -0,0 +1,74 @@
+<chapter id="tdevelop-scripting">
+
+<chapterinfo>
+ <authorgroup>
+ <author
+><firstname
+>Ian</firstname
+><surname
+>Geiser</surname
+></author>
+ <!-- ROLES_OF_TRANSLATORS -->
+ </authorgroup>
+</chapterinfo>
+
+<title
+>Uso de guiones en KDevelop</title>
+
+<sect1 id="running-scripts">
+<title
+>Ejecución de guiones</title>
+<para
+>Para acceder a un guión que esté disponible para &tdevelop;, utilice el menú <menuchoice
+><guimenu
+>Herramientas</guimenu
+><guimenuitem
+>Guiones</guimenuitem
+></menuchoice
+>. Si no existiera dicha opción es porque no se dispone de guiones para KDevelop. </para>
+</sect1>
+
+<sect1 id="adding-scripts">
+<title
+>Añadir guiones</title>
+<para
+>Una vez que haya añadido el soporte KScript a su aplicación anfitriona, añadir guiones es bastante fácil. Los guiones se componen de dos partes: un archivo de escritorio que contiene metadatos sobre el guión, y el propio guión. Se usa esta aproximación por seguridad y por simplicidad. El archivo de escritorio proporciona metainformación para los menús y para el tipo de datos de guiones. Esto evita que la aplicación anfitriona tenga que inspeccionar la carga de cada guión. A continuación veremos un ejemplo de este tipo de archivo: </para>
+<para
+>El ejemplo anterior muestra las partes principales que buscará KScript. El primer elemento («Name») es el nombre que se mostrará al usuario en la aplicación anfitriona, y el «Comment» se ofrecerá probablemente a modo de ayuda emergente. «Type» es el elemento más importante. Se usa para seleccionar el motor de guiones adecuado para ejecutar el guión. Actualmente, los únicos disponibles para KDE son «ShellScript/bash» y «JavaScript/kjs». El siguiente paso consiste en crear el verdadero guión. Para el ejemplo anterior, el «Type» de guión que se ha usado es «ShellScript/bash». El motor de guiones proporciona varias cosas al desarrollador. El primer elemento es el ID de la aplicación anfitriona para DCOP, que se pasa al guión como primer argumento. Esto significa que en cualquier parte del guión el valor «$1» devolverá el identificador DCOP del anfitrión. Un ejemplo de guión del intérprete de comandos se muestra a continuación: </para>
+
+<para
+>Este guión es bastante simple: solo ejecuta un comando y hace que la salida de «ls -l» se tome como el primer documento de texto.</para>
+
+<para
+>Una de las herramientas más útiles para el desarrollo de guiones para aplicaciones consiste en usar la aplicación KDCOP.</para>
+<figure id="screenshot-kdcop" float="1">
+ <title
+>KDCOP examinando interfaces de DCOP en &tdevelop;</title>
+ <mediaobject>
+ <imageobject
+><imagedata fileref="kdcop_browsing.png"/></imageobject>
+ </mediaobject>
+</figure>
+
+<para
+>La herramienta KDCOP permite a los desarrolladores de guiones navegar y depurar las interfaces actuales de la aplicación anfitriona. KDCOP también proporciona la elegante característica de permitir que los usuarios seleccionen un método y arrastren y suelten el código actual a su editor de textos. Esto simplifica su uso por parte de personas que no están acostumbradas a los métodos del lenguaje anfitrión de DCOP. En la actualidad, KDCOP soporta métodos KJSEmbed, Python y del intérprete de comandos de UNIX para acceder a DCOP.</para>
+
+<para
+>Una vez que el guión se ha completado, está listo para ser instalado. Los desarrolladores de aplicaciones deben documentar la ubicación donde se encuentran los guiones. En el caso del ejemplo anterior para Kate, los guiones se encuentran en «$KDEDIRS/share/apps/kate/scripts».</para>
+
+<figure id="screenshot-scripts" float="1">
+ <title
+>Guiones de &tdevelop; sobre el sistema de archivos</title>
+ <mediaobject>
+ <imageobject
+><imagedata fileref="script_location.png"/></imageobject>
+ </mediaobject>
+</figure>
+
+<para
+>El archivo de escritorio para el guión y su guión asociado deben residir en la misma carpeta. También se recomienda a los desarrolladores de guiones que el resto de los recursos que use el guión residan también en misma carpeta que el guión. En el ejemplo anterior, el guión aparecerá bajo el menú «Herramientas->Guiones de KDE». Una cosa importante a tener en cuenta por los desarrolladores de guiones es que no se deben realizar operaciones que puedan bloquear el sistema durante un largo periodo de tiempo, o que provoquen un bucle sin fin. Esto se debe a que la implementación actual de la interfaz de guiones está concebida para tareas automáticas que se ejecutan hasta su final. Este problema será solucionado en KDE 4. </para>
+
+</sect1>
+
+
+</chapter>
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-survey.docbook b/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-survey.docbook
new file mode 100644
index 00000000000..b3243423bae
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-survey.docbook
@@ -0,0 +1,778 @@
+<chapter id="tdevelop-survey">
+
+<chapterinfo>
+ <authorgroup>
+ <author
+><firstname
+>Bernd</firstname
+><surname
+>Pol</surname
+></author>
+ <!-- ROLES_OF_TRANSLATORS -->
+ </authorgroup>
+</chapterinfo>
+
+<title
+>Un vistazo a las características de &tdevelop;</title>
+
+<indexterm zone="tdevelop-survey">
+ <primary
+>&tdevelop;</primary>
+ <secondary
+>survey</secondary
+></indexterm>
+<indexterm zone="tdevelop-survey">
+ <primary
+>vista general</primary
+></indexterm>
+<indexterm zone="tdevelop-survey">
+ <primary
+>survey</primary
+></indexterm>
+
+<para
+>&tdevelop; integra gran cantidad de herramientas, guiones y plantillas en una interfaz común de usuario. Básicamente consiste en: <itemizedlist>
+ <listitem
+><para
+>varios <link linkend="uimodes-survey"
+>modos de interfaz de usuario</link
+> mediante los que puede seleccionar el aspecto del área de trabajo, </para
+></listitem>
+ <listitem
+><para
+>un <link linkend="applicationwizard"
+>&appwizard;</link
+> que le ayuda a generar un nuevo proyecto, </para
+></listitem>
+ <listitem
+><para
+>varios <link linkend="makesystems"
+>sistemas de gestión del proyecto</link
+> que le ayudan a construir y gestionar su proyecto, </para
+></listitem>
+ <listitem
+><para
+>algunas <link linkend="editing"
+>herramientas de edición</link
+> para trabajar fácilmente en el texto de su programa, </para
+></listitem>
+ <listitem
+><para
+>varios <link linkend="file-browsers"
+>navegadores de archivos</link
+> que le proporcionan diferentes vistas de su sistema de archivos, </para
+></listitem>
+ <listitem
+><para
+>varios <link linkend="class-browsers"
+>navegadores de clases</link
+> para ayudarle a mantener las clases y sus relaciones de su proyecto de programación orientada a objetos, </para
+></listitem>
+ <listitem
+><para
+>una <link linkend="debugger"
+>interfaz de depuración</link
+> para encontrar y eliminar errores del programa desde &tdevelop;, y </para
+></listitem>
+ <listitem
+><para
+>algunas <link linkend="plugin-tools"
+>extensiones de herramientas</link
+>, que son módulos extensibles que se pueden cargar en tiempo de ejecución y bajo demanda. Esto le permite activar solo las características que realmente necesita. </para
+></listitem>
+ <listitem
+><para
+>un conjunto de diagnósticos, documentación y herramientas de optimización. </para
+></listitem>
+</itemizedlist>
+</para>
+
+<note>
+ <para
+>De hecho, existen tres aplicaciones basadas en &tdevelop;: </para>
+ <itemizedlist>
+ <listitem
+><para
+>El IDE &tdevelop; &mdash; este es el lugar donde normalmente trabajará.</para
+></listitem>
+ <listitem
+><para
+>El navegador de documentación independiente, el Asistente de &tdevelop; &mdash; aisla todas las poderosas características de documentación del IDE &tdevelop; en una herramienta separada. Esto puede resultar útil cuando necesita buscar determinada documentación de programación pero no quiere iniciar todo el IDE.</para
+></listitem>
+ <listitem
+><para
+>El Diseñador de &tdevelop; &mdash; mejora el diseñador de interfaces de usuario de &Qt; con los elementos específicos de &kde; y se integra de un modo agradable en el IDE de &tdevelop;.</para
+></listitem>
+ </itemizedlist>
+</note>
+
+
+<sect1 id="uimodes-survey">
+<title
+>Modos de interfaz de usuario disponibles</title>
+
+<indexterm zone="uimodes-survey">
+ <primary
+>&tdevelop;</primary>
+ <secondary
+>modos de interfaz de usuario</secondary
+></indexterm>
+<indexterm zone="uimodes-survey">
+ <primary
+>interfaz de usuario</primary>
+ <secondary
+>Modos de &tdevelop;</secondary
+></indexterm>
+<indexterm zone="uimodes-survey">
+ <primary
+>Modos de la interfaz del usuario</primary
+></indexterm>
+<indexterm zone="uimodes-survey">
+ <primary
+>Ventanas de marco hijo</primary
+></indexterm>
+<indexterm zone="uimodes-survey">
+ <primary
+>Páginas tabuladas</primary
+></indexterm>
+<indexterm zone="uimodes-survey">
+ <primary
+>Ventanas de nivel superior</primary
+></indexterm>
+<indexterm zone="uimodes-survey">
+ <primary
+>IDEAl</primary
+></indexterm>
+
+<para
+>&tdevelop; ofrece a los desarrolladores cuatro modos distintos de interfaz de usuario (pulse sobre el nombre de cada modo para ver un ejemplo): <itemizedlist>
+ <listitem
+><para
+><link linkend="ideal-desc"
+>IDEAl</link
+></para>
+ <para
+>Esta es una interfaz para usuarios principiantes que se centra en la optimización del espacio de trabajo y en el manejo intuitivo de las herramientas. </para>
+ <itemizedlist>
+ <listitem
+><para
+>Todas las vistas de herramientas están ancladas en una barra de pestañas alrededor del área de la ventana principal. Están agrupadas a la izquierda, abajo y a la derecha según los servicios que proporcionan. </para
+></listitem>
+ <listitem
+><para
+>Las vistas del editor y del navegador estarán apiladas en una ventana de pestañas de gran tamaño en medio del área de la ventana principal. </para
+></listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para
+><link linkend="mdi-desc"
+>Ventanas de marco hijo</link
+></para>
+ <itemizedlist>
+ <listitem
+><para
+>Todas las vistas de herramientas están inicialmente ancladas en el marco de la ventana principal.</para
+></listitem>
+ <listitem
+><para
+>Las vistas del editor y del navegador coexistirán como ventanas de nivel superior dentro del área de visibilidad de la ventana principal.</para
+></listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para
+><link linkend="tabbed-desc"
+>Páginas tabuladas</link
+></para>
+ <itemizedlist>
+ <listitem
+><para
+>Todas las vistas de herramientas están inicialmente ancladas en el marco de la ventana principal. </para
+></listitem>
+ <listitem
+><para
+>Las vistas del editor y del navegador estarán apiladas en una ventana con pestañas. </para
+></listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para
+><link linkend="toplevel-desc"
+>Ventanas de nivel superior</link
+></para>
+ <itemizedlist>
+ <listitem
+><para
+>Todas las vistas del editor, del navegador y de las herramientas serán ventanas de nivel superior, directamente sobre el escritorio. </para
+></listitem>
+ <listitem
+><para
+>El «widget» principal contiene sólo el menú, las barras de herramientas y la barra de estado. </para
+></listitem>
+ </itemizedlist>
+ </listitem>
+
+</itemizedlist>
+</para>
+
+<sect2 id="uimodes-switch">
+<title
+>Cómo cambiar los modos de interfaz de usuario</title>
+
+<indexterm zone="uimodes-switch">
+ <primary
+>interfaz de usuario</primary>
+ <secondary
+>cambiar modos</secondary
+></indexterm>
+<indexterm zone="uimodes-switch">
+ <primary
+>cambiar modos de interfaz del usuario</primary
+></indexterm>
+
+<para
+>Para cambiar el modo de la interfaz de usuario seleccione <menuchoice
+> <guimenu
+>Preferencias</guimenu
+> <guimenuitem
+>Configurar KDevelop...</guimenuitem
+> </menuchoice
+> en el menú. Se mostrará el diálogo <guilabel
+>Personalizar KDevelop</guilabel
+>, donde tendrá que seleccionar <guilabel
+>Interfaz de usuario</guilabel
+> en el árbol de opciones de la izquierda. Esto hará que se muestre la página de preferencias inferior. </para>
+
+<screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="select-user-interface.png" format="PNG"/>
+ </imageobject>
+ <caption
+><para
+>Seleccionar un modo de interfaz de usuario </para
+></caption>
+ </mediaobject>
+</screenshot>
+
+<para
+>(Las versiones anteriores de &tdevelop; solo proporcionan la sección de opciones superior.) </para>
+
+<para
+>En la sección <guilabel
+>Modo principal de interfaz de usuario</guilabel
+>, seleccione la opción del modo de interfaz con el que desea trabajar. </para>
+<para
+>Dependiendo del modo de interfaz de usuario que seleccione, estarán disponibles otras secciones de configuración con las que puede afinar más detalles del aspecto según sus preferencias. Consulte el capítulo <link linkend="setup-ui"
+>Selección de la interfaz de usuario</link
+> para obtener más detalles. </para>
+
+<note
+><para
+>No olvide reiniciar &tdevelop; para que su selección tenga efecto. </para
+></note>
+
+</sect2
+> <!-- uimodes-switch -->
+
+<sect2 id="maximize-workspace">
+<title
+>Cómo maximizar el área del espacio de trabajo</title>
+
+<indexterm zone="maximize-workspace">
+ <primary
+>&tdevelop;</primary>
+ <secondary
+>espacio de trabajo</secondary
+></indexterm>
+<indexterm zone="maximize-workspace">
+ <primary
+>&tdevelop;</primary>
+ <secondary
+>maximizar espacio de trabajo</secondary
+></indexterm>
+<indexterm zone="maximize-workspace">
+ <primary
+>interfaz de usuario</primary>
+ <secondary
+>espacio de trabajo</secondary
+></indexterm>
+<indexterm zone="maximize-workspace">
+ <primary
+>interfaz de usuario</primary>
+ <secondary
+>barra de menú</secondary
+></indexterm>
+<indexterm zone="maximize-workspace">
+ <primary
+>interfaz de usuario</primary>
+ <secondary
+>modo de pantalla completa</secondary
+></indexterm>
+<indexterm zone="maximize-workspace">
+ <primary
+>modo de pantalla completa</primary
+></indexterm>
+<indexterm zone="maximize-workspace">
+ <primary
+>barra de menú</primary>
+ <secondary
+>ocultar/mostrar</secondary
+></indexterm>
+<indexterm zone="maximize-workspace">
+ <primary
+>ocultar la barra de menú</primary
+></indexterm>
+<indexterm zone="maximize-workspace">
+ <primary
+>mostrar la barra de menú</primary
+></indexterm>
+
+<para
+> Para maximizar el espacio dispone de un modo a pantalla completa que expande el área de la ventana principal hasta los bordes de la pantalla. Puede ganar espacio adicional ocultando la barra de menú. Por supuesto, también puede ocultar cualquier barra de herramientas del mismo modo a como lo hace en cualquier aplicación de <application
+>KDE</application
+>. </para>
+
+<variablelist>
+<varlistentry>
+<term
+>Modo de pantalla completa</term>
+<listitem>
+<para
+>Para entrar o salir del modo de pantalla completa, seleccione <menuchoice
+> <guimenu
+>Ver</guimenu
+> <guimenuitem
+>Modo de pantalla completa</guimenuitem
+> </menuchoice
+> en el menú, o pulse <keycombo
+>&Ctrl;&Shift;<keycap
+>F</keycap
+> </keycombo
+>. También dispone de un icono <guiicon
+>Modo de pantalla completa</guiicon
+> en la <guilabel
+>Barra de herramientas de navegación</guilabel
+>.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term
+>Ocultar/mostrar la barra de menú</term>
+<listitem>
+<para
+> Para <emphasis
+>ocultar</emphasis
+> la barra de menú, seleccione en el menú <menuchoice
+> <guimenu
+>Preferencias</guimenu
+> <guimenuitem
+>Mostrar barra de menú</guimenuitem
+> </menuchoice
+>, o pulse <keycombo
+>&Ctrl;<keycap
+>M</keycap
+> </keycombo
+>. También puede incluir un icono <guiicon
+>Mostrar barra de menú</guiicon
+> en una barra de herramientas adecuada, como la <guilabel
+>Barra de herramientas de navegación</guilabel
+>. Para <emphasis
+>mostrar</emphasis
+> la barra de menú, puede pulsar la combinación <keycombo
+> &Ctrl;<keycap
+>M</keycap
+> </keycombo
+> o usar el icono <guiicon
+>Mostrar barra de menú</guiicon
+>, si está disponible. </para>
+</listitem>
+</varlistentry>
+</variablelist>
+
+</sect2
+> <!-- maximize-workspace -->
+
+</sect1
+> <!-- uimodes-survey -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="ui-elements">
+<title
+>Elementos de la interfaz de usuario</title>
+
+<para
+>(... pendiente de escribir ...) </para>
+
+<sect2 id="ui-elements-workarea">
+<title
+>El área de trabajo</title>
+
+<para
+>(... pendiente de escribir ...) </para>
+</sect2
+> <!-- ui-elements-workarea -->
+
+<sect2 id="ui-elements-titlebar">
+<title
+>La barra de título de &tdevelop;</title>
+
+<para
+>(... pendiente de escribir ...) </para>
+</sect2
+> <!-- ui-elements-titlebar -->
+
+<sect2 id="ui-elements-statusbar">
+<title
+>La barra de estado de &tdevelop;</title>
+
+<para
+>(... pendiente de escribir ...) </para>
+</sect2
+> <!-- ui-elements-statusbar -->
+
+<sect2 id="ui-elements-menubar">
+<title
+>La barra de menú</title>
+
+<para
+>(... pendiente de escribir ...) </para>
+</sect2
+> <!-- ui-elements-menubar -->
+
+<sect2 id="ui-elements-toolbars">
+<title
+>Las barras de herramientas</title>
+
+<para
+>(... pendiente de escribir ...) </para>
+</sect2
+> <!-- ui-elements-toolbars -->
+
+<sect2 id="ui-elements-treetoolviews">
+<title
+> Las vistas de herramientas en árbol</title>
+
+<para
+>(... pendiente de escribir ...) </para>
+</sect2
+> <!-- ui-elements-treetoolviews -->
+
+<sect2 id="ui-elements-outputtoolviews">
+<title
+>Las vistas de herramientas de salida</title>
+
+<para
+>(... pendiente de escribir ...) </para>
+</sect2
+> <!-- ui-elements-outputtoolviews -->
+
+</sect1
+> <!-- ui-elements -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="makesystems">
+<title
+>Sistemas de gestión del proyecto</title>
+
+<indexterm zone="makesystems">
+ <primary
+>gestión del proyecto</primary
+></indexterm>
+
+<para
+>Globalmente, un proyecto confiará en algún tipo de sistema de gestión de proyectos. &tdevelop; ofrece cuatro de estos <emphasis
+>sistemas de gestión de proyectos</emphasis
+> que el programador puede seleccionar cuando crea un proyecto nuevo. <itemizedlist>
+ <listitem
+><para
+>Los <link linkend="automake-project"
+>proyectos automake</link
+> utilizan las herramientas de desarrollo estándar de &GNU;. </para
+></listitem>
+ <listitem
+><para
+>Los <link linkend="qmake-project"
+>proyectos QMake</link
+> utilizan el gestor de proyectos QMake, de Trolltech. </para
+></listitem>
+ <listitem
+><para
+>Los <link linkend="ant-project"
+>proyectos ANT</link
+> utilizan el gestor de proyectos ANT, de Apache, para desarrollos en &Java;. </para
+></listitem>
+ <listitem
+><para
+>Los <link linkend="custom-project"
+>proyectos personalizados</link
+> necesitan que usted mantenga sus propios <filename
+>Makefiles</filename
+>. </para
+></listitem>
+</itemizedlist>
+</para>
+
+<sect2 id="automake-project">
+<title
+>Proyectos automake</title>
+
+<indexterm zone="automake-project">
+ <primary
+>proyectos</primary>
+ <secondary
+>automake</secondary
+></indexterm>
+<indexterm zone="automake-project">
+ <primary
+>automake</primary>
+ <secondary
+>proyectos</secondary
+></indexterm>
+
+<para
+>Los proyectos creados con el &automanag; de &tdevelop; hacen que sea muy fácil para los desarrolladores utilizar las herramientas de desarrollo estándar de &GNU;. Proporcionan <itemizedlist>
+ <listitem
+><para
+>un mejor modo para generar archivos <filename
+>Makefile</filename
+>, y </para
+></listitem>
+ <listitem
+><para
+>una manera eficaz y sencilla de adaptarse rápidamente a diferentes sistemas mediante scripts <filename
+>configure</filename
+> generados por «autoconf». </para
+></listitem>
+</itemizedlist>
+</para>
+</sect2
+> <!-- automake-project -->
+
+<sect2 id="qmake-project">
+<title
+>Proyectos QMake</title>
+
+<indexterm zone="qmake-project">
+ <primary
+>proyectos</primary>
+ <secondary
+>qmake</secondary
+></indexterm>
+<indexterm zone="qmake-project">
+ <primary
+>qmake</primary>
+ <secondary
+>proyectos</secondary
+></indexterm>
+
+<para
+>Para los desarrolladores que prefieren la flexibilidad y el estilo del sistema «qmake» de &Qt;, &tdevelop; ofrece la posibilidad de gestionar proyectos basados en «qmake» (archivos .pro) desde la interfaz de usuario. </para>
+<para
+>Para obtener más información sobre el gestor de proyectos QMake, consulte la <quote
+>Guía de usuario de qmake</quote
+> que debería estar incluida en su distribución, o mire en la web sobre la <ulink url="http://doc.trolltech.com/"
+>Documentación de Trolltech</ulink
+>, donde puede encontrar la documentación de QMake para su versión de la <quote
+>herramienta de desarrollo de aplicaciones gráficas en C++ de Qt</quote
+>. </para>
+</sect2
+> <!-- qmake-project -->
+
+<sect2 id="cmake-project">
+<title
+>Proyectos CMake</title>
+
+<indexterm zone="cmake-project">
+ <primary
+>proyectos</primary>
+ <secondary
+>cmake</secondary
+></indexterm>
+<indexterm zone="cmake-project">
+ <primary
+>cmake</primary>
+ <secondary
+>proyectos</secondary
+></indexterm>
+
+<para
+>CMake será el sistema de construcción de &kde; para &kde; 4. &tdevelop; ya le proporciona algunas plantillas C y C++ basadas en CMake. Solo necesita que el programa cmake esté en su $<envar
+>PATH</envar
+> para construir estos proyectos. </para>
+<para
+>Para preparar un nuevo proyecto C o C++ en &tdevelop; seleccione <menuchoice
+><guimenu
+>Proyecto</guimenu
+> <guimenuitem
+>Nuevo proyecto...</guimenuitem
+> <guimenuitem
+>C o C++</guimenuitem
+> <guimenuitem
+>Proyectos basados en CMake</guimenuitem
+> <guimenuitem
+>Una plantilla de biblioteca compartida o programa «Hola mundo»</guimenuitem
+> </menuchoice
+>. </para>
+</sect2
+> <!-- cmake-project -->
+
+<sect2 id="ant-project">
+<title
+>Proyectos ANT (proyectos &Java;)</title>
+
+<indexterm zone="ant-project">
+ <primary
+>proyectos</primary>
+ <secondary
+>ant</secondary
+></indexterm>
+<indexterm zone="ant-project">
+ <primary
+>ant</primary>
+ <secondary
+>proyectos</secondary
+></indexterm>
+<indexterm zone="ant-project">
+ <primary
+>proyectos</primary>
+ <secondary
+>Java</secondary
+></indexterm>
+<indexterm zone="ant-project">
+ <primary
+>Java</primary>
+ <secondary
+>proyectos</secondary
+></indexterm>
+<indexterm zone="ant-project">
+ <primary
+>desarrollo</primary>
+ <secondary
+>Java</secondary
+></indexterm>
+
+<para
+>Es posible que los desarrolladores de proyectos &Java; deseen usar el gestor de proyectos ANT, de Apache. Para generar un nuevo proyecto Ant en &tdevelop;, seleccione <menuchoice
+><guimenu
+>Proyecto</guimenu
+> <guimenuitem
+>Nuevo proyecto...</guimenuitem
+> <guimenuitem
+>Java</guimenuitem
+> <guimenuitem
+>Proyecto Ant</guimenuitem
+> <guimenuitem
+>Aplicación</guimenuitem
+></menuchoice
+>. </para>
+<para
+>Para más información, consulte la página del <ulink url="http://ant.apache.org/"
+>proyecto Ant de Apache</ulink
+>. </para>
+</sect2
+> <!-- ant-project -->
+
+<sect2 id="custom-project">
+<title
+>Proyectos personalizados</title>
+
+<indexterm zone="custom-project">
+ <primary
+>proyectos</primary>
+ <secondary
+>personalizado</secondary
+></indexterm>
+<indexterm zone="custom-project">
+ <primary
+>proyectos personalizados</primary
+></indexterm>
+<indexterm zone="custom-project">
+ <primary
+>Makefile</primary>
+ <secondary
+>proyectos personalizados</secondary
+></indexterm>
+
+<para
+>Si prefiere mantener sus propios <filename
+>Makefiles</filename
+> para su proyecto, puede usar la opción para proyectos personalizados de &tdevelop;. Esto resulta adecuado para proyectos con estructuras inusuales, o si quiere tener control total sobre el proceso <command
+>make</command
+>. </para>
+<para
+>Incluso si no <emphasis
+>necesita realmente</emphasis
+> la flexibilidad extra ni el control sobre el gestor de proyectos personalizado, debería considerar el uso de &automanag; u otro de los gestores de proyectos, ya que facilitan enormemente los procesos de creación y distribución de programas. </para>
+</sect2
+> <!-- custom-project -->
+
+<sect2 id="makesystems-distribution">
+<title
+>Cómo distribuir su aplicación</title>
+
+<indexterm zone="makesystems-distribution">
+ <primary
+>distribución</primary
+></indexterm>
+<indexterm zone="makesystems-distribution">
+ <primary
+>aplicación</primary>
+ <secondary
+>distribución</secondary
+></indexterm>
+<indexterm zone="makesystems-distribution">
+ <primary
+>paquetes binarios</primary
+></indexterm>
+
+<para
+>La distribución de sus aplicaciones solo necesita que el usuario final tenga instalado en su sistema <itemizedlist>
+ <listitem
+><para
+>un compilador apropiado,</para
+></listitem>
+ <listitem
+><para
+>un enlazador, y</para
+></listitem>
+ <listitem
+><para
+>las bibliotecas de desarrollo necesarias,</para
+></listitem>
+</itemizedlist>
+</para>
+<para
+>que, al menos para las aplicaciones en C++, suele ser lo usual. Pero también puede distribuir <emphasis
+>paquetes binarios</emphasis
+> de su aplicación. De cualquier modo, el usuario final de su producto no necesita tener instalado &tdevelop;. </para>
+<para
+>Le recomendamos que también incluya el <emphasis
+>archivo de proyecto</emphasis
+> de &tdevelop; junto a su código fuente. Esto facilita el trabajo de otros programadores con su código fuente (si usan &tdevelop;). </para>
+<para
+>También debería hacer esto mismo con los proyectos en los que trabajan <emphasis
+>varios desarrolladores</emphasis
+>, tal vez en diferentes lugares. De este modo podrá asegurar la consistencia de los <filename
+>Makefiles</filename
+> para que no generen problemas. </para>
+<para
+>Incluso en las aplicaciones multilingües, los <emphasis
+>traductores</emphasis
+> no trabajaran realmente con el código fuente, excepto en los casos que necesiten hacer correcciones para activar el soporte de traducción. </para>
+
+</sect2
+> <!-- makesystems-distribution -->
+
+</sect1
+> <!-- makesystems -->
+
+</chapter
+> <!-- tdevelop-survey -->
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-tabbed-mode.png b/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-tabbed-mode.png
new file mode 100644
index 00000000000..c175c8a319b
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-tabbed-mode.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-toplevel-mode.png b/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-toplevel-mode.png
new file mode 100644
index 00000000000..a9ad46df68b
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/tdevelop-toplevel-mode.png
Binary files differ
diff --git a/tde-i18n-es/docs/tdevelop/tdevelop/unixdev.docbook b/tde-i18n-es/docs/tdevelop/tdevelop/unixdev.docbook
new file mode 100644
index 00000000000..1fdc07442cd
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tdevelop/unixdev.docbook
@@ -0,0 +1,643 @@
+<appendix id="unixdev">
+
+<appendixinfo>
+ <authorgroup>
+ <author
+><firstname
+>Bernd</firstname
+><surname
+>Pol</surname
+></author>
+ <!-- ROLES_OF_TRANSLATORS -->
+ </authorgroup>
+</appendixinfo>
+
+<title
+>Desarrollo en &UNIX;</title>
+
+<indexterm zone="unixdev"
+><primary
+>desarrollo</primary
+></indexterm>
+<indexterm zone="unixdev">
+ <primary
+>&UNIX;</primary>
+ <secondary
+>desarrollo</secondary
+></indexterm>
+
+<sect1 id="history">
+<title
+>Algunas puntualizaciones históricas</title>
+
+<indexterm zone="history"
+><primary
+>historia</primary
+></indexterm>
+<indexterm zone="history"
+><primary
+>lenguajes de guiones</primary
+></indexterm>
+<indexterm zone="history">
+ <primary
+>&UNIX;</primary>
+ <secondary
+>historia</secondary
+></indexterm>
+<indexterm zone="history">
+ <primary
+>&UNIX;</primary>
+ <secondary
+>tubería</secondary
+></indexterm>
+<indexterm zone="history">
+ <primary
+>&UNIX;</primary>
+ <secondary
+>shell</secondary
+></indexterm>
+<indexterm zone="history">
+ <primary
+>shell</primary>
+ <secondary
+>&UNIX;</secondary
+></indexterm>
+
+<para
+>Desde el principio, &UNIX; ha mantenido dos modelos de desarrollo muy distintos. Uno es el mundo de los <emphasis
+>lenguajes de programación de sistemas y aplicaciones</emphasis
+>, donde parte del código fuente se convierte en código máquina por un programa traductor, normalmente un <emphasis
+>compilador</emphasis
+> o un <emphasis
+>intérprete</emphasis
+>. El lenguaje de programación C es un ejemplo de esto. &UNIX; fue el primer núcleo de sistema operativo escrito en un lenguaje de alto nivel como este en lugar de un ensamblador fuertemente orientado a la máquina, que era lo común antes de ese momento (de hecho, incluso se puede afirmar que el lenguaje C fue creado para escribir el núcleo de &UNIX; y sus programas asociados en un sistema DEC PDP-11). </para>
+<para
+>El otro modelo de desarrollo es el mundo de los <emphasis
+>lenguajes de guión</emphasis
+> (o <emphasis
+>scripts</emphasis
+>). Este mundo evolucionó con la creación del intérprete de comandos de &UNIX;, que era la interfaz de usuario para comunicarse con el sistema operativo (y, al mismo tiempo, un lenguaje de programación de muy alto nivel). Un guión del intérprete de comandos se construye a partir de un conjunto de pequeños programas de utilidades, como <command
+>grep</command
+>, <command
+>sed</command
+> o <command
+>find</command
+>. Cada una de estas utilidades está diseñada para una tarea muy concreta. El truco consiste en que cada una de estas utilidades se puede conectar con otra mediante un sencillo mecanismo de transporte llamado <emphasis
+>tubería</emphasis
+>, que redirecciona la salida de la primera utilidad procesada hacia la entrada de la siguiente. De este modo, este sistema se convierte en una poderosa y muy flexible herramienta de programación. </para>
+<para
+>Ambos mundos han evolucionado a medida que el tiempo ha ido transcurriendo. Mientras que C se sigue utilizando en la actualidad, principalmente como un lenguaje de programación de sistemas, una de sus variantes denominada C++, enriquecida con la orientación a objetos y extensiones genéricas, encontró su lugar en el desarrollo de aplicaciones complejas en la década de 1990. Existen muchos más lenguajes de programación, e incluso los más antiguos siguen estando presentes (FORTRAN77 y Ada, por ejemplo, todavía mantienen su poderío en las aplicaciones matemáticas). </para>
+</sect1
+> <!-- history -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="unixdev-scripting-languages">
+<title
+>Lenguajes de guiones contemporáneos</title>
+<para
+>En el área de los lenguajes de guiones, se ha producido un alejamiento del intérprete de comandos, que sufre de problemas de portabilidad, hacia lenguajes que unifican en sus bibliotecas estándares toda la funcionalidad que normalmente se suele requerir, siendo aún capaces de interactuar con el mundo exterior mediante el mecanismo de tuberías cuando es preciso. </para>
+<para
+>Todos estos lenguajes de guiones tienen en común que son altamente portables entre variantes de &UNIX;, Microsoft &Windows;, &MacOS; o incluso VMS. Además, todos poseen implementaciones que se pueden distribuir libremente. </para>
+
+<sect2 id="unixdev-SL-Perl">
+<title
+>&perl;</title>
+
+<indexterm zone="unixdev-SL-Perl"
+><primary
+>Perl</primary
+></indexterm>
+<indexterm zone="unixdev-SL-Perl">
+ <primary
+>lenguajes de guiones</primary>
+ <secondary
+>Perl</secondary
+></indexterm>
+
+<para
+><ulink url="http://www.perl.com"
+>&perl;</ulink
+> se ha hecho popular como lenguaje de procesamiento de textos y de administración del sistema. Durante los inicios de la Web, los guiones CGI escritos en &perl; constituyeron un método ampliamente usado para crear páginas web dinámicas a partir del contenido de bases de datos. En la actualidad este método ha sido reemplazado principalmente por la extensión <command
+>mod_perl</command
+> del servidor web &apache;. Entre las virtudes de &perl; destacan su soporte integrado para trabajar con expresiones regulares avanzadas y su rica colección de módulos que pueden ser libremente distribuidos. </para>
+<para
+>Para obtener más información consulte la página web <ulink url="http://cpan.org"
+>Comprehensive Perl Archive Network (<acronym
+>CPAN</acronym
+>)</ulink
+>. </para>
+</sect2
+> <!-- unixdev-SL-Perl -->
+
+<sect2 id="unixdev-SL-Python">
+<title
+>Python</title>
+
+<indexterm zone="unixdev-SL-Python"
+><primary
+>Python</primary
+></indexterm>
+<indexterm zone="unixdev-SL-Python">
+ <primary
+>lenguajes de guiones</primary>
+ <secondary
+>Python</secondary
+></indexterm>
+
+<para
+><ulink url="http://www.python.org"
+>&python;</ulink
+> brilla por la elegancia de su sistema de clases y por la facilidad y flexibilidad con la que se puede acceder a bibliotecas externas de un modo que parezca que se trata de clases y funciones normales de &python;. Al contrario que &perl;, &python; posee una clara y concisa &API; integrada, que lo ha convertido en el lenguaje elegido para integrar en guiones a los programas de C y C++. </para>
+</sect2
+> <!-- unixdev-SL-Python -->
+
+<sect2 id="unixdev-SL-PHP">
+<title
+>PHP</title>
+
+<indexterm zone="unixdev-SL-PHP"
+><primary
+>PHP</primary
+></indexterm>
+<indexterm zone="unixdev-SL-PHP">
+ <primary
+>lenguajes de guiones</primary>
+ <secondary
+>PHP</secondary
+></indexterm>
+
+<para
+><ulink url="http://www.php.net"
+>&php;</ulink
+> fue diseñado como un lenguaje que se podía integrar directamente en las páginas &HTML;, por lo que se usa principalmente en la generación de contenidos dinámicos para la web. </para>
+</sect2
+> <!-- unixdev-SL-PHP -->
+</sect1
+> <!-- unixdev-scripting-languages -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+<sect1 id="unixdev-hl-script">
+<title
+>Lenguajes de guiones de más alto nivel</title>
+
+<para
+>Las aplicaciones de &UNIX; de más alto nivel suelen carecer de la velocidad y de la flexibilidad de los mecanismos de guiones orientados a caracteres que posee el intérprete de comandos. Esto es especialmente cierto en el mundo de las interfaces gráficas de usuario (&GUI;), como por ejemplo, &kde;. </para>
+<para
+>Han existido intentos de proporcionar mecanismos similares que funcionaran a un nivel de aplicación más alto, principalmente <link linkend="unixdev-corba"
+>CORBA</link
+> y, en el entorno &kde;, <link linkend="unixdev-dcop"
+>&DCOP;</link
+>. </para>
+
+<sect2 id="unixdev-corba">
+<title
+>El protocolo CORBA</title>
+
+<indexterm zone="unixdev-corba"
+><primary
+>CORBA</primary
+></indexterm>
+<indexterm zone="unixdev-corba">
+ <primary
+>lenguajes de guiones</primary>
+ <secondary
+>CORBA</secondary
+></indexterm>
+<indexterm zone="unixdev-corba">
+ <primary
+>comunicación</primary>
+ <secondary
+>CORBA</secondary
+></indexterm>
+
+<para
+><ulink url="http://www.omg.org/gettingstarted/corbafaq.htm"
+>CORBA</ulink
+> (<emphasis
+>Common Object Request Broker Architecture</emphasis
+>) es un intento de permitir que las aplicaciones de un sistema puedan funcionar conjuntamente a través de redes. Fue ideado de forma independiente por el comité de estándares privado <ulink url="http://www.omg.org"
+>OMG</ulink
+> (Object Management Group). </para>
+<para
+>Los programas basados en CORBA usan el protocolo estándar IIOP para comunicarse. Las implementaciones basadas en IIOP están disponibles para un amplio abanico de sistemas operativos, lenguajes de programación y redes, por lo que son altamente portables. </para>
+<para
+>El principal inconveniente de CORBA es su escasa velocidad. Mientras esto se puede tolerar en redes locales, se convierte en un verdadero cuello de botella para las comunicaciones entre aplicaciones de un entorno sin red local, como &kde;, que se ejecuta en una única máquina. </para>
+
+</sect2
+> <!-- unixdev-corba -->
+
+<sect2 id="unixdev-dcop">
+<title
+>La interfaz &DCOP;</title>
+
+<indexterm zone="unixdev-dcop"
+><primary
+>DCOP</primary
+></indexterm>
+<indexterm zone="unixdev-dcop">
+ <primary
+>lenguajes de guiones</primary>
+ <secondary
+>DCOP</secondary
+></indexterm>
+<indexterm zone="unixdev-dcop">
+ <primary
+>comunicación</primary>
+ <secondary
+>DCOP</secondary
+></indexterm>
+
+<para
+>Otra evolución de lenguajes de guión parecidos a &UNIX; es el protocolo <ulink url="http://developer.kde.org/documentation/library/kdeqt/dcop.html"
+><emphasis
+>DCOP</emphasis
+></ulink
+>, que fue ideado para que la comunicación entre aplicaciones de &kde; no adoleciera de las limitaciones de CORBA. </para>
+<para
+>&DCOP; significa <emphasis
+>protocolo de comunicación del escritorio</emphasis
+>, y está implementado como un sencillo mecanismo IPC/RPC construido para operar mediante conectores. En efecto, esto proporciona facilidades similares a las del tradicional sistema de tuberías de &UNIX;. </para>
+<para
+>Los lenguajes de guiones tradicionales del intérprete de comandos están basados en pequeños y brillantes programas de utilidades, que fueron diseñados para trabajar sobre una base estrictamente de texto. &DCOP; permite a los complejos programas gráficos comunicarse entre ellos de un modo bastante parecido. Esto permite, por ejemplo, que un programa de &kde; envíe mensajes a otro programa de &kde;, o que reciba datos de él según sus necesidades. </para>
+<para
+>No obstante, existen ciertos inconvenientes. Para usar &DCOP; un programa debe estar diseñado para contener una interfaz &DCOP; especial. Además, el proceso de comunicación &DCOP; es algo lento (aunque mucho más rápido que CORBA). Pero a cambio devuelve gran parte del poder y flexibilidad de los guiones de &UNIX; a los programas de alto nivel basados en interfaces gráficas de usuario. </para>
+<para
+>Para obtener más información, consulte el artículo <ulink url="http://developer.kde.org/documentation/library/kdeqt/dcop.html"
+>DCOP: Desktop COmmunications Protocol</ulink
+>, o <ulink url="developer.kde.org/documentation/library/cvs-api/dcop/html/index.html"
+>The &DCOP; Desktop Communication Protocol library</ulink
+>, la referencia del &API; de la biblioteca dcop de &kde;. </para>
+</sect2
+> <!-- unixdev-dcop -->
+
+</sect1
+> <!-- unixdev-hl-script -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="unixdev-buildsystems">
+<title
+>Sistemas de construcción</title>
+
+<para
+>Excepto para casos muy simples, un proyecto de programación consistirá en gran cantidad de bloques de construcción de código fuente, cada uno de ellossituado en un archivo distinto para que resulte más fácil de mantener. Para que funcione, es necesario traducir todo esto de modo efectivo a unas pocas unidades de código máquina, de tal modo que permita al sistema operativo cargar y ejecutar el programa. </para>
+<para
+>Para conseguir esto, las herramientas básicas que se necesitan son <itemizedlist>
+ <listitem
+><para
+>un <emphasis
+>editor de texto</emphasis
+> para escribir los archivos de código fuente, </para
+></listitem>
+ <listitem
+><para
+>un programa de traducción, normalmente un <emphasis
+>compilador</emphasis
+> para convertir el código fuente en archivos de código objeto, </para
+></listitem>
+ <listitem
+><para
+>un <emphasis
+>bibliotecario</emphasis
+> que recopila archivos de código objeto en bibliotecas para reutilizarlos fácilmente sin necesidad de volver a compilarlos, </para
+></listitem>
+ <listitem
+><para
+>un <emphasis
+>enlazador</emphasis
+>, que enlaza varios archivos de código objeto y bibliotecas en un único ejecutable, </para
+></listitem>
+ <listitem
+><para
+>un <emphasis
+>sistema «make»</emphasis
+>, que proporciona varios medios para gestionar todas estas cosas, y tampoco hay que olvidar </para
+></listitem>
+ <listitem
+><para
+>un <emphasis
+>depurador</emphasis
+> para (con fortuna) encontrar todos los errores del programa, y posiblemente otras herramientas de diagnóstico para conseguir que todo funcione a la perfección. </para
+></listitem>
+</itemizedlist>
+</para>
+
+<para
+>Cuando tenga un gran proyecto que consista posiblemente en cientos de archivos de código fuente, el proceso de compilación se volverá bastante laborioso. No querrá recompilar todos esos archivos cada vez que cambie solo alguno de ellos. Por el contrario, solo querrá compilar los archivos que resulten afectados por las modificaciones. Generalmente no resulta siempre fácil de determinar cuáles de los archivos deben ser recompilados. </para>
+<para
+>Cuando, por ejemplo, modifique el prototipo de una función en un archivo de cabecera, necesitará compilar cada archivo que incluya dicha cabecera. Si su proyecto contiene muchos de estos archivos, es probable que se olvide de alguno de ellos si tiene que realizar esta tarea manualmente. Precisamente por este motivo se hace necesario algún tipo de automatización. </para>
+
+<sect2 id="unixdev-buildsystems-make">
+<title
+>El proceso «make»</title>
+
+<indexterm zone="unixdev-buildsystems-make">
+ <primary
+>make</primary
+></indexterm>
+<indexterm zone="unixdev-buildsystems-make">
+ <primary
+>Makefile</primary
+></indexterm>
+<indexterm zone="unixdev-buildsystems-make">
+ <primary
+>regla</primary
+></indexterm>
+<indexterm zone="unixdev-buildsystems-make">
+ <primary
+>recompilaciones</primary
+></indexterm>
+<indexterm zone="unixdev-buildsystems-make">
+ <primary
+>objetivo</primary
+></indexterm>
+<indexterm zone="unixdev-buildsystems-make">
+ <primary
+>dependencias</primary
+></indexterm>
+<indexterm zone="unixdev-buildsystems-make">
+ <primary
+>comandos</primary
+></indexterm>
+
+<para
+>Una herramienta que se encarga de las recompilaciones es <command
+>make</command
+>. Sigue la pista de todo el trabajo utilizando un conjunto de <emphasis
+>reglas</emphasis
+> que describen qué hacer en caso de que parte de la información haya cambiado (normalmente un archivo de código fuente o de código objeto). Todas las reglas que pertenezcan a un determinado proyecto se guardan en lo que se denomina un <filename
+>Makefile</filename
+>, que es procesado por <command
+>make</command
+> cada vez que necesite actualizar su trabajo. </para>
+<para
+>Cada regla consiste en varios bloques de construcción, como <itemizedlist>
+ <listitem
+><para
+>un <emphasis
+>objetivo</emphasis
+>, &ie;, el archivo a construir </para
+></listitem>
+ <listitem
+><para
+>un juego de <emphasis
+>dependencias</emphasis
+>, básicamente los nombres de todos los archivos de los que depende el objetivo (&eg;, el nombre de un archivo de código fuente, del que el objetivo será el nombre del archivo objeto a construir), y </para
+></listitem>
+ <listitem
+><para
+>los <emphasis
+>comandos</emphasis
+> que deben ejecutarse para completar el <quote
+>make</quote
+> del objetivo (&ie;, para compilarlo o para enlazar otros archivos de código objeto para generar el archivo ejecutable del programa). </para
+></listitem>
+</itemizedlist>
+</para>
+<para
+>En esencia, el comando <command
+>make</command
+> leerá estas reglas una tras otra, comprobará cada archivo en la lista de dependencias de un determinado objetivo, y hará un «make» de este objetivo de nuevo si alguno de estos archivos ha cambiado, usando para ello los comandos listados en cada regla. </para>
+<para
+>Existen varias posibilidades adicionales para controlar este proceso, por lo que un <filename
+>Makefile</filename
+> puede convertirse en algo bastante complejo. No vamos a entrar en detalles sobre esto ahora. No obstante, le recomendamos que se familiarice con la sintaxis de <command
+>make</command
+>. Incluso si no suele usarlo directamente, la comprensión de los principios del sistema de construcción puede resultar bastante útil. Consulte el <ulink url="info://make/Top"
+><quote
+>Manual GNU de make</quote
+></ulink
+> para obtener más información. </para>
+<para
+>Para detalles de &tdevelop; más específicos, consulte el capítulo <link linkend="project-management"
+>Construcción y gestión de proyectos</link
+> de este manual. </para>
+<para
+>Existen varios manuales disponibles; consulte las <link linkend="automake-references"
+>referenciass</link
+> en el capítulo sobre construcción y gestión de proyectos. </para>
+</sect2
+> <!-- unixdev-buildsystems-make -->
+
+</sect1
+> <!-- unixdev-buildsystems -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="unixdev-guidevelopment">
+<title
+>Desarrollo &GUI;</title>
+
+<indexterm zone="unixdev-guidevelopment">
+ <primary
+>GUI</primary
+></indexterm>
+<indexterm zone="unixdev-guidevelopment">
+ <primary
+>interfaz gráfica de usuario</primary
+></indexterm>
+<indexterm zone="unixdev-guidevelopment">
+ <primary
+>interfaz de usuario</primary>
+ <secondary
+>GUI</secondary
+></indexterm>
+
+<para
+>Los desarrolladores de aplicaciones se han visto cada vez más incomodados al tener que crear, no solo las librerías y la lógica de sus programas, sino también al hecho de tener que proporcionar una interfaz de construcción personalizada que sea fácil de utilizar, intuitiva y funcional. Muchos programadores no están preparados para el desarrollo de interfaces gráficas, por lo que es habitual que las interfaces de usuario que crean estén pobremente diseñadas. </para>
+<para
+>Durante años, algunos principios de diseño comunes han ido evolucionando, y es altamente recomendable seguirlos. De este modo, sus interfaces de usuario tendrán una apariencia común que el usuario de su aplicación agradecerá. </para>
+<para
+>Existe una guía de estilo para el desarrollo de interfaces de &kde; que puede encontrar en <ulink url="http://developer.kde.org/documentation/standards/kde/style/basics/index.html"
+>Recomendaciones para interfaces de usuario de &kde;</ulink
+> en la página web del desarrollador de &kde;. </para>
+<para
+>Puede encontrar una breve introducción a los principios de diseño de &GUI; <ulink url="http://axp16.iie.org.mx/Monitor/v01n03/ar_ihc2.htm"
+>aquí</ulink
+>. </para>
+
+</sect1
+> <!-- unixdev-guidevelopment -->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<sect1 id="unixdev-ide">
+<title
+>Integración de conceptos y herramientas &ndash; el IDE</title>
+
+<indexterm zone="unixdev-ide">
+ <primary
+>IDE</primary
+></indexterm>
+<indexterm zone="unixdev-ide">
+ <primary
+>entorno de desarrollo integrado</primary
+></indexterm>
+<indexterm zone="unixdev-ide">
+ <primary
+>desarrollo</primary>
+ <secondary
+>IDE</secondary
+></indexterm>
+<indexterm zone="unixdev-ide">
+ <primary
+>entorno</primary>
+ <secondary
+>IDE</secondary
+></indexterm>
+
+<para
+>Existen herramientas separadas disponibles para casi todos los pasos del proceso de programación: planificación, edición, gestión de archivos y proceso de compilación, depuración, documentación y demás. Pero cuando el proyecto crece, los procesos de programación pueden llegar a convertirse en engorrosos. </para>
+<para
+>La mayor parte de este trabajo repetitivo debe realizarse durante las fases de diseño, compilación y depuración de un programa. Se puede ahorrar gran parte de este trabajo mediante el uso de plantillas y guiones. Y otra buena parte teniendo todas estas herramientas listas para usar y haciendo que se comuniquen entre ellas bajo una interfaz común. </para>
+<para
+>Por ejemplo, ¿no sería conveniente que un depurador fuera capaz de abrir un determinado archivo de código fuente en un editor y que colocara el cursor directamente en la posición de un error que acaba de encontrar? </para>
+<para
+>Los <emphasis
+>Entornos de Desarrollo Integrados</emphasis
+> (&IDE;) se idearon para adaptarse a estas necesidades. Este &IDE; integra todas las plantillas, herramientas y guiones que suelen ser necesarios durante el proceso de desarrollo en un úncio entorno de trabajo. </para>
+<para
+>&tdevelop; es uno de estos &IDE; para la plataforma &kde;. Proporciona un amplio abanico de herramientas que facilitan el desarrollo y el mantenimiento de proyectos, incluso para distintos lenguajes de programación y diversas plataformas. </para>
+
+<sect2 id="unixdev-ide-tdevelop">
+<title
+>Características básicas de &tdevelop; &kdevrelease;</title>
+
+<indexterm zone="unixdev-ide-tdevelop">
+ <primary
+>&tdevelop;</primary>
+ <secondary
+>características</secondary
+></indexterm>
+<indexterm zone="unixdev-ide-tdevelop">
+ <primary
+>características</primary
+></indexterm>
+
+<!-- ### copied from web page, needs to be updated -->
+
+<itemizedlist>
+ <listitem>
+ <para
+>Gestiona todas las <emphasis
+>herramientas de desarrollo</emphasis
+> necesarias para programar en C++, como un compilador, un enlazador, un depurador y un sistema de construcción.</para>
+ </listitem>
+ <listitem>
+ <para
+>Proporciona un <emphasis
+>&appwizard;</emphasis
+> que genera aplicaciones de ejemplo completamente funcionales.</para>
+ </listitem>
+ <listitem>
+ <para
+>Permite al usuario seleccionar un <emphasis
+>editor integrado</emphasis
+> basado en el editor para programadores &kwrite; de &kde;, el <application
+>QEditor</application
+> de Trolltech, u otros.</para>
+ </listitem>
+ <listitem>
+ <para
+>Un <emphasis
+>generador de clases</emphasis
+> para crear nuevas clases e integrarlas en el proyecto actual.</para>
+ </listitem>
+ <listitem>
+ <para
+><emphasis
+>Gestión de archivos</emphasis
+> para el código fuente, cabeceras, documentación, &etc;, a incluir en el proyecto.</para>
+ </listitem>
+ <listitem>
+ <para
+>Asistencia para <emphasis
+>crear manuales de usuario para la aplicación</emphasis
+> escritos con las herramientas de &kde;.</para>
+ </listitem>
+ <listitem>
+ <para
+><emphasis
+>Documentación para la &API;</emphasis
+>, basada en &HTML; y generada automáticamente para las clases del proyecto, con referencias cruzadas a las bibliotecas usadas.</para>
+ </listitem>
+ <listitem>
+ <para
+><emphasis
+>Soporte para internacionalización</emphasis
+>, que permite a los traductores añadir fácilmente su propio idioma a un proyecto, incluyendo soporte para &kbabel;.</para>
+ </listitem>
+ <listitem>
+ <para
+>Soporte para manejar un proyecto mediante uno de varios <emphasis
+>sistemas de versiones</emphasis
+> (&eg;, &CVS;), proporcionando una interfaz fácil de usar para las funciones más necesarias.</para>
+ </listitem>
+ <listitem>
+ <para
+>Una interfaz integrada de <emphasis
+>depuración</emphasis
+>.</para>
+ </listitem>
+ <listitem>
+ <para
+>Un emulador integrado de la <emphasis
+>consola</emphasis
+>.</para>
+ </listitem>
+ <listitem>
+ <para
+><emphasis
+>Resalte de sintaxis</emphasis
+> en los textos de código fuente.</para>
+ </listitem>
+ <listitem>
+ <para
+>Una utilidad de <emphasis
+>terminación automática de código</emphasis
+> para las variables y métodos de las clases, argumentos de funciones, y demás.</para>
+ </listitem>
+ <listitem>
+ <para
+><emphasis
+>Plantillas para la creación de distintos proyectos</emphasis
+> (módulos para &kcontrol;, añadidos para &kicker; (panel), KIOSlaves, extensiones para &konqueror; y estilos de escritorio, entre otros).</para>
+ </listitem>
+ <listitem>
+ <para
+>Cuatro <emphasis
+>vistas de navegación en árbol</emphasis
+> para cambiar con facilidad entre archivos de código fuente, archivos de cabecera, clases y documentación, eliminando la necesidad de un gestor de archivos externo.</para>
+ </listitem>
+ <listitem>
+ <para
+><emphasis
+>Soporte para compilación cruzada</emphasis
+>, con la posibilidad de especificar distintos compiladores, banderas de compilación, arquitecturas de destino, &etc;</para>
+ </listitem>
+ <listitem>
+ <para
+>Soporte para <emphasis
+>proyectos Qt/Embedded</emphasis
+> (como los de Zaurus e iPAQ).</para>
+ </listitem>
+ <listitem>
+ <para
+><emphasis
+>Inclusión de otros programas</emphasis
+> que necesite para desarrollar, añadiéndolos al menú <guimenuitem
+>Herramientas</guimenuitem
+>, según sus necesidades personales.</para>
+ </listitem>
+</itemizedlist>
+
+</sect2
+> <!-- unixdev-ide-tdevelop -->
+
+</sect1
+> <!-- unixdev-ide -->
+
+</appendix
+> <!-- unixdev -->
+
diff --git a/tde-i18n-es/docs/tdevelop/tip.database b/tde-i18n-es/docs/tdevelop/tip.database
new file mode 100644
index 00000000000..87ca1ad3e53
--- /dev/null
+++ b/tde-i18n-es/docs/tdevelop/tip.database
@@ -0,0 +1,30 @@
+...KDevelop ofrece AyudaRpida pulsando con el botn derecho sobre los elementos ?
+...Puede seleccionar el intervalo de autoguardado en el dilogo de configuracin ?
+...Si desea especificar opciones de la lnea de comandos a su programa de make, puede indicarlos en el dilogo de configuracin.
+...Si utiliza funciones de otras bibliotecas adems de aquellas con las que la aplicacin est enlazada, puede especificarlo en el dilogo de opciones del proyecto.
+...Si desea cambiar el nmero de versin de su aplicacin, puede cambiarlo en el dilogo de opciones del proyecto, automticamente actualizandose el mismo.
+Si desea crear un nuevo proyecto, elija "Proyecto"->"Nuevo..." de la barra de mens.
+Si no tiene la documentacin de las bibliotecas KDE, puede crearla eligiendo "Actualizar" en la patilla "Documentacin" del dilogo de configuracin de KDevelop.
+Si ha cambiado las clases de la aplicacin, debera actualizar la documentacin de su API eligiendo "Crear docs. de la API" en el men Proyecto.
+Puede ahorrar tiempo si selecciona "Compilar fichero" del men Construir o de la barra de herramientas para solo compilar el fichero que est siendo editado.
+Si busca informacin sobre clases o miembros de las clases, seleccione "Buscar ayuda sobre..." del men Ayuda.
+Si desea informacin sobre algo en la ventana de KDevelop, seleccione el botn "Qu es esto...?" en la barra de herramientas y pulse sobre el icono del que desea informacin.
+Truco: Puede buscar una palabra clave en la documentacin marcando dicha palabra y seleccionando "buscar:" en el men contextual.
+ El equipo de KDevelop le desea un buen da !
+Si ha encontrado un fallo en KDevelop, por favor, hganoslo saber. Las direcciones de contacto estn en el Manual de Usuario de KDevelop.
+Si desea aadir su propia documentacin al rbol de documentacin, pulse con el botn derecho en la entrada "Otros" del rbol. Configure entonces el camino y nombre de la entrada.
+...puede crear una nueva clase con "nueva clase" desde el men Proyecto ?
+...puede imprimir sus ficheros con a2ps o con enscript desde KDevelop ?
+Para abrir un proyecto, seleccione "Abrir" desde el men Proyecto.
+Si compila su proyecto y obtiene un error, puede pulsar en el mensaje de error para saltar al fichero y lnea en que se produjo el error.
+...puede usar atajos de teclado para mostrar y ocultar la vista de salida o de rbol.
+...puede depurar programas dentro de KDevelop seleccionando "Depurar" en el men Construir o pulsando en el icono Depurar ?
+...puede saltar entre clases seleccionando la lista desplegable en la barra de herramientas ?
+...puede editar ficheros xpm con kiconedit seleccionndolos en el rbol de vista de ficheros ?
+...puede seleccionar los avisos del compilador en el dilogo de opciones del proyecto ?
+...puede buscar cualquier texto marcado incluso dentro de la documentacin con el men del botn derecho ?
+...puede copiar texto desde el navegador de documentacin al portapapeles con el men del botn derecho e insertarlo en sus fuentes ?
+...debera actualizar la documentacin de sus bibliotecas tras instalar nuevas bibliotecas?
+...puede configurar el resaltado de sintaxis del editor ?
+...puede hacer y deshacer sus acciones y elegir el nmero de pasos en el dilogo del editor?
+Si encuentra un fallo en la traduccin, bien sean errores gramaticales, ortogrficos, de coherencia..., por favor comunquelo al encargado de la traduccin al espaol: Salvador Gimeno Zann <salgiza@eui.upv.es>. \ No newline at end of file