From 9b58d35185905f8334142bf4988cb784e993aea7 Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Mon, 21 Nov 2011 02:23:03 -0600 Subject: Initial import of extracted KDE i18n tarballs --- tde-i18n-es/docs/kdevelop/Makefile.am | 4 + tde-i18n-es/docs/kdevelop/Makefile.in | 613 ++++ tde-i18n-es/docs/kdevelop/api/Architecture.png | Bin 0 -> 69751 bytes tde-i18n-es/docs/kdevelop/api/Development.png | Bin 0 -> 34678 bytes tde-i18n-es/docs/kdevelop/api/Makefile.am | 4 + tde-i18n-es/docs/kdevelop/api/Makefile.in | 613 ++++ tde-i18n-es/docs/kdevelop/api/propeditor1.png | Bin 0 -> 6507 bytes tde-i18n-es/docs/kdevelop/api/propeditor2.png | Bin 0 -> 5243 bytes .../docs/kdevelop/kde_app_devel/Makefile.am | 4 + .../docs/kdevelop/kde_app_devel/Makefile.in | 635 ++++ .../docs/kdevelop/kde_app_devel/appwizard.png | Bin 0 -> 62317 bytes .../docs/kdevelop/kde_app_devel/index.cache.bz2 | Bin 0 -> 23507 bytes .../docs/kdevelop/kde_app_devel/index.docbook | 1876 ++++++++++ .../docs/kdevelop/kde_app_devel/kscribblefiles.png | Bin 0 -> 4203 bytes tde-i18n-es/docs/kdevelop/kdearch/Makefile.am | 4 + tde-i18n-es/docs/kdevelop/kdearch/Makefile.in | 635 ++++ .../docs/kdevelop/kdearch/affine-general.png | Bin 0 -> 2308 bytes .../docs/kdevelop/kdearch/affine-rotate.png | Bin 0 -> 1140 bytes tde-i18n-es/docs/kdevelop/kdearch/affine-scale.png | Bin 0 -> 1017 bytes tde-i18n-es/docs/kdevelop/kdearch/affine-shear.png | Bin 0 -> 1024 bytes .../docs/kdevelop/kdearch/affine-translate.png | Bin 0 -> 1031 bytes tde-i18n-es/docs/kdevelop/kdearch/brushstyles.png | Bin 0 -> 3957 bytes tde-i18n-es/docs/kdevelop/kdearch/canvas.png | Bin 0 -> 24348 bytes tde-i18n-es/docs/kdevelop/kdearch/capflat.png | Bin 0 -> 230 bytes tde-i18n-es/docs/kdevelop/kdearch/capround.png | Bin 0 -> 242 bytes tde-i18n-es/docs/kdevelop/kdearch/capsquare.png | Bin 0 -> 148 bytes tde-i18n-es/docs/kdevelop/kdearch/index.cache.bz2 | Bin 0 -> 30698 bytes tde-i18n-es/docs/kdevelop/kdearch/index.docbook | 3684 ++++++++++++++++++++ tde-i18n-es/docs/kdevelop/kdearch/joinbevel.png | Bin 0 -> 331 bytes tde-i18n-es/docs/kdevelop/kdearch/joinmiter.png | Bin 0 -> 356 bytes tde-i18n-es/docs/kdevelop/kdearch/joinround.png | Bin 0 -> 361 bytes .../docs/kdevelop/kdearch/konqi-mirrored.png | Bin 0 -> 27355 bytes tde-i18n-es/docs/kdevelop/kdearch/konqi-normal.png | Bin 0 -> 27447 bytes .../docs/kdevelop/kdearch/konqi-rotated.png | Bin 0 -> 28687 bytes .../docs/kdevelop/kdearch/konqi-sheared.png | Bin 0 -> 25383 bytes tde-i18n-es/docs/kdevelop/kdearch/kview-menu.png | Bin 0 -> 3037 bytes tde-i18n-es/docs/kdevelop/kdearch/opengl.png | Bin 0 -> 3271 bytes tde-i18n-es/docs/kdevelop/kdearch/penstyles.png | Bin 0 -> 1350 bytes tde-i18n-es/docs/kdevelop/kdearch/whatsthis.png | Bin 0 -> 3529 bytes tde-i18n-es/docs/kdevelop/kdevelop/Makefile.am | 4 + tde-i18n-es/docs/kdevelop/kdevelop/Makefile.in | 613 ++++ tde-i18n-es/docs/kdevelop/kdevelop/SF-general.png | Bin 0 -> 29759 bytes tde-i18n-es/docs/kdevelop/kdevelop/SF-indent.png | Bin 0 -> 26776 bytes tde-i18n-es/docs/kdevelop/kdevelop/SF-other.png | Bin 0 -> 20198 bytes .../kdevelop/kdevelop/adv-build-management.docbook | 174 + .../docs/kdevelop/kdevelop/app-changelog.docbook | 85 + .../docs/kdevelop/kdevelop/app-menu.docbook | 72 + .../docs/kdevelop/kdevelop/app-misc-info.docbook | 28 + .../kdevelop/kdevelop/app-uimodes-examples.docbook | 174 + .../kdevelop/kdevelop/applicationwizard.docbook | 1386 ++++++++ .../docs/kdevelop/kdevelop/automake-file-popup.png | Bin 0 -> 28848 bytes .../docs/kdevelop/kdevelop/automake-manager.png | Bin 0 -> 33176 bytes .../kdevelop/automake-subproject-popup.png | Bin 0 -> 17172 bytes .../kdevelop/kdevelop/automake-target-popup.png | Bin 0 -> 38761 bytes .../docs/kdevelop/kdevelop/automakemanager.png | Bin 0 -> 33176 bytes .../docs/kdevelop/kdevelop/class-browsers.docbook | 89 + tde-i18n-es/docs/kdevelop/kdevelop/classview.png | Bin 0 -> 46463 bytes .../docs/kdevelop/kdevelop/commands.docbook | 3000 ++++++++++++++++ .../kdevelop/configure-adddialog-baselibs.png | Bin 0 -> 20405 bytes .../kdevelop/configure-doctree-textsearch.png | Bin 0 -> 24056 bytes .../docs/kdevelop/kdevelop/configure-docu-chm.png | Bin 0 -> 50915 bytes .../kdevelop/kdevelop/configure-docu-custom.png | Bin 0 -> 44807 bytes .../kdevelop/kdevelop/configure-docu-devhelp.png | Bin 0 -> 52459 bytes .../docs/kdevelop/kdevelop/configure-docu-dox.png | Bin 0 -> 44372 bytes .../docs/kdevelop/kdevelop/configure-docu-edit.png | Bin 0 -> 15085 bytes .../kdevelop/kdevelop/configure-docu-general.png | Bin 0 -> 44346 bytes .../docs/kdevelop/kdevelop/configure-docu-toc.png | Bin 0 -> 44404 bytes .../docs/kdevelop/kdevelop/configure-editor.png | Bin 0 -> 10252 bytes .../kdevelop/kdevelop/configure-file-selector.png | Bin 0 -> 38611 bytes .../docs/kdevelop/kdevelop/configure-general.png | Bin 0 -> 33519 bytes .../docs/kdevelop/kdevelop/configure-select.png | Bin 0 -> 13533 bytes .../docs/kdevelop/kdevelop/configure-snippets.png | Bin 0 -> 9454 bytes .../kdevelop/kdevelop/create-new-project-cvs.png | Bin 0 -> 32604 bytes .../docs/kdevelop/kdevelop/createnewproject.png | Bin 0 -> 87804 bytes tde-i18n-es/docs/kdevelop/kdevelop/credits.docbook | 40 + tde-i18n-es/docs/kdevelop/kdevelop/cvs.docbook | 131 + tde-i18n-es/docs/kdevelop/kdevelop/doctreeview.png | Bin 0 -> 51425 bytes .../docs/kdevelop/kdevelop/documentation.docbook | 73 + .../docs/kdevelop/kdevelop/documents-contents.png | Bin 0 -> 28756 bytes tde-i18n-es/docs/kdevelop/kdevelop/editing.docbook | 608 ++++ tde-i18n-es/docs/kdevelop/kdevelop/empty-ide.png | Bin 0 -> 40106 bytes .../docs/kdevelop/kdevelop/file-browsers.docbook | 67 + .../docs/kdevelop/kdevelop/file-selector.png | Bin 0 -> 26354 bytes tde-i18n-es/docs/kdevelop/kdevelop/filetree.png | Bin 0 -> 29588 bytes tde-i18n-es/docs/kdevelop/kdevelop/folded-tabs.png | Bin 0 -> 7725 bytes .../docs/kdevelop/kdevelop/getting-started.docbook | 695 ++++ .../kdevelop/kdevelop/kdevelop-ideal-mode-0.png | Bin 0 -> 86950 bytes .../docs/kdevelop/kdevelop/kdevelop-ideal-mode.png | Bin 0 -> 134005 bytes .../kdevelop/kdevelop/kdevelop-install.docbook | 1290 +++++++ .../docs/kdevelop/kdevelop/kdevelop-mdi-mode.png | Bin 0 -> 59781 bytes .../kdevelop/kdevelop/kdevelop-scripting.docbook | 74 + .../docs/kdevelop/kdevelop/kdevelop-survey.docbook | 778 +++++ .../kdevelop/kdevelop/kdevelop-tabbed-mode.png | Bin 0 -> 59065 bytes .../kdevelop/kdevelop/kdevelop-toplevel-mode.png | Bin 0 -> 94356 bytes .../docs/kdevelop/kdevelop/nutshell.docbook | 370 ++ .../kdevelop/kdevelop/project-advanced.docbook | 111 + .../kdevelop/kdevelop/project-management.docbook | 1259 +++++++ .../kdevelop/kdevelop/select-user-interface-0.png | Bin 0 -> 33963 bytes .../kdevelop/kdevelop/select-user-interface.png | Bin 0 -> 75499 bytes .../docs/kdevelop/kdevelop/survey-manual.docbook | 329 ++ tde-i18n-es/docs/kdevelop/kdevelop/unixdev.docbook | 643 ++++ tde-i18n-es/docs/kdevelop/tip.database | 30 + 102 files changed, 20195 insertions(+) create mode 100644 tde-i18n-es/docs/kdevelop/Makefile.am create mode 100644 tde-i18n-es/docs/kdevelop/Makefile.in create mode 100644 tde-i18n-es/docs/kdevelop/api/Architecture.png create mode 100644 tde-i18n-es/docs/kdevelop/api/Development.png create mode 100644 tde-i18n-es/docs/kdevelop/api/Makefile.am create mode 100644 tde-i18n-es/docs/kdevelop/api/Makefile.in create mode 100644 tde-i18n-es/docs/kdevelop/api/propeditor1.png create mode 100644 tde-i18n-es/docs/kdevelop/api/propeditor2.png create mode 100644 tde-i18n-es/docs/kdevelop/kde_app_devel/Makefile.am create mode 100644 tde-i18n-es/docs/kdevelop/kde_app_devel/Makefile.in create mode 100644 tde-i18n-es/docs/kdevelop/kde_app_devel/appwizard.png create mode 100644 tde-i18n-es/docs/kdevelop/kde_app_devel/index.cache.bz2 create mode 100644 tde-i18n-es/docs/kdevelop/kde_app_devel/index.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kde_app_devel/kscribblefiles.png create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/Makefile.am create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/Makefile.in create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/affine-general.png create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/affine-rotate.png create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/affine-scale.png create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/affine-shear.png create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/affine-translate.png create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/brushstyles.png create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/canvas.png create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/capflat.png create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/capround.png create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/capsquare.png create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/index.cache.bz2 create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/index.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/joinbevel.png create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/joinmiter.png create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/joinround.png create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/konqi-mirrored.png create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/konqi-normal.png create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/konqi-rotated.png create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/konqi-sheared.png create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/kview-menu.png create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/opengl.png create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/penstyles.png create mode 100644 tde-i18n-es/docs/kdevelop/kdearch/whatsthis.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/Makefile.am create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/Makefile.in create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/SF-general.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/SF-indent.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/SF-other.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/adv-build-management.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/app-changelog.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/app-menu.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/app-misc-info.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/app-uimodes-examples.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/applicationwizard.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/automake-file-popup.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/automake-manager.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/automake-subproject-popup.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/automake-target-popup.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/automakemanager.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/class-browsers.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/classview.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/commands.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/configure-adddialog-baselibs.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/configure-doctree-textsearch.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-chm.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-custom.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-devhelp.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-dox.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-edit.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-general.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-toc.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/configure-editor.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/configure-file-selector.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/configure-general.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/configure-select.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/configure-snippets.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/create-new-project-cvs.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/createnewproject.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/credits.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/cvs.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/doctreeview.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/documentation.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/documents-contents.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/editing.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/empty-ide.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/file-browsers.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/file-selector.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/filetree.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/folded-tabs.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/getting-started.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-ideal-mode-0.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-ideal-mode.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-install.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-mdi-mode.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-scripting.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-survey.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-tabbed-mode.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-toplevel-mode.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/nutshell.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/project-advanced.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/project-management.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/select-user-interface-0.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/select-user-interface.png create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/survey-manual.docbook create mode 100644 tde-i18n-es/docs/kdevelop/kdevelop/unixdev.docbook create mode 100644 tde-i18n-es/docs/kdevelop/tip.database (limited to 'tde-i18n-es/docs/kdevelop') diff --git a/tde-i18n-es/docs/kdevelop/Makefile.am b/tde-i18n-es/docs/kdevelop/Makefile.am new file mode 100644 index 00000000000..2d733d1b104 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = es +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-es/docs/kdevelop/Makefile.in b/tde-i18n-es/docs/kdevelop/Makefile.in new file mode 100644 index 00000000000..23b95301755 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/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/kdevelop +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@ +kdeinitdir = @kdeinitdir@ +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 kdevelop 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/kdevelop/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/kdevelop/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/kdevelop/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdevelop/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdevelop/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)/kdevelop + @for base in tip.database ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdevelop/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdevelop/$$base ;\ + done + +uninstall-nls: + for base in tip.database ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdevelop/$$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/kdevelop/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdevelop/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdevelop/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/kdevelop/api/Architecture.png b/tde-i18n-es/docs/kdevelop/api/Architecture.png new file mode 100644 index 00000000000..1b73523b010 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/api/Architecture.png differ diff --git a/tde-i18n-es/docs/kdevelop/api/Development.png b/tde-i18n-es/docs/kdevelop/api/Development.png new file mode 100644 index 00000000000..67ddd3baa81 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/api/Development.png differ diff --git a/tde-i18n-es/docs/kdevelop/api/Makefile.am b/tde-i18n-es/docs/kdevelop/api/Makefile.am new file mode 100644 index 00000000000..2d733d1b104 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/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/kdevelop/api/Makefile.in b/tde-i18n-es/docs/kdevelop/api/Makefile.in new file mode 100644 index 00000000000..616569800e5 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/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/kdevelop/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@ +kdeinitdir = @kdeinitdir@ +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/kdevelop/api/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/kdevelop/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/kdevelop/api/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdevelop/api/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdevelop/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/kdevelop/api/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdevelop/api/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdevelop/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/kdevelop/api/propeditor1.png b/tde-i18n-es/docs/kdevelop/api/propeditor1.png new file mode 100644 index 00000000000..b67e0d3b9b5 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/api/propeditor1.png differ diff --git a/tde-i18n-es/docs/kdevelop/api/propeditor2.png b/tde-i18n-es/docs/kdevelop/api/propeditor2.png new file mode 100644 index 00000000000..0b5393fdd3d Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/api/propeditor2.png differ diff --git a/tde-i18n-es/docs/kdevelop/kde_app_devel/Makefile.am b/tde-i18n-es/docs/kdevelop/kde_app_devel/Makefile.am new file mode 100644 index 00000000000..2d733d1b104 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/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/kdevelop/kde_app_devel/Makefile.in b/tde-i18n-es/docs/kdevelop/kde_app_devel/Makefile.in new file mode 100644 index 00000000000..e275bf23d93 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/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/kdevelop/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@ +kdeinitdir = @kdeinitdir@ +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/kdevelop/kde_app_devel/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/kdevelop/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/kdevelop/kde_app_devel/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdevelop/kde_app_devel/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdevelop/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/kdevelop/kde_app_devel/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdevelop/kde_app_devel/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdevelop/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/kdevelop/kde_app_devel/appwizard.png b/tde-i18n-es/docs/kdevelop/kde_app_devel/appwizard.png new file mode 100644 index 00000000000..2384cc5c2f3 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kde_app_devel/appwizard.png differ diff --git a/tde-i18n-es/docs/kdevelop/kde_app_devel/index.cache.bz2 b/tde-i18n-es/docs/kdevelop/kde_app_devel/index.cache.bz2 new file mode 100644 index 00000000000..29eddbc1da9 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kde_app_devel/index.cache.bz2 differ diff --git a/tde-i18n-es/docs/kdevelop/kde_app_devel/index.docbook b/tde-i18n-es/docs/kdevelop/kde_app_devel/index.docbook new file mode 100644 index 00000000000..0d344eead20 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kde_app_devel/index.docbook @@ -0,0 +1,1876 @@ + +KDevelop"> + + + +]> + + + + +El manual de programación de &kdevelop; + +2002-12-05 +2.0 + + +Ralf Nolden
Ralf.Nolden@post.rwth-aachen.de
+
+Caleb Tennis
caleb@aei-tech.com
+
+
+ + +1999 +Ralf Nolden + + +2002 +Caleb Tennis + + + + +&FDLNotice; + + +La guía de usuario de diseño de aplicaciones C++ para el entorno de escritorio K (KDE) con el IDE &kdevelop; + + + +KDE +KDevelop +IDE +desarrollo +programación + + +
+ + +Introducción +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. + + +Qué debería saber previamente +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 &kdevelop;, para lo que puede leer el «Manual de usuario de &kdevelop;», que contiene una revisión descriptiva de las funcionalidades proporcionadas por el IDE. + + + +Sobre este manual +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. +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. +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. +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. + +En el siguiente capítulo +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 &kdevelop;, 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 &kdevelop;. + + + +En los capítulos siguientes +Aprenderá cómo: +Crear una aplicación con el KAppWizard +Qué proporciona el esqueleto de un proyecto +Qué significa el código generado +Cómo crear sus propias vistas +Cómo extender la funcionalidad de su aplicación mediante diálogos, barras de menú y barras de herramientas +Cómo hacer que su aplicación sea amigable proporcionando funciones de ayuda +Cómo escribir documentación en línea + + + + + + + +Información adicional +Puede obtener información adicional sobre la programación Qt/KDE a través de diferentes fuentes: +«Programación con Qt», por Matthias Kalle Dalheimer +El manual de usuario de KDevelop, proporcionado con el IDE KDevelop +La referencia en línea de la biblioteca Qt +El sitio web de «KDE Developer» + + +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 obtener ayuda sobre el entorno integrado de KDevelop, debe enviar sus peticiones a nuestra lista de correo en la dirección kdevelop@kdevelop.org. 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. + + + + + +Las bibliotecas KDE y Qt +La compañía noruega TrollTech (http://www.trolltech.com) 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. +El equipo de KDE (http://www.kde.org) 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. +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. + + +El juego de herramientas gráficas Qt +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: +Un completo juego de clases y métodos listos para usar incluso para cuestiones de programación no gráfica +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 +Un juego de elementos gráficos predefinidos, llamados «widgets», que pueden ser fácilmente usados para crear los elementos visibles +Diálogos adicionales completamente predefinidos que son usados a menudo en las aplicaciones, como los diálogos de progreso y de archivos + + +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. + + +La primera aplicación Qt +Como era de esperar, los programas en C++ tienen que contener una función main(), 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. #include <qapplication.h> +#include <qpushbutton.h> + +int main( int argc, char **argv ) +{ +QApplication a( argc, argv ); + +QPushButton hello( "¡Hola mundo!", 0 ); +hello.resize( 100, 30 ); + +a.setMainWidget( &hello ); +hello.show(); +return a.exec(); +} + + +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 QApplication, representada por la variable «a». +A continuación, el programa crea una instancia de la clase QPushButton 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. +Luego, el botón «hello» llama al método resize(), que cambia el tamaño predeterminado que tiene el widget (que es, en este caso, QPushButton) cuando es creado a 100 píxels de ancho y 30 de alto. Finalmente, «a» llama al método setMainWidget(), y «hello» llama al método show(). La QApplication se ejecuta finalmente mediante a.exec(), 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. + + + +La documentación de referencia de Qt +Ahora, echemos un rápido vistazo a la documentación de referencia de la biblioteca Qt. Para ello, inicie &kdevelop; 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, QApplication y QPushButton, seleccione «Listado alfabético de clases» y busque los correspondientes nombres. Siga cualquiera de ellos para ver la documentación de su clase. +De modo alternativo, puede usar la documentación en línea existente en la Documentación de Qt de Trolltech. +Para la clase QApplication, 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. + +Interpretación del ejemplo +Comenzando por QApplication, encontrará todos los métodos utilizados en nuestro primer ejemplo: +el constructor QApplication() +el método setMainWidget() +el método exec() + + +La interpretación sobre por qué utilizamos estos métodos es muy simple: +Crear una instancia de la clase QApplication con el constructor, de modo que podamos usar los elementos de la interfaz gráfica que proporciona Qt +Crear un widget que será el contenido de la ventana de nuestro programa +Establecer el widget principal de «a» +Ejecutar la instancia de «a» de QApplication + + +El segundo objeto de nuestro programa es el botón pulsable, una instancia de la clase QPushButton. 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 resize() 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). +Pero, ¿qué hay del método show()? Ahora veremos que, al igual que la mayor parte de de widgetds, QPushButton se basa en la herencia simple. La documentación dice que esta clase hereda de QButton. Siga el enlace de la clase QButton y verá más widgets que han sido heredados por QPushButton (y que usaremos más adelante para explicar el mecanismo señal/slot). No obstante, el método show() no aparece listado, por lo que también tiene que haber sido proporcionado mediante herencia. La clase de la que hereda QButton es QWidget. Vuelva a seguir el enlace y verá el gran número de métodos que proporciona QWidget, incluido el método show(). Ahora entendemos lo que se ha hecho con el botón en el ejemplo: +Crear una instancia de QPushButton, usar el segundo constructor para establecer el texto del botón +Modificar el tamaño del widget según su contenido +Establecer el widget como widget principal de la instancia «a» de QApplication +Indicarle al widget que se muestre a sí mismo en la pantalla llamando a show(), un método heredado de QWidget + + +Tras llamar al método exec() 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 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». + + + + + + +Interacción con el usuario +Tras leer las últimas secciones, ya debería saber: +Qué proporciona la biblioteca Qt en términos de aplicaciones gráficas +Cómo se crea un programa que utilice Qt, y +Dónde y cómo encontrar información sobre las clases que desea utilizar con el navegador de documentación + + +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 ello, el sistema de ventanas envía todos los eventos de interacción a la aplicación correspondiente. El objeto QApplication los envía luego a la ventana activa como objetos QEvent, y los widgets deben decidir por sí mismos qué hacer con ellos. Cuando un widget recibe el evento, procesa el método QWidget::event(QEvent*), que se encarga de decidir qué evento ha sido ejecutado y cómo reaccionar a él. Por lo tanto, event() es el manejador principal de eventos. A continuación, el método event() 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: +Eventos del teclado -- Teclas «Tabulador» y «Mayúsculas-Tabulador»: + +virtual void focusInEvent(QFocusEvent *) +virtual void focusOutEvent(QFocusEvent *) + + + +El resto de entradas del teclado: + +virtual void keyPressEvent(QKeyEvent *) +virtual void keyReleaseEvent(QKeyEvent *) + + + +Los movimientos del ratón: + +virtual void mouseMoveEvent(QMouseEvent *) +virtual void enterEvent(QEvent *) +virtual void leaveEvent(QEvent *) + + + +Acciones de los botones del ratón + +virtual void mousePressEvent(QMouseEvent *) +virtual void mouseReleaseEvent(QMouseEvent *) +virtual void mouseDoubleClickEvent(QMouseEvent *) + + + +Eventos de la ventana que contiene el widget + +virtual void moveEvent(QMoveEvent *) +virtual void resizeEvent(QResizeEvent *) +virtual void closeEvent(QCloseEvent *) + + + + + +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. QWidget 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 QWidget. + + +Interacción entre objetos mediantes señales y slots +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: +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 QObject +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 + +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» +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 +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++. + + +Otra forma de usar señales sin derivar de QObject consiste en usar la clase QSignal (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 QObject. +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. +Ahora, para conectar una señal a un «slot», tendrá que usar los métodos connect() proporcionados por la clase QObject o, cuando estén disponibles, otros métodos especiales proporcionados por diversos objetos para establecer la conexión con ciertas señales. + + +Ejemplo de uso +Para explicar el modo en que establecemos la interacción entre objetos, tomaremos nuestro primer ejemplo y lo extenderemos con una conexión sencilla: #include <qapplication.h> +#include <qpushbutton.h> + +int main( int argc, char **argv ) +{ +QApplication a( argc, argv ); + +QPushButton hello( "¡Hola mundo!" , 0); +hello.resize( 100, 30 ); + +a.setMainWidget( &hello ); + +QObject::connect(&hello, SIGNAL( clicked() ), &a, SLOT( quit() )); + +hello.show(); +return a.exec(); +} + + +Como puede comprobar, la única adición para dar más interacción al botón consiste en usar un método connect(): connect(&hello, SIGNAL( clicked() ), &a, SLOT( quit() )); 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 connect(): +bool connect ( const QObject * emisor, const char * señal, const QObject * receptor, const char * miembro ) +Esto significa que debe especificar como primer parámetro un puntero de una instancia de la clase QObject, 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). +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 Guía de referencia de la biblioteca KDE y la referencia en línea de Qt. + + + + + +Qué proporciona KDE + +Las bibliotecas KDE 3.x +Las principales bibliotecas de KDE que usará para crear sus propias aplicaciones para KDE son: +la biblioteca «kdecore», que contiene todas las clases que no son elementos visibles y que proporcionan funcionalidad a las aplicaciones +la biblioteca «kdeui», que contiene los elementos de la interfaz del usuario, como barras de menú, barras de herramientas, etc. +la biblioteca «kfile», que contiene diálogos de selección de archivos + + +Adicionalmente, KDE ofrece las siguientes bibliotecas para soluciones específicas: +la biblioteca «kdefx», que contiene mapas de píxels, efectos de imagen y la extensión KStyle de QStyle +la biblioteca «khtml», que contiene el componente «html» de KDE +la biblioteca «kjs», que contiene el soporte Javascript para KDE +la biblioteca «kio», que contiene el acceso a bajo nivel a los archivos de la red +la biblioteca «kparts», que contiene soporte para aplicaciones reutilizables, incrustables y extensibles + + +A continuación veremos qué se necesita para convertir su primera aplicación Qt en una aplicación KDE. + + +Ejemplo de aplicación KDE +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: #include <kapplication.h> +#include <qpushbutton.h> + +int main( int argc, char **argv ) +{ +KApplication a( argc, argv ); + +QPushButton hello( "¡Hola mundo!", 0 ); +hello.resize( 100, 30 ); + +a.setTopWidget( &hello ); + +QObject::connect(&hello, SIGNAL( clicked() ), &a, SLOT( quit() )); + +hello.show(); +return a.exec(); +} + + +Vea que en primer lugar hemos cambiado de QApplication a KApplication . Además, hemos tenido que cambiar elmétodo setMainWidget() anteriormente usado por setTopWidget, que utiliza KApplication 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 kdecore mediante el parámetro -lkdecore. +Como ahora ya sabe qué suele proporcionar como mínimo la función main(), 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 &kdevelop;. Ahí tambień podrá probar todo lo que se ha dicho hasta ahora y comprobar sus efectos. +Adicionalmente, hasta ahora ha consultado la documentación de referencia de Qt, especialmente las clases QApplication, QWidget y QObject, y la documentación de la biblioteca «kdecore» sobre la clase KApplication. El Manual d referencia de la biblioteca KDE también contiene una completa descripción sobre cómo llamar a los constructores de QApplication y de KApplication, incluido el procesamiento de los argumentos pasados como parámetros en la línea de comando. + + + + + + +Creación de aplicaciones nuevas + + +El asistente para aplicaciones +El asistente para aplicaciones de &kdevelop; ha sido concebido para permitirle comenzar a trabajar en nuevos proyectos con &kdevelop;. 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: +Infraestructura de aplicación KDE: incluye código fuente para la infraestructura de una aplicación estándar de KDE. +Proyecto QMake: crea una infraestructura de aplicación basada en el sistema de configuración QMake de Trolltech. +Sencillo programa «Hola mundo»: crea un programa en C++ basado en la terminal sin soporte de interfaz gráfica. +Una multitud de esqueletos para otros programas + + +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. + + + +Llamar al asistente para aplicaciones y generación del proyecto + +Iniciar el asistente para aplicaciones y su primera página +Para comenzar con su aplicación para KDE, abra &kdevelop;. 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 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». + +Asistente para aplicaciones + + + + +Información sobre control de versiones +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». + + +Plantillas de cabecera y código fuente +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 &kdevelop;. 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. + + +Terminando +Tras finalizar, el asistente para aplicaciones debe cerrarse y aparecerá la ventana de mensajes mostrando información sobre las tareas que está realizando &kdevelop;. Al final debería ver el mensaje «*** conseguido ***», que indica que todo ha terminado correctamente. + + + + +La primera construcción +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. +En este capítulo se asume que ya conoce la navegación básica con &kdevelop;. Consulte el «Manual del usuario de KDevelop» si necesita más información. +El gestor de «automake» muestra los archivos del proyecto del modo siguiente: + +Los archivos de nuestro proyecto + + +Antes de sumergirnos en el código fuente, dejaremos que &kdevelop; 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. 1 cd /home/caleb/kscribble && 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 -lkdecore +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 *** + + +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. +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 &kdevelop;. +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. + + + +El esqueleto del código fuente +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. + + +La función main() +Como la aplicación comienza su ejecución entrando en la función main(), este será nuestro punto de partida para examinar nuestro código fuente. La función main() de KScribble está implementada en el archivo «main.cpp». También se puede localizar usando el navegador de clases, seleccionando la carpeta «Funciones globales». 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, &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 < 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 } + + +Ahora, lo que ocurre en primer lugar es la creación de un objeto KApplication, 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. + + +Inicio de la aplicación del usuario + +... (pendiente de escribir) + + + +El constructor +Veamos el constructor y cómo se llama a esta instancia 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&)), +20 this, SLOT(changeStatusbar(const QString&))); +21 connect(m_view, SIGNAL(signalChangeCaption(const QString&)), +22 this, SLOT(changeCaption(const QString&))); +23 +24 } + + +Note que KScribble hereda la clase KMainWindow (una clases base muy utilizada en las aplicaciones de KDE). Inicializamos una clase llamada KScribbleView como nuestro widget central, creamos una KStatusBar mediante el método statusBar() (línea 16), y conectamos algunas señales y slots. + + + + + + +Diseño de vistas de la aplicación + +Introducción +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. +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: +La barra del menú: proporciona operaciones complejas, como abrir, guardar y cerrar archivos, y salir de la aplicación. +La barra de herramientas: ofrece iconos que permiten un rápido acceso a las funciones más utilizadas. +La barra de estado: muestra el estado de la posición del cursor (su fila y columna actuales). +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. + + +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 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: +gráficamente atractiva +rica en características +fácil de manejar: +fácil de aprender a usar + + +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. +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. +Este capítulo describe cómo usar widgets de bibliotecas para crear vistas para aplicaciones de KDE o Qt que han sido generadas con &kdevelop;. Luego veremos las bibliotecas y qué tipo de vistas nos ofrecen. + + +Uso de bibliotecas de vistas +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: +Eliminar la clase de la nueva vista y crear una instancia de un widget de biblioteca, y luego establecerlo como vista. +Cambiar la herencia de la clase de vista proporcionada a la clase del widget de la biblioteca que va a usar. + + +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 &kdevelop; 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. +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». + +Vistas de Qt +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. +A continuación le damos una lista de pistas sobre para qué propósito puede usar cada componente de Qt: +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 QScrollView, que ofrece un área hija que se puede desplazar. Como se ha explicado, puede derivar su propio widget de la clase QScrollView o usar una instancia de ella para gestionar el widget que contendrá la vista de su documento. +Para crear una vista propia que se pueda deslazar, derive su widget de vista de la clase QWidget y añada un QScrollBar horizontal y otro vertical (esto es lo que hace, por ejemplo, el widget KHTMLView de KDE). +Para procesar texto, utilice QTextEdit. 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. +Use QTable para mostrar datos organizados en forma de tabla. Como QTable también está dotada de barras de desplazamiento, ofrece una buena solución para aplicaciones de cálculo de tablas. +Para mostrar dos widgets diferentes o dos instancias del mismo widget a la vez, utilice QSplitter. 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). +QListView 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. + + +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. + + +Vistas de KDE +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 «kdeui» ofrece: +KListView: una versión más potente de QListView +KIconView: un visor gráfico de archivos de icono + + +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. + + + +Creación de sus propias vistas +... (pendiente de escribir) + + + + +Configuración de menús y de barras de herramientas + +Introducción +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. +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. + + +¿Cómo funciona? +Nuestra aplicación hereda la clase KMainWindow, que maneja de forma automática la creación de una barra de menú y de barras de herramientas. En el método KScribble::setupActions() se realiza una llamada a KMainWindow::createGUI(). 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: 1 <!DOCTYPE kpartgui SYSTEM "kpartgui.dtd"> +2 <kpartgui name="kscribble" version="1"> +3 <MenuBar> +4 <Menu name="custom" +><text +>P&ersonalizar</text> +5 <Action name="custom_action" /> +6 </Menu> +7 </MenuBar> +8 </kpartgui +> + + +Explicación... +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 menuBar() devuelve el widget KMenuBar de contiene la barra de menú de nuestro programa. Si consulta la documentación de KMenuBar y de su clase heredada, QMenuBar, encontrará un gran número de métodos insertItem(); que le permiten añadir elementos a la barra de menú. +Los métodos statusBar() y toolBar() de KMainWindow también le proporcionan widgets aplicables. + + +Configuración de los accesos rápidos de teclado +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 KAction, que proporciona las teclas de acceso rápido y también brinda acceso a los aceleradores de teclado estándares configurados globalmente. +De forma predeterminada, las aplicaciones generadas con &kdevelop; 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. +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 KKeyChooser para usar en diálogos que contienen pestañas, para los que KKeyDialog proporciona un diálogo de configuración de teclas listo para usar. + + + + + + +Funciones de ayuda + +Introducción +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: + +Ayudas emergentes +Ayuda de la barra de estado +Botones «¿Qué es esto?» + +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 KMainWindow, aunque el autor debe proporcionar el contenido de la ayuda. +Del mismo modo que &kdevelop; 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. +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. + + + +Ayudas emergentes +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 KToolBar que proporciona la biblioteca «kdeui». +Como ejemplo, veamos el botón «Archivo nuevo» de una aplicación genérica: +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. +Las ayudas emergentes también se pueden añadir a cualquier widget personalizado usando la clase QToolTip proporcionada por Qt. Un ejemplo de esto sería: + + +Extendiendo la barra de estado +Como las aplicaciones que heredan de KMainWindow 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. + + +El botón <guibutton +>¿Qué es esto?</guibutton +> +El botón ¿Qué es esto? 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 ¿Qué es esto? de &kdevelop;. +Para añadir ayudas «¿Qué es esto?» a cualquiera de sus widgets, utilice el método estático QWhatsThis::add(QWidget *widget, const QString &texto) + + + + +Documentación + +Introducción +Debido al hecho de que los proyectos suelen carecer a menudo de documentación para el usuario, todos los proyectos que crea &kdevelop; 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. + + +Documentación del usuario +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 la web de documentación de KDE. + + +Documentación del programador +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. &kdevelop; 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 &kdevelop; a añadirla y qué tipos de etiquetas especiales proporciona KDoc. + + + + +Internacionalización + +Introducción +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. + + + + + +Créditos + +(... pendiente de escribir ...) + + + + + + +Bibliografía + + + +<ulink url="info://make/Top" +>Manual de GNU Make</ulink +> + +Richard M.Stallman +RolandMcGrath + + + + +<ulink url="info://automake/Top" +>GNU Automake</ulink +> + +DavidMacKenzie +TomTromey + + + + +<ulink url="info://autoconf/Top" +>GNU Autoconf</ulink +> + +DavidMacKenzie +BenElliston + + + + +<ulink url="info://gcc/Top" +>Uso de la colección del compilador GNU</ulink +> +Richard M.Stallman + + + +<ulink url="info://libtool/Top" +>GNU Libtool</ulink +> + +GordonMatzigkeit +AlexandreOliva +ThomasTanner +Gary V.Vaughan + + + + +GNU Autoconf, Automake y Libtool +1st edition +October 2000 + +Gary V.Vaughan +BenElliston +TomTromey +Ian LanceTaylor + +New Riders Publishing +ISBN 1578701902 + + + + +Programación avanzada en el entorno UNIX(R) +1st edition +June 1992 +W. RichardStevens +Addison-Wesley Pub Co +ISBN 0201563177 + + + +Pensando en C++, volumen 1: Introducción al C++ estándar +2nd Edition +April 15, 2000 +BruceEckel +Prentice Hall +ISBN 0139798099 + + + +Desarrollo de código abierto con CVS +2nd Edition +October 12, 2001 + +KarlFogel +MosheBar + +The Coriolis Group +ISBN 158880173X + + + +Programación en PHP +1st edition +March 2002 + +RasmusLerdorf +KevinTatroe + +O'Reilly & Associates +ISBN 1565926102 + + + +Programación en Python +2nd Edition +March 2001 +MarkLutz +O'Reilly & Associates +ISBN 0596000855 + + + +Programación GUI con Python: Uso del toolkit Qt +Bk&Cd-r edition +January 2002 +BoudewijnRempt +Opendocs Llc +ISBN 0970033044 + + + +Programación en Perl +El libro del camello +3rd Edition +July 2000 + +LarryWall +TomChristiansen +JonOrwant + +O'Reilly & Associates +ISBN 0596000278 + + + +Aprenda Perl +El libro del lama +3rd Edition +July 15, 2001 + +Randal L.Schwartz +TomPhoenix + +O'Reilly & Associates +ISBN 0596001320 + + + + +&underFDL; + + + + +
diff --git a/tde-i18n-es/docs/kdevelop/kde_app_devel/kscribblefiles.png b/tde-i18n-es/docs/kdevelop/kde_app_devel/kscribblefiles.png new file mode 100644 index 00000000000..d06fdd4fed1 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kde_app_devel/kscribblefiles.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdearch/Makefile.am b/tde-i18n-es/docs/kdevelop/kdearch/Makefile.am new file mode 100644 index 00000000000..2d733d1b104 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/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/kdevelop/kdearch/Makefile.in b/tde-i18n-es/docs/kdevelop/kdearch/Makefile.in new file mode 100644 index 00000000000..e387cf391c6 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/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/kdevelop/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@ +kdeinitdir = @kdeinitdir@ +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/kdevelop/kdearch/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/kdevelop/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/kdevelop/kdearch/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdevelop/kdearch/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdevelop/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/kdevelop/kdearch/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdevelop/kdearch/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdevelop/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/kdevelop/kdearch/affine-general.png b/tde-i18n-es/docs/kdevelop/kdearch/affine-general.png new file mode 100644 index 00000000000..970b0c6a622 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdearch/affine-general.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdearch/affine-rotate.png b/tde-i18n-es/docs/kdevelop/kdearch/affine-rotate.png new file mode 100644 index 00000000000..3931634d051 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdearch/affine-rotate.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdearch/affine-scale.png b/tde-i18n-es/docs/kdevelop/kdearch/affine-scale.png new file mode 100644 index 00000000000..0566bb84a10 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdearch/affine-scale.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdearch/affine-shear.png b/tde-i18n-es/docs/kdevelop/kdearch/affine-shear.png new file mode 100644 index 00000000000..61e293091d1 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdearch/affine-shear.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdearch/affine-translate.png b/tde-i18n-es/docs/kdevelop/kdearch/affine-translate.png new file mode 100644 index 00000000000..06a0f674558 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdearch/affine-translate.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdearch/brushstyles.png b/tde-i18n-es/docs/kdevelop/kdearch/brushstyles.png new file mode 100644 index 00000000000..5b28a263fb2 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdearch/brushstyles.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdearch/canvas.png b/tde-i18n-es/docs/kdevelop/kdearch/canvas.png new file mode 100644 index 00000000000..3f0fcf9e8e7 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdearch/canvas.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdearch/capflat.png b/tde-i18n-es/docs/kdevelop/kdearch/capflat.png new file mode 100644 index 00000000000..419b0898d29 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdearch/capflat.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdearch/capround.png b/tde-i18n-es/docs/kdevelop/kdearch/capround.png new file mode 100644 index 00000000000..ee2d7cb0c44 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdearch/capround.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdearch/capsquare.png b/tde-i18n-es/docs/kdevelop/kdearch/capsquare.png new file mode 100644 index 00000000000..9234d942da1 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdearch/capsquare.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdearch/index.cache.bz2 b/tde-i18n-es/docs/kdevelop/kdearch/index.cache.bz2 new file mode 100644 index 00000000000..cbae8e11598 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdearch/index.cache.bz2 differ diff --git a/tde-i18n-es/docs/kdevelop/kdearch/index.docbook b/tde-i18n-es/docs/kdevelop/kdearch/index.docbook new file mode 100644 index 00000000000..d6ab4e1b015 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdearch/index.docbook @@ -0,0 +1,3684 @@ + + + +]> + + + + +Introducción a la arquitectura de KDE + + + + + +Bernd Gehrmann
bernd@kdevelop.org
+
+
+ + +2001 +2002 +Bernd Gehrmann + + +&FDLNotice; + + +Esta documentación es una introducción a la plataforma de desarrollo de KDE + + + +KDE +arquitectura +desarrollo +programación + + +
+ + +Estructura de bibliotecas + + +Bibliotecas por nombre + + + + +kdecore +La biblioteca kdecore 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. + + + +kdeui +La biblioteca kdeui 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. + + + +kio +La biblioteca kio 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. + + + +kjs +La biblioteca kjs proporciona una implementación de JavaScript. + + + +khtml +La biblioteca khtml contiene el módulo KHTML, un widget de navegación HTML, el API y un procesador de DOM, incluyendo interfaces para Java y JavaScript. + + + + + + + + +Clases agrupadas + +Esquema principal de una aplicación - clases que son necesarias en casi cualquier aplicación. + + + + +<ulink url="kdeapi:kdecore/KApplication" +>KApplication</ulink +> +Inicia y controla una aplicación de KDE. + + + +<ulink url="kdeapi:kdecore/KUniqueApplication" +>KUniqueApplication</ulink +> +Se asegura de que solo se ejecuta una sesión de la aplicación en cada momento. + + +<ulink url="kdeapi:kdecore/KAboutData" +>KAboutData</ulink +> +Contiene la información de la ventana «Acerca de». + + +<ulink url="kdeapi:kdecore/KCmdLineArgs" +>KCmdLineArgs</ulink +> +Procesamiento de argumentos de la línea de órdenes. + + + + +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. + + + +<ulink url="kdeapi:kdecore/KConfig" +>KConfig</ulink +> +Proporciona acceso a la base de datos de configuración de KDE. + + +<ulink url="kdeapi:kdecore/KSimpleConfig" +>KSimpleConfig</ulink +> +Acceso a archivos de configuración simples y no jerárquicos. + + +<ulink url="kdeapi:kdecore/KDesktopFile" +>KDesktopFile</ulink +> +Acceso a los archivo .desktop. + + +<ulink url="kdeapi:kdecore/KGlobalSettings" +>KGlobalSettings</ulink +> +Acceso cómodo a las preferencias que no son específicas de la aplicación. + + + + +Manejo de archivos y URLs - descodificación de URLs, archivos temporales, etc. + + + +<ulink url="kdeapi:kdecore/KURL" +>KURL</ulink +> +Representa y procesa URLs. + + +<ulink url="kdeapi:kdecore/KTempFile" +>KTempFile</ulink +> +Crea archivos de nombre único para almacenamiento temporal. + + +<ulink url="kdeapi:kdecore/KSaveFile" +>KSaveFile</ulink +> +Permite guardar archivos en segmentos. + + + + +Comunicación entre procesos - clases auxiliares para DCOP e invocación de subprocesos. + + + +<ulink url="kdeapi:kdecore/KProcess" +>KProcess</ulink +> +Invoca y controla procesos hijo. + + +<ulink url="kdeapi:kdecore/KShellProcess" +>KShellProcess</ulink +> +Invoca procesos hijo a través de un intérprete de comandos. + + +<ulink url="kdeapi:kdesu/PtyProcess" +>PtyProcess</ulink +> +Comunicación con procesos hijo a través de una pseudo terminal. + + +<ulink url="kdeapi:kdecore/KIPC" +>KIPC</ulink +> +Comunicación entre procesos simple utilizando ClientMessages de X11. + + +<ulink url="kdeapi:dcop/DCOPClient" +>DCOPClient</ulink +> +Mensajería DCOP. + + +<ulink url="kdeapi:kdecore/KDCOPPropertyProxy" +>KDCOPPropertyProxy</ulink +> +Una clase proxy que publica las propiedades de Qt a través de DCOP. + + +<ulink url="kdeapi:kdeui/KDCOPActionProxy" +>KDCOPActionProxy</ulink +> +Una clase proxy que publica un interfaz DCOP para realizar acciones. + + + + +Clases de utilidades - gestión de memoria, expresiones regulares, manipulación de cadenas, números aleatorios + + + +<ulink url="kdeapi:kdecore/KRegExp" +>KRegExp</ulink +> +Tratamiento de expresiones regulares según POSIX. + + +<ulink url="kdeapi:kdecore/KStringHandler" +>KStringHandler</ulink +> +Una extravagante interfaz para la manipulación de cadenas. + + +<ulink url="kdeapi:kdecore/KZoneAllocator" +>KZoneAllocator</ulink +> +Localización eficiente de memoria para grandes grupos de pequeños objetos. + + +<ulink url="kdeapi:kdecore/KRandomSequence" +>KRandomSequence</ulink +> +Generador de números pseudo aleatorios. + + + + +Aceleradores de teclado - clases de ayuda para el establecimiento de atajos de teclado consistentes con el escritorio. + + + +<ulink url="kdeapi:kdecore/KAccel" +>KAccel</ulink +> +Collección de atajos de teclado. + + +<ulink url="kdeapi:kdecore/KStdAccel" +>KStdAccel</ulink +> +Acceso sencillo a los atajos de teclado más comunes. + + +<ulink url="kdeapi:kdecore/KGlobalAccel" +></ulink +> +Colección de atajos de teclado que afectan a todo el sistema. + + + + +Procesamiento de imágenes - carga y manipulación de iconos. + + + +<ulink url="kdeapi:kdecore/KIconLoader" +>KIconLoader</ulink +> +Carga iconos de una forma consistente con los temas de escritorio. + + +<ulink url="kdeapi:kdecore/KIconTheme" +>KIconTheme</ulink +> +Clases de ayuda para KIconLoader. + + +<ulink url="kdeapi:kdecore/KPixmap" +>KPixmap</ulink +> +Una clase de mapa de pixels con posibilidades extendidas de optimización de colores. + + +<ulink url="kdeapi:kdeui/KPixmapEffect" +>KPixmapEffect</ulink +> +Efectos de mapas de píxels como gradientes y patrones. + + +<ulink url="kdeapi:kdeui/KPixmapIO" +>KPixmapIO</ulink +> +Conversión rápida de QImage a QPixmap. + + + + +Arrastrar y soltar - objetos de arrastre para colores y URLs. + + + +<ulink url="kdeapi:kdecore/KURLDrag" +>KURLDrag</ulink +> +Un objeto de arrastre para URLs. + + +<ulink url="kdeapi:kdeui/KColorDrag" +>KColorDrag</ulink +> +Un objeto de arrastre para colores. + + +<ulink url="kdeapi:kdecore/KMultipleDrag" +>KMultipleDrag</ulink +> +Permite construir objetos de arrastre a partir varios otros. + + + + +Autocompletado + + + +<ulink url="kdeapi:kdecore/KCompletion" +>KCompletion</ulink +> +Autocompletado de cadenas genérico. + + +<ulink url="kdeapi:kio/KURLCompletion" +>KURLCompletion</ulink +> +Autocompletado de URLs. + + +<ulink url="kdeapi:kio/KShellCompletion" +>KShellCompletion</ulink +> +Autocompletado de ejecutables. + + + + +Widgets - clases de widgets para vistas de lista, reglas, selección de colores, etc. + + + +<ulink url="kdeapi:kdeui/KListView" +>KListView</ulink +> +Una variante de QListView que se ajusta a las preferencias globales del sistema KDE. + + +<ulink url="kdeapi:kdeui/KListView" +>KListBox</ulink +> +Una variante de QListBox que se ajusta a las preferencias globales del sistema KDE. + + +<ulink url="kdeapi:kdeui/KListView" +>KIconView</ulink +> +Una variante de QIconView que se ajusta a las preferencias globales del sistema KDE. + + +<ulink url="kdeapi:kdeui/KListView" +>KLineEdit</ulink +> +Una variante de QLineEdit con soporte para autocompletado. + + +<ulink url="kdeapi:kdeui/KComboBox" +>KComboBox</ulink +> +Una variante de QComboBox con soporte para autocompletado. + + +<ulink url="kdeapi:kdeui/KFontCombo" +>KFontCombo</ulink +> +Una lista desplegable para la selección de fuentes. + + +<ulink url="kdeapi:kdeui/KColorCombo" +>KColorCombo</ulink +> +Una lista desplegable para la selección de colores. + + +<ulink url="kdeapi:kdeui/KColorButton" +>KColorButton</ulink +> +Un botón para la selección de colores. + + +<ulink url="kdeapi:kdeui/KURLCombo" +>KURLCombo</ulink +> +Una lista desplegable para la selección de nombres de archivos y URLs. + + +<ulink url="kdeapi:kfile/KURLRequester" +>KURLRequester</ulink +> +Una línea de edición para seleccionar nombres de archivos y URLs. + + +<ulink url="kdeapi:kdeui/KRuler" +>KRuler</ulink +> +Un widget de una regla. + + +<ulink +url="kdeapi:kdeui/KAnimWidget" +>KAnimWidget</ulink +> +animaciones. + + +<ulink url="kdeapi:kdeui/KNumInput" +>KNumInput</ulink +> +Un widget para la entrada de números. + + +<ulink url="kdeapi:kdeui/KPasswordEdit" +>KPasswordEdit</ulink +> +Un widget para la entrada de contraseñas. + + + + +Diálogos - díalogos completos para la selección de archivos, colores y fuentes. + + + +<ulink url="kdeapi:kfile/KFileDialog" +>KFileDialog</ulink +> +Un diálogo de selección de archivos. + + +<ulink url="kdeapi:kdeui/KColorDialog" +>KColorDialog</ulink +> +Un diálogo de selección de colores. + + +<ulink url="kdeapi:kdeui/KFontDialog" +>KFontDialog</ulink +> +Un diálogo para la selección de fuentes. + + +<ulink url="kdeapi:kfile/KIconDialog" +>KIconDialog</ulink +> +Un diálogo para la selección de iconos. + + +<ulink url="kdeapi:kdeui/KKeyDialog" +>KKeyDialog</ulink +> +Un diálogo para la edición de atajos de teclado. + + +<ulink url="kdeapi:kdeui/KEditToolBar" +>KEditToolBar</ulink +> +Un diálogo para la edición de barras de herramientas. + + +<ulink url="kdeapi:kdeui/KTipDialog" +>KTipDialog</ulink +> +Un diálogo para mostrar consejos. + + +<ulink url="kdeapi:kdeui/KAboutDialog" +>KAboutDialog</ulink +> +Un diálogo de información de la aplicación. + + +<ulink url="kdeapi:kdeui/KLineEditDlg" +>KLineEditDlg</ulink +> +Un diálogo simple para la entrada de texto. + + +<ulink url="kdeapi:kfile/KURLRequesterDlg" +>KURLRequesterDlg</ulink +> +Un diálogo simple para la entrada de URLs. + + +<ulink url="kdeapi:kdeui/KMessageBox" +>KMessageBox</ulink +> +Un diálogo para indicar errores y advertencias. + + +<ulink url="kdeapi:kdeui/KPasswordDialog" +>KPasswordDialog</ulink +> +Un diálogo para la entrada de contraseñas. + + + + +Acciones y entorno gráfico XML + + + +<ulink url="kdeapi:kdeui/KAction" +>KAction</ulink +> +Abstracción de una acción que puede ser conectada a barras de menús y barras de herramientas. + + +<ulink url="kdeapi:kdeui/KActionCollection" +>KActionCollection</ulink +> +Un conjunto de acciones. + + +<ulink url="kdeapi:kdeui/KXMLGUIClient" +>KXMLGUIClient</ulink +> +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. + + +<ulink url="kdeapi:kparts/KPartManager" +>KPartManager</ulink +> +Gestiona la activación de cliente de entorno gráfico XML. + + + + +Extensiones y componentes + + + +<ulink url="kdeapi:kdecore/KLibrary" +>KLibrary</ulink +> +Representa una biblioteca de carga dinámica. + + +<ulink url="kdeapi:kdecore/KLibrary" +>KLibLoader</ulink +> +Carga de bibliotecas compartidas. + + +<ulink url="kdeapi:kdecore/KLibFactory" +>KLibFactory</ulink +> +Factoría de objetos en las extensiones. + + +<ulink url="kdeapi:kio/KServiceType" +>KServiceType</ulink +> +Representa un tipo de servicio. + + +<ulink url="kdeapi:kio/KService" +>KService</ulink +> +Representa un servicio. + + +<ulink url="kdeapi:kio/KMimeType" +>KMimeType</ulink +> +Representa un tipo MIME. + + +<ulink url="kdeapi:kio/KServiceTypeProfile" +>KServiceTypeProfile</ulink +> +Preferencias del usuario para asignación de tipos MIME. + + +<ulink url="kdeapi:kio/KServiceTypeProfile" +>KTrader</ulink +> +Consultas para servicios. + + + + + + + + + + + +Gráficos + + +Gráficos de bajo nivel con QPainter + + +Procesado con QPainter + +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. + +La clase central para la realización de gráficos 2D en Qt es QPainter. Puede dibujar en un QPaintDevice. Hay implementados tres dispositivos de pintura posibles: uno es QWidget, que representa un widget de la pantalla. El segundo es QPrinter que representa una impresora y produce salida PostScript. El tercero es la clase QPicture, 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. + +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. + +void FooWidget::paintEvent() +{ + QPainter p(esto); + // Configurar sistema de dibujo + // Utilizar sistema de dibujo +} + + +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 métrica del dispositivo para computar las coordenadas. + + + + + +Transformaciones + +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 + + + + + +La matriz 3x3 de esta ecuación se puede establecer con QPainter::setWorldMatrix() y es de tipo QWMatrix. 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: + + + + +Desplazamientos +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 + + + + + + + + + +Escalado +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 + + + + + + +Si se establece uno de los parámetros a un valor negativo, se puede conseguir una visión simétrica del sistema de coordenadas. + + + + +Corte +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 + + + + + + + + + +Giro +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 + + + + + + +Fíjese en que un giro es equivalente a una combinación de escalado y corte. + + + + + +Aquí se muestran algunas imágenes que muestran el efecto de transformaciones elementales sobre nuestra mascota: + + + + + + + + + + + + + + + + + + + +a) Normal +b) Girado 30 grados +c) Corte a 0.4 +d) Simétrico + + + + + +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. + + + + + +Establecimiento de atributos de ajuste + +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 QPen. Las propiedades que almacena son estilo, color, estilo de unión y estilo de tope. + +El estilo de pincel es un miembro de la enumeración Qt::PenStyle. Puede tomar uno de los siguientes valores: + + + + + +El estilo de unión es un miembro de la enumeración Qt::PenJoinStyle. 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: + + + + + + + + + + + + + + + + +a) MiterJoin +c) BevelJoin +b) RoundJoin + + + + + +El estilo de tope es un miembro de la enumeración Qt::PenCapStyle, y especifica cómo se deben dibujar los puntos finales de las líneas. Toma uno de los valores de la siguiente tabla: + + + + + + + + + + + + + + + + +a) FlatCap +b) SquareCap +c) RoundCap + + + + + + + + + +Establecimiento de atributos de relleno + +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 QBrush como argumento. Las brochas se pueden construir de cuatro maneras diferentes: + + + +QBrush::QBrush() - Crea una brocha que no rellena las figuras. + + +QBrush::QBrush(BrushStyle) - Crea una brocha negra con uno de los siguientes patrones mostrados a continuación. + + +QBrush::QBrush(const QColor &, BrushStyle) - Crea una brocha de color con uno de los patrones mostrados a continuación. + + +QBrush::QBrush(const QColor &, const QPixmap) - Crea una brocha de color con el patrón personalizado que se proporcione como segundo parámetro. + + + +Un estilo de brocha predeterminado se obtiene de la enumeración Qt::BrushStyle. Esta es una muestra de todos los patrones predefinidos: + + + + + +Una forma más avanzada de personalizar el comportamiento de la brocha es mediante la función QPainter::setBrushOrigin(). + + + + + +Color + +Los colores juegan un papel tanto al ajustar curvas como al rellenar figuras. En Qt, los colores están representados por la clase QColor. 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. + +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. + + + + + +Otros parámetros + +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 RasterOp. + +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". + + + + + +Primitivas de dibujo + +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 QRect o un conjunto de cuatro enteros. + + + +Dibujo de un único punto - drawPoint(). + + +Dibujo de líneas - drawLine(), drawLineSegments() y drawPolyLine(). + + +Dibujo y relleno de rectángulos - drawRect(), drawRoundRect(), fillRect() y eraseRect(). + + +Dibujo y relleno de círculos, elipses o parte de ellos - drawEllipse(), drawArc(), drawPie y drawChord(). + + +Dibujo y relleno de polígonos generales - drawPolygon(). + + +Dibujo de curvas bezier - drawQuadBezier() [drawCubicBezier en Qt 3.0]. + + + + + + + +Dibujo de mapas de pixels e imágenes + +Qt proporciona dos clases muy diferentes para la representación de imágenes. + +QPixmap 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 muy 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 bitBlt para tranferir el mapa de pixels al widget. En casos de redibujados complejos, esto ayuda a evitar el efecto de parpadeo. + +Por contra, el objeto QImage 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. + + + + + +Dibujo de texto + +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 Qt::AlignmentFlags y Qt::TextFlags + +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. + +Una forma más avanzada de mostrar texto con formato es la clase QSimpleRichText. 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 QStyleSheet (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(). + + + + + + + +Gráficos estructurados con QCanvas + +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. + +Como alternativa, Qt contiene la clase QCanvas 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 QCanvasItem 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 QCanvasView 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. + +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: + + + + + +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. + +Se puede encontrar un tutorial para el uso de QCanvas en el desarrollo de juegos basados en sprites aquí. + + + + + +Gráficos 3D con OpenGL + + +Interfaz de bajo nivel + +El estándar de facto actual para la realización de gráficos 3D es OpenGL. 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 contexto GL y no tiene ningún tipo de interacción con el entorno de desarrollo. + +Qt ofrece el widget QGL Widget que encapsula una ventana con un contexto GL asociado. Básicamente se utiliza realizando subclases y reimplementando algunos métodos. + + + +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. + +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. + +En ver se reimplementar resizeEvent(), se utiliza resizeGL(). Sirve para establacer el modo vista de forma correcta. + +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. + + + +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. + + + + + +Qt contiene algunos ejemplos del uso de QGLWidget en su ejemplo demo. Se puede encontrar una colección de tutoriales aquí, y más información junto a una referencia de OpenGL está disponible en la página web de OpenGL. + + + + + +Interfaces de alto nivel + +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 Coin, complementada por un entorno de desarrollo para Qt llamado SoQt. + +El concepto básico de Open Inventor es la escena. Es posible cargar una escena del disco y guardarla en un formato especial muy unido a VRML. Una escena consta de una colección de objetos llamados nodos. 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. + +Puede encontrar una introducción a Inventor aquí (por regla general, es posible sustituir los métodos de SoXt descritos en el artículo por los de SoQt). + + + + + + + + + + +Interfaz de usuario + + +El patrón de acción + + + + + + + +Definición de menús y barras de herramientas en XML + + +Introducción + +Mientras que el patrón de acción 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. + +Este problema se resuelve por medio de un conjunto de clases llamado XMLGUI. 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 ArchivoAbrir o AyudaAcerca de...) 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. + +La clase de KDE para las ventanas de primer nivel, KMainWindow es heredera de KXMLGUIClient y, por lo tanto, soporta XMLGUI directamente. Todas las acciones creadas dentro deben tener como superior jerárquico un actionCollection() del cliente. Una llamada a createGUI() construirá el conjunto completo de menús y barras de herramientas definidos en el archivo XML de la aplicación (normalmente con el sufijo ui.rc). + + + + + +Un ejemplo: el menú de KView + +A continuación tomamos como ejemplo el visor de imágenes de KDE KView. Tiene un archivo ui.rc llamado kviewui.rc que es instalado por orden de Makefile.am + +rcdir = $(kde_datadir)/kview +rc_DATA = kviewui.rc + + +Esto es un extracto de kviewui.rc. Para simplificar el ejemplo, mostramos únicamente la definición del menú Ver. + +<!DOCTYPE kpartgui> +<kpartgui name="kview"> + <MenuBar> + <Menu name="view" > + <Action name="zoom50" /> + <Action name="zoom100" /> + <Action name="zoom200" /> + <Action name="zoomMaxpect" /> + <Separator/> + <Action name="fullscreen" /> + </Menu> + </MenuBar> +</kpartgui> + + +La parte de código correspondiente en C++ es: + +KStdAction::zoomIn ( this, SLOT(slotZoomIn()), actionCollection() ); + KStdAction::zoomOut ( this, SLOT(slotZoomOut()), actionCollection() ); + KStdAction::zoom ( this, SLOT(slotZoom()), actionCollection() ); + new KAction ( i18n("&Half size"), ALT+Key_0, + this, SLOT(slotHalfSize()), + actionCollection(), "zoom50" ); + new KAction ( i18n("&Normal size"), ALT+Key_1, + this, SLOT(slotDoubleSize()), + actionCollection(), "zoom100" ); + new KAction ( i18n("&Double size"), ALT+Key_2, + this, SLOT(slotDoubleSize()), + actionCollection(), "zoom200" ); + new KAction ( i18n("&Fill Screen"), ALT+Key_3, + this, SLOT(slotFillScreen()), + actionCollection(), "zoomMaxpect" ); + new KAction ( i18n("Fullscreen &Mode"), CTRL+SHIFT+Key_F, + this, SLOT(slotFullScreen()), + actionCollection(), "fullscreen" ); + + +El menú Ver que aparece en el entorno gráfico resultante tiene este aspecto: + + + + + +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 kdeui/kpartgui.dtd. 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 ui.rc, KDE se asegura de que cualquier versión personalizada del archivo sea desechada y se use en su lugar el nuevo archivo. + +La siguiente línea, <MenuBar>, contiene una declaración de una barra de menú. También puede insertar cualquier número de declaraciones <ToolBar> 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, KView tiene un submenú con el título «Image», que está declarado del siguiente modo: + +<Menu name="image" > + <text>&amp;Image</text> + ... +</Menu> + + +En la infraestructura automake de KDE, estos títulos se extraen automáticamente y se ponen en el archivo .po, de modo que puedan ser tenidos en cuenta por los traductores. Tenga en cuenta que deberá escribir la marca de acceso rápido «&» en modo compatible con XML (en la forma «&amp;»). + +Volvamos al ejemplo. El menú View de KView contiene varias acciones personalizadas: zoom50, zoom100, zoom200, zoomMaxpect y fullscreen, declarados mediante un elemento <Action>. El separador de las capturas de pantalla corresponde al elemento <Separator>. + +Notará que algunos elementos del menú no poseen su correspondiente entrada en el archivo XML. Se trata de las acciones estándar. Las acciones estándar son creadas por la clase KStdAction. 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 kdeui/ui_standards.rc en el código fuente de kdelibs. + + + + + +Un ejemplo: las barras de herramientas de Konqueror + +Para ilustrar la discusión sobre las barras de herramientas, veremos la definición de la interfaz gráfica de Konqueror. Este trozo de código define la barra de dirección, que contiene el campo de entrada para introducir una URL. + +<ToolBar name="locationToolBar" fullWidth="true" newline="true" > + <text>Location Toolbar</text> + <Action name="clear_location" /> + <Action name="location_label" /> + <Action name="toolbar_url_combo" /> + <Action name="go_url" /> +</ToolBar> + + +Lo primero que notamos es que hay muchos más atributos que para las barras de menú, como: + + + +fullWidth: 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. + +newline: 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. + +noEdit: Normalmente, el usuario puede personalizar las barras de herramientas, por ejemplo en PreferenciasConfigurar barras de herramientas en Konqueror. 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 Konqueror. + +iconText: 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). + + +hidden: Si vale «true», la barra de herramientas no será visible inicialmente y tendrá que ser activada mediante algún elemento del menú. + + +position: 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». + + + + + + + +Menús dinámicos + +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ú Dirección de Konqueror contiene un conjunto de elementos Abrir con X 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 listas de acciones. 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 Konqueror: + +<Menu name="file"> + <text>&amp;Location</text> + ... + <ActionList name="openwith"> + ... +</Menu> + + +La función KXMLGUIClient::plugActionList() se usará para añadir acciones a ser mostradas, mientras que la función KXMLGuiClient::unplugActionList() eliminará todas las acciones conectadas. La rutina responsable de la actualización es semejante a la siguiente: + +void MainWindow::updateOpenWithActions() +{ + unplugActionList("openwith"); + openWithActions.clear(); + for ( /* repetir sobre los servicios importantes */ ) { + KAction *action = new KAction( ...); + openWithActions.append(action); + } + plugActionList("openwith", openWithActions); +} + + +Tenga en cuenta que, al contrario que las acciones estáticas, las que se crean aquí no 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 openWithActions.setAutoDelete(true), como en el ejemplo anterior. + + + + + +Menús de contexto + +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 createGUI() (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: + +void MainWindow::popupRequested() +{ + QWidget *w = factory()->container("context_popup", this); + QPopupMenu *popup = static_cast<QPopupMenu *>(w); + popup->exec(QCursor::pos()); +} + + +El método KXMLGUIFactory::container() 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: + +... +<Menu name="context_popup"> + <Action name="file_add"/> + <Action name="file_remove"/> +</Menu> +... + + + + + + + + +Proporcionando ayuda en línea + +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: + + + +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. + +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 MayúsculasF1, 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. + +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. + +La ventaja de las ventanas de ayuda «¿Qué es esto?» tal y como las proporcionan Qt y KDE consiste en que pueden contener texto enriquecido, es decir, que pueden contener diferentes tipos de letra, negrita, cursiva, e incluso imágenes y tablas. + +Un ejemplo de la ayuda «¿Qué es esto?»: + + + + + + + +Finalmente, cada programa debe tener un manual. El manual se visualiza normalmente en KHelpCenter tras activar la opción correspondiente del menú Ayuda. 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 DocBook. + + + +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 QToolTip. + +QToolTip::add(w, i18n("Este widget realiza alguna acción.")) + + +Si las barras de menú y de herramientas han sido creadas usando el patrón de acciones, la cadena usada como ayuda emergente procede el primer argumento del constructor de KAction: + +action = new KAction(i18n("&Delete"), "editdelete", + SHIFT+Key_Delete, actionCollection(), "del") + + +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ú. + +action->setStatusText(i18n("Deletes the marked file")) + + +La API para la ayuda «¿Qué es esto?» es muy similar. En los diálogos, utilice el siguiente código: + +QWhatsThis::add(w, i18n("<qt>This demonstrates <b>Qt</b>'s" + " rich text engine.<ul>" + "<li>Foo</li>" + "<li>Bar</li>" + "</ul></qt>")) + + +Para los elementos del menú, utilice + +action->setWhatsThis(i18n("Deletes the marked file")) + + +La invocación de KHelpCenter está encapsulada en la clase KApplication. Para mostrar el manual de su aplicación, use + +kapp->invokeHelp() + + +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 invokeHelp() con la etiqueta a la que debe saltar el navegador. + + + + + + + + +Componentes y servicios + + +Servicios de KDE + + +¿Qué son los servicios de KDE? + +La noción de servicio 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 DCOP. Al ser declarado de cierto tipo de servicio, 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. + +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. + +Algunos ejemplos: + + + +El motor de visualización HTML usado en Konqueror es un componente que se puede integrar y que implementa los tipos de servicio KParts/ReadOnlyPart y Browser/View. +En la rama HEAD de KDevelop, una gran parte de la funcionalidad está empaquetada en extensiones con el tipo de servicio KDevelop/Part. Durante el inicio se cargan todos los servicios de este tipo, de modo que pueda extender el IDE de una manera muy flexible. +En la vista de iconos, Konqueror 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 ThumbCreator. + + + +Obviamente, un servicio no se caracteriza únicamente por los tipos de servicio que implementa, sino también por algunas propiedades. Por ejemplo, ThumCreator no solo implementa la clase C++ con el tipo ThumbCreator, 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 trader semejante a CORBA con un complejo lenguaje de consultas. + + + + + +Definición de tipos de servicios + +Los nuevos tipos de servicio se añaden instalando una descripción en la carpeta KDEDIR/share/servicetypes. En un entorno automake, esto se puede realizar con el siguiente fragmento de Makefile.am: + +kde_servicetypesdir_DATA = kdeveloppart.desktop +EXTRA_DIST = $(kde_servicetypesdir_DATA) + + +La definición kdeveloppart.desktop de una parte KDevelop es similar a lo siguiente: + +[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 + + +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 [PropertyDef::name] en el archivo de configuración. En este grupo, la entrada Type declara el tipo de la propiedad. Los tipos posibles son cualquier cosa que se pueda almacenar en un QVariant. + + + + + +Definición de servicios de bibliotecas compartidas + +Las definiciones de servicios se guardan en la carpeta KDEDIR/share/services: + +kde_servicesdir_DATA = kdevdoxygen.desktop +EXTRA_DIST = $(kde_servicesdir_DATA) + + +El contenido del siguiente archivo de ejemplo kdevdoxygen.desktop define la extensión KDevDoxygen con el tipo de servicio KDevelop/Part: + +[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 + + +Aparte de las declaraciones usuales, una entrada importante es X-KDE-Library. Contiene el nombre de la biblioteca «libtool» (sin la extensión .la). También fija (mediante el prefijo init_) 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: + +extern "C" { + void *init_libkdevdoxygen() + { + return new DoxygenFactory; + } +}; + + +El tipo de la clase fábrica DoxygenFactory 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 KDevFactory (que deriva de KLibFactory). Otros ejemplos más comunes son KParts::Factory que debe producir objetos KParts::ReadOnlyPart, o, en muchos casos, KLibFactory. + + + + + +Uso de servicios de bibliotecas compartidas + +Para poder usar un servicio de biblioteca compartida en una aplicación, necesita obtener un objeto KService que lo represente. Esto se discute en la sección sobre tipos MIME (y en una sección sobre el «trader» pendiente de escribir). + +Una vez que disponga de un objeto KService, solo necesita cargar la biblioteca y obtener un puntero a su objeto fábrica: + +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); +} + + +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 KLibFactory::create(). Para KParts, debe moldear el puntero de la fábrica al tipo más específico KParts::Factory y usar su método create(): + +if (factory->inherits("KParts::Factory")) { + KParts::Factory *partFactory = static_cast<KParts::Factory*>(factory); + QObject *obj = partFactory->createPart(parentWidget, widgetName, + parent, name, "KParts::ReadOnlyPart"); + ... +} else { + cout << "El servicio no implementa la fábrica correcta" << endl; +} + + + + + + +Definición de servicios DCOP + +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 kio_uiserver, 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. + +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 ServiceType, debido a que suelen ser iniciados por su nombre. También contienen las dos líneas siguientes como propiedades adicionales: + +X-DCOP-ServiceType especifica el modo en que se inicia el servicio. El valor Unique 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 KApplication::startServiceByName(), 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 KUniqueApplication. + +El valor Multi para X-DCOP-ServiceType 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 None. En este caso, el inicio del servicio no esperará a estar registrado en DCOP. + +X-KDE-StartupNotify debe ser establecido normalmente como false. 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. + +Esta es la definición de kio_uiserver: + +[Desktop Entry] +Type=Service +Name=kio_uiserver +Exec=kio_uiserver +X-DCOP-ServiceType=Unique +X-KDE-StartupNotify=false + + + + + + +Uso de servicios DCOP + +Un servicio DCOP comienza con uno de entre varios métodos en la clase KApplication: + +DCOPClient *client = kapp->dcopClient(); +client->attach(); +if (!client->isApplicationRegistered("kio_uiserver")) { + QString error; + if (KApplication::startServiceByName("kio_uiserver", QStringList(), &error)) + cout << "El inicio de kioserver ha fallado con el mensaje " << error << endl; +} +... +QByteArray data, replyData; +QCString replyType; +QDataStream arg(data, IO_WriteOnly); +arg << true; +if (!client->call("kio_uiserver", "UIServer", "setListMode(bool)", + data, replyType, replyData)) + cout << "Ha fallado la llamada a kio_uiserver" << endl; +... + + +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. + +En el ejemplo propuesto, el servicio se inició «por nombre»; es decir, el primer argumento de KApplication::startServiceByName() es el nombre que aparece en la línea Name del archivo «desktop». Una alternativa consiste en usar KApplication::startServiceByDesktopName(), que toma el nombre del archivo «desktop» como argumento (en este caso, «kio_uiserver.desktop»). + +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 QString. Si el inicio del servicio falla, este argumento contendrá un mensaje de error traducido. + + + + + + + +Tipos MIME + + +¿Qué son los tipos MIME? + +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: + + + +En la vista de iconos de Konqueror, los archivos se representan por iconos. Cada tipo MIME tiene asociado su propio icono. + +Cuando pulse sobre un icono de archivo o sobre su nombre en Konqueror, el archivo será mostrado en una vista empotrada, o se abrirá una aplicación asociada con su tipo de archivo. + +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. + +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. + + + +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. + +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 nombre.jpg 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 KDEDIR/share/mimelnk/magic, 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 .desktop, con lo que estará disponible de forma eficiente y conveniente para todas las bibliotecas de KDE. + + + + + +Definición de tipos MIME + +Definamos un tipo MIME «application/x-foo» para nuestro programa foobar. Para este fin, deberá escribir un archivo foo.desktop e instalarlo en KDEDIR/share/mimelnk/application (que es su ubicación usual, aunque puede diferir entre distribuciones). Esto se consigue añadiendo lo siguiente al archivo Makefile.am: + +mimedir = $(kde_mimedir)/application +mime_DATA = foo.desktop +EXTRA_DIST = $(mime_DATA) + + +El archivo foo.desktop debería ser similar al siguiente: + +[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 + + +La entrada Comment debe ser traducida. Como el archivo .desktop especifica un icono, también debe instalar un icono fooicon.png que represente al archivo, por ejemplo, en Konqueror. + +En las bibliotecas de KDE, este tipo de definición se mapea a una instancia de la clase KMimeType. Use esto como en el siguiente ejemplo: + +KMimeType::Ptr type = KMimeType::mimeType("application/x-foo"); +cout << "Tipo: " << type->name() < endl; +cout << "Icono: " << type->icon() < endl; +cout << "Comentario: " << type->icon() < endl; +QStringList patterns = type->patterns(); +QStringList::ConstIterator it; +for (it = patterns.begin(); it != patterns.end(); ++it) + cout << "Patrón: " << (*it) << endl; + + + + + + +Determinación del tipo MIME de los datos + +El método más rápido para determinar el tipo MIME de un archivo es usar la función KMimeType::findByURL(), 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 .pl, lo que indica un tipo MIME «text/x-perl». No obstante, el archivo entregado por el servidor es la salida de este guión, que normalmente es de tipo HTML. En este caso, KMimeType::findByURL() devuelve el tipo MIME «application/octet-stream» (disponible mediante KMimeType::defaultMimeType()), que indica un fallo al encontrar el tipo MIME. + +KMimeType::Ptr type = KMimeType::findByURL("/home/bernd/foobar.jpg"); +if (type->name() == KMimeType::defaultMimeType()) + cout << "No se puede encontrar el tipo" << endl; +else + cout << "Tipo: " << type->name() << endl; + + +(Este método posee algunos argumentos más, pero no están documentados, así que puede olvidarse de ellos sin más). + +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 KMimeMagic, que posee un manejo de errores distinto: + +KMimeMagicResult *result = KMimeMagic::self()->findFileType("/home/bernd/foobar.jpg"); +if (!result || !result->isValid()) + cout << "No se puede encontrar el tipo" << endl; +else + cout << "Tipo: " << result->mimeType() << endl; + + +Como variante de esta función, también puede determinar el tipo de un segmento de memoria. Esto se usa, por ejemplo, en Kate para encontrar el modo de resaltado adecuado: + +QByteArray array; +... +KMimeMagicResult *result = KMimeMagic::self()->findBufferType(array); +if (!result || !result->isValid()) + cout << "No se puede encontrar el tipo" << endl; +else + cout << "Tipo: " << result->mimeType() << endl; + + +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: + +KURL url("http://developer.kde.org/favicon.ico"); +QString type = KIO::NetAccess::mimetype(url); +if (type == KMimeType::defaultMimeType()) + cout << "No se puede encontrar el tipo" << endl; +else + cout << "Tipo: " << type << endl; + + +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 KMimeType::findByURL() ha devuelto «application/octect-stream». + +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: + +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 << "Tipo MIME: " << ((KIO::MimetypeJob *)job)->mimetype() << endl; +} + + + + + + +Mapear un tipo MIME a una aplicación o a un servicio + +Cuando se instala una aplicación, se copia un archivo .desktop 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 .desktop 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 KServiceTypeProfile: + +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 << "Nombre: " << service->name() << endl; +} + + +El valor devuelto por esta función es una lista de ofertas de servicio. Un objeto KServiceOffer empaqueta un KService::Ptr junto a un número de preferencia. La lista devuelta por KServiceTypeProfile::offers() está ordenada según la preferencia del usuario. El usuario puede cambiarla llamando a keditfiletype text/html o seleccionando Editar tipo de archivo en el menú de contexto de Konqueror sobre un archivo HTML. + +En el ejemplo anterior, se solicitó una lista de las aplicaciones que ofrecen soporte para text/html. Entre otros, esta lista contendrá editores HTML, como Quanta Plus. También puede sustituir el segundo argumento "Application" por "KParts::ReadOnlyPart". En este caso, obtendrá una lista de componentes integrables para visualizar HTML, como KHTML. + +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: + +KService::Ptr offer = KServiceTypeProfile::preferredService("text/html", "Application"); +if (offer) + cout << "Nombre: " << service->name() << endl; +else + cout << "No se ha encontrado un servicio apropiado" << endl; + + +Para solicitudes aún más complejas existe un «trader» desarrollado de modo similar a CORBA. + +Para ejecutar una aplicación de servicio con algunas URLs, use KRun: + +KURL::List urlList; +urlList << "http://www.ietf.org/rfc/rfc1341.txt?number=1341"; +urlList << "http://www.ietf.org/rfc/rfc2046.txt?number=2046"; +KRun::run(offer.service(), urlList); + + + + + + +Otros + +En esta sección listaremos algunas APIs directamente relacionadas con las de la sección anterior. + +Obtener un icono para una URL. Esto busca el tipo de URL y devuelve el icono asociado. + +KURL url("ftp://ftp.kde.org/pub/incoming/wibble.c"); +QString icon = KMimeType::iconForURL(url); + + +Ejecutar una URL. Esto busca el tipo de URL y ejecuta el programa preferente del usuario que está asociado a este tipo. + +KURL url("http://dot.kde.org"); +new KRun(url); + + + + + + + + +Transparencia de red + + +Introducción + +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 transparencia de red. + +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 asincronismo 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. + +En las bibliotecas de KDE, la transparencia de red está implementada en la API KIO. El concepto central de esta arquitectura es una tarea 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. + +La operación en segundo plano se realiza mediante el inicio de ioslaves 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. + +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 + +http://www-com.physik.hu-berlin.de/~bernd/article.tgz#tar:/paper.tex + + + + + + +Uso de KIO + +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 result(KIO::Job*). Tras emitir esta señal, la tarea se borra a sí misma. De este modo, un caso de uso típico podría ser: + +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 << "mkdir funcionó bien" << endl; +} + + +Dependiendo del tipo de tarea, también podrá conectarla a otras señales. + +Lo que sigue es una introducción a las posibles funciones: + + + +KIO::mkdir(const KURL &url, int permission) +Crea un directorio, opcionalmente con ciertos permisos. + + +KIO::rmdir(const KURL &url) +Elimina un directorio. + + +KIO::chmod(const KURL &url, int permissions) +Cambia los permisos de un archivo. + + +KIO::rename(const KURL &src, const KURL &dest, bool overwrite) +Renombra un archivo. + + +KIO::symlink(const QString &target, const KURL &dest, bool overwrite, bool showProgressInfo) +Crea un enlace simbólico. + + +KIO::stat(const KURL &url, bool showProgressInfo) +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. + + +KIO::get(const KURL &url, bool reload, bool showProgressInfo) +Transfiere datos desde un URL. + + +KIO::put(const KURL &url, int permissions, bool overwrite, bool resume, bool showProgressInfo) +Transfiere datos a un URL. + + +KIO::http_post(const KURL &url, const QByteArray &data, bool showProgressInfo) +Envía datos. Específica de HTTP. + + +KIO::mimetype(const KURL &url, bool showProgressInfo) +Intenta encontrar el tipo MIME de un URL. El tipo se puede obtener de KIO::MimetypeJob::mimetype() una vez que el trabajo haya finalizado. + + +KIO::file_copy(const KURL &src, const KURL &dest, int permissions, bool overwrite, bool resume, bool showProgressInfo) +Copia un único archivo. + + +KIO::file_move(const KURL &src, const KURL &dest, int permissions, bool overwrite, bool resume, bool showProgressInfo) +Renombra o mueve un único archivo. + + +KIO::file_delete(const KURL &url, bool showProgressInfo) +Elimina un único archivo. + + +KIO::listDir(const KURL &url, bool showProgressInfo) +Lista el contenido de un directorio. Cada vez que se conozcan nuevas entradas será emitida la señal KIO::ListJob::entries(). + + +KIO::listRecursive(const KURL &url, bool showProgressInfo) +Similar a la función listDir(), aunque esta es recursiva. + + +KIO::copy(const KURL &src, const KURL &dest, bool showProgressInfo) +Copia un archivo o un directorio. Los directorios se copian recursivamente. + + +KIO::move(const KURL &src, const KURL &dest, bool showProgressInfo) +Mueve o renombra un archivo o un directorio. + + +KIO::del(const KURL &src, bool shred, bool showProgressInfo) +Elimina un archivo o un directorio. + + + + + + + + +Entradas de directorio + +La tarea KIO::stat() y la tarea KIO::listDir() devuelven un resultado de tipo UDSEntry y UDSEntryList, respectivamente. Esta última está definida como QValueList<UDSEntry>. 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). + +Actualmente están definidos los siguientes tipos: + + + +UDS_SIZE (integer) - Tamaño del archivo. + +UDS_USER (string) - Usuario al que pertenece el archivo. + +UDS_GROUP (string) - Grupo al que pertenece el archivo. + +UDS_NAME (string) - Nombre del archivo. + +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. + +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. + +UDS_LINK_DEST (string) - En caso de un enlace simbólico, el nombre del archivo al que apunta. + +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(). + +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(). + +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(). + +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. + +UDS_MIME_TYPE (string) - Tipo MIME del archivo. + +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. + + + +Aunque la forma de almacenar información sobre los archivos en una UDSEntry 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 m_uds contiene el valor UDS_MIME_TYPE. Afortunadamente, existe una API que es mucho más fácil de usar: la clase KFileItem. + + + + + +Utilización síncrona + +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 + +KURL origen, destino; +origen = ...; +destino = ... +KIO::NetAccess::copy(origen, destino); + + +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. + +Existe una combinación de funciones particularmente interesante: download() junto a removeTempFile(). 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). Si 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 removeTempFile() 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: + +KURL url; +url = ...; +QString tempFile; +if (KIO::NetAccess::download(url, tempFile) { + // cargar el archivo de nombre tempFile + KIO::NetAccess::removeTempFile(tempFile); +} + + + + + + +Metadatos + +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: + +void FooClass::reloadPage() +{ + KURL url("http://www.kdevelop.org/index.html"); + KIO::TransferJob *job = KIO::get(url, true, false); + job->addMetaData("cache", "reload"); + ... +} + + +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 Job::queryMetaData() pregunta por el valor de cierta clave entregada por el esclavo. Para el esclavo HTTP, un ejemplo sería la clave «modified», que contiene la fecha (representada en forma de cadena de texto) de cuando la página web fue modificada por última vez. Por ejemplo: + +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 << "Última modificación: " << modified << endl; +} + + + + + + +Programación + +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. + +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. + +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 directo. 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. + +Por lo tanto, existe una manera diferente: puede programar 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: + +KURL url("http://developer.kde.org/documentation/kde2arch/index.html"); +KIO::TransferJob *job = KIO::get(url, true, false); +KIO::Scheduler::scheduleJob(job); + + +Existe una tercera posibilidad orientada a conexiones. 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: + +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); + + +Solo debe desconectar el esclavo una vez que se garantice que han finalizado todos los trabajos que le hayan sido asignados. + + + + + +Definición de un ioslave + +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: + +protocoldir = $(kde_servicesdir) +protocol_DATA = ftp.protocol +EXTRA_DIST = $(mime_DATA) + + +El contenido del archivo ftp.protocol sería el siguiente: + +[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 + + +La entrada «protocol» define de qué protocolo se hace responsable este esclavo. La entrada «exec» 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 «kdeinit», 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. + +Las líneas «input» y «output» no se usan actualmente. + +Las restantes líneas del archivo .protocol 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 ftp:), KIO puede leer el archivo de origen y luego escribir los datos en el archivo de destino. Para que esto funcione, el archivo .protocol debe notificar las acciones que proporciona su esclavo. + +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 kdemain(). 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: + +extern "C" { int kdemain(int argc, char **argv); } + +int kdemain(int argc, char **argv) +{ + KLocale::setMainCatalogue("kdelibs"); + 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; +} + + + + + + +Implementación de un ioslave + +Los esclavos se implementan como subclases de KIO::SlaveBase (FtpSlave en el ejemplo anterior). De este modo, las acciones que se listan en el archivo .protocol corresponden a ciertas funciones virtuales de KIO::SlaveBase que la implementación del esclavo debe reimplementar. Estas son algunas de las posibles acciones y sus correspondientes funciones virtuales: + + + +reading - Lee datos desde una URL +void get(const KURL &url) + +writing - Escribe datos en una URL y crea el archivo de destino si no existe. +void put(const KURL &url, int permissions, bool overwrite, bool resume) + +moving - Renombra un archivo. +void rename(const KURL &src, const KURL &dest, bool overwrite) + +deleting - Borra un archivo o directorio. +void del(const KURL &url, bool isFile) + +listing - Lista el contenido de un directorio. +void listDir(const KURL &url) + +makedir - Crea un directorio. +void mkdir(const KURL &url, int permissions) + + + +Adicionalmente, existen funciones reimplementables que no están listadas en el archivo .protocol. Para estas operaciones, KIO determina automáticamente si están soportadas o no (es decir, la implementación por defecto devuelve un error). + + + +Entrega información sobre el archivo, similar a la función stat() de C. +void stat(const KURL &url) + +Cambia los permisos de acceso de un archivo. +void chmod(const KURL &url, int permissions) + +Determina el tipo MIME de un archivo. +void mimetype(const KURL &url) + +Copia un archivo. +copy(const KURL &url, const KURL &dest, int permissions, bool overwrite) + +Crea un enlace simbólico. +void symlink(const QString &target, const KURL &dest, bool overwrite) + + + +Todas estas implementaciones deben finalizar con una de estas dos llamadas: si la operación fue exitosa, se debería llamar a finished(); si ocurrió un error, error() 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 KIO::Error. El segundo argumento suele ser la URL en cuestión. Se usa, por ejemplo, en la función KIO::Kob::showErrorDialgog() para parametizar el mensaje de error legible por el usuario. + +En el caso de los esclavos que se corresponden con protocolos de red, resulta interesante reimplementar el método SlaveBase::setHost(). 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 SlaveBase::metaData(). Puede comprobar la existencia de metadatos para cualquier clave con la función SlaveBase::hasMetaData(). + + + + + +Devolviendo datos a la aplicación + +Varias acciones implementadas en un proceso esclavo necesitan algún modo de devolver datos a la aplicación que está usando dicho proceso esclavo: + + + +get() envía bloques de datos. Esto se lleva a cabo con data(), que tiene como argumento un QByteArray. Por supuesto, no es necesario que envíe todos los datos al mismo tiempo. Si tiene que enviar un archivo grande, llame a data() con bloques más pequeños de datos, de modo que la aplicación pueda procesarlos. Llame a finished() cuando la transferencia haya terminado. + +listDir() devuelve información sobre las entradas de un directorio. Para este propósito, llame a listEntries() con una KIO::UDSEntryList como argumento. Del mismo modo que ocurría con data(), puede llamar a esta función varias veces. Cuando haya terminado, llame a listEntry() con «true» como segundo parámetro. También puede llamar a totalSize() para devolver el número total de entradas de directorio, si es conocido. + +stat() devuelve información sobre el archivo, como su tamaño, tipo MIME, etc. Esta información está empaquetada en una KIO::UDSEntry, que se describirá más adelante. Use statEntry() para enviar este tipo de elementos a la aplicación. + +mimetype() llama a mimeType() con un argumento de cadena. + +get() y copy() pueden necesitar proporcionar información de progreso. Esto se lleva a cabo con los métodos totalSize(), processedSize() y speed(). El tamaño total y el procesado se devuelven en bytes, y la velocidad en bytes por segundo. + +Puede enviar pares clave/valor de metadatos arbitrarios con setMetaData(). + + + + + + + +Interacción con el usuario + +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. + + + +infoMessage() - Se usa para propósitos informativos, tales como el mensaje «Obteniendo datos de <host>» 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 KIO::Job::infoMessage(). + +warning() - Muestra un aviso en una caja de mensaje con KMessageBox::information(). No ocurre nada si ya hubiera otra caja de mensaje abierta como consecuencia de una llamada anterior a warning() desde el mismo proceso esclavo. + +messageBox() - 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 SlaveBase::MessageBoxType como referencia. + +openPassDlg() - Abre un diálogo para introducir el nombre de usuario y la contraseña. + + + + + + + + + + + + +Licencias + +&underFDL; +&underGPL; + + + +
diff --git a/tde-i18n-es/docs/kdevelop/kdearch/joinbevel.png b/tde-i18n-es/docs/kdevelop/kdearch/joinbevel.png new file mode 100644 index 00000000000..4155aa35133 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdearch/joinbevel.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdearch/joinmiter.png b/tde-i18n-es/docs/kdevelop/kdearch/joinmiter.png new file mode 100644 index 00000000000..bc690db4f80 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdearch/joinmiter.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdearch/joinround.png b/tde-i18n-es/docs/kdevelop/kdearch/joinround.png new file mode 100644 index 00000000000..a44f906dc71 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdearch/joinround.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdearch/konqi-mirrored.png b/tde-i18n-es/docs/kdevelop/kdearch/konqi-mirrored.png new file mode 100644 index 00000000000..89f4fc6ab52 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdearch/konqi-mirrored.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdearch/konqi-normal.png b/tde-i18n-es/docs/kdevelop/kdearch/konqi-normal.png new file mode 100644 index 00000000000..efdc1dbd531 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdearch/konqi-normal.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdearch/konqi-rotated.png b/tde-i18n-es/docs/kdevelop/kdearch/konqi-rotated.png new file mode 100644 index 00000000000..7504fe7b8d0 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdearch/konqi-rotated.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdearch/konqi-sheared.png b/tde-i18n-es/docs/kdevelop/kdearch/konqi-sheared.png new file mode 100644 index 00000000000..0648ea5be20 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdearch/konqi-sheared.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdearch/kview-menu.png b/tde-i18n-es/docs/kdevelop/kdearch/kview-menu.png new file mode 100644 index 00000000000..30933c2f373 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdearch/kview-menu.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdearch/opengl.png b/tde-i18n-es/docs/kdevelop/kdearch/opengl.png new file mode 100644 index 00000000000..4a9ae03ec61 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdearch/opengl.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdearch/penstyles.png b/tde-i18n-es/docs/kdevelop/kdearch/penstyles.png new file mode 100644 index 00000000000..7660deedaff Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdearch/penstyles.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdearch/whatsthis.png b/tde-i18n-es/docs/kdevelop/kdearch/whatsthis.png new file mode 100644 index 00000000000..109b3673f20 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdearch/whatsthis.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/Makefile.am b/tde-i18n-es/docs/kdevelop/kdevelop/Makefile.am new file mode 100644 index 00000000000..2d733d1b104 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = es +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/Makefile.in b/tde-i18n-es/docs/kdevelop/kdevelop/Makefile.in new file mode 100644 index 00000000000..c89e1e7bb8a --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/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/kdevelop/kdevelop +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@ +kdeinitdir = @kdeinitdir@ +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/kdevelop/kdevelop/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/kdevelop/kdevelop/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/kdevelop/kdevelop/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdevelop/kdevelop/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdevelop/kdevelop/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 kdevelop-install.docbook kdevelop-ideal-mode-0.png file-browsers.docbook create-new-project-cvs.png configure-select.png createnewproject.png kdevelop-mdi-mode.png applicationwizard.docbook getting-started.docbook empty-ide.png project-management.docbook configure-general.png kdevelop-toplevel-mode.png documents-contents.png kdevelop-scripting.docbook cvs.docbook credits.docbook configure-docu-toc.png automake-manager.png kdevelop-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 kdevelop-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 kdevelop-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 kdevelop-mdi-mode.png create-new-project-cvs.png configure-docu-toc.png file-browsers.docbook kdevelop-tabbed-mode.png kdevelop-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 kdevelop-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 kdevelop-survey.docbook empty-ide.png kdevelop-ideal-mode.png configure-snippets.png configure-adddialog-baselibs.png configure-docu-custom.png kdevelop-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 kdevelop-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)/kdevelop + @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 kdevelop-mdi-mode.png create-new-project-cvs.png configure-docu-toc.png file-browsers.docbook kdevelop-tabbed-mode.png kdevelop-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 kdevelop-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 kdevelop-survey.docbook empty-ide.png kdevelop-ideal-mode.png configure-snippets.png configure-adddialog-baselibs.png configure-docu-custom.png kdevelop-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 kdevelop-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)/kdevelop/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kdevelop/$$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 kdevelop-mdi-mode.png create-new-project-cvs.png configure-docu-toc.png file-browsers.docbook kdevelop-tabbed-mode.png kdevelop-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 kdevelop-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 kdevelop-survey.docbook empty-ide.png kdevelop-ideal-mode.png configure-snippets.png configure-adddialog-baselibs.png configure-docu-custom.png kdevelop-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 kdevelop-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)/kdevelop/$$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 kdevelop-mdi-mode.png create-new-project-cvs.png configure-docu-toc.png file-browsers.docbook kdevelop-tabbed-mode.png kdevelop-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 kdevelop-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 kdevelop-survey.docbook empty-ide.png kdevelop-ideal-mode.png configure-snippets.png configure-adddialog-baselibs.png configure-docu-custom.png kdevelop-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 kdevelop-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/kdevelop/kdevelop/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdevelop/kdevelop/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdevelop/kdevelop/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/kdevelop/kdevelop/SF-general.png b/tde-i18n-es/docs/kdevelop/kdevelop/SF-general.png new file mode 100644 index 00000000000..c767e11c276 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/SF-general.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/SF-indent.png b/tde-i18n-es/docs/kdevelop/kdevelop/SF-indent.png new file mode 100644 index 00000000000..7c948439084 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/SF-indent.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/SF-other.png b/tde-i18n-es/docs/kdevelop/kdevelop/SF-other.png new file mode 100644 index 00000000000..b3befae916d Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/SF-other.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/adv-build-management.docbook b/tde-i18n-es/docs/kdevelop/kdevelop/adv-build-management.docbook new file mode 100644 index 00000000000..1eb2ca39204 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/adv-build-management.docbook @@ -0,0 +1,174 @@ + +Gestión de compilación avanzada +&automake; + + +Configuraciones de construcción múltiple +configuraciones de construcciónmúltiple + +(... pendiente de escribir ...) + + + + + + +Compilación multiplataforma +compilación multiplataforma +compilaciónmultiplataforma + + +Cuando dispone de compiladores multiplataforma adecuados, puede compilar sus programas para procesadores y sistemas operativos diferentes a los del sistema donde de ejecutan &kdevelop; 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 páginas info de GCC para más información. Algunas distribuciones &Linux; también proporcionan paquetes binarios. + +Un paquete basado en automake se puede compilar fácilmente para múltiples plataformas especificando la opción en el guión «configure» y estableciendo las variables de entorno CC y CXX 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 &kdevelop; para crear múltiples configuraciones de construcción, como se explica en . Una vez que haya creado una nueva configuración de construcción para compilación multiplataforma en el diálogo ProyectoOpciones del proyecto..., añada la opción + +plataforma + +a las opciones de configuración. El nombre plataforma puede constar de los elementos + +cpu-fabricante-sistema_operativo +o +cpu-fabricante-kernel-sistema_operativo + +Para muchas combinaciones puede usar una forma corta, como por ejemplo i386-linux o arm-elf. + + + + + + +Qt/Embedded +empotradoQt +Qt/Embedded +Qtopia +framebuffer + +&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. + +Desarrollar una aplicación para &qte; con &kdevelop; 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 al guión «configure». Puede configurar esto en el diálogo Proyecto Opciones del proyecto..., en el apartado Opciones de configure. Puede especificar el directorio donde está instalado &qte; con la opción . + +Tras configurar y compilar su aplicación con estas opciones, será enlazada con la biblioteca libqpe.so. Esta versión de su aplicación no funcionará correctamente si usa X11. Para probarla, ejecútela bajo control del programa qvfb (&Qt; Virtual Frame Buffer). Para ello, inicie qvfb y ejecute luego su aplicación con + +app + +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. + +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 QPEApplication, y que debe enlazarla con la biblioteca libqpe.so. Si desarrolla su aplicación usando la gestión de proyectos automática, deberá añadir a las opciones de «configure». + + + + diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/app-changelog.docbook b/tde-i18n-es/docs/kdevelop/kdevelop/app-changelog.docbook new file mode 100644 index 00000000000..9f28328cd4b --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/app-changelog.docbook @@ -0,0 +1,85 @@ + +Cambios + +Cambios de este documento + + + + 2003-01-03 Bernd Gehrmann, Caleb Tennis + + diseño inicial del manual + + + borrador del contenido de varios capítulos + + + + + + + + 2004-08-01 Bernd Pol, Ian Wadham + + ligera reorganización del manual + + + escritura de algunos capítulos pendientes + + + + + + + 2005-05-02 Volker Paul — Numerosos cambios, incluyendo: + + división de cada capítulo/apéndice en un archivo + + + creación de la referencia de comandos ordenada por menú (descripciones aún no completadas) + + + manual del «Asistente de aplicaciones» en el documento «getting-started.docbook» + + + reorganización de capítulos, basada en el manual de Konqueror + + + cambio de los capítulos «Instalación», «Desarrollo Unix» y «Principios básicos» al apéndice + + + reescritura del apéndice de extensiones, incluido el generador de listas de extensiones «listplugins.sh» + + + + Todavía muy lejos de estar completo, aunque es un pequeño paso adelante. + + + + 2006-05-20 Bernd Pol — Redacción de muchos «pendiente de escribir»: + + + + + + + + diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/app-menu.docbook b/tde-i18n-es/docs/kdevelop/kdevelop/app-menu.docbook new file mode 100644 index 00000000000..1900d6d20ae --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/app-menu.docbook @@ -0,0 +1,72 @@ + + + + + BerndPol + + + + +Sobre los menús y barras de herramientas + +(... pendiente de ser escrito ...) + + +Menús + +(... pendiente de ser escrito ...) + + +Menús comúnmente disponibles + +(... pendiente de ser escrito ...) + + + + +Menús específicos del proyecto + +(... pendiente de ser escrito ...) + + + + +Menús específicos de las herramientas de conectores + +(... pendiente de ser escrito ...) + + + + + + +Barras de herramientas + +(... pendiente de ser escrito ...) + + + + diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/app-misc-info.docbook b/tde-i18n-es/docs/kdevelop/kdevelop/app-misc-info.docbook new file mode 100644 index 00000000000..2a3c57328c7 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/app-misc-info.docbook @@ -0,0 +1,28 @@ + +Más información + +Obtención de información +(... pendiente de escribir ...) + + + +Informe de fallos +(... pendiente de escribir ...) + + + +Licencia +&underFDL; &underGPL; + + + diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/app-uimodes-examples.docbook b/tde-i18n-es/docs/kdevelop/kdevelop/app-uimodes-examples.docbook new file mode 100644 index 00000000000..bf87a346c13 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/app-uimodes-examples.docbook @@ -0,0 +1,174 @@ + +Ejemplos del modo de interfaz de usuario de &kdevelop; + + +Modo IDEAl + +Pulse aquí para volver a la introducción sobre los modos. + + + + + + + Captura de pantalla + Modo IDEAl de &kdevelop; + + + +Pulse aquí para volver a la introducción sobre los modos. + + + + + + + Captura de pantalla + Modo IDEAl de &kdevelop;, con las pestañas cerradas + + + +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. +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 Gestor de automake a modo de ejemplo. Describe la pestaña inferior de la barra de pestañas de la derecha. + +Pulse aquí para volver a la introducción sobre los modos. + + + + + + +Modo de ventanas de marco hijas + +Pulse aquí para volver a la introducción sobre los modos. + + + + + + + Captura de pantalla + Modo de ventanas de marco hijas de &kdevelop; + + + +Pulse aquí para volver a la introducción sobre los modos. + + + + + + +Modo de páginas solapadas + +Pulse aquí para volver a la introducción sobre los modos. + + + + + + + Captura de pantalla + Modo de páginas solapadas de &kdevelop; + + + +Pulse aquí para volver a la introducción sobre los modos. + + + + + + +Modo de ventanas de nivel superior + +Pulse aquí para volver a la introducción sobre los modos. + + + + + + + Captura de pantalla + Modo de ventanas de nivel superior de &kdevelop; + + + +Pulse aquí para volver a la introducción sobre los modos. + + + + + + diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/applicationwizard.docbook b/tde-i18n-es/docs/kdevelop/kdevelop/applicationwizard.docbook new file mode 100644 index 00000000000..19ef200dcbd --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/applicationwizard.docbook @@ -0,0 +1,1386 @@ + + + + + BerndPol + + + + +Primeros pasos — el &appwizard; + + + + + + &appwizard; + +En &kdevelop; el trabajo de desarrollo de software se organiza en proyectos. 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. +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, ⪚, trabaja en varias aplicaciones al mismo tiempo, como suele suceder a menudo. Dígale a &kdevelop; 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. + + +Nuevos proyectos + + + + + + proyecto + nuevo + +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; +&kdevelop; le proporciona un modo fácil de iniciar un nuevo proyecto de programación: el &appwizard;. Encontrará el &appwizard; en la opción del menú Proyecto Nuevo proyecto. +Si usa el &appwizard;, solo necesitará realizar una corta serie de pasos para comenzar un nuevo proyecto de programación: + + Seleccionar el lenguaje de programación que desea usar y el tipo de aplicación que desea generar a partir de un juego de plantillas predefinidas. + Proporcionar alguna información general como el nombre de la aplicación, la carpeta donde deberá ser generada, &etc; + Decidir si desea utilizar un sistema de control de versiones, como ⪚ CVS, y proporcionar los datos que fueran necesarios. + Configurar algunas plantillas para los archivos iniciales de cabecera y de código fuente (si es necesario). + Finalmente, dígale al &appwizard; que genere todo lo necesario, la estructura de carpetas, las plantillas iniciales para archivos de cabecera y código fuente, los archivos de las herramientas de gestión (como, ⪚, un esqueleto make inicial), &etc; + +¡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. +Veamos ahora todo esto más detalladamente... + + +Pasos iniciales + + + diálogo + crear nuevo proyecto + + proyecto + crear nuevo proyecto + diálogo + + proyecto + plantillas + + plantillas + proyecto + +Para crear un nuevo proyecto en &kdevelop;, seleccione Nuevo proyecto en el menú Proyecto. El diálogo Crear nuevo proyecto se mostrará con una página General inicial: + + + + + + + Diálogo inicial para configurar un nuevo proyecto + + + +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. + + +Selección del lenguaje de programación y tipo de aplicación + + + proyecto + tipo de aplicación + + proyecto + lenguaje de programación + + proyecto + lenguaje + + lenguaje + + lenguaje de programación + + aplicación + tipo + +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: + + + Ada + Ada + nuevo proyecto + + C + C + nuevo proyecto + + C++ + C++ + nuevo proyecto + + Base de datos (proyectos SQL) + SQL + nuevo proyecto + + Base de datos + nuevo proyecto + + Fortran + Fortran + nuevo proyecto + + Haskell + Haskell + nuevo proyecto + + Java + Java + nuevo proyecto + + PHP + PHP + nuevo proyecto + + Pascal + Pascal + nuevo proyecto + + Perl + Perl + nuevo proyecto + + Python + Python + nuevo proyecto + + Ruby + Ruby + nuevo proyecto + + Shell (guiones para el intérprete Bash) + Bash + nuevo proyecto + + shell + nuevo proyecto + + + +Para ser precisos, estas carpetas no contienen realmente herramientas de programación, sino que conducen a plantillas 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. +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 corta descripción 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 captura de pantalla de la ventana principal que muestra la aplicación. +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. + + +Selección de un sistema de gestión del proyecto +Cada plantilla está ligada a un sistema degestión de proyecto 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. + + + + + +Proporcionar información general + + + proyecto + propiedades + + propiedades + + aplicación + nombre + + nombre + aplicación + + proyecto + carpeta + + carpeta + proyecto + + ruta + nuevo proyecto + + proyecto + autor + + proyecto + correo electrónico + + autor + + correo electrónico + + proyecto + main.cpp + + main.cpp + + proyecto + licencia + + licencia + +La parte inferior del diálogo Crear nuevo proyecto, en la página General, consiste en un cuadro con la etiqueta Propiedades. Aquí debe proporcionar alguna información general sobre su proyecto para que el &appwizard; sepa cómo generar la estructura inicial. + +Nombre de la aplicación +Por supuesto, su aplicación necesita un nombre. Introdúzcalo en el campo superior de las Propiedades, llamado Nombre de la aplicación. Usaremos MiAplicacion como ejemplo. + +Es posible que cuando lo haga note que el &appwizard; se niega a aceptar algunos caracteres especiales. Los únicos caracteres aceptados son: + caracteres en mayúsculas y minúsculas (sin acentos) + números + el carácter de subrayado + + +La principal causa de esta restricción es que el &appwizard; usará el nombre de la aplicación como base para algunos nombres de clases 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. + +La carpeta del proyecto +La otra causa importante para esta restricción puede verla en la línea inferior del área Propiedades, etiquetada Ubicación final, y que muestra la carpeta donde el &appwizard; generará su aplicación. + +Mientras escribe el nombre de la aplicación notará que &appwizard; repite los caracteres introducidos al final de la línea etiquetada Ubicación final, utilizando únicamente caracteres en minúsculas. +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 Adelante >. Además, le avisará en este caso añadiendo (carpeta/archivo existente) en la línea Ubicación final. + + +La ruta inicial +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 (⪚, 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. + +Puede hacer esto en la segunda línea de Propiedades, etiquetada Ubicación. Lo que debe introducir aquí es la ruta inicial 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 Ubicación final para proporcionarle un mejor control sobre lo que está ocurriendo. +El &appwizard; copiará un valor inicial en el campo Ubicación al comienzo, que se toma de lo que ha introducido en el campo Carpeta predeterminada para los proyectos durante los pasos de configuración general. En nuestro caso, hemos indicado a &kdevelop; que utilice /home/devel/projects/ como ruta inicial para nuestros proyectos. +Modifique el contenido del campo Ubicación de modo que la carpeta de desarrollo para su aplicación mostrada en la línea Ubicación final sea única. + +Tenga cuidado de que la ruta que introduzca en el campo Ubicación ya exista. En caso contrario, no podrá continuar con el siguiente paso. El &appwizard; le avisará si no existe la ruta añadiendo (no válida) a la línea Ubicación final. + + + + + + + Preparar el nuevo proyecto para CVS + + + + +Información personal +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 Autor, y una dirección de correo electrónico válida en el campo Correo electrónico. De este modo, los usuarios de su aplicación podrán ponerse en contacto con el autor. + + + + + 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 Autor y Correo electrónico del diálogo Crear nuevo proyecto no son correctos, debería revisar su configuración de correo electrónico en el &kcontrolcenter;. + 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 main.cpp. + De todos estos campos, el Correo electrónico es opcional, 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. + + + + +Información sobre la versión y la licencia +Finalmente, introduzca un número inicial de versión para su nueva aplicación en el campo Versión, y seleccione la licencia bajo la que desea que esté su aplicación en la pestaña Licencia. + + +Si ha seleccionado un tipo de aplicación para el que el &appwizard; proporciona textos de plantilla de código fuente comunes (⪚, C/C++), verá el texto de notificación de la licencia en la tercera página de este diálogo Crear nuevo proyecto (vea más adelante el capítulo Proporcionar plantillas para las cabeceras y el código fuente). +Si selecciona Personalizada en la pestaña Licencia, deberá proporcionar un texto propio para la licencia. + +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. + +Una vez que haya introducido correctamente toda esta información, pulse el botón Adelante > para proceder como se muestra en los siguientes capítulos. + + + + + +Proporcionar información sobre el sistema de versiones + + + CVS + nuevo proyecto + + proyecto + CVS + + base de datos + CVS + + versión + base de datos + + versión + CVS + +En un segundo paso, el &appwizard; le llevará a la página del Sistema de control de versiones, donde puede decidir qué sistema de control de versiones desea utilizar. + +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 Uso de &CVS;. + + +No se desea usar un sistema de control de versiones +Inicialmente estará seleccionado Ninguno en la pestaña Sistema de control de versiones, y el resto de la página estará en blanco. Si no desea utilizar un sistema de control de versiones, pulse el botón Adelante > para continuar. + + + +Uso de &CVS; +En cualquier otro caso, deberá seleccionar el sistema de control de versiones que desea utilizar en la pestaña Sistema de control de versiones. Usaremos &cvs; en nuestro ejemplo. Si lo selecciona, el &appwizard; volverá a visualizar la página, mostrándole una serie de campos que debe rellenar. + + + + + + + + Preparar el nuevo proyecto para CVS + + + +Un sistema de control de versiones como &CVS; (que significa Sistema de versiones concurrentes) almacena copias de los archivos seleccionados del proyecto en algún tipo de base de datos. Si utiliza &CVS;, podrá, entre otras cosas, subir (commit) estos archivos o descargarlos en la carpeta de su proyecto (checkout, o update). 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 &kdevelop;) sin interferir en el trabajo de los demás. + + + CVS + raíz + + raíz + CVS + + CVS + local + + CVS + remoto + + CVS local + + :local: + + CVS + :local: + + +Raíz &CVS; +&CVS; necesita gestionar 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 raíz &CVS;. El primer paso para acomodar su nuevo proyecto a &CVS; consiste, pues, en indicarle a &kdevelop; dónde está ubicada esta raíz. + + +Raíz &CVS; local. Existen dos posibilidades básicas: usar una base de datos &CVS; local, o bien usar una base de datos situada en un servidor remoto. 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 cvsroot, tal y como se muestra a continuación: +/home/devel/cvsroot (donde devel se refiere al usuario programador, solo a título de ejemplo) + +De hecho, esta es una forma abreviada. Exactamente, la raíz &CVS; local debe ser referida usando el prefijo :local:. La forma abreviada solo está permitida en los casos en que el nombre de archivo comience con una barra (/). El nombre completo para nuestro ejemplo de raíz &CVS; local sería: :local:/home/devel/cvsroot + +Introduzca el nombre de la carpeta raíz de &CVS; que ha sido establecida en su sistema en el campo Raíz CVS. 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. +Inicializar una nueva raíz &CVS;. Si todavía no existe una raíz &CVS;, &kdevelop; puede ordenar al sistema &CVS; que cree una por usted en la carpeta indicada. Solo tiene que marcar la casilla Iniciar raíz que hay debajo del campo Raíz CVS. +Como se ha dicho, &kdevelop; solo ordena 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 Iniciar raíz sin tener en cuenta que ya pueda existir una carpeta raíz &CVS;. + +Raíz &CVS; remota. 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 Raíz CVS. Por ejemplo, si desea acceder al servidor &CVS; de &kde;: +:pserver:mi_login@cvs.kde.org:/home/kde (donde mi_login se refiere al nombre de usuario establecido para su cuenta &CVS; de &kde;) + + + CVS remoto + + :pserver: + + :ext: + + CVS + :local: + + CVS + :pserver: + + CVS + :ext: + + +Tipos de servidores remotos de &CVS; +Básicamente existen dos tipos de servidores de &CVS; remotos ampliamente usados: el pserver, que utiliza un protocolo no cifrado asegurado por una contraseña, y el servidor ext, que utiliza transferencias de datos cifrados con rsh o ssh. Se distinguen por el prefijo de &URL; que utilizan: + + +:pserver: + +para el tipo de servidor protegido por contraseña, y + +:ext: + +para el tipo de servidor que usa rsh o ssh. Por ejemplo + +:ext:mi_login@cvs.cervisia.sourceforge.net:/cvsroot/cervisia + +accede a la raíz &CVS; de la ampliamente usada herramienta de gestión Cervisia en el servidor de SourceForge. +Si desea utilizar un servidor de &CVS; que soporte acceso cifrado con rsh o ssh, debe indicarle a &kdevelop; el protocolo de cifrado que debe usar. Solo tiene que introducir rsh o ssh en el campo CVS_RSH de la página Sistema de control de versiones del diálogo Crear nuevo proyecto. + +Debe tener en cuenta ciertos aspectos si usa un servidor cifrado para &CVS; con &kdevelop;. Vea el capítulo Uso de &CVS; para más detalles. + + + CVS + repositorio + + repositorio + CVS + + +El repositorio &CVS; +Hasta ahora solo le ha indicado a &kdevelop; 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 &kdevelop; 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 repositorio. + +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. +Solo debe introducir el nombre del repositorio que desea usar en el campo Repositorio CVS de la página Sistema de control de versiones del diálogo Crear nuevo proyecto. En nuestro ejemplo es: MiAplicacion + +Tenga cuidado de no utilizar un repositorio existente. 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. + + +Los campos restantes +No queda demasiado trabajo por hacer. El &appwizard; ya habrá rellenado el resto de campos por usted. Con más detalle: + +El campo Proveedor se usa solo por razones de compatibilidad. Puede aceptar el proveedor predeterminado que el &appwizard; ha colocado en él. +El campo Mensaje le permite comentar el contenido inicial del &CVS;. Puede usar el texto que desee o dejar el texto nuevo proyecto que el &appwizard; ha colocado en él de forma predeterminada. +La Etiqueta de publicación contiene el nombre que va a etiquetar el estado inicial de su proyecto. Esta etiqueta 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 Uso de &CVS;. +El &appwizard; ha colocado una etiqueta inicio por omisión en este campo, lo que constituye una buena propuesta. Puede aceptarla sin más. + + +Cuando cualquier información contenida en estos campos sea incorrecta, &kdevelop; 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 Mensajes de &kdevelop; 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: + + +* cd '/home/devel/test' && cvs -d '/home/devel/cvsroot' \ + import -m 'nuevo proyecto' '' 'proveedor' 'inicio' &&\ + 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 *** + + +Si ocurre esto, deberá configurar el &CVS; manualmente (&kdevelop; 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 Nuevo proyecto del menú Proyecto. + + +Una vez que haya introducido toda la información relacionada con &CVS;, pulse el botón Adelante > para continuar. + +Si desea corregir algún error de la página anterior del diálogo Crear nuevo proyecto, pulse el botón < Atrás. El &appwizard; recordará sus preferencias de la página actual, de modo que pueda continuar cuando vuelva a ella. + + + + +Proporcionar plantillas para cabeceras y código fuente + +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. +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. +Si se usa esta página, &appwizard; rellenará algunos comentarios comunes de cabeceras, que para una aplicación basada en C++ pueden aparecer como: + + +/*************************************************************************** + * 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. * + ***************************************************************************/ + + +Otras plantillas proporcionarán información similar en un formato acorde a las definiciones del lenguaje de programación que desee utilizar. +Como habrá observado, el gestor de aplicaciones ha rellenado rápidamente la información que usted ha introducido en la primera página General del diálogo Crear nuevo proyecto, como el contenido de los campos Autor y Correo electrónico. También se ha insertado información sobre la licencia correcta que haya seleccionado en la pestaña Licencia. + + +Cómo editar las plantillas + + + plantillas + proyecto + editar + + proyecto + plantillas + editar + +Las plantillas que ha preparado en el diálogo Crear nuevo proyecto serán procesadas posteriormente cada vez que le ordene a &kdevelop; 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. +No está obligado a usar texto plano en ningún caso. &kdevelop; 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 Autor, su Correo electrónico y la Licencia en el texto inicial de la plantilla. + + + +Incluir información &doxygen; en los archivos + +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: + +/** + * \file $MODULE$.cpp + * \brief (ponga aquí una descripción corta). + **/ + +Cada vez que cree un nuevo archivo de código fuente, &kdevelop; sustituirá la variable $MODULE$ por nombre del cuerpo del archivo recién creado. Por ejemplo, si ha creado una nueva clase de C++ llamada UnaSencillaPrueba, verá las siguientes líneas en el archivo unasencillaprueba.cpp: + +/** + * \file unasencillaprueba.cpp + * \brief (ponga aquí una descripción corta). + **/ + +Todavía tendrá que proporcionar la descripción corta tras la palabra clave \brief, pero parte del trabajo será relizado por usted de forma automática. + + + + +El archivo con el texto de licencia + +Como otro ejemplo, puede incluir una referencia explícita al texto de licencia que desea utilizar en la plantilla. Use la variable $LICENSEFILE$ para este propósito e incluya, por ejemplo, esta línea: + + +// Vea $LICENSEFILE$ para el texto completo de la licencia. + +El &appwizard; reemplazará la variable $LICENSEFILE$ con el nombre del archivo donde se puede encontrar el texto completo de la licencia, como por ejemplo: + +// Vea COPYING para el texto completo de la licencia. + +para la licencia GPL, o + +// Vea LICENSE.BSD para el texto completo de la licencia. + +si desea poner su aplicación bajo la licencia BSD. +Existen, por supuesto, más variables que &kdevelop; conoce. Vea la sección Edición de plantillas en el capítulo Herramientas de edición para ver una lista de las posibles variables que puede usar. + + + + +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. + + + + + +Construir los archivos iniciales del proyecto + + + proyecto + nuevo + construir + + proyecto + construcción inicial + +Casi todo está terminado en este momento. En la última página de plantillas, el botón Adelante > habrá cambiado ahora a Finalizar. +Piense dos veces antes de pulsarlo. Todavía tiene la oportunidad de revisar todo repetidamente usando el botón < Atrás. 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 repositorio &CVS; (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). +Si no desea generar el nuevo proyecto, cancele el diálogo Crear nuevo proyecto con el botón Cancelar. En caso contrario, pulse el botón Finalizar y observe en la ventana de Mensajes cómo inicia el proyecto el &appwizard;. +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 Mensajes 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. + +En muchos casos, cuando su nuevo proyecto haya sido generado de este modo, &kdevelop; 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). + +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 templates dentro de la carpeta de su proyecto. Unas sencillas operaciones de copia de archivos bastarán para modificarlas. +Luego sería recomendable que compilara el proyecto inicial 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. + + + + + configuración de construcción predeterminada + aviso + + configuraciones de construcción + aviso de construcción predeterminada + + aviso + configuración de construcción predeterminada + + Antes de compilar su nuevo proyecto por primera vez, eche un vistazo a Proyecto Configuración de construcción. Si existen tres secciones mostradas como: predeterminada, optimizada y depuración, estando seleccionada depuración, utilice esta opción, o use optimizada en su lugar. + Debido a algunas limitaciones en la configuración de autoconf y automake, no debería bajo ningún concepto construir su proyecto con la configuración predeterminada. Esto ocasionaría que se perdieran ciertas preferencias internas de carpetas, haciendo que el comando configure genere errores cuando intente usarlo más adelante con las configuraciones de construcción optimizada o depuración. + 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 predeterminada, deberá, por supuesto, usar esta opción. + + + + + + + +Configuración de proyectos + +(... pendiente de escribir ...) + + + + diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/automake-file-popup.png b/tde-i18n-es/docs/kdevelop/kdevelop/automake-file-popup.png new file mode 100644 index 00000000000..6de2260ba65 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/automake-file-popup.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/automake-manager.png b/tde-i18n-es/docs/kdevelop/kdevelop/automake-manager.png new file mode 100644 index 00000000000..65086e5d307 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/automake-manager.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/automake-subproject-popup.png b/tde-i18n-es/docs/kdevelop/kdevelop/automake-subproject-popup.png new file mode 100644 index 00000000000..04cfae016c9 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/automake-subproject-popup.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/automake-target-popup.png b/tde-i18n-es/docs/kdevelop/kdevelop/automake-target-popup.png new file mode 100644 index 00000000000..0b0b10ff751 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/automake-target-popup.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/automakemanager.png b/tde-i18n-es/docs/kdevelop/kdevelop/automakemanager.png new file mode 100644 index 00000000000..65086e5d307 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/automakemanager.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/class-browsers.docbook b/tde-i18n-es/docs/kdevelop/kdevelop/class-browsers.docbook new file mode 100644 index 00000000000..a65ac653b71 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/class-browsers.docbook @@ -0,0 +1,89 @@ + +Los navegadores de clases +navegador de clases + +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, &kdevelop; incluye varios navegadores de clases que visualizan su estructura de diferentes modos. + + +Vista de clases + +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. + +
+Una captura de la vista de clases + + + +
+ +La vista de clases funciona en dos modos distintos. De manera predeterminada, todos los símbolos están agrupados en clases, estructuras, funciones, variables y espacios de nombres. En el menú de contexto de la vista puede seleccionar Listar por espacios de nombres. 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. + +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ú Alcances de identificadores completos. + +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 Ir a declaración en el menú de contexto. En el menú de contexto de las clases también encontrará Añadir método... y Añadir atributo.... 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. + +
+ + + + +Herramientas de clases + +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 Herramienta de clases... + + + + + + +Jerarquía de clases + +(... pendiente de escribir ...) + + + +
+ + diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/classview.png b/tde-i18n-es/docs/kdevelop/kdevelop/classview.png new file mode 100644 index 00000000000..a59cdef1b92 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/classview.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/commands.docbook b/tde-i18n-es/docs/kdevelop/kdevelop/commands.docbook new file mode 100644 index 00000000000..92acbcaa62f --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/commands.docbook @@ -0,0 +1,3000 @@ + + + + + + + Volker Paul + Eloy Cuadra
ecuadra@eloihr.net
Traductor
+
+ + 2005-04-03 +
+ +Referencia de comandos + +Las combinaciones de teclas para los accesos rápidos mostradas en este capítulo son las predeterminadas, pero pueden ser modificadas por el usuario. + + + + +La barra de menú Tenga en cuenta que algunas entradas del menú solo aparecen cuando son aplicables. Especialmente, algunas entradas están ligadas a la funcionalidad de ciertas extensiones, por lo que únicamente estarán disponibles cuando la extensión esté activada. + + + + + + + + + +El menú <guimenu +>Archivo</guimenu +> + + + + &Ctrl;N Archivo Nuevo +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. + + + + &Ctrl;O Archivo Abrir +Abre un archivo existente mediante un diálogo de selección. + + + + &Ctrl;O Archivo Abrir reciente +Muestra un submenú con los archivo recientemente abiertos. Si selecciona uno de ellos, KDevelop lo abrirá. + + + + &Alt;&Ctrl;O Archivo Apertura rápida +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. + + + + + &Ctrl;S Archivo Guardar +Guarda el archivo actual. + + + + + &Ctrl;S Archivo Guardar como... +Usa el diálogo Guardar como... para permitirle guardar una copia del archivo actual con otro nombre. + + + +Archivo Guardar todo +Guarda todos los archivos abiertos. + + + +F5 Archivo Recargar +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). + + + +Archivo Revertir todo +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. + + + + + &Ctrl;P Archivo Imprimir... +Imprime el archivo actual. + + + +Archivo Exportar +Exporta el archivo actual. + + + + + &Ctrl;F4 Archivo Cerrar +Cierra el archivo actual. + + + + +Archivo Cerrar todo +Cierra todos los archivos abiertos. + + + + +Archivo Cerrar todos los otros +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. +Tenga en cuenta que existe un comando similar en el menú de la ventana. + + + + + &Ctrl;Q Archivo Salir +Cierra KDevelop. + + + + + + + + + + + + +El menú <guimenu +>Editar</guimenu +> + + + + + + + &Ctrl;Z Editar Deshacer +Deshacer + + + + + &Ctrl;&Shift;Z Editar Rehacer +Rehacer + + + + + &Ctrl;X Editar Cortar +Cortar + + + + + &Ctrl;C Editar Copiar +Copiar + + + + + &Ctrl;V Editar Pegar +Pegar + + + + + &Ctrl;A Editar Seleccionar todo +Seleccionar todo + + + + + &Ctrl;&Shift;A Editar Deseleccionar +Quitar la selección actual + + + + + &Ctrl;&Shift;B Editar Modo de selección de bloque +Modo de selección de bloques de texto + + + + + Insert Editar Modo de sobrescritura +Modo de sobrescritura + + + + + &Ctrl;F Editar Buscar +Buscar un texto + + + + + F3 Editar Buscar siguiente +Buscar la siguiente coincidencia de un texto + + + + + &Shift;F3 Editar Buscar anterior +Buscar la anterior coincidencia de un texto + + + + + &Ctrl;R Editar Reemplazar +Reemplazar un texto por otro + + + + + &Ctrl;G Editar Ir a línea +Ir a una línea de texto determinada + + + + + &Alt;&Ctrl;F Editar Buscar en archivos +Buscar un texto en varios archivos + + + + + &Shift;R Editar Buscar-seleccionar-reemplazar +Buscar, seleccionar y reemplazar + + + + +Editar Reformatear fuente +Reformatear código fuente + + + + + &Ctrl;J Editar Expandir texto +Expandir texto + + + + + &Ctrl;L Editar Expandir abreviatura +Expandir abreviatura + + + + + &Ctrl;Space Editar Completar texto +Completar texto + + + + + F2 Editar Crear miembro +Crear miembro + + + + + + + + + + + + + + +El menú <guimenu +>Ver</guimenu +> + + + +Ver Atrás +Atrás + + + + +Ver Adelante +Adelante + + + + + &Ctrl;/ Ver Cambiar a... +Cambiar a... + + + + + &Alt;C Ver Mostrar editor +Mostrar editor + + + + + F4 Ver Siguiente error +Siguiente error + + + + + &Shift;F4 Ver Anterior error +Anterior error + + + + + &Shift;F Ver Modo de pantalla completa +Modo de pantalla completa + + + + + &Ctrl;F12 Ver Cambia a la cabecera/implementación +Cambia a la cabecera/implementación + + + + +Ver Vistas de herramientas +Vistas de herramientas + + + + +Ver Bloques de herramientas +Bloques de herramientas + + + + + F7 Ver Cambiar a línea de comando +Cambiar a la línea de comando + + + + +Ver Esquema +Esquema + + + + + F10 Ver Ajuste de línea dinámico +Ajuste de línea dinámico + + + + +Ver Indicadores de ajuste de línea dinámico +Indicadores de ajuste de línea automático + + + + +Ver Mostrar/ocultar marcador de ajuste de línea estático +Mostrar/ocultar marcador de ajuste de línea estático + + + + + F6 Ver Mostrar/ocultar borde de iconos +Mostrar/ocultar borde de iconos + + + + + F11 Ver Mostrar/ocultar números de línea +Mostrar/ocultar números de línea + + + + +Ver Mostrar/ocultar marcas de barras de desplazamiento +Mostrar/ocultar marcas de barras de desplazamiento + + + + + F9 Ver Mostrar/ocultar marcas de pliegue +Mostrar/ocultar marcas de pliegue + + + + +Ver Plegado de código +Plegado de código. + + + + +Ver Establecer codificación +Establece la codificación. + + + + + + + + + + + + + + + +El menú <guimenu +>Proyecto</guimenu +> + + + + +Proyecto Nuevo proyecto... +Nuevo proyecto... + + + + +Proyecto Abrir proyecto... +Abrir proyecto... + + + + +Proyecto Abrir proyecto reciente +Abrir proyecto reciente + + + + +Proyecto Lenguaje activo +Lenguaje activo + + + + +Proyecto Importar proyecto existente... +Importar un proyecto existente... + + + + +Proyecto Nueva clase... +Nueva clase... + + + + +Proyecto Diagrama de herencias +Diagrama de herencia de clases + + + + +Proyecto Añadir nueva traducción... +Añadir traducción... + + + + +Proyecto Configuración de construcción +Configuración de construcción. + + + + +Proyecto Distribución y publicación del proyecto +Distribución y publicación del proyecto. + + + + +Proyecto Opciones del proyecto... +Opciones del proyecto... + + + + +Proyecto Cerrar proyecto +Cerrar proyecto + + + + + + + + + + + + + + +El menú <guimenu +>Proyecto</guimenu +> + + + + + F8 Construir Construir proyecto +Construir el proyecto + + + + + F7 Construir Construir objetivo activo +Construir el objetivo activo + + + + +Construir Compilar archivo +Compilar archivo + + + + +Construir Ejecutar configure +Ejecutar «configure» + + + + +Construir Ejecutar automake y compañía +Ejecutar «automake» y demás comandos relacionados + + + + +Construir Instalar +Instalar + + + + +Construir Instalar (como usuario root) +Instalar (como usuario «root») + + + + +Construir Limpiar proyecto +Limpiar el proyecto. + + + + +Construir Limpiar todo +Limpiar todo + + + + + &Shift;F9 Construir Crear mensajes y combinar +Crear mensajes y combinar. + + + + +Construir Ejecutar programa +Ejecutar programa + + + + +Construir Construir documentación de la API +Construir la documentación de la API + + + + +Construir Limpiar documentación de la API +Limpiar documentación de la API + + + + + Esc Construir Detener +Detener + + + + + + + + + + + + + + + +El menú <guimenu +>Proyecto</guimenu +> + + + + +Depurar Iniciar +Inicia la depuración. + + + + +Depurar Parar +Detener + + + + +Depurar Pausar +Pausar + + + + +Depurar Ejecutar hasta el cursor +Ejecuta hasta la posición del cursor. + + + + +Depurar Paso a paso por funciones +Paso a paso por funciones + + + + +Depurar Paso a paso por instrucciones +Paso a paso por instrucciones + + + + +Depurar Saltar a función +Saltar a función + + + + +Depurar Saltar a instrucción +Saltar a instrucción + + + + +Depurar Saltar hasta fin de función +Saltar hasta fin de función + + + + +Depurar Cambiar punto de interrupción +Cambiar punto de interrupción + + + + +Depurar Visores +Visores + + + + +Depurar Examinar archivo core... +Examinar archivo core... + + + + +Depurar Adjuntar a proceso +Adjuntar a proceso + + + + +Depurar Comprobar pérdidas de memoria con Valgrind +Comprobar pérdidas de memoria con Valgrind + + + + +Depurar Perfilar con KCachegrind +Perfilar con KCachegrind + + + + + + + + + + + + + + + + + + +El menú <guimenu +>Marcadores</guimenu +> + + + + + &Ctrl;B Marcadores Fijar marcador +Añadir la selección actual a su lista de marcadores. + + + + +Marcadores Borrar todos los marcadores +Elimina todos los marcadores. + + + + + + + + + + + + +El menú <guimenu +>Ventana</guimenu +> + + + + + &Alt;W Ventana Cerrar ventanas seleccionadas... +Cierra las ventanas seleccionadas... + + + + &Ctrl;F4 Ventana Cerrar +Cierra la ventana actual + + + +Ventana Cerrar todo +Cierra todas las ventanas + + + +Ventanas Cerrar las otras +Cerrar el resto de ventanas + + + + + + + + + + + + + + + + +El menú <guimenu +>Herramientas</guimenu +> + + + +Herramientas Modo de solo lectura +Modo de solo lectura. + + + + +Herramientas Tipo de archivo +Tipo de archivo + + + + +Herramientas Resaltado +Modo de resaltado. + + + + +Herramientas Fin de línea +Fin de línea + + + + +Herramientas Ortografía +Ortografía + + + + + &Ctrl;I Herramientas Sangrar +Sangrado. + + + + + &Ctrl;&Shift;I Herramientas Sangrado inverso +Sangrado inverso. + + + + +Herramientas Borrar sangrado +Borra el sangrado. + + + + + &Ctrl;Tab Herramientas Alinear +Alineación. + + + + + &Ctrl;D Herramientas Comentar +Comenta. + + + + + &Ctrl;&Shift;D Herramientas Descomentar +Descomenta. + + + + + &Ctrl;U Herramientas Mayúsculas +Mayúsculas. + + + + + &Ctrl;&Shift;U Herramientas Minúsculas +Minúsculas. + + + + + &Alt;&Ctrl;U Herramientas Capitalizar +Pone la primera letra de cada palabra en mayúsculas. + + + + + &Ctrl;J Herramientas Unir líneas +Une líneas. + + + + +Herramientas Ajustar líneas del documento +Ajustar las líneas del documento + + + + +Herramientas +>Visor de diferencias... +Visor de diferencias... + + + + +Herramientas Ejecutar comando... +Ejecutar comando... + + + + +Herramientas Filtrar selección a través de comando... +Filtra la selección mediante un comando externo que usa la extensión de filtro. + + + + +Herramientas Depurar expresión regular... +Depurar expresión regular... + + + + +Herramientas Explorador de Parts +Explorador de Parts + + + + + &Alt;&Ctrl;C Herramientas Apertura rápida de clase... +Apertura rápida de clase... + + + + + &Alt;&Ctrl;M Herramientas Apertura rápida de método... +Apertura rápida de método... + + + + + &Alt;&Ctrl;P Herramientas Vista preliminar de la salida de Doxygen +Vista preliminar de la salida de Doxygen + + + + + &Ctrl;&Shift;S Herramientas Documentar la función actual +Documentar la función actual + + + + + + + + + + + + + + + +El menú <guimenu +>Preferencias</guimenu +> + + + + + + &Ctrl;M Preferencias Mostrar/ocultar la barra de menú +Muestra/oculta la barra de menú. + + + +Preferencias Barras de herramientas +Abre un submenú en el que puede seleccionar que se muestren o que se oculten diversas barras de herramientas. + + + +Preferencias Mostrar la barra de estado +Muestra la barra de estado. + + + +Preferencias Configurar accesos rápidos... +Configurar los accesos rápidos... + + + + +Herramientas Configurar barras de herramientas... +Configurar las barras de herramientas... + + + + +Preferencias Configurar notificaciones... +Configurar las notificaciones... + + + + +Preferencias Configurar editor... +Configurar el editor... + + + + +Preferencias Configurar KDevelop... +Configurar KDevelop... + + + + + + + + + + + + + + +El menú <guimenu +>Ayuda</guimenu +> + + + + +Ayuda Manual de KDevelop +Ver este documento. + + + + &Shift;F1 Ayuda ¿Qué es esto? +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 Detener, se mostrará una breve explicación sobre él. + + + + +Ayuda Sugerencia del día +Muestra la sugerencia del día + + + + + &Alt;&Ctrl;I Ayuda Buscar en el índice de la documentación... +Buscar en el índice de la documentación... + + + + + &Alt;&Ctrl;S Ayuda Buscar en ladocumentación... +Buscar en la documentación... + + + + +Ayuda Página de manual... +Página «man» (de manual)... + + + + +Ayuda Página info... +Página «info» (de información)... + + + + +Ayuda Informar de fallo... +Muestra un informe de fallo para rellenar. + + + +Ayuda Acerca de KDevelop... +Muestra información breve sobre la versión de KDevelop, sus autores y el contrato de licencia. + + + +Ayuda Acerca de KDE... +Muestra información sobre la versión de &kde; que está utilizando. + + + + + + + + + + + + + +
diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/configure-adddialog-baselibs.png b/tde-i18n-es/docs/kdevelop/kdevelop/configure-adddialog-baselibs.png new file mode 100644 index 00000000000..a599fc11e13 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/configure-adddialog-baselibs.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/configure-doctree-textsearch.png b/tde-i18n-es/docs/kdevelop/kdevelop/configure-doctree-textsearch.png new file mode 100644 index 00000000000..49f7f12a0ae Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/configure-doctree-textsearch.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-chm.png b/tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-chm.png new file mode 100644 index 00000000000..6b901e7f4bb Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-chm.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-custom.png b/tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-custom.png new file mode 100644 index 00000000000..7d9d1e9719e Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-custom.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-devhelp.png b/tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-devhelp.png new file mode 100644 index 00000000000..f80dc415b05 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-devhelp.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-dox.png b/tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-dox.png new file mode 100644 index 00000000000..80795f71dd1 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-dox.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-edit.png b/tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-edit.png new file mode 100644 index 00000000000..1340500d00e Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-edit.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-general.png b/tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-general.png new file mode 100644 index 00000000000..75256998ae6 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-general.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-toc.png b/tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-toc.png new file mode 100644 index 00000000000..559468a29aa Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/configure-docu-toc.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/configure-editor.png b/tde-i18n-es/docs/kdevelop/kdevelop/configure-editor.png new file mode 100644 index 00000000000..f861f0a6f07 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/configure-editor.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/configure-file-selector.png b/tde-i18n-es/docs/kdevelop/kdevelop/configure-file-selector.png new file mode 100644 index 00000000000..84ac71a6671 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/configure-file-selector.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/configure-general.png b/tde-i18n-es/docs/kdevelop/kdevelop/configure-general.png new file mode 100644 index 00000000000..43f12f38e6d Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/configure-general.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/configure-select.png b/tde-i18n-es/docs/kdevelop/kdevelop/configure-select.png new file mode 100644 index 00000000000..f9ef06e2f43 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/configure-select.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/configure-snippets.png b/tde-i18n-es/docs/kdevelop/kdevelop/configure-snippets.png new file mode 100644 index 00000000000..ab3797baab0 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/configure-snippets.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/create-new-project-cvs.png b/tde-i18n-es/docs/kdevelop/kdevelop/create-new-project-cvs.png new file mode 100644 index 00000000000..c26ddbdd25a Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/create-new-project-cvs.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/createnewproject.png b/tde-i18n-es/docs/kdevelop/kdevelop/createnewproject.png new file mode 100644 index 00000000000..55610b46ca7 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/createnewproject.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/credits.docbook b/tde-i18n-es/docs/kdevelop/kdevelop/credits.docbook new file mode 100644 index 00000000000..24e7a0c57f4 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/credits.docbook @@ -0,0 +1,40 @@ + +Créditos + + +Contribuciones + + + + El contenido inicial de este manual fue escrito por Bernd Gehrmann bernd@kdevelop.org y Caleb Tennis caleb@aei-tech.com. + El sumario de &automanag; y los capítulos sobre operación del gestor de automake fueron escritos por Ian Wadham, ianw@netspace.net.au). + + + + + + + + + + diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/cvs.docbook b/tde-i18n-es/docs/kdevelop/kdevelop/cvs.docbook new file mode 100644 index 00000000000..6b560c3c42e --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/cvs.docbook @@ -0,0 +1,131 @@ + +Uso de &CVS; +CVS +control de revisiones + + +Conceptos básicos de &CVS; + +&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 repositorio. 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 bloquear los archivos sobre los que alguien desea trabajar. Así, el desarrollo puede ser altamente paralelizado. + +Cada vez que un desarrollador ha terminado una tarea, envía 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. + +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 (⪚, &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; + +&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; () o TkCVS (). En &kdevelop;, solo podrá usar directamente una pequeña parte de las funcionalidades de &cvs; que son importantes para su trabajo diario. + +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 Desarrollo de código abierto con &CVS;, por Karl Fogel, que se distribuye gratuitamente (a excepción de los capítulos no técnicos). Vea . + + + + + + +Comandos &CVS; de &kdevelop; + +En las vistas de archivos se dispone de las siguientes opciones en el menú de contexto: + + + +Añadir al repositorio + +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. + + + + +Eliminar del repositorio + +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. + + + + +Actualizar + +Ejecuta cvs update 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 .cvsrc. + + + + +Enviar + +Ejecuta cvs commit 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. + + + + +Todos estos comandos son invocados como subprocesos por &kdevelop; 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 sourceforge.net. Las posibles soluciones para este problema se describen en las «preguntas frecuentes» de &CVS;/SSH, que puede encontrar en la documentación de SourceForge. + + + + + + +Detrás del telón + + +Qué guarda &CVS; en el directorio de trabajo + +(... pendiente de escribir ...) + + + + + diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/doctreeview.png b/tde-i18n-es/docs/kdevelop/kdevelop/doctreeview.png new file mode 100644 index 00000000000..52edfd921f4 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/doctreeview.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/documentation.docbook b/tde-i18n-es/docs/kdevelop/kdevelop/documentation.docbook new file mode 100644 index 00000000000..1c5e8d25f96 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/documentation.docbook @@ -0,0 +1,73 @@ + +Documentación + +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. + +La documentación posee múltiples aspectos. Existe + documentación interna del proyecto, consistente principalmente en + comentarios en archivos de cabecera y de código fuente + documentación de la &API; interna de su proyecto generada a partir de los archivos de código fuente de su programa por herramientas especiales, como &doxygen; + + + documentación externa del proyecto, que comprende, entre otros, + documentación de la &API; externa de, ⪚, bibliotecas comunes del sistema (&kde;, &Qt;, &etc;) + cualquier otra documentación (manuales de lenguajes de programación, información general del sistema, artículos «cómo», y similares) + + + + +Toda esta documentación debe ser fácil de mantener y estar disponible rápidamente cada vez que la necesite. &kdevelop; proporciona precisamente eso. + + + + +El navegador de la documentación + + +
+Una captura del árbol de la documentación + + + +
+ +
+ +
diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/documents-contents.png b/tde-i18n-es/docs/kdevelop/kdevelop/documents-contents.png new file mode 100644 index 00000000000..45341b38a04 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/documents-contents.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/editing.docbook b/tde-i18n-es/docs/kdevelop/kdevelop/editing.docbook new file mode 100644 index 00000000000..c53be2a81f2 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/editing.docbook @@ -0,0 +1,608 @@ + +Herramientas de edición + + +Fragmentos de código + + + Características (visión general) + SnippetPart añade una vista de herramientas que se ancla a la derecha de forma predeterminada + Es posible añadir, editar y eliminar fragmentos de código mediante un menú desplegable + Si hace doble clic sobre un fragmento de la lista, se inserta en la vista activa, en la posición actual del cursor + Las ayudas emergentes muestran el contenido del fragmento de código + Los fragmentos de código se almacenan en la carpeta del usuario, de modo que cada usuario puede tener sus propios fragmentos + Los fragmentos de código pueden contener variables con el formato $NOMBREDEVARIABLE$. Al usar el fragmento se le solicita al usuario que introduzca el valor de las variables + + + + +Mapa del teclado +accesos rápidos + +A continuación listaremos los accesos rápidos de teclado predeterminados para el editor predeterminado. Los puede configurar según sus preferencias (¿cómo?) + + + + + +Izquierda +Mueve un carácter a la izquierda + +Derecha +Mueve un carácter a la derecha + +&Ctrl; Izquierda +Mueve una palabra a la izquierda + +&Ctrl; Derecha +Mueve una palabra a la derecha + +Arriba +Mueve una línea hacia arriba + +Abajo +Mueve una línea hacia abajo + +RePág +Retrocede una página + +AvPág +Avanza una página + +&Ctrl; RePág +Salta al principio del archivo + +&Ctrl; AvPág +Salta al final del archivo + +Inicio +Salta al inicio de la línea + +Fin +Salta al final de la línea + + + + + +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. + + + + + +Retroceso +Elimina el carácter situado a la izquierda + +Supr +Elimina el carácter bajo el cursor + +&Ctrl; C +Copia el texto seleccionado en el portapapeles + +&Ctrl; V +Pega el texto del portapapeles + +&Ctrl; X +Elimina el texto seleccionado y lo pone en el portapapeles + +&Ctrl; Z +Deshacer + +&Shift;&Ctrl; Z +Rehacer + + + + + + + + + + +El informador de fallos + +(... pendiente de escribir ...) + + + + + +Búsqueda y uso de la herramienta «grep» +buscar +encontrar + + +Búsqueda de texto + +&Ctrl;F- Buscar &Ctrl;R- Reemplazar + + + + + +ISearch +isearch +búsqueda incremental +buscarincremental + +La búsqueda convencional con Editar Buscar 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 ISearch 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. + + + + + +Grep +buscaren archivos + +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 Buscar en archivos... del menú Editar. Consiste básicamente en una interfaz para el programa &grep;(1). + +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 Recursivo, la búsqueda se realiza en toda la jerarquía de carpetas que existe bajo la de inicio. + +El término a buscar es generalmente una expresión regular que sigue la sintaxis POSIX. Por ejemplo, puede usar el término "\<K.*" si quiere encontrar todas las palabras que comiencen con la letra «K». Los siguientes caracteres se interpretan de un modo especial: + + + + + + + . +Representa cualquier carácter + + ^ +Representa el inicio de una línea + + $ +Representa el final de una línea + + \< +Representa el principio de una palabra + + \> +Representa el final de una palabra + + ? +El elemento anterior representa menor que una vez + + * +El elemento anterior representa cero o más veces + + + +El elemento anterior representa una o más veces + + {n} +El elemento anterior representa exactamente «n» veces + + {n,} +El elemento anterior representa «n» o más veces + + {,n} +El elemento anterior representa menos de «n» veces + + {n,m} +El elemento anterior representa al menos n veces, pero menos de m veces + + + + + +Las referencias a subexpresiones entre paréntesis también se pueden realizar mediante la notación \n. + +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. + +Una vez que ha comenzado la búsqueda tras pulsar el botón Buscar, esta se llevará a cabo por un proceso externo asíncrono. Todos los elementos encontrados aparecerán en la vista denominada Grep. 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. + + + + + + + + +Terminación de código + +(... pendiente de escribir ...) + + + + + +Creación de archivos y clases nuevas + +(... pendiente de escribir ...) + + +Edición de las plantillas + +(... pendiente de escribir ...) + + + + + + diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/empty-ide.png b/tde-i18n-es/docs/kdevelop/kdevelop/empty-ide.png new file mode 100644 index 00000000000..c0bc1533196 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/empty-ide.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/file-browsers.docbook b/tde-i18n-es/docs/kdevelop/kdevelop/file-browsers.docbook new file mode 100644 index 00000000000..63aa19276fa --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/file-browsers.docbook @@ -0,0 +1,67 @@ + +Los navegadores de archivos + +En la parte izquierda de la ventana principal, &kdevelop; puede mostrar varios tipos de listas y árboles para la selección de archivos: + + + +Árbol de archivos + +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, &kdevelop; inicia una aplicación que puede manejar su correspondiente tipo MIME. + +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 &kdevelop;), 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. + +El árbol de archivos oculta los archivos que normalmente no son interesantes, como los de código objeto. En las Opciones del proyecto, bajo Vistas de archivos, puede configurar los patrones que se usan para filtrar archivos irrelevantes (como una lista de comodines separados por comas). + +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. + +
+Una captura del árbol de archivos + + +Una captura del árbol de archivos + +
+ +
+
+ +Grupos de archivos + +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;. + +Los grupos mostrados en esta vista se pueden configurar con Vistas de archivos, en el diálogo de Opciones del proyecto. Para personalizar la vista según sus necesidades, es útil saber cómo se distribuyen los archivos en los grupos. Para cada archivo, &kdevelop; 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 Otros debería ser el último patrón. + + + +
+ +
+ + diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/file-selector.png b/tde-i18n-es/docs/kdevelop/kdevelop/file-selector.png new file mode 100644 index 00000000000..5e5491d1598 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/file-selector.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/filetree.png b/tde-i18n-es/docs/kdevelop/kdevelop/filetree.png new file mode 100644 index 00000000000..88ba300c5e1 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/filetree.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/folded-tabs.png b/tde-i18n-es/docs/kdevelop/kdevelop/folded-tabs.png new file mode 100644 index 00000000000..ccefac8be3d Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/folded-tabs.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/getting-started.docbook b/tde-i18n-es/docs/kdevelop/kdevelop/getting-started.docbook new file mode 100644 index 00000000000..13a28d6ae92 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/getting-started.docbook @@ -0,0 +1,695 @@ + + + + + + + BerndPol + + + + +Primeros pasos con &kdevelop; — Un paseo guiado + +Ahora que ha instalado su entorno de desarrollo integrado &kdevelop;, ¿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. +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): + + Cómo es la apariencia exterior del IDE &kdevelop;. + + Cómo crear un nuevo proyecto. + + + + +El primer encuentro con &kdevelop; + + +Apariencia exterior + +Cuando inicie &kdevelop; por primera vez verá una ventana similar a esta: + + + + + + + Disposición inicial de &kdevelop; + + + + +Área de trabajo y pestañas de vistas de herramientas +En esta disposición inicial, &kdevelop; utiliza lo que se denomina modo de interfaz de usuario IDEAl, 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 ventana de vista de herramientas, que le permitirá trabajar sobre una tarea específica. + + + +El menú y las barras de herramientas +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. + + + +La barra de estado +Finalmente, existe una barra de estado en la parte inferior de la ventana, donde se muestran cortas informaciones sobre varias tareas. + + + + +Cómo obtener ayuda + +Además del menú Ayuda, 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. + + +¿Qué hace esta entrada del menú? +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ú. + + + +¿Cuál es el nombre de este elemento? +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.. + + + +¿Qué hace este elemento? +Dispone de más información mediante las ayudas emergentes expandidas que existen en muchos elementos del IDE. Seleccione Ayuda ¿Qué es esto? o pulse &Shift;F1, 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. + + + + + +¿Qué hay en los menús? + +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. + +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 referencia de comandos. + + + + Archivo + + Acciones comunes + 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 &kdevelop;. + Revertir cambios + Adicionalmente, le permite deshacer todas las modificaciones volviendo a cargar el contenido del archivo previamente guardado. + + + + + Editar + + Este menú solo es útil si tiene abierto algún documento. + Acciones comunes + Proporciona las típicas acciones deshacer/rehacer y cortar/copiar/pegar. Además, le permite seleccionar bloques de texto de varias maneras. + Buscar y reemplazar + Existe una función de búsqueda realmente potente en el menú Editar. 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. + Edición de texto avanzada + Existen opciones para reformatear el documento actual y para completar de forma automática el texto parcialmente tecleado de varios modos. + + + + + Ver + + Del mismo modo que el menú Editar, este menú es útil solo si hay un proyecto abierto. En este caso, dispondrá de las siguientes acciones (entre otras): + Historial de navegación + Desplazarse atrás y adelante entre los documentos, &etc;, que haya visitado. + + Seguimiento de errores + Navegar hasta las líneas de código que contienen los errores encontrados durante el último proceso de compilación o construcción. + + Administrar la vista de herramientas + Mostrar y ocultar ventanas de vistas de herramientas o puntos de anclaje de vistas de herramientas. + + Acciones relacionadas con el editor + Algunas entradas del menú Ver 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: + + + Controlar el comportamiento del ajuste de línea en la ventana del documento. + Mostrar u ocultar algunas marcas en el borde de las ventanas de documento: números de línea, iconos y diversos tipos de marcadores. + Controlar cómo se muestran las secciones de código fuente plegado (temporalmente oculto). + + + + + + Proyecto + + Todo el trabajo de &kdevelop; se basa en proyectos, 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: + Abrir un proyecto + Permite crear nuevos proyectos, abrir proyectos existentes e importar proyectos de otros entornos. + + Opciones del proyecto + Permite definir una buena cantidad de propiedades de un proyecto. + + Administración de clases + Añade nuevas clases a un proyecto y traza el árbol de herencia de una clase. + + Distribuir el proyecto + Ayuda a construir paquetes para la distribución del proyecto. + + + + + Construir + + 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: + Compilar, enlazar y ejecutar + Permite compilar y enlazar todo el proyecto o partes del mismo, así como ejecutar la aplicación desde el IDE. + + Preparar operaciones de construcción + Esto depende realmente del sistema «make» que esté utilizando en su proyecto. En el caso de proyectos «automake» permite ejecutar los archivos Makefile.cvs y configure por sí mismos. También existen acciones para eliminar archivos de traducción del proyecto en varios grados de intensidad. + + Instalar la aplicación + Permite instalar la aplicación en carpetas locales o en las del sistema (solo accesibles al usuario «root»). + + Documentación de la API + Construir o eliminar del proyecto la documentación de la API basada en «doxygen» definida en las opciones del proyecto. + + + + + + Depurar + + 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ú Proyecto Opciones del proyecto). En tal caso dispondrá de las siguientes acciones: + Acciones típicas de depuración + La primera sección del menú Depurar 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. + + Puntos de interrupción + &kdevelop; 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ú Cambiar punto de interrupción. + + Depuración avanzada + Otras entradas del menú Depurar permiten un análisis más sofisticado del programa. Utilice &Shift;F1 paraobtener más información sobre su propósito. + + + + + + Ventana + + 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. + + + + + Herramientas + + &kdevelop; 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ú Herramientas refleja gran parte de esta configuración. + Edición avanzada + El conjunto superior de las entradas del menú Herramientas será proporcionado por la extensión del editor que esté usando. Puede seleccionar su editor favorito en Preferencias Configurar KDevelop... Editor. Tras seleccionar un archivo editable, la parte superior del menú Herramientas proporcionará comandos de edición avanzados específicos de su editor. + + Manejo de documentos web + En caso de que la ventana del documento activo contenga una página HTML (⪚ mostrada a partir de una selección de Documentación), el menú Herramientas mostrará entradas adicionales que le proporcionarán varios métodos para manejar páginas web. + + Otras herramientas + Normalmente existirá un buen número de otras entradas según las herramientas disponibles en cada momento. Utilice &Shift;F1 para obtener más información sobre su propósito. + + + + + + Preferencias + + 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. + + + + + Ayuda + + 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. + + + + + + + + + + + +Cómo comenzar un nuevo proyecto: el &appwizard; + +Trata de mostrarle lo fácil que es hacer que KDevelop cree un programa funcional. + +El &appwizard; 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. + +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 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. + + + + + diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-ideal-mode-0.png b/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-ideal-mode-0.png new file mode 100644 index 00000000000..263f223783b Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-ideal-mode-0.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-ideal-mode.png b/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-ideal-mode.png new file mode 100644 index 00000000000..a65aa1416dd Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-ideal-mode.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-install.docbook b/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-install.docbook new file mode 100644 index 00000000000..c8da1b29ae7 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-install.docbook @@ -0,0 +1,1290 @@ + + + + + BerndPol + Anne-MarieMahfouf + + + + +Instalación de &kdevelop; + + + instalación + +En este capítulo se discutirán los pasos necesarios para compilar e instalar el IDE &kdevelop;: + Cómo obtener &kdevelop; se concentra principalmente en la descarga del código fuente más reciente de &kdevelop; desde su repositorio svn. + Requisitos de &kdevelop; lista los programas y bibliotecas que necesitará tener instalados para compilar el IDE con éxito. + Compilación e instalación de &kdevelop; le guía a través del proceso de compilación e instalación de la aplicación. + Cómo obtener la documentación de la API de &kdevelop; le enseña qué es una API y cómo obtener esta útil herramienta para navegar a través del código fuente de &kdevelop;. + + + + +Cómo obtener &kdevelop; + + + obtener &kdevelop; + + &kdevelop; + obtener + +El binario de &kdevelop; 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. +Tabién puede obtener el código fuente de &kdevelop;, compilarlo e instalarlo usted mismo. Este código fuente se puede encontrar en la página del proyecto, http://www.kdevelop.org, o en el servidor ftp de &kde;. + + +Obtener versiones diarias de &kdevelop; a partir del svn + + + svn + +Si desea estar al día del desarrollo actual, dispone de versiones descargadas anónimamente del repositorio svn. +El nombre del módulo es kdevelop en svn co svn://anonsvn.kde.org/home/kde/branches/KDE/3.5/kdevelop. + + +Descarga inicial del svn + + + checkout + + &kdevelop; + svn + checkout + +Para obtener una versión inicial de &kdevelop;, debe descargarla de un svn anónimo. Para realizar esta operación (llamadacheckout) siga los siguientes pasos. + +Asumiremos que quiere tener su copia de &kdevelop; en la subcarpeta kde3src de su carpeta personal (~). + + + # Crear la carpeta de destino, si es necesario: + ~> mkdir kde3src + ~> cd kde3src + ~/kde3src> svn co svn://anonsvn.kde.org/home/kde/branches/KDE/3.5/kdevelop + ~/kde3src> cd kdevelop + + +Tras descargar con éxito su copia de &kdevelop; 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. + +No sobrecargue el servidor. Por favor, no haga un «checkout» cada vez que quiera actualizar su &kdevelop;. Use el comando «svn update» para este propósito. + +Ahora debe compilar su versión de &kdevelop; como se muestra en la sección Compilación e instalación de &kdevelop;. + + + + +Actualización de su copia del svn + + + actualizar + + &kdevelop; + svn + actualizar + +Tras descargar por primera vez (y compilar con éxito) &kdevelop; 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 &kdevelop; en la carpeta kde3src). +Note el uso del comando up (o update) en lugar de co (que significa checkout). + + + ~> cd kde3src + ~/kde3src> cd kdevelop + ~/kde3src> svn up + + +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. + +Ahora puede compilar una nueva versión de &kdevelop; como se muestra en el capítulo Consideraciones sobre la compilación especial de svn. + + + + + + + + + +Requisitos de &kdevelop; + + + requisitos + + &kdevelop; + requisitos + + GNU + requisitos + +Para poder compilar y usar con éxito &kdevelop; 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. + + +Necesario: + + gcc/g++ ≥ 2.95.3 (o compatible) + gcc + requisitos + + g++ + requisitos + + Disponible en gcc.gnu.org + + + &GNU; make (o compatible) + make + requisitos + + Disponible en www.gnu.org/software/make + + + &perl; 5.004 (o superior) + Perl + requisitos + + Disponible en www.perl.com + + + autoconf ≥ 2.52 (o superior) + autoconf + requisitos + + Disponible en www.gnu.org/software/autoconf + + + automake ≥ 1.6 (o superior) + automake + requisitos + + Disponible en www.gnu.org/software/automake + + + flex 2.5.4 (o superior) + flex + requisitos + + Disponible en www.gnu.org/software/flex + + + &Qt; ≥ 3.3.0 (o superior) + Qt + requisitos + + Disponible en www.trolltech.com/products/qt + + + KDE ≥ 3.4.0 (o superior) + KDE + requisitos + + Disponible en www.kde.org + + + + +Opcional: + La herramienta de navegación a través del código fuente ctags, disponible en http://ctags.sourceforge.net, 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. ctags + + dot, un compilador de lenguaje de gráficos, disponible en http:/www.graphviz.org. Necesita esta herramienta junto a &doxygen; si quiere mostrar gráficamente la relación existente entre sus clases (lo que es muy recomendable). dot + + La herramienta de documentación &doxygen;, disponible en http://www.doxygen.org, si quiere generar documentación consisa y potente del API de su proyecto. doxygen + + valgrind disponible en http://developer.kde.org/~sewardj/ le ayuda a encontrar problemas de gestión de memoria en sus aplicaciones. valgrind + + svn, disponible en http://subversion.tigris.org, si quiere usar el sistema de versiones svn. + svn + requisitos + + Cualquier otro compilador o herramienta necesaria para programar en otro lenguaje o plataforma distinto de C++ y &kde;, o para algún fin especial. + + + + + + Hasta cierto punto, puede eludir la necesidad de tener &autoconf; ≥ 2.52 y &automake; ≥ 1.6. Para ello, elimine la carpeta admin en la carpeta de instalación de &kdevelop; y escriba + autoconf + circumvent version need + + automake + circumvent version need + + version need + circumvent for autoconf/automake + + + (su carpeta de kdevelop)> ln -s $KDEDIR/share/apps/kdelibs/admin admin + + en la consola. Esto hace que &kdevelop; use las preferencias generales de la carpeta admin de &kde;. + + + Tenga cuidado de no mezclar distintas versiones de &Qt;. Enlace siempre &kdevelop; con la misma versión de &Qt; con que haya sido compilada su biblioteca &kde;. En caso contrario es muy probable que experimente comportamientos muy extraños. + + + + + + + + + +Compilación e instalación de &kdevelop; + + + &kdevelop; + compilación + + &kdevelop; + instalación + +Una vez que haya complido todos los requisitos, estará listo para compilar e instalar &kdevelop;. Este apéndice trata de los pasos necesarios para conseguirlo. + + Pasos preliminares le enseña a configurar un entorno correcto. + Compilación de &kdevelop; trata sobre cómo obtener el código fuente de &kdevelop; del svn, cómo prepararlo para el proceso de instalación, y finalmente muestra los pasos necesarios para compilar e instalar &kdevelop;. + Algunas notas sobre las opciones deconfigure le enseña a ejecutar &kdevelop; si ha sido instalado en una carpeta distinta a la de &kde;. + + + +Pasos preliminares + + + preliminares + Instalación de &kdevelop; + + KDEDIR + + QTDIR + + LD_LIBRARY_PATH + + LIBRARY_PATH + + PATH + +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 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 .bashrc o .cshrc. De este modo, las variables de entorno se ajustarán correctamente cada vez que inicie el intérprete de comandos. + + +Configuración del entorno para el intérprete bash + +Si usa el intérprete bash, añada las siguientes líneas: + + + export KDEDIR=(ruta a su instalación de KDE) + export QTDIR=(ruta a su biblioteca Qt) + export LD_LIBRARY_PATH=$QTDIR/lib:$KDEDIR/lib:$LD_LIBRARY_PATH + export LIBRARY_PATH=$QTDIR/lib:$KDEDIR/lib:$LIBRARY_PATH + export PATH=$QTDIR/bin:$KDEDIR/bin:$PATH + + + + + + +Configuración del entorno para el intérprete tcsh + +Si está usando el intérprete tcsh, añada las siguientes líneas: + + + setenv KDEDIR (ruta a su instalación de KDE) + setenv QTDIR (ruta a su biblioteca Qt) + setenv LD_LIBRARY_PATH=$QTDIR/lib:$KDEDIR/lib:$LD_LIBRARY_PATH + setenv LIBRARY_PATH $QTDIR/lib:$KDEDIR/lib:$LIBRARY_PATH + setenv PATH $QTDIR/bin:$KDEDIR/bin:$PATH + + + + + + + + +Compilar &kdevelop; + + + make + Instalación de &kdevelop; + + compilación + &kdevelop; + +En la siguiente sección supondremos que ha colocado el código fuente de &kdevelop; en la carpeta ~/kde3src/kdevelop. + + +Consideraciones especiales sobre la compilación de svn + +En el caso de que utilice una versión de &kdevelop; 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. + + + +Tras hacer un «checkout» del svn + +Debe inicializar el sistema «make» tras realizar un «checkout». Esto también será de aplicación cada vez que necesite empezar desde cero. Escriba: + +~/kde3src/kdevelop> make -f admin/Makefile.common svn-clean +y luego siga el resto de pasos siguientes. +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. +El comando svn-clean eliminará cada archivo 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. + + + + +Tras una actualización svn + +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: + +U /ruta_a_alguna_carpeta/Makefile.am + +o si realizó un «checkout» completo, debe introducir: +~/kde3src/kdevelop> make -f Makefile.svn +antes de proceder con todos los pasos siguientes. + + + + + + +Secuencia de comandos <command +>make</command +> básica + +Una vez que el sistema «make» básico haya sido ajustado, debe decidir qué tipo de sistema &kdevelop; quiere usar. Esto se hace en el siguiente paso de configuración, que construye los Makefiles reales que usará el comando make. + +Puede omitir la opción en las siguientes líneas de comando para configure si quiere que &kdevelop; se instale en la carpeta predeterminada de &kde;. Consulte el capítulo Algunas notas sobre las opciones de «configure». + + + +Una versión compilada para ser depurada + +Si quiere seguir el rastro de lo que hace su aplicación &kdevelop; cuando esté en ejecución, debe construir una versión compilada para ser depurada. Ejecute el siguiente comando configure para ello: + +~/kde3src/kdevelop> ./configure --enable-debug=full --prefix=(donde está su kde3) + + + + +Una versión compilada para ser liberada + +Si solo quiere usar &kdevelop; 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 configure hace esto de forma predeterminada. + +~/kde3src/kdevelop> ./configure --prefix=(donde está su kde3) + + +Si quiere construir su propia documentación del API de &kdevelop;, debería incluir una opción adicional en el comando configure: + + ~/kde3src/kdevelop> ./configure --(opciones como las anteriores) \ --with-kdelibsdoxy-dir=$KDEDIR/share/doc/HTML/en/kdelibs-apidocs + + + + + + +Make e instalación de &kdevelop; + +configure comprobará el sistema y creará algunos archivos Makefile según lo que encuentre. El comando make usará el Makefile principal de forma predeterminada. De este modo + +~/kde3src/kdevelop> make +es suficiente. Si es necesario, obtenga ahora privilegios de usuario root con el comando +~/kde3src/kdevelop> su +e introduzca la contraseña del usuario root. Luego, instale la aplicación: +~/kde3src/kdevelop> make install +Eso es todo. Si ha instalado &kdevelop; 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 Carpeta de instalación no predeterminada. + + + De hecho, normalmente habrá tres aplicaciones instaladas basadas en &kdevelop;: + + El IDE de &kdevelop; — el lugar donde normalmente trabajará. + El navegador de documentación independiente del Asistente de &kdevelop; — aisla todas las potentes utilidades de documentación del IDE &kdevelop; en una herramienta separada. Esto resulta útil cuando necesita buscar determinada documentación sobre programación pero no quiere iniciar todo el IDE. + El Diseñador de &kdevelop; — 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 &kdevelop;. + + + + + + + + + + + + +Algunas notas sobre las opciones de <command +>configure</command +> + + +Carpeta de instalación no predeterminada + + + &kdevelop; + instalación + carpeta no predeterminada + + carpeta no predeterminada + + KDEDIRS + + kbuildsycoca + +Por defecto, configure prepara el IDE para que se instale en la carpeta predeterminada de &kde;. Esto es necesario porque &kdevelop; 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 configure con la opción . +~/kde3src/kdevelop> ./configure --prefix=(donde está su kde3) +Existe un inconveniente si hace esto: debe proporcionar a &kdevelop; 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). +Inicie un intérprete de comandos y ejecute lo siguiente antes de iniciar &kdevelop; en la línea de introducción de comandos: + +Tenga cuidado en usar la forma plural: es KDEDIRS, no KDEDIR) + + + ~> export KDEDIRS=/usr/local/kde:/opt/kde3 + ~> kbuildsycoca + (Ahora puede iniciar &kdevelop;) + ~> kdevelop + + + + La variable de entorno KDEDIRS debe estar asignada a la lista de carpetas del &kde; activo de su sistema. Usamos + /usr/local/kde:/opt/kde3 + solo como ejemplo. + La carpeta /usr/local/kde puede contener, por ejemplo, una versión incompleta de &kde; que haya compilado para propósitos de depuración, y la carpeta /opt/kde3 puede contener, adicionalmente, la versión estándar de&kde; que proporciona su distribución y que usa en el trabajo diario. + + +En un intérprete tcsh debe establecer las variables de entorno usando: +~> setenv KDEDIRS /usr/local/kde:/opt/kde3 +El comando kbuildsycoca (construir la caché de control del sistema) busca bibliotecas y cachés, sus ubicaciones y versiones, de modo que &kdevelop; 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 &kdevelop; 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. +También puede poner esas líneas en su archivo .bashrc o .cshrc, pero esto no es recomendable, ya que kbuildsycoca se ejecutará cada vez que inicie el intérprete de comandos. + +El comando kbuildsycoca no se ejecuta como usuario «root». Debe llamarlo como usuario normal (pero tampoco es una idea muy buena realizar el desarrollo de software como «root»). + + + + + + + + + +Cómo obtener la documentación del API de &kdevelop; + + + API + &kdevelop; + + &kdevelop; + API + + compilación + &kdevelop; + API + + configurar + API de &kdevelop; + +API significa interfaz del programa de aplicación. 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. +Existe una versión del API más reciente disponible en la web de KDevelop. Se actualiza automáticamente cada 24 horas, de modo que siempre esté al día. +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 &kdevelop;. 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 en el comando configure cuando prepare la compilación del código fuente de &kdevelop;: + + + ~/kde3src/kdevelop> ./configure --(opciones usuales) \ + + --with-kdelibsdoxy-dir=$KDEDIR/share/doc/HTML/en/kdelibs-apidocs + + + +(make sustituirá la variable global $KDEDIR por la dirección de la carpeta real de &kde; guardada en ella). Ejecute luego el comando make como siempre. Una vez construido el IDE &kdevelop; también tendrá la oportunidad de construir su API. Para ello debe ejecutar +~/kde3src/kdevelop> make apidocs + +Esto creará un archivo Doxyfile en la carpeta principal de &kdevelop; que luego será procesado por la aplicación Doxygen para generar un buen número de archivos .html 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 &kdevelop;. Si es necesario, obtenga permisos de superusuario con + +~/kde3src/kdevelop> su + +e introduzca la contraseña del usuario root. Luego, instale los archivos del API: + +~/kde3src/kdevelop> make install-apidox + +Cuando haya terminado make 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 &kdevelop;, en el caso de que haya configurado el código fuente de &kdevelop; como un proyecto sobre el que trabajar. + +Es muy probable que vea un buen número de mensajes de aviso y/o de error mientras Doxygen genera la documentación del API. Puede ignorarlos, ya que solo tienen interés para los desarrolladores de &kdevelop;. Si la generación de la documentación del API termina con éxito, podrá utilizar los archivos .html que la contienen. + + + + diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-mdi-mode.png b/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-mdi-mode.png new file mode 100644 index 00000000000..eaa1d3d631c Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-mdi-mode.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-scripting.docbook b/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-scripting.docbook new file mode 100644 index 00000000000..1ed044cdc97 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-scripting.docbook @@ -0,0 +1,74 @@ + + + + + IanGeiser + + + + +Uso de guiones en KDevelop + + +Ejecución de guiones +Para acceder a un guión que esté disponible para &kdevelop;, utilice el menú HerramientasGuiones. Si no existiera dicha opción es porque no se dispone de guiones para KDevelop. + + + +Añadir guiones +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: +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: + +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. + +Una de las herramientas más útiles para el desarrollo de guiones para aplicaciones consiste en usar la aplicación KDCOP. +
+ KDCOP examinando interfaces de DCOP en &kdevelop; + + + +
+ +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. + +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». + +
+ Guiones de &kdevelop; sobre el sistema de archivos + + + +
+ +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. + +
+ + +
diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-survey.docbook b/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-survey.docbook new file mode 100644 index 00000000000..fc8ff424772 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-survey.docbook @@ -0,0 +1,778 @@ + + + + + BerndPol + + + + +Un vistazo a las características de &kdevelop; + + + &kdevelop; + survey + + vista general + + survey + +&kdevelop; integra gran cantidad de herramientas, guiones y plantillas en una interfaz común de usuario. Básicamente consiste en: + varios modos de interfaz de usuario mediante los que puede seleccionar el aspecto del área de trabajo, + un &appwizard; que le ayuda a generar un nuevo proyecto, + varios sistemas de gestión del proyecto que le ayudan a construir y gestionar su proyecto, + algunas herramientas de edición para trabajar fácilmente en el texto de su programa, + varios navegadores de archivos que le proporcionan diferentes vistas de su sistema de archivos, + varios navegadores de clases para ayudarle a mantener las clases y sus relaciones de su proyecto de programación orientada a objetos, + una interfaz de depuración para encontrar y eliminar errores del programa desde &kdevelop;, y + algunas extensiones de herramientas, 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. + un conjunto de diagnósticos, documentación y herramientas de optimización. + + + + + De hecho, existen tres aplicaciones basadas en &kdevelop;: + + El IDE &kdevelop; — este es el lugar donde normalmente trabajará. + El navegador de documentación independiente, el Asistente de &kdevelop; — aisla todas las poderosas características de documentación del IDE &kdevelop; en una herramienta separada. Esto puede resultar útil cuando necesita buscar determinada documentación de programación pero no quiere iniciar todo el IDE. + El Diseñador de &kdevelop; — 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 &kdevelop;. + + + + + +Modos de interfaz de usuario disponibles + + + &kdevelop; + modos de interfaz de usuario + + interfaz de usuario + Modos de &kdevelop; + + Modos de la interfaz del usuario + + Ventanas de marco hijo + + Páginas tabuladas + + Ventanas de nivel superior + + IDEAl + +&kdevelop; ofrece a los desarrolladores cuatro modos distintos de interfaz de usuario (pulse sobre el nombre de cada modo para ver un ejemplo): + IDEAl + 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. + + 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. + 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. + + + + + Ventanas de marco hijo + + Todas las vistas de herramientas están inicialmente ancladas en el marco de la ventana principal. + Las vistas del editor y del navegador coexistirán como ventanas de nivel superior dentro del área de visibilidad de la ventana principal. + + + + + Páginas tabuladas + + Todas las vistas de herramientas están inicialmente ancladas en el marco de la ventana principal. + Las vistas del editor y del navegador estarán apiladas en una ventana con pestañas. + + + + + Ventanas de nivel superior + + Todas las vistas del editor, del navegador y de las herramientas serán ventanas de nivel superior, directamente sobre el escritorio. + El «widget» principal contiene sólo el menú, las barras de herramientas y la barra de estado. + + + + + + + +Cómo cambiar los modos de interfaz de usuario + + + interfaz de usuario + cambiar modos + + cambiar modos de interfaz del usuario + +Para cambiar el modo de la interfaz de usuario seleccione Preferencias Configurar KDevelop... en el menú. Se mostrará el diálogo Personalizar KDevelop, donde tendrá que seleccionar Interfaz de usuario en el árbol de opciones de la izquierda. Esto hará que se muestre la página de preferencias inferior. + + + + + + + Seleccionar un modo de interfaz de usuario + + + +(Las versiones anteriores de &kdevelop; solo proporcionan la sección de opciones superior.) + +En la sección Modo principal de interfaz de usuario, seleccione la opción del modo de interfaz con el que desea trabajar. +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 Selección de la interfaz de usuario para obtener más detalles. + +No olvide reiniciar &kdevelop; para que su selección tenga efecto. + + + + +Cómo maximizar el área del espacio de trabajo + + + &kdevelop; + espacio de trabajo + + &kdevelop; + maximizar espacio de trabajo + + interfaz de usuario + espacio de trabajo + + interfaz de usuario + barra de menú + + interfaz de usuario + modo de pantalla completa + + modo de pantalla completa + + barra de menú + ocultar/mostrar + + ocultar la barra de menú + + mostrar la barra de menú + + 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 KDE. + + + +Modo de pantalla completa + +Para entrar o salir del modo de pantalla completa, seleccione Ver Modo de pantalla completa en el menú, o pulse &Ctrl;&Shift;F . También dispone de un icono Modo de pantalla completa en la Barra de herramientas de navegación. + + + + +Ocultar/mostrar la barra de menú + + Para ocultar la barra de menú, seleccione en el menú Preferencias Mostrar barra de menú , o pulse &Ctrl;M . También puede incluir un icono Mostrar barra de menú en una barra de herramientas adecuada, como la Barra de herramientas de navegación. Para mostrar la barra de menú, puede pulsar la combinación &Ctrl;M o usar el icono Mostrar barra de menú, si está disponible. + + + + + + + + + + + +Elementos de la interfaz de usuario + +(... pendiente de escribir ...) + + +El área de trabajo + +(... pendiente de escribir ...) + + + +La barra de título de &kdevelop; + +(... pendiente de escribir ...) + + + +La barra de estado de &kdevelop; + +(... pendiente de escribir ...) + + + +La barra de menú + +(... pendiente de escribir ...) + + + +Las barras de herramientas + +(... pendiente de escribir ...) + + + + Las vistas de herramientas en árbol + +(... pendiente de escribir ...) + + + +Las vistas de herramientas de salida + +(... pendiente de escribir ...) + + + + + + + +Sistemas de gestión del proyecto + + + gestión del proyecto + +Globalmente, un proyecto confiará en algún tipo de sistema de gestión de proyectos. &kdevelop; ofrece cuatro de estos sistemas de gestión de proyectos que el programador puede seleccionar cuando crea un proyecto nuevo. + Los proyectos automake utilizan las herramientas de desarrollo estándar de &GNU;. + Los proyectos QMake utilizan el gestor de proyectos QMake, de Trolltech. + Los proyectos ANT utilizan el gestor de proyectos ANT, de Apache, para desarrollos en &Java;. + Los proyectos personalizados necesitan que usted mantenga sus propios Makefiles. + + + + +Proyectos automake + + + proyectos + automake + + automake + proyectos + +Los proyectos creados con el &automanag; de &kdevelop; hacen que sea muy fácil para los desarrolladores utilizar las herramientas de desarrollo estándar de &GNU;. Proporcionan + un mejor modo para generar archivos Makefile, y + una manera eficaz y sencilla de adaptarse rápidamente a diferentes sistemas mediante scripts configure generados por «autoconf». + + + + + +Proyectos QMake + + + proyectos + qmake + + qmake + proyectos + +Para los desarrolladores que prefieren la flexibilidad y el estilo del sistema «qmake» de &Qt;, &kdevelop; ofrece la posibilidad de gestionar proyectos basados en «qmake» (archivos .pro) desde la interfaz de usuario. +Para obtener más información sobre el gestor de proyectos QMake, consulte la Guía de usuario de qmake que debería estar incluida en su distribución, o mire en la web sobre la Documentación de Trolltech, donde puede encontrar la documentación de QMake para su versión de la herramienta de desarrollo de aplicaciones gráficas en C++ de Qt. + + + +Proyectos CMake + + + proyectos + cmake + + cmake + proyectos + +CMake será el sistema de construcción de &kde; para &kde; 4. &kdevelop; ya le proporciona algunas plantillas C y C++ basadas en CMake. Solo necesita que el programa cmake esté en su $PATH para construir estos proyectos. +Para preparar un nuevo proyecto C o C++ en &kdevelop; seleccione Proyecto Nuevo proyecto... C o C++ Proyectos basados en CMake Una plantilla de biblioteca compartida o programa «Hola mundo» . + + + +Proyectos ANT (proyectos &Java;) + + + proyectos + ant + + ant + proyectos + + proyectos + Java + + Java + proyectos + + desarrollo + Java + +Es posible que los desarrolladores de proyectos &Java; deseen usar el gestor de proyectos ANT, de Apache. Para generar un nuevo proyecto Ant en &kdevelop;, seleccione Proyecto Nuevo proyecto... Java Proyecto Ant Aplicación. +Para más información, consulte la página del proyecto Ant de Apache. + + + +Proyectos personalizados + + + proyectos + personalizado + + proyectos personalizados + + Makefile + proyectos personalizados + +Si prefiere mantener sus propios Makefiles para su proyecto, puede usar la opción para proyectos personalizados de &kdevelop;. Esto resulta adecuado para proyectos con estructuras inusuales, o si quiere tener control total sobre el proceso make. +Incluso si no necesita realmente 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. + + + +Cómo distribuir su aplicación + + + distribución + + aplicación + distribución + + paquetes binarios + +La distribución de sus aplicaciones solo necesita que el usuario final tenga instalado en su sistema + un compilador apropiado, + un enlazador, y + las bibliotecas de desarrollo necesarias, + + +que, al menos para las aplicaciones en C++, suele ser lo usual. Pero también puede distribuir paquetes binarios de su aplicación. De cualquier modo, el usuario final de su producto no necesita tener instalado &kdevelop;. +Le recomendamos que también incluya el archivo de proyecto de &kdevelop; junto a su código fuente. Esto facilita el trabajo de otros programadores con su código fuente (si usan &kdevelop;). +También debería hacer esto mismo con los proyectos en los que trabajan varios desarrolladores, tal vez en diferentes lugares. De este modo podrá asegurar la consistencia de los Makefiles para que no generen problemas. +Incluso en las aplicaciones multilingües, los traductores no trabajaran realmente con el código fuente, excepto en los casos que necesiten hacer correcciones para activar el soporte de traducción. + + + + + + diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-tabbed-mode.png b/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-tabbed-mode.png new file mode 100644 index 00000000000..c175c8a319b Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-tabbed-mode.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-toplevel-mode.png b/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-toplevel-mode.png new file mode 100644 index 00000000000..a9ad46df68b Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/kdevelop-toplevel-mode.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/nutshell.docbook b/tde-i18n-es/docs/kdevelop/kdevelop/nutshell.docbook new file mode 100644 index 00000000000..112bdf57055 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/nutshell.docbook @@ -0,0 +1,370 @@ + +Principios básicos — Consejos y trucos + + + +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 &kdevelop;. +Si necesita más información sobre un tema, solo tiene que seguir el enlace del título al inicio de dicho consejo. +Se dispone de información sobre estos temas: + + Aspecto visual + Proyectos + Compilación + &automanag; + Problemas de compilación y de make + Otros temas + + + +Aspecto visual + + +Forzar pestañas de vistas de herramientas más pequeñas en el modo IDEAl + +&kdevelop; 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, ⪚, ahorrar espacio en el diálogo de configuración de &kdevelop; (Preferencias Configurar KDevelop... Interfaz de usuario). +Es posible que este diálogo de configuración no esté disponible si está usando una versión 3 antigua de &kdevelop;. Para modificar el modo en que se muestran las pestañas de herramientas de forma manual, ponga una entrada bajo la etiqueta en el archivo de configuración $KDEHOME/share/config/kdeveloprc del siguiente modo: + + +: solo iconos +: solo texto (predeterminado) + +: iconos y texto + + + + + +Caracteres mal coloreados y/o estilo de visualización incorrecto + +Si nota letras aleatorias de color en algún lugar (&ie; en pestañas, en barras de herramientas, etc.) y la ventana de &kdevelop; parece utilizar un modo de visualización incorrecto, esto puede servirle de ayuda: + + +Busque en su archivo de configuración $KDEHOME/share/config/kdeveloprc la línea que contiene Style=Checked y elimínela. Luego, reinicie &kdevelop;. + + +(Este comportamiento ocurre a veces cuando deja marcado un archivo .ui en uno de los navegadores de archivos y &kdevelop; carga KUIViewer para mostrar la &GUI; producida por dicho archivo). + + + + +Modo de pantalla completa + +Seleccione VerModo de pantalla completa en el menú o pulse &Ctrl;&Shift;F. + + + + +Ocultar/mostrar la barra de menú + +Para ocultar la barra de menú seleccione PreferenciasMostrar la barra de menú en el menú o pulse &Ctrl;M. Para volver a mostrar la barra de menú solo dispone de &Ctrl;M . + + + + + +Proyectos + +Crear un proyecto nuevo + +ProyectoNuevo proyecto... iniciará el &appwizard;. + + + + +Crear un proyecto personalizado + +No existe un modo de crear un proyecto personalizado (&ie;, un proyecto que no use sus propios «makefiles»). Utilice Proyecto Importar proyecto existente en su lugar. Recuerde establecer el Tipo de proyecto adecuado, etiquetado por un («Makefiles» personalizados) adicional, en el diálogo. + + + + +Use las opciones del proyecto cuanto antes + +Cuando inicie un nuevo proyecto no olvide usar la opción del menú Proyecto Opciones del proyecto... según sus necesidades. + + + + + +Compilación + +Pérdida de detalles en los mensajes de compilación + +Si durante las compilaciones nota que está perdiendo alguna información valiosa en la ventana de vista de la salida de mensajes, 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. + + + + + +<link linkend="automake-manager" +>&automanag;</link +> + + +Crear nuevos archivos en un proyecto + +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 Crear nuevo archivo... + + + + +Añadir archivos existentes a un proyecto + +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 Añadir archivos existentes... + + + + +Eliminar un archivo de un proyecto + +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 Eliminar. + + + + + +Problemas de compilación y de make + +El proyecto no vuelve a construirse tras modificar el objetivo predeterminado + +Existe un problema con el sistema &automake;/&autoconf;. Proyecto Configuración de construcción proporciona la selección de tres directorios de construcción (predeterminado, optimizado y depuración), de cualquier modo fijado bien en el objetivo predeterminado o bien en los objetivos optimizado/depuración. + + +Una vez que haya configurado su proyecto con el modo predeterminado, no volverá a poder construirlo con los modos optimizado y depuración. + + +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. + + + + + + +Error Versión de autoconf incorrecta, &etc; + +Existen algunos mensajes de error relacionados con versiones muy antiguas de autoconf, &etc;, que impiden que configure funcione bien. Ejecute autoreconf en el árbol de directorios donde residen los archivos configure.in en cuestión. Este comando tratará de actualizar la información en los archivos del sistema de construcción &GNU;. Vea man autoreconf para obtener más información. + + + + + +Otros temas + +Archivos de configuración usados por &kdevelop; + +Normalmente no deberían preocuparle, pero es bastante útil conocerlos en caso de que algo vaya mal con su instalación. + + + + + diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/project-advanced.docbook b/tde-i18n-es/docs/kdevelop/kdevelop/project-advanced.docbook new file mode 100644 index 00000000000..f605e53816a --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/project-advanced.docbook @@ -0,0 +1,111 @@ + + + + + BerndPol + + + + +Administración avanzada de proyectos + + +Carga de proyectos + + +Carga de proyectos usados recientemente + +(... pendiente de escribir ...) + + + + + + + Cómo abrir un proyecto reciente + + + + + + + +Carga de un proyecto existente + +(... pendiente de escribir ...) + + + +Conversión de archivos antiguos de proyectos de KDevelop + +&kdevelop; le permite abrir archivos de antiguos proyectos de KDevelop 2.x y convertirlos en archivos de &kdevelop;. Para ello, use la opción del menú Abrir proyecto... y seleccione Archivos de proyecto de KDevelop 2 en el Filtro:. Seleccione luego el archivo de proyecto que desea abrir. El proyecto se convierte al formato de &kdevelop; y se guarda como archivo de proyecto de &kdevelop;. + + + + +Importar un proyecto existente + +Para importar una carpeta existente en &kdevelop; seleccione Importar carpeta existente en el menú Proyecto. Debería ver el asistente de importación de carpetas mostrado a continuación: + +
+El diálogo para importar una carpeta + + + +
+ +
+ +
+ + + + +Adaptando el proyecto — Opciones del proyecto + +(... pendiente de escribir ...) + + + +
diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/project-management.docbook b/tde-i18n-es/docs/kdevelop/kdevelop/project-management.docbook new file mode 100644 index 00000000000..949d32f467e --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/project-management.docbook @@ -0,0 +1,1259 @@ + + + + + BerndPol + IanWadham + + + + +Compilación y gestión de proyectos + +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. + +Aquí encontrará la siguiente información: + + Sumario de &automanag;, que contiene una introducción a &automanag;, + Funcionamiento del gestor de automake, que describe de forma básica cómo trabajar con &automanag;, + + + +Sumario de &automanag; + +En el capítulo sobre sistemas de construcción 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. +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 &kdevelop; 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». + + +La necesidad de un sistema de construcción automatizado + +Si tiene un sencillo programa «Hola mundo» escrito en C, puede compilarlo y enlazarlo usando &gcc; -o hola hola.c y ejecutarlo usando el comando ./hola, por lo que no necesitará un archivo Makefile. +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 Makefile, que es bastante fácil de escribir a mano (use info make para ver cómo hacerlo). +Los problemas empiezan cuando: + + Su código fuente, documentación, gráficos, sonidos, traducciones, archivos de datos, &etc;, se encuentran situados en más de una carpeta, + Tiene una jerarquía de carpetas y subcarpetas, + 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;, + Está usando un preprocesador para generar parte de su código fuente, como el precompilador MOC de Qt, + 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, + Necesita una utilidad de instalación y desinstalación automática, + Pretende que su aplicación sea parte del escritorio &kde;. + + +Si se encuentra en una o varias de las situaciones anteriores, probablemente necesite un sistema de construcción. 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). +Un sistema de construcción se encargará de allanar estas diferencias por usted. + + Comprobará que las bibliotecas que necesita estén presentes en cada máquina de destino, + recorrerá automáticamente todas las carpetas de su aplicación en busca de archivos para preprocesar, compilar o instalar, y + también instalará los componentes de su aplicación en las carpetas de destino correctas, asegurándose de que + las carpetas sean creadas en la máquina de destino cuando sea necesario. + + +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 Sistemas de gestión de proyectos, &kdevelop; 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): + + Proyectos automake que utilizan las herramientas de desarrollo estándar de &GNU;. + Proyectos QMake que utilizan el gestor de proyectos QMake de Trolltech. + Proyectos ANT que utilizan el gestor de proyectos ANT de Apache para desarrollos en &Java;. + Proyectos personalizados que necesitan que usted mantenga sus propios Makefiles. + + + +Debe seleccionar una de estas cuatro alternativas cuando cree un proyecto, pero esta elección es difícil de cambiar después, por lo que debería tenerlo en cuenta antes de comenzar. + + + + + +Manuales sobre Autoconf/Automake/Libtool +Existen varios manuales disponibles sobre el sistema de construcción de &GNU; (Autoconf, Automake y Libtool) que utiliza &automanag;. + + Un corto manual de autoconf escrito por Christopher W. Curtis se encuentra disponible en la página web de &kdevelop;. Se concentra en algunos pasos básicos para modificar un Makefile. + Un manual más detallado se puede encontrar en la extensa colección de manuales existente en «Desarrollo de software con GNU». + Y también existe el famoso «libro para novatos» 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;. + + + + + +¿Qué hace &automanag;? + +El &appwizard; habrá preparado algunos archivos Makefile.am iniciales tras crear un Nuevo proyecto que utilice el sistema de construcción de &GNU;, como C++ KDE Infraestructura de aplicación. Durante el desarrollo, &automanag; crea el resto de archivos Makefile.am 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;. +Solo habrá un Makefile.am 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 Makefile.am y, posiblemente, más archivos para compilar, construir e instalar. + +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. + +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: + +./configure +make +make install # normalmente como «root». + + +y que puedan ser desinstalados posteriormente mediante el uso del comando make uninstall (normalmente como «root»). + +¿Cómo funciona esto? Bien, configure es un guión que + 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 + crea archivos Makefile recursivos rellenando los campos a sustituir en los correspondientes archivos Makefile.in. + + +Los Makefile.in son archivos de «entrada» (plantillas que proporcionan información básica para los Makefiles que se deben obtener de ellos rellenando cierta información dependiente del sistema). Son generados por la utilidad automake a partir de los archivos Makefile.am. +El proceso de ir desde Makefile.am (.am indica que se trata de archivos de plantilla para «automake») hasta los archivos Makefile se gestiona automáticamente por el &promanag; de &kdevelop;, usando la utilidad autoconf, macros M4 y otros procesos arcanos que no necesitamos conocer aquí. +De modo que, cuando se ejecuta make, se recogen automáticamente las piezas necesarias del entorno actual, como compiladores y bibliotecas. Del mismo modo, make install sitúa los componentes de su aplicación (como ejecutables, documentación y archivos de datos) en los lugares correctos de ese entorno. + +Si distribuye su aplicación como un «tarball» (un único archivo comprimido que &kdevelop; puede crear por usted), se incluirán los archivos Makefile.in y el guión configure, de modo que el receptor pueda compilar, construir e instalar su aplicación sin necesidad de tener automake, autoconf ni &kdevelop; en su máquina. Los archivos Makefile.am también se incluyen, pero solo para el caso de que el receptor necesite realizar alguna modificación en el código fuente. +Las reglas son algo distintas si decide distribuir su código fuente mediante un repositorio basado en la web, como &cvs;. + + + + +Sumario de lo que hace el gestor Automake + + + Genera archivos Makefile.am en subcarpetas que se conocen como «subproyectos». + Actualiza los archivos Makefile.am cuando cambia la estructura del proyecto. + Actualiza los archivos Makefile.am cuando se añaden o eliminan archivos del proyecto. + Acepta definiciones sobre cómo se deben construir o instalar los diferentes archivos y modifica los archivos Makefile.am de acuerdo con esta información. + Acepta parámetros usados durante la construcción o instalación (⪚, nombres de bibliotecas), y se asegura de que sean usados durante los procesos de compilación y construcción. + + + + + +Contenido de los archivos de automake + +Un archivo Makefile.am 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 bin_PROGRAMS, myapp_SOURCES o kdelnk_DATA. La segunda parte es la principal, y representa algo de donde se debe construir o instalar. La primera parte se conoce como prefijo y representa: + + Una carpeta donde realizar la instalación (⪚, bin), + Un calificador primario (⪚, myapp, para SOURCES, que indica que los archivos de código fuente listados a continuación de myapp_SOURCES sirven para construir myapp), + Un prefijo especial noinst (de «no instalar»), que se usa normalmente para listar los archivos de cabecera del programa (.h), + O el prefijo especial EXTRA, para cosas dependientes de la configuración. + + +Para más información sobre Automake y los archivos Makefile.am, consulte info Automake. +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 Makefile.am de una aplicación típica, llamada myapp. + +## 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_KDEPRINT) + +# 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 + + +Como puede ver, muchos de los elementos de la parte de la derecha son símbolos con el formato $(xxx). Se trata de variables de entorno que están definidas en el entorno real de &kde; y que se sustituyen por sus valores reales cuando ./configure genera los archivos Makefile finales en la máquina de destino. + +Además, tras trabajar durante algún tiempo con &kdevelop;, es una buena idea ejecutar el comando ./configure --help, 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: +./configure --prefix=/donde/usted/quiera + hará que toda la instalación se realice en una estructura de carpetas de su elección, cambiando para ello la variable interna $(prefix) al valor /donde/usted/quiera. + + + + + + + + +Operación del gestor de Automake + +En este capítulo encontrará una descripción básica sobre los elementos de &automanag; y sobre cómo usarlos. Esto cubre: + La ventana de &automanag; describe la estructura básica de la ventana principal de &automanag;. + La ventana de vista general describe los elementos de la ventana de la parte superior. + La ventana de vista detallada describe los elementos de la ventana de la parte inferior. + Navegación a través de &automanag; lista algunas operaciones básicas que puede realizar en el &automanag;. + Menús desplegables del &automanag; describe las ventanas que aparecerán cuando seleccione una acción en el &automanag;. + + + + +La ventana de &automanag; + + + + + + + + + + &automanag; se ejecuta en una ventana dividida en dos partes: la parte superior se llama vista general, y la inferior vista detallada. 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. + En la parte superior de cada vista existe una barra de herramientas, 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. + 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 cerrar la ventana. El botón del punto, por el contrario, mantendrá la ventana abierta incluso si se selecciona otra ventana de &kdevelop; (de otro modo, la ventana de &automanag; se cerrará automáticamente cuando otra ventana pase al primer plano). + + + + + + + +La ventana de vista general + +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 Makefile.am y se conoce en &automanag; como un subproyecto. Típicamente existen tres subproyectos en un proyecto de &kde;, como se muestra en la ilustración: + + + src – los archivos de código fuente de su aplicación, + doc – su manual de usuario, + po – las cadenas de texto de su código fuente que necesitan traducción a otros idiomas (⪚, títulos de ventanas, opciones de menú, etiquetas de botones, textos de diálogos y mensajes de varios tipos). + + +Observe que el subproyecto doc siempre contiene un subproyecto en, que podrá ver si pulsa sobre el símbolo + que hay junto a la palabra doc. 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 es (para el español) o fr (para el francés). Las cadenas de texto del subproyecto po permiten que su aplicación pueda ser manejada por personas que no conozcan el idioma inglés. + +Los subproyectos doc y po sirven para diferentes propósitos: doc contiene documentación (como el manual del usuario), mientras que po contiene cadenas de texto para traducir procedentes de la interfaz de usuario, que está integrada en el código fuente de la aplicación. + +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. + + + + +La ventana de vista detallada + +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. + + +Objetivos + +La lista de árbol de la ventana detallada posee dos niveles. El nivel superior contiene lo que se denomina objetivos de &automanag;, y el siguiente nivel contiene listas de archivos que definen cada objetivo. + +Este concepto de un objetivo en &automanag; difiere algo de lo que se entiende por un objetivo en un Makefile. En breve: + + La definición sobre cómo un conjunto de archivos se debe compilar, construir o instalar se conoce como objetivo en &automanag;, aunque en automake se denomina variable. + Un objetivo de make es normalmente algo bastante distinto, como por ejemplo el parámetro de un comando make (por ejemplo, make install o make clean). + No obstante, algunas variables de Makefile.am representan a un subobjetivo subyacente en make. + + + + + + +Navegación en &automanag; + +Tanto en la ventana de vista general como en la detallada, puede pulsar sobre los símbolos + o - 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 subproyecto en la ventana de vista general, se mostrarán u ocultarán los subproyectos del siguiente nivel (si existen). Si lo hace sobre un objetivo en la vista detallada, se mostrará u ocultará la lista de archivos de dicho objetivo. + + + +Abrir un archivo para editarlo + +Si pulsa con el botón izquierdo del ratón sobre el nombre de un archivo en la vista detallada, se abrirá su correspondiente archivo en la ventana de edición de &kdevelop;. + + + + +Activación de los botones de la barra de herramientas de &automanag; + +Si pulsa con el botón izquierdo del ratón 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. + + + Se le recomienda que utilice el botón derecho del ratón y los menús de contexto 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. + 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. + + + + + +Selección de acciones/menús desplegables + +Si pulsa con el botón derecho del ratón 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. + + + + + + + +Menús desplegables de &automanag; + +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. + + + +El menú desplegable para un archivo + +Cuando pulse con el botón derecho del ratón sobre un nombre de archivo 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 hi-16app-myapp.png ha sido seleccionado en el objetivo Datos de icono de myapp perteneciente al subproyecto myapp/src. + + + + + + + + + + El principal elemento del menú desplegable para este archivo es Eliminar el archivo de su objetivo (es decir, que no vuelva a utilizarse para compilar, construir o instalar su objetivo). + El elemento CVS ofrece varias operaciones CVS sobre el archivo. + El elemento Abrir con 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 KIcon). + El elemento Perforce se utiliza para operaciones similares a las de CVS, pero utilizando en su lugar el sistema de control de versiones comercial «Perforce». + + + + + + + +El menú desplegable para un objetivo + +Cuando pulse con el botón derecho sobre un objetivo 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 myapp (Programa en bin) del subproyecto myapp/src. + + + + + + + + + + El elemento Opciones 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. + El elemento Crear nuevo archivo 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). + El elemento Añadir archivos existentes muestra un diálogo mediante el que puede añadir un archivo existente a este objetivo. + El elemento Eliminar de un objetivo le permite eliminar de manera virtual dicho objetivo y todos sus archivos de la estructura del proyecto. + El elemento Convertir en objetivo activo 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. + El elemento Construir objetivo se encarga de llamar a todas las operaciones de compilación necesarias para construir el código del objetivo seleccionado. + + + + + + + +El menú desplegable para un subproyecto + +Cuando pulsa con el &RMB; sobre un subproyecto 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 un subproyecto, el elemento Opciones 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». + El elemento Añadir subproyecto crea una nueva carpeta y el archivo de esqueleto Makefile.am. + El elemento Añadir objetivo 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. + Añadir servicio (pendiente de escribir...) + Añadir aplicación (pendiente de escribir...) + Añadir subproyectos existentes (pendiente de escribir...) + El elemento Eliminar subproyecto del menú desplegable de un subproyecto es el modo adecuado para eliminar dicho subproyecto, ya que ajustará los archivos Makefile.am 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. + El elemento Construir llama a las operaciones necesarias de compilación para construir el código del subproyecto seleccionado. + Forzar reedición (pendiente de escribir...) + Limpiar (pendiente de escribir...) + Instalar (pendiente de escribir...) + Instalar (como usuario «root») (pendiente de escribir...) + + + + + + + + + + + + + +Proyectos automake +autoproyecto +&automake; +&autoconf; +&libtool; + +(... pendiente de escribir ...) + + + +Autoconf +El guión configure +El guión config.status +Makefile.in +config.h.in + +Makefile.in en Makefile + +prefix = @prefix@ +INSTALL = @INSTALL@ +build_triplet = @build@ +CXX = @CXX@ + + +prefix = /home/bernd/kde3 +INSTALL = /usr/bin/ginstall -c -p +build_triplet = i686-pc-linux-gnu +CXX = g++ + + +config.h.in en config.h + +/* Definir si tiene instalado libz */ +#undef HAVE_LIBZ +/* El tamaño de un número entero, calculado por sizeof */ +#undef SIZEOF_INT + + +/* Definir si tiene instalado libz */ +#define HAVE_LIBZ 1 +/* El tamaño de un número entero, calculado por sizeof */ +#define SIZEOF_INT 4 + + + + + + +Automake + +(... pendiente de escribir ...) + + + + + +&automanag; de &kdevelop; + +
+Una captura de pantalla del gestor de automake + + + +
+ +
+ + + +Construir e instalar bibliotecas + + + +-rpath +PIC +static +plugins: no-undefined + + + + + +
+ + + + +Makefiles personalizados y guiones de construcción +Makefile +build.xml + +(... pendiente de escribir ...) + + + + + + +Opciones del compilador + +(... pendiente de escribir ...) + + + + + + +Opciones de make + +(... pendiente de escribir ...) + + + +
diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/select-user-interface-0.png b/tde-i18n-es/docs/kdevelop/kdevelop/select-user-interface-0.png new file mode 100644 index 00000000000..10f46cb2034 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/select-user-interface-0.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/select-user-interface.png b/tde-i18n-es/docs/kdevelop/kdevelop/select-user-interface.png new file mode 100644 index 00000000000..1693e404865 Binary files /dev/null and b/tde-i18n-es/docs/kdevelop/kdevelop/select-user-interface.png differ diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/survey-manual.docbook b/tde-i18n-es/docs/kdevelop/kdevelop/survey-manual.docbook new file mode 100644 index 00000000000..67944f796b3 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/survey-manual.docbook @@ -0,0 +1,329 @@ + +Qué contiene este manual + +Este manual de usuario trata de describir el contenido y el uso del entorno de desarrollo integrado (IDE) de &kdevelop; &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. +Aquí encontrará información sobre los siguientes temas: + + +Primeros pasos con &kdevelop; — Un paseo guiado + +Le proporciona un rápido comienzo en el uso de este &IDE;, introduciendo los pasos básicos sobre cómo trabajar con un proyecto. + + + +Un vistazo a las características de &kdevelop; + +Extiende la visita guiada del primer capítulo dando una visión general de lo que se proporciona con &kdevelop; y le familiariza con el aspecto y el uso de este &IDE;. + + + + +Configuración de &kdevelop; + +Le enseña cómo adaptar el &IDE; a sus necesidades. + + + + +Primeros pasos: el &appwizard; + +Describe los principios básicos sobre cómo iniciar un nuevo proyecto en &kdevelop; usando el &appwizard; incluido. + + + + +Herramientas de edición + +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. + + + + +Los navegadores de archivos + +Muestra varias herramientas para observar la estructura de su proyecto y cómo acceder a los archivos con los que desee trabajar. + + + + +Los navegadores de clases + +Describe una de las herramientas más poderosas de &kdevelop;, 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. + + + + +Documentación + +Muestra cómo acceder a la abundante documentación incluida con &kdevelop;, 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». + + + + +Compilación y gestión de proyectos + +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. + + + + +Gestión de compilación avanzada + +Contempla el modo de mantener múltiples configuraciones de compilación, compilar para distintas plataformas, o crear un sistema empotrado usando la biblioteca Qt/embedded. + + + + +La interfaz de depuración + +Describe cómo usar la interfaz del depurador integrado gdb de modo que pueda identificar los errores de su programa sin salir de &kdevelop;. + + + + + + +Uso de CVS + +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. + + + + + +En el apéndice se ha incluido alguna información usada comúnmente. Entre otra: + + + +Instalación de &kdevelop; + +Le muestra dónde obtener &kdevelop;, cómo instalarlo y cómo ponerlo en marcha. + + + + + + +Principios básicos — Consejos y trucos + +Una rápida referencia a algunos comandos y acciones comunes. Y una corta guía para resolver problemas comunes cuando se trabaja con &kdevelop;. + + + + +Desarrollo en &UNIX; + +Una visión histórica sobre el desarrollo de programas en &UNIX;, las principales herramientas necesarias y sobre por qué necesita un &IDE;. + + + + + + +Archivos de configuración usados por &kdevelop; +Lista los archivos que &kdevelop; usa para guardar su información interna. Le puede resultar particularmente útil en caso de que algo vaya mal durante la instalación. + + + + +Herramientas de extensiones +Lista las herramientas que puede conectar para adaptar las capacidades de &kdevelop; a sus propias necesidades. + + + +Ejemplos del modo de interfaz de usuario de KDevelop +Muestra los modos de interfaz de usuario. + + +Más información Obtención de información, informes de errores, etc. + + +Registro de cambios +Muestra el histórico de esta documentación. + + +Bibliografía +Bibliografía + + + + + + diff --git a/tde-i18n-es/docs/kdevelop/kdevelop/unixdev.docbook b/tde-i18n-es/docs/kdevelop/kdevelop/unixdev.docbook new file mode 100644 index 00000000000..50d4c7b7bfa --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/kdevelop/unixdev.docbook @@ -0,0 +1,643 @@ + + + + + BerndPol + + + + +Desarrollo en &UNIX; + +desarrollo + + &UNIX; + desarrollo + + +Algunas puntualizaciones históricas + +historia +lenguajes de guiones + + &UNIX; + historia + + &UNIX; + tubería + + &UNIX; + shell + + shell + &UNIX; + +Desde el principio, &UNIX; ha mantenido dos modelos de desarrollo muy distintos. Uno es el mundo de los lenguajes de programación de sistemas y aplicaciones, donde parte del código fuente se convierte en código máquina por un programa traductor, normalmente un compilador o un intérprete. 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). +El otro modelo de desarrollo es el mundo de los lenguajes de guión (o scripts). 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 grep, sed o find. 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 tubería, 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. +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). + + + + + +Lenguajes de guiones contemporáneos +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. +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. + + +&perl; + +Perl + + lenguajes de guiones + Perl + +&perl; 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 mod_perl 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 obtener más información consulte la página web Comprehensive Perl Archive Network (CPAN). + + + +Python + +Python + + lenguajes de guiones + Python + +&python; 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++. + + + +PHP + +PHP + + lenguajes de guiones + PHP + +&php; 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. + + + + + +Lenguajes de guiones de más alto nivel + +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;. +Han existido intentos de proporcionar mecanismos similares que funcionaran a un nivel de aplicación más alto, principalmente CORBA y, en el entorno &kde;, &DCOP;. + + +El protocolo CORBA + +CORBA + + lenguajes de guiones + CORBA + + comunicación + CORBA + +CORBA (Common Object Request Broker Architecture) 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 OMG (Object Management Group). +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. +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. + + + + +La interfaz &DCOP; + +DCOP + + lenguajes de guiones + DCOP + + comunicación + DCOP + +Otra evolución de lenguajes de guión parecidos a &UNIX; es el protocolo DCOP, que fue ideado para que la comunicación entre aplicaciones de &kde; no adoleciera de las limitaciones de CORBA. +&DCOP; significa protocolo de comunicación del escritorio, 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;. +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. +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 obtener más información, consulte el artículo DCOP: Desktop COmmunications Protocol, o The &DCOP; Desktop Communication Protocol library, la referencia del &API; de la biblioteca dcop de &kde;. + + + + + + + +Sistemas de construcción + +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 conseguir esto, las herramientas básicas que se necesitan son + un editor de texto para escribir los archivos de código fuente, + un programa de traducción, normalmente un compilador para convertir el código fuente en archivos de código objeto, + un bibliotecario que recopila archivos de código objeto en bibliotecas para reutilizarlos fácilmente sin necesidad de volver a compilarlos, + un enlazador, que enlaza varios archivos de código objeto y bibliotecas en un único ejecutable, + un sistema «make», que proporciona varios medios para gestionar todas estas cosas, y tampoco hay que olvidar + un depurador 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. + + + +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. +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. + + +El proceso «make» + + + make + + Makefile + + regla + + recompilaciones + + objetivo + + dependencias + + comandos + +Una herramienta que se encarga de las recompilaciones es make. Sigue la pista de todo el trabajo utilizando un conjunto de reglas 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 Makefile, que es procesado por make cada vez que necesite actualizar su trabajo. +Cada regla consiste en varios bloques de construcción, como + un objetivo, &ie;, el archivo a construir + un juego de dependencias, básicamente los nombres de todos los archivos de los que depende el objetivo (⪚, el nombre de un archivo de código fuente, del que el objetivo será el nombre del archivo objeto a construir), y + los comandos que deben ejecutarse para completar el make del objetivo (&ie;, para compilarlo o para enlazar otros archivos de código objeto para generar el archivo ejecutable del programa). + + +En esencia, el comando make 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. +Existen varias posibilidades adicionales para controlar este proceso, por lo que un Makefile 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 make. Incluso si no suele usarlo directamente, la comprensión de los principios del sistema de construcción puede resultar bastante útil. Consulte el Manual GNU de make para obtener más información. +Para detalles de &kdevelop; más específicos, consulte el capítulo Construcción y gestión de proyectos de este manual. +Existen varios manuales disponibles; consulte las referenciass en el capítulo sobre construcción y gestión de proyectos. + + + + + + + +Desarrollo &GUI; + + + GUI + + interfaz gráfica de usuario + + interfaz de usuario + GUI + +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. +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á. +Existe una guía de estilo para el desarrollo de interfaces de &kde; que puede encontrar en Recomendaciones para interfaces de usuario de &kde; en la página web del desarrollador de &kde;. +Puede encontrar una breve introducción a los principios de diseño de &GUI; aquí. + + + + + + +Integración de conceptos y herramientas – el IDE + + + IDE + + entorno de desarrollo integrado + + desarrollo + IDE + + entorno + IDE + +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. +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. +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? +Los Entornos de Desarrollo Integrados (&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. +&kdevelop; 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. + + +Características básicas de &kdevelop; &kdevrelease; + + + &kdevelop; + características + + características + + + + + + Gestiona todas las herramientas de desarrollo necesarias para programar en C++, como un compilador, un enlazador, un depurador y un sistema de construcción. + + + Proporciona un &appwizard; que genera aplicaciones de ejemplo completamente funcionales. + + + Permite al usuario seleccionar un editor integrado basado en el editor para programadores &kwrite; de &kde;, el QEditor de Trolltech, u otros. + + + Un generador de clases para crear nuevas clases e integrarlas en el proyecto actual. + + + Gestión de archivos para el código fuente, cabeceras, documentación, &etc;, a incluir en el proyecto. + + + Asistencia para crear manuales de usuario para la aplicación escritos con las herramientas de &kde;. + + + Documentación para la &API;, basada en &HTML; y generada automáticamente para las clases del proyecto, con referencias cruzadas a las bibliotecas usadas. + + + Soporte para internacionalización, que permite a los traductores añadir fácilmente su propio idioma a un proyecto, incluyendo soporte para &kbabel;. + + + Soporte para manejar un proyecto mediante uno de varios sistemas de versiones (⪚, &CVS;), proporcionando una interfaz fácil de usar para las funciones más necesarias. + + + Una interfaz integrada de depuración. + + + Un emulador integrado de la consola. + + + Resalte de sintaxis en los textos de código fuente. + + + Una utilidad de terminación automática de código para las variables y métodos de las clases, argumentos de funciones, y demás. + + + Plantillas para la creación de distintos proyectos (módulos para &kcontrol;, añadidos para &kicker; (panel), KIOSlaves, extensiones para &konqueror; y estilos de escritorio, entre otros). + + + Cuatro vistas de navegación en árbol 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. + + + Soporte para compilación cruzada, con la posibilidad de especificar distintos compiladores, banderas de compilación, arquitecturas de destino, &etc; + + + Soporte para proyectos Qt/Embedded (como los de Zaurus e iPAQ). + + + Inclusión de otros programas que necesite para desarrollar, añadiéndolos al menú Herramientas, según sus necesidades personales. + + + + + + + + + diff --git a/tde-i18n-es/docs/kdevelop/tip.database b/tde-i18n-es/docs/kdevelop/tip.database new file mode 100644 index 00000000000..87ca1ad3e53 --- /dev/null +++ b/tde-i18n-es/docs/kdevelop/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 . \ No newline at end of file -- cgit v1.2.1